Spell proc

Материал из World of WarCraft Developers Wiki
Перейти к навигации Перейти к поиску

Таблица 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). Используется вместе с SpellFamilyMask0SpellFamilyMask3.

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