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; }
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; }
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); } } }
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]; } }
public Damage StatTrigger(Data.DamageType statType) { double[] newDmgArray = (double[])dmgArray.Clone(); return(new Damage(newDmgArray, statType)); }