Ejemplo n.º 1
0
        public Texture2D UseSpell(Player target, Spell spell)
        {
            Texture2D ret = null;
            switch(spell.type)
            {
                case SpellType.MAGIC:
                    ret = Game1.fire;
                    break;
                case SpellType.SUPPORT:
                    ret = Game1.heal;
                    break;
                case SpellType.PHYSICAL:
                    ret = Game1.sword;
                    break;
                default:
                    ret = Game1.sword;
                    break;
            }
            switch (spell.type)
            {
                case SpellType.MAGIC:

                    foreach(SpellEffect se in spell.effects)
                    {
                        if (se.target == SpellTargetType.SELF)
                        {
                            switch (se.type)
                            {
                                case SpellEffectType.MP:
                                    if ((se.value * -1) > this.GetCurrentMana())
                                        return null;
                                    break;
                                case SpellEffectType.HP:
                                    if ((se.value * -1) > this.GetCurrentHealth())
                                        return null;
                                    break;

                            }
                        }
                    }

                    foreach (SpellEffect se in spell.effects)
                    {

                        switch (se.target)
                        {
                            case SpellTargetType.ALL:
                                break; //not supported
                            case SpellTargetType.SELF:
                                this.ModifyStatSpell(se.type, se.value);
                                break;
                            case SpellTargetType.SINGLE:
                                int damage = se.value + this.GetCurrentMAGATK();
                                target.ModifyStatSpell(se.type,-1 * damage);
                                break;
                            default: break;
                        }
                    }
                    break;
                case SpellType.PHYSICAL:
                    foreach (SpellEffect se in spell.effects)
                    {
                        switch (se.target)
                        {
                            case SpellTargetType.ALL:
                                break; //not supported
                            case SpellTargetType.SELF:
                                this.ModifyStatSpell(se.type, se.value);
                                break;
                            case SpellTargetType.SINGLE:
                                int damage = se.value + this.GetCurrentATK();
                                target.ModifyStatSpell(se.type, -1 * damage);
                                break;
                            default: break;
                        }
                    }
                    break;
                case SpellType.SUPPORT:
                    foreach (SpellEffect se in spell.effects)
                    {
                        switch (se.target)
                        {
                            case SpellTargetType.ALL:
                                break; //not supported
                            case SpellTargetType.SELF:
                                this.ModifyStatSpell(se.type, se.value);
                                break;
                            case SpellTargetType.SINGLE:
                                int damage = se.value + this.GetCurrentMAGATK();
                                target.ModifyStatSpell(se.type, damage);
                                break;
                            default: break;
                        }
                    }
                    break;
                default: break;
            }
            return ret;
        }