Пример #1
0
        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);
        }
Пример #2
0
        public void DestroyPart()
        {
            if (part.mass <= 2f)
            {
                part.explosionPotential *= 0.85f;
            }

            PartExploderSystem.AddPartToExplode(part);
        }
Пример #3
0
 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);
     }
 }
Пример #4
0
 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);
     }
 }
Пример #5
0
        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);
            }
        }