Daenks/Meridian59_103 — pull request #46 by M59Gar (2013-11-25 18:29:29+00:00)
Title: Radius Enchantment Class

The ultimate fix for area spells, and a wholly new mechanic for Meridian.

Radius Enchantments apply a constant effect on qualified players within a certain radius of the caster. Included with this pull is an internal overhaul of Umbrella, which serves as an example Radius Enchantment.

With the new conditionals, Umbrella affects only the caster, his guildmates, and his enemies - and it can even tell who is inside specific Umbrellas. Players suffering an attack from outside the Umbrella will gain up to 198 defense and up to 20% resistance to the relevant element. Players suffering an attack from inside the Umbrella receive no benefit. Multiple Umbrellas do not stack by design. Future spells can stack if needed.

Best of all, an arbitrarily large Radius Enchantment is exactly equivalent to an Area Enchantment, only with a host of new conditionals and better controls to eliminate muling issues. We can convert classic 'problematic' spells like Anti-magic Aura and Winds into Radius Enchantments to eliminate their muling abuses without changing how the spells actually work at all for legitimate uses.

For battle information purposes, the caster of a RE will see an icon of the spell in his Personal Enchantment icons, all players affected by a RE will see an icon of the spell in their Area Enchantment icons, the caster of the spell will glow a custom color (new gfx) or flicker (old gfx), and players receive text whenever they enter or leave the radius. As a player in battle entering an enemy RE, you would see an AE icon appear and receive a text message as you approach a glowing enemy. Hopefully this will be enough to help players understand what is happening easily.

REs that aren't part of your battle won't show up in your AE icons, and you won't receive a text message. This includes anyone trying to mule, or other fights that don't involve you (like soldier vs soldier if you're not one). I intend to change Discord so that you may only remove REs that involve you, eliminating that mule abuse as well.

Finally, Radius Enchantments are top-heavy in their superclass, so adding new spells of their type is very simple. For example, the new Umbrella file is only a couple lines long, because the vast majority of the 'work' is in radiusench.kod itself. Adding a new RE will involve only adding a 'placeholder' function to radiusench.kod, a 'real' function to a new spell file, and a hook wherever the effect is supposed to go.