//unpacks incoming stat changes and applies them
 public void unpackStatChange(statChange loi)
 {
     applyEffect(loi.duration, loi.effects);
 }
    //TODO: implement all that special shit for enemies

    //special attack stuff
    public void specialAttack()
    {
        //checks if you can use youur special
        if (chargeCount >= 3)
        {
            foreach (special special in myCoolVariable.specialEffects)
            {
                effects newEffect = new effects(special.type, special.value);
                if (special.targets == target.enemy)
                {
                    statChange marcel = new statChange();
                    marcel.duration = special.duration;
                    marcel.effects  = newEffect;
                    statChanging.Raise(marcel);
                }
                else if (special.targets == target.self)
                {
                    applyEffect(special.duration, newEffect);
                }
            }
            chargeCount = 0;
            specialUsing.Raise();
            //instantiates the effects

            /* effects selfEffects = new effects (), enemyEffects = new effects ();
             * //these are f*****g flags so we don't do random shit we dont need
             * bool don = false, john = false;
             *
             * //these basically check if the special does the thing, who it does it to and sets the flag
             *
             * if (myCoolVariable.specialDealsDamage.onDog) {
             *  enemyEffects.DamageValue = myCoolVariable.specialDealsDamage.value;
             *  don = true;
             * }
             * if (myCoolVariable.specialDealsDamage.onSelf) {
             *  selfEffects.DamageValue = myCoolVariable.specialDealsDamage.value;
             *  john = true;
             * }
             * if (myCoolVariable.specialIncreasesHealth.onDog) {
             *  enemyEffects.HealthValue = myCoolVariable.specialIncreasesHealth.value;
             *  don = true;
             * }
             * if (myCoolVariable.specialIncreasesHealth.onSelf) {
             *  selfEffects.HealthValue = myCoolVariable.specialIncreasesHealth.value;
             *  john = true;
             * }
             *
             * if (myCoolVariable.specialIncreasesAttack.onDog) {
             *  enemyEffects.AttackValue = myCoolVariable.specialIncreasesAttack.value;
             *  don = true;
             * }
             * if (myCoolVariable.specialIncreasesAttack.onSelf) {
             *  selfEffects.AttackValue = myCoolVariable.specialIncreasesAttack.value;
             *  john = true;
             * }
             * if (myCoolVariable.specialIncreasesDefense.onDog) {
             *  enemyEffects.DefenseValue = myCoolVariable.specialIncreasesDefense.value;
             *  don = true;
             * }
             * if (myCoolVariable.specialIncreasesDefense.onSelf) {
             *  selfEffects.DefenseValue = myCoolVariable.specialIncreasesDefense.value;
             *  john = true;
             * }
             * if (myCoolVariable.specialIncreasesSpeed.onDog) {
             *  enemyEffects.SpeedValue = myCoolVariable.specialIncreasesSpeed.value;
             *  don = true;
             * }
             * if (myCoolVariable.specialIncreasesSpeed.onSelf) {
             *  selfEffects.SpeedValue = myCoolVariable.specialIncreasesSpeed.value;
             *  john = true;
             * }
             * //does special effects on self
             * if (john) {
             *  applyEffect (myCoolVariable.specialDuration, selfEffects);
             * }
             * //does special effects on enemy
             * if (don) {
             *  statChange marcel = new statChange ();
             *  marcel.duration = myCoolVariable.specialDuration;
             *  marcel.effects = enemyEffects;
             *  statChanging.Raise (marcel);
             * }
             * }
             * chargeCount = 0;
             * specialUsing.Raise (); */
        }
    }