public void CardsFight(CardController attacker, CardController defender) { defender.Card.GetDamage(attacker.Card.Attack); attacker.OnDamageDeal(); defender.OnTakeDamage(attacker); attacker.Card.GetDamage(defender.Card.Attack); attacker.OnTakeDamage(); attacker.CheckForAlive(); defender.CheckForAlive(); }
public void UseSpell(CardController target) { switch (Card.Spell) { case Card.SpellType.HEAL_ALLY_FIELD_CARDS: var allyCards = IsPlayerCard ? gameManager.PlayerFieldCards : gameManager.EnemyFieldCards; foreach (var card in allyCards) { card.Card.Defense += Card.SpellValue; card.Info.RefreshData(); } break; case Card.SpellType.DAMAGE_ENEMY_FIELD_CARDS: var enemyCards = IsPlayerCard ? new List <CardController>(gameManager.EnemyFieldCards): new List <CardController>(gameManager.PlayerFieldCards); foreach (var card in enemyCards) { GiveDamageTo(card, Card.SpellValue); } break; case Card.SpellType.HEAL_ALLY_HERO: if (IsPlayerCard) { gameManager.PlayerHP += Card.SpellValue; } else { gameManager.EnemyHP += Card.SpellValue; } gameManager.ShowHP(); break; case Card.SpellType.DAMAGE_ENEMY_HERO: if (IsPlayerCard) { gameManager.EnemyHP -= Card.SpellValue; } else { gameManager.PlayerHP -= Card.SpellValue; } gameManager.ShowHP(); gameManager.CheckForResult(); break; case Card.SpellType.HEAL_ALLY_CARD: target.Card.Defense += Card.SpellValue; break; case Card.SpellType.DAMAGE_ENEMY_CARD: GiveDamageTo(target, Card.SpellValue); break; case Card.SpellType.SHIELD_ON_ALLY_CARD: if (!target.Card.Abilities.Exists(x => x == Card.AbilityType.SHIELD)) { target.Card.Abilities.Add(Card.AbilityType.SHIELD); } break; case Card.SpellType.PROVOCATION_ON_ALLY_CARD: if (!target.Card.Abilities.Exists(x => x == Card.AbilityType.PROVOCATION)) { target.Card.Abilities.Add(Card.AbilityType.PROVOCATION); } break; case Card.SpellType.BUFF_CARD_DAMAGE: target.Card.Attack += Card.SpellValue; break; case Card.SpellType.DEBUFF_CARD_DAMAGE: target.Card.Attack = Mathf.Clamp(target.Card.Attack - Card.SpellValue, 0, int.MaxValue); break; } if (target != null) { target.Ability.OnCast(); target.CheckForAlive(); } DestroyCard(); }
void GiveDamageTo(CardController card, int damage) { card.Card.GetDamage(damage); card.CheckForAlive(); card.OnTakeDamage(); }