Loading...   

[Show Table of Contents]


This documentation is no longer fully valid due to comprehensive reorganization of the how the AA tables function. - Kayen 10/11/15
Will update at later time
Will keep this data here because it is still relevant if you are using an older database
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 
 
This post is a work in progress
 
This 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

§Table: altadv_vars

  • 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.

§skill_id

  • 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.

§cost

  • The starting cost of the AA

§max_level

  • How many ranks the AA has for its specific tier (max 20)

§hotkey_sid

  • First line of your hot key (data in dbstr_us/eqstr_us)

§hotkey_sid2

  • Second line of your hot key (data in dbstr_us/eqstr_us)

§title_sid

  • Name of the AA in widow value found in in dbstr_us/eqstr_us

§desc_sid

  • 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.

§type

  • (Titanium only) Determines which tab the AA goes under.
  • 1: General
    2: Archetype
    3: Class
    4: PoP Advance
    5: PoP Ability
    6: Gates
    7: Omens
    8: Veteran
    11: Darkhollow
spell_id
  • If clickable AA, put spell ID here however the actual spell data is pulled from the aa_actions table.

§prereq_skill

  • skill_id of AA that is required to have been completed before this AA can be accessed.

§prereq_minpoints

  • Set this to the max_level of the skill_id above, basically says you finished that AA.

§spell_type

  • Reuse Time ID

§spell_refresh

  • AA recast time in seconds

§classes

  • Bitmask of classes that can use the AA. Remember to add up the results.
  • 0 = None
    2 = Warrior
    4 = Cleric
    8 = Paladin
    16 = Ranger
    32 = Shadow Knight
    64 = Druid
    128 = Monk
    256 = Bard
    512 = Rogue
    1024 = Shaman
    2048 = Necromancer
    4096 = Wizard
    8192 = Magician
    16384 = Enchanter
    32768 = Beastlord
    Beserker has it's own field
    65534 = All (but don't forget to put 1 in the berserker as well to add them)
    IE, Druid (64) + Rogue (512) = 576

§berserker

  • 1 = Berserker can use this AA ability.
    0 = Berserker can not.

§class_type

  • The min required level for a class to use this AA ability.

§cost_inc

  • Cost increase per AA rank (1/3/6 ect. value = 3

§aa_expansion

  • The name of the expansion displayed next to the AA
  • 0: Everquest
    1: Kunark
    2: Velious
    3: Luclin
    4: PoP
    5: LDON
    6: LoY
    7: GoD
    8: OoW
    9: DoN
    10: DoDH
    11: PoR
    12: TSS
    13: TBS
    14: SoF
    15: SoD
    16: Underfoot

§special_category

  • - 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.

§sof_type

Determines what tab the AA goes under
  • 1: General
    2: Archetype
    3: Class
    4: Special

§sof_cost_inc

  • UNUSED

§sof_max_level

  • Total number of combined ranks for an 'AA Group'.
  • Derived by adding up the max_level of each AA within the group. 

§sof_next_skill

  • 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. 

§clientvar

  • Client version that will display this AA.
  • 0: none
  • 1: All
  • 2: Titanium
  • 3: Titanium?
  • 4: SoF
  • 5: SoD
  • 6: UF
  • 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.

§account_time_required

Min time till AA can be displayed.
 

§sof_current_level

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

§sof_next_id

  • 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)

§level_inc

*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.

§Table: aa_effects

  • 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.
id aaid slot effectid base1 base2
744 686 1 200 10 0
745 687 1 200 20 0
746 688 1 200 30 0
747 689 1 200 40 0
748 690 1 200 50 0

§id

  • Just an incremental id DOES NOT correlate to the AA's skill_id

§aaid

  • 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

§slot

  • 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
 
id aaid slot effectid base1 base2
744 686 1 200 10 0
745 686 2 220 30 0
746 687 1 200 20 0
747 687 2 220 60 0
748 688 1 200 30 0
749 688 2 220 90 0
750 689 1 200 30 0
751 689 2 220 120 0
752 690 1 200 30 0
753 690 2 220 150 0

§effectid

  • 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)

§base1

  • This is the primary value of the effect.
  • Example Weapon Affinity at rank 1, gives +10% chance to proc.

§base2

  • 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)
id aaid slot effectid base1 base2
673 855 1 220 5 10
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.
 
800 10000 1 200 10 0
801 10001 1 200 20 0
802 10002 1 200 30 0
803 10003 1 200 40 0
804 10004 1 200 50 0

§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)