Exemple #1
0
    public void ExecuteBasicAttack()
    {
        _attackType = AttackType.MELEE;
        _performer  = TurnBasedStateMachine.ActiveCharacter;

        if (OpenSkillsPanel.SkillPanelEnabled)
        {
            OpenSkillsPanel.onSkillPanelToggle();
        }


        if (_performer.Target != null)
        {
            if (_attackType == AttackType.MELEE)
            {
                _damage = _performer.Strength * _damageModifier;
            }
            else if (_attackType == AttackType.RANGED)
            {
                _damage = _performer.Accuracy * _damageModifier;
            }

            _performer.Target.CurrentHealth -= _damage;
            _performer.CurrentEnergy        -= _energyCost;
            ShowCharacterStats.onUpdateHealth();
            ShowCharacterStats.onUpdateEnergy();
            _performer.Target.Death();

            Sequence attackSequence = DOTween.Sequence();
            Vector2  startPos       = _performer.transform.position;
            Vector2  battlePos      = new Vector2(0f, _performer.transform.position.y);
            attackSequence.Append(_performer.transform.DOMove(battlePos, 0.5f));
            attackSequence.Append(_performer.transform.DOShakeScale(0.5f));
            attackSequence.Append(_performer.transform.DOMove(startPos, 0.25f));
            attackSequence.SetLoops(1);

            ShowCharacterStats.onUpdateHealth();

            if (TurnBasedStateMachine.OnNextTurnEvent != null)
            {
                TurnBasedStateMachine.OnNextTurnEvent();
            }
        }
        else
        {
            SaveCombatAction();
            Debug.Log("Please select a target");
            if (ManageTargeting.IsEnabled == false)
            {
                ManageTargeting.EnableTargets();
            }
            else
            {
                ManageTargeting.DisableTargets();
            }
        }
    }
 void Start()
 {
     board        = GameObject.Find("Board").GetComponent <Board>();
     playerHand   = GameObject.Find("Hand").GetComponent <PlayerHand>();
     enemyHand    = GameObject.Find("EnemyDeck");
     computerHand = GameObject.Find("EnemyDeck").GetComponent <EnemyHand>();
     turnState    = GameObject.Find("TurnBasedMachine").GetComponent <TurnBasedStateMachine>();
     discardPile  = GameObject.Find("EnemyDiscardPile").GetComponent <DiscardPile>();
     gameProgress = startGame;
 }
Exemple #3
0
    public static void SetTarget()
    {
        _currentCharactersTurn = TurnBasedStateMachine.ActiveCharacter;

        if (TurnBasedStateMachine.IsPlayerTurn())
        {
            _currentCharactersTurn.Target = null;
        }
        else
        {
            _currentCharactersTurn.Target = TurnBasedStateMachine.ActivePlayers[Random.Range(0, TurnBasedStateMachine.ActivePlayers.Count)];
        }
    }
Exemple #4
0
 public override void Death()
 {
     if (_currentHealth <= 0)
     {
         CombatRewards.XPEarned       += _xpToGive;       //Adds this enemies xp value to the XP earned pool
         CombatRewards.CurrencyEarned += _currencyToGive; //Adds this enemies currency value to the currency earned pool
         TurnOrder.OnDeath(this);
         TurnBasedStateMachine.ActiveCharacters.Remove(this);
         TurnBasedStateMachine.ActiveEnemies.Remove(this);
         TurnBasedStateMachine.OnEnemyKill += Death;
         Sequence deathSequence = DOTween.Sequence();
         deathSequence.Append(transform.DOScale(0, 0.75f));
         deathSequence.Join(transform.DORotate(new Vector3(0, 0, 180), 0.75f));
         deathSequence.onComplete += DestroyCharacter;
     }
     if (TurnBasedStateMachine.ActiveEnemies.Count <= 0)
     {
         //Battle Won
         TurnBasedStateMachine.OnBattleWon();
     }
 }
Exemple #5
0
    public void ExecuteSkill()
    {
        _performer = TurnBasedStateMachine.ActiveCharacter;

        if (_performer.CurrentEnergy >= _energyCost)
        {
            if (_targetingType == TargetingType.SINGLE)
            {
                if (_performer.Target != null)
                {
                    //if (_attackType == AttackType.MELEE)
                    //{
                    //    _damage = _performer.Strength * _damageModifier;
                    //}
                    //else if (_attackType == AttackType.RANGED)
                    //{
                    //    _damage = _performer.Accuracy * _damageModifier;
                    //}
                    CalculateDamage();
                    _performer.Target.CurrentHealth -= _damage;
                    _performer.CurrentEnergy        -= _energyCost;
                    ShowCharacterStats.onUpdateHealth();
                    if (TurnBasedStateMachine.ActivePlayers.Contains(_performer))
                    {
                        OpenSkillsPanel.onSkillPanelToggle();
                        ShowCharacterStats.onUpdateEnergy();
                    }
                    _performer.Target.Death(); //Checks if the target died (Check is done within the Death() function)

                    if (TurnBasedStateMachine.OnNextTurnEvent != null)
                    {
                        TurnBasedStateMachine.OnNextTurnEvent();
                    }
                }
                else
                {
                    SaveCombatAction();
                    ManageTargeting.EnableTargets();
                }
            }
            else if (_targetingType == TargetingType.ALL)
            {
                CalculateDamage();
                if (TurnBasedStateMachine.ActivePlayers.Contains(_performer)) //If performer is a player character
                {
                    //Target all enemies
                    for (int i = 0; i < TurnBasedStateMachine.ActiveEnemies.Count; i++)
                    {
                        TurnBasedStateMachine.ActiveEnemies[i].CurrentHealth -= _damage;
                        ShowCharacterStats.onUpdateHealth();
                        ShowCharacterStats.onUpdateEnergy();
                        TurnBasedStateMachine.ActiveEnemies[i].Death();
                        OpenSkillsPanel.onSkillPanelToggle();
                    }
                }
                if (TurnBasedStateMachine.ActiveEnemies.Contains(_performer)) //If performer is a enemy
                {
                    //Target all players
                    for (int i = 0; i < TurnBasedStateMachine.ActivePlayers.Count; i++)
                    {
                        TurnBasedStateMachine.ActivePlayers[i].CurrentHealth -= _damage;
                        ShowCharacterStats.onUpdateHealth();
                        TurnBasedStateMachine.ActivePlayers[i].Death();
                    }
                }
                SaveCombatAction();

                if (TurnBasedStateMachine.OnNextTurnEvent != null)
                {
                    TurnBasedStateMachine.OnNextTurnEvent();
                }
            }
        }
    }