Skip to content

Spell Data

Niphyr edited this page Oct 2, 2020 · 3 revisions

Generated file is here

https://github.com/simulationcraft/simc/blob/shadowlands/engine/dbc/generated/sc_spell_data.inc

Contents

  • __spell_data is an array of Spell data
  • __spelleffect_data is an array of Spell effects and their properties
static spell_data_t __spell_data[16945] = {
static spelleffect_data_t __spelleffect_data[24845] = {

Other relevant values:

constexpr unsigned NUM_SPELL_FLAGS = 15;
constexpr unsigned NUM_CLASS_FAMILY_FLAGS = 4;

Structure of spell_data_t :

struct spell_data_t
{
  const char* _name;               // Spell name from Spell.dbc stringblock (enGB)
  unsigned    _id;                 // Spell ID in dbc
  unsigned    _school;             // Spell school mask
  double      _prj_speed;          // Projectile Speed
  uint64_t    _race_mask;          // Racial mask for the spell
  unsigned    _class_mask;         // Class mask for spell
  int         _scaling_type;       // Array index for gtSpellScaling.dbc. -1 means the first non-class-specific sub array, and so on, 0 disabled
  int         _max_scaling_level;  // Max scaling level(?), 0 == no restrictions, otherwise min( player_level, max_scaling_level )
  // SpellLevels.dbc
  unsigned    _spell_level;        // Spell learned on level. NOTE: Only accurate for "class abilities"
  unsigned    _max_level;          // Maximum level for scaling
  unsigned    _req_max_level;
  // SpellRange.dbc
  double      _min_range;          // Minimum range in yards
  double      _max_range;          // Maximum range in yards
  // SpellCooldown.dbc
  unsigned    _cooldown;           // Cooldown in milliseconds
  unsigned    _gcd;                // GCD in milliseconds
  unsigned    _category_cooldown;  // Category cooldown in milliseconds
  // SpellCategory.dbc
  unsigned    _charges;            // Number of charges
  unsigned    _charge_cooldown;    // Cooldown duration of charges
  // SpellCategories.dbc
  unsigned    _category;           // Spell category (for shared cooldowns, effects?)
  unsigned    _dmg_class;          // Classification for the spell
  int         _max_targets;        // Max number of targets
  // SpellDuration.dbc
  double      _duration;           // Spell duration in milliseconds
  // SpellAuraOptions.dbc
  unsigned    _max_stack;          // Maximum stack size for spell
  unsigned    _proc_chance;        // Spell proc chance in percent
  int         _proc_charges;       // Per proc charge amount
  unsigned    _proc_flags;         // Proc flags
  unsigned    _internal_cooldown;  // ICD
  double      _rppm;               // Base real procs per minute
  // SpellEquippedItems.dbc
  unsigned    _equipped_class;
  unsigned    _equipped_invtype_mask;
  unsigned    _equipped_subclass_mask;
  // SpellScaling.dbc
  int         _cast_time;          // Casting time in milliseconds
  // Spell.dbc flags
  unsigned    _attributes[NUM_SPELL_FLAGS]; // SpellMisc.dbc "flags"
  unsigned    _class_flags[NUM_CLASS_FAMILY_FLAGS]; // SpellClassOptions.dbc flags
  unsigned    _class_flags_family; // SpellClassOptions.dbc spell family
  // SpellShapeshift.db2
  unsigned    _stance_mask;        // Stance mask (used only for druid form restrictions?)
  // SpellMechanic.db2
  unsigned    _mechanic;
  // Azerite stuff
  unsigned    _power_id;           // Azerite power id
  unsigned    _essence_id;         // Azerite essence id
}

Structure of spelleffect_data_t :

struct spelleffect_data_t
{
  unsigned         _id;              // Effect id
  unsigned         _spell_id;        // Spell this effect belongs to
  unsigned         _index;           // Effect index for the spell
  unsigned         _type;            // Effect type
  unsigned         _subtype;         // Effect sub-type
  // SpellScaling.dbc
  double           _m_coeff;         // Effect average spell scaling multiplier
  double           _m_delta;         // Effect delta spell scaling multiplier
  double           _m_unk;           // Unused effect scaling multiplier
  //
  double           _sp_coeff;        // Effect coefficient
  double           _ap_coeff;        // Effect attack power coefficient
  double           _amplitude;       // Effect amplitude (e.g., tick time)
  // SpellRadius.dbc
  double           _radius;          // Minimum spell radius
  double           _radius_max;      // Maximum spell radius
  //
  double           _base_value;      // Effect value
  int              _misc_value;      // Effect miscellaneous value
  int              _misc_value_2;    // Effect miscellaneous value 2
  unsigned         _class_flags[NUM_CLASS_FAMILY_FLAGS]; // Class family flags
  unsigned         _trigger_spell_id;// Effect triggers this spell id
  double           _m_chain;         // Effect chain multiplier
  double           _pp_combo_points; // Effect points per combo points
  double           _real_ppl;        // Effect real points per level
  unsigned         _mechanic;        // Effect Mechanic
  int              _chain_target;    // Number of targets (for chained spells)
  unsigned         _targeting_1;     // Targeting related field 1
  unsigned         _targeting_2;     // Targeting related field 2
  double           _m_value;         // Misc multiplier used for some spells(?)
  double           _pvp_coeff;       // PvP Coefficient
}

Clone this wiki locally