Spell proc
Таблица spell_proc
Таблица spell_proc из базы данных world задаёт условия проков (proc) для аур, которые используют SPELL_AURA_PROC_TRIGGER_SPELL (42). Запись в этой таблице переопределяет настройки проков, заданные в клиентских данных (DBC/DB2).
| Field | Type | Attributes | Key | Null | Default | Extra |
|---|---|---|---|---|---|---|
| SpellId | int | PRIMARY | NO | 0 | ||
| SchoolMask | tinyint | UNSIGNED | NO | 0 | ||
| SpellFamilyName | smallint | UNSIGNED | NO | 0 | ||
| SpellFamilyMask0 | int | UNSIGNED | NO | 0 | ||
| SpellFamilyMask1 | int | UNSIGNED | NO | 0 | ||
| SpellFamilyMask2 | int | UNSIGNED | NO | 0 | ||
| SpellFamilyMask3 | int | UNSIGNED | NO | 0 | ||
| ProcFlags | int | UNSIGNED | NO | 0 | ||
| ProcFlags2 | int | UNSIGNED | NO | 0 | ||
| SpellTypeMask | int | UNSIGNED | NO | 0 | ||
| SpellPhaseMask | int | UNSIGNED | NO | 0 | ||
| HitMask | int | UNSIGNED | NO | 0 | ||
| AttributesMask | int | UNSIGNED | NO | 0 | ||
| DisableEffectsMask | int | UNSIGNED | NO | 0 | ||
| ProcsPerMinute | float | NO | 0 | |||
| Chance | float | NO | 0 | |||
| Cooldown | int | UNSIGNED | NO | 0 | ||
| Charges | tinyint | UNSIGNED | NO | 0 |
SpellId
Spell ID ауры/спела, который может прокать по событию (это «сам прок»).
Пример: 321377
SchoolMask
Битовая маска школ спела, которые могут триггерить прок (складывается как битовая маска).
| Value | Name | Описание |
|---|---|---|
| 1 | SPELL_SCHOOL_NORMAL | Physical |
| 2 | SPELL_SCHOOL_HOLY | Holy |
| 4 | SPELL_SCHOOL_FIRE | Fire |
| 8 | SPELL_SCHOOL_NATURE | Nature |
| 16 | SPELL_SCHOOL_FROST | Frost |
| 32 | SPELL_SCHOOL_SHADOW | Shadow |
| 64 | SPELL_SCHOOL_ARCANE | Arcane |
Пример: 32
SpellFamilyName
Ограничение по семейству спелов (SpellFamily). Используется вместе с SpellFamilyMask0–SpellFamilyMask3.
| Value | Name | Описание |
|---|---|---|
| 0 | SPELLFAMILY_GENERIC | Generic |
| 1 | SPELLFAMILY_UNK1 | Unk1 (events/holidays и т.п.) |
| 3 | SPELLFAMILY_MAGE | Mage |
| 4 | SPELLFAMILY_WARRIOR | Warrior |
| 5 | SPELLFAMILY_WARLOCK | Warlock |
| 6 | SPELLFAMILY_PRIEST | Priest |
| 7 | SPELLFAMILY_DRUID | Druid |
| 8 | SPELLFAMILY_ROGUE | Rogue |
| 9 | SPELLFAMILY_HUNTER | Hunter |
| 10 | SPELLFAMILY_PALADIN | Paladin |
| 11 | SPELLFAMILY_SHAMAN | Shaman |
| 12 | SPELLFAMILY_UNK2 | Unk2 |
| 13 | SPELLFAMILY_POTION | Potion |
| 15 | SPELLFAMILY_DEATHKNIGHT | Death Knight |
| 17 | SPELLFAMILY_PET | Pet |
| 53 | SPELLFAMILY_MONK | Monk |
| 107 | SPELLFAMILY_DEMONHUNTER | Demon Hunter |
Пример: 6
SpellFamilyMask0
SpellFamilyMask1
SpellFamilyMask2
SpellFamilyMask3
Битовые маски семейства (SpellFamilyFlags). Ограничивают, какие именно спеллы внутри семейства SpellFamilyName могут триггерить прок. Значения — это флаги семейства спела (обычно набор 4×32 бита).
Пример: 0x10000000
ProcFlags
Если != 0, переопределяет ProcFlags, заданные в клиентских данных. Это битовая маска событий, по которым может сработать прок.
| Value | Name | Описание |
|---|---|---|
| 0 | PROC_FLAG_NONE | нет событий |
| 1 | PROC_FLAG_KILLED | Killed by agressor |
| 2 | PROC_FLAG_KILL | Kill target (обычно нужен XP/Honor) |
| 4 | PROC_FLAG_DONE_MELEE_AUTO_ATTACK | Done melee auto attack |
| 8 | PROC_FLAG_TAKEN_MELEE_AUTO_ATTACK | Taken melee auto attack |
| 16 | PROC_FLAG_DONE_SPELL_MELEE_DMG_CLASS | Done spell (dmg class melee) |
| 32 | PROC_FLAG_TAKEN_SPELL_MELEE_DMG_CLASS | Taken spell (dmg class melee) |
| 64 | PROC_FLAG_DONE_RANGED_AUTO_ATTACK | Done ranged auto attack |
| 128 | PROC_FLAG_TAKEN_RANGED_AUTO_ATTACK | Taken ranged auto attack |
| 256 | PROC_FLAG_DONE_SPELL_RANGED_DMG_CLASS | Done spell (dmg class ranged) |
| 512 | PROC_FLAG_TAKEN_SPELL_RANGED_DMG_CLASS | Taken spell (dmg class ranged) |
| 1024 | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_POS | Done positive spell (dmg class none) |
| 2048 | PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_POS | Taken positive spell (dmg class none) |
| 4096 | PROC_FLAG_DONE_SPELL_NONE_DMG_CLASS_NEG | Done negative spell (dmg class none) |
| 8192 | PROC_FLAG_TAKEN_SPELL_NONE_DMG_CLASS_NEG | Taken negative spell (dmg class none) |
| 16384 | PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_POS | Done positive spell (dmg class magic) |
| 32768 | PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_POS | Taken positive spell (dmg class magic) |
| 65536 | PROC_FLAG_DONE_SPELL_MAGIC_DMG_CLASS_NEG | Done negative spell (dmg class magic) |
| 131072 | PROC_FLAG_TAKEN_SPELL_MAGIC_DMG_CLASS_NEG | Taken negative spell (dmg class magic) |
| 262144 | PROC_FLAG_DONE_PERIODIC | Done periodic (damage/heal) |
| 524288 | PROC_FLAG_TAKEN_PERIODIC | Taken periodic (damage/heal) |
| 1048576 | PROC_FLAG_TAKEN_DAMAGE | Taken any damage |
| 2097152 | PROC_FLAG_DONE_TRAP_ACTIVATION | On trap activation |
| 4194304 | PROC_FLAG_DONE_MAINHAND_ATTACK | Done main-hand attacks (spell/auto) |
| 8388608 | PROC_FLAG_DONE_OFFHAND_ATTACK | Done off-hand attacks (spell/auto) |
| 16777216 | PROC_FLAG_DEATH | Died |
Примечание: значения суммируются как битовая маска (например, 32 + 64 = 96).
Пример: 0
ProcFlags2
Дополнительная (расширенная) маска событий проков. Используется аналогично ProcFlags (битовая маска), но для расширенных условий, определённых в ядре.
Пример: 0
SpellTypeMask
Ограничение по типу триггерящего спела (битовая маска; можно суммировать).
| Value | Name | Описание |
|---|---|---|
| 0 | PROC_SPELL_TYPE_NONE | нет ограничения по типу |
| 1 | PROC_SPELL_TYPE_DAMAGE | только дамажащие спеллы |
| 2 | PROC_SPELL_TYPE_HEAL | только лечащие спеллы |
| 4 | PROC_SPELL_TYPE_NO_DMG_HEAL | прочие (не damage и не heal) |
| 7 | PROC_SPELL_TYPE_MASK_ALL | все маски вместе |
Пример: 1
SpellPhaseMask
Фаза, в которую спелл может триггерить прок (битовая маска; обычно выбирают одну, но можно комбинировать).
| Value | Name | Описание |
|---|---|---|
| 0 | PROC_SPELL_PHASE_NONE | нет ограничения |
| 1 | PROC_SPELL_PHASE_CAST | после завершения каста |
| 2 | PROC_SPELL_PHASE_HIT | при попадании по цели |
| 4 | PROC_SPELL_PHASE_FINISH | после применения всех эффектов по всем целям |
Пример: 2
HitMask
Условия по результату хита (битовая маска). Полезно, например, чтобы прок срабатывал только на критах.
| Value | Name | Описание |
|---|---|---|
| 0 | PROC_HIT_NONE | «дефолт»: см. примечание ниже |
| 1 | PROC_HIT_NORMAL | обычные (не критические) попадания |
| 2 | PROC_HIT_CRITICAL | критические попадания |
| 4 | PROC_HIT_MISS | промах |
| 8 | PROC_HIT_FULL_RESIST | полный резист |
| 16 | PROC_HIT_DODGE | уклонение |
| 32 | PROC_HIT_PARRY | парирование |
| 64 | PROC_HIT_BLOCK | блок (частичный/полный) |
| 128 | PROC_HIT_EVADE | evade |
| 256 | PROC_HIT_IMMUNE | иммун |
| 512 | PROC_HIT_DEFLECT | deflect |
| 1024 | PROC_HIT_ABSORB | absorb (частичный/полный) |
| 2048 | PROC_HIT_REFLECT | отражение |
| 4096 | PROC_HIT_INTERRUPT | interrupt (может не использоваться) |
| 8192 | PROC_HIT_FULL_BLOCK | только полный блок |
| 12287 | PROC_HIT_MASK_ALL | все маски вместе |
Примечание: PROC_HIT_NONE обычно трактуется как:
PROC_HIT_NORMAL + PROC_HIT_CRITICALдля проков типа TAKEN,PROC_HIT_NORMAL + PROC_HIT_CRITICAL + PROC_HIT_ABSORBдля DONE.
Пример: 2
AttributesMask
Дополнительные условия/поведение проков (битовая маска).
| Value | Name | Описание |
|---|---|---|
| 1 | PROC_ATTR_REQ_EXP_OR_HONOR | цель должна давать XP или honor |
| 2 | PROC_ATTR_TRIGGERED_CAN_PROC | прок возможен даже от triggered-спелов |
| 4 | PROC_ATTR_REQ_MANA_COST | триггерящий спелл должен иметь mana cost |
| 8 | PROC_ATTR_REQ_SPELLMOD | триггерящий спелл должен быть модифицируем аурой (для снятия зарядов) |
| 128 | PROC_ATTR_REDUCE_PROC_60 | снижать шанс прока при lvl актёра > 60 |
| 256 | PROC_ATTR_CANT_PROC_FROM_ITEM_CAST | запретить прок от спелов, кастуемых предметами |
Пример: 1
DisableEffectsMask
Отключение прока для конкретного индекса эффекта (битовая маска).
| Value | Name | Описание |
|---|---|---|
| 1 | EFFECT_0 | отключить эффект 0 |
| 2 | EFFECT_1 | отключить эффект 1 |
| 4 | EFFECT_2 | отключить эффект 2 |
Пример: 1
ProcsPerMinute
PPM (procs per minute). Если значение != 0, оно имеет приоритет над Chance.
Формула (классическая для оружия): chance = (ProcsPerMinute * delay) / 600.
Пример: 2
Chance
Абсолютный шанс срабатывания (если ProcsPerMinute = 0).
Если и Chance, и ProcsPerMinute равны 0 — используются дефолтные значения из клиентских данных (ProcChance).
Пример: 25
Cooldown
Скрытый внутренний кулдаун прока (ICD), в миллисекундах.
Пример: 10000
Charges
Количество зарядов ауры, доступных для прока. Если 0 — используются дефолтные значения из клиентских данных (ProcCharges).
Пример: 1