public void SkillProcess(GameObject target, GameObject user, Skills.HitType hitType)
    {
        BattleManager bm = GameManager.Instance.BattleManager;

        bm.IsHealing = false;
        ActorSlot actor = user.GetComponent <ActorSlot>();

        if (!actor.IsAI)
        {
            actor.Actor.CurStats.MP -= Cost;
            float curMP  = actor.Actor.CurStats.MP;
            float result = curMP / actor.Actor.MaxStats.MP;
            actor.MPForeground.fillAmount = result;
            actor.MP.text = curMP.ToString();
        }


        int       tempAttack  = 0;
        int       tempDefense = 0;
        int       modifier;
        int       popupText;
        ActorSlot Attacker = user.GetComponent <ActorSlot>();
        ActorSlot Defender = target.GetComponent <ActorSlot>();
        string    readThis = "";

        if (hitType == Skills.HitType.Physical || hitType == Skills.HitType.Magical)
        {
            tempDefense = Defender.Actor.CurStats.Will;
            switch (hitType)
            {
            case Skills.HitType.Physical:
                tempAttack = Attacker.Actor.CurStats.Muscle;
                break;

            case Skills.HitType.Magical:
                tempAttack = Attacker.Actor.CurStats.Vigor;
                break;
            }
            modifier = BaseDamage * tempAttack - tempDefense; //This is where we'd plug elements in
            if (modifier < 0)
            {
                modifier = 0;
            }

            //this is where we would calculate magic affecting the damage, here it would not matter if
            //it was below 0, since magic damage can turn into negative
            // Debug.Log(Name + "HP Before using "  + "  " + Defender.Actor.CurStats.HP);
            Defender.Actor.CurStats.HP -= modifier;
            if (Defender.Actor.CurStats.HP < 0)
            {
                Defender.Actor.CurStats.HP = 0;
            }
            if (Defender.Actor.CurStats.HP > Defender.Actor.MaxStats.HP)
            {
                Defender.Actor.CurStats.HP = Defender.Actor.MaxStats.HP;
            }

            popupText = modifier * -1;

            if (UAP_AccessibilityManager.IsEnabled())
            {
                bm.StartSpawn(0f, popupText, Defender);
            }
            else
            {
                bm.StartSpawn(DestructTimer, popupText, Defender);
                if (!actor.IsAI)
                {
                    if (Name == "Attack")
                    {
                        SFXManager.Main.Play(actor.Actor.AttackVoices.Get());
                    }
                    else
                    {
                        SFXManager.Main.Play(actor.Actor.DefaultSpecialVoices.Get());
                    }
                }
            }


            readThis = string.Format("{0} hits {1} for {2} damage.", user.GetComponent <ActorSlot>().Actor.Name, Defender.Actor.Name, modifier.ToString());
            //UAP_AccessibilityManager.Say()
        }
        else
        {
            switch (hitType)
            {
            case Skills.HitType.Heal:
                bm.IsHealing = true;
                tempAttack   = Attacker.Actor.CurStats.Vigor;
                modifier     = BaseDamage * tempAttack;
                popupText    = Defender.Actor.CurStats.HP;
                Defender.Actor.CurStats.HP += modifier;
                if (Defender.Actor.CurStats.HP > Defender.Actor.MaxStats.HP)
                {
                    Defender.Actor.CurStats.HP = Defender.Actor.MaxStats.HP;
                }
                popupText = Defender.Actor.CurStats.HP - popupText;
                if (UAP_AccessibilityManager.IsEnabled())
                {
                    bm.StartSpawn(0f, popupText, Defender);
                }
                else
                {
                    if (!actor.IsAI)
                    {
                        SFXManager.Main.Play(actor.Actor.HealingVoices.Get());
                    }
                    bm.StartSpawn(DestructTimer, popupText, Defender);
                }
                readThis = string.Format("{0} heals {1} for {2} health.", user.GetComponent <ActorSlot>().Actor.Name, Defender.Actor.Name, modifier.ToString());
                break;

            case Skills.HitType.Status:     //not touched in demo
                break;
            }
        }
        UAP_AccessibilityManager.Say(readThis, false);
    }
Esempio n. 2
0
    public void SkillProcess(GameObject target, GameObject user, Skills.HitType hitType)
    {
        BattleManager bm    = GameManager.Instance.BattleManager;
        ActorSlot     actor = user.GetComponent <ActorSlot>();

        if (!actor.IsAI)
        {
            actor.Actor.CurStats.MP -= Cost;
            float curMP  = actor.Actor.CurStats.MP;
            float result = curMP / actor.Actor.MaxStats.MP;
            actor.MPForeground.fillAmount = result;
            actor.MP.text = curMP.ToString();
        }


        int       tempAttack  = 0;
        int       tempDefense = 0;
        int       modifier;
        int       popupText;
        ActorSlot Attacker = user.GetComponent <ActorSlot>();
        ActorSlot Defender = target.GetComponent <ActorSlot>();

        if (hitType == Skills.HitType.Physical || hitType == Skills.HitType.Magical)
        {
            tempDefense = Defender.Actor.CurStats.Will;
            switch (hitType)
            {
            case Skills.HitType.Physical:
                tempAttack = Attacker.Actor.CurStats.Muscle;
                break;

            case Skills.HitType.Magical:
                tempAttack = Attacker.Actor.CurStats.Vigor;
                break;
            }
            modifier = BaseDamage * tempAttack - tempDefense; //This is where we'd plug elements in
            if (modifier < 0)
            {
                modifier = 0;
            }

            //this is where we would calculate magic affecting the damage, here it would not matter if
            //it was below 0, since magic damage can turn into negative
            // Debug.Log(Name + "HP Before using "  + "  " + Defender.Actor.CurStats.HP);
            Defender.Actor.CurStats.HP -= modifier;
            if (Defender.Actor.CurStats.HP < 0)
            {
                Defender.Actor.CurStats.HP = 0;
            }
            if (Defender.Actor.CurStats.HP > Defender.Actor.MaxStats.HP)
            {
                Defender.Actor.CurStats.HP = Defender.Actor.MaxStats.HP;
            }

            popupText = modifier * -1;
            bm.StartSpawn(DestructTimer, popupText, Defender);
        }
        else
        {
            switch (hitType)
            {
            case Skills.HitType.Heal:
                tempAttack = Attacker.Actor.CurStats.Vigor;
                modifier   = BaseDamage * tempAttack;
                popupText  = Defender.Actor.CurStats.HP;
                Defender.Actor.CurStats.HP += modifier;
                if (Defender.Actor.CurStats.HP > Defender.Actor.MaxStats.HP)
                {
                    Defender.Actor.CurStats.HP = Defender.Actor.MaxStats.HP;
                }
                popupText = Defender.Actor.CurStats.HP - popupText;
                bm.StartSpawn(DestructTimer, popupText, Defender, true);
                break;

            case Skills.HitType.Status:     //not touched in demo
                break;
            }
        }
    }