예제 #1
0
        private HitpointTracker GetHP()
        {
            HitpointTracker hp = null;

            hp = part.FindModuleImplementing <HitpointTracker>();

            return(hp);
        }
예제 #2
0
        private void Setup()
        {
            hp = GetHP();

            partHPmax      = hp.maxHitPoints;
            partHPtotal    = hp.Hitpoints;
            partArmorMax   = hp.ArmorThickness;
            partArmorTotal = hp.Armor;
        }
예제 #3
0
 public override void OnStart(StartState state)
 {
     if (HighLogic.LoadedSceneIsFlight)
     {
         hpTracker = GetHP();
         hpTracker.maxHitPoints = 10000;
         hpTracker.Hitpoints    = 10000;
         HPcheck = hpTracker.maxHitPoints;
     }
     base.OnStart(state);
 }
예제 #4
0
 public override void OnStart(StartState state)
 {
     base.OnStart(state);
     if (HighLogic.LoadedSceneIsFlight)
     {
         shieldState = GetShieldState();
         shieldCheck = ShieldControl();
         hpTracker   = GetHP();
         CheckShieldState();
         calcSurfaceArea();
         hp      = hpTracker.Hitpoints;
         hpCheck = hp;
     }
 }
예제 #5
0
        private void DetectDamage()
        {
            hpTracker     = GetHP();
            armorModifier = hpTracker.Armor / hpTracker.ArmorThickness;

            var bullet = GameObject.FindObjectOfType <PooledBullet>();

            if (bullet.hasPenetrated)
            {
                if (hpTracker.Armor <= armorCheck)
                {
                    armorCheck = hpTracker.Armor;
                    var random = new System.Random().Next(0, 100);

                    if (random >= armorModifier * 100)
                    {
                        Kill();
                    }
                }
            }
        }
예제 #6
0
        private void CheckShieldHP()
        {
            hpTracker = GetHP();

            if (hp <= hpCheck)
            {
                var depletedEC = (hpCheck - hp) * ecDrain;
                this.part.RequestResource("ElectricCharge", depletedEC);
                hpCheck = hp;
            }

            if (hpTracker.Hitpoints < hpTracker.maxHitPoints * 0.05)
            {
                hpAvailable = false;
            }
            else
            {
                hpAvailable = true;
            }

            if (hpTracker.Hitpoints < hpTracker.maxHitPoints * 0.35)
            {
                shieldDeployable = false;
            }
            else
            {
                shieldDeployable = true;
            }

            if (hpTracker.Hitpoints < hpTracker.maxHitPoints * 0.99f)
            {
                GenerateHP();
            }

            if (hpTracker.Hitpoints < hpTracker.maxHitPoints * 0.0001 || hpTracker.Armor < hpTracker.ArmorThickness * 0.0001)
            {
                part.explode();
            }
        }
예제 #7
0
        private void CheckHP()
        {
            hpTracker = GetHP();
            hp        = hpTracker.Hitpoints;
            count     = 2;

            if (hp <= 10000)
            {
                var OrX = part.FindModuleImplementing <ModuleOrXBDAc>();

                if (OrX != null)
                {
                    var _hpToRemove = hp - HPcheck;
                    OrX.hpToRemove      = _hpToRemove;
                    hpTracker.Hitpoints = hpTracker.maxHitPoints;
                }
            }

            if (this.part.vessel.vesselName.Contains("Debris"))
            {
                this.part.Die();
            }
        }
예제 #8
0
        public void CheckPart()
        {
            hp             = GetHP();
            partHPtotal    = hp.Hitpoints;
            partArmorTotal = hp.Armor;

            if (stage != 1 || (!(partHPtotal <= partHPmax * DAMAGEMODIFIER1 / 100) &&
                               !(partArmorTotal <= partArmorMax * ARMORMODIFIER1 / 100)))
            {
                return;
            }
            stage             = 2;
            hp.Armor          = ARMORMODIFIER2 * partArmorMax / 100;
            hp.ArmorThickness = hp.Armor;
            hp.Hitpoints      = DAMAGEMODIFIER2 * partHPmax / 100;
            hp.maxHitPoints   = hp.Hitpoints;

            partHPmax      = hp.maxHitPoints;
            partHPtotal    = hp.Hitpoints;
            partArmorMax   = hp.ArmorThickness;
            partArmorTotal = hp.Armor;

            nextTextureEvent();
        }
예제 #9
0
 private void Setup()
 {
     hpTracker  = GetHP();
     armorCheck = hpTracker.Armor;
 }