Page 1 of 1

Multi-class Abilities

Posted: Thu Aug 07, 2008 6:36 am
by John Adams
If "Taunt" can be used by Guardians, Berserkers, Monks, Bruisers, Shadowknights, and Paladins... there is no reason to have 6 copies of this one spell in our spells tables - correct? What if we consolidated all 6 of those into one single spell_id and just built proper spell_classes pointers (which is the intent of the spell_classes table I presume)?
Pros of consolidation:
If all classes that share a common ability are using the same spell_id (record), you can change the single record and effect all other classes immediately. You do not have to go change all the other records, too. This simplifies maintenance and customization. The other bonus is less data in the database (negligible) and thus less overhead for the server engine.
Cons of consolidation:
Right now, every class has their spells ID'd by class_id * 1000 (so class 1 would have spell_id's 1000-1999, class 40 would be 40000-40999 etc). This was to simplify grouping and identification. However, if we decide to consolidate common spells, that means identifying each possible ability that might be used by some other class, and creating a "common" version of all 9(ish) tiers. Lots of manual effort, but it is done once up front. The second "con" is, what if you want Taunt to work differently for Bruisers than you do Monks? With a common record, you'd have to either split the record during your customization, or hard code something in your source to deal with the differences. Eww...
We already have a huge effort ahead of us to "clone" the spells list we have into multiple tiers. I am not opposed to either way, though consolidation makes sense for the base emulator. For Customization, maybe the work needs to be on the admins themselves and not us. :)
I am asking for general feedback on what you think is best before we get started. Thoughts?

Posted: Thu Aug 07, 2008 7:27 am
by tornar
I would say that the best it would be one spell_id for each spell, because have u thought that spells can change in the future for each specific class, or change spell efects depending on u class, etc.

Posted: Thu Aug 07, 2008 7:36 am
by Scatman
Well I know on live, abilities that are used by multiple classes are exactly the same. So con 2 shouldn't even be a problem really.
Let's take the ability "Rescue" for example. It is a taunt that all fighters get (even the spell says "Fighter" for classes that can use it) and all fighters get it at level 25.
http://eq2.wikia.com/wiki/Rescue
I suppose if you wanted to customize the spells and wanted, say rescue, to work differently for crusaders (paladins and shadow knights) than you do brawlers (monks and bruisers), then they should be two different spells anyway maybe?

Posted: Thu Aug 07, 2008 7:40 am
by JCL
Rescue would work. But, not all taunts are the same. The first taunt fighters get is the same, then it changes with level to suit the class. Not only that but they may have more than one taunt, usually 2 main taunting spells.

Posted: Thu Aug 07, 2008 7:42 am
by John Adams
tornar wrote:because have u thought that spells can change in the future for each specific class, or change spell efects depending on u class, etc.
Yup, I had thought of that, hence the question to the community. If SOE has not done this yet, chances are we do not have to worry about it today. I'm after what Live does exactly... and if they use 1 spell/ability for 6 classes, we can too. The drawback of 1 spell_id per ability per class is the sheer volumn of spell data the server has to load at startup. Currently, with only App I data, we're at 3800 records. LE would have to speak as to how that effects performance and memory/CPU utilization not only in the initial load, but in subsequent lookups in the <list>.
Scatman wrote:I suppose if you wanted to customize the spells and wanted, say rescue, to work differently for crusaders (paladins and shadow knights) than you do brawlers (monks and bruisers), then they should be two different spells anyway maybe?
Correct. What I am after here is how the standard, out-of-the-box EQ2Emulator data should function. Customization of abilities into a non-EQ2Live standard is going to be all on the individual server admin to work out - but with this system, it's possible and that makes it awesome.
Thanks guys, keep it coming!

Posted: Thu Aug 07, 2008 7:47 am
by John Adams
JCL wrote:Rescue would work. But, not all taunts are the same. The first taunt fighters get is the same, then it changes with level to suit the class. Not only that but they may have more than one taunt, usually 2 main taunting spells.
Unless SOE has not updated their site, I do not see evidence to support this, JCL. If you go look at the Paladin spell "Taunt" (level 3), it is shared across those other 5 classes as well.
Now if you are referring to "level up" versions of Taunt (ie., Incite, Inflame, Goading Gesture, etc) then yes. But, those are different spell_id's in general and are going to remain such.
I am talking about spells/ability specifically named >exactly< the same, and according to SOE data, are the exact same spell/ability for multiple classes.
Make sense?

Re: Multi-class Abilities

Posted: Thu Aug 07, 2008 7:57 am
by LethalEncounter
John Adams wrote:If "Taunt" can be used by Guardians, Berserkers, Monks, Bruisers, Shadowknights, and Paladins... there is no reason to have 6 copies of this one spell in our spells tables - correct? What if we consolidated all 6 of those into one single spell_id and just built proper spell_classes pointers (which is the intent of the spell_classes table I presume)?
Yes that is the intention of the spell_classes table. I can't see a need to have the same spell listed more than once. Even if you want to alter the spell slightly for different classes, you can easily do so with the LUA scripting.

Posted: Thu Aug 07, 2008 8:02 am
by Scatman
Yep. Any spell shared between different classes are exactly the same spell. If you have a level 1 taunt used by all fighters, they all use that same spell with the same spell_id I'd assume (it'd be pointless not to). Then say Guardians get a new taunt at level 10 which can only be used by Guardians and Berserkers get a taunt at level 10 which can only be used by Berserkers, then those two taunts would have different spell_ids right?

Posted: Thu Aug 07, 2008 8:04 am
by John Adams
Scatman wrote:Then say Guardians get a new taunt at level 10 which can only be used by Guardians and Berserkers get a taunt at level 10 which can only be used by Berserkers, then those two taunts would have different spell_ids right?
Yes, because hopefully they are not still called "Taunt". :)
As LE just mentioned, too. Another layer of customization can be done via the spells LUA script. I'll let this discussion flesh out a little more before picking a path, but I am leaning towards the consolidation effort right now.

Posted: Thu Aug 07, 2008 8:06 am
by Scatman
+1 for consolidation