예제 #1
0
        public SecondaryEffect DeepCopy()
        {
            SecondaryEffect other = (SecondaryEffect)this.MemberwiseClone();

            other.boosts = this.boosts.ShallowCopy();

            return(other);
        }
예제 #2
0
    public IEnumerator ApplyEffect(SecondaryEffect effect, Monster monster)
    {
        Debug.Log("Effect: " + effect);
        switch (effect.type)
        {
        case SecondaryEffectType.SELF:
            switch (effect.effect)
            {
            case SecondaryEffectEffect.HEALING_HALF:
                WriteToLog(monster.name + " healed for " + (int)(monster.maxHP / 2f) + " HP!");
                monster.healDamage((int)(monster.maxHP / 2f));
                if (monster == player1Monster)
                {
                    StartCoroutine(HPBarFillAnim(P1HPMeter, (float)player1Monster.currentHP / (float)player1Monster.maxHP));
                    P1HPText.GetComponent <Text> ().text = player1Monster.currentHP.ToString() + " / " + player1Monster.maxHP.ToString();
                }
                else
                {
                    StartCoroutine(HPBarFillAnim(P2HPMeter, (float)player2Monster.currentHP / (float)player2Monster.maxHP));
                    P2HPText.GetComponent <Text> ().text = player2Monster.currentHP.ToString() + " / " + player2Monster.maxHP.ToString();
                }
                break;

            case SecondaryEffectEffect.BOOST_SPEED_1:
                Debug.Log("SPEED UP!");
                WriteToLog(monster.name + "'s SPEED increased!");
                if (monster == player1Monster)
                {
                    //playdebuffanimp1
                    speedUpIndP1.SetActive(true);
                    player1Monster.SPEED.buffStat();
                    yield return(PlayBuffAnimP1());
                }
                else
                {
                    //playdebuffanimp2
                    speedUpIndP2.SetActive(true);
                    player2Monster.SPEED.buffStat();
                    yield return(PlayBuffAnimP2());
                }
                break;
            }
            break;

        case SecondaryEffectType.OTHER:
            Debug.Log("effect.effect: " + effect.effect);
            switch (effect.effect)
            {
            case SecondaryEffectEffect.LOWER_DEF_1:
                Debug.Log("DEFENSE DOWN!");
                WriteToLog(monster.name + "'s DEFENSE dropped!");
                if (monster == player1Monster)
                {
                    //playdebuffanimp1
                    defDownIndP1.SetActive(true);
                    player1Monster.DEF.debuffStat();
                    yield return(PlayDebuffAnimP1());
                }
                else
                {
                    //playdebuffanimp2
                    defDownIndP2.SetActive(true);
                    player2Monster.DEF.debuffStat();
                    yield return(PlayDebuffAnimP2());
                }
                break;
            }
            break;
        }
        yield return(new WaitForSeconds(0));
    }
예제 #3
0
 static SecondaryEffectList()
 {
     effectHeal    = new SecondaryEffect(SecondaryEffectType.SELF, SecondaryEffectEffect.HEALING_HALF);  //Heals self for 50%
     effectDefDown = new SecondaryEffect(SecondaryEffectType.OTHER, SecondaryEffectEffect.LOWER_DEF_1);  //Lowers enemy's defense by 1 stage
     effectSpeedUp = new SecondaryEffect(SecondaryEffectType.SELF, SecondaryEffectEffect.BOOST_SPEED_1); //Boosts own speed by 1 stage
 }