Ejemplo n.º 1
0
        static bool Prefix(ref Faction __instance, Pawn member, DamageInfo?dinfo, bool wasWorldPawn, Map map)
        {
            if (member.Faction.def.defName == "PColony" && !wasWorldPawn &&
                !PawnGenerator.IsBeingGenerated(member) && map != null && map.IsPlayerHome &&
                !__instance.HostileTo(Faction.OfPlayer))
            {
                FactionFC faction = Find.World.GetComponent <FactionFC>();
                if (!faction.hasPolicy(FCPolicyDefOf.pacifist) && dinfo != null)
                {
                    if (dinfo.Value.Category == DamageInfo.SourceCategory.Collapse)
                    {
                        faction.GainUnrestForReason(new Message("DeathOfFactionPawn".Translate(), MessageTypeDefOf.PawnDeath), 5d);
                        faction.GainHappiness(-5d);
                    }
                    else if (dinfo.Value.Instigator?.Faction == Find.FactionManager.OfPlayer)
                    {
                        faction.GainUnrestForReason(new Message("DeathOfFactionPawn".Translate(), MessageTypeDefOf.PawnDeath), 5d);
                        faction.GainHappiness(-5d);
                    }
                }

                //return false to stop from continuing method
                return(false);
            }

            return(true);
        }
Ejemplo n.º 2
0
        static bool Prefix(ref Faction __instance, Pawn member, Faction violator)
        {
            if (__instance.def.defName == "PColony" && violator == Faction.OfPlayer && !member.IsSlaveOfColony)
            {
                FactionFC faction = Find.World.GetComponent <FactionFC>();
                faction.GainUnrestForReason(new Message("CaptureOfFactionPawn".Translate(), MessageTypeDefOf.NegativeEvent), 15d);
                faction.GainHappiness(-10d);

                return(false);
            }

            return(true);
        }