public void OnStartOfTurnEvent(HealthAndStatuses statusOn, HealthAndStatuses opponent, int duration) { foreach (Effect effect in onStartOfTurn) { effect.OnEffectPlay(statusOn, opponent, duration); } }
public void OnTakeDamage(HealthAndStatuses statusOn, HealthAndStatuses opponent, int duration) { foreach (Effect effect in onTakeDamage) { effect.OnEffectPlay(statusOn, opponent, duration); } }
public void TakeDamage(int damage, HealthAndStatuses damager) { if (isDead) { return; } damage = Mathf.RoundToInt((damage + damager.attackPower) * damager.attackPowerCoef); if (damage < 0) { damage = 0; } damage = TakeArmor(damage); currentHealth = Mathf.Max(currentHealth - damage, 0); UpdateText(); if (currentHealth <= 0) { Die(); } else { TakeDamageStatusUpdate(); if (this as HealthAndStatusesPlayer == null) { EnemyFight.instance.TookDamage(); } else { PlayerInformation.instance.TookDamage(); } } }
KeyValuePair <int, int> GetDurationWithMod(HealthAndStatuses caster) { int code, newDuration; switch (mod) { case Mods.NoMod: return(new KeyValuePair <int, int>(duration, 0)); case Mods.ArmorMod: code = 0; newDuration = Mathf.RoundToInt((duration + caster.armorPower) * caster.armorPowerCoef); if (newDuration > duration) { code = 1; } else if (newDuration < duration) { code = -1; } return(new KeyValuePair <int, int>(newDuration, code)); case Mods.AttackMod: code = 0; newDuration = Mathf.RoundToInt((duration + caster.attackPower) * caster.attackPowerCoef); return(new KeyValuePair <int, int>(newDuration, code)); default: return(new KeyValuePair <int, int>(duration, 0)); } }
public void OnDurationChangeEvent(HealthAndStatuses statusOn, HealthAndStatuses opponent, int duration) { foreach (Effect effect in onDurationChange) { effect.OnEffectPlay(statusOn, opponent, duration); } }
override public KeyValuePair <string, int> GetNumberByString(string numberName, HealthAndStatuses caster) { switch (numberName) { default: return(new KeyValuePair <string, int>(0.ToString(), -2)); } }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { casterOpponent.TakeDamage(damage, caster); if (casterOpponent.currentHealth <= 0) { caster.IncreaseMaximumHealth(additionalHealth); } }
public void onPlay(HealthAndStatuses caster) { foreach (Effect effect in applyEffectsOnCardPlay) { effect.OnEffectPlay(PlayerInformation.instance.playerHealthAndEffects, EnemyFight.instance.enemyHealthAndStatus); } //if(Random.Range(0,2)==1) BattleController.instance.DrawCards(1); }
override public KeyValuePair <string, int> GetNumberByString(string numberName, HealthAndStatuses caster) { switch (numberName) { case "damagePerStack": return(new KeyValuePair <string, int>(cardsPerStack.ToString(), 0)); default: return(new KeyValuePair <string, int>(0.ToString(), -2)); } }
override public KeyValuePair <string, int> GetNumberByString(string numberName, HealthAndStatuses caster) { switch (numberName) { case "damage": return(GetDamagePair(caster, 0, damagePerArmor * caster.armor)); default: return(new KeyValuePair <string, int>(0.ToString(), -2)); } }
public void GiveArmor(int armor, HealthAndStatuses caster) { armor = Mathf.RoundToInt((armor + caster.armorPower) * caster.armorPowerCoef); if (armor < 0) { armor = 0; } this.armor += armor; UpdateText(); }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { if (armorToCaster) { caster.SetArmor(caster.armor * 2); } else { casterOpponent.SetArmor(casterOpponent.armor * 2); } }
public int GetDamage(HealthAndStatuses caster) { if (!dealDamageToCaster) { return(Mathf.RoundToInt((caster.armor * damagePerArmor + caster.attackPower) * caster.attackPowerCoef)); } else { return(0); } }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { if (dealDamageToCaster) { caster.TakeDamage(caster.armor * damagePerArmor, caster); } else { casterOpponent.TakeDamage(caster.armor * damagePerArmor, caster); } }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { if (armorToCaster) { caster.GiveArmor(armor, caster); } else { casterOpponent.GiveArmor(armor, caster); } }
public int GetDuration(HealthAndStatuses caster = null) { if (caster != null) { return(GetDurationWithMod(caster).Key); } else { return(duration); } }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { if (applyOnCaster) { caster.TakeStatus(status, GetDurationWithMod(caster).Key); } else { casterOpponent.TakeStatus(status, GetDurationWithMod(caster).Key); } }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { if (dealDamageToStatusOwner) { caster.TakeDamage(power * damagePerStack); } else { casterOpponent.TakeDamage(power * damagePerStack); } }
override public KeyValuePair <string, int> GetNumberByString(string numberName, HealthAndStatuses caster) { switch (numberName) { case "damage": return(GetDamagePair(caster, damage)); case "additionalHealth": return(new KeyValuePair <string, int>(additionalHealth.ToString(), 0)); default: return(new KeyValuePair <string, int>(0.ToString(), -2)); } }
override public KeyValuePair <string, int> GetNumberByString(string numberName, HealthAndStatuses caster) { switch (numberName) { case "multiplier": return(new KeyValuePair <string, int>(multiplier.ToString(), 0)); case "status": return(new KeyValuePair <string, int>(status.name.ToString(), 2)); default: return(new KeyValuePair <string, int>(0.ToString(), -2)); } }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { if (applyOnSelf) { caster.TakeStatus(statusToGain, power); } else { casterOpponent.TakeStatus(statusToGain, power); } }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { if (multiplyOnSelf) { caster.MultiplyStatus(status, multiplier); } else { casterOpponent.MultiplyStatus(status, multiplier); } }
override public KeyValuePair <string, int> GetNumberByString(string numberName, HealthAndStatuses caster) { switch (numberName) { case "duration": KeyValuePair <int, int> tmpPair = GetDurationWithMod(caster); return(new KeyValuePair <string, int>(tmpPair.Key.ToString(), tmpPair.Value)); case "status": return(new KeyValuePair <string, int>(status.name.ToString(), 2)); default: return(new KeyValuePair <string, int>(duration.ToString(), -2)); } }
public HealthAndStatuses GetOpponent(HealthAndStatuses opponentOf) { HealthAndStatusesPlayer castHealthAndStatuses = opponentOf as HealthAndStatusesPlayer; if (castHealthAndStatuses != null) { return(EnemyFight.instance.enemyHealthAndStatus); } else { return(PlayerInformation.instance.playerHealthAndEffects); } }
public void GenerateEnemyFight(GameObject _enemyObject, Enemy _enemy, float roomMultiplier) { statsMultiplier = roomMultiplier; enemy = _enemy; enemy.ResetBehaviour(); enemyObject = _enemyObject; customAnimation = enemyObject.GetComponentInChildren <CustomAnimation>(); enemyHealthAndStatus = new HealthAndStatuses(); enemyHealthAndStatus.SetStatusDisplayer(statusDisplayer); enemyHealthText = enemyObject.GetComponentInChildren <TextMeshProUGUI>(); enemyHealthAndStatus.SetComponent(Mathf.RoundToInt(Random.Range(enemy.minMaximumHealth, enemy.maxMaximumHealth + 1) * statsMultiplier), enemyHealthText, statsMultiplier); }
protected KeyValuePair <string, int> GetArmorPair(HealthAndStatuses caster, int startingArmor, int additionalArmor = 0) { int code; int armor; armor = Mathf.RoundToInt((startingArmor + additionalArmor + caster.armorPower) * caster.armorPowerCoef); if (armor < 0) { armor = 0; } if (armor < startingArmor) { code = -1; } else if (armor == startingArmor) { code = 0; } else { code = 1; } return(new KeyValuePair <string, int>(armor.ToString(), code)); }
protected KeyValuePair <string, int> GetDamagePair(HealthAndStatuses caster, int startingDamage, int additionalDamage = 0) { int code; int damage; damage = Mathf.RoundToInt((startingDamage + additionalDamage + caster.attackPower) * caster.attackPowerCoef); if (damage < 0) { damage = 0; } if (damage < startingDamage) { code = -1; } else if (damage == startingDamage) { code = 0; } else { code = 1; } return(new KeyValuePair <string, int>(damage.ToString(), code)); }
public int GetDuration(HealthAndStatuses caster) { return(0); }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { caster.attackPower = power; }
override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0) { Debug.Log("CardDrawChange = " + power); BattleController.instance.StartOfTurnCardChange(power * cardsPerStack); }