public SecondaryEffect DeepCopy() { SecondaryEffect other = (SecondaryEffect)this.MemberwiseClone(); other.boosts = this.boosts.ShallowCopy(); return(other); }
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)); }
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 }