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);
        }
Esempio n. 2
0
        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);
                    }
                }
            }
        }