Esempio n. 1
0
    public string ElementalMovesToString(ElementalMoves move)
    {
        string moveString = "";

        switch (move)
        {
        case ElementalMoves.EmptyMoveSlot:
            moveString = "Empty";
            break;

        case ElementalMoves.AirStrike:
            moveString = "Air Strike";
            break;

        case ElementalMoves.EarthQuake:
            moveString = "Earthquake";
            break;

        case ElementalMoves.FireBlaze:
            moveString = "Fire Blaze";
            break;

        case ElementalMoves.NaturesWrath:
            moveString = "Natures Wrath";
            break;

        case ElementalMoves.Tackle:
            moveString = "Tackle";
            break;

        case ElementalMoves.WaterBlast:
            moveString = "Water Blast";
            break;

        default:
            break;
        }
        return(moveString);
    }
Esempio n. 2
0
    public void UseMove(ElementalMoves moveToUse, bool isThereTypeBoost, int attackValue, float accuracy, float critChance, GameObject target, bool isLeft)
    {
        // Use selected move
        switch (moveToUse)
        {
        case ElementalMoves.EmptyMoveSlot:
            Debug.Log("No move in this slot!");
            return;

        case ElementalMoves.AirStrike:
            // Play Airstrike
            if (isLeft)
            {
                AirStrikeParticleLeft.Play();
            }
            else
            {
                AirStrikeParticleRight.Play();
            }

            break;

        case ElementalMoves.EarthQuake:
            // Play Earthquake
            if (isLeft)
            {
                EarthQuakeParticleRight.Play();
            }
            else
            {
                EarthQuakeParticleLeft.Play();
            }

            break;

        case ElementalMoves.FireBlaze:
            // Play Fire blaze
            if (isLeft)
            {
                FireBlazeParticleLeft.Play();
            }
            else
            {
                FireBlazeParticleRight.Play();
            }

            break;

        case ElementalMoves.NaturesWrath:
            // Play Natures wrath
            if (isLeft)
            {
                NaturesWrathParticleLeft.Play();
            }
            else
            {
                NaturesWrathParticleRight.Play();
            }

            break;

        case ElementalMoves.Tackle:
            // Play Tackle
            if (isLeft)
            {
                TackleParticleLeft.Play();
            }
            else
            {
                TackleParticleRight.Play();
            }

            break;

        case ElementalMoves.WaterBlast:
            // Play Water blast
            if (isLeft)
            {
                FireBlazeParticleLeft.Play();
            }
            else
            {
                FireBlazeParticleRight.Play();
            }

            break;

        default:
            Debug.Log("Error! Move not implemented!");
            break;
        }

        // Accuracy check
        float randAcc = Random.Range(0f, 1f);

        if (randAcc > accuracy)
        {
            // Move misses
            Debug.Log("Move Missed!");
            return;
        }

        // Calculate damage
        float typeBoost      = isThereTypeBoost ? 1.5f : 1f; // Set type boost
        int   Damage         = attackValue;
        float damageModifier = 1f;
        float randCrit       = Random.Range(0f, 1f);

        damageModifier = randCrit < critChance ? CritPower : 1f; // Check if attack will deal critical damage

        // Do the same thing for player and enemy but use their own scripts
        if (target.tag == "Enemy")
        {
            Enemy enemyRef = target.GetComponentInChildren <Enemy>();

            // Loop through character types to determine damage modifier
            foreach (ElementType t in enemyRef.CharactersElementTypes)
            {
                if (t == MoveDictionary[moveToUse]) // If they are same type
                {
                    // Reduce damage modifier by 50%
                    damageModifier *= 0.5f;
                }
                else if (CheckTypeRelationship(t, MoveDictionary[moveToUse])) // Check for type relationship
                {
                    // If item type is stronger than t then deal more damage
                    if (ReturnStrongTypeInRelationship(t, MoveDictionary[moveToUse]) == MoveDictionary[moveToUse])
                    {
                        damageModifier *= 2f;
                    }
                }
            }
            // Calculate and then deal damage
            Damage = (int)(Damage * damageModifier);                                                 // Damage * modifier
            Damage = Damage - enemyRef.Defence <= DamageMin ? DamageMin : Damage - enemyRef.Defence; // Damage - defence
            enemyRef.ChangeHealth(-Damage);
        }
        else // Player
        {
            Character charRef = target.GetComponentInChildren <Character>();

            // Loop through character types to determine damage modifier
            foreach (ElementType t in charRef.CharactersElementTypes)
            {
                if (t == MoveDictionary[moveToUse]) // If they are same type
                {
                    // Reduce damage modifier by 50%
                    damageModifier *= 0.5f;
                }
                else if (CheckTypeRelationship(t, MoveDictionary[moveToUse])) // Check for type relationship
                {
                    // If item type is stronger than t then deal more damage
                    if (ReturnStrongTypeInRelationship(t, MoveDictionary[moveToUse]) == MoveDictionary[moveToUse])
                    {
                        damageModifier *= 2f;
                    }
                }
            }
            // Calculate and then deal damage
            Damage = (int)(Damage * damageModifier);                                               // Damage * modifier
            Damage = Damage - charRef.Defence <= DamageMin ? DamageMin : Damage - charRef.Defence; // Damage - defence
            charRef.ChangeHealth(-Damage);                                                         // Deal damage
        }
    }