private void UseSkill(SkillData skill, CharacterBattleData player) { CharacterBattleData usedPlayer = null, enemyPlayer = null; if (player.characterProperties.id == player1.characterProperties.id) { usedPlayer = player1; enemyPlayer = player2; } else if (player.characterProperties.id == player2.characterProperties.id) { usedPlayer = player2; enemyPlayer = player1; } for (int i = 0; i < skill.listSkillEffect.Length; i++) { if (skill.listSkillEffect[i] != null) { if (skill.listSkillEffect[i].typeEffect == ETypeEffect.ATTACK) { enemyPlayer.hp -= skill.listSkillEffect[i].effectValue; if (enemyPlayer.hp <= 0) { _isComplete = true; EndBattleCallBack.Invoke(usedPlayer, enemyPlayer); return; } UpdateHpAndMpCallBack.Invoke(player1, player2); SkillAttackCallBack.Invoke(enemyPlayer, skill.listSkillEffect[i]); } else if (skill.listSkillEffect[i].typeEffect == ETypeEffect.BUFF) { if (skill.listSkillEffect[i].typeAction == ESkillEffect.HEAL) { usedPlayer.RecoverHp(skill.listSkillEffect[i].effectValue); UpdateHpAndMpCallBack.Invoke(player1, player2); } } } } }
private void EndDialog() { Animator.SetBool("IsOpen", false); _isStarted = false; // if event exists, invoke if (Type == "START") { StartBattle?.Invoke(); } else if (Type == "END") { EndBattle?.Invoke(); } else if (Type == "STARTCUTSCENE") { EndStartingCutscene?.Invoke(); } else if (Type == "PLAYERSTARTCUTSCENE") { PlayerEndStartingCutscene?.Invoke(); } else if (Type == "HEALTHPICKUP") { HealthPickup?.Invoke(); } else if (Type == "ENDING") { FinalScene?.Invoke(); } AudioSource source = FindObjectOfType <GameStateManager>().gameObject.GetComponent <AudioSource>(); if (source) { source.mute = false; } }