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); }
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); }