Esempio n. 1
0
 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);
 }
Esempio n. 2
0
 public void Attack(ICharacter attacking)
 {
     CombatLog.LogCombat($"{DisplayChar} attacked {attacking.DisplayChar} for {Power} damage!");
     attacking.Health -= Power;
 }
Esempio n. 3
0
        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);
    }