private void AffectCell(IntVec3 c) { if (c.InBounds(base.Map)) { bool flag = this.ShouldCellBeAffectedOnlyByDamage(c); if (!flag) { if (Rand.Chance(this.preExplosionSpawnChance) && c.Walkable(base.Map)) { this.TrySpawnExplosionThing(this.preExplosionSpawnThingDef, c, this.preExplosionSpawnThingCount); } } this.damType.Worker.ExplosionAffectCell(this, c, this.damagedThings, !flag); if (!flag) { if (Rand.Chance(this.postExplosionSpawnChance) && c.Walkable(base.Map)) { this.TrySpawnExplosionThing(this.postExplosionSpawnThingDef, c, this.postExplosionSpawnThingCount); } } float num = this.chanceToStartFire; if (this.damageFalloff) { num *= Mathf.Lerp(1f, 0.2f, c.DistanceTo(base.Position) / this.radius); } if (Rand.Chance(num)) { FireUtility.TryStartFireIn(c, base.Map, Rand.Range(0.1f, 0.925f)); } } }
public float GetArmorPenetrationAt(IntVec3 c) { if (!this.damageFalloff) { return(this.armorPenetration); } float t = c.DistanceTo(base.Position) / this.radius; return(Mathf.Lerp(this.armorPenetration, this.armorPenetration * 0.2f, t)); }
public int GetDamageAmountAt(IntVec3 c) { if (!damageFalloff) { return(damAmount); } float t = c.DistanceTo(base.Position) / radius; return(Mathf.Max(GenMath.RoundRandom(Mathf.Lerp(damAmount, (float)damAmount * 0.2f, t)), 1)); }
public int GetDamageAmountAt(IntVec3 c) { if (!this.damageFalloff) { return(this.damAmount); } float t = c.DistanceTo(base.Position) / this.radius; int a = GenMath.RoundRandom(Mathf.Lerp((float)this.damAmount, (float)this.damAmount * 0.2f, t)); return(Mathf.Max(a, 1)); }
public int GetDamageAmountAt(IntVec3 c) { if (!this.dealMoreDamageAtCenter) { return(this.damAmount); } float t = c.DistanceTo(base.Position) / this.radius; int a = GenMath.RoundRandom(Mathf.Lerp((float)this.damAmount, (float)((float)this.damAmount * 0.20000000298023224), t)); return(Mathf.Max(a, 1)); }
public float GetArmorPenetrationAt(IntVec3 c) { float result; if (!this.damageFalloff) { result = this.armorPenetration; } else { float t = c.DistanceTo(base.Position) / this.radius; result = Mathf.Lerp(this.armorPenetration, this.armorPenetration * 0.2f, t); } return(result); }