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++; } }
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--; } } }
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; }
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; }