This documentation is no longer fully valid due to comprehensive reorganization of the how the AA tables function. - Kayen 10/11/15Will update at later timeWill keep this data here because it is still relevant if you are using an older database----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------This post is a work in progressThis guide is meant to provide comprehensive information on how to work with AA abilities. Editing and adding new AA's is not difficult but you need to understand how it all works.Nearly all data for AA's are now stored in your server tables.Originally By Kayen from Storm Haven
- This table contains the core data for your AA's.
- Each entry represents an individual AA.
- Do not be fooled on SoF+ clients/Live, although many AA's appear as a single entry line in the window ie Combat Agility, these are really composed of several individual AA's from different expansions, added together.
- This is the actual id assigned to your AA.
- For post planes of power era AA this also corresponds to the title id derived from the dbstr_us.
- Searching your dbstr_us for this number will return the AA's name. Conversely searching an AA's name in the dbstr_us will give you the skill_id.
- The starting cost of the AA
- How many ranks the AA has for its specific tier (max 20)
- First line of your hot key (data in dbstr_us/eqstr_us)
- Second line of your hot key (data in dbstr_us/eqstr_us)
- Name of the AA in widow value found in in dbstr_us/eqstr_us
- Description of the AA in widow value found in in dbstr_us/eqstr_us
- Note: eqstr_us was used for Luclin/PoP AA, after which time all AA data was changed to dbstr_us.
- The way AA's are implemented on emu your Titanium client will need to have both a valid dbstr_us and eqstr_us.
- (Titanium only) Determines which tab the AA goes under.
- If clickable AA, put spell ID here however the actual spell data is pulled from the aa_actions table.
- skill_id of AA that is required to have been completed before this AA can be accessed.
- Set this to the max_level of the skill_id above, basically says you finished that AA.
- Reuse Time ID
- AA recast time in seconds
- Bitmask of classes that can use the AA. Remember to add up the results.
- The min required level for a class to use this AA ability.
- Cost increase per AA rank (1/3/6 ect. value = 3
- The name of the expansion displayed next to the AA
- - Quest related AA will add more detail later.
- *Following for SOF client only*
- SOF client differs from Titanium in that there are less tabs, and AA of the same type are suppose to stack together in one line.
- For discussion purposes lets call these stackable AA's 'AA Group', these AA's all share a common sof_next_skill.
Determines what tab the AA goes under
- Total number of combined ranks for an 'AA Group'.
- Derived by adding up the max_level of each AA within the group.
- This ID represents the title of the AA displayed on SoF clients. This should be the skill_id. If the AA belongs to an 'AA Group' this would be the parent AA's skill_id.
- Client version that will display this AA.
- Basically you see all AA equal to or below your own client version.
- So if an AA is set to 6 you will not see it unless you have UF.
Min time till AA can be displayed.
Used for SoF AA stacking. This represents the current level within an 'AA Group'.
Example: These two AA stack showing 0/15 ect.
Innate Strength 'max level' = 5 , sof_current_level = 0
Advanced Innate Strength 'max_level' = 10, sof_current_level = 5
*Therefore when you reach advanced innate strength it will show 5/15
- This is the actual skill_id of the next AA in an AA group.
Innate Strength 'skill_id' = 2 , sof_next_id = 292
Advanced Innate Strength 'skill_id' = 292, sof_next_id = 0 (If last id in group)
*Not SoF+ only
Increments required level to learn AA each rank. Ie max_level of 3, starting level 61, if value = 2 then 61 63 65.
- This table contains data for almost all AA that are not used via a hotkey.
- These are all innate effects applied to the client.
- Lets use AA 'Weapons Affinity' as the simple example.
- Just an incremental id DOES NOT correlate to the AA's skill_id
- This correlates to the 'skill_id' found in the altadv_vars table
- For AA that have multiple ranks, the initial aa_id is equal to the 'skill_id' after which the aaid is incremented +1, for each additional rank.
- Example AA 'Weapons Affinity' skill_id 686 has 5 ranks.
- Therefore you would have a table entry for aaid 686, 687, 688,689,690
- Used when a single AA has multiple different effects, which may or may not use the same effectid.
- Example AA 'Weapons Affinity' only has 1 slot per rank since it uses only one specific effect.
- If we wanted to add effectid = 220 (SE_SkillDamageAmount) to 'Weapons Affinity' we could do so by adding a slot.
- This would then give you +skill damage AND +chance to proc.
- For this example the amount of skill damage added is a flat +30 for each rank
- This is the spell effect used by the AA,
- Example AA 'Weapons Affinity' skill_id 686 uses spell effect 200 'SE_ProcChance' (Full list of spell effects can be found in the spdat.h)
- This is the primary value of the effect.
- Example Weapon Affinity at rank 1, gives +10% chance to proc.
- This is the secondary value of the effect.
- Usually acts as limiter, determining things like skill types, or stat types that the base1 is applied to.
- Example Weapon Affinity does not have any limiters.
- Example: Viscious Smash 'skill id' 855, effectid = 220 (SE_SkillDamageAmount)
Therefore this AA adds 5 points of damage (base1) when using the 'smash skill' (10).
§How to add a new 'AA'
- Let me preface by saying there are some significant challenges in making custom AA.
- First any custom names require changes to the dbstr_us.
- Second, you need to find a safe skill_id range that is not used on live, this can be challenging.
- I recommend viewing the aa.h for the current list (do not exceed max).
- That said, you have now identified a safe range to use and you are going to use a name already in the dbstr_us.
- Lets say I want to add a new custom upgrade to 'Weapons Affinity' lets call it 'Weapons Affinity II' which will add another +10% per rank.
1) Copy the original weapon affinity AA data from altad_vars into a new row with the 'skill_id' you have chosen let us use 10,000 as the example.
2) Adjust the values as appropriate in each field. (As long as you have a unique id this will work)
- For this example we will use another 5 ranks (max_level = 5).
3) Add to your aa_effects table the values for this new AA.
§How does this all work?
- The game will calculate your characters proc rate bonus from 'Weapons Affinity' when you enter a zone (among other things) by adding together the max value of each individual AA.
- So if you only have Weapons Affinity maxed out you get +50%, if then went and bought Weapons Affinity II up to rank 3 you would get 50+30 = 80%. If you maxed out both you get 100%.
- For MOST effects in the aa_effects table this is how it works, it adds up each individual AA of the same type together then gives you a bonus based on the total.
- There are though some AA, that work by only taking the highest value of the effect (this is beyond the scope of this document)