public void CalcDamage(float dmg, float fire, float water, float air, float earth)
    {
        float PhysicHurt = (1 - defenace) * dmg;
        float FireHurt   = ((1 - FireRes) * fire);
        float WaterHurt  = ((1 - WaterRes) * water);
        float AirHurt    = ((1 - AirRes) * air);
        float EarthHurt  = ((1 - EarthRes) * earth);

        if (FireHurt > 0)
        {
            int firedisp = Mathf.RoundToInt(FireHurt);
            FloatingTextController.CreateFloatingTextFire(firedisp.ToString(), transform);
            if (Random.Range(0F, 100F) <= Burns.Chance)
            {
                if (!Burns.CurrentlyOn)
                {
                    Burns.CurrentlyOn = true;
                    F = StartCoroutine(Burning(FireHurt * Burns.EffStr));
                }
                else
                {
                    StopCoroutine(F);
                    F = StartCoroutine(Burning(FireHurt * Burns.EffStr));
                }
            }
        }

        if (WaterHurt > 0)
        {
            int waterdisp = Mathf.RoundToInt(WaterHurt);
            FloatingTextController.CreateFloatingTextWater(waterdisp.ToString(), transform);
            if (Random.Range(0F, 100F) <= Frozen.Chance)
            {
                Frozen.CurrentTimer = Frozen.Timer;
                if (!Frozen.CurrentlyOn)
                {
                    Frozen.CurrentlyOn = true;
                    this.gameObject.GetComponent <EnemyPath>().SetSpeed(1 - Frozen.EffStr);
                    W = StartCoroutine(Freezing());
                }
                else
                {
                    StopCoroutine(W);
                    W = StartCoroutine(Freezing());
                }
            }
        }

        if (AirHurt > 0)
        {
            int Airdisp = Mathf.RoundToInt(AirHurt);
            FloatingTextController.CreateFloatingTextAir(Airdisp.ToString(), transform);
            if (Random.Range(0F, 100F) <= Stunned.Chance)
            {
                GetStunnedBitch();
            }
        }

        if (EarthHurt > 0)
        {
            int earthdisp = Mathf.RoundToInt(EarthHurt);
            FloatingTextController.CreateFloatingTextEarth(earthdisp.ToString(), transform);
            if (Random.Range(0F, 100F) <= Poisoned.Chance)
            {
                if (Poisoning.Count < Poisoned.Stack)
                {
                    Poisoning.Add(StartCoroutine(PoisonStackTimer(EarthHurt * Poisoned.EffStr)));
                }
                else
                {
                    StopCoroutine(Poisoning[0]);
                    Poisoning.RemoveAt(0);
                    Poisoning.TrimExcess();

                    Poisoning.Add(StartCoroutine(PoisonStackTimer(EarthHurt * Poisoned.EffStr)));
                }
            }
        }

        if (PhysicHurt > 0)
        {
            int display = Mathf.RoundToInt(PhysicHurt);
            FloatingTextController.CreateFloatingText(display.ToString(), transform);
        }

        TakeDamage(PhysicHurt + FireHurt + WaterHurt + AirHurt + EarthHurt);
    }