void CheckSkills() { // If the best option contains a skill if (m_BestOption.SumSkillHeuristics() > 0) { if (m_BestOption.m_HealValue >= m_BestOption.m_DamageValue && m_BestOption.m_HealValue >= m_BestOption.m_StatusValue) { m_CurrentAIUnit.DecreaseActionPoints(m_BestOption.m_HealSkill.m_Skill.m_Cost); m_CurrentAIUnit.ActivateSkill(m_BestOption.m_HealSkill.m_Skill, m_BestOption.m_HealSkill.m_TargetNode); } else if (m_BestOption.m_StatusValue >= m_BestOption.m_DamageValue) { m_CurrentAIUnit.DecreaseActionPoints(m_BestOption.m_StatusSkill.m_Skill.m_Cost); m_CurrentAIUnit.ActivateSkill(m_BestOption.m_StatusSkill.m_Skill, m_BestOption.m_StatusSkill.m_TargetNode); } else { m_CurrentAIUnit.DecreaseActionPoints(m_BestOption.m_DamageSkill.m_Skill.m_Cost); m_CurrentAIUnit.ActivateSkill(m_BestOption.m_DamageSkill.m_Skill, m_BestOption.m_DamageSkill.m_TargetNode); } } else { Debug.Log($"<color=#9c4141>[Skill]</color> <color=#4f1212>{m_BestOption.m_Unit.name} can't cast any skills from {m_BestOption.m_Node.m_NodeHighlight.name}</color>"); m_CurrentAIUnit = null; ParticlesManager.m_Instance.m_ActiveSkill = null; } m_MakingAction = false; }
public void IssueSkillOrder(Skill skill, Unit target) { if (unit.isOnMove) { unit.Stop(); } float angleDelta = Mathf.Abs(unit.GetFacingAngle() - unit.AngleToPoint(target.position)); if (angleDelta < 10) { unit.ActivateSkill(skill, target); // Если герой стоит лицом к цели - кастуем } else { unit.RotateFrame(target.position); // Иначе - поворачиваемся } }
void SkillSelection(Node castNode) { // Cast the skill the player has selected. // If hit unit is in affectable range, if (CanTargetNode(castNode)) { if (m_SelectedUnit.GetActionPoints() >= m_SelectedSkill.m_Cost) { m_SelectedUnit.DecreaseActionPoints(m_SelectedSkill.m_Cost); m_SelectedUnit.ActivateSkill(m_SelectedSkill, castNode); UIManager.m_Instance.m_ActionPointCounter.UpdateActionPointCounter(); // Now deselect the skill and clear the targeting highlights. CancelSkill(); } else { Debug.Log("<color=#9c4141>[Skill]</color> Not enough action points!", m_SelectedUnit); } } }
// Update is called once per frame void Update() { if (Input.GetKeyDown(KeyCode.Keypad9)) { if (!m_Prepped) { Prep(); } transform.parent = null; PlayerManager.m_Instance.SetSelectedUnit(m_Famine); m_Anim.SetTrigger("Famine"); LeanTween.delayedCall(m_FamineDelay, () => m_Famine.ActivateSkill(m_Famine.GetSkill(2), Grid.m_Instance.GetNode(m_Famine.transform.position))); } else if (Input.GetKeyDown(KeyCode.Keypad8)) { if (!m_Prepped) { Prep(); } transform.parent = m_Holder.transform; PlayerManager.m_Instance.SetSelectedUnit(m_Pestilence); Grid.m_Instance.RemoveUnit(Grid.m_Instance.GetNode(m_Death.transform.position)); m_Death.transform.position = m_PestilenceTarget.position; m_Death.transform.LookAt(m_Pestilence.transform); Grid.m_Instance.SetUnit(m_Death); m_Anim.SetTrigger("Pestilence"); m_Holder.SetTrigger("Trigger"); LeanTween.delayedCall(m_PestilenceDelay, () => m_Pestilence.ActivateSkill(m_Pestilence.GetSkill(1), Grid.m_Instance.GetNode(m_PestilenceTarget.position))); } else if (Input.GetKeyDown(KeyCode.Keypad7)) { if (!m_Prepped) { Prep(); } transform.parent = null; PlayerManager.m_Instance.SetSelectedUnit(m_Death); Grid.m_Instance.RemoveUnit(Grid.m_Instance.GetNode(m_Death.transform.position)); m_Death.transform.position = m_DeathPosition.position; m_Death.transform.LookAt(m_DeathTarget.transform); Grid.m_Instance.SetUnit(m_Death); m_DeathTarget.gameObject.SetActive(true); m_DeathTarget.SetCurrentHealth(m_DeathTarget.GetStartingHealth()); m_DeathEnemyAnim.Play(m_DefaultHash, 0); Grid.m_Instance.SetUnit(m_DeathTarget); m_Anim.SetTrigger("Death"); LeanTween.delayedCall(m_DeathDelay, () => m_Death.ActivateSkill(m_Death.GetSkill(1), Grid.m_Instance.GetNode(m_DeathTarget.transform.position))); } else if (Input.GetKeyDown(KeyCode.Keypad6)) { if (!m_Prepped) { Prep(); } transform.parent = m_FamineDialoguePosition; transform.position = m_FamineDialoguePosition.transform.position; transform.rotation = m_FamineDialoguePosition.transform.rotation; } else if (Input.GetKeyDown(KeyCode.Keypad5)) { if (!m_Prepped) { Prep(); } transform.parent = m_PestilenceDialoguePosition; transform.position = m_PestilenceDialoguePosition.transform.position; transform.rotation = m_PestilenceDialoguePosition.transform.rotation; } else if (Input.GetKeyDown(KeyCode.Keypad4)) { if (!m_Prepped) { Prep(); } transform.parent = m_DeathDialoguePosition; transform.position = m_DeathDialoguePosition.transform.position; transform.rotation = m_DeathDialoguePosition.transform.rotation; } else if (Input.GetKeyDown(KeyCode.Keypad2)) { transform.parent = m_TrailerConversationPosition; transform.position = m_TrailerConversationPosition.transform.position; transform.rotation = m_TrailerConversationPosition.transform.rotation; LeanTween.delayedCall(2f, () => m_TrailerConversationPosition.GetComponent <Collider>().enabled = true); } else if (Input.GetKeyDown(KeyCode.Keypad0)) { if (!m_Prepped) { Prep(); } transform.parent = null; transform.position = Vector3.zero; transform.rotation = Quaternion.identity; } else if (Input.GetKeyDown(KeyCode.KeypadPlus)) { transform.parent = null; m_Anim.SetTrigger("Establishing0"); } else if (Input.GetKeyDown(KeyCode.KeypadDivide)) { transform.parent = null; m_Anim.SetTrigger("Establishing1"); } else if (Input.GetKeyDown(KeyCode.KeypadMultiply)) { transform.parent = null; m_Anim.SetTrigger("Establishing2"); } else if (Input.GetKeyDown(KeyCode.KeypadMinus)) { transform.parent = null; m_Anim.SetTrigger("Establishing3"); } }