public override float RandomSelectionWeight(Pawn initiator, Pawn recipient) { if (!initiator.health.hediffSet.HasHediff(CultManager.CommittedHediffdef) || recipient.health.hediffSet.HasHediff(CultManager.CommittedHediffdef)) { return(0); } if (Hediff_Committed.GetHediffForPawn(initiator).CurStageIndex <= 1) { return(0); } return(10000000f); // Get my opinion of cultleader // }
public override void TransformValue(StatRequest req, ref float val) { var pawn = req.Thing as Pawn; var opawns = Find.VisibleMap.mapPawns.FreeColonists; var cache = CultManager.OpinionCacheLookup[pawn.GetHashCode()]; float totalOpinionFactored = 0; int numOpawns = 0; foreach (var opawn in opawns) { if (!(opawn.GetHashCode() == pawn.GetHashCode()) && opawn.GetHashCode() != CultManager.Leader.GetHashCode()) { totalOpinionFactored += cache.GetOpinionOfOther(opawn) * Hediff_Committed.GetSeverityForPawn(opawn); numOpawns++; } } totalOpinionFactored /= numOpawns / 4f; if (totalOpinionFactored < 0) { } else if (totalOpinionFactored < 10) { val = .1f; } else if (totalOpinionFactored < 20) { val = .3f; } else if (totalOpinionFactored < 40) { val = .5f; } else if (totalOpinionFactored >= 50) { val = .7f; } }