예제 #1
0
 public void OnStartOfTurnEvent(HealthAndStatuses statusOn, HealthAndStatuses opponent, int duration)
 {
     foreach (Effect effect in onStartOfTurn)
     {
         effect.OnEffectPlay(statusOn, opponent, duration);
     }
 }
예제 #2
0
 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();
         }
     }
 }
예제 #4
0
    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));
        }
    }
예제 #5
0
 public void OnDurationChangeEvent(HealthAndStatuses statusOn, HealthAndStatuses opponent, int duration)
 {
     foreach (Effect effect in onDurationChange)
     {
         effect.OnEffectPlay(statusOn, opponent, duration);
     }
 }
예제 #6
0
 override public KeyValuePair <string, int> GetNumberByString(string numberName, HealthAndStatuses caster)
 {
     switch (numberName)
     {
     default: return(new KeyValuePair <string, int>(0.ToString(), -2));
     }
 }
예제 #7
0
 override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0)
 {
     casterOpponent.TakeDamage(damage, caster);
     if (casterOpponent.currentHealth <= 0)
     {
         caster.IncreaseMaximumHealth(additionalHealth);
     }
 }
예제 #8
0
 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));
        }
    }
예제 #10
0
    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();
 }
예제 #12
0
 override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0)
 {
     if (armorToCaster)
     {
         caster.SetArmor(caster.armor * 2);
     }
     else
     {
         casterOpponent.SetArmor(casterOpponent.armor * 2);
     }
 }
예제 #13
0
 public int GetDamage(HealthAndStatuses caster)
 {
     if (!dealDamageToCaster)
     {
         return(Mathf.RoundToInt((caster.armor * damagePerArmor + caster.attackPower) * caster.attackPowerCoef));
     }
     else
     {
         return(0);
     }
 }
예제 #14
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);
     }
 }
예제 #15
0
 override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0)
 {
     if (armorToCaster)
     {
         caster.GiveArmor(armor, caster);
     }
     else
     {
         casterOpponent.GiveArmor(armor, caster);
     }
 }
예제 #16
0
 public int GetDuration(HealthAndStatuses caster = null)
 {
     if (caster != null)
     {
         return(GetDurationWithMod(caster).Key);
     }
     else
     {
         return(duration);
     }
 }
예제 #17
0
 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);
     }
 }
예제 #18
0
 override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0)
 {
     if (dealDamageToStatusOwner)
     {
         caster.TakeDamage(power * damagePerStack);
     }
     else
     {
         casterOpponent.TakeDamage(power * damagePerStack);
     }
 }
예제 #19
0
    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));
        }
    }
예제 #20
0
    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));
        }
    }
예제 #21
0
 override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0)
 {
     if (applyOnSelf)
     {
         caster.TakeStatus(statusToGain, power);
     }
     else
     {
         casterOpponent.TakeStatus(statusToGain, power);
     }
 }
예제 #22
0
 override public void OnEffectPlay(HealthAndStatuses caster, HealthAndStatuses casterOpponent, int power = 0)
 {
     if (multiplyOnSelf)
     {
         caster.MultiplyStatus(status, multiplier);
     }
     else
     {
         casterOpponent.MultiplyStatus(status, multiplier);
     }
 }
예제 #23
0
    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);
        }
    }
예제 #25
0
    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);
    }
예제 #26
0
    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));
    }
예제 #27
0
    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));
    }
예제 #28
0
 public int GetDuration(HealthAndStatuses caster)
 {
     return(0);
 }
예제 #29
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);
 }