Beispiel #1
0
    //Check enemy remaining HP and updates player HP on the status screen
    void UpdateStatus()
    {
        statusText.text = "";
        for (int i = 0; i < players.Length; i++)
        {
            CharacterStatSheet playerStat = players[i].GetComponent <CharacterStatSheet>();
            statusText.text += playerStat.Name + "   " + playerStat.HP + "/" + playerStat.MaxHP + " \n";
        }


        for (int i = 0; i < enemies.Length; i++)
        {
            if (enemies[i] != null)
            {
                CharacterStatSheet enemyStat = enemies[i].GetComponent <CharacterStatSheet>();

                if (enemyStat.HP <= 0)
                {
                    GameObject.Destroy(enemies[i]);
                    //enemies[i].SetActive(false);
                    enemies[i]        = null;
                    characterDefeated = true;
                }
                else
                {
                    //statusText.text += enemyStat.Name + "   " + enemyStat.HP + "/" + enemyStat.MaxHP + " \n";
                }
            }
        }
    }
Beispiel #2
0
    //Recieves the attacker and target to process action based on action string
    float ProcessAction(GameObject player, GameObject target)
    {
        CharacterStatSheet attackerStat = player.GetComponent <CharacterStatSheet>();
        CharacterStatSheet targetStat   = target.GetComponent <CharacterStatSheet>();
        float damage = 0;
        bool  buff   = false;

        switch (ActionName)
        {
        case "Attack":
            damage = attackerStat.Attack - targetStat.Defense;
            if (attackerStat.FocusActive)
            {
                attackerStat.FocusActive = false;
                attackerStat.Attack     /= 2.5f;
            }
            break;

        case "X-Cut":
            //double attack
            damage = (attackerStat.Attack - targetStat.Defense) * 2;
            if (attackerStat.FocusActive)
            {
                attackerStat.FocusActive = false;
                attackerStat.Attack     /= 2.5f;
            }
            break;

        case "Pierce":
            //ignores defense
            damage = attackerStat.Attack;
            if (attackerStat.FocusActive)
            {
                attackerStat.FocusActive = false;
                attackerStat.Attack     /= 2.5f;
            }
            break;

        case "Heal":
            //recovers HP, scales with attack
            damage = attackerStat.Attack * -1.5f;
            if (attackerStat.FocusActive)
            {
                attackerStat.FocusActive = false;
                attackerStat.Attack     /= 2.5f;
            }
            break;

        case "Focus":
            //double attack stat for the next attack/heal. Does not stack.
            buff = true;
            if (targetStat.FocusActive == false)
            {
                targetStat.FocusActive = true;
                targetStat.Attack     *= 2.5f;
            }
            break;

        case "Shield":
            //buffs defense for target. Does not stack
            buff = true;
            if (targetStat.ShieldActive == false)
            {
                targetStat.ShieldActive = true;
                targetStat.Defense     *= 1.5f;
            }
            break;

        case "Potion":
            damage = -25f;
            break;

        case "FullHeal":
            damage = -50f;
            break;

        default: break;
        }

        if (buff) //if focus or shield skill was used
        {
            return(0);
        }
        else
        {
            targetStat.HP -= (float)Math.Floor(damage);

            if (targetStat.HP > targetStat.MaxHP) //prevent over-healing
            {
                targetStat.HP = targetStat.MaxHP;
            }
        }

        return((float)Math.Floor(damage));
    }