private void HandleRecievingDamage() { _grid.GetCell(_currentTargetX, _currentTargetY).GetOccupiedBy().GetUnitAnimations().AnimateUnit("HURT"); _combatLog.LogCombat(Attack.AttackUnit(this, _grid.GetCell(_currentTargetX, _currentTargetY).GetOccupiedBy())); _grid.GetCell(_currentTargetX, _currentTargetY).GetOccupiedBy().SetHealth(); _grid.GetCell(_currentTargetX, _currentTargetY).GetOccupiedBy().HandleDeath(); EndAction(ActionType.Attack); }
public void Attack(ICharacter attacking) { CombatLog.LogCombat($"{DisplayChar} attacked {attacking.DisplayChar} for {Power} damage!"); attacking.Health -= Power; }
public void Die() { CombatLog.LogCombat($"{DisplayChar} died!"); ParentBoard.Data[X, Y].EntityOnTile = null; }
public bool ExecuteAbility(int targetX, int targetY, int unitX, int unitY) { Unit unit = _grid.GetCell(unitX, unitY).GetOccupiedBy(); if (_abilitiesData.abilityType == AbilityType.SingleTarget) { if (_grid.GetCell(targetX, targetY).GetOccupiedBy() && _grid.GetCell(targetX, targetY).GetPathNode().isAttackable) { if (_abilitiesData.damage > 0 && _grid.GetCell(targetX, targetY).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { _unitSounds.PlayAbilitySound(); _grid.GetCell(targetX, targetY).GetOccupiedBy().GetUnitAnimations().AnimateUnit("HURT"); _combatLog.LogCombat(Ability.AttackUnit(_abilitiesData, _grid.GetCell(targetX, targetY).GetOccupiedBy())); PutAbilityOnCD(); _grid.GetCell(targetX, targetY).GetOccupiedBy().SetHealth(); _grid.GetCell(targetX, targetY).GetOccupiedBy().HandleDeath(); return(true); } else if (_abilitiesData.heal > 0 && _grid.GetCell(targetX, targetY).GetOccupiedBy().GetStatistics().team == unit.GetStatistics().team) { _unitSounds.PlayAbilitySound(); _combatLog.LogCombat(Ability.HealUnit(_abilitiesData, _grid.GetCell(targetX, targetY).GetOccupiedBy())); _grid.GetCell(targetX, targetY).GetOccupiedBy().SetHealth(); PutAbilityOnCD(); return(true); } } else { return(false); } } else if (_abilitiesData.abilityType == AbilityType.Circle) { if (_grid.GetCell(targetX, targetY).GetOccupiedBy() && _grid.GetCell(targetX, targetY).GetPathNode().isAttackable) { if (_grid.GetCell(unitX + 1, unitY) != null && _grid.GetCell(unitX + 1, unitY).GetOccupiedBy() && _grid.GetCell(unitX + 1, unitY).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { _grid.GetCell(unitX + 1, unitY).GetOccupiedBy().GetUnitAnimations().AnimateUnit("HURT"); _combatLog.LogCombat(Ability.AttackUnit(_abilitiesData, _grid.GetCell(unitX + 1, unitY).GetOccupiedBy())); _grid.GetCell(unitX + 1, unitY).GetOccupiedBy().SetHealth(); _grid.GetCell(unitX + 1, unitY).GetOccupiedBy().HandleDeath(); } if (_grid.GetCell(unitX - 1, unitY) != null && _grid.GetCell(unitX - 1, unitY).GetOccupiedBy() && _grid.GetCell(unitX - 1, unitY).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { _grid.GetCell(unitX - 1, unitY).GetOccupiedBy().GetUnitAnimations().AnimateUnit("HURT"); _combatLog.LogCombat(Ability.AttackUnit(_abilitiesData, _grid.GetCell(unitX - 1, unitY).GetOccupiedBy())); _grid.GetCell(unitX - 1, unitY).GetOccupiedBy().SetHealth(); _grid.GetCell(unitX - 1, unitY).GetOccupiedBy().HandleDeath(); } if (_grid.GetCell(unitX, unitY + 1) != null && _grid.GetCell(unitX, unitY + 1).GetOccupiedBy() && _grid.GetCell(unitX, unitY + 1).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { _grid.GetCell(unitX, unitY + 1).GetOccupiedBy().GetUnitAnimations().AnimateUnit("HURT"); _combatLog.LogCombat(Ability.AttackUnit(_abilitiesData, _grid.GetCell(unitX, unitY + 1).GetOccupiedBy())); _grid.GetCell(unitX, unitY + 1).GetOccupiedBy().SetHealth(); _grid.GetCell(unitX, unitY + 1).GetOccupiedBy().HandleDeath(); } if (_grid.GetCell(unitX, unitY - 1) != null && _grid.GetCell(unitX, unitY - 1).GetOccupiedBy() && _grid.GetCell(unitX, unitY - 1).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { _grid.GetCell(unitX, unitY - 1).GetOccupiedBy().GetUnitAnimations().AnimateUnit("HURT"); _combatLog.LogCombat(Ability.AttackUnit(_abilitiesData, _grid.GetCell(unitX, unitY - 1).GetOccupiedBy())); _grid.GetCell(unitX, unitY - 1).GetOccupiedBy().SetHealth(); _grid.GetCell(unitX, unitY - 1).GetOccupiedBy().HandleDeath(); } if ((_grid.GetCell(unitX + 1, unitY) != null && _grid.GetCell(unitX + 1, unitY).GetOccupiedBy()) && _grid.GetCell(unitX + 1, unitY).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team || (_grid.GetCell(unitX - 1, unitY) != null && _grid.GetCell(unitX - 1, unitY).GetOccupiedBy()) && _grid.GetCell(unitX - 1, unitY).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team || (_grid.GetCell(unitX, unitY + 1) != null && _grid.GetCell(unitX, unitY + 1).GetOccupiedBy()) && _grid.GetCell(unitX, unitY + 1).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team || (_grid.GetCell(unitX, unitY - 1) != null && _grid.GetCell(unitX, unitY - 1).GetOccupiedBy()) && _grid.GetCell(unitX, unitY - 1).GetOccupiedBy().GetStatistics().team != unit.GetStatistics().team) { _unitSounds.PlayAbilitySound(); PutAbilityOnCD(); return(true); } else { return(false); } } } else { return(false); } return(false); }