PDA

View Full Version : Project Illusion


seveianrex
09-23-2008, 02:05 AM
Hi all,

I just got finished writing the code for Project Illusion.

The one thing I haven't been able to figure out yet is: when you click "Make Hotkey" on your character for the AA itself, the button it creates is blank. I would assume this is related to the database table "altadv_vars" column [hotkey_sid] or [hotkey_sid2]. I just have no idea what "sid" is? It's not SpellID, I know that much. StringID? Help!

The other thing I wanted to put up here for discussion is this: I know on EQLive, the only spells that Project Illusion AA would work for were the basic ones such as "Illusion Human". Spells such as "Minor Illusion" would not be effective. I see a number of ways of addressing this:
1) Allow any spell with an illusion in any effect slot be compatible with Project Illusion AA
2) Allow any spell that has only a single effect slot (the illusion), be compatible with Project Illusion AA
3) Allow any spell that has an actual spell name beginning with "Illusion" be compatible with Project Illusion AA

Obviously, option #1 would be easiest code-and-computation-wise, and frankly, having Project Illusion work with Minor Illusion might be fun... I'm just wondering if there would be any unintended exploits as a result. Spells like Nights Dark Terror have an illusion component.... but you can cast those on group already anyways. I think that perhaps Option #2 is probably the safest bet.

Anyways, any thoughts would be appreciated. I'm hoping to have this code fully tested and ready to post within a couple of days.

seveianrex
09-23-2008, 02:22 AM
Oh yea, couple more things... the range on illusion spells, since they are self-only, is set to 0. Therefore, a temporary hard-coded range has to be used when using Project Illusion. Therefore, I went with a range of 100 (the same range as Nights Dark Terror).

The one thing I've seen so far that might be a problem with allowing something like Minor Illusion / Illusion Tree be used with Project Illusion is the fact that it has a root component, effectively meaning any Enchanter could spontaneously root their groupmates. :P

AndMetal
09-23-2008, 02:46 AM
The one thing I haven't been able to figure out yet is: when you click "Make Hotkey" on your character for the AA itself, the button it creates is blank. I would assume this is related to the database table "altadv_vars" column [hotkey_sid] or [hotkey_sid2]. I just have no idea what "sid" is? It's not SpellID, I know that much. StringID? Help!
You are correct, it refers to a String ID. The current values correspond to eqstr_en.txt in the EverQuest client directory. After searching through the file, I was able to find this:

5662 Project
5663 Illusion

So, hotkey_sid would be 5662, hotkey_sid2 would be 5663. I do find it a little odd, because most strings are now handled in dbstr_us.txt (http://www.eqemulator.net/wiki/wikka.php?wakka=DbstrUsTxt), but the packet structure still includes it:
common/patches/Titanium_structs.h (http://eqemulator.cvs.sourceforge.net/eqemulator/EQEmuCVS/Source/common/patches/Titanium_structs.h?revision=1.9&view=markup#l_3051)

struct SendAA_Struct {
/*0000*/ int32 id;
/*0004*/ int32 unknown004; //set to 1.
/*0008*/ int32 hotkey_sid;
/*0012*/ int32 hotkey_sid2;
/*0016*/ int32 title_sid;
/*0020*/ int32 desc_sid;
/*0024*/ int32 class_type;
/*0028*/ int32 cost;
/*0032*/ int32 seq;
/*0036*/ int32 current_level; //1s, MQ2 calls this AARankRequired
/*0040*/ int32 prereq_skill; //is < 0, abs() is category #
/*0044*/ int32 prereq_minpoints; //min points in the prereq
/*0048*/ int32 type;
/*0052*/ int32 spellid;
/*0056*/ int32 spell_type;
/*0060*/ int32 spell_refresh;
/*0064*/ int16 classes;
/*0066*/ int16 berserker; //seems to be 1 if its a berserker ability
/*0068*/ int32 max_level;
/*0072*/ int32 last_id;
/*0076*/ int32 next_id;
/*0080*/ int32 cost2;
/*0084*/ int32 unknown80[2]; //0s
/*0088*/ int32 total_abilities;
/*0092*/ AA_Ability abilities[0];
};
so it looks the client still needs it from the server.

The other thing I wanted to put up here for discussion is this: I know on EQLive, the only spells that Project Illusion AA would work for were the basic ones such as "Illusion Human". Spells such as "Minor Illusion" would not be effective. I see a number of ways of addressing this:
1) Allow any spell with an illusion in any effect slot be compatible with Project Illusion AA
2) Allow any spell that has only a single effect slot (the illusion), be compatible with Project Illusion AA
3) Allow any spell that has an actual spell name beginning with "Illusion" be compatible with Project Illusion AA

Or option 4) allow it to only work with an effectdescnum (http://www.eqemulator.net/wiki/wikka.php?wakka=SpellsUsTxt#effectdescnum) of 49, which is "Illusion: Player" vs 48 (and a few others) which is "Illusion: Other".

Hope this helps.

seveianrex
09-23-2008, 09:02 AM
Thanks, that helps a lot!