[1.0] Psychology (2018-11-18)

Started by System.Linq, June 30, 2017, 02:39:52 AM

Previous topic - Next topic

SagaciousNJ

Is there any chance of psychology coming to 1.0?

I love this game by itself but my pawns really do seem stale and kind of dumb without this mod.

BlackLight

Its not Working with edb prepare carefully. It was working fine with Alpha 17 though.

EpicGunBlast

I've been getting this error in my game for 9 years straight now and its really starting to slow my game down, traced it back to psychology, would love an explanation of it?:
Exception ticking Bowman: System.NullReferenceException: Object reference not set to an instance of an object
at RimWorld.GatheringsUtility.ShouldGuestKeepAttendingGathering (Verse.Pawn) <0x00082>
at Psychology.InteractionWorker_HangOut.RandomSelectionWeight (Verse.Pawn,Verse.Pawn) <0x00036>
at RimWorld.Pawn_InteractionsTracker/<TryInteractRandomly>c__AnonStorey0.<>m__0 (RimWorld.InteractionDef) <0x00032>
at Verse.GenCollection.TryRandomElementByWeight<RimWorld.InteractionDef> (System.Collections.Generic.IEnumerable`1<RimWorld.InteractionDef>,System.Func`2<RimWorld.InteractionDef, single>,RimWorld.InteractionDef&) <0x000a0>
at RimWorld.Pawn_InteractionsTracker.TryInteractRandomly () <0x001ac>
at RimWorld.Pawn_InteractionsTracker.InteractionsTrackerTick () <0x000df>
at (wrapper dynamic-method) Verse.Pawn.Tick_Patch1 (object) <0x0029c>
at Verse.TickList.Tick () <0x002c6>

Verse.Log:Error(String)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

System.Linq

The mod is now updated to B19. You can download the latest version from the updated Steam Workshop link (here) or the Nexus.

Syrchalis

I've added compatibility between Psychology and Individuality. I'm disabling my mods' sexuality and confidence stats, because we are patching the same methods, if Psychology is loaded.
For mod support visit the steam pages of my mods, Github or if necessary, write me a PM on Discord. Usually you will find the best help in #troubleshooting in the RimWorld discord.

System.Linq

Updated to 2018-9-2:
- Added a new minor mental break, "Nature Retreat." The affected pawn goes hunting and hangs around the edge of the map until the break ends.
- Fixed the Compulsion break, finally. Also added some null checking to many of the other breaks.
- Changed the marriage proposal patch to a transpiler, as well as the PawnObserver patch.
- Redid how marriage proposals affect mood and opinion for Psychology pawns.
- Removed the Working Passion thought since Tynan added it to vanilla.
- Removed redundant vanilla XML bases.

Treason5240

Had my first experience with the nature break.

It broke.

Bacia started 10 jobs in one tick. newJob=Hunt (Job_19602) A=Thing_Hare56264 jobGiver=Psychology.JobGiver_GoHunting jobList=(Hunt (Job_19592) A=Thing_Rat56262) (Hunt (Job_19593) A=Thing_Iguana56268) (Hunt (Job_19594) A=Thing_Hare56266) (Hunt (Job_19595) A=Thing_Iguana56268) (Hunt (Job_19596) A=Thing_Carnotaurus56247) (Hunt (Job_19597) A=Thing_Boomrat56254) (Hunt (Job_19598) A=Thing_Boomrat56254) (Hunt (Job_19599) A=Thing_Rat56261) (Hunt (Job_19600) A=Thing_Emu56259) (Hunt (Job_19601) A=Thing_Boomrat56254) (Hunt (Job_19602) A=Thing_Hare56264)  lastJobGiver=Psychology.JobGiver_GoHunting
Verse.Log:Error(String, Boolean)
Verse.AI.JobUtility:TryStartErrorRecoverJob(Pawn, String, Exception, JobDriver)
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.JobDriver:EndJobWith(JobCondition)
Verse.AI.JobDriver:CheckCurrentToilEndOrFail()
Verse.AI.JobDriver:TryActuallyStartNextToil()
Verse.AI.JobDriver:ReadyForNextToil()
Verse.AI.Pawn_JobTracker:StartJob_Patch1(Object, Job, JobCondition, ThinkNode, Boolean, Boolean, ThinkTreeDef, Nullable`1, Boolean)
Verse.AI.Pawn_JobTracker:TryFindAndStartJob()
Verse.AI.Pawn_JobTracker:EndCurrentJob_Patch1(Object, JobCondition, Boolean)
Verse.AI.Pawn_JobTracker:JobTrackerTick()
Verse.Pawn:Tick_Patch1(Object)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

System.Linq

Unless it's spamming your log, just ignore it. I patched out that error before release, probably just didn't upload the most current DLL.

Treason5240

I was probably running without the update, then.  The error was spamming my log and constantly pausing the game.

I'll watch for things after I let my game update.

System.Linq

Oh, were you using the Steam Workshop? Yeah, you probably just didn't have the update yet, then.

Treason5240

Quote from: Linq on September 02, 2018, 05:31:29 PM
Oh, were you using the Steam Workshop? Yeah, you probably just didn't have the update yet, then.

Yep, I'm using the Steam Workshop.  After updating, I haven't noticed a problem with the break.

Great mod, btw.  It's one of those that I consider pretty essential to any of my playthroughs.

System.Linq

Yes, I update the Workshop version more frequently than this one because people don't need to download it manually/end up running very old versions because they forgot to check for updates.

System.Linq

Updated to 2018-9-3:
- Increased the mood bonus for Pluviophiles being outside so that it counteracts the "soaking wet" malus.
- Pluviophiles should no longer get a rain mood bonus from the snow.
- Fixed a typo in the mayoral candidate letter.
- Restored the 2 season opinion penalty for recruiting prisoners, but made sure that it only applies to recruited prisoners, not all recruitments.
- Some fixes to dates/hanging out.
- Added log messages to some causes that would make an election fail to start, for the player's sake.
- Adjusted dynamic thoughts to stack properly, which was causing some thoughts to be discarded.
- Restored the "Mayor" title to mayors.
- Fixed several translation hooks related to mayorship.
- Fixed a bug with mayor visits which would erroneously set a visit thought's mood change to zero.
- A mayor's visits with constituents should now have a much more obvious effect on their mood (and the mood of those visiting them). Previously, the formula was set up in such a way that supportive visits almost never resulted in any mood bonus. Now positive visits will have a noticeable impact on a mayor's mood (depending on the personalities of those involved).
- Constituents will now visit the mayor less often.
- Whether or not a constituent wants to complain to the mayor or support them is now affected by that constituent's mental break thresholds, so more volatile pawns will complain at a higher mood level.
- Fixed a few improperly configured trait descriptions.

SagaciousNJ

So I have a bit of a problem.
I love this mod dearly but upon installing psychology the game speed has slowed down in a way that fast forwarding has no effect on and my error log is spammed with references to Psychology.Pawn_SexualityTracker.IncompatibleSexualityKnown

See the rest down below.

Any idea how I might take care of this?


Exception ticking Bond (at (207, 0, 139)): System.NullReferenceException: Object reference not set to an instance of an object
at Psychology.Pawn_SexualityTracker.IncompatibleSexualityKnown (Verse.Pawn) <0x00038>
at Psychology.Harmony.InteractionWorker_RomanceAttempt_SelectionWeightPatch.PsychologyException (single&,Verse.Pawn,Verse.Pawn) <0x006f0>
at (wrapper dynamic-method) RimWorld.InteractionWorker_RomanceAttempt.RandomSelectionWeight_Patch2 (object,Verse.Pawn,Verse.Pawn) <0x004e8>
at Hospitality.Harmony.Pawn_InteractionsTracker_Patch/TryInteractRandomly/<>c__DisplayClass4.<Replacement>b__0 (RimWorld.InteractionDef) <0x00046>
at Verse.GenCollection.TryRandomElementByWeight<RimWorld.InteractionDef> (System.Collections.Generic.IEnumerable`1<RimWorld.InteractionDef>,System.Func`2<RimWorld.InteractionDef, single>,RimWorld.InteractionDef&) <0x000dc>
at Hospitality.Harmony.Pawn_InteractionsTracker_Patch/TryInteractRandomly.Replacement (RimWorld.Pawn_InteractionsTracker,bool&) <0x00405>
at (wrapper dynamic-method) RimWorld.Pawn_InteractionsTracker.TryInteractRandomly_Patch1 (object) <0x0003d>
at (wrapper dynamic-method) RimWorld.Pawn_InteractionsTracker.InteractionsTrackerTick_Patch1 (object) <0x0016a>
at (wrapper dynamic-method) Verse.Pawn.Tick_Patch2 (object) <0x003d7>
at Verse.TickList.Tick () <0x00487>

Verse.Log:Error(String, Boolean)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

Exception ticking Sheet (at (207, 0, 136)): System.NullReferenceException: Object reference not set to an instance of an object
at Psychology.Pawn_SexualityTracker.IncompatibleSexualityKnown (Verse.Pawn) <0x00038>
at Psychology.Harmony.InteractionWorker_RomanceAttempt_SelectionWeightPatch.PsychologyException (single&,Verse.Pawn,Verse.Pawn) <0x006f0>
at (wrapper dynamic-method) RimWorld.InteractionWorker_RomanceAttempt.RandomSelectionWeight_Patch2 (object,Verse.Pawn,Verse.Pawn) <0x004e8>
at Hospitality.Harmony.Pawn_InteractionsTracker_Patch/TryInteractRandomly/<>c__DisplayClass4.<Replacement>b__0 (RimWorld.InteractionDef) <0x00046>
at Verse.GenCollection.TryRandomElementByWeight<RimWorld.InteractionDef> (System.Collections.Generic.IEnumerable`1<RimWorld.InteractionDef>,System.Func`2<RimWorld.InteractionDef, single>,RimWorld.InteractionDef&) <0x000dc>
at Hospitality.Harmony.Pawn_InteractionsTracker_Patch/TryInteractRandomly.Replacement (RimWorld.Pawn_InteractionsTracker,bool&) <0x00405>
at (wrapper dynamic-method) RimWorld.Pawn_InteractionsTracker.TryInteractRandomly_Patch1 (object) <0x0003d>
at (wrapper dynamic-method) RimWorld.Pawn_InteractionsTracker.InteractionsTrackerTick_Patch1 (object) <0x0016a>
at (wrapper dynamic-method) Verse.Pawn.Tick_Patch2 (object) <0x003d7>
at Verse.TickList.Tick () <0x00487>

Verse.Log:Error(String, Boolean)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

Exception ticking Bond (at (207, 0, 139)): System.NullReferenceException: Object reference not set to an instance of an object
at Psychology.Pawn_SexualityTracker.IncompatibleSexualityKnown (Verse.Pawn) <0x00038>
at Psychology.Harmony.InteractionWorker_RomanceAttempt_SelectionWeightPatch.PsychologyException (single&,Verse.Pawn,Verse.Pawn) <0x006f0>
at (wrapper dynamic-method) RimWorld.InteractionWorker_RomanceAttempt.RandomSelectionWeight_Patch2 (object,Verse.Pawn,Verse.Pawn) <0x004e8>
at Hospitality.Harmony.Pawn_InteractionsTracker_Patch/TryInteractRandomly/<>c__DisplayClass4.<Replacement>b__0 (RimWorld.InteractionDef) <0x00046>
at Verse.GenCollection.TryRandomElementByWeight<RimWorld.InteractionDef> (System.Collections.Generic.IEnumerable`1<RimWorld.InteractionDef>,System.Func`2<RimWorld.InteractionDef, single>,RimWorld.InteractionDef&) <0x000dc>
at Hospitality.Harmony.Pawn_InteractionsTracker_Patch/TryInteractRandomly.Replacement (RimWorld.Pawn_InteractionsTracker,bool&) <0x00405>
at (wrapper dynamic-method) RimWorld.Pawn_InteractionsTracker.TryInteractRandomly_Patch1 (object) <0x0003d>
at (wrapper dynamic-method) RimWorld.Pawn_InteractionsTracker.InteractionsTrackerTick_Patch1 (object) <0x0016a>
at (wrapper dynamic-method) Verse.Pawn.Tick_Patch2 (object) <0x003d7>
at Verse.TickList.Tick () <0x00487>

Verse.Log:Error(String, Boolean)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

Exception ticking Diver (at (206, 0, 138)): System.NullReferenceException: Object reference not set to an instance of an object
at Psychology.Pawn_SexualityTracker.IncompatibleSexualityKnown (Verse.Pawn) <0x00038>
at Psychology.Harmony.InteractionWorker_RomanceAttempt_SelectionWeightPatch.PsychologyException (single&,Verse.Pawn,Verse.Pawn) <0x006f0>
at (wrapper dynamic-method) RimWorld.InteractionWorker_RomanceAttempt.RandomSelectionWeight_Patch2 (object,Verse.Pawn,Verse.Pawn) <0x004e8>
at Hospitality.Harmony.Pawn_InteractionsTracker_Patch/TryInteractRandomly/<>c__DisplayClass4.<Replacement>b__0 (RimWorld.InteractionDef) <0x00046>
at Verse.GenCollection.TryRandomElementByWeight<RimWorld.InteractionDef> (System.Collections.Generic.IEnumerable`1<RimWorld.InteractionDef>,System.Func`2<RimWorld.InteractionDef, single>,RimWorld.InteractionDef&) <0x000dc>
at Hospitality.Harmony.Pawn_InteractionsTracker_Patch/TryInteractRandomly.Replacement (RimWorld.Pawn_InteractionsTracker,bool&) <0x00405>
at (wrapper dynamic-method) RimWorld.Pawn_InteractionsTracker.TryInteractRandomly_Patch1 (object) <0x0003d>
at (wrapper dynamic-method) RimWorld.Pawn_InteractionsTracker.InteractionsTrackerTick_Patch1 (object) <0x0011f>
at (wrapper dynamic-method) Verse.Pawn.Tick_Patch2 (object) <0x003d7>
at Verse.TickList.Tick () <0x00487>

Verse.Log:Error(String, Boolean)
Verse.TickList:Tick()
Verse.TickManager:DoSingleTick()
Verse.TickManager:TickManagerUpdate()
Verse.Game:UpdatePlay()
Verse.Root_Play:Update()

System.Linq