public override float Calculate(Pawn observer, Pawn assessed) { float weight = 1f; if (GRPawnRelationUtility.IsPolygamist(assessed) && !GRPawnRelationUtility.IsPolygamist(observer)) { weight *= .85f; } else if (GRPawnRelationUtility.IsPolygamist(assessed) && GRPawnRelationUtility.IsPolygamist(observer)) { weight *= 1.2f; } return(weight); }
private void BreakLoverAndFianceRelations(Pawn pawn, out List <Pawn> oldLoversAndFiances) { oldLoversAndFiances = new List <Pawn> { }; List <PawnRelationDef> relationsToBreak = GRPawnRelationUtility.ListOfBreakupRelationships(); for (int i = 0; i < relationsToBreak.Count(); i++) { PawnRelationDef relation = relationsToBreak[i]; List <Pawn> pawns = GRPawnRelationUtility.GetAllPawnsWithGivenRelationshipTo(pawn, relation); for (int i2 = 1; i2 < pawns.Count(); i2++) { Pawn other = pawns[i2]; if (!GRPawnRelationUtility.IsPolygamist(pawn) || !GRPawnRelationUtility.IsPolygamist(other)) { BreakupUtility.ResolveBreakup(pawn, other, relation); oldLoversAndFiances.Add(other); } } } }