Compare commits

...

3 Commits

Author SHA1 Message Date
Usagirei f3649d2182 Merge branch 'nre-partner' into 'master'
Fix NRE when jobdriver partner is null

See merge request c0ffeeeeeeee/rimworld-animations!5
2022-11-30 23:00:34 +00:00
c0ffee fa0c4457e8 fixed log spam 2022-11-29 17:21:00 -08:00
Reisen Usagi 8888f76708
Fix NRE when jobdriver partner is null 2022-03-22 20:15:38 -03:00
6 changed files with 27 additions and 10 deletions

View File

@ -504,14 +504,29 @@ namespace Rimworld_Animations {
public bool LoopNeverending()
{
if(pawn?.jobs?.curDriver != null &&
(pawn.jobs.curDriver is JobDriver_Sex) && (pawn.jobs.curDriver as JobDriver_Sex).neverendingsex ||
(pawn.jobs.curDriver is JobDriver_SexBaseReciever) && (pawn.jobs.curDriver as JobDriver_Sex).Partner?.jobs?.curDriver != null && ((pawn.jobs.curDriver as JobDriver_Sex).Partner.jobs.curDriver as JobDriver_Sex).neverendingsex)
{
return true;
}
return IsNeverEndingSex(pawn) || IsNeverEndingSexPartner(pawn);
}
return false;
public static bool IsNeverEndingSex(Pawn pawn)
{
bool hasDriver = pawn?.jobs?.curDriver != null;
if (!hasDriver)
return false;
return (pawn.jobs.curDriver is JobDriver_Sex jds) && jds.neverendingsex;
}
public static bool IsNeverEndingSexPartner(Pawn pawn)
{
bool hasDriver = pawn?.jobs?.curDriver != null;
if (!hasDriver)
return false;
var partner = (pawn.jobs.curDriver is JobDriver_SexBaseReciever jds) ? jds.Partner : null;
if (partner == null)
return false;
return IsNeverEndingSex(partner);
}
public void ResetOnLoop()

View File

@ -36,7 +36,8 @@ namespace Rimworld_Animations {
if (x.actors.Count != localParticipants.Count) {
Log.Message(x.defName.ToStringSafe() + " not selected -- doesn't match count");
if (AnimationSettings.debugMode)
Log.Message(x.defName.ToStringSafe() + " not selected -- doesn't match count");
return false;
}
for (int i = 0; i < x.actors.Count; i++) {
@ -85,7 +86,8 @@ namespace Rimworld_Animations {
if (!x.actors[i].defNames.Contains(localParticipants[i].def.defName)) {
if (rjw.RJWSettings.DevMode) {
if (AnimationSettings.debugMode)
{
string animInfo = x.defName.ToStringSafe() + " not selected -- " + localParticipants[i].def.defName.ToStringSafe() + " " + localParticipants[i].Name.ToStringSafe() + " is not ";
foreach(String defname in x.actors[i].defNames) {
animInfo += defname + ", ";

View File

@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Manifest>
<identifier>Rimworld-Animations</identifier>
<version>1.3.1</version>
<version>1.3.2</version>
</Manifest>