rimworld-ccl-reborn / jecstools Goto Github PK
View Code? Open in Web Editor NEWAdds modding components to RimWorld: vehicles, spell casting, weapon slots, oversized weapons, and more!
License: MIT License
Adds modding components to RimWorld: vehicles, spell casting, weapon slots, oversized weapons, and more!
License: MIT License
Found an issue with vehicles. They have unlimited fuel when in a caravan (world view). The code to look at is here in CompVehicle.cs
//If it isn't moving than it shouldn't use fuel
if ((this.Pawn.pather != null && !this.Pawn.pather.Moving) || (this.Pawn.GetCaravan() != null && (this.Pawn.GetCaravan().CantMove)))
compRefuelable.Props.fuelConsumptionRate = 0f;
else
//If it's moving than it should use fuel
compRefuelable.Props.fuelConsumptionRate = this.fuelConsumptionRate;
Change to something like this to fix:
if ((this.Pawn.pather != null && this.Pawn.pather.Moving))
compRefuelable.Props.fuelConsumptionRate = this.fuelConsumptionRate;
else if((this.Pawn.GetCaravan() != null && !this.Pawn.GetCaravan().Resting) && (this.Pawn.GetCaravan() != null && !this.Pawn.GetCaravan().CantMove))
compRefuelable.Props.fuelConsumptionRate = this.fuelConsumptionRate;
else //If it isn't moving than it shouldn't use fuel
compRefuelable.Props.fuelConsumptionRate = 0f;
When drafting a vehicle it will not move as ordered, generates no error. Hauling is working properly.
JecsTools 1.0.9.3
Rimworld 0.18.1722
When trying to carvan with a vehicle and attack another area, I get the following debug:
Unexpected culture: . Resetting to en-US.
Verse.Log:Warning(String)
Verse.Root:CheckGlobalInit()
Verse.Root:Start()
Verse.Root_Entry:Start()
Command line arguments: -logfile /tmp/rimworld_log
Verse.Log:Message(String)
Verse.Root:CheckGlobalInit()
Verse.Root:Start()
Verse.Root_Entry:Start()
RimWorld 0.18.1722 rev1210
Verse.Log:Message(String)
RimWorld.VersionControl:LogVersionNumber()
Verse.Root:CheckGlobalInit()
Verse.Root:Start()
Verse.Root_Entry:Start()
Config error in Truck: surgery bed requirement mismatch; flesh-type Mechanoid is False, recipe Vehicle_RepairsTruck is True
Verse.Log:Warning(String)
Verse.DefDatabase`1:ErrorCheckAllDefs()
System.Reflection.MonoMethod:InternalInvoke(Object, Object[], Exception&)
System.Reflection.MonoMethod:Invoke(Object, BindingFlags, Binder, Object[], CultureInfo)
System.Reflection.MethodBase:Invoke(Object, Object[])
Verse.GenGeneric:InvokeStaticMethodOnGenericType(Type, Type, String)
Verse.PlayDataLoader:DoPlayLoad()
Verse.PlayDataLoader:LoadAllPlayData(Boolean)
Verse.Root:m__1()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:m__1()
Loading game from file Debug Map with mods Core, JecsTools-master, and Transports
Verse.Log:Message(String)
Verse.SavedGameLoader:LoadGameFromSaveFile(String)
Verse.Root_Play:m__0()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:m__1()
Tried to add Truck60857 to ThingOwner but this thing is already in another container. owner=Caravan Caravan 1 (tile=89004), current container owner=(Map-0-PlayerHome). Use TryAddOrTransfer, TryTransferToContainer, or remove the item before adding it.
Verse.Log:Warning(String)
Verse.ThingOwner1:TryAdd(Thing, Boolean) CompVehicle.HarmonyCompVehicle:AddVehiclePawnsToCaravan(Caravan, Pawn, Boolean) RimWorld.Planet.Caravan:AddPawn_Patch1(Object, Pawn, Boolean) RimWorld.Planet.CaravanMaker:MakeCaravan(IEnumerable
1, Faction, Int32, Boolean)
RimWorld.Planet.CaravanExitMapUtility:ExitMapAndCreateCaravan(IEnumerable1, Faction, Int32) RimWorld.Planet.CaravanExitMapUtility:ExitMapAndCreateCaravan(IEnumerable
1, Faction, Int32, Int32)
RimWorld.Planet.CaravanFormingUtility:FormAndCreateCaravan(IEnumerable1, Faction, Int32, Int32) RimWorld.LordJob_FormAndSendCaravan:SendCaravan() Verse.AI.Group.TransitionAction_Custom:DoAction(Transition) Verse.AI.Group.Transition:Execute(Lord) Verse.AI.Group.Transition:CheckSignal(Lord, TriggerSignal) Verse.AI.Group.Lord:CheckTransitionOnSignal(TriggerSignal) Verse.AI.Group.Lord:ReceiveMemo(String) RimWorld.GatherAnimalsAndSlavesForCaravanUtility:CheckArrived(Lord, IntVec3, String, Predicate
1, Predicate`1)
RimWorld.LordToil_PrepareCaravan_Leave:LordToilTick()
Verse.AI.Group.Lord:LordTick()
Verse.AI.Group.LordManager:LordManagerTick()
Verse.Map:MapPostTick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()
Couldn't add pawn Truck60857 to caravan.
Verse.Log:Error(String)
CompVehicle.HarmonyCompVehicle:AddVehiclePawnsToCaravan(Caravan, Pawn, Boolean)
RimWorld.Planet.Caravan:AddPawn_Patch1(Object, Pawn, Boolean)
RimWorld.Planet.CaravanMaker:MakeCaravan(IEnumerable1, Faction, Int32, Boolean) RimWorld.Planet.CaravanExitMapUtility:ExitMapAndCreateCaravan(IEnumerable
1, Faction, Int32)
RimWorld.Planet.CaravanExitMapUtility:ExitMapAndCreateCaravan(IEnumerable1, Faction, Int32, Int32) RimWorld.Planet.CaravanFormingUtility:FormAndCreateCaravan(IEnumerable
1, Faction, Int32, Int32)
RimWorld.LordJob_FormAndSendCaravan:SendCaravan()
Verse.AI.Group.TransitionAction_Custom:DoAction(Transition)
Verse.AI.Group.Transition:Execute(Lord)
Verse.AI.Group.Transition:CheckSignal(Lord, TriggerSignal)
Verse.AI.Group.Lord:CheckTransitionOnSignal(TriggerSignal)
Verse.AI.Group.Lord:ReceiveMemo(String)
RimWorld.GatherAnimalsAndSlavesForCaravanUtility:CheckArrived(Lord, IntVec3, String, Predicate1, Predicate
1)
RimWorld.LordToil_PrepareCaravan_Leave:LordToilTick()
Verse.AI.Group.Lord:LordTick()
Verse.AI.Group.LordManager:LordManagerTick()
Verse.Map:MapPostTick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()
System.NullReferenceException: Object reference not set to an instance of an object
at CompVehicle.CompVehicle.GeneratePawn (System.Collections.Generic.List`1<RimWorld.PawnGenOption>) <0x00251>
at CompVehicle.CompVehicle.ResolveFactionPilots () <0x001d7>
at CompVehicle.CompVehicle.CompTick () <0x00037>
at Verse.ThingWithComps.Tick () <0x00060>
at (wrapper dynamic-method) Verse.Pawn.Tick_Patch1 (object) <0x00084>
at RimWorld.Planet.WorldPawns.WorldPawnsTick () <0x000a6>
at RimWorld.Planet.World.WorldTick () <0x00021>
at Verse.TickManager.DoSingleTick () <0x00310>
Verse.Log:Error(String)
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()
JecsTools :: CaravanJobTracker :: JobTracker Created
Verse.Log:Message(String)
JecsTools.Caravan_JobTracker:.ctor(Caravan)
JecsTools.CaravanJobGiver:NullHandler(Caravan)
JecsTools.CaravanJobGiver:CurJob(Caravan)
JecsTools.HarmonyCaravanPatches:GetGizmos_Jobs(Caravan, IEnumerable1&) RimWorld.Planet.Caravan:GetGizmos_Patch1(Object) RimWorld.InspectGizmoGrid:DrawInspectGizmoGridFor(IEnumerable
1)
RimWorld.Planet.WorldInspectPane:DrawInspectGizmos()
RimWorld.InspectPaneUtility:ExtraOnGUI(IInspectPane)
RimWorld.Planet.WorldInspectPane:ExtraOnGUI()
Verse.WindowStack:WindowStackOnGUI()
RimWorld.UIRoot_Play:UIRootOnGUI()
Verse.Root:OnGUI()
Exception from long event: System.ArgumentOutOfRangeException: Argument is out of range.
Parameter name: index
at System.Collections.Generic.List`1[Verse.Pawn].get_Item (Int32 index) [0x00000] in :0
at RimWorld.Planet.CaravanArrivalAction_AttackSettlement.DoArrivalAction (RimWorld.Planet.Caravan caravan) [0x00000] in :0
at RimWorld.Planet.CaravanArrivalAction_AttackSettlement+c__AnonStorey0.<>m__0 () [0x00000] in :0
at Verse.LongEventHandler.UpdateCurrentSynchronousEvent (System.Boolean& sceneChanged) [0x00000] in :0
Verse.Log:Error(String)
Verse.LongEventHandler:UpdateCurrentSynchronousEvent(Boolean&)
Verse.LongEventHandler:LongEventsUpdate(Boolean&)
Verse.Root:Update()
Verse.Root_Play:Update()
I'm having some issues with Vehciles. They are working 90% but I am having issues with the thinktrees?
When you draft the pawn, you cannot undraft it and the options to load or unload the Vehicle dissapear. This is in 1.0.0 any pointers would be really appreciated
Here is a copy of my source code. Try the Truck, Hagglian or Tank by direct placing Tank Parts, Truck Parts, etc and assembling them with a pawn.
https://www.dropbox.com/s/7v8hbz67gzze695/shipsvehicles.zip?dl=0
JobDriver threw exception in initAction for pawn Hagglund3333 driver=JobDriver_Wait (toilIndex=0) driver.job=(Wait (Job_682868)) lastJobGiver=null
System.NullReferenceException: Object reference not set to an instance of an object
at Verse.AI.JobDriver_Wait.CheckForAutoAttack () [0x00099] in C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\Basics\JobDriver_Wait.cs:95
at Verse.AI.JobDriver_Wait+<MakeNewToils>c__Iterator0.<>m__0 () [0x00057] in C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\Basics\JobDriver_Wait.cs:48
at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x00214] in C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:455
Verse.Log:Error(String, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\Utility\Debug\Log\Log.cs:78)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobUtility.cs:22)
Verse.AI.JobDriver:TryActuallyStartNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:459)
Verse.AI.JobDriver:ReadyForNextToil() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobDrivers\JobDriver.cs:363)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver) (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\JobUtility.cs:39)
Verse.AI.Pawn_JobTracker:FinalizeTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:175)
Verse.AI.Pawn_JobTracker:JobTrackerTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\AI\Pawn_JobTracker.cs:146)
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickList.cs:125)
Verse.TickManager:DoSingleTick() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:297)
Verse.TickManager:TickManagerUpdate() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Ticking\TickManager.cs:261)
Verse.Game:UpdatePlay() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Game\Game.cs:505)
Verse.Root_Play:Update() (at C:\Dev\RimWorld\Assets\Scripts\Verse\Global\Root\Root_Play.cs:99)
An error occurred while starting an error recover job. We have to stop now to avoid infinite loops. This means that the pawn is now jobless which can cause further bugs. pawn=Hagglund3333
Verse.Log:Error(String, Boolean) (at C:\Dev\RimWorld\Assets\Scripts\Verse\Utility\Debug\Log\Log.cs:78)
In JecsTools\1.4\Assemblies\AbilityUser.dll, there is a class :
// AbilityUser, Version=1.4.1.0, Culture=neutral, PublicKeyToken=null
// AbilityUser.StringsToTranslate
public static class StringsToTranslate
{
public static readonly string AU_AoEProperties = "Area of Effect Properties";
public static readonly string AU_TargetClass = "Targets: ";
public static readonly string AU_AoECharacters = "Characters";
public static readonly string AU_AoEFriendlyFire = "Friendly Fire: ";
public static readonly string AU_AoEMaxTargets = "Max Targets: ";
public static readonly string AU_AoEStartsFromCaster = "Starts from caster: ";
public static readonly string AU_Cooldown = "Cooldown: ";
public static readonly string AU_Type = "Type: ";
public static readonly string AU_TargetAoE = "Area of Effect";
public static readonly string AU_TargetSelf = "Targets Self";
public static readonly string AU_TargetThing = "Targets Other";
public static readonly string AU_TargetLocation = "Targets Location";
public static readonly string AU_Extra = "Extra";
public static readonly string AU_MentalStateChance = "Mental State Chance";
public static readonly string AU_EffectChance = "Effect Chance";
public static readonly string AU_BurstShotCount = "Burst Count:";
public static readonly string AU_CastSuccess = "Cast Success";
public static readonly string AU_CastFailure = "Cast Failed";
public static readonly string AU_DISABLED = "DISABLED";
}
There is no language interface in it , and language packs cannot be replaced through interfaces.
Excuse me. i was translated Star War'mods into Chinese. it was almost done, but not perfect.
Some words was not display Chineseword.
How to solve it?I want to finish it more fully.
2.Keyed\SWSaber_English.xml and Keyed\CompSlotLoadable_Strings.xml under Fully Functional Lightsabers\Languages just like upstair
The PawnShield class has a harmony attribute which will automatically instantiate it. As being a library, this mod should not actually affect the game. PawnShield class conflict with CombatExtended mod, install both 2 mods will make a pawn to block a damage twice( once for CE, once for PawnShield ).
I have managed to get a vehicle pawn into the game and the character can enter the vehicle but it is still not derivable, any pointers or an example def would be a wonderful help, again Jec, thanks for the great mod and support here are my Pawndefs:
base:
<ThingDef Name="Vehicle" Abstract="True">
<thingClass>Pawn</thingClass>
<category>Pawn</category>
<selectable>true</selectable>
<tickerType>Normal</tickerType>
<altitudeLayer>Pawn</altitudeLayer>
<useHitPoints>false</useHitPoints>
<hasTooltip>true</hasTooltip>
<soundImpactDefault>BulletImpactMetal</soundImpactDefault>
<statBases>
<Mass>70</Mass>
<PsychicSensitivity>0</PsychicSensitivity>
<ToxicSensitivity>0</ToxicSensitivity>
<Flammability>0</Flammability>
<ComfyTemperatureMin>-100</ComfyTemperatureMin>
<ComfyTemperatureMax>250</ComfyTemperatureMax>
</statBases>
<race>
<thinkTreeMain>CompVehicle_Simple</thinkTreeMain>
<thinkTreeConstant>CompVehicle_SimpleConstant</thinkTreeConstant>
<nameGenerator>NamerAnimalGenericMale</nameGenerator>
<nameGeneratorFemale>NamerAnimalGenericFemale</nameGeneratorFemale>
<manhunterOnDamageChance>0.0125</manhunterOnDamageChance>
<manhunterOnTameFailChance>0.003</manhunterOnTameFailChance>
<nameOnNuzzleChance>0.5</nameOnNuzzleChance>
<fleshType>Mechanoid</fleshType>
<needsRest>false</needsRest>
<hasGenders>false</hasGenders>
<foodType>None</foodType>
</race>
<inspectorTabs>
<li>ITab_Pawn_Health</li>
<li>ITab_Pawn_Needs</li>
<li>ITab_Pawn_Character</li>
<li>ITab_Pawn_Gear</li>
</inspectorTabs>
<comps>
<li>
<compClass>CompAttachBase</compClass>
</li>
</comps>
<drawGUIOverlay>true</drawGUIOverlay>
</ThingDef>
Pawn:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<ThingDef ParentName="Vehicle">
<defName>Drone</defName>
<label>Pickup Truck</label>
<description>A Pickup Truck. Used to transport goods and personnel around the planet.</description>
<statBases>
<Flammability>0.2</Flammability>
<MoveSpeed>7.5</MoveSpeed>
<CarryingCapacity>500</CarryingCapacity>
<ArmorRating_Blunt>0.1</ArmorRating_Blunt>
<ArmorRating_Sharp>0.1</ArmorRating_Sharp>
<MeatAmount>0</MeatAmount>
</statBases>
<race>
<intelligence>ToolUser</intelligence>
<thinkTreeMain>CompVehicle_Simple</thinkTreeMain>
<thinkTreeConstant>CompVehicle_SimpleConstant</thinkTreeConstant>
<body>Truck_Body</body>
<baseBodySize>1.0</baseBodySize>
<baseHealthScale>10</baseHealthScale>
<lifeStageAges>
<li>
<def>MechanoidFullyFormed</def>
<minAge>0</minAge>
<soundWounded>BulletImpactMetal</soundWounded>
<soundDeath>Explosion_Bomb</soundDeath>
<soundCall>Vehicle_Idle</soundCall>
</li>
</lifeStageAges>
<soundCallIntervalRange>
<min>50</min>
<max>50</max>
</soundCallIntervalRange>
<soundMeleeHitPawn>Pawn_Melee_MechanoidSlash_HitPawn</soundMeleeHitPawn>
<soundMeleeHitBuilding>Pawn_Melee_MechanoidSlash_HitBuilding</soundMeleeHitBuilding>
<soundMeleeMiss>Pawn_Melee_MechanoidSlash_Miss</soundMeleeMiss>
</race>
<recipes>
</recipes>
<!--
<butcherProducts>
<Steel>200</Steel>
<Chemfuel>600</Chemfuel>
<Component>8</Component>
</butcherProducts>
-->
<comps>
<li Class="CompProperties_Flickable"/>
<li Class="CompProperties_Breakdownable"/>
<li Class="CompProperties_Refuelable">
<fuelConsumptionRate>2.0</fuelConsumptionRate>
<fuelCapacity>300.0</fuelCapacity>
<fuelFilter>
<thingDefs>
<li>Chemfuel</li>
</thingDefs>
</fuelFilter>
<consumeFuelOnlyWhenUsed>true</consumeFuelOnlyWhenUsed>
</li>
<li Class="CompVehicle.CompProperties_Vehicle">
<!--
Vehicle Type determines how movements are calculated.
Vehicle Types :
Aircraft, AircraftAmphibious, AircraftSpace
Amphibious, LandWheeled, LandHover, LandWalker,
Sea, SeaSubmarine, SpaceOuter
-->
<vehicleType>LandWheeled</vehicleType>
<!--
Handler types determine if vehicles require a person to
handle various aspects of the vehicle's functions.
Handling Types :
Incapable, HandlerRequired, NoHandlerRequired
-->
<movementHandling>HandlerRequired</movementHandling>
<weaponHandling>HandlerRequired</weaponHandling>
<manipulationHandling>NoHandlerRequired</manipulationHandling>
<!-- Determines how much a vehicle can carry -->
<cargoCapacity>275</cargoCapacity>
<!-- Unloads all passengers when health percent reaches below this percentage. -->
<ejectIfBelowHealthPercent>0.2</ejectIfBelowHealthPercent>
<!-- If a bullet hits a seat, the passenger is injured by this factor of damage. -->
<seatHitDamageFactor>1.00</seatHitDamageFactor>
<!-- Chance of doubling that damage. -->
<seatHitCriticalHitChance>0.15</seatHitCriticalHitChance>
<canBeDowned>true</canBeDowned>
<canWiggleWhenDowned>false</canWiggleWhenDowned>
<soundEntry>Pawn_Mech_Centipede_Wounded</soundEntry>
<soundMoving />
<soundEject>Pawn_Mech_Centipede_Wounded</soundEject>
<labelUndamaged>Undamaged</labelUndamaged>
<labelDamaged>Damaged</labelDamaged>
<labelInoperable>Inoperable</labelInoperable>
<labelBroken>Broken</labelBroken>
<roles>
<li>
<label>driver seat</label>
<labelPlural>drivers</labelPlural>
<handlingTypes>
<li>Movement</li>
<li>Weapons</li>
</handlingTypes>
<slots>3</slots>
<slotsToOperate>1</slotsToOperate>
<slotTag>DriverSeat1</slotTag>
</li>
<li>
<label>middle seat</label>
<labelPlural>passengers</labelPlural>
<slots>3</slots>
<slotsToOperate>1</slotsToOperate>
<slotTag>DriverSeat2</slotTag>
</li>
<li>
<label>passenger seat</label>
<labelPlural>passengers</labelPlural>
<slots>3</slots>
<slotsToOperate>1</slotsToOperate>
<slotTag>DriverSeat3</slotTag>
</li>
</roles>
</li>
</comps>
</ThingDef>
<PawnKindDef>
<defName>Drone</defName>
<label>Pickup Truck</label>
<race>Drone</race>
<combatPower>999999</combatPower>
<aiAvoidCover>true</aiAvoidCover>
<lifeStages>
<li>
<bodyGraphicData>
<texPath>Things/Vehicles/Drone/Truck</texPath>
<graphicClass>Graphic_Multi</graphicClass>
<drawSize>4,4</drawSize>
</bodyGraphicData>
</li>
</lifeStages>
<weaponMoney>
<min>0</min>
<max>0</max>
</weaponMoney>
<weaponTags>
</weaponTags>
</PawnKindDef>
</Defs>
Body:
<?xml version="1.0" encoding="utf-8" ?>
<Defs>
<BodyPartDef>
<defName>Exterior_Thermometer</defName>
<label>thermometer</label>
<hitPoints>1</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<frostbiteVulnerability>0.01</frostbiteVulnerability>
</BodyPartDef>
<BodyPartDef>
<defName>Truck_Body</defName>
<label>body</label>
<hitPoints>70</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
</BodyPartDef>
<BodyPartDef>
<defName>Truck_Cabin</defName>
<label>cabin</label>
<hitPoints>40</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<tags>
<li>SightSource</li>
<li>HearingSource</li>
<li>ConsciousnessSource</li>
<li>DriverSeat</li>
<li>PassengerSeat</li>
</tags>
</BodyPartDef>
<BodyPartDef>
<defName>Truck_Engine</defName>
<label>engine</label>
<hitPoints>30</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<tags>
<li>BreathingPathway</li>
<li>EatingPathway</li>
<li>TalkingPathway</li>
</tags>
</BodyPartDef>
<BodyPartDef>
<defName>Truck_Transmission</defName>
<label>transmission</label>
<hitPoints>30</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<tags>
<li>ManipulationLimbCore</li>
</tags>
</BodyPartDef>
<BodyPartDef>
<defName>Fuel_Tanks</defName>
<label>fuel</label>
<hitPoints>10</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<tags>
<li>EatingPathway</li>
</tags>
</BodyPartDef>
<BodyPartDef>
<defName>Wheel_Truck_LFDrive</defName>
<label>wheel</label>
<hitPoints>15</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<tags>
<li>MovingLimbCore</li>
</tags>
</BodyPartDef>
<BodyPartDef>
<defName>Wheel_Truck_RFDrive</defName>
<label>wheel</label>
<hitPoints>15</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<tags>
<li>MovingLimbCore</li>
</tags>
</BodyPartDef>
<BodyPartDef>
<defName>Wheel_Truck_LB</defName>
<label>wheel</label>
<hitPoints>15</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<tags>
<li>MovingLimbSegment</li>
</tags>
</BodyPartDef>
<BodyPartDef>
<defName>Wheel_Truck_RB</defName>
<label>wheel</label>
<hitPoints>15</hitPoints>
<oldInjuryBaseChance>0</oldInjuryBaseChance>
<skinCovered>false</skinCovered>
<isSolid>true</isSolid>
<isAlive>false</isAlive>
<tags>
<li>MovingLimbSegment</li>
</tags>
</BodyPartDef>
<!-- ===== Truck Body ===== -->
<BodyDef>
<defName>Truck_Body</defName>
<label>Truck</label>
<corePart>
<def>Truck_Body</def>
<height>Middle</height>
<depth>Outside</depth>
<groups>
<li>HeadAttackTool</li>
</groups>
<parts>
<li>
<def>Truck_Engine</def>
<coverage>0.1</coverage>
<depth>Inside</depth>
<height>Bottom</height>
</li>
<li>
<def>Truck_Transmission</def>
<coverage>0.05</coverage>
<depth>Inside</depth>
<height>Bottom</height>
</li>
<li>
<def>Truck_Cabin</def>
<coverage>0.3</coverage>
</li>
<li>
<def>Exterior_Thermometer</def>
<coverage>0.01</coverage>
<depth>Outside</depth>
</li>
<li>
<def>Wheel_Truck_LFDrive</def>
<coverage>0.01</coverage>
<height>Bottom</height>
</li>
<li>
<def>Wheel_Truck_RFDrive</def>
<coverage>0.01</coverage>
<height>Bottom</height>
</li>
<li>
<def>Wheel_Truck_LB</def>
<coverage>0.01</coverage>
<height>Bottom</height>
</li>
<li>
<def>Wheel_Truck_RB</def>
<coverage>0.01</coverage>
<height>Bottom</height>
</li>
</parts>
</corePart>
</BodyDef>
</Defs>
```Thank you for your help <3 Looking forward to getting this working to share with the community
After a caravan has returned to a faction base. Unloading the vehicle results in a clone reference left inside the vehicle.
Manually unloading a colonist character from a vehicle in hostile territory causes the colonist to randomly change factions when spawned.
Hi Jec,
I feel like the Pawn, has left the vehicle due to low needs breaks immersion,
Would their be a way to remove this check so pawns with low needs can drive vehicles?
Cheers,
OneSmallCoin
JobDriver threw exception in initAction for pawn PJ_ForceGhostR2986 driver=JobDriver_WaitMaintainPosture (toilIndex=0) driver.job=(Wait_MaintainPosture (Job_208)) lastJobGiver=null
System.NullReferenceException: Object reference not set to an instance of an object
at Verse.AI.JobDriver_Wait.CheckForAutoAttack () [0x00000] in <filename unknown>:0
at Verse.AI.JobDriver_Wait+<MakeNewToils>c__Iterator0.<>m__0 () [0x00000] in <filename unknown>:0
at Verse.AI.JobDriver.TryActuallyStartNextToil () [0x00000] in <filename unknown>:0
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob(Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:TryEnterNextPathCell()
Verse.AI.Pawn_PathFollower:PatherTick()
Verse.Pawn:Tick_Patch1(Object)
AbilityUser.PawnSummoned:Tick()
Verse.TickList:Tick_Patch2(Object)
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()
How to repro: summon Force Ghost with no hostiles on map. (I think! Came across this when testing something else.)
If I have a pawn with a shield equipped, and try to equip a different one, I get this error:
JobDriver threw exception in initAction for pawn Rogrum driver=JobDriver_Equip (toilIndex=1) driver.job=(Equip (Job_87) A=Thing_RH_TET_Dwarf_ShieldMid58557) lastJobGiver=Verse.AI.ThinkNode_QueuedJob
System.NullReferenceException: Object reference not set to an instance of an object
at PawnShields.HarmonyPatches.EquipmentTracker_GetPawn (object) <0x0001e>
at PawnShields.HarmonyPatches.Patch_Pawn_EquipmentTracker_MakeRoomFor (Verse.Pawn_EquipmentTracker,Verse.ThingWithComps&) <0x00092>
at (wrapper dynamic-method) Verse.Pawn_EquipmentTracker.MakeRoomFor_Patch1 (object,Verse.ThingWithComps) <0x00152>
at Verse.AI.JobDriver_Equip/c__Iterator0.<>m__0 () <0x000f9>
at Verse.AI.JobDriver.TryActuallyStartNextToil () <0x0071f>
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.JobDriver:Notify_PatherArrived()
Verse.AI.Pawn_PathFollower:PatherArrived()
Verse.AI.Pawn_PathFollower:TryEnterNextPathCell()
Verse.AI.Pawn_PathFollower:PatherTick()
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()
I traced it back through your source code, and here's the function that fails. The only thing that can be null there seems to be 'pawnField_Pawn_EquipmentTracker'.
public static Pawn EquipmentTracker_GetPawn(object instance)
{
return (Pawn)pawnField_Pawn_EquipmentTracker.GetValue(instance);
}
Is this a known issue? I don't see an open issue for it. Any thoughts?
Harmony IDs identify the mod that is patching the methods. They should be unique. Since this is a library that is potentially used by several mods, it is not ok to have the same ID hard coded within the library.
Suggestion: add support for a prefix that is combined with the internal IDs to make them unique.
Steps: Caravan with vehicle travels to raider base. No colonist exits. Caravan returns to player base. The vehicle "unloads", but actually leaves pawn reference inside the vehicle. When leaving the map in a new caravan, the vehicle removes the copy and turns the colonist inside into having a random faction
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.