public void SingleSpawnLoop(SpawnThings spawnables, IntVec3 position, Map map) { bool flag = spawnables.def != null; if (flag) { Faction faction = pawn.Faction; bool flag2 = spawnables.def.race != null; if (flag2) { bool flag3 = spawnables.kindDef == null; if (flag3) { Log.Error("Missing kinddef"); } else { newPawn = (TMPawnSummoned)PawnGenerator.GeneratePawn(spawnables.kindDef, faction); newPawn.Spawner = this.launcher as Pawn; newPawn.Temporary = true; newPawn.TicksToDestroy = 180; try { GenSpawn.Spawn(newPawn, position, this.Map); } catch { } } } else { Log.Message("Missing race"); } } }
protected override bool TryCastShot() { Pawn caster = base.CasterPawn; Pawn pawn = this.currentTarget.Thing as Pawn; CompAbilityUserMagic comp = pawn.GetComp <CompAbilityUserMagic>(); if (comp.IsMagicUser) { if (comp.summonedMinions.Count > 0) { TMPawnSummoned minion = (TMPawnSummoned)comp.summonedMinions[0]; minion.TicksLeft = 1; } else { Messages.Message("TM_NoMinionToDismiss".Translate(new object[] { this.CasterPawn.LabelShort }), MessageTypeDefOf.RejectInput); } } return(true); }
public void SingleSpawnLoop(SpawnThings spawnables, IntVec3 position, Map map) { bool flag = spawnables.def != null; if (flag) { Faction faction = this.sustainerPawn.Faction; bool flag2 = spawnables.def.race != null; if (flag2) { bool flag3 = spawnables.kindDef == null; if (flag3) { Log.Error("Missing kinddef"); } else { newPawn = (TMPawnSummoned)PawnGenerator.GeneratePawn(spawnables.kindDef, faction); newPawn.validSummoning = true; newPawn.Temporary = false; //if (newPawn.Faction != Faction.OfPlayerSilentFail) //{ // newPawn.SetFaction(this.Caster.Faction, null); //} try { GenSpawn.Spawn(newPawn, position, map, Rot4.North, WipeMode.Vanish, false); //GenPlace.TryPlaceThing(newPawn, position, map, ThingPlaceMode.Near, null, null); CompSentinel compSentinel = newPawn.TryGetComp <CompSentinel>(); compSentinel.target = this.hostilePawn; compSentinel.sentinelLoc = position; compSentinel.rotation = this.Rotation; compSentinel.sustainerPawn = this.sustainerPawn; } catch { Log.Message("TM_Exception".Translate( "sentinel building", this.def.defName )); this.Destroy(DestroyMode.Vanish); } if (newPawn.Faction != null && newPawn.Faction != Faction.OfPlayer) { try { Lord lord = null; if (newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction).Any((Pawn p) => p != newPawn)) { Predicate <Thing> validator = (Thing p) => p != newPawn && ((Pawn)p).GetLord() != null; Pawn p2 = (Pawn)GenClosest.ClosestThing_Global(newPawn.Position, newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction), 99999f, validator, null); lord = p2.GetLord(); } bool flag4 = lord == null; if (flag4) { LordJob_DefendPoint lordJob = new LordJob_DefendPoint(newPawn.Position); lord = LordMaker.MakeNewLord(faction, lordJob, map, null); } lord.AddPawn(newPawn); } catch (NullReferenceException ex) { // } } } } else { Log.Message("Missing race"); } } }
public void SingleSpawnLoop(SpawnThings spawnables, IntVec3 position, Map map) { bool flag = spawnables.def != null; if (flag) { Faction faction = pawn.Faction; bool flag2 = spawnables.def.race != null; if (flag2) { bool flag3 = spawnables.kindDef == null; if (flag3) { Log.Error("Missing kinddef"); } else { newPawn = (TMPawnSummoned)PawnGenerator.GeneratePawn(spawnables.kindDef, faction); newPawn.Spawner = this.Caster; newPawn.Temporary = true; newPawn.TicksToDestroy = this.duration; //if (newPawn.Faction != Faction.OfPlayerSilentFail) //{ // newPawn.SetFaction(this.Caster.Faction, null); //} //newPawn.playerSettings.master = this.Caster; if (comp.summonedMinions.Count >= 4) { Thing dismissMinion = comp.summonedMinions[0]; if (dismissMinion != null && dismissMinion.Position.IsValid) { MoteMaker.ThrowSmoke(dismissMinion.Position.ToVector3(), base.Map, 1); MoteMaker.ThrowHeatGlow(dismissMinion.Position, base.Map, 1); } comp.summonedMinions.Remove(comp.summonedMinions[0]); if (!dismissMinion.Destroyed) { dismissMinion.Destroy(); Messages.Message("TM_SummonedCreatureLimitExceeded".Translate(new object[] { this.launcher.LabelShort }), MessageTypeDefOf.NeutralEvent); } if (comp.summonedMinions.Count > 4) { while (comp.summonedMinions.Count > 4) { Pawn excessMinion = comp.summonedMinions[comp.summonedMinions.Count - 1] as Pawn; comp.summonedMinions.Remove(excessMinion); if (excessMinion != null && !excessMinion.Dead && !excessMinion.Destroyed) { excessMinion.Destroy(); } } } } try { GenSpawn.Spawn(newPawn, position, this.Map); } catch { this.age = this.duration; comp.Mana.CurLevel += comp.ActualManaCost(TorannMagicDefOf.TM_SummonMinion); Log.Message("TM_Exception".Translate(new object[] { pawn.LabelShort, this.def.defName })); this.Destroy(DestroyMode.Vanish); } comp.summonedMinions.Add(newPawn); if (newPawn.Faction != null && newPawn.Faction != Faction.OfPlayer) { Lord lord = null; if (newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction).Any((Pawn p) => p != newPawn)) { Predicate <Thing> validator = (Thing p) => p != newPawn && ((Pawn)p).GetLord() != null; Pawn p2 = (Pawn)GenClosest.ClosestThing_Global(newPawn.Position, newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction), 99999f, validator, null); lord = p2.GetLord(); } bool flag4 = lord == null; if (flag4) { LordJob_DefendPoint lordJob = new LordJob_DefendPoint(newPawn.Position); lord = LordMaker.MakeNewLord(faction, lordJob, this.Map, null); } lord.AddPawn(newPawn); } } } else { Log.Message("Missing race"); } } }
public void SingleSpawnLoop(SpawnThings spawnables, IntVec3 position, Map map) { bool flag = spawnables.def != null; if (flag) { Faction faction = pawn.Faction; bool flag2 = spawnables.def.race != null; if (flag2) { bool flag3 = spawnables.kindDef == null; if (flag3) { Log.Error("Missing kinddef"); } else { newPawn = (TMPawnSummoned)PawnGenerator.GeneratePawn(spawnables.kindDef, faction); newPawn.validSummoning = true; newPawn.Spawner = this.Caster; newPawn.Temporary = true; newPawn.TicksToDestroy = this.duration; //if (newPawn.Faction != Faction.OfPlayerSilentFail) //{ // newPawn.SetFaction(this.Caster.Faction, null); //} try { GenSpawn.Spawn(newPawn, position, map, Rot4.North, WipeMode.Vanish, false); //GenPlace.TryPlaceThing(newPawn, position, map, ThingPlaceMode.Near, null, null); } catch { pawn.GetComp <CompAbilityUserMagic>().Mana.CurLevel += pawn.GetComp <CompAbilityUserMagic>().ActualManaCost(TorannMagicDefOf.TM_SummonElemental); Log.Message("TM_Exception".Translate( pawn.LabelShort, this.def.defName )); this.Destroy(DestroyMode.Vanish); } if (newPawn.Faction != null && newPawn.Faction != Faction.OfPlayer) { Lord lord = null; if (newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction).Any((Pawn p) => p != newPawn)) { Predicate <Thing> validator = (Thing p) => p != newPawn && ((Pawn)p).GetLord() != null; Pawn p2 = (Pawn)GenClosest.ClosestThing_Global(newPawn.Position, newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction), 99999f, validator, null); lord = p2.GetLord(); } bool flag4 = lord == null; if (flag4) { LordJob_DefendPoint lordJob = new LordJob_DefendPoint(newPawn.Position); lord = LordMaker.MakeNewLord(faction, lordJob, map, null); } else { try { //PawnDuty duty = this.pawn.mindState.duty; newPawn.mindState.duty = new PawnDuty(DutyDefOf.Defend); } catch { Log.Message("error attempting to assign a duty to elemental"); } } lord.AddPawn(newPawn); } } } else { Log.Message("Missing race"); } } }
public void SingleSpawnLoop(SpawnThings spawnables, IntVec3 position, Map map) { bool flag = spawnables.def != null; if (flag) { Faction faction = this.launcher.Faction; bool flag2 = spawnables.def.race != null; if (flag2) { bool flag3 = spawnables.kindDef == null; if (flag3) { Log.Error("Missing kinddef"); } else { TMPawnSummoned newPawn = new TMPawnSummoned(); newPawn = (TMPawnSummoned)PawnGenerator.GeneratePawn(spawnables.kindDef, faction); newPawn.validSummoning = true; newPawn.Spawner = this.casterPawn; newPawn.Temporary = true; newPawn.TicksToDestroy = this.duration; try { GenSpawn.Spawn(newPawn, position, map); this.demonPawn = newPawn; } catch { this.age = this.duration; Log.Message("TM_Exception".Translate( this.casterPawn.LabelShort, this.def.defName )); this.Destroy(DestroyMode.Vanish); } if (newPawn.Faction != null && newPawn.Faction != Faction.OfPlayer) { Lord lord = null; if (newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction).Any((Pawn p) => p != newPawn)) { Predicate <Thing> validator = (Thing p) => p != newPawn && ((Pawn)p).GetLord() != null; Pawn p2 = (Pawn)GenClosest.ClosestThing_Global(newPawn.Position, newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction), 99999f, validator, null); lord = p2.GetLord(); } bool flag4 = lord == null; if (flag4) { LordJob_DefendPoint lordJob = new LordJob_DefendPoint(newPawn.Position); lord = LordMaker.MakeNewLord(faction, lordJob, map, null); } lord.AddPawn(newPawn); } } } else { Log.Message("Missing race"); } } }
public void SingleSpawnLoop(SpawnThings spawnables, IntVec3 position, Map map) { bool flag = spawnables.def != null; if (flag) { Faction faction = pawn.Faction; bool flag2 = spawnables.def.race != null; if (flag2) { bool flag3 = spawnables.kindDef == null; if (flag3) { Log.Error("Missing kinddef"); } else { newPawn = (TMPawnSummoned)PawnGenerator.GeneratePawn(spawnables.kindDef, faction); newPawn.Spawner = this.Caster; newPawn.Temporary = true; newPawn.TicksToDestroy = this.duration; if (newPawn.Faction != Faction.OfPlayerSilentFail) { newPawn.SetFaction(this.Caster.Faction, null); } try { GenSpawn.Spawn(newPawn, position, Find.VisibleMap); } catch { pawn.GetComp <CompAbilityUserMagic>().Mana.CurLevel += pawn.GetComp <CompAbilityUserMagic>().ActualManaCost(TorannMagicDefOf.TM_SummonElemental); Log.Message("TM_Exception".Translate(new object[] { pawn.LabelShort, this.def.defName })); this.Destroy(DestroyMode.Vanish); } if (newPawn.Faction != null && newPawn.Faction != Faction.OfPlayer) { Lord lord = null; if (newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction).Any((Pawn p) => p != newPawn)) { Predicate <Thing> validator = (Thing p) => p != newPawn && ((Pawn)p).GetLord() != null; Pawn p2 = (Pawn)GenClosest.ClosestThing_Global(newPawn.Position, newPawn.Map.mapPawns.SpawnedPawnsInFaction(faction), 99999f, validator, null); lord = p2.GetLord(); } bool flag4 = lord == null; if (flag4) { LordJob_DefendPoint lordJob = new LordJob_DefendPoint(newPawn.Position); lord = LordMaker.MakeNewLord(faction, lordJob, Find.VisibleMap, null); } lord.AddPawn(newPawn); } } } else { Log.Message("Missing race"); } } }