Rim World Drug Mod

Started by seanmmitch, January 28, 2018, 10:42:04 PM

Previous topic - Next topic

seanmmitch

Hello! I am making a mod that adds a bunch of new drugs to Rim World, but am struggling with some issues!

Current Code: https://pastebin.com/Vf4aLh6S

First issue is that I do not know how to set the base addiction level, like once your first addicted I do not know how to set the starting level.

Second issue is the following error code, I think it has something to do with getting the drug. Also can I make my need level > 1?

RimWorld 0.18.1722 rev1198
Verse.Log:Message(String)
RimWorld.VersionControl:LogVersionNumber()
Verse.Root:CheckGlobalInit()
Verse.Root:Start()
Verse.Root_Entry:Start()

Loading game from file Honesty's Rock with mods Core and HardDrugs
Verse.Log:Message(String)
Verse.SavedGameLoader:LoadGameFromSaveFile(String)
Verse.Root_Play:<Start>m__0()
Verse.LongEventHandler:RunEventFromAnotherThread(Action)
Verse.LongEventHandler:<UpdateCurrentAsynchronousEvent>m__1()

Exception in BreadthFirstTraverse: System.ArgumentException: Value does not fall within the expected range.
  at RimWorld.DrugPolicy.get_Item (Verse.ThingDef drugDef) [0x00000] in <filename unknown>:0
  at RimWorld.JobGiver_SatisfyChemicalNeed.DrugValidator (Verse.Pawn pawn, RimWorld.Hediff_Addiction addiction, Verse.Thing drug) [0x00000] in <filename unknown>:0
  at RimWorld.JobGiver_SatisfyChemicalNeed+<FindDrugFor>c__AnonStorey0.<>m__0 (Verse.Thing x) [0x00000] in <filename unknown>:0
  at Verse.GenClosest+<RegionwiseBFSWorker>c__AnonStorey1.<>m__1 (Verse.Region r) [0x00000] in <filename unknown>:0
  at Verse.RegionTraverser+BFSWorker.BreadthFirstTraverseWork (Verse.Region root, Verse.RegionEntryPredicate entryCondition, Verse.RegionProcessor regionProcessor, Int32 maxRegions, RegionType traversableRegionTypes) [0x00000] in <filename unknown>:0
  at Verse.RegionTraverser.BreadthFirstTraverse (Verse.Region root, Verse.RegionEntryPredicate entryCondition, Verse.RegionProcessor regionProcessor, Int32 maxRegions, RegionType traversableRegionTypes) [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.RegionTraverser:BreadthFirstTraverse(Region, RegionEntryPredicate, RegionProcessor, Int32, RegionType)
Verse.GenClosest:RegionwiseBFSWorker(IntVec3, Map, ThingRequest, PathEndMode, TraverseParms, Predicate`1, Func`2, Int32, Int32, Single, RegionType, Boolean)
Verse.GenClosest:ClosestThingReachable(IntVec3, Map, ThingRequest, PathEndMode, TraverseParms, Single, Predicate`1, IEnumerable`1, Int32, Int32, Boolean, RegionType, Boolean)
RimWorld.JobGiver_SatisfyChemicalNeed:FindDrugFor(Pawn, Need_Chemical)
RimWorld.JobGiver_SatisfyChemicalNeed:TryGiveJob(Pawn)
Verse.AI.ThinkNode_JobGiver:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_PrioritySorter:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Tagger:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Subtree:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.Pawn_JobTracker:DetermineNextJob(ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick()
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

Exception in Verse.AI.ThinkNode_PrioritySorter TryIssueJobPackage: System.ArgumentException: Value does not fall within the expected range.
  at RimWorld.DrugPolicy.get_Item (Verse.ThingDef drugDef) [0x00000] in <filename unknown>:0
  at RimWorld.JobGiver_SatisfyChemicalNeed.DrugValidator (Verse.Pawn pawn, RimWorld.Hediff_Addiction addiction, Verse.Thing drug) [0x00000] in <filename unknown>:0
  at RimWorld.JobGiver_SatisfyChemicalNeed+<FindDrugFor>c__AnonStorey0.<>m__0 (Verse.Thing x) [0x00000] in <filename unknown>:0
  at Verse.GenClosest+<ClosestThingReachable>c__AnonStorey0.<>m__0 (Verse.Thing t) [0x00000] in <filename unknown>:0
  at Verse.GenClosest.ClosestThing_Global (IntVec3 center, IEnumerable searchSet, Single maxDistance, System.Predicate`1 validator, System.Func`2 priorityGetter) [0x00000] in <filename unknown>:0
  at Verse.GenClosest.ClosestThingReachable (IntVec3 root, Verse.Map map, ThingRequest thingReq, PathEndMode peMode, TraverseParms traverseParams, Single maxDistance, System.Predicate`1 validator, IEnumerable`1 customGlobalSearchSet, Int32 searchRegionsMin, Int32 searchRegionsMax, Boolean forceGlobalSearch, RegionType traversableRegionTypes, Boolean ignoreEntirelyForbiddenRegions) [0x00000] in <filename unknown>:0
  at RimWorld.JobGiver_SatisfyChemicalNeed.FindDrugFor (Verse.Pawn pawn, RimWorld.Need_Chemical need) [0x00000] in <filename unknown>:0
  at RimWorld.JobGiver_SatisfyChemicalNeed.TryGiveJob (Verse.Pawn pawn) [0x00000] in <filename unknown>:0
  at Verse.AI.ThinkNode_JobGiver.TryIssueJobPackage (Verse.Pawn pawn, JobIssueParams jobParams) [0x00000] in <filename unknown>:0
  at Verse.AI.ThinkNode_PrioritySorter.TryIssueJobPackage (Verse.Pawn pawn, JobIssueParams jobParams) [0x00000] in <filename unknown>:0
Verse.Log:Error(String)
Verse.AI.ThinkNode_PrioritySorter:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Tagger:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Subtree:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Conditional:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.ThinkNode_Priority:TryIssueJobPackage(Pawn, JobIssueParams)
Verse.AI.Pawn_JobTracker:DetermineNextJob(ThinkTreeDef&)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob(JobCondition, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick()
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()