protected override void SpringSub(Pawn p) { SoundDefOf.TrapSpring.PlayOneShot(new TargetInfo(base.Position, base.Map, false)); if (p == null) { return; } float num = this.GetStatValue(StatDefOf.TrapMeleeDamage, true) * DamageRandomFactorRange.RandomInRange * SRFPSRT_settings.Gettrapdamage(); float num2 = num / DamageCount; float armorPenetration = num2 * 0.015f * SRFPSRT_settings.Getarmorpenetrate(); int num3 = 0; while ((float)num3 < DamageCount) { DamageInfo dinfo = new DamageInfo(DamageDefOf.Flame, num2, armorPenetration, -1f, this, null, null, DamageInfo.SourceCategory.ThingOrUnknown, null); DamageWorker.DamageResult damageResult = p.TakeDamage(dinfo); if (num3 == 0) { BattleLogEntry_DamageTaken battleLogEntry_DamageTaken = new BattleLogEntry_DamageTaken(p, RulePackDefOf.DamageEvent_TrapSpike, null); Find.BattleLog.Add(battleLogEntry_DamageTaken); damageResult.AssociateWithLog(battleLogEntry_DamageTaken); } num3++; } Map map = base.Map; IntVec3 loc = this.Position; Thing thing = GenSpawn.Spawn(ThingMaker.MakeThing(ThingDef.Named("Building_SRFPSRTunarmed"), this.Stuff), loc, map, WipeMode.Vanish); thing.SetFaction(Faction.OfPlayer, null); }
public override string GetInspectString() { StringBuilder stringBuilder = new StringBuilder(); stringBuilder.Append(base.GetInspectString()); string newDesc = ""; newDesc = "charging... : " + ((int)(((SRFPSRT_settings.Gettraparmingtime() * 60) - FPSRT_arming))).ToStringSecondsFromTicks(); stringBuilder.Append(newDesc); return(stringBuilder.ToString()); }
public override void Tick() { base.Tick(); if (this.Spawned) { FPSRT_arming++; if (FPSRT_arming > (SRFPSRT_settings.Gettraparmingtime() * 60)) { Map map = base.Map; IntVec3 loc = this.Position; this.Destroy(DestroyMode.Vanish); int temp = UnityEngine.Random.Range(0, 5); String itsname = ""; switch (temp) { case 0: itsname = "Building_SRFPSRT_Normal"; break; case 1: itsname = "Building_SRFPSRT_flame"; break; case 2: itsname = "Building_SRFPSRT_flash"; break; case 3: itsname = "Building_SRFPSRT_poison"; break; default: itsname = "Building_SRFPSRT_summon"; break; } Thing thing = GenSpawn.Spawn(ThingMaker.MakeThing(ThingDef.Named(itsname), this.Stuff), loc, map, WipeMode.Vanish); thing.SetFaction(Faction.OfPlayer, null); } } }
protected override void SpringSub(Pawn p) { IEnumerable <BodyPartRecord> enumerable = from x in p.health.hediffSet.GetNotMissingParts(BodyPartHeight.Undefined, BodyPartDepth.Undefined, null, null) where x.def == BodyPartDefOf.Eye select x; foreach (BodyPartRecord current in enumerable) { DamageInfo dinfo = new DamageInfo(DamageDefOf.Burn, 5, 0.5f, -1f, this, current, null, DamageInfo.SourceCategory.ThingOrUnknown, null); DamageWorker.DamageResult damageResult = p.TakeDamage(dinfo); } SoundDefOf.TrapSpring.PlayOneShot(new TargetInfo(base.Position, base.Map, false)); if (p == null) { return; } float num = this.GetStatValue(StatDefOf.TrapMeleeDamage, true) * DamageRandomFactorRange.RandomInRange * SRFPSRT_settings.Gettrapdamage(); float num2 = num / DamageCount; float armorPenetration = num2 * 0.015f * SRFPSRT_settings.Getarmorpenetrate(); int num3 = 0; while ((float)num3 < DamageCount) { DamageInfo dinfo = new DamageInfo(DamageDefOf.Stab, num2, armorPenetration, -1f, this, null, null, DamageInfo.SourceCategory.ThingOrUnknown, null); DamageWorker.DamageResult damageResult = p.TakeDamage(dinfo); if (num3 == 0) { BattleLogEntry_DamageTaken battleLogEntry_DamageTaken = new BattleLogEntry_DamageTaken(p, RulePackDefOf.DamageEvent_TrapSpike, null); Find.BattleLog.Add(battleLogEntry_DamageTaken); damageResult.AssociateWithLog(battleLogEntry_DamageTaken); } num3++; } Map map = base.Map; IntVec3 loc = this.Position; this.Destroy(DestroyMode.Vanish); Thing thing = GenSpawn.Spawn(ThingMaker.MakeThing(ThingDef.Named("Building_SRFPSRTunarmed"), this.Stuff), loc, map, WipeMode.Vanish); thing.SetFaction(Faction.OfPlayer, null); }
protected override void SpringSub(Pawn p) { int temp = UnityEngine.Random.Range(0, 5); if (temp == 0) { for (int i = 0; i < 3; i++) { Pawn pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("Rat"), null); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); IntVec3 spawncell = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 5, (IntVec3 c) => c.Standable(this.Map) && this.Map.reachability.CanReach(c, this, PathEndMode.Touch, TraverseParms.For(TraverseMode.PassDoors, Danger.Deadly, false))); Thing spawnedCreature = GenSpawn.Spawn(pawn, spawncell, this.Map, WipeMode.Vanish); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); } } else if (temp == 1) { for (int i = 0; i < 2; i++) { Pawn pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("Cat"), null); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); IntVec3 spawncell = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 5, (IntVec3 c) => c.Standable(this.Map) && this.Map.reachability.CanReach(c, this, PathEndMode.Touch, TraverseParms.For(TraverseMode.PassDoors, Danger.Deadly, false))); Thing spawnedCreature = GenSpawn.Spawn(pawn, spawncell, this.Map, WipeMode.Vanish); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); } } else if (temp == 2) { Pawn pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("Cougar"), null); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); IntVec3 spawncell = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 5, (IntVec3 c) => c.Standable(this.Map) && this.Map.reachability.CanReach(c, this, PathEndMode.Touch, TraverseParms.For(TraverseMode.PassDoors, Danger.Deadly, false))); Thing spawnedCreature = GenSpawn.Spawn(pawn, spawncell, this.Map, WipeMode.Vanish); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); } else if (temp == 3) { Pawn pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("WildBoar"), null); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); IntVec3 spawncell = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 5, (IntVec3 c) => c.Standable(this.Map) && this.Map.reachability.CanReach(c, this, PathEndMode.Touch, TraverseParms.For(TraverseMode.PassDoors, Danger.Deadly, false))); Thing spawnedCreature = GenSpawn.Spawn(pawn, spawncell, this.Map, WipeMode.Vanish); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); } else { Pawn pawn = PawnGenerator.GeneratePawn(PawnKindDef.Named("Bear_Grizzly"), null); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); IntVec3 spawncell = CellFinder.RandomClosewalkCellNear(this.Position, this.Map, 5, (IntVec3 c) => c.Standable(this.Map) && this.Map.reachability.CanReach(c, this, PathEndMode.Touch, TraverseParms.For(TraverseMode.PassDoors, Danger.Deadly, false))); Thing spawnedCreature = GenSpawn.Spawn(pawn, spawncell, this.Map, WipeMode.Vanish); pawn.mindState.mentalStateHandler.TryStartMentalState(MentalStateDefOf.Berserk, null, true, false, null, false); } SoundDefOf.TrapSpring.PlayOneShot(new TargetInfo(base.Position, base.Map, false)); if (p == null) { return; } float num = this.GetStatValue(StatDefOf.TrapMeleeDamage, true) * DamageRandomFactorRange.RandomInRange * SRFPSRT_settings.Gettrapdamage(); float num2 = num / DamageCount; float armorPenetration = num2 * 0.015f * SRFPSRT_settings.Getarmorpenetrate(); int num3 = 0; while ((float)num3 < DamageCount) { DamageInfo dinfo = new DamageInfo(DamageDefOf.Stab, num2, armorPenetration, -1f, this, null, null, DamageInfo.SourceCategory.ThingOrUnknown, null); DamageWorker.DamageResult damageResult = p.TakeDamage(dinfo); if (num3 == 0) { BattleLogEntry_DamageTaken battleLogEntry_DamageTaken = new BattleLogEntry_DamageTaken(p, RulePackDefOf.DamageEvent_TrapSpike, null); Find.BattleLog.Add(battleLogEntry_DamageTaken); damageResult.AssociateWithLog(battleLogEntry_DamageTaken); } num3++; } Map map = base.Map; IntVec3 loc = this.Position; Thing thing = GenSpawn.Spawn(ThingMaker.MakeThing(ThingDef.Named("Building_SRFPSRTunarmed"), this.Stuff), loc, map, WipeMode.Vanish); thing.SetFaction(Faction.OfPlayer, null); }