public static Effect ModifyEffect(Effect eff) { Effect effMod = new Effect(); effMod.SetAsModifier(); Effect effMul = new Effect(); effMul.SetAsMultiplier(); for (int i = 0; i < ePIDList.Count; i++) { Perk perk = GetPerk(ePIDList[i]); if (!perk.CheckID(eff.prefabID)) { continue; } effMul.stun |= perk.effect.stun; if (perk.IsMultiplier()) { effMul.ApplyMultiplier(perk.effect); } else { effMul.ApplyModifier(perk.effect); } } eff.ApplyModifier(effMod); eff.ApplyMultiplier(effMul); return(eff); }
public virtual void Awake() { thisT = transform; thisObj = gameObject; bool checkCD = IsTurret() || IsAOE() || IsResource() || IsSpawner(); bool checkHit = IsTurret() || IsAOE() || IsMine(); if (statsList.Count == 0) { statsList.Add(new Stats()); } for (int i = 0; i < statsList.Count; i++) { statsList[i].VerifyBaseStats(true, checkCD, checkHit); } if (shootPoint.Count == 0) { shootPoint.Add(thisT); } for (int i = 0; i < shootPoint.Count; i++) { if (shootPoint[i] == null) { shootPoint.RemoveAt(i); } } activeEffectMod = new Effect(); activeEffectMod.SetAsModifier(); activeEffectMul = new Effect(); activeEffectMul.SetAsMultiplier(); if (snapAiming || turretPivot == null) { aimed = true; } InitAnimation(); }
public void UpdateActiveEffect() { activeEffectMod = new Effect(); activeEffectMod.SetAsModifier(); activeEffectMul = new Effect(); activeEffectMul.SetAsMultiplier(); for (int i = 0; i < allEffectList.Count; i++) { activeEffectMod.stun |= allEffectList[i].stun; if (!allEffectList[i].IsMultiplier()) { activeEffectMod.stats.hp += allEffectList[i].stats.hp; activeEffectMod.stats.sh += allEffectList[i].stats.sh; activeEffectMod.stats.hpRate += allEffectList[i].stats.hpRate * DamageTable.GetModifier(GetArmorType(), allEffectList[i].stats.damageType); activeEffectMod.stats.shRate += allEffectList[i].stats.shRate; activeEffectMod.stats.speed += allEffectList[i].stats.speed; activeEffectMod.stats.damageMin += allEffectList[i].stats.damageMin; activeEffectMod.stats.damageMax += allEffectList[i].stats.damageMax; activeEffectMod.stats.attackRange += allEffectList[i].stats.attackRange; activeEffectMod.stats.aoeRange += allEffectList[i].stats.aoeRange; activeEffectMod.stats.cooldown += allEffectList[i].stats.cooldown; activeEffectMod.stats.hit += allEffectList[i].stats.hit; activeEffectMod.stats.dodge += allEffectList[i].stats.dodge; activeEffectMod.stats.critChance += allEffectList[i].stats.critChance; activeEffectMod.stats.critMultiplier += allEffectList[i].stats.critMultiplier; activeEffectMod.stats.dmgReduc += allEffectList[i].stats.dmgReduc; activeEffectMod.stats.critReduc += allEffectList[i].stats.critReduc; activeEffectMod.stats.effectOnHitChance += allEffectList[i].stats.effectOnHitChance; for (int n = 0; n < activeEffectMod.stats.rscGain.Count; n++) { activeEffectMod.stats.rscGain[n] += allEffectList[i].stats.rscGain[n]; } } else { activeEffectMul.stats.hp *= allEffectList[i].stats.hp; activeEffectMul.stats.sh *= allEffectList[i].stats.sh; activeEffectMul.stats.hpRate *= allEffectList[i].stats.hpRate; activeEffectMul.stats.shRate *= allEffectList[i].stats.shRate; activeEffectMul.stats.speed *= allEffectList[i].stats.speed; activeEffectMul.stats.damageMin *= allEffectList[i].stats.damageMin; activeEffectMul.stats.damageMax *= allEffectList[i].stats.damageMax; activeEffectMul.stats.attackRange *= allEffectList[i].stats.attackRange; activeEffectMul.stats.aoeRange *= allEffectList[i].stats.aoeRange; activeEffectMul.stats.cooldown *= allEffectList[i].stats.cooldown; activeEffectMul.stats.hit *= allEffectList[i].stats.hit; activeEffectMul.stats.dodge *= allEffectList[i].stats.dodge; activeEffectMul.stats.critChance *= allEffectList[i].stats.critChance; activeEffectMul.stats.critMultiplier *= allEffectList[i].stats.critMultiplier; activeEffectMul.stats.dmgReduc *= allEffectList[i].stats.dmgReduc; activeEffectMul.stats.critReduc *= allEffectList[i].stats.critReduc; activeEffectMul.stats.effectOnHitChance *= allEffectList[i].stats.effectOnHitChance; for (int n = 0; n < activeEffectMul.stats.rscGain.Count; n++) { activeEffectMul.stats.rscGain[n] *= allEffectList[i].stats.rscGain[n]; } } } }
public void ClearAllEffect() //called when destroyed { activeEffectMod = new Effect(); activeEffectMod.SetAsModifier(); activeEffectMul = new Effect(); activeEffectMul.SetAsMultiplier(); allEffectList = new List <Effect>(); }