Example #1
0
 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;
 }
Example #2
0
    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");
        }
    }