コード例 #1
0
 public Damage(double[] _dmgArray, Data.DamageType _statType = Data.DamageType.Cap)
 {
     dmgArray = _dmgArray;
     totalDmg = 0;
     for (int i = 0; i < dmgArray.Count(); i++)
     {
         totalDmg += dmgArray[i];
     }
     statType = _statType;
 }
コード例 #2
0
 public Damage(double dmg, Data.DamageType dmgType, bool _triggerStat = false)
 {
     dmgArray = new double[(int)Data.DamageType.Cap];
     dmgArray[(int)dmgType] = dmg;
     totalDmg = 0;
     for (int i = 0; i < dmgArray.Count(); i++)
     {
         totalDmg += dmgArray[i];
     }
     statType = _triggerStat ? dmgType : Data.DamageType.Cap;
 }
コード例 #3
0
 public void Combine(Mod mod)
 {
     for (int i = 0; i < multiplier.Count(); i++)
     {
         multiplier[i] += mod.multiplier[i];
     }
     while (mod.elemQueue.Count() > 0)
     {
         Data.DamageType temp = mod.elemQueue.Dequeue();
         if (!elemQueue.Contains(temp))
         {
             elemQueue.Enqueue(temp);
         }
     }
 }
コード例 #4
0
        public void Modify(Mod mod)
        {
            for (int i = 0; i < dmgArray.Count(); i++)
            {
                dmgArray[i] *= (1 + mod.multiplier[(int)Data.ModProp.Base]);
            }
            totalDmg = 0;
            for (int i = 0; i < dmgArray.Count(); i++)
            {
                totalDmg += dmgArray[i];
            }
            Data.DamageType elemA = Data.DamageType.Cap, elemB;
            while (mod.elemQueue.Count() > 0)
            {
                elemB = mod.elemQueue.Dequeue();
                if (elemA == Data.DamageType.Cap)
                {
                    elemA = elemB;
                }
                else
                {
                    dmgArray[(int)Data.damageCombine[(int)elemA, (int)elemB]] += totalDmg * (mod.multiplier[(int)elemA + Data.elemDiff] + mod.multiplier[(int)elemB + Data.elemDiff]);
                    elemA = Data.DamageType.Cap;
                }
            }
            if (elemA != Data.DamageType.Cap)
            {
                dmgArray[(int)elemA] += totalDmg * (mod.multiplier[(int)elemA + Data.elemDiff]);
            }

            dmgArray[(int)Data.DamageType.Impact]   *= (1 + mod.multiplier[(int)Data.ModProp.Impact]);
            dmgArray[(int)Data.DamageType.Puncture] *= (1 + mod.multiplier[(int)Data.ModProp.Puncture]);
            dmgArray[(int)Data.DamageType.Slash]    *= (1 + mod.multiplier[(int)Data.ModProp.Slash]);

            totalDmg = 0;
            for (int i = 0; i < dmgArray.Count(); i++)
            {
                totalDmg += dmgArray[i];
            }
        }
コード例 #5
0
 public Damage StatTrigger(Data.DamageType statType)
 {
     double[] newDmgArray = (double[])dmgArray.Clone();
     return(new Damage(newDmgArray, statType));
 }