예제 #1
0
 // We compare the speeds of the called object and the other data that was passed in
 public bool CompareSpeeds(BattleStats other)
 {
     if (ReturnModdedStat("Speed") > other.ReturnModdedStat("Speed"))
     {
         return(true);
     }
     else if (ReturnModdedStat("Speed") < other.ReturnModdedStat("Speed"))
     {
         return(false);
     }
     else
     {
         // If we have a tie in speed, we will randomly decide which one will be faster
         return(Random.Range(0, 2) == 1);
     }
 }
예제 #2
0
        // A helper method that depending on what is passed in will determine what UI wil be updated
        public void SavePlayerStatsToUI(BattleStats currentPartyMember, InventoryParty currentPartyMemberStats, bool isOriginal)
        {
            // Displays the character that is levling up
            levelUpMenu.transform.GetChild(2).GetComponent <Image>().sprite = currentPartyMember.gameObject.transform.GetChild(0).GetComponent <SpriteRenderer>().sprite;

            // If true, we are going to modify the slider value that represnts the original player stats
            if (isOriginal)
            {
                // The base player
                levelUpMenu.transform.GetChild(4).GetChild(0).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("MaxHP");
                levelUpMenu.transform.GetChild(4).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("MaxSP");
                levelUpMenu.transform.GetChild(4).GetChild(2).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("BaseAttack");
                levelUpMenu.transform.GetChild(4).GetChild(3).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("BaseDefense");

                // The Demon Stats
                levelUpMenu.transform.GetChild(5).GetChild(0).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("PhysicalAttack");
                levelUpMenu.transform.GetChild(5).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("PhysicalDefense");
                levelUpMenu.transform.GetChild(5).GetChild(2).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("SpecialAttack");
                levelUpMenu.transform.GetChild(5).GetChild(3).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("SpecialDefense");
                levelUpMenu.transform.GetChild(5).GetChild(4).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("Speed");
                levelUpMenu.transform.GetChild(5).GetChild(5).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("Luck");
            }
            else
            {
                // The base player
                levelUpMenu.transform.GetChild(4).GetChild(0).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("MaxHP");
                levelUpMenu.transform.GetChild(4).GetChild(1).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("MaxSP");
                levelUpMenu.transform.GetChild(4).GetChild(2).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("BaseAttack");
                levelUpMenu.transform.GetChild(4).GetChild(3).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("BaseDefense");

                // The Demon Stats
                levelUpMenu.transform.GetChild(5).GetChild(0).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("PhysicalAttack");
                levelUpMenu.transform.GetChild(5).GetChild(1).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("PhysicalDefense");
                levelUpMenu.transform.GetChild(5).GetChild(2).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("SpecialAttack");
                levelUpMenu.transform.GetChild(5).GetChild(3).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("SpecialDefense");
                levelUpMenu.transform.GetChild(5).GetChild(4).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("Speed");
                levelUpMenu.transform.GetChild(5).GetChild(5).GetChild(1).GetComponent <Slider>().value = currentPartyMember.ReturnModdedStat("Luck");
            }

            levelUpMenu.transform.GetChild(3).GetComponentInChildren <TextMeshProUGUI>().text = currentPartyMemberStats.SpecifiedCharacter.characterName + " leveled up! Now at level " + currentPartyMemberStats.CharacterLevel + "!";
        }
예제 #3
0
        // Calculates how damage will be dealt to this entity
        // Returns the amount of damage done
        public int DealDamage(BattleStats attacker, AttackData currentAttack)
        {
            int attackPower  = 0;
            int defensePower = 0;

            // If the attacker is the player, we are attacking an enemy
            if (attacker.battleData is CharacterData)
            {
                if (currentAttack.attackType == AttackType.PHYSICAL)
                {
                    // Because the attack is physical, we calculate the math based on physical power
                    attackPower  = attacker.ReturnModdedStat("BaseAttack") + currentAttack.attackPower + attacker.ReturnModdedStat("PhysicalAttack");
                    defensePower = ReturnModdedStat("PhysicalDefense");
                }
                else if (currentAttack.attackType == AttackType.SPECIAL)
                {
                    // Because the attack is special, we calculate the math based on special power
                    attackPower  = attacker.ReturnModdedStat("BaseAttack") + currentAttack.attackPower + attacker.ReturnModdedStat("SpecialAttack");
                    defensePower = ReturnModdedStat("SpecialDefense");

                    // We also deduct SP from the user as well
                    attacker.CurrentSP -= currentAttack.attackCost;
                }
            }
            // If the attacker is an enemy, we are attacking a party member
            else if (attacker.battleData is EnemyData)
            {
                if (currentAttack.attackType == AttackType.PHYSICAL)
                {
                    // Because the attack is physical, we calculate the math based on physical power
                    attackPower  = currentAttack.attackPower + attacker.ReturnModdedStat("PhysicalAttack");
                    defensePower = ReturnModdedStat("BaseDefense") + ReturnModdedStat("PhysicalDefense");
                }
                else if (currentAttack.attackType == AttackType.SPECIAL)
                {
                    // Because the attack is special, we calculate the math based on special power
                    attackPower  = currentAttack.attackPower + attacker.ReturnModdedStat("SpecialAttack");
                    defensePower = ReturnModdedStat("BaseDefense") + ReturnModdedStat("SpecialDefense");

                    // We also deduct SP from the user as well
                    attacker.CurrentSP -= currentAttack.attackCost;
                }
            }

            // Modifies the total attack power depending on the affinity of the attack
            switch (GetAttackEffectiveness(currentAttack))
            {
            case AffinityValues.RESISTANT:
                attackPower /= 2;
                break;

            case AffinityValues.WEAK:
                attackPower *= 2;
                break;

            case AffinityValues.NULL:
                attackPower *= 0;
                break;
            }

            // We then calculate the final damage, clamping the damage to 0 and infinity (cannot be negative)
            int finalDamage = (int)Mathf.Clamp(attackPower - defensePower, 0, Mathf.Infinity);

            currentHP -= finalDamage;

            // We then return the total damage output
            return(finalDamage);
        }