public void CreateExplosion(Part part) { float explodeScale = 0; IEnumerator <PartResource> resources = part.Resources.GetEnumerator(); while (resources.MoveNext()) { if (resources.Current == null) { continue; } switch (resources.Current.resourceName) { case "LiquidFuel": explodeScale += (float)resources.Current.amount; break; case "Oxidizer": explodeScale += (float)resources.Current.amount; break; } } if (BDArmorySettings.DRAW_DEBUG_LABELS) { Debug.Log("[BDArmory]: Penetration of bullet detonated fuel!"); } resources.Dispose(); explodeScale /= 100; part.explosionPotential = explodeScale; PartExploderSystem.AddPartToExplode(part); }
public void DestroyPart() { if (part.mass <= 2f) { part.explosionPotential *= 0.85f; } PartExploderSystem.AddPartToExplode(part); }
public static void ForceDeadVessel(Vessel v) { Debug.Log("[BDArmory] GM Killed Vessel " + v.GetDisplayName()); foreach (MissileFire missileFire in v.FindPartModulesImplementing <MissileFire>()) { PartExploderSystem.AddPartToExplode(missileFire.part); ExplosionFx.CreateExplosion(missileFire.part.transform.position, 0.2f, explModelPath, explSoundPath, ExplosionSourceType.Missile, 0, missileFire.part); } }
public static void ForceDeadVessel(Vessel v) { Debug.Log("[BDArmory.Misc]: GM Killed Vessel " + v.GetDisplayName()); foreach (var missileFire in VesselModuleRegistry.GetModules <MissileFire>(v)) { PartExploderSystem.AddPartToExplode(missileFire.part); ExplosionFx.CreateExplosion(missileFire.part.transform.position, 0.2f, explModelPath, explSoundPath, ExplosionSourceType.Missile, 0, missileFire.part); } }
public void AddDamageToKerbal(KerbalEVA kerbal, float damage) { damage = Mathf.Max(damage, 0f) * -1; Hitpoints += damage; if (Hitpoints <= 0) { // oh the humanity! PartExploderSystem.AddPartToExplode(kerbal.part); } }