public void AttackUnitByUnit(BoardUnit attackingUnit, BoardUnit attackedUnit, int additionalDamage = 0) { int damageAttacked = 0; int damageAttacking; if (attackingUnit != null && attackedUnit != null) { int additionalDamageAttacker = _abilitiesController.GetStatModificatorByAbility(attackingUnit, attackedUnit, true); int additionalDamageAttacked = _abilitiesController.GetStatModificatorByAbility(attackedUnit, attackingUnit, false); damageAttacking = attackingUnit.CurrentDamage + additionalDamageAttacker + additionalDamage; if (damageAttacking > 0 && attackedUnit.HasBuffShield) { damageAttacking = 0; attackedUnit.HasUsedBuffShield = true; } attackedUnit.CurrentHp -= damageAttacking; _vfxController.SpawnGotDamageEffect(attackedUnit, -damageAttacking); attackedUnit.InvokeUnitDamaged(attackingUnit); attackingUnit.InvokeUnitAttacked(attackedUnit, damageAttacking, true); if (attackedUnit.CurrentHp > 0 && attackingUnit.AttackAsFirst || !attackingUnit.AttackAsFirst) { damageAttacked = attackedUnit.CurrentDamage + additionalDamageAttacked; if (damageAttacked > 0 && attackingUnit.HasBuffShield) { damageAttacked = 0; attackingUnit.HasUsedBuffShield = true; } attackingUnit.CurrentHp -= damageAttacked; _vfxController.SpawnGotDamageEffect(attackingUnit, -damageAttacked); attackingUnit.InvokeUnitDamaged(attackedUnit); attackedUnit.InvokeUnitAttacked(attackingUnit, damageAttacked, false); } _actionsQueueController.PostGameActionReport(_actionsQueueController.FormatGameActionReport( Enumerators.ActionType.ATTACK_CREATURE_BY_CREATURE, new object[] { attackingUnit, damageAttacking, attackedUnit, damageAttacked })); _tutorialManager.ReportAction(Enumerators.TutorialReportAction.ATTACK_CARD_CARD); } }
public void AttackPlayerByUnit(BoardUnit attackingUnit, Player attackedPlayer) { int damageAttacking = attackingUnit.CurrentDamage; if (attackingUnit != null && attackedPlayer != null) { attackedPlayer.Health -= damageAttacking; } attackingUnit.InvokeUnitAttacked(attackedPlayer, damageAttacking, true); _vfxController.SpawnGotDamageEffect(attackedPlayer, -damageAttacking); _tutorialManager.ReportAction(Enumerators.TutorialReportAction.ATTACK_CARD_HERO); _actionsQueueController.PostGameActionReport(_actionsQueueController.FormatGameActionReport( Enumerators.ActionType.ATTACK_PLAYER_BY_CREATURE, new object[] { attackingUnit, attackedPlayer })); }