public static void changeDefendingMilitaryForce(FCEvent evt, SettlementFC settlementOfMilitaryForce) { FactionFC factionfc = Find.World.GetComponent <FactionFC>(); militaryForce tmpMilitaryForce = null; SettlementFC homeSettlement = factionfc.returnSettlementByLocation(evt.location, evt.planetName); if (settlementOfMilitaryForce == evt.militaryForceDefending.homeSettlement) { Messages.Message("militaryAlreadyDefendingSettlement".Translate(), MessageTypeDefOf.RejectInput); return; } WorldSettlementFC target = Find.World.worldObjects.WorldObjectAt <WorldSettlementFC>(evt.location); if (evt.militaryForceDefending.homeSettlement != factionfc.returnSettlementByLocation(evt.location, evt.planetName)) { //if the forces defending aren't the forces belonging to the settlement evt.militaryForceDefending.homeSettlement.returnMilitary(false); } if (settlementOfMilitaryForce != homeSettlement) { tmpMilitaryForce = militaryForce.createMilitaryForceFromSettlement( factionfc.returnSettlementByLocation(evt.location, evt.planetName), true); } factionfc.militaryTargets.Remove(evt.location); evt.militaryForceDefending = militaryForce.createMilitaryForceFromSettlement(settlementOfMilitaryForce, homeDefendingForce: tmpMilitaryForce); target.defenderForce = evt.militaryForceDefending; if (settlementOfMilitaryForce == homeSettlement) { //if home settlement is reseting to defense Messages.Message("defendingMilitaryReset".Translate(), MessageTypeDefOf.NeutralEvent); } else { //if settlement is foreign settlementOfMilitaryForce.SendMilitary(evt.settlementFCDefending.mapLocation, evt.planetName, util.MilitaryJob.DefendFriendlySettlement, -1, evt.militaryForceAttackingFaction); Find.LetterStack.ReceiveLetter("Military Action", "ForeignMilitarySwitch" .Translate(settlementOfMilitaryForce.name, factionfc.returnSettlementByLocation(evt.location, evt.planetName).name, evt.militaryForceDefending.militaryLevel), LetterDefOf.NeutralEvent); } }