diff --git a/RimWorldOfMagic/.vs/RimWorldOfMagic/FileContentIndex/3c0435d4-3e0e-49f3-ba56-aaef5bee96f1.vsidx b/RimWorldOfMagic/.vs/RimWorldOfMagic/FileContentIndex/3c0435d4-3e0e-49f3-ba56-aaef5bee96f1.vsidx new file mode 100644 index 00000000..d3f06691 Binary files /dev/null and b/RimWorldOfMagic/.vs/RimWorldOfMagic/FileContentIndex/3c0435d4-3e0e-49f3-ba56-aaef5bee96f1.vsidx differ diff --git a/RimWorldOfMagic/.vs/RimWorldOfMagic/FileContentIndex/read.lock b/RimWorldOfMagic/.vs/RimWorldOfMagic/FileContentIndex/read.lock new file mode 100644 index 00000000..e69de29b diff --git a/RimWorldOfMagic/.vs/RimWorldOfMagic/v17/.suo b/RimWorldOfMagic/.vs/RimWorldOfMagic/v17/.suo index 6d3008ed..f5f363bd 100644 Binary files a/RimWorldOfMagic/.vs/RimWorldOfMagic/v17/.suo and b/RimWorldOfMagic/.vs/RimWorldOfMagic/v17/.suo differ diff --git a/RimWorldOfMagic/RimWorldOfMagic/AutoCast/Scripts.cs b/RimWorldOfMagic/RimWorldOfMagic/AutoCast/Scripts.cs index b7ad4336..3326694e 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/AutoCast/Scripts.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/AutoCast/Scripts.cs @@ -949,9 +949,9 @@ public static void Evaluate(CompAbilityUserMagic casterComp, TMAbilityDef abilit { bool tatteredApparel = false; //List targetPawnThoughts = null; - //targetPawn.needs.mood.thoughts.GetDistinctMoodThoughtGroups(targetPawnThoughts); + //targetPawn.needs?.mood?.thoughts.GetDistinctMoodThoughtGroups(targetPawnThoughts); //Log.Message("target pawn is " + targetPawn.LabelShort); - //List targetPawnThoughts = targetPawn.needs.mood.thoughts.memories.Memories; + //List targetPawnThoughts = targetPawn.needs?.mood?.thoughts.memories.Memories; //for (int i = 0; i < targetPawnThoughts.Count; i++) //{ diff --git a/RimWorldOfMagic/RimWorldOfMagic/Building_TMHeater.cs b/RimWorldOfMagic/RimWorldOfMagic/Building_TMHeater.cs index 044a167e..8754adcf 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Building_TMHeater.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Building_TMHeater.cs @@ -58,9 +58,9 @@ public override void Tick() for (int i = 0; i < pList.Count; i++) { Pawn p = pList[i]; - if (p.needs != null && p.needs.joy != null) + if (p.needs != null && p.needs?.joy != null) { - Need joy = p.needs.TryGetNeed(TorannMagicDefOf.Joy); + Need joy = p.needs?.TryGetNeed(TorannMagicDefOf.Joy); if(joy != null) { joy.CurLevel += Rand.Range(.01f, .02f); diff --git a/RimWorldOfMagic/RimWorldOfMagic/CompAbilityUserMagic.cs b/RimWorldOfMagic/RimWorldOfMagic/CompAbilityUserMagic.cs index 1d4fc785..204de81e 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/CompAbilityUserMagic.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/CompAbilityUserMagic.cs @@ -1131,7 +1131,7 @@ public Need_Mana Mana { if (!this.Pawn.DestroyedOrNull() && !this.Pawn.Dead) { - return base.Pawn.needs.TryGetNeed(); + return base.Pawn.needs?.TryGetNeed(); } return null; } @@ -5404,18 +5404,18 @@ public void ResolveWarlockEmpathy() { if (Rand.Chance(otherPawn.GetStatValue(StatDefOf.PsychicSensitivity, false) - .3f)) { - ThoughtHandler pawnThoughtHandler = this.Pawn.needs.mood.thoughts; + ThoughtHandler pawnThoughtHandler = this.Pawn.needs?.mood.thoughts; List pawnThoughts = new List(); pawnThoughtHandler.GetAllMoodThoughts(pawnThoughts); List otherThoughts = new List(); - otherPawn.needs.mood.thoughts.GetAllMoodThoughts(otherThoughts); + otherPawn.needs?.mood.thoughts.GetAllMoodThoughts(otherThoughts); List memoryThoughts = new List(); memoryThoughts.Clear(); float oldMemoryOffset = 0; if (Rand.Chance(.3f)) //empathy absorbed by warlock { ThoughtDef empathyThought = ThoughtDef.Named("WarlockEmpathy"); - memoryThoughts = this.Pawn.needs.mood.thoughts.memories.Memories; + memoryThoughts = this.Pawn.needs?.mood.thoughts.memories.Memories; for (int i = 0; i < memoryThoughts.Count; i++) { if (memoryThoughts[i].def.defName == "WarlockEmpathy") @@ -5429,14 +5429,14 @@ public void ResolveWarlockEmpathy() { oldMemoryOffset = -30; } - this.Pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDef(memoryThoughts[i].def); + this.Pawn.needs?.mood.thoughts.memories.RemoveMemoriesOfDef(memoryThoughts[i].def); } } Thought transferThought = otherThoughts.RandomElement(); float newOffset = Mathf.RoundToInt(transferThought.CurStage.baseMoodEffect / 2); empathyThought.stages.FirstOrDefault().baseMoodEffect = newOffset + oldMemoryOffset; - this.Pawn.needs.mood.thoughts.memories.TryGainMemory(empathyThought, null); + this.Pawn.needs?.mood.thoughts.memories.TryGainMemory(empathyThought, null); Vector3 drawPosOffset = this.Pawn.DrawPos; drawPosOffset.z += .3f; TM_MoteMaker.ThrowGenericMote(TorannMagicDefOf.Mote_ArcaneCircle, drawPosOffset, this.Pawn.Map, newOffset / 20, .2f, .1f, .1f, Rand.Range(100, 200), 0, 0, Rand.Range(0, 360)); @@ -5444,7 +5444,7 @@ public void ResolveWarlockEmpathy() else //empathy bleeding to other pawn { ThoughtDef empathyThought = ThoughtDef.Named("PsychicEmpathy"); - memoryThoughts = otherPawn.needs.mood.thoughts.memories.Memories; + memoryThoughts = otherPawn.needs?.mood.thoughts.memories.Memories; for (int i = 0; i < memoryThoughts.Count; i++) { if (memoryThoughts[i].def.defName == "PsychicEmpathy") @@ -5458,14 +5458,14 @@ public void ResolveWarlockEmpathy() { oldMemoryOffset = -30; } - otherPawn.needs.mood.thoughts.memories.RemoveMemoriesOfDef(memoryThoughts[i].def); + otherPawn.needs?.mood.thoughts.memories.RemoveMemoriesOfDef(memoryThoughts[i].def); } } Thought transferThought = pawnThoughts.RandomElement(); float newOffset = Mathf.RoundToInt(transferThought.CurStage.baseMoodEffect / 2); empathyThought.stages.FirstOrDefault().baseMoodEffect = newOffset + oldMemoryOffset; - otherPawn.needs.mood.thoughts.memories.TryGainMemory(empathyThought, null); + otherPawn.needs?.mood.thoughts.memories.TryGainMemory(empathyThought, null); Vector3 drawPosOffset = otherPawn.DrawPos; drawPosOffset.z += .3f; TM_MoteMaker.ThrowGenericMote(TorannMagicDefOf.Mote_ArcaneCircle, drawPosOffset, otherPawn.Map, newOffset / 20, .2f, .1f, .1f, Rand.Range(100, 200), 0, 0, Rand.Range(0, 360)); @@ -5861,7 +5861,7 @@ public void ResolveMana() hediff.Severity = 1f; base.Pawn.health.AddHediff(hediff, null, null); } - this.Pawn.needs.AddOrRemoveNeedsAsAppropriate(); + this.Pawn.needs?.AddOrRemoveNeedsAsAppropriate(); } } public void ResolveMagicPowers() diff --git a/RimWorldOfMagic/RimWorldOfMagic/CompAbilityUserMight.cs b/RimWorldOfMagic/RimWorldOfMagic/CompAbilityUserMight.cs index 04434675..092c6589 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/CompAbilityUserMight.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/CompAbilityUserMight.cs @@ -796,7 +796,7 @@ public Need_Stamina Stamina { if (!base.Pawn.DestroyedOrNull() && base.Pawn.needs != null) { - return base.Pawn.needs.TryGetNeed(); + return base.Pawn.needs?.TryGetNeed(); } return null; } @@ -4335,13 +4335,13 @@ private void ResolveSustainedSkills() { this.bondedPet.health.RemoveHediff(this.bondedPet.health.hediffSet.GetFirstHediffOfDef(TorannMagicDefOf.TM_RangerBondHD, false)); } - this.Pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.RangerPetDied, null); + this.Pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.RangerPetDied, null); this.bondedPet = null; } else if (this.bondedPet.Faction != null && this.bondedPet.Faction != this.Pawn.Faction) { //sold? punish evil - this.Pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.RangerSoldBondedPet, null); + this.Pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.RangerSoldBondedPet, null); this.bondedPet = null; } else if(!this.bondedPet.health.hediffSet.HasHediff(TorannMagicDefOf.TM_RangerBondHD)) @@ -4349,7 +4349,7 @@ private void ResolveSustainedSkills() HealthUtility.AdjustSeverity(this.bondedPet, TorannMagicDefOf.TM_RangerBondHD, .5f); } } - if(this.Pawn.needs.mood.thoughts.memories.NumMemoriesOfDef(ThoughtDef.Named("RangerSoldBondedPet")) > 0) + if(this.Pawn.needs?.mood?.thoughts.memories.NumMemoriesOfDef(ThoughtDef.Named("RangerSoldBondedPet")) > 0) { if(this.animalBondingDisabled == false) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/CompPolymorph.cs b/RimWorldOfMagic/RimWorldOfMagic/CompPolymorph.cs index 26654dcb..e1fd6e14 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/CompPolymorph.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/CompPolymorph.cs @@ -295,7 +295,7 @@ public void ApplyDamage(Pawn pawn) { if (pawn.story?.traits != null && pawn.story.traits.HasTrait(TraitDefOf.Transhumanist)) { - pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.Polymorphed_Transhumanist, this.spawner); + pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.Polymorphed_Transhumanist, this.spawner); } else if(this.spawner == this.original) { @@ -303,7 +303,7 @@ public void ApplyDamage(Pawn pawn) } else { - pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.Polymorphed, this.spawner); + pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.Polymorphed, this.spawner); } } catch(NullReferenceException) diff --git a/RimWorldOfMagic/RimWorldOfMagic/Enchantment/HediffComp_Rest.cs b/RimWorldOfMagic/RimWorldOfMagic/Enchantment/HediffComp_Rest.cs index 860926c2..2710e81e 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Enchantment/HediffComp_Rest.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Enchantment/HediffComp_Rest.cs @@ -22,7 +22,7 @@ public override void PostInitialize() public override void HediffActionTick() { - Need rest = this.Pawn.needs.rest; + Need rest = this.Pawn.needs?.rest; if (rest != null) { rest.CurLevel += .0065f; diff --git a/RimWorldOfMagic/RimWorldOfMagic/FlyingObject_SpiritOfLight.cs b/RimWorldOfMagic/RimWorldOfMagic/FlyingObject_SpiritOfLight.cs index 9a14bd35..49590570 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/FlyingObject_SpiritOfLight.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/FlyingObject_SpiritOfLight.cs @@ -788,17 +788,17 @@ public void UpdateAction(SoLAction withAction = SoLAction.Pending) p = TM_Calc.FindNearbyPawn(this.pawn, 10); if (p != null && p.needs != null && TM_Calc.HasLoSFromTo(this.pawn.Position, p, this.pawn, 0, 10)) { - if ((this.pawn.CurJobDef.joyKind != null || this.pawn.CurJobDef == JobDefOf.Wait_Wander || this.pawn.CurJobDef == JobDefOf.GotoWander) && this.pawn.needs.joy.CurLevelPercentage < .5f) + if ((this.pawn.CurJobDef.joyKind != null || this.pawn.CurJobDef == JobDefOf.Wait_Wander || this.pawn.CurJobDef == JobDefOf.GotoWander) && this.pawn.needs?.joy.CurLevelPercentage < .5f) { this.delayCount = 0; Action_JoyBurst(this.pawn.DrawPos, out destTarget); } - else if (p.needs.joy != null && (p.CurJobDef.joyKind != null || p.CurJobDef == JobDefOf.Wait_Wander || p.CurJobDef == JobDefOf.GotoWander) && p.needs.joy.CurLevelPercentage < .5f) + else if (p.needs?.joy != null && (p.CurJobDef.joyKind != null || p.CurJobDef == JobDefOf.Wait_Wander || p.CurJobDef == JobDefOf.GotoWander) && p.needs?.joy.CurLevelPercentage < .5f) { this.delayCount = 0; Action_JoyBurst(p.DrawPos, out destTarget); } - else if (this.delayCount > 3 && p.needs.mood != null && p.needs.mood.thoughts != null && p.needs.mood.thoughts.memories != null && p.needs.mood.thoughts.memories.GetFirstMemoryOfDef(TorannMagicDefOf.TM_BrightDayTD) == null) + else if (this.delayCount > 3 && p.needs?.mood != null && p.needs?.mood?.thoughts != null && p.needs?.mood?.thoughts.memories != null && p.needs?.mood?.thoughts.memories.GetFirstMemoryOfDef(TorannMagicDefOf.TM_BrightDayTD) == null) { this.delayCount = 0; Action_GotoTarget(p.DrawPos, speed_jog, out destTarget); @@ -841,7 +841,7 @@ public void UpdateAction(SoLAction withAction = SoLAction.Pending) if(this.assignedTarget != null && this.assignedTarget is Pawn p) { ActualLightCost(6f); - p.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_BrightDayTD); + p.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_BrightDayTD); Action_CircleTarget(this.assignedTarget, out destTarget); queuedAction = SoLAction.Returning; } @@ -958,18 +958,18 @@ public void Action_Sleeping(out Vector3 destTarget) this.speed = speed_hover; this.solAction = SoLAction.Sleeping; this.delayCount++; - if(delayCount > 10 && EnergyChance && pawn.needs.mood != null && pawn.needs.mood.thoughts != null) + if(delayCount > 10 && EnergyChance && pawn.needs?.mood != null && pawn.needs?.mood?.thoughts != null) { this.delayCount = 0; - if (pawn.needs.mood.thoughts.memories.GetFirstMemoryOfDef(TorannMagicDefOf.TM_PleasantDreamsTD) == null) + if (pawn.needs?.mood?.thoughts.memories.GetFirstMemoryOfDef(TorannMagicDefOf.TM_PleasantDreamsTD) == null) { ActualLightCost(5f); - pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_PleasantDreamsTD); + pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_PleasantDreamsTD); } - if(pawn.needs.mood.thoughts.memories.GetFirstMemoryOfDef(ThoughtDefOf.SleepDisturbed) != null) + if(pawn.needs?.mood?.thoughts.memories.GetFirstMemoryOfDef(ThoughtDefOf.SleepDisturbed) != null) { ActualLightCost(3f); - pawn.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleepDisturbed); + pawn.needs?.mood?.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleepDisturbed); } } destTarget = GetCasterOffset_Rand; @@ -1024,7 +1024,7 @@ public void Action_JoyBurst(Vector3 center, out Vector3 destTarget) for(int i = 0; i < affectedPawns.Count; i++) { Pawn p = affectedPawns[i]; - if(p.needs != null && p.needs.joy != null) + if(p.needs != null && p.needs?.joy != null) { p.needs.joy.CurLevel += Rand.Range(.2f, .4f) * LightPotency; } diff --git a/RimWorldOfMagic/RimWorldOfMagic/Gizmo_EnergyStatus.cs b/RimWorldOfMagic/RimWorldOfMagic/Gizmo_EnergyStatus.cs index 153fd58d..6110620f 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Gizmo_EnergyStatus.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Gizmo_EnergyStatus.cs @@ -321,7 +321,7 @@ public override GizmoResult GizmoOnGUI(Vector2 topLeft, float maxWidth, GizmoRen if (isSpirit) { rect2.y = rect.y + yShift; - Need_Spirit nd = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit nd = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; try { fillPercent = nd.CurLevel / nd.MaxLevel; diff --git a/RimWorldOfMagic/RimWorldOfMagic/Golems/CompGolem.cs b/RimWorldOfMagic/RimWorldOfMagic/Golems/CompGolem.cs index d9b14d9a..ba5d677d 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Golems/CompGolem.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Golems/CompGolem.cs @@ -254,7 +254,7 @@ public override void PostExposeData() public LocalTargetInfo AbilityTarget => abilityTarget; public TM_GolemAbility ActiveAbility => activeAbility; - public Need_GolemEnergy Energy => Pawn.needs.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; + public Need_GolemEnergy Energy => Pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; public bool HasEnergyForAbilities => Energy.CurEnergyPercent > minEnergyPctForAbilities; public ThingOwner GetDirectlyHeldThings() @@ -399,7 +399,7 @@ protected virtual void ApplyNeeds() { if (Pawn.needs != null) { - Need_GolemEnergy need_ge = Pawn.needs.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; + Need_GolemEnergy need_ge = Pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; if (need_ge != null) { CompGolemEnergyHandler cgeh = InnerWorkstation.Energy; @@ -857,7 +857,7 @@ public void StartAbility(TM_GolemAbility ability, LocalTargetInfo target) public void DecreaseNeed(NeedDef need, float amount) { - Need_GolemEnergy n = Pawn.needs.TryGetNeed(need) as Need_GolemEnergy; + Need_GolemEnergy n = Pawn.needs?.TryGetNeed(need) as Need_GolemEnergy; if(n != null) { n.CurLevel -= (n.ActualNeedCost(amount) * EnergyCostModifier); diff --git a/RimWorldOfMagic/RimWorldOfMagic/Golems/GolemAbilityWorker.cs b/RimWorldOfMagic/RimWorldOfMagic/Golems/GolemAbilityWorker.cs index e6e6de2b..1fb3e44f 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Golems/GolemAbilityWorker.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Golems/GolemAbilityWorker.cs @@ -131,8 +131,8 @@ public static bool CanUseAbility(Pawn p, TM_GolemAbilityDef ability) float eff = 1f; if (p.needs != null) { - Need n = p.needs.TryGetNeed(ability.requiredNeed); - Need_GolemEnergy n_ge = p.needs.TryGetNeed(ability.requiredNeed) as Need_GolemEnergy; + Need n = p.needs?.TryGetNeed(ability.requiredNeed); + Need_GolemEnergy n_ge = p.needs?.TryGetNeed(ability.requiredNeed) as Need_GolemEnergy; if(n_ge != null) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_DraftedGolemRangedAttack.cs b/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_DraftedGolemRangedAttack.cs index d6320149..be9bb7fb 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_DraftedGolemRangedAttack.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_DraftedGolemRangedAttack.cs @@ -25,7 +25,7 @@ protected override Job TryGiveJob(Pawn pawn) if (pg != null && pg.Drafted && !pg.rangedToggle) { CompGolem Golem = pawn.TryGetComp(); - Need_GolemEnergy energy = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; + Need_GolemEnergy energy = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; Thing threat = Golem.ActiveThreat; if (threat != null) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_GolemGetEnergy.cs b/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_GolemGetEnergy.cs index cbf6b5c5..eea6eca7 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_GolemGetEnergy.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_GolemGetEnergy.cs @@ -27,7 +27,7 @@ public override ThinkNode DeepCopy(bool resolve = true) public override float GetPriority(Pawn pawn) { - Need_GolemEnergy energy = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; + Need_GolemEnergy energy = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; if (energy == null) { return 0f; @@ -66,7 +66,7 @@ public override float GetPriority(Pawn pawn) protected override Job TryGiveJob(Pawn pawn) { CompGolem Golem = pawn.TryGetComp(); - Need_GolemEnergy energy = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; + Need_GolemEnergy energy = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; if (energy == null || Golem == null || energy.CurLevelPercentage >= Golem.energyPctShouldRest || energy.CurLevelPercentage > maxLevelPercentage) { return null; diff --git a/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_GolemJobs.cs b/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_GolemJobs.cs index ee748bd9..adfeb551 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_GolemJobs.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Golems/JobGiver_GolemJobs.cs @@ -29,7 +29,7 @@ public override ThinkNode DeepCopy(bool resolve = true) public override float GetPriority(Pawn pawn) { jobAbilities = GolemAbilityWorker.JobAbilities(pawn); - Need_GolemEnergy energy = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; + Need_GolemEnergy energy = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; if (jobAbilities == null) { return 0f; @@ -53,7 +53,7 @@ public override float GetPriority(Pawn pawn) protected override Job TryGiveJob(Pawn pawn) { CompGolem Golem = pawn.TryGetComp(); - Need_GolemEnergy energy = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; + Need_GolemEnergy energy = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy) as Need_GolemEnergy; if(Golem.shouldDespawn) { return null; diff --git a/RimWorldOfMagic/RimWorldOfMagic/Golems/PawnColumnWorker_GolemNeeds.cs b/RimWorldOfMagic/RimWorldOfMagic/Golems/PawnColumnWorker_GolemNeeds.cs index e3661a0e..a087353c 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Golems/PawnColumnWorker_GolemNeeds.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Golems/PawnColumnWorker_GolemNeeds.cs @@ -50,7 +50,7 @@ public override void DoCell(Rect rect, Pawn pawn, PawnTable table) if (spawned) { - Need need = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy); + Need need = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_GolemEnergy); if (need == null) return; fillPct = need.CurLevelPercentage; diff --git a/RimWorldOfMagic/RimWorldOfMagic/HarmonyPatches.cs b/RimWorldOfMagic/RimWorldOfMagic/HarmonyPatches.cs index 14698e4f..87534235 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HarmonyPatches.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HarmonyPatches.cs @@ -556,9 +556,9 @@ public static bool Get_UndeadIsCharging(Pawn p, ref bool __result) { try { - if (p.needs.energy != null) + if (p.needs?.energy != null) { - __result = p.needs.energy.currentCharger != null; + __result = p.needs?.energy.currentCharger != null; } __result = false; } @@ -655,7 +655,7 @@ private static bool Prefix(Pawn __instance, DamageInfo? dinfo, Hediff exactCulpr Pawn s = dinfo.Value.Instigator as Pawn; if (s.needs != null) { - Need_Spirit ns = s.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit ns = s.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if (ns != null) { TM_MoteMaker.ThrowGenericMote(TorannMagicDefOf.Mote_Ghost, __instance.DrawPos, s.Map, .8f, .25f, 0f, .25f, 0, Rand.Range(2f, 3f), 0, 0); @@ -680,7 +680,7 @@ private static void Postfix(float amount, JoyKindDef joyKind, Pawn ___pawn) { if(TM_Calc.IsPossessedByOrIsSpirit(___pawn)) { - Need_Spirit ns = ___pawn.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit ns = ___pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if(ns != null) { int verVal = 0; @@ -1612,7 +1612,7 @@ public static void Postfix(Building_MusicalInstrument __instance, Pawn ___curren { compListener.Mana.CurLevel += .0075f; } - if (p.needs != null && p.needs.joy != null) + if (p.needs != null && p.needs?.joy != null) { p.needs.joy.CurLevel += .01f; } @@ -4665,7 +4665,7 @@ public static bool Prefix(Pawn __instance, ref DamageInfo dinfo, out bool absorb if (__instance.def == TorannMagicDefOf.TM_SpiritTD) { float amt = dinfo.Amount * .25f; - Need nd = __instance.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND); + Need nd = __instance.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND); if (nd != null) { nd.CurLevel -= amt; @@ -5072,7 +5072,7 @@ public static void Postfix(Pawn_HealthTracker __instance, ref DamageInfo dinfo, //drains spirit energy if(instigator != null && instigator.needs != null && TM_Calc.IsPossessedBySpirit(instigator) && !TM_Calc.IsRobotPawn(___pawn) && TM_Calc.IsUsingMelee(instigator) && (instigator.Position - ___pawn.Position).LengthHorizontal <= 1.8f) { - Need_Spirit ns = instigator.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit ns = instigator.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if(ns != null) { float rnd = Rand.Range(.05f, .08f); diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BloodForBlood.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BloodForBlood.cs index 8e11ce03..e30c9526 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BloodForBlood.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BloodForBlood.cs @@ -96,7 +96,7 @@ public override void CompPostTick(ref float severityAdjustment) if (Rand.Chance(.4f) && !this.Pawn.DestroyedOrNull() && !this.Pawn.Dead && !this.linkedPawn.DestroyedOrNull() && !this.linkedPawn.Dead) { - List needs = linkedPawn.needs.AllNeeds; + List needs = linkedPawn.needs?.AllNeeds; for (int n = 0; n < needs.Count; n++) { Need need = needs[n]; @@ -105,7 +105,7 @@ public override void CompPostTick(ref float severityAdjustment) need.CurLevel++; } } - needs = this.Pawn.needs.AllNeeds; + needs = this.Pawn.needs?.AllNeeds; for (int n = 0; n < needs.Count; n++) { Need need = needs[n]; diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BrandingEmotion.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BrandingEmotion.cs index 48edc39e..72ecee66 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BrandingEmotion.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BrandingEmotion.cs @@ -21,7 +21,7 @@ public override void DoSigilAction(bool surging = false, bool draining = false) this.Pawn.MentalState.RecoverFromState(); } - if(this.Pawn.needs != null && this.Pawn.needs.mood != null) + if(this.Pawn.needs != null && this.Pawn.needs?.mood != null) { this.Pawn.needs.mood.CurLevel += sev * .025f; } diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BrandingVitality.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BrandingVitality.cs index dcd4a254..5461c6c4 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BrandingVitality.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_BrandingVitality.cs @@ -22,7 +22,7 @@ public override void DoSigilAction(bool surging = false, bool draining = false) TM_Action.DoAction_HealPawn(this.Pawn, this.Pawn, healCount, healAmt); float restAmt = this.parent.Severity * .01f * healCount; - if(this.Pawn.needs != null && this.Pawn.needs.rest != null) + if(this.Pawn.needs != null && this.Pawn.needs?.rest != null) { this.Pawn.needs.rest.CurLevel += restAmt; } diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Empath.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Empath.cs index a74ae5de..33ff02d1 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Empath.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Empath.cs @@ -47,7 +47,7 @@ private void Initialize() { bool spawned = base.Pawn.Spawned; CompAbilityUserMagic comp = this.Pawn.GetCompAbilityUserMagic(); - if (spawned && comp != null && comp.IsMagicUser && this.Pawn.needs.mood != null) + if (spawned && comp != null && comp.IsMagicUser && this.Pawn.needs?.mood != null) { pwrVal = comp.MagicData.GetSkill_Power(TorannMagicDefOf.TM_Empathy).level; verVal = comp.MagicData.GetSkill_Versatility(TorannMagicDefOf.TM_Empathy).level; @@ -75,22 +75,22 @@ public override void CompPostTick(ref float severityAdjustment) EmotionalInspiration(base.Pawn); List pList = (from mp in Pawn.Map.mapPawns.AllPawnsSpawned - where (mp != Pawn && !mp.Dead && (mp.Position - Pawn.Position).LengthHorizontal <= radius && mp.RaceProps != null && mp.RaceProps.IsFlesh && mp.RaceProps.Humanlike && mp.needs != null && mp.needs.mood != null) + where (mp != Pawn && !mp.Dead && (mp.Position - Pawn.Position).LengthHorizontal <= radius && mp.RaceProps != null && mp.RaceProps.IsFlesh && mp.RaceProps.Humanlike && mp.needs != null && mp.needs?.mood != null) select mp).ToList(); if (pList != null && pList.Count > 0) { Pawn p = pList.RandomElement(); - if (Rand.Chance(TM_Calc.GetSpellSuccessChance(Pawn, p, true)) && this.Pawn.needs.mood != null && this.Pawn.needs.mood.thoughts != null && this.Pawn.needs.mood.thoughts.memories != null && this.Pawn.needs.mood.thoughts.memories.Memories != null && - p.needs.mood.thoughts != null && p.needs.mood.thoughts.memories != null && p.needs.mood.thoughts.memories.Memories != null) + if (Rand.Chance(TM_Calc.GetSpellSuccessChance(Pawn, p, true)) && this.Pawn.needs?.mood != null && this.Pawn.needs?.mood?.thoughts != null && this.Pawn.needs?.mood?.thoughts.memories != null && this.Pawn.needs?.mood?.thoughts.memories.Memories != null && + p.needs?.mood?.thoughts != null && p.needs?.mood?.thoughts.memories != null && p.needs?.mood?.thoughts.memories.Memories != null) { if (this.Pawn.InMentalState) { - p.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_NegativeEmpathyTD, Pawn); + p.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_NegativeEmpathyTD, Pawn); } else { - List tms = (from t in this.Pawn.needs.mood.thoughts.memories.Memories + List tms = (from t in this.Pawn.needs?.mood?.thoughts.memories.Memories where (t.def.stages != null && t.MoodOffset() != 0 && t.def != TorannMagicDefOf.TM_PositiveEmpathyTD && t.def != TorannMagicDefOf.TM_NegativeEmpathyTD) select t).ToList(); if (tms != null && tms.Count > 0) @@ -100,16 +100,16 @@ public override void CompPostTick(ref float severityAdjustment) { if (tm.MoodOffset() < 0 && Rand.Chance(1f - (.05f * pwrVal))) { - p.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_NegativeEmpathyTD); + p.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_NegativeEmpathyTD); } else { - p.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_PositiveEmpathyTD); + p.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_PositiveEmpathyTD); } } } - tms = (from t in p.needs.mood.thoughts.memories.Memories + tms = (from t in p.needs?.mood?.thoughts.memories.Memories where (t.def.stages != null && t.MoodOffset() != 0 && t.def != TorannMagicDefOf.TM_PositiveEmpathyTD && t.def != TorannMagicDefOf.TM_NegativeEmpathyTD) select t).ToList(); @@ -120,11 +120,11 @@ public override void CompPostTick(ref float severityAdjustment) { if (tm.MoodOffset() < 0 && Rand.Chance(1f - (.05f * pwrVal))) { - this.Pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_NegativeEmpathyTD); + this.Pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_NegativeEmpathyTD); } else { - this.Pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_PositiveEmpathyTD); + this.Pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_PositiveEmpathyTD); } } } diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Enrage.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Enrage.cs index 19d1b8f8..c2ad4637 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Enrage.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Enrage.cs @@ -86,9 +86,9 @@ public override void CompPostTick(ref float severityAdjustment) lastDamageDealt = currentDamage; } - for (int i = 0; i < this.Pawn.needs.AllNeeds.Count; i++) + for (int i = 0; i < this.Pawn.needs?.AllNeeds.Count; i++) { - Need n = this.Pawn.needs.AllNeeds[i]; + Need n = this.Pawn.needs?.AllNeeds[i]; if(consumeJoy && n.def == TorannMagicDefOf.Joy && n.CurLevel >= tickCost) { n.CurLevel -= tickCost; @@ -131,7 +131,7 @@ public override void CompPostTick(ref float severityAdjustment) public override void CompPostPostRemoved() { - Need n = this.Pawn.needs.mood; + Need n = this.Pawn.needs?.mood; if(n != null && n.CurLevel < .4f) { n.CurLevel = .4f; diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_HarvestPassion.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_HarvestPassion.cs index 6b9eb0a4..b929e63d 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_HarvestPassion.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_HarvestPassion.cs @@ -130,16 +130,16 @@ public override void CompPostTick(ref float severityAdjustment) DrawEffects(); if (Find.TickManager.TicksGame % 48 == 0) { - if (caster.needs.joy != null && caster.needs.joy.CurLevel > .01f) + if (caster.needs?.joy != null && caster.needs?.joy.CurLevel > .01f) { - if (Pawn.needs.joy != null) + if (Pawn.needs?.joy != null) { float joyDrainPawn = Rand.Range(.04f, .1f) + (.01f * effVal); float joyDrainCaster = Rand.Range(.03f, .06f) - (.01f * effVal); - Need np = Pawn.needs.joy; + Need np = Pawn.needs?.joy; np.CurLevel = Mathf.Clamp01(np.CurLevel - joyDrainPawn); - Need nc = caster.needs.joy; + Need nc = caster.needs?.joy; nc.CurLevel = Mathf.Clamp01(nc.CurLevel - joyDrainCaster); if (np.CurLevel <= .01f && Rand.Chance(.25f + (.05f * pwrVal))) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Lich.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Lich.cs index 87422f3d..994e497c 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Lich.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Lich.cs @@ -72,7 +72,7 @@ public override void CompPostTick(ref float severityAdjustment) if (Find.TickManager.TicksGame % 600 == 0) { - List needs = base.Pawn.needs.AllNeeds; + List needs = base.Pawn.needs?.AllNeeds; for (int i = 0; i < needs.Count; i++) { if(needs[i].def.defName != "Joy" && diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_ReverseTime.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_ReverseTime.cs index a9d51b9a..b13c9026 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_ReverseTime.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_ReverseTime.cs @@ -234,9 +234,9 @@ private void ReverseHediff(Pawn pawn, int ticks) } else { - if (this.Pawn.needs != null && this.Pawn.needs.mood != null && this.Pawn.needs.mood.thoughts != null && this.Pawn.needs.mood.thoughts.memories != null) + if (this.Pawn.needs != null && this.Pawn.needs?.mood != null && this.Pawn.needs?.mood?.thoughts != null && this.Pawn.needs?.mood?.thoughts.memories != null) { - this.Pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_PhantomLimb); + this.Pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_PhantomLimb); } } } diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SpiritPossession.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SpiritPossession.cs index 26bcfe30..359e5d19 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SpiritPossession.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SpiritPossession.cs @@ -160,7 +160,7 @@ private void UpdateSpiritLevel() public void UpdateSpiritEnergy() { Need nds = SpiritPawn_Need; - Need ndp = this.Pawn.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND); + Need ndp = this.Pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND); if (nds != null && ndp != null) { nds.CurLevel = ndp.CurLevel; @@ -168,7 +168,7 @@ public void UpdateSpiritEnergy() } public Hediff_Possessor SpiritPawn_Hediff => SpiritPawn.health.hediffSet.GetFirstHediffOfDef(TorannMagicDefOf.TM_SpiritPossessorHD) as Hediff_Possessor; - public Need_Spirit SpiritPawn_Need => SpiritPawn.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + public Need_Spirit SpiritPawn_Need => SpiritPawn.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; public override void CompExposeData() { diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SupressiveAura.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SupressiveAura.cs index 8797206e..dd4396b9 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SupressiveAura.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SupressiveAura.cs @@ -72,7 +72,7 @@ public override void CompPostTick(ref float severityAdjustment) { if(Find.TickManager.TicksGame % this.burdenFrequency == 0) { - this.Pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_EmotionalWeightTD); + this.Pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_EmotionalWeightTD); } if (Find.TickManager.TicksGame % this.eventFrequency == 0) { @@ -90,11 +90,11 @@ public override void CompPostTick(ref float severityAdjustment) HealthUtility.AdjustSeverity(p, TorannMagicDefOf.TM_EmotionSuppressionHD, .5f + (.1f * pwrVal)); if(p.needs != null) { - if (p.needs.joy != null) + if (p.needs?.joy != null) { p.needs.joy.CurLevel += (.01f * verVal); } - if(p.needs.comfort != null) + if(p.needs?.comfort != null) { p.needs.comfort.CurLevel += (.01f * verVal); } diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SymbiosisCaster.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SymbiosisCaster.cs index d3f6308b..154e3acd 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SymbiosisCaster.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SymbiosisCaster.cs @@ -74,9 +74,9 @@ public override void CompPostTick(ref float severityAdjustment) this.shouldRemove = true; } - if (this.Pawn.needs != null && this.Pawn.needs.mood != null) + if (this.Pawn.needs != null && this.Pawn.needs?.mood != null) { - if (this.Pawn.needs.mood.CurLevel < .01f) + if (this.Pawn.needs?.mood?.CurLevel < .01f) { this.shouldRemove = true; RemoveHostHediff(); diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SymbiosisHost.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SymbiosisHost.cs index abd7caf2..a2ddbef6 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SymbiosisHost.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_SymbiosisHost.cs @@ -86,19 +86,19 @@ public override void CompPostTick(ref float severityAdjustment) float effVal = TM_Calc.GetSkillPowerLevel(symbiote, TorannMagicDefOf.TM_Symbiosis); if(base.Pawn.needs != null) { - if (base.Pawn.needs.mood != null) + if (base.Pawn.needs?.mood != null) { base.Pawn.needs.mood.CurLevel += (.001f * effVal); } - if(base.Pawn.needs.rest != null) + if(base.Pawn.needs?.rest != null) { base.Pawn.needs.rest.CurLevel += (.001f * effVal); } - if(base.Pawn.needs.food != null) + if(base.Pawn.needs?.food != null) { base.Pawn.needs.food.CurLevel += (.001f * effVal); } - if(base.Pawn.needs.joy != null) + if(base.Pawn.needs?.joy != null) { base.Pawn.needs.joy.CurLevel += (.001f * effVal); } diff --git a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Undead.cs b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Undead.cs index b9bc7ad2..e5427ea7 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Undead.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/HediffComp_Undead.cs @@ -174,22 +174,22 @@ public override void CompPostTick(ref float severityAdjustment) } } - //if (base.Pawn.needs.food != null) + //if (base.Pawn.needs?.food != null) //{ - // base.Pawn.needs.food.CurLevel = base.Pawn.needs.food.MaxLevel; + // base.Pawn.needs?.food.CurLevel = base.Pawn.needs?.food.MaxLevel; //} - //if (base.Pawn.needs.rest != null) + //if (base.Pawn.needs?.rest != null) //{ - // base.Pawn.needs.rest.CurLevel = base.Pawn.needs.rest.MaxLevel; + // base.Pawn.needs?.rest.CurLevel = base.Pawn.needs?.rest.MaxLevel; //} //if (base.Pawn.IsColonist) //{ - // base.Pawn.needs.beauty.CurLevel = .5f; - // base.Pawn.needs.comfort.CurLevel = .5f; - // base.Pawn.needs.joy.CurLevel = .5f; - // base.Pawn.needs.mood.CurLevel = .5f; - // base.Pawn.needs.space.CurLevel = .5f; + // base.Pawn.needs?.beauty.CurLevel = .5f; + // base.Pawn.needs?.comfort.CurLevel = .5f; + // base.Pawn.needs?.joy.CurLevel = .5f; + // base.Pawn.needs?.mood?.CurLevel = .5f; + // base.Pawn.needs?.space.CurLevel = .5f; //} Hediff_Injury injuryToHeal = Pawn.health.hediffSet.hediffs diff --git a/RimWorldOfMagic/RimWorldOfMagic/Ideology/PreceptComp_SelfTookMemoryThought_KilledMage.cs b/RimWorldOfMagic/RimWorldOfMagic/Ideology/PreceptComp_SelfTookMemoryThought_KilledMage.cs index e082eeb3..d7280c13 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Ideology/PreceptComp_SelfTookMemoryThought_KilledMage.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Ideology/PreceptComp_SelfTookMemoryThought_KilledMage.cs @@ -17,14 +17,14 @@ public override void Notify_MemberTookAction(HistoryEvent ev, Precept precept, b return; } Pawn arg = ev.args.GetArg(HistoryEventArgsNames.Doer); - if (arg.needs != null && arg.needs.mood != null && (!onlyForNonSlaves || !arg.IsSlave) && (thought.minExpectationForNegativeThought == null || ExpectationsUtility.CurrentExpectationFor(arg).order >= thought.minExpectationForNegativeThought.order)) + if (arg.needs != null && arg.needs?.mood != null && (!onlyForNonSlaves || !arg.IsSlave) && (thought.minExpectationForNegativeThought == null || ExpectationsUtility.CurrentExpectationFor(arg).order >= thought.minExpectationForNegativeThought.order)) { Thought_Memory thought_Memory = ThoughtMaker.MakeThought(thought, precept); if (TM_Calc.IsMagicUser(arg)) { thought_Memory.SetForcedStage(1); } - arg.needs.mood.thoughts.memories.TryGainMemory(thought_Memory); + arg.needs?.mood?.thoughts.memories.TryGainMemory(thought_Memory); } } } diff --git a/RimWorldOfMagic/RimWorldOfMagic/Ideology/TM_RitualOutcomeEffectWorker_BestowMagic.cs b/RimWorldOfMagic/RimWorldOfMagic/Ideology/TM_RitualOutcomeEffectWorker_BestowMagic.cs index 08b5cd77..5e3ecce1 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Ideology/TM_RitualOutcomeEffectWorker_BestowMagic.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Ideology/TM_RitualOutcomeEffectWorker_BestowMagic.cs @@ -34,7 +34,7 @@ public override void Apply(float progress, Dictionary totalPresence, { if (key.IsSlave) { - Need_Suppression need_Suppression = key.needs.TryGetNeed(); + Need_Suppression need_Suppression = key.needs?.TryGetNeed(); if (need_Suppression != null) { need_Suppression.CurLevel = 1f; diff --git a/RimWorldOfMagic/RimWorldOfMagic/Ideology/TM_RitualOutcomeEffectWorker_SeverMagic.cs b/RimWorldOfMagic/RimWorldOfMagic/Ideology/TM_RitualOutcomeEffectWorker_SeverMagic.cs index 148f8875..6c11a307 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Ideology/TM_RitualOutcomeEffectWorker_SeverMagic.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Ideology/TM_RitualOutcomeEffectWorker_SeverMagic.cs @@ -34,7 +34,7 @@ public override void Apply(float progress, Dictionary totalPresence, { if (key.IsSlave) { - Need_Suppression need_Suppression = key.needs.TryGetNeed(); + Need_Suppression need_Suppression = key.needs?.TryGetNeed(); if (need_Suppression != null) { need_Suppression.CurLevel = 1f; @@ -114,15 +114,15 @@ public override void Apply(float progress, Dictionary totalPresence, List remainingPawns = colonyPawns.Except(ritualPawns).ToList(); foreach (Pawn p in remainingPawns) { - if (p.needs.mood?.thoughts?.memories != null) + if (p.needs?.mood?.thoughts?.memories != null) { if (flagApprove && p.Ideo.HasPrecept(TorannMagicDefOf.TM_Mages_Approve)) { - p.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_SeverMagic_ForApproveTD, null); + p.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_SeverMagic_ForApproveTD, null); } else if (flagVenerated && p.Ideo.HasPrecept(TorannMagicDefOf.TM_Mages_Venerated)) { - p.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_SeverMagic_ForVeneratedTD, null); + p.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_SeverMagic_ForVeneratedTD, null); } } } diff --git a/RimWorldOfMagic/RimWorldOfMagic/Ideology/ThoughtWorker_Precept_PerformedSeverMagic_Social.cs b/RimWorldOfMagic/RimWorldOfMagic/Ideology/ThoughtWorker_Precept_PerformedSeverMagic_Social.cs index 9093c319..c8216ea9 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Ideology/ThoughtWorker_Precept_PerformedSeverMagic_Social.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Ideology/ThoughtWorker_Precept_PerformedSeverMagic_Social.cs @@ -14,12 +14,12 @@ protected override ThoughtState ShouldHaveThought(Pawn pawn, Pawn otherPawn) { if (pawn.needs?.mood?.thoughts?.memories != null) { - Thought_Memory tm_ven = pawn.needs.mood.thoughts.memories.GetFirstMemoryOfDef(TorannMagicDefOf.TM_SeverMagic_ForVeneratedTD); + Thought_Memory tm_ven = pawn.needs?.mood?.thoughts.memories.GetFirstMemoryOfDef(TorannMagicDefOf.TM_SeverMagic_ForVeneratedTD); if (tm_ven != null && otherPawn.Ideo.GetRole(otherPawn)?.def == TorannMagicDefOf.TM_IdeoRole_VoidSeeker) { return ThoughtState.ActiveAtStage(1); } - Thought_Memory tm_apr = pawn.needs.mood.thoughts.memories.GetFirstMemoryOfDef(TorannMagicDefOf.TM_SeverMagic_ForApproveTD); + Thought_Memory tm_apr = pawn.needs?.mood?.thoughts.memories.GetFirstMemoryOfDef(TorannMagicDefOf.TM_SeverMagic_ForApproveTD); if (tm_apr != null && otherPawn.Ideo.GetRole(otherPawn)?.def == TorannMagicDefOf.TM_IdeoRole_VoidSeeker) { return ThoughtState.ActiveAtStage(0); diff --git a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Command.cs b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Command.cs index a68a705c..4997ebf4 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Command.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Command.cs @@ -145,9 +145,9 @@ private void AssignXP() int xpGain = Mathf.RoundToInt(xpBase * comp.xpGain); MoteMaker.ThrowText(pawn.DrawPos, pawn.MapHeld, "XP +" + xpGain, -1f); comp.MightUserXP += xpGain; - if (this.pawn.needs.joy != null) + if (this.pawn.needs?.joy != null) { - this.pawn.needs.joy.GainJoy(.4f, TorannMagicDefOf.Social); + this.pawn.needs?.joy.GainJoy(.4f, TorannMagicDefOf.Social); } if (this.pawn.skills != null) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_GotoAndCast.cs b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_GotoAndCast.cs index b087980d..2770735d 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_GotoAndCast.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_GotoAndCast.cs @@ -128,9 +128,9 @@ private void AssignXP() int xpGain = Mathf.RoundToInt(xpBase * comp.xpGain); MoteMaker.ThrowText(pawn.DrawPos, pawn.MapHeld, "XP +" + xpGain, -1f); comp.MightUserXP += xpGain; - if (this.pawn.needs.joy != null) + if (this.pawn.needs?.joy != null) { - this.pawn.needs.joy.GainJoy(.4f, TorannMagicDefOf.Social); + this.pawn.needs?.joy.GainJoy(.4f, TorannMagicDefOf.Social); } if (this.pawn.skills != null) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Meditate.cs b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Meditate.cs index 5ec30e60..e67f95de 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Meditate.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Meditate.cs @@ -134,7 +134,14 @@ protected override IEnumerable MakeNewToils() } else if(BreakRiskAlertUtility.PawnsAtRiskMinor.Contains(this.pawn) || BreakRiskAlertUtility.PawnsAtRiskMajor.Contains(this.pawn) || BreakRiskAlertUtility.PawnsAtRiskExtreme.Contains(this.pawn)) { - this.pawn.needs.mood.CurLevel += .004f * chiMultiplier * (1 + (.1f * verVal)); + try + { + this.pawn.needs.mood.CurLevel += .004f * chiMultiplier * (1 + (.1f * verVal)); + } + catch (NullReferenceException ex) + { + //ex + } chiHD.Severity -= 1f; comp.MightUserXP += (int)(2 * chiMultiplier); } diff --git a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_SleepNow.cs b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_SleepNow.cs index 03c785a7..83c69b0c 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_SleepNow.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_SleepNow.cs @@ -57,22 +57,22 @@ protected override IEnumerable MakeNewToils() actor.GainComfortFromCellIfPossible(); if (!curDriver.asleep) { - if (actor.needs.rest != null && actor.needs.rest.CurLevel < .99f * WakeThreshold(actor)) + if (actor.needs?.rest != null && actor.needs?.rest.CurLevel < .99f * WakeThreshold(actor)) { curDriver.asleep = true; } } - else if ((actor.needs.rest == null || actor.needs.rest.CurLevel >= WakeThreshold(actor))) + else if ((actor.needs?.rest == null || actor.needs?.rest.CurLevel >= WakeThreshold(actor))) { actor.mindState.priorityWork.ClearPrioritizedWorkAndJobQueue(); this.EndJobWith(JobCondition.Incompletable); } - if (curDriver.asleep && actor.needs.rest != null) + if (curDriver.asleep && actor.needs?.rest != null) { num = 0.7f * num + 0.3f * num; //talk about convoluted calculations... - actor.needs.rest.TickResting(num); - if(actor.needs.rest.CurLevel >= .99f * WakeThreshold(actor)) + actor.needs?.rest.TickResting(num); + if(actor.needs?.rest.CurLevel >= .99f * WakeThreshold(actor)) { curDriver.asleep = false; actor.mindState.priorityWork.ClearPrioritizedWorkAndJobQueue(); @@ -115,32 +115,32 @@ protected override IEnumerable MakeNewToils() private static void ApplyBedThoughts(Pawn actor) { - if (actor.needs.mood == null) + if (actor.needs?.mood == null) { return; } Building_Bed building_Bed = actor.CurrentBed(); - actor.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptInBedroom); - actor.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptInBarracks); - actor.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptOutside); - actor.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptOnGround); - actor.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptInCold); - actor.needs.mood.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptInHeat); + actor.needs?.mood?.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptInBedroom); + actor.needs?.mood?.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptInBarracks); + actor.needs?.mood?.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptOutside); + actor.needs?.mood?.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptOnGround); + actor.needs?.mood?.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptInCold); + actor.needs?.mood?.thoughts.memories.RemoveMemoriesOfDef(ThoughtDefOf.SleptInHeat); if (actor.GetRoom(RegionType.Set_Passable).PsychologicallyOutdoors) { - actor.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.SleptOutside, null); + actor.needs?.mood?.thoughts.memories.TryGainMemory(ThoughtDefOf.SleptOutside, null); } if (building_Bed == null || building_Bed.CostListAdjusted().Count == 0) { - actor.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.SleptOnGround, null); + actor.needs?.mood?.thoughts.memories.TryGainMemory(ThoughtDefOf.SleptOnGround, null); } if (actor.AmbientTemperature < actor.def.GetStatValueAbstract(StatDefOf.ComfyTemperatureMin, null)) { - actor.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.SleptInCold, null); + actor.needs?.mood?.thoughts.memories.TryGainMemory(ThoughtDefOf.SleptInCold, null); } if (actor.AmbientTemperature > actor.def.GetStatValueAbstract(StatDefOf.ComfyTemperatureMax, null)) { - actor.needs.mood.thoughts.memories.TryGainMemory(ThoughtDefOf.SleptInHeat, null); + actor.needs?.mood?.thoughts.memories.TryGainMemory(ThoughtDefOf.SleptInHeat, null); } if (building_Bed != null && building_Bed == actor.ownership.OwnedBed && !building_Bed.ForPrisoners && !actor.story.traits.HasTrait(TraitDefOf.Ascetic)) { @@ -158,7 +158,7 @@ private static void ApplyBedThoughts(Pawn actor) int scoreStageIndex = RoomStatDefOf.Impressiveness.GetScoreStageIndex(building_Bed.GetRoom(RegionType.Set_Passable).GetStat(RoomStatDefOf.Impressiveness)); if (thoughtDef.stages[scoreStageIndex] != null) { - actor.needs.mood.thoughts.memories.TryGainMemory(ThoughtMaker.MakeThought(thoughtDef, scoreStageIndex), null); + actor.needs?.mood?.thoughts.memories.TryGainMemory(ThoughtMaker.MakeThought(thoughtDef, scoreStageIndex), null); } } } diff --git a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_SpiritDrain.cs b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_SpiritDrain.cs index 48bfaaed..2b31cf74 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_SpiritDrain.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_SpiritDrain.cs @@ -29,7 +29,7 @@ protected override IEnumerable MakeNewToils() CompAbilityUserMagic comp = this.pawn.GetCompAbilityUserMagic(); Toil discordance = new Toil(); Pawn target = this.TargetThingA as Pawn; - Need_Spirit spiritNeed = this.pawn.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit spiritNeed = this.pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; int effVal = TM_Calc.GetSkillEfficiencyLevel(this.pawn, TorannMagicDefOf.TM_SpiritDrain); int pwrVal = TM_Calc.GetSkillPowerLevel(this.pawn, TorannMagicDefOf.TM_SpiritDrain); int verVal = TM_Calc.GetSkillVersatilityLevel(this.pawn, TorannMagicDefOf.TM_SpiritDrain); diff --git a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Teach.cs b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Teach.cs index 537aff47..a672ac4c 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Teach.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/JobDriver_Teach.cs @@ -275,15 +275,15 @@ private void AssignMagicXP(Pawn student) xpGain = Mathf.RoundToInt(xpGain * studentComp.xpGain); MoteMaker.ThrowText(student.DrawPos, student.MapHeld, "XP +" + xpGain, -1f); studentComp.MagicUserXP += xpGain; - if (this.pawn.needs.joy != null) + if (this.pawn.needs?.joy != null) { - this.pawn.needs.joy.GainJoy(.4f, TorannMagicDefOf.Gaming_Cerebral); - this.pawn.needs.joy.GainJoy(.2f, TorannMagicDefOf.Social); + this.pawn.needs?.joy.GainJoy(.4f, TorannMagicDefOf.Gaming_Cerebral); + this.pawn.needs?.joy.GainJoy(.2f, TorannMagicDefOf.Social); } - if (student.needs.joy != null) + if (student.needs?.joy != null) { - student.needs.joy.GainJoy(.4f, TorannMagicDefOf.Gaming_Cerebral); - student.needs.joy.GainJoy(.2f, TorannMagicDefOf.Social); + student.needs?.joy.GainJoy(.4f, TorannMagicDefOf.Gaming_Cerebral); + student.needs?.joy.GainJoy(.2f, TorannMagicDefOf.Social); } } catch(NullReferenceException ex) @@ -317,15 +317,15 @@ private void AssignMightXP(Pawn student) xpGain = Mathf.RoundToInt(xpGain * studentComp.xpGain); MoteMaker.ThrowText(student.DrawPos, student.MapHeld, "XP +" + xpGain, -1f); studentComp.MightUserXP += xpGain; - if (this.pawn.needs.joy != null) + if (this.pawn.needs?.joy != null) { - this.pawn.needs.joy.GainJoy(.4f, TorannMagicDefOf.Gaming_Dexterity); - this.pawn.needs.joy.GainJoy(.2f, TorannMagicDefOf.Social); + this.pawn.needs?.joy.GainJoy(.4f, TorannMagicDefOf.Gaming_Dexterity); + this.pawn.needs?.joy.GainJoy(.2f, TorannMagicDefOf.Social); } - if (student.needs.joy != null) + if (student.needs?.joy != null) { - student.needs.joy.GainJoy(.4f, TorannMagicDefOf.Gaming_Dexterity); - student.needs.joy.GainJoy(.2f, TorannMagicDefOf.Social); + student.needs?.joy.GainJoy(.4f, TorannMagicDefOf.Gaming_Dexterity); + student.needs?.joy.GainJoy(.2f, TorannMagicDefOf.Social); } } catch (NullReferenceException ex) diff --git a/RimWorldOfMagic/RimWorldOfMagic/JobGiver_MonkMeditate.cs b/RimWorldOfMagic/RimWorldOfMagic/JobGiver_MonkMeditate.cs index 5ce4a466..a8e5c9c4 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/JobGiver_MonkMeditate.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/JobGiver_MonkMeditate.cs @@ -91,7 +91,7 @@ protected override Job TryGiveJob(Pawn pawn) { return null; } - Need_Joy curJoy = pawn.needs.joy; + Need_Joy curJoy = pawn.needs?.joy; if(curJoy == null) { return null; diff --git a/RimWorldOfMagic/RimWorldOfMagic/MagicAbility.cs b/RimWorldOfMagic/RimWorldOfMagic/MagicAbility.cs index 63036774..04c26310 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/MagicAbility.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/MagicAbility.cs @@ -179,9 +179,9 @@ public override void PostAbilityAttempt() //commented out in CompAbilityUserMag } if (magicDef.requiredNeed != null) { - if (this.Pawn.needs != null && this.Pawn.needs.AllNeeds != null && this.Pawn.needs.TryGetNeed(this.magicDef.requiredNeed) != null) + if (this.Pawn.needs != null && this.Pawn.needs?.AllNeeds != null && this.Pawn.needs?.TryGetNeed(this.magicDef.requiredNeed) != null) { - Need nd = this.Pawn.needs.TryGetNeed(this.magicDef.requiredNeed); + Need nd = this.Pawn.needs?.TryGetNeed(this.magicDef.requiredNeed); nd.CurLevel -= ActualNeedCost(magicDef, this.MagicUser); this.MagicUser.MagicUserXP += Mathf.Clamp((int)((magicDef.needXPFactor * this.MagicUser.xpGain * ModOptions.Settings.Instance.xpMultiplier) * magicDef.needCost),0,9999); } @@ -466,9 +466,9 @@ public override bool CanCastPowerCheck(AbilityContext context, out string reason bool flagNeed = magicDef.requiredNeed != null; ; if(flagNeed) { - if (this.MagicUser.Pawn.needs.TryGetNeed(magicDef.requiredNeed) != null) + if (this.MagicUser.Pawn.needs?.TryGetNeed(magicDef.requiredNeed) != null) { - if(this.MagicUser.Pawn.needs.TryGetNeed(magicDef.requiredNeed).CurLevel < ActualNeedCost(magicDef, MagicUser)) + if(this.MagicUser.Pawn.needs?.TryGetNeed(magicDef.requiredNeed).CurLevel < ActualNeedCost(magicDef, MagicUser)) { reason = "TM_NotEnoughEnergy".Translate( base.Pawn.LabelShort, diff --git a/RimWorldOfMagic/RimWorldOfMagic/MightAbility.cs b/RimWorldOfMagic/RimWorldOfMagic/MightAbility.cs index 15d8aa89..5e0da5b9 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/MightAbility.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/MightAbility.cs @@ -162,9 +162,9 @@ public override void PostAbilityAttempt() } if (mightDef.requiredNeed != null) { - if (this.Pawn.needs != null && this.Pawn.needs.AllNeeds != null && this.Pawn.needs.TryGetNeed(this.mightDef.requiredNeed) != null) + if (this.Pawn.needs != null && this.Pawn.needs?.AllNeeds != null && this.Pawn.needs?.TryGetNeed(this.mightDef.requiredNeed) != null) { - Need nd = this.Pawn.needs.TryGetNeed(this.mightDef.requiredNeed); + Need nd = this.Pawn.needs?.TryGetNeed(this.mightDef.requiredNeed); nd.CurLevel -= ActualNeedCost(mightDef, this.MightUser); this.MightUser.MightUserXP += Mathf.Clamp((int)((mightDef.needXPFactor * this.MightUser.xpGain * ModOptions.Settings.Instance.xpMultiplier) * mightDef.needCost), 0, 9999); } @@ -548,9 +548,9 @@ public override bool CanCastPowerCheck(AbilityContext context, out string reason bool flagNeed = mightDef.requiredNeed != null; if (flagNeed) { - if (this.MightUser.Pawn.needs.TryGetNeed(mightDef.requiredNeed) != null) + if (this.MightUser.Pawn.needs?.TryGetNeed(mightDef.requiredNeed) != null) { - if (this.MightUser.Pawn.needs.TryGetNeed(mightDef.requiredNeed).CurLevel < ActualNeedCost(mightDef, MightUser)) + if (this.MightUser.Pawn.needs?.TryGetNeed(mightDef.requiredNeed).CurLevel < ActualNeedCost(mightDef, MightUser)) { reason = "TM_NotEnoughEnergy".Translate( base.Pawn.LabelShort, diff --git a/RimWorldOfMagic/RimWorldOfMagic/ModCheck/SS.cs b/RimWorldOfMagic/RimWorldOfMagic/ModCheck/SS.cs index 014cc594..a64a555b 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/ModCheck/SS.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/ModCheck/SS.cs @@ -12,15 +12,6 @@ public static class SS { public static void ClearWeaponMemory(Pawn p) { - CompSidearmMemory csm = p.TryGetComp(); - if (csm != null && csm.rememberedWeapons != null && csm.RememberedWeapons.Count > 0 && p.equipment != null) - { - while(csm.RememberedWeapons.Count > 0) - { - csm.ForgetSidearmMemory(csm.RememberedWeapons[0]); - } - csm.GenerateRememberedWeaponsFromEquipped(); - } } } } diff --git a/RimWorldOfMagic/RimWorldOfMagic/ModOptions/TM_DebugTools.cs b/RimWorldOfMagic/RimWorldOfMagic/ModOptions/TM_DebugTools.cs index 6cfe8c6f..347c9608 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/ModOptions/TM_DebugTools.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/ModOptions/TM_DebugTools.cs @@ -303,7 +303,7 @@ public static void ReduceSpirit(Pawn pawn) //Pawn pawn = Find.CurrentMap.thingGrid.ThingsAt(UI.MouseCell()).Where((Thing t) => t is Pawn).Cast().FirstOrDefault(); if (pawn != null && pawn.needs != null) { - Need_Spirit ns = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit ns = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if(ns != null) { ns.GainNeed(-20f); @@ -317,7 +317,7 @@ public static void GainSpirit(Pawn pawn) //Pawn pawn = Find.CurrentMap.thingGrid.ThingsAt(UI.MouseCell()).Where((Thing t) => t is Pawn).Cast().FirstOrDefault(); if (pawn != null && pawn.needs != null) { - Need_Spirit ns = pawn.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit ns = pawn.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if (ns != null) { ns.GainNeed(20f); diff --git a/RimWorldOfMagic/RimWorldOfMagic/Projectile_DisablingShot.cs b/RimWorldOfMagic/RimWorldOfMagic/Projectile_DisablingShot.cs index c2a6ca75..fc0e96a8 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Projectile_DisablingShot.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Projectile_DisablingShot.cs @@ -48,7 +48,7 @@ protected override void Impact(Thing hitThing, bool blockedByShield = false) if (victim.RaceProps.IsFlesh) { System.Random rnd = new System.Random(); - if (verVal > 0 && victim.needs.food != null) + if (verVal > 0 && victim.needs?.food != null) { int randomTranqSev = GenMath.RoundRandom(rnd.Next((int)(verVal * .5f * str.level), (int)((verVal + .5f * str.level) * 3))); LegShot(victim, randomTranqSev, TMDamageDefOf.DamageDefOf.TM_Tranquilizer); diff --git a/RimWorldOfMagic/RimWorldOfMagic/Projectile_DistortSpirit.cs b/RimWorldOfMagic/RimWorldOfMagic/Projectile_DistortSpirit.cs index e7922e14..8a073fa9 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Projectile_DistortSpirit.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Projectile_DistortSpirit.cs @@ -61,7 +61,7 @@ protected override void Impact(Thing hitThing, bool blockedByShield = false) HealthUtility.AdjustSeverity(p, TorannMagicDefOf.TM_SpiritDrainHD, .1f * verVal); if(verVal > 1 && !caster.DestroyedOrNull()) { - Need_Spirit ns = caster.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit ns = caster.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if(ns != null) { ns.GainNeed(Rand.Range(.12f, .2f) * verVal * comp.arcaneDmg); diff --git a/RimWorldOfMagic/RimWorldOfMagic/Projectile_Poison.cs b/RimWorldOfMagic/RimWorldOfMagic/Projectile_Poison.cs index 17e33865..9945a2b0 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Projectile_Poison.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Projectile_Poison.cs @@ -66,7 +66,7 @@ protected override void Impact(Thing hitThing, bool blockedByShield = false) if (!initialized) { hitPawn = hitThing as Pawn; - if (hitThing != null && hitPawn.needs.food != null) + if (hitThing != null && hitPawn.needs?.food != null) { duration += (verVal * 180); Initialize(hitPawn); diff --git a/RimWorldOfMagic/RimWorldOfMagic/Projectile_RaiseUndead.cs b/RimWorldOfMagic/RimWorldOfMagic/Projectile_RaiseUndead.cs index d68f1ef6..606f95bb 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Projectile_RaiseUndead.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Projectile_RaiseUndead.cs @@ -206,7 +206,7 @@ protected override void Impact(Thing hitThing, bool blockedByShield = false) RemoveTraits(undeadPawn, undeadPawn.story.traits.allTraits); undeadPawn.story.traits.GainTrait(new Trait(TraitDef.Named("Undead"), 0, false)); undeadPawn.story.traits.GainTrait(new Trait(TraitDef.Named("Psychopath"), 0, false)); - undeadPawn.needs.AddOrRemoveNeedsAsAppropriate(); + undeadPawn.needs?.AddOrRemoveNeedsAsAppropriate(); RemoveClassHediff(undeadPawn); if (undeadPawn.health.hediffSet.HasHediff(HediffDef.Named("DeathAcidifier"))) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/RimWorldOfMagic.csproj b/RimWorldOfMagic/RimWorldOfMagic/RimWorldOfMagic.csproj index 4daf0cfd..72f4170c 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/RimWorldOfMagic.csproj +++ b/RimWorldOfMagic/RimWorldOfMagic/RimWorldOfMagic.csproj @@ -57,7 +57,7 @@ False - ..\..\..\..\..\..\workshop\content\294100\1216999901\1.3\Assemblies\GiddyUpCore.dll + ..\..\..\..\..\..\workshop\content\294100\1216999901\1.4\Assemblies\GiddyUpCore.dll False @@ -69,7 +69,7 @@ False - ..\..\..\..\..\..\workshop\content\294100\927155256\v1.4\Assemblies\SimpleSidearms.dll + ..\..\..\..\..\..\workshop\content\294100\927155256\Assemblies\SimpleSidearms.dll False @@ -101,7 +101,7 @@ False - ..\..\..\..\..\Valheim\unstripped_corlib\UnityEngine.UI.dll + ..\..\..\..\RimWorldWin64_Data\Managed\UnityEngine.UI.dll False diff --git a/RimWorldOfMagic/RimWorldOfMagic/TMDefs/TM_Autocast.cs b/RimWorldOfMagic/RimWorldOfMagic/TMDefs/TM_Autocast.cs index e731e327..72257286 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/TMDefs/TM_Autocast.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/TMDefs/TM_Autocast.cs @@ -302,7 +302,7 @@ private bool HasNeed(TM_AutocastCondition con, Pawn p) if (p != null && p.needs != null) { bool hasAnyNeed = false; - foreach(Need n in p.needs.AllNeeds) + foreach(Need n in p.needs?.AllNeeds) { if(n != null && con.needDefs.Contains(n.def)) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/TM_Action.cs b/RimWorldOfMagic/RimWorldOfMagic/TM_Action.cs index 77e2aaa1..41876003 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/TM_Action.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/TM_Action.cs @@ -999,7 +999,7 @@ public static Pawn GenerateSpiritPawn(IntVec3 position, Faction fac = null) { newSpirit.story.Adulthood = TorannMagicDefOf.TM_AncientSpiritAdultBS; } - newSpirit.needs.SetInitialLevels(); + newSpirit.needs?.SetInitialLevels(); if (newSpirit.workSettings != null && newSpirit.Faction != null && newSpirit.Faction.IsPlayer) { newSpirit.workSettings.EnableAndInitialize(); @@ -1063,7 +1063,7 @@ public static void AssignSpiritEffecters(Pawn p) { p.story.traits.GainTrait(new Trait(TorannMagicDefOf.TM_Possessor, 0, true)); HealthUtility.AdjustSeverity(p, TorannMagicDefOf.TM_SpiritPossessorHD, .5f); - p.needs.AddOrRemoveNeedsAsAppropriate(); + p.needs?.AddOrRemoveNeedsAsAppropriate(); } public static void PossessPawn(Pawn caster, Pawn target, bool wasDead = false, FactionDef previousFactionDef = null) @@ -1102,7 +1102,7 @@ public static void PossessPawn(Pawn caster, Pawn target, bool wasDead = false, F //caster.GetCompAbilityUserMagic().RemoveAdvancedClass(TM_ClassUtility.GetCustomClassOfTrait(TorannMagicDefOf.TM_Possessor)); Hediff hd = target.health.hediffSet.GetFirstHediffOfDef(TorannMagicDefOf.TM_SpiritPossessionHD); HediffComp_SpiritPossession hdc_sp = hd.TryGetComp() as HediffComp_SpiritPossession; - Need_Spirit ns = target.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit ns = target.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if (ns != null) { ns.CurLevel = caster.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND).CurLevel; @@ -1130,7 +1130,7 @@ public static void RemovePossession(Pawn p, IntVec3 loc, bool destroySpirit = fa Hediff_Possessor possessorHD = spirit.health.hediffSet.GetFirstHediffOfDef(TorannMagicDefOf.TM_SpiritPossessorHD) as Hediff_Possessor; possessorHD.PossessionCompatibility = hd.Severity; //Log.Message("remove pos 4"); - //spirit.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND).CurLevel = p.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND).CurLevel; + //spirit.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND).CurLevel = p.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND).CurLevel; if (pComp != null) { MagicData fromData = pComp.MagicData; @@ -1562,25 +1562,25 @@ private static void RecallHediffs(Pawn pawn, CompAbilityUserMagic comp) private static void RecallNeeds(Pawn pawn, CompAbilityUserMagic comp) { - for (int i = 0; i < pawn.needs.AllNeeds.Count; i++) + for (int i = 0; i < pawn.needs?.AllNeeds.Count; i++) { bool hasNeed = false; for (int j = 0; j < comp.recallNeedValues.Count; j++) { - if (comp.recallNeedDefnames[j] == pawn.needs.AllNeeds[i].def.defName) + if (comp.recallNeedDefnames[j] == pawn.needs?.AllNeeds[i].def.defName) { - //Log.Message("setting " + pawn.needs.AllNeeds[i].def.defName + " from " + pawn.needs.AllNeeds[i].CurLevel + " to " + comp.recallNeedValues[j]); + //Log.Message("setting " + pawn.needs?.AllNeeds[i].def.defName + " from " + pawn.needs?.AllNeeds[i].CurLevel + " to " + comp.recallNeedValues[j]); pawn.needs.AllNeeds[i].CurLevel = comp.recallNeedValues[j]; hasNeed = true; } } if (!hasNeed) { - //Log.Message("removing need " + pawn.needs.AllNeeds[i].def.defName); - pawn.needs.AllNeeds.Remove(pawn.needs.AllNeeds[i]); + //Log.Message("removing need " + pawn.needs?.AllNeeds[i].def.defName); + pawn.needs?.AllNeeds.Remove(pawn.needs?.AllNeeds[i]); } } - pawn.needs.AddOrRemoveNeedsAsAppropriate(); + pawn.needs?.AddOrRemoveNeedsAsAppropriate(); comp.recallNeedDefnames.Clear(); comp.recallNeedValues.Clear(); } @@ -1696,14 +1696,14 @@ public static void PromoteWanderer(Pawn pawn) { RemoveTrait(pawn, TorannMagicDefOf.TM_Gifted); pawn.story.traits.GainTrait(new Trait(TorannMagicDefOf.TM_Wanderer, 0, false)); - pawn.needs.AddOrRemoveNeedsAsAppropriate(); + pawn.needs?.AddOrRemoveNeedsAsAppropriate(); } public static void PromoteWayfarer(Pawn pawn) { RemoveTrait(pawn, TorannMagicDefOf.PhysicalProdigy); pawn.story.traits.GainTrait(new Trait(TorannMagicDefOf.TM_Wayfarer, 0, false)); - pawn.needs.AddOrRemoveNeedsAsAppropriate(); + pawn.needs?.AddOrRemoveNeedsAsAppropriate(); } public static void RemoveTrait(Pawn pawn, TraitDef trait) @@ -1940,7 +1940,7 @@ public static bool DoWildSurge(Pawn p, CompAbilityUserMagic comp, MagicAbility a { for (int i = 0; i < allPawns.Count; i++) { - if (allPawns[i].needs != null && allPawns[i].needs.food != null) + if (allPawns[i].needs != null && allPawns[i].needs?.food != null) { HealthUtility.AdjustSeverity(allPawns[i], HediffDefOf.FoodPoisoning, Rand.Range(.3f, .7f)); } @@ -1957,9 +1957,9 @@ public static bool DoWildSurge(Pawn p, CompAbilityUserMagic comp, MagicAbility a { for (int i = 0; i < allPawns.Count; i++) { - if (allPawns[i].needs != null && allPawns[i].needs.rest != null) + if (allPawns[i].needs != null && allPawns[i].needs?.rest != null) { - Need need = allPawns[i].needs.TryGetNeed(NeedDefOf.Rest); + Need need = allPawns[i].needs?.TryGetNeed(NeedDefOf.Rest); if (need != null) { need.CurLevel = 0; diff --git a/RimWorldOfMagic/RimWorldOfMagic/TM_Calc.cs b/RimWorldOfMagic/RimWorldOfMagic/TM_Calc.cs index 3d74929e..e4848a0d 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/TM_Calc.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/TM_Calc.cs @@ -677,11 +677,11 @@ public static bool HasResourcesForAbility(Pawn p, TMAbilityDef ability) } if(ability.requiredNeed != null) { - if(p.needs == null || p.needs.AllNeeds == null) + if(p.needs == null || p.needs?.AllNeeds == null) { return false; } - Need nd = p.needs.TryGetNeed(ability.requiredNeed); + Need nd = p.needs?.TryGetNeed(ability.requiredNeed); if(nd == null) { return false; diff --git a/RimWorldOfMagic/RimWorldOfMagic/Thoughts/ThoughtWorker_TM_LivingPossessed.cs b/RimWorldOfMagic/RimWorldOfMagic/Thoughts/ThoughtWorker_TM_LivingPossessed.cs index 39ccf8f2..583a4486 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Thoughts/ThoughtWorker_TM_LivingPossessed.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Thoughts/ThoughtWorker_TM_LivingPossessed.cs @@ -10,7 +10,7 @@ protected override ThoughtState CurrentStateInternal(Pawn p) { if (p.needs == null) return false; if (!p.RaceProps.Humanlike) return false; - Need_Spirit nd = p.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit nd = p.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if(nd != null && !nd.wasDead) { return true; diff --git a/RimWorldOfMagic/RimWorldOfMagic/Thoughts/ThoughtWorker_TM_NeedTravel.cs b/RimWorldOfMagic/RimWorldOfMagic/Thoughts/ThoughtWorker_TM_NeedTravel.cs index 7ed13361..0d75b7e5 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Thoughts/ThoughtWorker_TM_NeedTravel.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Thoughts/ThoughtWorker_TM_NeedTravel.cs @@ -10,7 +10,7 @@ protected override ThoughtState CurrentStateInternal(Pawn p) { if (p.needs != null) { - Need_Travel tn = p.needs.TryGetNeed(TorannMagicDefOf.TM_Travel) as Need_Travel; + Need_Travel tn = p.needs?.TryGetNeed(TorannMagicDefOf.TM_Travel) as Need_Travel; if (tn != null) { switch (tn.CurCategory) diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_BlankMind.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_BlankMind.cs index ded1ee78..aad05533 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_BlankMind.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_BlankMind.cs @@ -52,18 +52,18 @@ protected override bool TryCastShot() if (friendlyTarget) { Pawn pawn = this.currentTarget.Thing as Pawn; - if (pawn != null && pawn.RaceProps.Humanlike && pawn.needs != null && pawn.needs.mood.thoughts != null) + if (pawn != null && pawn.RaceProps.Humanlike && pawn.needs != null && pawn.needs?.mood?.thoughts != null) { if (Rand.Chance(TM_Calc.GetSpellSuccessChance(this.CasterPawn, pawn, true))) { - List thoughts = pawn.needs.mood.thoughts.memories.Memories; + List thoughts = pawn.needs?.mood?.thoughts.memories.Memories; pawn.mindState.mentalStateHandler.TryStartMentalState(TorannMagicDefOf.WanderConfused, null, false, false, false, null, false); for(int i =0; i< thoughts.Count; i++) { - pawn.needs.mood.thoughts.memories.RemoveMemory(thoughts[i]); + pawn.needs?.mood?.thoughts.memories.RemoveMemory(thoughts[i]); i--; } - pawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_MemoryWipe, null); + pawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_MemoryWipe, null); Effects(pawn.Position); } else diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_BloodGift.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_BloodGift.cs index e98cf399..8fd68c78 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_BloodGift.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_BloodGift.cs @@ -63,7 +63,7 @@ protected override bool TryCastShot() damagePart = validParts.RandomElement(); TM_Action.DamageEntities(this.CasterPawn, damagePart, 2f, 10f, TMDamageDefOf.DamageDefOf.TM_BloodyCut, this.CasterPawn); bloodGain += 18; - List needs = this.CasterPawn.needs.AllNeeds; + List needs = this.CasterPawn.needs?.AllNeeds; for (int n = 0; n < needs.Count; n++) { Need need = needs[n]; diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_CommanderOrders.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_CommanderOrders.cs index ea4be7b8..50bfe595 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_CommanderOrders.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_CommanderOrders.cs @@ -72,7 +72,7 @@ protected override bool TryCastShot() float targetCountFactor = Mathf.Clamp(5f / (float)this.TargetsAoE.Count, .1f, 1f); if (flagSA) { - if(newPawn.needs != null && newPawn.needs.rest != null) + if(newPawn.needs != null && newPawn.needs?.rest != null) { newPawn.needs.rest.CurLevel += ((0.5f *targetCountFactor) + .05f * pwrVal); } @@ -102,14 +102,14 @@ protected override bool TryCastShot() } } - if (newPawn.needs != null && newPawn.needs.mood != null && newPawn.needs.mood.thoughts != null) + if (newPawn.needs != null && newPawn.needs?.mood != null && newPawn.needs?.mood?.thoughts != null) { if (Rand.Chance(1f - (.2f * socialChance))) { float moodChance = Mathf.Clamp(TM_Calc.GetRelationsFactor(caster, newPawn), .1f, .9f); if (Rand.Chance(moodChance)) { - newPawn.needs.mood.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_TakingOrdersTD, null); + newPawn.needs?.mood?.thoughts.memories.TryGainMemory(TorannMagicDefOf.TM_TakingOrdersTD, null); } } } diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_ConsumeCorpse.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_ConsumeCorpse.cs index 998cb4b8..19f7e037 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_ConsumeCorpse.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_ConsumeCorpse.cs @@ -115,8 +115,8 @@ protected override bool TryCastShot() if (!corpse.IsNotFresh()) { comp.Mana.CurLevel += (.13f * (1 + (manaRegen.level * .02f) + (ver.level * .07f)) * comp.arcaneDmg); - if (caster.needs != null && caster.needs.rest != null) { caster.needs.rest.CurLevel += .3f; } - if (caster.needs != null && caster.needs.mood != null) { caster.needs.mood.CurLevel += .3f; } + if (caster.needs != null && caster.needs?.rest != null) { caster.needs.rest.CurLevel += .3f; } + if (caster.needs != null && caster.needs?.mood != null) { caster.needs.mood.CurLevel += .3f; } ConsumeHumanoid(corpse); if (ver.level > 0) { @@ -135,7 +135,7 @@ protected override bool TryCastShot() if (!corpse.IsNotFresh()) { comp.Mana.CurLevel += (.09f * (1 + (manaRegen.level * .02f) + (ver.level * .07f)) * comp.arcaneDmg); - if (caster.needs != null && caster.needs.food != null) { caster.needs.food.CurLevel += .4f; } + if (caster.needs != null && caster.needs?.food != null) { caster.needs.food.CurLevel += .4f; } ConsumeAnimalKind(corpse); if (ver.level > 0) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_ConsumeCorpse_Mass.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_ConsumeCorpse_Mass.cs index b2d055aa..8034b974 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_ConsumeCorpse_Mass.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_ConsumeCorpse_Mass.cs @@ -119,8 +119,8 @@ protected override bool TryCastShot() if (!corpse.IsNotFresh()) { comp.Mana.CurLevel += ((.13f * (1 + (manaRegen.level * .02f) + (eff.level * .07f)) * comp.arcaneDmg) * rpct); - if (caster.needs != null && caster.needs.rest != null) { caster.needs.rest.CurLevel += .3f; } - if (caster.needs != null && caster.needs.mood != null) { caster.needs.mood.CurLevel += .3f; } + if (caster.needs != null && caster.needs?.rest != null) { caster.needs.rest.CurLevel += .3f; } + if (caster.needs != null && caster.needs?.mood != null) { caster.needs.mood.CurLevel += .3f; } ConsumeHumanoid(corpse); if (ver.level > 0) { @@ -139,7 +139,7 @@ protected override bool TryCastShot() if (!corpse.IsNotFresh()) { comp.Mana.CurLevel += ((.09f * (1 + (manaRegen.level * .02f) + (eff.level * .07f)) * comp.arcaneDmg) * rpct); - if (caster.needs != null && caster.needs.food != null) { caster.needs.food.CurLevel += .4f; } + if (caster.needs != null && caster.needs?.food != null) { caster.needs.food.CurLevel += .4f; } ConsumeAnimalKind(corpse); if (ver.level > 0) { diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_FadeEmotions.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_FadeEmotions.cs index 446ef89d..fd0cd936 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_FadeEmotions.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_FadeEmotions.cs @@ -42,14 +42,14 @@ protected override bool TryCastShot() Pawn caster = this.CasterPawn; Pawn hitPawn = this.currentTarget.Thing as Pawn; - if(hitPawn != null && hitPawn.RaceProps != null && hitPawn.needs != null && hitPawn.needs.mood != null && hitPawn.needs.mood.thoughts != null && + if(hitPawn != null && hitPawn.RaceProps != null && hitPawn.needs != null && hitPawn.needs?.mood != null && hitPawn.needs?.mood?.thoughts != null && hitPawn.RaceProps.Humanlike && !TM_Calc.IsUndead(hitPawn) && hitPawn.Faction == caster.Faction) { - List thoughts = hitPawn.needs.mood.thoughts.memories.Memories; - Need n = hitPawn.needs.mood; + List thoughts = hitPawn.needs?.mood?.thoughts.memories.Memories; + Need n = hitPawn.needs?.mood; for (int i = 0; i < thoughts.Count; i++) { - hitPawn.needs.mood.thoughts.memories.RemoveMemory(thoughts[i]); + hitPawn.needs?.mood?.thoughts.memories.RemoveMemory(thoughts[i]); n.CurLevel -= .3f; i--; if(n.CurLevel < .3f) diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_LichForm.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_LichForm.cs index e2f18392..69f5d3f2 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_LichForm.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_LichForm.cs @@ -30,7 +30,7 @@ protected override bool TryCastShot() { pawn.timetable.SetAssignment(h, TimeAssignmentDefOf.Work); } - pawn.needs.AddOrRemoveNeedsAsAppropriate(); + pawn.needs?.AddOrRemoveNeedsAsAppropriate(); comp.MagicData.MagicPowersN.FirstOrDefault((MagicPower x) => x.abilityDef == TorannMagicDefOf.TM_DeathBolt).learned = true; comp.AddPawnAbility(TorannMagicDefOf.TM_DeathBolt, false); comp.spell_Flight = true; diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_MindKiller.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_MindKiller.cs index c0fe0ace..688b7fa7 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_MindKiller.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_MindKiller.cs @@ -72,7 +72,7 @@ protected override bool TryCastShot() Pawn p = pList[i]; if(p != caster && p.needs != null) { - if((p.story != null && p.story.traits != null && p.story.traits.HasTrait(TraitDefOf.Psychopath)) || TM_Calc.IsUndeadNotVamp(p) || p.needs.mood == null) + if((p.story != null && p.story.traits != null && p.story.traits.HasTrait(TraitDefOf.Psychopath)) || TM_Calc.IsUndeadNotVamp(p) || p.needs?.mood == null) { continue; } @@ -84,7 +84,7 @@ protected override bool TryCastShot() if(Rand.Chance(TM_Calc.GetSpellSuccessChance(caster, p, false) + penChance)) { DrawEffects(caster, p); - Need n = p.needs.mood; + Need n = p.needs?.mood; float curLvl = Mathf.Clamp(n.CurLevel, 0, maxMoodBurn); n.CurLevel -= curLvl; TM_Action.DamageEntities(p, null, n.CurLevel * 20f, DamageDefOf.Stun, caster); diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_SpiritTap.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_SpiritTap.cs index 19223604..0056f1a5 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_SpiritTap.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_SpiritTap.cs @@ -29,7 +29,7 @@ protected override DamageWorker.DamageResult ApplyMeleeDamageToTarget(LocalTarge if (target.Pawn != null && !TM_Calc.IsGolem(target.Pawn) && !TM_Calc.IsUndead(target.Pawn) && !TM_Calc.IsRobotPawn(target.Pawn)) { HealthUtility.AdjustSeverity(target.Pawn, TorannMagicDefOf.TM_SpiritDrainHD, this.tool.power/(damageVal*10f)); - Need_Spirit nd = this.CasterPawn.needs.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; + Need_Spirit nd = this.CasterPawn.needs?.TryGetNeed(TorannMagicDefOf.TM_SpiritND) as Need_Spirit; if(nd != null) { nd.GainNeed(damageVal * .03f); diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_TimeMark.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_TimeMark.cs index 8065ae66..89b17003 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_TimeMark.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_TimeMark.cs @@ -159,15 +159,15 @@ private void SetRecallNeeds() comp.recallNeedValues.Clear(); //comp.recallNeedValues = new List(); //comp.recallNeedValues.Clear(); - for (int i = 0; i < this.CasterPawn.needs.AllNeeds.Count; i++) + for (int i = 0; i < this.CasterPawn.needs?.AllNeeds.Count; i++) { - //Log.Message("" + this.CasterPawn.needs.AllNeeds[i].def.defName); - if (this.CasterPawn.needs.AllNeeds[i].def.defName != "Chemical_Luciferium") + //Log.Message("" + this.CasterPawn.needs?.AllNeeds[i].def.defName); + if (this.CasterPawn.needs?.AllNeeds[i].def.defName != "Chemical_Luciferium") { - comp.recallNeedDefnames.Add(this.CasterPawn.needs.AllNeeds[i].def.defName); + comp.recallNeedDefnames.Add(this.CasterPawn.needs?.AllNeeds[i].def.defName); comp.recallNeedValues.Add(this.CasterPawn.needs.AllNeeds[i].CurLevel); } - //comp.recallNeedValues.Add(TM_Calc.Clone(this.CasterPawn.needs.AllNeeds[i])); + //comp.recallNeedValues.Add(TM_Calc.Clone(this.CasterPawn.needs?.AllNeeds[i])); } //Log.Message("needs set"); } diff --git a/RimWorldOfMagic/RimWorldOfMagic/Verb_Transpose.cs b/RimWorldOfMagic/RimWorldOfMagic/Verb_Transpose.cs index 3be4d3ad..3984cb45 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/Verb_Transpose.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/Verb_Transpose.cs @@ -99,7 +99,7 @@ protected override bool TryCastShot() HealthUtility.AdjustSeverity(p, HediffDef.Named("TM_DisorientedVomit"), 1f); } HealthUtility.AdjustSeverity(p, TorannMagicDefOf.TM_ReversalHD, 2f + (ver.level)); - if (targetPawn.HostileTo(this.CasterPawn) && targetPawn.needs.food != null) + if (targetPawn.HostileTo(this.CasterPawn) && targetPawn.needs?.food != null) { if (Rand.Chance(TM_Calc.GetSpellSuccessChance(this.CasterPawn, targetPawn, true))) { @@ -112,7 +112,7 @@ protected override bool TryCastShot() } else { - if (ver.level < 2 && targetPawn.needs.food != null) + if (ver.level < 2 && targetPawn.needs?.food != null) { HealthUtility.AdjustSeverity(targetPawn, HediffDef.Named("TM_DisorientedVomit"), 1f); } diff --git a/RimWorldOfMagic/RimWorldOfMagic/WorkGiver_DoEntertain.cs b/RimWorldOfMagic/RimWorldOfMagic/WorkGiver_DoEntertain.cs index 09c9e6d2..bbc7302d 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/WorkGiver_DoEntertain.cs +++ b/RimWorldOfMagic/RimWorldOfMagic/WorkGiver_DoEntertain.cs @@ -47,7 +47,7 @@ public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) { bool flag = true; LocalTargetInfo target = pawn2; - List pawn2Memories = pawn.needs.mood.thoughts.memories.Memories; + List pawn2Memories = pawn.needs?.mood?.thoughts.memories.Memories; for(int i = 0; i < pawn2Memories.Count; i++) { if (pawn2Memories[i].def.defName == "TM_EntertainedTD" && pawn2Memories[i].MoodOffset() > 11f) @@ -68,7 +68,7 @@ public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) if (current == pawn2) { bool flag = true; - List pawn2Memories = pawn.needs.mood.thoughts.memories.Memories; + List pawn2Memories = pawn.needs?.mood?.thoughts.memories.Memories; for (int i = 0; i < pawn2Memories.Count; i++) { if (pawn2Memories[i].def.defName == "TM_EntertainedTD") @@ -89,7 +89,7 @@ public override bool HasJobOnThing(Pawn pawn, Thing t, bool forced = false) if (current == pawn2) { bool flag = true; - List pawn2Memories = pawn.needs.mood.thoughts.memories.Memories; + List pawn2Memories = pawn.needs?.mood?.thoughts.memories.Memories; for (int i = 0; i < pawn2Memories.Count; i++) { if (pawn2Memories[i].def.defName == "TM_EntertainedTD") diff --git a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs new file mode 100644 index 00000000..15efebfc --- /dev/null +++ b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/.NETFramework,Version=v4.8.AssemblyAttributes.cs @@ -0,0 +1,4 @@ +// +using System; +using System.Reflection; +[assembly: global::System.Runtime.Versioning.TargetFrameworkAttribute(".NETFramework,Version=v4.8", FrameworkDisplayName = ".NET Framework 4.8")] diff --git a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache index 45617edf..ac5770eb 100644 Binary files a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache and b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/DesignTimeResolveAssemblyReferencesInput.cache differ diff --git a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.AssemblyReference.cache b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.AssemblyReference.cache index 527417d1..201fa144 100644 Binary files a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.AssemblyReference.cache and b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.AssemblyReference.cache differ diff --git a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.CoreCompileInputs.cache b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.CoreCompileInputs.cache index ba2564dd..5303f366 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.CoreCompileInputs.cache +++ b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.CoreCompileInputs.cache @@ -1 +1 @@ -99ff142d1ea60b6d9c084edbdd06b6f95f4dee0f +5a2e163704e91ad935a9eeea608a62744246878e diff --git a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.FileListAbsolute.txt b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.FileListAbsolute.txt index 942ce5df..cf942251 100644 --- a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.FileListAbsolute.txt +++ b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/RimWorldOfMagic.csproj.FileListAbsolute.txt @@ -12,3 +12,7 @@ E:\Programs\Steam\steamapps\common\RimWorld\Mods\RWoM\v1.4\Assemblies\TorannMagi E:\Programs\Steam\steamapps\common\RimWorld\Mods\RWoM\v1.4\Assemblies\TorannMagic.pdb E:\Programs\Steam\steamapps\common\RimWorld\Mods\RWoM\v1.5\Assemblies\TorannMagic.dll E:\Programs\Steam\steamapps\common\RimWorld\Mods\RWoM\RimWorldOfMagic\RimWorldOfMagic\obj\Debug\RimWorldOfMagic.csprojAssemblyReference.cache +E:\SteamLibrary\steamapps\common\RimWorld\Mods\RWoM\RimWorldOfMagic\RimWorldOfMagic\obj\Debug\RimWorldOfMagic.csproj.AssemblyReference.cache +E:\SteamLibrary\steamapps\common\RimWorld\Mods\RWoM\RimWorldOfMagic\RimWorldOfMagic\obj\Debug\RimWorldOfMagic.csproj.CoreCompileInputs.cache +E:\SteamLibrary\steamapps\common\RimWorld\Mods\RWoM\RimWorldOfMagic\RimWorldOfMagic\obj\Debug\TorannMagic.dll +E:\SteamLibrary\steamapps\common\RimWorld\Mods\RWoM\v1.5\Assemblies\TorannMagic.dll diff --git a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/TorannMagic.dll b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/TorannMagic.dll index 239469cc..8f7c156b 100644 Binary files a/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/TorannMagic.dll and b/RimWorldOfMagic/RimWorldOfMagic/obj/Debug/TorannMagic.dll differ diff --git a/v1.5/Assemblies/TorannMagic.dll b/v1.5/Assemblies/TorannMagic.dll index 239469cc..8f7c156b 100644 Binary files a/v1.5/Assemblies/TorannMagic.dll and b/v1.5/Assemblies/TorannMagic.dll differ