Go Back   EQEmulator Home > EQEmulator Forums > Development > Development::Development

Development::Development Forum for development topics and for those interested in EQEMu development. (Not a support forum)

Reply
 
Thread Tools Display Modes
  #1  
Old 02-08-2009, 06:09 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default SoF Development Tracking

I figured I should start a thread to help keep track of the development of SoF. This can be used as a reference for what needs work, and who is working on what. I will try to keep this post updated as people update the thread with any progress or notes. Please try to keep posts in this thread for developer work only. All other SoF development discussion should be posted here, or a new thread created for it. For reporting Bug in Secrets of Faydwer that are not already listed in this post, please post them in the Secrets of Faydwer - Bug Reports thread.


Last Update - March 5th 2010

Top Priority Work:
1. AAs - All AAs in SoF are now fully functional. A temporary work-around is in place for the Improved/Advanced upgraded versions of AAs. For now, we just see double of the base AA for the upgraded version, but they work and can be purchased. This is because SOE consolidated those into single AAs. We just need to figure out how Live handles it to deal with training them higher instead. More notes in the post below.

Medium Priority Work:

Low Priority Work:
1. Adventure Leaderboard - The stats of the Adventure Leaderboard don't work properly yet. I think the correct opcode is set, but it just needs an encode and structure adjustment.
2. Levitate - Levitate seems to cause PCs and NPCs to hop if it was cast prior to you zoning in. Levitate is now supposed to go in the spawn struct as "2" in the flymode field instead of from a separate appearance packet like Titanium uses.
3. Animation - Animations such as sitting, crouching, death do not show up if someone zones in after the animation was already used. This is because of the new StandStance field in the spawn struct for SoF being hard set to 0x64, which is standing. We need to set it to put the actual animation being used in that field instead of forcing it to standing.
4. Inspect Notes - Inspect works, but the player notes in the inspect window do not work for SoF clients yet. I think this may need to be set in the player profile now or something.

Database and Source Code Changes that will be needed at some point:
1. AA Table - The alt_vars table may need further adjustments to allow it to be fully functional for both clients and their differences.

Other Issues:
1. The SoF client seems to have a few crash issues. No real details at this time on what causes crashes, but it is still a bit less stable than the Titanium client is.

New Systems to SoF that did not exist in Titanium:
1. Blocked Buffs - This should be pretty straight forward to get going at some point.
2. Auras - These appear to mostly work like Songs, but also have an aura NPC that can zone with characters.
3. Fellowships - The NPC class that gives fellowships is Class 69. The window opens up for the client already, but nothing is actually coded for handling them yet.
4. Pirate Combat - No Information
5. New Power Source Equipment Slot - Power Source Slot added and stats from it are functional, but it does not yet work the same way it does on Live.
6. Guild Banners - Banners are spawned as NPCs and are a global race. Custom Guild Banner info should be in the spawn structure somewhere.
7. Destructible Objects - No Information
8. Player Traps - These are spawned as new global NPC races. Most likely, they are just quest scripts in the default.pl to control the trap actions.
9. Spheres of Influence - No Information
10. New Skills - Unsure how many new skills there are in SoF, but live has Triple Attack as a new skill (skill 76). Not sure how to add these to work with both SoF and Titanium.
11. Respawn Window - Have started work to getting this added. It isn't functional yet, but getting there.
12. New Item Stats - All possible item stats now show up on items when a value is set in the database. The new SoF stats still need to be coded into the server to actually be used. KLS Added Backstab Damage, but the others still need to be coded.

Recently Resolved Issues:
1. Consumption - Food and Drink consumption is now working and is now consumed at the correct rate.
2. Trading (to NPC or PC) - This is now working.
3. Objects - Interacting with objects (tradeskill, aug pools, etc) is now working.
4. Interrupts - Spell interrupt is now functional.
5. Groups - Grouping should now be fully functional.
6. Banking - Banking is now fully functional including the 8 new bank slots, shared bank and slots within bags in any of those slots. This also resolved a fairly major crash related to banking.
7. Clickies - Right Click item effects now seem to be fully functional, including observing recast delays when they apply as well as using item charges when they apply.
8. Drakkin Corpses - Drakkin and Froglok corpses are now showing up properly after zonedumps (thanks Derision!)
9. Tasks - The Task system is now fully functional (thanks Derision!)
10. Pet Buff Window - Pet buff window is now fully functional (thanks Derision!)
11. Animations - Animations are now fully functional (thanks Derision!)
12. Tracking - Tracking is now fully functional (thanks Derision!)
13. Skill Points - Skill training points now report properly (thanks Derision!)
14. /who - The /who command is now fully functional (thanks Derision!)
15. Item Links - Item Links are now fully functional, including Item Links from command outputs.
16. Item Augments - Item Augments are now fully functional in every way (HUGE thanks to Derision!)
17. Money Trading - Traded money now updates without having to zone (thanks Derision)
18. Bazaar - Bazaar trading is now fully functional (thanks Derision!)
19. Loot Slots - Looting corpses with multiple items will now always loot the correct item
20. Tribute - The Tribute system for personal tributes is now fully functional (thanks Derision!)
21. Rest System - After 30 seconds of being out of combat, extra regen kicks in to regenerate characters mana/hp/end at faster speeds. (completely new system - thanks Derision and drakelord!)
22. Books - Books are now functional (thanks Derision!)
23. Attunable Items - Attunable items now function properly in SoF (thanks realityincarnate!)
24. Spell Interrupts - Spell Interrupts and Fizzles no longer cause abnormally long refresh times on the spells being cast.
25. Stun - Melee stun/bash no longer causes unintended spinning
26. Spawn Structure - All of the currently desired fields should now be identified (thanks for the help, Shendare!)
27. Drakkin Specific Features - All Drakkin Related fields (Heritage, Tattoo, and Details) are now fully functional for NPCs and PCs.
28. Potion Belt - Potion Belt seems to function perfectly fine now.
29. /bug - /bug is now functional (thanks KLS!). Verified that it works in SoF with no modifications required.
30. /petition - The /petition command in SoF has changed to now open a browser to the SOE support site. Apparently /guidehelp has replaced /petition and functions in exactly the same way.
31. Chat Channels - Chat Channels and Mail are now fully functional in SoF with the addition of the new UCS (Thanks Derision!!!)
32. Item Stats - The item table now contains all of the fields for SoF including Heroic Resists which aren't used on Live but are built into the client. All stats now show up on items if a value is set, but no code is in yet for the server to actually use the new stats.
33. Tradeskill Combines - Tradeskill combines now work in tradeskill containers within your inventory like medicine bag or warrior epic 1.0 sword combing/split.
34. Recast Count-Down - The recast count-down on clicky items with recast delays no longer leaves items greyed out all of the time. This feature is available in Titanium as well, but doesn't work for Titanium yet either, so I am marking this off of the SoF specific issues list. Though, it would be really nice to see this get added at some point.
35. Raids - Raids are now functional in SoF (Thanks KLS!)
36. Death Disconnects - Dying in the same zone you are bound in no longer causes you to be disconnected (Thanks KLS!)
37. Guild Management Tool - The guild management now shows members and member notes and should be as functional as the one in the Titanium client (Thanks Derision!)
38. Stamina/Endurance - Live now sends endurance update packets and SoF probably does as well, so it wouldn't hurt to add an update packet for SoF. For now, endurance seems ok in SoF though.
39. Azone2 - Now functional for the EQGv4 zone files, so every SoF zone is now usable, though watermaps still do not work for EQGv3 or EQGv4 zone files yet (Thanks Derision!!!)
40. Max Level 75 - A work-around for level 76+ was added for SoF to correct HP/Mana/End by sending a tribute packet that sends what the stats should be (Thanks KLS/Secrets!)
41. Inspect - Inspecting SoF clients is now functional. The only functionality it is still lacking is the ability to set a note in SoF client inspect windows.
42. Clicky Checks - Items with click effects now have the proper checks for all clients to verify that they are allowed to be used.

Attaining Secrets of Faydwer:
Everquest: Secrets of Faydwer can currently be purchased from www.newegg.com for $19.99 with free shipping.
http://www.newegg.com/Product/Produc...20of%20faydwer
There are also various other sites that have SoF for sale at lower prices than Newegg.

This post will be updated again regularly with current development status.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 04-02-2010 at 07:51 AM..
Reply With Quote
  #2  
Old 02-08-2009, 06:22 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Detailed Notes on Subjects Above

AAs - Currently, there is a fair amount of work that needs to be done to get AAs fully functional and up-to-date in SoF. Most of them now work thanks to a structure issue that Derision found and corrected. In order to handle AAs properly for SoF, we need to create and use new tables just for SoF AAs. Right now, AAs load into the AA window and can be purchased without having to zone for them to update.

The total spent AA count in the AA window is temporarily being forced to show 500. This is because I do not know how to get an accurate count of the total spent AA points yet. This is a fairly minor issue, but worth mentioning. Derision found an issue with the encode of the RespondAA packet, which is what sends the spent AA points total. So far, I now have it able to show the correct number of AAs purchased, but not the total of AA Points spent to make those purchases.

The main priority on AAs right now is to get the table issues worked out. I have already collected every AA that a rogue gets on Live and have put them into a table format. I was able to get them working in game as well, but need to do some clean up on them before they are ready for other admins to use. The table I have so far for this is posted later in this thread. At some point, we will need to collect the AA info for each class and put them into the table as well. It seems that the AA data for Titanium still mostly exists in SoF (since AAs show up), but SoF seems to get descriptions and names and such from different places than Titanium does. Titanium uses the eqstr_en.txt file to get most of it's descriptions, but SoF uses the dbstr_us.txt file for them.

Something worth mentioning is that it seems like getting AAs set in the database might be easier for SoF. The dbstr_us.txt file is setup differently than the files that Titanium uses for AA names, descriptions, and maybe other info. Basically, it seems to use a list format for each ID. For example; Innate Strength is skill_id 2, and in SoF, the name and description in the table can both be set to 2. This is because the client knows that the name is always the 1st line in the list and description is always the 4th. Here is an example from the file to explain what I mean a bit better:

Code:
2^1^Innate Strength
2^4^This ability raises your base Strength by 2 points for each ability level.
So, skill_id, title_sid, and desc_sid all get set to 2. This just means a little less work for getting the AAs added to the alt_adv table. Nothing major, but seems like a better way to do it.

I think I have the alt_var table I have so far is looking pretty decent, but still need to look into the aa_effect and aa_action tables. Once all of the AAs are collected for all classes from Live, I am sure we will have to do some clean up to make sure everything matches up and is set properly.

Once the new tables are ready, I will probably need help from someone more experienced to get the SoF encode to use the new AA tables instead of the old ones. We will also need to have it send a couple new fields that didn't exist in Titanium. I figure I will deal with that once the tables are more ready, though it won't be long now.

It seems that with the change to how the AA window works since Titanium, it means that the way that the AA tables are sent works a bit differently. As far as I can tell, none of the actual AA IDs listed in AA.h have changed. But, since many AAs were combined/consolidated to reduce overhead, the way they are handled had to be changed as well. The most noticeable change is for stuff like the Innate stats, and other AAs that used to have direct upgrade line AAs for them, but are now combined into a single AA. The issue is that with the IDs remaining the same, it doesn't allow for them to be combined in the same manor that Titanium handles them individually. To use Innate Strength as an example, the ID for it is set to 2, and the next AA is Innate Stamina, which has an ID of 7. This means that there is only room for 5 levels of that particular AA. In Titanium, the max_level for that AA is 5, so that works fine. In EQLive (and probably SoF), the max is now 15 for Innate Strength. It seems that each time you train a point, it just moves up 1 in the AA effects table. And, to compensate for this restriction, it looks like EQLive just sends that same AA table 2 or 3 times so that the effects stack. So, if you had 1-5 points trained, it would send that AA 1 time, if you had 6-10 trained, it would send it 2 times, and if you had 11-15, it would send that same AA 3 times. I am not 100% sure that this is how it works, but it definitely sends multiples of some of these, and it only seems to do it when you have points trained in that stat. This will definitely be something we will have to understand fully before the new SoF AA tables can be completely finalized. I still have to figure out exactly how each table is supposed to be formatted to handle this new way of doing it. I think most things are still the same, but changes will definitely have to be made here and there.

I just noticed that the unknown0092 field in the SendAA structure seems to actually be a secondary category field. The first category field is currently labeled as "expansion", because it is the number that correlates to the expansion that the AA originated from. The unknown0092 field seems to override the expansion field if it is set to anything other than -1. I am going to do some testing with this in SoF and if it works, I will label the field "special_category". So far, I have identified that it will show the following if the field is set to any of these for SoF:

Code:
unknown0092
2 - Progression
6 - Tradeskill
7 - Expendable
8 - Racial Innate
As with the other new fields, this one will have to be added to the code for SoF AAs to have it sent properly. I already have them listed in the new tables I am working on.

That leaves the unknown0096 field as one of the only new unknown fields that hasn't been identified yet. The only AA I show as setting that field to anything other than 0 is Harmonic Dissonance. That is an AA on live that is free to purchase and will port the player to a zone. It is currently set to 16777216, but I am not sure what that number is supposed to relate to yet. This field probably isn't very important to us.

Recast Count-Down
Clicky items that have a recast delay on them all seem to show up as grayed out all of the time. This may be due to an issue with the serialization portion of the struct, or possibly something in the click effect portion that is not getting set properly. Interestingly, it seems that after my recent changes to the manachange encode, my click type 2 items now count down as they should. This could possibly mean that the manachange packet is what updates items to start the countdown after the click happens. If that is true, then we should just need to figure out the correct values to use in the unknown fields to correct this. I have it hard set to -1 right now, so I don't know why it would effect recast type 2 only. Maybe it is just coincidence that they work now or I may not have noticed that they started working after some other recent change. Either way, if we can figure out why type 2 works, then we should be able to figure out how to get the others all working. And if we can get it working in SoF, it could possibly be fixed in Titanium as well, because I know that feature was in Titanium. This system isn't crucial to get working, but it would be handy to have
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 05-06-2009 at 03:46 PM..
Reply With Quote
  #3  
Old 02-09-2009, 01:01 AM
KLS
Administrator
 
Join Date: Sep 2006
Posts: 1,348
Default

Azone2 probably wont load some of the newer zones as they moved to version 4 eqg at some point and azone2 can only do <=3.

I'm gonna take a stab at item packets soonish once I can get client setup.

I'm at a loss on how to handle drakkin, since titanium and 6.2 wont be able to display them at all. I guess we could just have them pretend to be human for <SoF
Reply With Quote
  #4  
Old 02-09-2009, 09:18 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Thanks, KLS. The items are one of the last major remaining items to get working before players may be able to start testing it and reporting bugs. I think I should hopefully have the AA and /who issues worked out really soon. Once items are done, I think combat just needs to get worked out and basic play should be functioning. For all other stuff, it will mostly just be opcode finding I think, which shouldn't be too bad at all.

I am actually surprised how close to being ready this is already. As long as there are no more major bumps, I don't think it is far off at all. Maybe Azone can be updated sometime in the future to work with the new EQG files. Other than that, I think a couple minor code adjustments to handle the new player race and maybe a couple other things, and then a couple minor database adjustments to handle some of the new stuff as well. Then it should be fully functional. At least as well as Titanium is for us now.

And yeah, for Titanium players, they will just have to see Drakkin as a human model or something. The Drakkin race is model 522, which is well beyond what Titanium can use. By default, they would see the frozen arms and legs out human model. But, we can probably force them to be any race in the Titanium/6.2 client cpp files in the spawn encodes. I think it would work doing a race check when the spawn packet is sent, and then just convert any race that is > 473 to be race 1 instead. Really, it isn't a huge issue, because they won't be able to see the new weapon models and stuff that the SoF users will be able to use anyway.

Eventually, I imagine most people will just move onto using SoF instead of Titanium. Especially once it is just as functional as Titanium currently is.

I must say that after going through each of the 81 new zones in SoF that have been added since Titanium, I am really amazed. SoE has done an excellent job with their zone design. I didn't care much for the Buried Sea zones, but other than those, all of the other expansions really wow'd me. And with 103 new races to use, I think this will open up alot of doors for custom servers. I haven't even got to seeing the new weapon models yet, but I imagine they are great as well.

After SoF is done, I will most likely look into seeing if I can possibly fix EQExtractor and EQBuilder2 to work with EQLive again. Then, we can use them to populate many of the new zones. I think that combined with SoF will help keep the emulator thriving for a long time to come. And since it is pretty likely that it will be the final client version for the emulator, it should make it worthwhile to work towards a 100% functional emulator
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 05-27-2009 at 03:22 PM..
Reply With Quote
  #5  
Old 02-10-2009, 04:31 PM
Derision
Developer
 
Join Date: Feb 2004
Location: UK
Posts: 1,540
Thumbs up

Now that I'm SoF enabled, I'll pick up Character Creation if no-one else is working on it.
Reply With Quote
  #6  
Old 02-10-2009, 07:26 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Thanks Derision! I am glad to start seeing some dev interest in this project. It has been a pretty huge one so far lol. The amount of hours I have put in over the past couple of months is pretty insane. I was hoping once I got it to a somewhat playable point that others might start realizing that it wasn't just a pipe dream anymore and that it was going to actually get done!

If you need any help or suggestions for character creation let me know. I can easily get ShowEQ logs of the character creation process from EQLive to share with you. Those will be much easier to read than packet sniffs from WireShark or something. That is assuming that EQLive and SoF handle it the same way, but I am pretty sure it would be the same, or at least much closer than how Titanium handles it.

I have been focusing on AAs mostly over the past couple nights. I am pretty sure that the structure is just wrong. I was basing it off of the EQLive AA structure, but I bet SoF was slightly different. The good thing is that there is minimal difference between EQLive and Titanium, so it shouldn't be hard to figure out what to change/remove from the current struct I have that is based off of EQLive.

I have also filled in a few more Opcodes, but haven't updated the SVN with them yet. Probably 70% of the Opcodes we need to fill them all out will come directly from the client in a tail log (as an OP_Unknown), so those will be very easy to get. For the rest of them, they may be a bit trickier, but those can be handled when the time comes.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #7  
Old 02-11-2009, 04:08 PM
Derision
Developer
 
Join Date: Feb 2004
Location: UK
Posts: 1,540
Default

I got Character Creation working, mostly.

There is a new OpCode the client sends when you click on 'Create New Character'. I got a trace from live and the server responds with a 22KB packet, with what I assume must have valid starting stats, starting zones, deities etc, for each race/class.

I didn't bother trying to interpret what is in the packet just yet, I just have a hardcoded response with the same 22KB of data that live sends which is good enough to get into the character creation screen on SoF.

I can currently only select races from the original game ... the Expansions data must have moved within whatever packet it gets sent in, also the Enter Tutorial button seemed to be missing. Both will hopefully be easy to sort out.

The way the initial start zone is requested also seems to have changed, so everyone starts in South Qeynos for now.
Reply With Quote
  #8  
Old 03-02-2009, 08:27 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

FYI, in case no one noticed yet, Newegg is now selling Secrets of Faydwer for $4.99 with free shipping! That is down a dollar from the recent price of $5.99 with free shipping. If you don't have a copy of it already, you almost certainly won't find a better deal than this and should get it while they are still in stock. There is a link in the first post of this thread to the page on newegg of where to get it.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #9  
Old 03-27-2009, 03:10 PM
Derision
Developer
 
Join Date: Feb 2004
Location: UK
Posts: 1,540
Default

I've been working on tasks today. Most of the problems were missing/incorrect opcodes, although the task selector struct has also changed slightly.

I have everything functional, although I think one of the structs is still slightly off, leading to the reward item/link sometimes not displaying correctly.

I still need to write the encode so it works with all clients, but should probably be done this weekend.

I'll probably work on the pet buff window after that.

Last edited by Derision; 03-27-2009 at 11:14 PM..
Reply With Quote
  #10  
Old 03-28-2009, 03:30 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

If you are making a hash for the item links, I wanted to note that I confirmed that there are now 5 more 0s in the hash used for Titanium to show up properly in SoF. If you do a #itemsearch in SoF right now, it cuts off the first 5 letters of the name. I added the 0s to it to test and then it worked fine, but then Titanium was showing the 5 0s in the name output. So, I imagine we will have to do something tricky to get it working properly for both. Not sure what the best solution is yet, but I wish there was a way to check if a client was SoF or not. Then, we could just do an if before making the output.

Dunno if that is related to the reward links in tasks, but figured it was worth mentioning.

Thanks for helping, Derision and KLS! It has been a ton of work to get to the point things are at now, but the help you 2 have given has definitely made a big difference. There isn't that much left to iron out now, but, all help is much appreciated!
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #11  
Old 03-28-2009, 03:43 AM
Tertiary
Hill Giant
 
Join Date: Nov 2003
Posts: 192
Default

Quote:
Originally Posted by trevius View Post
I wish there was a way to check if a client was SoF or not. Then, we could just do an if before making the output.
Thanks for the info on the item links, that may be my problem.

There is a way to check the client version. The client network stream has a method which returns a string describing which patch file that client is using (Client62, Titanium, SoF). I'll post an example of how to check it later today. It would be best though if everything could be done in SoF.cpp, to keep the main source as version agnostic as possible.

EDIT: Lol, this is Derision, just happened to be logged on my alternate account
Reply With Quote
  #12  
Old 03-28-2009, 04:51 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Hah, was wondering if that was you while I was reading that! Funny

Yeah, I agree that it would be best if we could do it all in SoF.cpp, but I think it would be tricky in some cases like this where stuff is being hard coded and not put into any sort of structure. Unless maybe we could recreate the same commands with alternate settings in SoF.cpp, I dunno any other way to do it. I was thinking about if it might be possible to set encodes for the special/formatted/common or whatever messages packets that would look for a string that looked like an item link and then add the required 5 0s in there. But, that would be quite a hack IMO, and might cause more issues than it would be worth. One solution I was thinking of would be to make alternate commands just for SoF (#sofitemsearch, #sofpeekinv, etc), but that would be much less than ideal imo. The only other thing I could think of would be to create a rule that would let admins set if they wanted to use SoF settings for stuff like command output and anything else that might need to be changed. Then, we could have a simple rule check, but again that would be less than ideal as well.

I don't think there are many things that would have to be changed outside of the SoF.cpp that would effect the other clients. For most things that are hard coded, I have just been able to just create new opcodes and handling that doesn't effect Titanium users. In this case, that isn't really an option as far as I can think of unfortunately.

Oh, and a client version check function would be nice to have handy for certain situations. I would really like to have a way for a porting NPC to check if the client is SoF or not so it doesn't port Titanium users to zones they don't have. I am sure there are plenty of other times that would come in handy as well if we are going to have 2 compatible and fully functional clients (not counting 6.2).
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!

Last edited by trevius; 03-28-2009 at 12:54 PM..
Reply With Quote
  #13  
Old 04-30-2009, 08:32 AM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Here is the new SoF table that I have so far. It still needs some adjustments to be perfect, but it is getting there. This table was made directly from a Live collect while playing a rogue, so it should have every Rogue AA available. Once this is fully functional, I will collect the rest of the classes AA info and get them added to the table. It won't be as much work for the other classes, since they should all have the same General AAs and I think there are only a few Archetype AA changes between classes, so it would mostly just be collecting class specific AAs.

This table is NOT the final version, I am only posting it for development purposes at this point. To test it, you can rename your current AA table and rename this one to "alt_vars" so that it uses it in place of the current one. Once code is written for it, SoF will most likely use AA tables completely separate from the standard Titanium and other client AA tables. I have prefixed the table name with "sof_" in case we require more SoF specific tables in the future so they will all be grouped together if prefixed like this.

And here is the actual table itself:
Code:
/*
MySQL Data Transfer
Source Host: 192.168.1.102
Source Database: stormhaven
Target Host: 192.168.1.102
Target Database: stormhaven
Date: 4/30/2009 7:09:52 AM
*/

SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for sof_altadv_vars
-- ----------------------------
DROP TABLE IF EXISTS `sof_altadv_vars`;
CREATE TABLE `sof_altadv_vars` (
  `skill_id` int(11) NOT NULL default '0',
  `name` varchar(128) default NULL,
  `hotkey_sid` int(10) unsigned NOT NULL default '0',
  `hotkey_sid2` int(10) unsigned NOT NULL default '0',
  `title_sid` int(10) unsigned NOT NULL default '0',
  `desc_sid` int(10) unsigned NOT NULL default '0',
  `class_type` int(10) unsigned NOT NULL default '0',
  `cost` int(11) default NULL,
  `seq` int(10) NOT NULL,
  `current_level` int(10) NOT NULL default '1',
  `prereq_skill` int(10) unsigned NOT NULL default '0',
  `prereq_minpoints` int(10) unsigned NOT NULL default '0',
  `type` tinyint(3) unsigned NOT NULL default '1',
  `spellid` int(10) unsigned NOT NULL default '0',
  `spell_type` int(10) unsigned NOT NULL default '0',
  `spell_refresh` int(10) unsigned NOT NULL default '0',
  `classes` int(10) unsigned NOT NULL default '65534',
  `berserker` int(10) unsigned NOT NULL default '0',
  `max_level` int(11) default NULL,
  `last_id` int(11) unsigned NOT NULL,
  `next_id` int(11) unsigned NOT NULL,
  `cost_inc` tinyint(4) NOT NULL default '0',
  `expansion` tinyint(4) NOT NULL,
  `total_abilities` tinyint(4) NOT NULL,
  PRIMARY KEY  (`skill_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records 
-- ----------------------------
INSERT INTO `sof_altadv_vars` VALUES ('2', 'Innate Strength', '4294967295', '4294967295', '2', '2', '51', '1', '1', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '3', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('7', 'Innate Stamina', '4294967295', '4294967295', '7', '7', '51', '1', '2', '3', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '8', '10', '3', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('12', 'Innate Agility', '4294967295', '4294967295', '12', '12', '51', '1', '3', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '13', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('17', 'Innate Dexterity', '4294967295', '4294967295', '17', '17', '51', '1', '4', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '18', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('22', 'Innate Intelligence', '4294967295', '4294967295', '22', '22', '51', '1', '5', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '23', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('27', 'Innate Wisdom', '4294967295', '4294967295', '27', '27', '51', '1', '6', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '28', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('32', 'Innate Charisma', '4294967295', '4294967295', '32', '32', '51', '1', '7', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '33', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('37', 'Innate Fire Protection', '4294967295', '4294967295', '37', '37', '51', '1', '8', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '38', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('42', 'Innate Cold Protection', '4294967295', '4294967295', '42', '42', '51', '1', '9', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '43', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('47', 'Innate Magic Protection', '4294967295', '4294967295', '47', '47', '51', '1', '10', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '48', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('52', 'Innate Poison Protection', '4294967295', '4294967295', '52', '52', '51', '1', '11', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '53', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('57', 'Innate Disease Protection', '4294967295', '4294967295', '57', '57', '51', '1', '12', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '58', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('68', 'Innate Metabolism', '4294967295', '4294967295', '68', '68', '51', '1', '15', '3', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '69', '4294967295', '3', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('71', 'Innate Lung Capacity', '4294967295', '4294967295', '71', '71', '51', '1', '16', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '6', '4294967295', '72', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('74', 'First Aid', '4294967295', '4294967295', '74', '74', '51', '1', '17', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '75', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('107', 'Natural Durability', '4294967295', '4294967295', '107', '107', '55', '6', '28', '3', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '6', '108', '7541', '12', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('110', 'Natural Healing', '4294967295', '4294967295', '110', '110', '55', '2', '29', '1', '0', '0', '2', '4294967295', '0', '0', '33722', '1', '3', '4294967295', '111', '2', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('116', 'Fear Resistance', '4294967295', '4294967295', '116', '116', '55', '2', '31', '1', '0', '0', '2', '4294967295', '0', '0', '33722', '1', '3', '4294967295', '117', '2', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('119', 'Finishing Blow', '4294967295', '4294967295', '119', '119', '55', '2', '32', '1', '0', '0', '2', '4294967295', '0', '0', '33722', '1', '18', '4294967295', '120', '2', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('122', 'Combat Stability', '4294967295', '4294967295', '122', '122', '55', '2', '33', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '28', '4294967295', '123', '2', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('125', 'Combat Agility', '4294967295', '4294967295', '125', '125', '55', '2', '34', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '28', '4294967295', '126', '2', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('198', 'Ambidexterity', '4294967295', '4294967295', '198', '198', '59', '9', '81', '1', '0', '0', '3', '4294967295', '0', '0', '33682', '0', '1', '4294967295', '4294967295', '9', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('243', 'Escape', '243', '4294967295', '243', '243', '59', '9', '102', '1', '0', '0', '3', '5244', '1', '4320', '512', '0', '1', '2147483647', '2147483647', '9', '3', '0');
INSERT INTO `sof_altadv_vars` VALUES ('244', 'Poison Mastery', '4294967295', '4294967295', '244', '244', '59', '3', '103', '1', '0', '0', '1', '4294967295', '0', '0', '512', '0', '3', '4294967295', '245', '3', '3', '2');
INSERT INTO `sof_altadv_vars` VALUES ('247', 'Double Riposte', '4294967295', '4294967295', '247', '247', '59', '3', '104', '1', '0', '0', '2', '4294967295', '0', '0', '33466', '1', '6', '4294967295', '248', '3', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('254', 'Purge Poison', '254', '254', '254', '254', '59', '5', '107', '1', '0', '0', '3', '5232', '12', '4320', '512', '0', '1', '4294967295', '4294967295', '5', '3', '0');
INSERT INTO `sof_altadv_vars` VALUES ('279', 'Physical Enhancement', '4294967295', '4294967295', '279', '279', '59', '5', '120', '1', '0', '0', '3', '4294967295', '0', '0', '33722', '1', '1', '4294967295', '4294967295', '5', '3', '3');
INSERT INTO `sof_altadv_vars` VALUES ('280', 'Adv. Trap Negotiation', '4294967295', '4294967295', '280', '280', '59', '3', '121', '1', '0', '0', '3', '4294967295', '0', '0', '768', '0', '3', '4294967295', '281', '3', '3', '2');
INSERT INTO `sof_altadv_vars` VALUES ('283', 'Acrobatics', '4294967295', '4294967295', '283', '283', '59', '3', '122', '1', '0', '0', '3', '4294967295', '0', '0', '896', '0', '3', '4294967295', '284', '3', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('287', 'Chaotic Stab', '4294967295', '4294967295', '287', '287', '59', '6', '124', '1', '0', '0', '3', '4294967295', '0', '0', '512', '0', '1', '4294967295', '4294967295', '6', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('412', 'New Tanaan Crafting Mastery', '4294967295', '4294967295', '412', '412', '51', '3', '141', '6', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '6', '416', '4294967295', '18', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('418', 'Planar Power', '4294967295', '4294967295', '418', '418', '65', '2', '142', '5', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '20', '421', '1001', '10', '4', '7');
INSERT INTO `sof_altadv_vars` VALUES ('498', 'Hasty Exit', '4294967295', '4294967295', '498', '498', '65', '2', '166', '3', '243', '1', '3', '4294967295', '0', '0', '512', '0', '6', '499', '886', '6', '4', '1');
INSERT INTO `sof_altadv_vars` VALUES ('501', 'Hastened Purification', '4294967295', '4294967295', '501', '501', '63', '2', '167', '1', '254', '1', '3', '4294967295', '0', '0', '512', '0', '6', '4294967295', '502', '2', '4', '1');
INSERT INTO `sof_altadv_vars` VALUES ('564', 'Ferocity', '4294967295', '4294967295', '564', '564', '65', '3', '189', '3', '0', '0', '2', '4294967295', '0', '0', '658', '1', '6', '565', '1621', '9', '4', '1');
INSERT INTO `sof_altadv_vars` VALUES ('605', 'Shroud of Stealth', '4294967295', '4294967295', '605', '605', '63', '6', '204', '1', '0', '0', '3', '4294967295', '0', '0', '512', '0', '1', '4294967295', '4294967295', '6', '4', '1');
INSERT INTO `sof_altadv_vars` VALUES ('606', 'Nimble Evasion', '4294967295', '4294967295', '606', '606', '65', '1', '205', '5', '0', '0', '3', '4294967295', '0', '0', '512', '0', '5', '609', '4294967295', '5', '4', '1');
INSERT INTO `sof_altadv_vars` VALUES ('622', 'Hastened Stealth', '4294967295', '4294967295', '622', '622', '63', '3', '209', '3', '0', '0', '3', '4294967295', '0', '0', '512', '0', '3', '623', '4294967295', '9', '4', '1');
INSERT INTO `sof_altadv_vars` VALUES ('625', 'Ingenuity', '4294967295', '4294967295', '625', '625', '65', '3', '210', '3', '0', '0', '2', '4294967295', '0', '0', '642', '1', '9', '626', '4733', '6', '4', '1');
INSERT INTO `sof_altadv_vars` VALUES ('65', 'Innate Regeneration', '4294967295', '4294967295', '65', '65', '51', '1', '225', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '25', '4294967295', '662', '1', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('62', 'Innate Run Speed', '4294967295', '4294967295', '62', '62', '61', '5', '13', '4', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '5', '64', '673', '8', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('678', 'Packrat', '4294967295', '4294967295', '678', '678', '61', '3', '233', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '11', '4294967295', '679', '3', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('683', 'Heightened Endurance', '4294967295', '4294967295', '683', '683', '61', '3', '234', '1', '0', '0', '2', '4294967295', '0', '0', '642', '1', '15', '4294967295', '684', '3', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('686', 'Weapon Affinity', '4294967295', '4294967295', '686', '686', '55', '5', '235', '5', '0', '0', '2', '4294967295', '0', '0', '33722', '1', '6', '689', '7640', '25', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('806', 'Sinister Strikes', '4294967295', '4294967295', '806', '806', '65', '12', '270', '1', '198', '1', '3', '4294967295', '0', '0', '33682', '0', '1', '4294967295', '4294967295', '12', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('846', 'Triple Backstab', '4294967295', '4294967295', '846', '846', '65', '9', '281', '3', '0', '0', '3', '4294967295', '0', '0', '512', '0', '15', '847', '1301', '18', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('878', 'Seized Opportunity', '4294967295', '4294967295', '878', '878', '65', '3', '790', '1', '0', '0', '3', '4294967295', '0', '0', '512', '0', '13', '4294967295', '879', '3', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('881', 'Trap Circumvention', '4294967295', '4294967295', '881', '881', '65', '3', '292', '1', '0', '0', '3', '4294967295', '0', '0', '512', '0', '5', '4294967295', '882', '3', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('888', 'Virulent Venom ', '4294967295', '4294967295', '888', '888', '65', '3', '294', '1', '0', '0', '3', '4294967295', '0', '0', '512', '0', '5', '4294967295', '889', '3', '7', '1');
INSERT INTO `sof_altadv_vars` VALUES ('113', 'Combat Fury', '4294967295', '4294967295', '113', '113', '64', '3', '310', '6', '0', '0', '3', '4294967295', '0', '0', '512', '0', '6', '947', '4294967295', '21', '4', '11');
INSERT INTO `sof_altadv_vars` VALUES ('979', 'Blacksmithing Mastery', '4294967295', '4294967295', '979', '979', '59', '3', '324', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '980', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('982', 'Baking Mastery', '4294967295', '4294967295', '982', '982', '59', '3', '325', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '983', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('985', 'Brewing Mastery', '4294967295', '4294967295', '985', '985', '59', '3', '326', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '986', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('988', 'Fletching Mastery', '4294967295', '4294967295', '988', '988', '59', '3', '327', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '989', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('991', 'Pottery Mastery', '4294967295', '4294967295', '991', '991', '59', '3', '328', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '992', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('994', 'Tailoring Mastery', '4294967295', '4294967295', '994', '994', '59', '3', '329', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '995', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('997', 'Salvage', '4294967295', '4294967295', '997', '997', '60', '5', '330', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '998', '5', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1000', 'Origin', '1000', '4294967295', '1000', '1000', '67', '7', '331', '1', '0', '0', '1', '5824', '20', '4320', '65534', '1', '1', '4294967295', '4294967295', '7', '8', '0');
INSERT INTO `sof_altadv_vars` VALUES ('1006', 'Discordant Defiance', '4294967295', '4294967295', '1006', '1006', '66', '5', '333', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '10', '4294967295', '1007', '5', '8', '5');
INSERT INTO `sof_altadv_vars` VALUES ('1021', 'Mystical Attuning', '4294967295', '4294967295', '1021', '1021', '51', '5', '334', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '7', '4294967295', '1022', '5', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1026', 'Delay Death', '4294967295', '4294967295', '1026', '1026', '66', '3', '335', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '25', '4294967295', '1027', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1044', 'Veteran\'s Wrath', '4294967295', '4294967295', '1044', '1044', '67', '3', '339', '1', '113', '6', '3', '4294967295', '0', '0', '512', '0', '12', '4294967295', '1045', '3', '8', '6');
INSERT INTO `sof_altadv_vars` VALUES ('1056', 'Energetic Attunement', '4294967295', '4294967295', '1056', '1056', '71', '5', '783', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '15', '4294967295', '1057', '5', '12', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1092', 'Master of Disguise', '4294967295', '4294967295', '1092', '1092', '67', '7', '353', '1', '0', '0', '3', '4294967295', '0', '0', '768', '0', '1', '4294967295', '4294967295', '7', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1093', 'Slippery Attacks', '4294967295', '4294967295', '1093', '1093', '66', '3', '354', '1', '0', '0', '2', '4294967295', '0', '0', '33682', '0', '5', '4294967295', '1094', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1181', 'Shielding Resistance', '4294967295', '4294967295', '1181', '1181', '66', '3', '388', '1', '0', '0', '2', '4294967295', '0', '0', '33682', '0', '5', '4294967295', '1182', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1304', 'Precision', '4294967295', '4294967295', '1304', '1304', '66', '3', '439', '1', '0', '0', '3', '4294967295', '0', '0', '512', '0', '9', '4294967295', '1305', '3', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1307', 'Nerves of Steel', '4294967295', '4294967295', '1307', '1307', '66', '5', '440', '1', '0', '0', '3', '4294967295', '0', '0', '512', '0', '8', '4294967295', '1308', '5', '8', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1388', 'Innate See Invis', '4294967295', '4294967295', '1388', '1388', '70', '9', '322', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '1', '4294967295', '4294967295', '9', '10', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1420', 'Bandage Wounds', '4294967295', '4294967295', '1420', '1420', '66', '3', '497', '1', '74', '3', '1', '4294967295', '0', '0', '65532', '0', '5', '4294967295', '1421', '3', '10', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1477', 'Stealthy Getaway', '1477', '1477', '1477', '1477', '70', '9', '789', '1', '0', '0', '3', '8149', '3', '4320', '512', '0', '1', '4294967295', '4294967295', '9', '10', '0');
INSERT INTO `sof_altadv_vars` VALUES ('1542', 'Appraisal', '1542', '4294967295', '1542', '1542', '60', '3', '536', '1', '0', '0', '3', '8240', '0', '1', '512', '0', '1', '4294967295', '4294967295', '3', '10', '0');
INSERT INTO `sof_altadv_vars` VALUES ('1543', 'Precise Strikes', '4294967295', '4294967295', '1543', '1543', '70', '5', '537', '1', '1304', '3', '3', '4294967295', '0', '0', '512', '0', '12', '4294967295', '1544', '5', '10', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1587', 'Concentration', '4294967295', '4294967295', '1587', '1587', '66', '3', '563', '1', '0', '0', '2', '4294967295', '0', '0', '642', '1', '3', '4294967295', '1589', '3', '10', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1592', 'Enhanced Aggression', '4294967295', '4294967295', '1592', '1592', '66', '5', '498', '1', '0', '0', '2', '4294967295', '0', '0', '33722', '1', '20', '4294967295', '1593', '5', '10', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1604', 'Anatomy', '4294967295', '4294967295', '1604', '1604', '66', '5', '555', '1', '0', '0', '3', '4294967295', '0', '0', '512', '0', '14', '4294967295', '1605', '5', '10', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1641', 'Thief\'s Intuition', '4294967295', '4294967295', '1641', '1641', '70', '15', '568', '1', '280', '3', '3', '4294967295', '0', '0', '512', '0', '1', '4294967295', '4294967295', '15', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('1647', 'Harmonic Dissonance', '1647', '1647', '1647', '1647', '68', '0', '574', '1', '0', '0', '4', '8771', '21', '900', '65534', '1', '1', '4294967295', '4294967295', '0', '3', '0');
INSERT INTO `sof_altadv_vars` VALUES ('4675', 'Jewel Craft Mastery', '4294967295', '4294967295', '4675', '4675', '59', '3', '576', '1', '0', '0', '1', '4294967295', '0', '0', '49150', '1', '3', '4294967295', '4676', '3', '3', '1');
INSERT INTO `sof_altadv_vars` VALUES ('4688', 'Combat Medic', '4294967295', '4294967295', '4688', '4688', '71', '3', '579', '1', '1420', '5', '1', '4294967295', '0', '0', '65532', '0', '5', '4294967295', '4689', '3', '12', '1');
INSERT INTO `sof_altadv_vars` VALUES ('4698', 'Quick Draw', '4294967295', '4294967295', '4698', '4698', '51', '5', '581', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '2', '4294967295', '6545', '5', '12', '1');
INSERT INTO `sof_altadv_vars` VALUES ('4699', 'Battle Ready', '4294967295', '4294967295', '4699', '4699', '51', '5', '582', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '3', '4294967295', '6540', '5', '12', '1');
INSERT INTO `sof_altadv_vars` VALUES ('4702', 'Glyph of Dragon Scales', '4702', '4702', '4702', '4702', '71', '3', '585', '1', '0', '0', '4', '9475', '31', '600', '65534', '1', '1', '4294967295', '4294967295', '3', '12', '0');
INSERT INTO `sof_altadv_vars` VALUES ('4705', 'Glyph of Draconic Potential', '4705', '4705', '4705', '4705', '71', '3', '588', '1', '0', '0', '4', '9478', '31', '600', '65534', '1', '1', '4294967295', '4294967295', '3', '12', '0');
INSERT INTO `sof_altadv_vars` VALUES ('4706', 'Glyph of Destruction', '4706', '4706', '4706', '4706', '71', '3', '589', '1', '0', '0', '4', '9479', '31', '600', '65534', '1', '1', '4294967295', '4294967295', '3', '12', '0');
INSERT INTO `sof_altadv_vars` VALUES ('4739', 'Killing Spree', '4294967295', '4294967295', '4739', '4739', '71', '3', '733', '1', '0', '0', '2', '4294967295', '0', '0', '642', '1', '9', '4294967295', '4740', '3', '12', '1');
INSERT INTO `sof_altadv_vars` VALUES ('5021', 'Twisted Shank', '5021', '5021', '5021', '5021', '71', '9', '670', '1', '0', '0', '3', '11341', '7', '60', '512', '0', '1', '4294967295', '4294967295', '9', '12', '0');
INSERT INTO `sof_altadv_vars` VALUES ('5022', 'Dirty Fighting', '5022', '5022', '5022', '5022', '71', '3', '671', '1', '0', '0', '3', '11247', '5', '600', '512', '0', '6', '4294967295', '5023', '3', '12', '0');
INSERT INTO `sof_altadv_vars` VALUES ('5025', 'Ligament Slice', '5025', '5025', '5025', '5025', '71', '3', '672', '1', '0', '0', '3', '11251', '6', '180', '512', '0', '3', '4294967295', '5026', '3', '12', '0');
INSERT INTO `sof_altadv_vars` VALUES ('5028', 'Tumble', '5028', '4294967295', '5028', '5028', '75', '9', '673', '1', '0', '0', '3', '11254', '4', '900', '512', '0', '2', '4294967295', '6041', '9', '12', '0');
INSERT INTO `sof_altadv_vars` VALUES ('6119', 'General Sturdiness', '4294967295', '4294967295', '6119', '6119', '76', '6', '3801', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '10', '4294967295', '6120', '6', '14', '1');
INSERT INTO `sof_altadv_vars` VALUES ('5263', 'Shield Block', '4294967295', '4294967295', '5263', '5263', '71', '3', '3802', '1', '0', '0', '2', '4294967295', '0', '0', '784', '0', '6', '4294967295', '6125', '3', '12', '1');
INSERT INTO `sof_altadv_vars` VALUES ('6559', 'Hastened Ligament Slice', '4294967295', '4294967295', '6559', '6559', '73', '6', '3726', '1', '5025', '1', '3', '4294967295', '0', '0', '512', '0', '6', '4294967295', '6273', '6', '14', '1');
INSERT INTO `sof_altadv_vars` VALUES ('6560', 'Knave\'s Return Kick', '4294967295', '4294967295', '6560', '6560', '73', '6', '3727', '1', '878', '1', '3', '4294967295', '0', '0', '512', '0', '3', '4294967295', '6276', '6', '14', '2');
INSERT INTO `sof_altadv_vars` VALUES ('52000', 'Glyph of Courage', '52000', '52000', '52000', '52000', '65', '4', '5000', '1', '0', '0', '4', '12748', '31', '600', '65534', '1', '1', '4294967295', '4294967295', '4', '0', '0');
INSERT INTO `sof_altadv_vars` VALUES ('52002', 'Glyph of Stored Life', '52002', '52002', '52002', '52002', '65', '4', '5002', '1', '0', '0', '4', '12750', '31', '600', '65534', '1', '1', '4294967295', '4294967295', '4', '0', '0');
INSERT INTO `sof_altadv_vars` VALUES ('52004', 'Glyph of Angry Thoughts', '52004', '52004', '52004', '52004', '65', '4', '5004', '1', '0', '0', '4', '12752', '31', '300', '65534', '1', '1', '4294967295', '4294967295', '4', '0', '0');
INSERT INTO `sof_altadv_vars` VALUES ('7062', 'Foraging', '4294967295', '4294967295', '7062', '7062', '51', '3', '5005', '1', '0', '0', '1', '4294967295', '0', '0', '65534', '1', '1', '4294967295', '4294967295', '3', '0', '1');
With some recent discoveries from Derision, SoF AAs are almost completely functional on my test server. There are still a few minor things to work out, but once those are done, the tables will just need to be filled in the rest of the way and they will be ready to go.

Also, I think it would be a very good idea to maybe add 1 more field to this table as a bool. The new field could be called something like "enabled" with 1 being enabled and 0 being disabled (enabled is default). This new field would then be checked before sending the AA with the AA tables. That way, we could populate the entire table to include every single AA, but then decide which ones we want to send to the client so we don't send them a bunch of AAs that have no coding support for them just yet.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
  #14  
Old 04-30-2009, 08:45 AM
So_1337
Dragon
 
Join Date: May 2006
Location: Cincinnati, OH
Posts: 689
Default

That's a really good idea, actually, if it could be worked out in the code. Everyone's well aware that most of the EQEmu project is a work in progress, it'd be nice to save them the trouble of buying non-working AAs or at least be able to warn them of them if possible. At worst (though it wouldn't be quite Live-like), the AA's description could have a note added to explain that it isn't functional yet.

EDIT: On second thought, I suppose a note like that couldn't be added. The actually descriptions aren't loaded from the database, are they? Sorry, I still have a lot to learn.
Reply With Quote
  #15  
Old 04-30-2009, 05:03 PM
trevius's Avatar
trevius
Developer
 
Join Date: Aug 2006
Location: USA
Posts: 5,946
Default

Well, I am sure we could make a standard setting to either disable them in game or to warn about them. Actually, we could just set a bogus prereq_skill skill for any we want to disable. That is probably the easiest and best way to deal with this. Then, as AAs are coded, we just remove that prereq_skill or set it to whatever it is supposed to be set to. I didn't really think about doing it that way before, but it would be simple and require no extra coding.

I think once the issue with consolidated AAs is figured out, I should be able to collect the rest of the class' AAs and get them all added. Then, it would just mean some clean up to make sure everything is set properly.

Once the tables are ready, we would just need to get it coded to be able to handle separate tables for SoF AAs. I am not exactly sure how to do that, but I am sure it is possible.
__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote
Reply


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

   

All times are GMT -4. The time now is 02:34 AM.


 

Everquest is a registered trademark of Daybreak Game Company LLC.
EQEmulator is not associated or affiliated in any way with Daybreak Game Company LLC.
Except where otherwise noted, this site is licensed under a Creative Commons License.
       
Powered by vBulletin®, Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Template by Bluepearl Design and vBulletin Templates - Ver3.3