void applyEffect(StatusEffect effect, bool toPlayer) { effect = Instantiate(effect); if (toPlayer) { pEffects.Add(effect); print("TURNS HK!!: " + effect.turns.ToString()); pCritMod += effect.crit; pBTHMod += effect.bth; pDefenseMod += effect.defense; pBoost *= effect.boost; for (int i = 0; i < effect.resistances.Count; i++) { for (int j = 0; j < pResistancesMod.Count; j++) { if (pResistancesMod[j].name == effect.resistances[i].name) { Armour.Resistance res = new Armour.Resistance(pResistancesMod[j].name, pResistancesMod[j].value + effect.resistances[i].value); pResistancesMod[j] = res; } } } } else { eEffects.Add(effect); eCritMod += effect.crit; eBTHMod += effect.bth; eDefenseMod += effect.defense; eBoost *= effect.boost; for (int i = 0; i < effect.resistances.Count; i++) { for (int j = 0; j < eResistancesMod.Count; j++) { if (eResistancesMod[j].name == effect.resistances[i].name) { Armour.Resistance res = new Armour.Resistance(eResistancesMod[j].name, eResistancesMod[j].value + effect.resistances[i].value); eResistancesMod[j] = res; } } } } player.GetComponent <InventoryManager>().pEffects = pEffects; player.GetComponent <InventoryManager>().eEffects = eEffects; }
List <Armour.Resistance> addResistances(List <Armour.Resistance> a, List <Armour.Resistance> b) { List <Armour.Resistance> n = new List <Armour.Resistance>(); for (int i = 0; i < a.Count; i++) { for (int j = 0; j < b.Count; j++) { if (a[j].name == b[i].name) { Armour.Resistance res = new Armour.Resistance(a[j].name, a[j].value + b[i].value); n.Add(res); } } } return(n); }
void Start() { animator = GetComponent <Animator>(); for (int i = 0; i < resistances.Count; i++) { Armour.Resistance res = resistances[i]; Armour.Resistance newres = new Armour.Resistance(); newres.name = res.name; for (int j = 0; j < currentWeapon.resistances.Count; j++) { Armour.Resistance resadd = currentWeapon.resistances[j]; if (resadd.name == res.name) { newres.value = resadd.value + res.value; } } resistances[i] = newres; } for (int i = 0; i < stats.Count; i++) { Armour.Stat stat = stats[i]; Armour.Stat newstat = new Armour.Stat(); newstat.name = stat.name; for (int j = 0; j < currentWeapon.stats.Count; j++) { Armour.Stat statadd = currentWeapon.stats[j]; if (statadd.name == stat.name) { newstat.value = statadd.value + stat.value; } } stats[i] = newstat; } }
void updateEffects() { List <Attack> pDots = new List <Attack>(); List <Attack> eDots = new List <Attack>(); List <StatusEffect> pEffs = new List <StatusEffect>(); List <StatusEffect> eEffs = new List <StatusEffect>(); for (int i = 0; i < pEffects.Count; i++) { StatusEffect effect = pEffects[i]; effect.turns = effect.turns - 1; pEffects[i] = effect; if (effect.dot != null) { pDots.Add(effect.dot); pEffects.Add(effect); } print("TURNS OK!!: " + effect.turns.ToString()); if (effect.turns == 0) { pEffects.Remove(effect); pCritMod -= effect.crit; pBTHMod -= effect.bth; pDefenseMod -= effect.defense; pBoost /= effect.boost; for (int j = 0; j < effect.resistances.Count; j++) { for (int k = 0; k < pResistancesMod.Count; k++) { if (pResistancesMod[k].name == effect.resistances[j].name) { Armour.Resistance res = new Armour.Resistance(pResistancesMod[k].name, pResistancesMod[k].value - effect.resistances[j].value); pResistancesMod[k] = res; } } } } } for (int i = 0; i < eEffects.Count; i++) { StatusEffect effect = eEffects[i]; effect.turns = effect.turns - 1; eEffects[i] = effect; if (effect.dot != null) { eDots.Add(effect.dot); eEffs.Add(effect); } if (effect.turns == 0) { eEffects.Remove(effect); eCritMod -= effect.crit; eBTHMod -= effect.bth; eDefenseMod -= effect.defense; eBoost /= effect.boost; for (int j = 0; j < effect.resistances.Count; j++) { for (int k = 0; k < eResistancesMod.Count; k++) { if (eResistancesMod[k].name == effect.resistances[j].name) { Armour.Resistance res = new Armour.Resistance(eResistancesMod[k].name, eResistancesMod[k].value - effect.resistances[j].value); eResistancesMod[k] = res; } } } } } player.GetComponent <InventoryManager>().pEffects = pEffects; player.GetComponent <InventoryManager>().eEffects = eEffects; StartCoroutine(hitDots(0.25f, pDots, eDots, pEffs, eEffs)); }