Spells Structures and IDs:
In the EQ2Emulator, each "class" regardless of tier has an ID (class_id). Like tying spawns to zones using their spawn_ids that match the zone_id, I have laid out the spell_ids to similarly match their class_id. That is to say, spells for class_id 1 = 10000-19999. This is different than you might find in SOE's database of spells, only because theirs is a mess, actually. I like knowing if I am going to look up class_id 14's spells, I can go to the spell_id range of 140000-149999 and find them all. Color me OCD...
Why 10,000 IDs per class??? There are not that many spells!
That's what I thought... until I started doing some math (thanks Zcoretri) and seeing each individual spell has up to 9 "tiers" it can advance to - and who knows how many more down the road? Plus, some of our abilities and spells have additional "effects" that are not spell gems, but some other effect that gets cast while casting your spell. Take Death's Door for example... there is not a "spell" called Death's Door that I can find - but this is an effect of the Warrior ability Unyieling Will. You start adding those up, per class, per ability, and you eat up 100 or even 1000 records fast!
Right now, I am re-indexing my initial spells work to match the class_id * 10,000 index. This is all background stuff that only the Content Design Team cares about, but hopefully explaining it might help others who are developing spells tables for their own servers. Everyone has their own way of doing things; this is mine.
Spell Class Tiers:
Finally, we got this part sorted out. There are common spells for any class under the top-most tier of player classes - previously known as "Archetype" (Fighter, Priest, Mage, Scout). Under that comes each types "Class" (hopefully you remember all this, cuz I don't want to type it all out) - and finally, the sub-class which is what your character actually is in game (ie., Paladin).
I went through each spell, using eq2.wikia.com and allakhazam, and identified every redundant spell type I could find that could be grouped as Archetype -> Class -> Sub-Class. I think I finally got that all sorted out, so Content Team, when you go to edit spells for your Guardian, be sure you also look for it at the Warrior and Fighter parent tiers. I might change the editor to include these parent spells, but I have to think that one through.
Spells Scripting:
While we're trying desperately to keep our number of unique scripts per spell-type down, it's still going to be a sh*tload of scripts. The mechanisms of these spells/arts are so intricate, scripting them individually is the only option. For instance, we have many Direct-Damage / Stun spells, but sometimes there are extra effects on them that make them more of a hassle to combine into one single script than to simply make two. Luckily the system is extremely configurable in this way, so it won't be anything more than extra typing.
What's Next?
Well, we have to set data for every single spell we currently know about - which is around 3,800. That is a daunting task in itself, but it pales to the effort that is digging through every Knowledge book spell and finding (and programming) all the possible "effects". Huge task.
We need to identify all the non-player spells/effects that NPCs might possess that we do not. How do you do that???
We need scripts written to handle each spell/art and it's effects.
We also need to identify every Tradeskill action/reaction because they are deemed "spells" too. We have none of those currently.
Lastly, we have to include the "Abilities" such as Gathering, Mining, Collecting, etc... to the knowledge book. Currently there are only a few in there, and I am not sure what they are linked to - maybe hard-coded in the clients?
Anyway, I hope this is the conclusion of my obsession with spells. I need to move on to Conversations (grin). Anyone interested in helping with this major task, let us know.