Пример #1
0
        public override void ApplyEffect(CardEffectData effectData, GameContext context)
        {
            int damagePoint = effectData.damagePoint;

            //Shiver
            if (effectData.shiver)
            {
                if (BuffManager.Instance.IsShiverValidate())
                {
                    damagePoint = damagePoint * 2;
                    Debug.Log("Shiver activate");
                }
            }

            //Trust
            if (effectData.trust)
            {
                if (BuffManager.Instance.IsTrustValidate(effectData.trustNb))
                {
                    damagePoint = damagePoint * 2;
                    Debug.Log("Trust activate");
                }
            }

            //if player attack an enemy
            if (context.targets == null)
            {
                Debug.Log("il manque une target dans le contexte !");
            }

            //toujours passer par le playerData pour infliger les dégats correspondant au stats actuel du player
            context.targets.TakeDamage(PlayerData.Instance.DoDamage(damagePoint), true);

            //add the attack sequence
            GSA_PlayerAttack playerAttackAction = new GSA_PlayerAttack();

            GameSequencer.Instance.AddAction(playerAttackAction);
        }
Пример #2
0
        public override void ApplyEffect(CardEffectData effectData, GameContext context)
        {
            int damagePoint = effectData.damagePoint;

            //Explorer (on multiplie les dégats par le nombre de nodes explorés)
            if (effectData.Explorer)
            {
                damagePoint = damagePoint * MapManager.Instance.nbNodesCleared;
            }

            //Shiver
            if (effectData.shiver)
            {
                if (BuffManager.Instance.IsShiverValidate())
                {
                    damagePoint = damagePoint * 2;
                    Debug.Log("Shiver activate");
                }
            }

            //Trust
            if (effectData.trust)
            {
                if (BuffManager.Instance.IsTrustValidate(effectData.trustNb))
                {
                    damagePoint = damagePoint * 2;
                    Debug.Log("Trust activate");
                }
            }

            //Si pas de target
            if (context.targets == null)
            {
                Debug.Log("il manque une target dans le contexte !");
            }

            //inflige des dégâts au player tout court
            if (effectData.PlayerDamage > 0)
            {
                PlayerMgr.Instance.TakeDamage(effectData.PlayerDamage);
            }

            //attaque tout les enemy dans la node du player
            if (effectData.isCircular)
            {
                foreach (EnemyScript enemyScript in EnemyMgr.Instance.GetEnemiesOnPlayersNode())
                {
                    enemyScript.enemyData.TakeDamage(PlayerMgr.Instance.playerData.DoDamage(damagePoint), true);
                }
                Debug.Log("circular attack");
            }
            //on renvoie nbDamage en fonction des dégat reçu à ce tour
            else if (effectData.BackAtYou)
            {
                for (int i = 0; i <= PlayerMgr.Instance.GetTurnDamage(); i++)
                {
                    context.targets.TakeDamage(PlayerMgr.Instance.playerData.DoDamage(damagePoint), true);
                }
            }
            //inflige des dégats à l'enemy visé et au player
            else if (effectData.Rush)
            {
                context.targets.TakeDamage(PlayerMgr.Instance.playerData.DoDamage(damagePoint), true);
            }
            else
            {
                //toujours passer par le playerData pour infliger les dégats correspondant au stats actuel du player
                context.targets.TakeDamage(PlayerMgr.Instance.playerData.DoDamage(damagePoint), true);
            }
            //add the attack sequence
            GSA_PlayerAttack playerAttackAction = new GSA_PlayerAttack();

            GameSequencer.Instance.AddAction(playerAttackAction);
        }