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; }
public static void SetTarget() { _currentCharactersTurn = TurnBasedStateMachine.ActiveCharacter; if (TurnBasedStateMachine.IsPlayerTurn()) { _currentCharactersTurn.Target = null; } else { _currentCharactersTurn.Target = TurnBasedStateMachine.ActivePlayers[Random.Range(0, TurnBasedStateMachine.ActivePlayers.Count)]; } }
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(); } }
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(); } } } }