示例#1
0
    private void UseSkillOnAllAllies(int _effectiveDamage)
    {
        BattleHandler.ExpectedAnswers = BattleHandler.CurrentBattleKeepers.Length;
        if (battleAnimation != null)
        {
            List <PawnInstance> targets = new List <PawnInstance>();
            foreach (PawnInstance k in BattleHandler.CurrentBattleKeepers)
            {
                if (k.GetComponent <Mortal>().CurrentHp <= 0)
                {
                    targets.Add(k);
                }
            }
            battleAnimation.GetComponent <IBattleAnimation>().SetTargets(targets.ToArray());
            battleAnimation.GetComponent <IBattleAnimation>().SetTargets(BattleHandler.CurrentBattleKeepers);
            BattleHandler.CurrentSkillAnimDuration = battleAnimation.GetComponent <IBattleAnimation>().GetAnimationTime();
            battleAnimation.GetComponent <IBattleAnimation>().Play();
        }
        else
        {
            BattleHandler.CurrentSkillAnimDuration = 0.5f;
        }
        for (int i = 0; i < BattleHandler.CurrentBattleKeepers.Length; i++)
        {
            if (BattleHandler.CurrentBattleKeepers[i].GetComponent <Mortal>().CurrentHp > 0)
            {
                if (SkillName.Contains("Rainbow Beam") || SkillName.Contains("Rayon Arc-en-Ciel"))
                {
                    BattleHandler.CurrentBattleKeepers[i].GetComponent <Fighter>().isPendingSkillsAshleys = true;
                    ApplySkillEffectOnTarget(BattleHandler.CurrentBattleKeepers[i], Random.Range(-3, 4));
                }
                else
                {
                    ApplySkillEffectOnTarget(BattleHandler.CurrentBattleKeepers[i], _effectiveDamage);
                }
            }
            else
            {
                BattleHandler.ExpectedAnswers--;
            }
        }
        if (BattleHandler.isPrisonerOnTile)
        {
            if (SkillName.Contains("Rainbow Beam") || SkillName.Contains("Rayon Arc-en-Ciel"))
            {
                GameManager.Instance.PrisonerInstance.GetComponent <Fighter>().isPendingSkillsAshleys = true;
                ApplySkillEffectOnTarget(GameManager.Instance.PrisonerInstance, Random.Range(-3, 4));
            }
            else
            {
                ApplySkillEffectOnTarget(GameManager.Instance.PrisonerInstance, _effectiveDamage);
            }

            BattleHandler.ExpectedAnswers++;
        }
    }
示例#2
0
    private void UseSkillOnAllFoes(int _effectiveDamage)
    {
        BattleHandler.ExpectedAnswers = BattleHandler.CurrentBattleMonsters.Length;
        if (battleAnimation != null)
        {
            if (battleAnimation.GetComponent <IBattleAnimation>().GetTargetType() == TargetType.FoeSingle)
            {
                List <PawnInstance> target = new List <PawnInstance>();
                target.Add(BattleHandler.CurrentBattleMonsters[0]);
                battleAnimation.GetComponent <IBattleAnimation>().SetTargets(target.ToArray());
            }
            else
            {
                List <PawnInstance> targets = new List <PawnInstance>();
                foreach (PawnInstance m in BattleHandler.CurrentBattleMonsters)
                {
                    if (m.GetComponent <Mortal>().CurrentHp > 0)
                    {
                        targets.Add(m);
                    }
                }
                battleAnimation.GetComponent <IBattleAnimation>().SetTargets(targets.ToArray());
            }

            BattleHandler.CurrentSkillAnimDuration = battleAnimation.GetComponent <IBattleAnimation>().GetAnimationTime();
            battleAnimation.GetComponent <IBattleAnimation>().Play();
        }
        else
        {
            BattleHandler.CurrentSkillAnimDuration = 0.5f;
        }
        for (int i = 0; i < BattleHandler.CurrentBattleMonsters.Length; i++)
        {
            if (BattleHandler.CurrentBattleMonsters[i].GetComponent <Mortal>().CurrentHp > 0)
            {
                if (SkillName.Contains("Rainbow Beam") || SkillName.Contains("Rayon Arc-en-Ciel"))
                {
                    BattleHandler.CurrentBattleMonsters[i].GetComponent <Fighter>().isPendingSkillsAshleys = true;
                    ApplySkillEffectOnTarget(BattleHandler.CurrentBattleMonsters[i], Random.Range(-3, 4));
                }
                else
                {
                    ApplySkillEffectOnTarget(BattleHandler.CurrentBattleMonsters[i], _effectiveDamage);
                }
            }
            else
            {
                BattleHandler.ExpectedAnswers--;
            }
        }
    }
示例#3
0
    public void UseSkill(PawnInstance _target)
    {
        GameManager.Instance.GetBattleUI.GetComponent <UIBattleHandler>().LockCharactersPanelButtons();
        ConsumeCost();
        if (SkillName.Contains("Rapid") || SkillName.Contains("Rapide"))
        {
            skillUser.HasPlayedARapidSkill = true;
        }

        GameObject skillNameUI = GameManager.Instance.GetBattleUI.GetComponent <UIBattleHandler>().SkillName;

        if (Translater.CurrentLanguage != LanguageEnum.EN)
        {
            if (skillUser.GetComponent <LuckBased>() != null)
            {
                skillNameUI.transform.GetComponentInChildren <Text>().text = Translater.LuckBasedSkillName(skillUser.GetComponent <PawnInstance>().Data.PawnId, characterSkillIndex);
            }
            else
            {
                skillNameUI.transform.GetComponentInChildren <Text>().text = SkillName;
            }
        }
        else
        {
            skillNameUI.transform.GetComponentInChildren <Text>().text = skillName;
        }

        if (skillUser.GetComponent <LuckBased>() != null && skillUser.GetComponent <LuckBased>().isSkillFeedbackPending)
        {
            skillUser.GetComponent <LuckBased>().FeedbackLuckForSkillBattle();
        }
        skillNameUI.SetActive(true);

        int effectiveDamage = Damage;

        if (!isMeantToHeal && !isMeantToBuff)
        {
            foreach (BattleBoeuf boeuf in skillUser.EffectiveBoeufs)
            {
                if (boeuf.BoeufType == BoeufType.Damage)
                {
                    effectiveDamage += boeuf.EffectValue;
                }
            }
            effectiveDamage = Mathf.Max(0, effectiveDamage);
        }
        if (battleAnimation != null)
        {
            PawnInstance[] tab = new PawnInstance[1];
            tab[0] = _target.GetComponent <PawnInstance>();
            BattleHandler.CurrentSkillAnimDuration = battleAnimation.GetComponent <IBattleAnimation>().GetAnimationTime();
            battleAnimation.GetComponent <IBattleAnimation>().SetTargets(tab);
            battleAnimation.GetComponent <IBattleAnimation>().Play();
        }
        else
        {
            BattleHandler.CurrentSkillAnimDuration = 0.5f;
        }
        ApplySkillEffectOnTarget(_target, effectiveDamage);
        BattleHandler.ExpectedAnswers = 1;
        skillUser.GetComponent <AnimatedPawn>().Anim.SetTrigger("doClassicAtk");
        BattleHandler.IsWaitingForSkillEnd = true;
    }
示例#4
0
    public void UseSkill()
    {
        GameManager.Instance.GetBattleUI.GetComponent <UIBattleHandler>().LockCharactersPanelButtons();
        ConsumeCost();
        if (SkillName.Contains("Rapid") || SkillName.Contains("Rapide"))
        {
            skillUser.HasPlayedARapidSkill = true;
        }

        GameObject skillNameUI = GameManager.Instance.GetBattleUI.GetComponent <UIBattleHandler>().SkillName;

        Debug.Log(characterSkillIndex);

        if (Translater.CurrentLanguage != LanguageEnum.EN)
        {
            if (skillUser.GetComponent <LuckBased>() != null)
            {
                skillNameUI.transform.GetComponentInChildren <Text>().text = Translater.LuckBasedSkillName(skillUser.GetComponent <PawnInstance>().Data.PawnId, characterSkillIndex);
            }
            else
            {
                skillNameUI.transform.GetComponentInChildren <Text>().text = SkillName;
            }
        }
        else
        {
            skillNameUI.transform.GetComponentInChildren <Text>().text = skillName;
        }

        if (skillUser.GetComponent <LuckBased>() != null && skillUser.GetComponent <LuckBased>().isSkillFeedbackPending)
        {
            skillUser.GetComponent <LuckBased>().FeedbackLuckForSkillBattle();
        }
        skillNameUI.SetActive(true);

        int effectiveDamage = Damage;

        if (!isMeantToHeal && !isMeantToBuff)
        {
            foreach (BattleBoeuf boeuf in skillUser.EffectiveBoeufs)
            {
                if (boeuf.BoeufType == BoeufType.Damage)
                {
                    effectiveDamage += boeuf.EffectValue;
                }
            }
            effectiveDamage = Mathf.Max(0, effectiveDamage);
        }

        if (targetType == TargetType.FoeAll)
        {
            UseSkillOnAllFoes(effectiveDamage);
            if (SkillName.Contains("Rainbow Beam") || SkillName.Contains("Rayon Arc-en-Ciel"))
            {
                int tmpTargets = BattleHandler.ExpectedAnswers;
                UseSkillOnAllAllies(effectiveDamage);
                BattleHandler.ExpectedAnswers += tmpTargets;
            }
        }
        else if (targetType == TargetType.FriendAll)
        {
            UseSkillOnAllAllies(effectiveDamage);
        }
        else if (targetType == TargetType.Self)
        {
            if (battleAnimation != null)
            {
                PawnInstance[] tab = new PawnInstance[1];
                BattleHandler.CurrentSkillAnimDuration = battleAnimation.GetComponent <IBattleAnimation>().GetAnimationTime();
                tab[0] = skillUser.GetComponent <PawnInstance>();
                battleAnimation.GetComponent <IBattleAnimation>().SetTargets(tab);
                battleAnimation.GetComponent <IBattleAnimation>().Play();
            }
            else
            {
                BattleHandler.CurrentSkillAnimDuration = 0.5f;
            }
            ApplySkillEffectOnTarget(skillUser.GetComponent <PawnInstance>(), effectiveDamage);
            BattleHandler.ExpectedAnswers = 1;
            if (SkillName == "Splash" || SkillName == "Trempette")
            {
                skillUser.GetComponent <AnimatedPawn>().Anim.SetTrigger("dance");
                BattleHandler.CurrentSkillAnimDuration = 1.2f;
            }
            else if (SkillName == "Unicorn Pride" || SkillName == "Fierté de Licorne")
            {
                skillUser.GetComponent <AnimatedPawn>().Anim.SetTrigger("dance");
                BattleHandler.CurrentSkillAnimDuration = 1.2f;
            }
        }
        else
        {
            Debug.LogError("UseSkill without parameters should not be called for single target skills other than Self.");
        }

        BattleHandler.IsWaitingForSkillEnd = true;
    }