mirror of
https://github.com/Sarjuuk/aowow.git
synced 2025-11-29 15:58:16 +08:00
Spells/DetailPage
* diplay filtrable spell attributes in overview table * replace some magic numbers with constants
This commit is contained in:
@@ -804,7 +804,7 @@ define('ITEM_MOD_SPELL_POWER', 45);
|
||||
define('ITEM_MOD_HEALTH_REGEN', 46);
|
||||
define('ITEM_MOD_SPELL_PENETRATION', 47);
|
||||
define('ITEM_MOD_BLOCK_VALUE', 48);
|
||||
// ITEM_MOD_MASTERY_RATING, 49
|
||||
// define('ITEM_MOD_MASTERY_RATING', 49);
|
||||
define('ITEM_MOD_ARMOR', 50); // resistances v
|
||||
define('ITEM_MOD_FIRE_RESISTANCE', 51);
|
||||
define('ITEM_MOD_FROST_RESISTANCE', 52);
|
||||
@@ -819,6 +819,296 @@ define('ITEM_MOD_SHADOW_POWER', 60);
|
||||
define('ITEM_MOD_NATURE_POWER', 61);
|
||||
define('ITEM_MOD_ARCANE_POWER', 62);
|
||||
|
||||
// Spell Attributes definitions
|
||||
define('SPELL_ATTR0_CU_ENCHANT_PROC', 0x00000001); //
|
||||
define('SPELL_ATTR0_CU_CONE_BACK', 0x00000002); //
|
||||
define('SPELL_ATTR0_CU_CONE_LINE', 0x00000004); //
|
||||
define('SPELL_ATTR0_CU_SHARE_DAMAGE', 0x00000008); //
|
||||
define('SPELL_ATTR0_CU_NO_INITIAL_THREAT', 0x00000010); //
|
||||
define('SPELL_ATTR0_CU_AURA_CC', 0x00000020); //
|
||||
define('SPELL_ATTR0_CU_DONT_BREAK_STEALTH', 0x00000040); //
|
||||
define('SPELL_ATTR0_CU_CAN_CRIT', 0x00000080); //
|
||||
define('SPELL_ATTR0_CU_DIRECT_DAMAGE', 0x00000100); //
|
||||
define('SPELL_ATTR0_CU_CHARGE', 0x00000200); //
|
||||
define('SPELL_ATTR0_CU_PICKPOCKET', 0x00000400); //
|
||||
define('SPELL_ATTR0_CU_ROLLING_PERIODIC', 0x00000800); //
|
||||
define('SPELL_ATTR0_CU_NEGATIVE_EFF0', 0x00001000); //
|
||||
define('SPELL_ATTR0_CU_NEGATIVE_EFF1', 0x00002000); //
|
||||
define('SPELL_ATTR0_CU_NEGATIVE_EFF2', 0x00004000); //
|
||||
define('SPELL_ATTR0_CU_IGNORE_ARMOR', 0x00008000); //
|
||||
define('SPELL_ATTR0_CU_REQ_TARGET_FACING_CASTER', 0x00010000); //
|
||||
define('SPELL_ATTR0_CU_REQ_CASTER_BEHIND_TARGET', 0x00020000); //
|
||||
define('SPELL_ATTR0_CU_ALLOW_INFLIGHT_TARGET', 0x00040000); //
|
||||
define('SPELL_ATTR0_CU_NEEDS_AMMO_DATA', 0x00080000); //
|
||||
define('SPELL_ATTR0_CU_BINARY_SPELL', 0x00100000); //
|
||||
define('SPELL_ATTR0_CU_SCHOOLMASK_NORMAL_WITH_MAGIC', 0x00200000); //
|
||||
define('SPELL_ATTR0_CU_LIQUID_AURA', 0x00400000); //
|
||||
define('SPELL_ATTR0_CU_NEGATIVE', SPELL_ATTR0_CU_NEGATIVE_EFF0 | SPELL_ATTR0_CU_NEGATIVE_EFF1 | SPELL_ATTR0_CU_NEGATIVE_EFF2); //
|
||||
|
||||
define('SPELL_ATTR0_UNK0', 0x00000001); // Unknown attribute 0@Attr0
|
||||
define('SPELL_ATTR0_REQ_AMMO', 0x00000002); // Treat as ranged attack DESCRIPTION Use ammo, ranged attack range modifiers, ranged haste, etc.
|
||||
define('SPELL_ATTR0_ON_NEXT_SWING', 0x00000004); // On next melee (type 1) DESCRIPTION Both "on next swing" attributes have identical handling in server & client
|
||||
define('SPELL_ATTR0_IS_REPLENISHMENT', 0x00000008); // Replenishment (client only)
|
||||
define('SPELL_ATTR0_ABILITY', 0x00000010); // Treat as ability DESCRIPTION Cannot be reflected, not affected by cast speed modifiers, etc.
|
||||
define('SPELL_ATTR0_TRADESPELL', 0x00000020); // Trade skill recipe DESCRIPTION Displayed in recipe list, not affected by cast speed modifiers
|
||||
define('SPELL_ATTR0_PASSIVE', 0x00000040); // Passive spell DESCRIPTION Spell is automatically cast on self by core
|
||||
define('SPELL_ATTR0_HIDDEN_CLIENTSIDE', 0x00000080); // Hidden in UI (client only) DESCRIPTION Not visible in spellbook or aura bar
|
||||
define('SPELL_ATTR0_HIDE_IN_COMBAT_LOG', 0x00000100); // Hidden in combat log (client only) DESCRIPTION Spell will not appear in combat logs
|
||||
define('SPELL_ATTR0_TARGET_MAINHAND_ITEM', 0x00000200); // Auto-target mainhand item (client only) DESCRIPTION Client will automatically select main-hand item as cast target
|
||||
define('SPELL_ATTR0_ON_NEXT_SWING_2', 0x00000400); // On next melee (type 2) DESCRIPTION Both "on next swing" attributes have identical handling in server & client
|
||||
define('SPELL_ATTR0_UNK11', 0x00000800); // Unknown attribute 11@Attr0
|
||||
define('SPELL_ATTR0_DAYTIME_ONLY', 0x00001000); // Only usable during daytime (unused)
|
||||
define('SPELL_ATTR0_NIGHT_ONLY', 0x00002000); // Only usable during nighttime (unused)
|
||||
define('SPELL_ATTR0_INDOORS_ONLY', 0x00004000); // Only usable indoors
|
||||
define('SPELL_ATTR0_OUTDOORS_ONLY', 0x00008000); // Only usable outdoors
|
||||
define('SPELL_ATTR0_NOT_SHAPESHIFT', 0x00010000); // Not usable while shapeshifted
|
||||
define('SPELL_ATTR0_ONLY_STEALTHED', 0x00020000); // Only usable in stealth
|
||||
define('SPELL_ATTR0_DONT_AFFECT_SHEATH_STATE', 0x00040000); // Don't shealthe weapons (client only)
|
||||
define('SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION', 0x00080000); // Scale with caster level DESCRIPTION For non-player casts, scale impact and power cost with caster's level
|
||||
define('SPELL_ATTR0_STOP_ATTACK_TARGET', 0x00100000); // Stop attacking after cast DESCRIPTION After casting this, the current auto-attack will be interrupted
|
||||
define('SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK', 0x00200000); // Prevent physical avoidance DESCRIPTION Spell cannot be dodged, parried or blocked
|
||||
define('SPELL_ATTR0_CAST_TRACK_TARGET', 0x00400000); // Automatically face target during cast (client only)
|
||||
define('SPELL_ATTR0_CASTABLE_WHILE_DEAD', 0x00800000); // Can be cast while dead DESCRIPTION Spells without this flag cannot be cast by dead units in non-triggered contexts
|
||||
define('SPELL_ATTR0_CASTABLE_WHILE_MOUNTED', 0x01000000); // Can be cast while mounted
|
||||
define('SPELL_ATTR0_DISABLED_WHILE_ACTIVE', 0x02000000); // Cooldown starts on expiry DESCRIPTION Spell is unusable while already active, and cooldown does not begin until the effects have worn off
|
||||
define('SPELL_ATTR0_NEGATIVE_1', 0x04000000); // Is negative spell DESCRIPTION Forces the spell to be treated as a negative spell
|
||||
define('SPELL_ATTR0_CASTABLE_WHILE_SITTING', 0x08000000); // Can be cast while sitting
|
||||
define('SPELL_ATTR0_CANT_USED_IN_COMBAT', 0x10000000); // Cannot be used in combat
|
||||
define('SPELL_ATTR0_UNAFFECTED_BY_INVULNERABILITY', 0x20000000); // Pierce invulnerability DESCRIPTION Allows spell to pierce invulnerability, unless the invulnerability spell also has this attribute
|
||||
define('SPELL_ATTR0_HEARTBEAT_RESIST_CHECK', 0x40000000); // Periodic resistance checks DESCRIPTION Periodically re-rolls against resistance to potentially expire aura early
|
||||
define('SPELL_ATTR0_CANT_CANCEL', 0x80000000); // Aura cannot be cancelled DESCRIPTION Prevents the player from voluntarily canceling a positive aura
|
||||
|
||||
define('SPELL_ATTR1_DISMISS_PET', 0x00000001); // Dismiss Pet on cast DESCRIPTION Without this attribute, summoning spells will fail if caster already has a pet
|
||||
define('SPELL_ATTR1_DRAIN_ALL_POWER', 0x00000002); // Drain all power DESCRIPTION Ignores listed power cost and drains entire pool instead
|
||||
define('SPELL_ATTR1_CHANNELED_1', 0x00000004); // Channeled (type 1) DESCRIPTION Both "channeled" attributes have identical handling in server & client
|
||||
define('SPELL_ATTR1_CANT_BE_REDIRECTED', 0x00000008); // Ignore redirection effects DESCRIPTION Spell will not be attracted by SPELL_MAGNET auras (Grounding Totem)
|
||||
define('SPELL_ATTR1_UNK4', 0x00000010); // Unknown attribute 4@Attr1
|
||||
define('SPELL_ATTR1_NOT_BREAK_STEALTH', 0x00000020); // Does not break stealth
|
||||
define('SPELL_ATTR1_CHANNELED_2', 0x00000040); // Channeled (type 2) DESCRIPTION Both "channeled" attributes have identical handling in server & client
|
||||
define('SPELL_ATTR1_CANT_BE_REFLECTED', 0x00000080); // Ignore reflection effects DESCRIPTION Spell will pierce through Spell Reflection and similar
|
||||
define('SPELL_ATTR1_CANT_TARGET_IN_COMBAT', 0x00000100); // Target cannot be in combat
|
||||
define('SPELL_ATTR1_MELEE_COMBAT_START', 0x00000200); // Starts auto-attack (client only) DESCRIPTION Caster will begin auto-attacking the target on cast
|
||||
define('SPELL_ATTR1_NO_THREAT', 0x00000400); // Does not generate threat DESCRIPTION Also does not cause target to engage
|
||||
define('SPELL_ATTR1_UNK11', 0x00000800); // Unknown attribute 11@Attr1 DESCRIPTION Aura?
|
||||
define('SPELL_ATTR1_IS_PICKPOCKET', 0x00001000); // Pickpocket (client only)
|
||||
define('SPELL_ATTR1_FARSIGHT', 0x00002000); // Farsight aura (client only)
|
||||
define('SPELL_ATTR1_CHANNEL_TRACK_TARGET', 0x00004000); // Track target while channeling DESCRIPTION While channeling, adjust facing to face target
|
||||
define('SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY', 0x00008000); // Immunity cancels preapplied auras DESCRIPTION For immunity spells, cancel all auras that this spell would make you immune to when the spell is applied
|
||||
define('SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE', 0x00010000); // Unaffected by school immunities DESCRIPTION Will not pierce Divine Shield, Ice Block and other full invulnerabilities
|
||||
define('SPELL_ATTR1_UNAUTOCASTABLE_BY_PET', 0x00020000); // Cannot be autocast by pet
|
||||
define('SPELL_ATTR1_UNK18', 0x00040000); // Unknown attribute 18@Attr1 DESCRIPTION Stun, Polymorph, Daze, Hex - CC?
|
||||
define('SPELL_ATTR1_CANT_TARGET_SELF', 0x00080000); // Cannot be self-cast
|
||||
define('SPELL_ATTR1_REQ_COMBO_POINTS1', 0x00100000); // Requires combo points (type 1)
|
||||
define('SPELL_ATTR1_UNK21', 0x00200000); // Unknown attribute 21@Attr1
|
||||
define('SPELL_ATTR1_REQ_COMBO_POINTS2', 0x00400000); // Requires combo points (type 2)
|
||||
define('SPELL_ATTR1_UNK23', 0x00800000); // Unknwon attribute 23@Attr1
|
||||
define('SPELL_ATTR1_IS_FISHING', 0x01000000); // Fishing (client only)
|
||||
define('SPELL_ATTR1_UNK25', 0x02000000); // Unknown attribute 25@Attr1
|
||||
define('SPELL_ATTR1_UNK26', 0x04000000); // Unknown attribute 26@Attr1 DESCRIPTION Related to [target=focus] and [target=mouseover] macros?
|
||||
define('SPELL_ATTR1_UNK27', 0x08000000); // Unknown attribute 27@Attr1 DESCRIPTION Melee spell?
|
||||
define('SPELL_ATTR1_DONT_DISPLAY_IN_AURA_BAR', 0x10000000); // Hide in aura bar (client only)
|
||||
define('SPELL_ATTR1_CHANNEL_DISPLAY_SPELL_NAME', 0x20000000); // Show spell name during channel (client only)
|
||||
define('SPELL_ATTR1_ENABLE_AT_DODGE', 0x40000000); // Enable at dodge
|
||||
define('SPELL_ATTR1_UNK31', 0x80000000); // Unknown attribute 31@Attr1
|
||||
|
||||
define('SPELL_ATTR2_CAN_TARGET_DEAD', 0x00000001); // Can target dead players or corpses
|
||||
define('SPELL_ATTR2_UNK1', 0x00000002); // Unknown attribute 1@Attr2
|
||||
define('SPELL_ATTR2_CAN_TARGET_NOT_IN_LOS', 0x00000004); // Ignore Line of Sight
|
||||
define('SPELL_ATTR2_UNK3', 0x00000008); // Ignore aura scaling
|
||||
define('SPELL_ATTR2_DISPLAY_IN_STANCE_BAR', 0x00000010); // Show in stance bar (client only)
|
||||
define('SPELL_ATTR2_AUTOREPEAT_FLAG', 0x00000020); // Ranged auto-attack spell
|
||||
define('SPELL_ATTR2_CANT_TARGET_TAPPED', 0x00000040); // Cannot target others' tapped units DESCRIPTION Can only target untapped units, or those tapped by caster
|
||||
define('SPELL_ATTR2_UNK7', 0x00000080); // Unknown attribute 7@Attr2
|
||||
define('SPELL_ATTR2_UNK8', 0x00000100); // Unknown attribute 8@Attr2
|
||||
define('SPELL_ATTR2_UNK9', 0x00000200); // Unknown attribute 9@Attr2
|
||||
define('SPELL_ATTR2_UNK10', 0x00000400); // Unknown attribute 10@Attr2 DESCRIPTION Related to taming?
|
||||
define('SPELL_ATTR2_HEALTH_FUNNEL', 0x00000800); // Health Funnel
|
||||
define('SPELL_ATTR2_UNK12', 0x00001000); // Unknown attribute 12@Attr2
|
||||
define('SPELL_ATTR2_PRESERVE_ENCHANT_IN_ARENA', 0x00002000); // Enchant persists when entering arena
|
||||
define('SPELL_ATTR2_UNK14', 0x00004000); // Unknown attribute 14@Attr2
|
||||
define('SPELL_ATTR2_UNK15', 0x00008000); // Unknown attribute 15@Attr2
|
||||
define('SPELL_ATTR2_TAME_BEAST', 0x00010000); // Tame Beast
|
||||
define('SPELL_ATTR2_NOT_RESET_AUTO_ACTIONS', 0x00020000); // Don't reset swing timer DESCRIPTION Does not reset melee/ranged autoattack timer on cast
|
||||
define('SPELL_ATTR2_REQ_DEAD_PET', 0x00040000); // Requires dead pet
|
||||
define('SPELL_ATTR2_NOT_NEED_SHAPESHIFT', 0x00080000); // Also allow outside shapeshift DESCRIPTION Even if Stances are nonzero, allow spell to be cast outside of shapeshift (though not in a different shapeshift)
|
||||
define('SPELL_ATTR2_UNK20', 0x00100000); // Unknown attribute 20@Attr2
|
||||
define('SPELL_ATTR2_DAMAGE_REDUCED_SHIELD', 0x00200000); // Damage reduction ability DESCRIPTION Causes BG flags to be dropped if combined with ATTR1_DISPEL_AURAS_ON_IMMUNITY
|
||||
define('SPELL_ATTR2_UNK22', 0x00400000); // Unknown attribute 22@Attr2
|
||||
define('SPELL_ATTR2_IS_ARCANE_CONCENTRATION', 0x00800000); // Arcane Concentration
|
||||
define('SPELL_ATTR2_UNK24', 0x01000000); // Unknown attribute 24@Attr2
|
||||
define('SPELL_ATTR2_UNK25', 0x02000000); // Unknown attribute 25@Attr2
|
||||
define('SPELL_ATTR2_UNAFFECTED_BY_AURA_SCHOOL_IMMUNE', 0x04000000); // Pierce aura application immunities DESCRIPTION Allow aura to be applied despite target being immune to new aura applications
|
||||
define('SPELL_ATTR2_UNK27', 0x08000000); // Unknown attribute 27@Attr2
|
||||
define('SPELL_ATTR2_UNK28', 0x10000000); // Unknown attribute 28@Attr2
|
||||
define('SPELL_ATTR2_CANT_CRIT', 0x20000000); // Cannot critically strike
|
||||
define('SPELL_ATTR2_TRIGGERED_CAN_TRIGGER_PROC', 0x40000000); // Allow triggered spell to trigger (type 1) DESCRIPTION Without this attribute, any triggered spell will be unable to trigger other auras' procs
|
||||
define('SPELL_ATTR2_FOOD_BUFF', 0x80000000); // Food buff (client only)
|
||||
|
||||
define('SPELL_ATTR3_UNK0', 0x00000001); // Unknown attribute 0@Attr3
|
||||
define('SPELL_ATTR3_IGNORE_PROC_SUBCLASS_MASK', 0x00000002); // 1 Ignores subclass mask check when checking proc
|
||||
define('SPELL_ATTR3_UNK2', 0x00000004); // Unknown attribute 2@Attr3
|
||||
define('SPELL_ATTR3_BLOCKABLE_SPELL', 0x00000008); // Blockable spell
|
||||
define('SPELL_ATTR3_IGNORE_RESURRECTION_TIMER', 0x00000010); // Ignore resurrection timer
|
||||
define('SPELL_ATTR3_UNK5', 0x00000020); // Unknown attribute 5@Attr3
|
||||
define('SPELL_ATTR3_UNK6', 0x00000040); // Unknown attribute 6@Attr3
|
||||
define('SPELL_ATTR3_STACK_FOR_DIFF_CASTERS', 0x00000080); // Stack separately for each caster
|
||||
define('SPELL_ATTR3_ONLY_TARGET_PLAYERS', 0x00000100); // Can only target players
|
||||
define('SPELL_ATTR3_TRIGGERED_CAN_TRIGGER_PROC_2', 0x00000200); // Allow triggered spell to trigger (type 2) DESCRIPTION Without this attribute, any triggered spell will be unable to trigger other auras' procs
|
||||
define('SPELL_ATTR3_MAIN_HAND', 0x00000400); // Require main hand weapon
|
||||
define('SPELL_ATTR3_BATTLEGROUND', 0x00000800); // Can only be cast in battleground
|
||||
define('SPELL_ATTR3_ONLY_TARGET_GHOSTS', 0x00001000); // Can only target ghost players
|
||||
define('SPELL_ATTR3_DONT_DISPLAY_CHANNEL_BAR', 0x00002000); // Do not display channel bar (client only)
|
||||
define('SPELL_ATTR3_IS_HONORLESS_TARGET', 0x00004000); // Honorless Target
|
||||
define('SPELL_ATTR3_UNK15', 0x00008000); // Unknown attribute 15@Attr3 DESCRIPTION Auto Shoot, Shoot, Throw - ranged normal attack attribute?
|
||||
define('SPELL_ATTR3_CANT_TRIGGER_PROC', 0x00010000); // Cannot trigger procs
|
||||
define('SPELL_ATTR3_NO_INITIAL_AGGRO', 0x00020000); // No initial aggro
|
||||
define('SPELL_ATTR3_IGNORE_HIT_RESULT', 0x00040000); // Ignore hit result DESCRIPTION Spell cannot miss, or be dodged/parried/blocked
|
||||
define('SPELL_ATTR3_DISABLE_PROC', 0x00080000); // Cannot trigger spells during aura proc
|
||||
define('SPELL_ATTR3_DEATH_PERSISTENT', 0x00100000); // Persists through death
|
||||
define('SPELL_ATTR3_UNK21', 0x00200000); // Unknown attribute 21@Attr3
|
||||
define('SPELL_ATTR3_REQ_WAND', 0x00400000); // Requires equipped Wand
|
||||
define('SPELL_ATTR3_UNK23', 0x00800000); // Unknown attribute 23@Attr3
|
||||
define('SPELL_ATTR3_REQ_OFFHAND', 0x01000000); // Requires offhand weapon
|
||||
define('SPELL_ATTR3_TREAT_AS_PERIODIC', 0x02000000); // Treat as periodic effect
|
||||
define('SPELL_ATTR3_CAN_PROC_WITH_TRIGGERED', 0x04000000); // Can trigger from triggered spells
|
||||
define('SPELL_ATTR3_DRAIN_SOUL', 0x08000000); // Drain Soul
|
||||
define('SPELL_ATTR3_UNK28', 0x10000000); // Unknown attribute 28@Attr3
|
||||
define('SPELL_ATTR3_NO_DONE_BONUS', 0x20000000); // Damage dealt is unaffected by modifiers
|
||||
define('SPELL_ATTR3_DONT_DISPLAY_RANGE', 0x40000000); // Do not show range in tooltip (client only)
|
||||
define('SPELL_ATTR3_UNK31', 0x80000000); // Unknown attribute 31@Attr3
|
||||
|
||||
define('SPELL_ATTR4_IGNORE_RESISTANCES', 0x00000001); // Cannot be resisted
|
||||
define('SPELL_ATTR4_PROC_ONLY_ON_CASTER', 0x00000002); // Only proc on self-cast
|
||||
define('SPELL_ATTR4_FADES_WHILE_LOGGED_OUT', 0x00000004); // Buff expires while offline DESCRIPTION Debuffs (except Resurrection Sickness) will automatically do this
|
||||
define('SPELL_ATTR4_UNK3', 0x00000008); // Unknown attribute 3@Attr4
|
||||
define('SPELL_ATTR4_UNK4', 0x00000010); // Treat as delayed spell
|
||||
define('SPELL_ATTR4_UNK5', 0x00000020); // Unknown attribute 5@Attr4
|
||||
define('SPELL_ATTR4_NOT_STEALABLE', 0x00000040); // Aura cannot be stolen
|
||||
define('SPELL_ATTR4_CAN_CAST_WHILE_CASTING', 0x00000080); // Can be cast while casting DESCRIPTION Ignores already in-progress cast and still casts
|
||||
define('SPELL_ATTR4_FIXED_DAMAGE', 0x00000100); // Deals fixed damage
|
||||
define('SPELL_ATTR4_TRIGGER_ACTIVATE', 0x00000200); // Spell is initially disabled (client only)
|
||||
define('SPELL_ATTR4_SPELL_VS_EXTEND_COST', 0x00000400); // Attack speed modifies cost DESCRIPTION Adds 10 to power cost for each 1s of weapon speed
|
||||
define('SPELL_ATTR4_UNK11', 0x00000800); // Unknown attribute 11@Attr4
|
||||
define('SPELL_ATTR4_UNK12', 0x00001000); // Unknown attribute 12@Attr4
|
||||
define('SPELL_ATTR4_UNK13', 0x00002000); // Unknown attribute 13@Attr4
|
||||
define('SPELL_ATTR4_DAMAGE_DOESNT_BREAK_AURAS', 0x00004000); // Damage does not break auras
|
||||
define('SPELL_ATTR4_UNK15', 0x00008000); // Unknown attribute 15@Attr4
|
||||
define('SPELL_ATTR4_NOT_USABLE_IN_ARENA', 0x00010000); // Not usable in arena DESCRIPTION Makes spell unusable despite CD <= 10min
|
||||
define('SPELL_ATTR4_USABLE_IN_ARENA', 0x00020000); // Usable in arena DESCRIPTION Makes spell usable despite CD > 10min
|
||||
define('SPELL_ATTR4_AREA_TARGET_CHAIN', 0x00040000); // Chain area targets DESCRIPTION [NYI] Hits area targets over time instead of all at once
|
||||
define('SPELL_ATTR4_UNK19', 0x00080000); // Unknown attribute 19@Attr4
|
||||
define('SPELL_ATTR4_NOT_CHECK_SELFCAST_POWER', 0x00100000); // Allow self-cast to override stronger aura (client only)
|
||||
define('SPELL_ATTR4_UNK21', 0x00200000); // Keep when entering arena
|
||||
define('SPELL_ATTR4_UNK22', 0x00400000); // Unknown attribute 22@Attr4
|
||||
define('SPELL_ATTR4_CANT_TRIGGER_ITEM_SPELLS', 0x00800000); // Cannot trigger item spells
|
||||
define('SPELL_ATTR4_UNK24', 0x01000000); // Unknown attribute 24@Attr4 DESCRIPTION Shoot-type spell?
|
||||
define('SPELL_ATTR4_IS_PET_SCALING', 0x02000000); // Pet Scaling aura
|
||||
define('SPELL_ATTR4_CAST_ONLY_IN_OUTLAND', 0x04000000); // Only in Outland/Northrend
|
||||
define('SPELL_ATTR4_INHERIT_CRIT_FROM_AURA', 0x08000000); // Inherit critical chance from triggering aura
|
||||
define('SPELL_ATTR4_UNK28', 0x10000000); // Unknown attribute 28@Attr4
|
||||
define('SPELL_ATTR4_UNK29', 0x20000000); // Unknown attribute 29@Attr4
|
||||
define('SPELL_ATTR4_UNK30', 0x40000000); // Unknown attribute 30@Attr4
|
||||
define('SPELL_ATTR4_UNK31', 0x80000000); // Unknown attribute 31@Attr4
|
||||
|
||||
define('SPELL_ATTR5_CAN_CHANNEL_WHEN_MOVING', 0x00000001); // Can be channeled while moving
|
||||
define('SPELL_ATTR5_NO_REAGENT_WHILE_PREP', 0x00000002); // No reagents during arena preparation
|
||||
define('SPELL_ATTR5_REMOVE_ON_ARENA_ENTER', 0x00000004); // Remove when entering arena DESCRIPTION Force this aura to be removed on entering arena, regardless of other properties
|
||||
define('SPELL_ATTR5_USABLE_WHILE_STUNNED', 0x00000008); // Usable while stunned
|
||||
define('SPELL_ATTR5_UNK4', 0x00000010); // Unknown attribute 4@Attr5
|
||||
define('SPELL_ATTR5_SINGLE_TARGET_SPELL', 0x00000020); // Single-target aura DESCRIPTION Remove previous application to another unit if applied
|
||||
define('SPELL_ATTR5_UNK6', 0x00000040); // Unknown attribute 6@Attr5
|
||||
define('SPELL_ATTR5_UNK7', 0x00000080); // Unknown attribute 7@Attr5
|
||||
define('SPELL_ATTR5_UNK8', 0x00000100); // Unknown attribute 8@Attr5
|
||||
define('SPELL_ATTR5_START_PERIODIC_AT_APPLY', 0x00000200); // Immediately do periodic tick on apply
|
||||
define('SPELL_ATTR5_HIDE_DURATION', 0x00000400); // Do not send aura duration to client
|
||||
define('SPELL_ATTR5_ALLOW_TARGET_OF_TARGET_AS_TARGET', 0x00000800); // Auto-target target of target (client only)
|
||||
define('SPELL_ATTR5_UNK12', 0x00001000); // Unknown attribute 12@Attr5 DESCRIPTION Cleave related?
|
||||
define('SPELL_ATTR5_HASTE_AFFECT_DURATION', 0x00002000); // Duration scales with Haste Rating
|
||||
define('SPELL_ATTR5_UNK14', 0x00004000); // Unknown attribute 14@Attr5
|
||||
define('SPELL_ATTR5_UNK15', 0x00008000); // Unknown attribute 15@Attr5 DESCRIPTION Related to multi-target spells?
|
||||
define('SPELL_ATTR5_UNK16', 0x00010000); // Unknown attribute 16@Attr5
|
||||
define('SPELL_ATTR5_USABLE_WHILE_FEARED', 0x00020000); // Usable while feared
|
||||
define('SPELL_ATTR5_USABLE_WHILE_CONFUSED', 0x00040000); // Usable while confused
|
||||
define('SPELL_ATTR5_DONT_TURN_DURING_CAST', 0x00080000); // Do not auto-turn while casting
|
||||
define('SPELL_ATTR5_UNK20', 0x00100000); // Unknown attribute 20@Attr5
|
||||
define('SPELL_ATTR5_UNK21', 0x00200000); // Unknown attribute 21@Attr5
|
||||
define('SPELL_ATTR5_UNK22', 0x00400000); // Unknown attribute 22@Attr5
|
||||
define('SPELL_ATTR5_UNK23', 0x00800000); // Unknown attribute 23@Attr5
|
||||
define('SPELL_ATTR5_UNK24', 0x01000000); // Unknown attribute 24@Attr5
|
||||
define('SPELL_ATTR5_UNK25', 0x02000000); // Unknown attribute 25@Attr5
|
||||
define('SPELL_ATTR5_SKIP_CHECKCAST_LOS_CHECK', 0x04000000); // Ignore line of sight checks
|
||||
define('SPELL_ATTR5_DONT_SHOW_AURA_IF_SELF_CAST', 0x08000000); // Don't show aura if self-cast (client only)
|
||||
define('SPELL_ATTR5_DONT_SHOW_AURA_IF_NOT_SELF_CAST', 0x10000000); // Don't show aura unless self-cast (client only)
|
||||
define('SPELL_ATTR5_UNK29', 0x20000000); // Unknown attribute 29@Attr5
|
||||
define('SPELL_ATTR5_UNK30', 0x40000000); // Unknown attribute 30@Attr5
|
||||
define('SPELL_ATTR5_UNK31', 0x80000000); // Unknown attribute 31@Attr5 DESCRIPTION Forces nearby enemies to attack caster?
|
||||
|
||||
define('SPELL_ATTR6_DONT_DISPLAY_COOLDOWN', 0x00000001); // Don't display cooldown (client only)
|
||||
define('SPELL_ATTR6_ONLY_IN_ARENA', 0x00000002); // Only usable in arena
|
||||
define('SPELL_ATTR6_IGNORE_CASTER_AURAS', 0x00000004); // Ignore all preventing caster auras
|
||||
define('SPELL_ATTR6_ASSIST_IGNORE_IMMUNE_FLAG', 0x00000008); // Ignore immunity flags when assisting
|
||||
define('SPELL_ATTR6_UNK4', 0x00000010); // Unknown attribute 4@Attr6
|
||||
define('SPELL_ATTR6_DONT_CONSUME_PROC_CHARGES', 0x00000020); // Don't consume proc charges
|
||||
define('SPELL_ATTR6_USE_SPELL_CAST_EVENT', 0x00000040); // Generate spell_cast event instead of aura_start (client only)
|
||||
define('SPELL_ATTR6_UNK7', 0x00000080); // Unknown attribute 7@Attr6
|
||||
define('SPELL_ATTR6_CANT_TARGET_CROWD_CONTROLLED', 0x00000100); // Do not implicitly target in CC DESCRIPTION Implicit targeting (chaining and area targeting) will not impact crowd controlled targets
|
||||
define('SPELL_ATTR6_UNK9', 0x00000200); // Unknown attribute 9@Attr6
|
||||
define('SPELL_ATTR6_CAN_TARGET_POSSESSED_FRIENDS', 0x00000400); // Can target possessed friends DESCRIPTION [NYI]
|
||||
define('SPELL_ATTR6_NOT_IN_RAID_INSTANCE', 0x00000800); // Unusable in raid instances
|
||||
define('SPELL_ATTR6_CASTABLE_WHILE_ON_VEHICLE', 0x00001000); // Castable while caster is on vehicle
|
||||
define('SPELL_ATTR6_CAN_TARGET_INVISIBLE', 0x00002000); // Can target invisible units
|
||||
define('SPELL_ATTR6_UNK14', 0x00004000); // Unknown attribute 14@Attr6
|
||||
define('SPELL_ATTR6_UNK15', 0x00008000); // Unknown attribute 15@Attr6
|
||||
define('SPELL_ATTR6_UNK16', 0x00010000); // Unknown attribute 16@Attr6
|
||||
define('SPELL_ATTR6_UNK17', 0x00020000); // Unknown attribute 17@Attr6 DESCRIPTION Mount related?
|
||||
define('SPELL_ATTR6_CAST_BY_CHARMER', 0x00040000); // Spell is cast by charmer DESCRIPTION Client will prevent casting if not possessed, charmer will be caster for all intents and purposes
|
||||
define('SPELL_ATTR6_UNK19', 0x00080000); // Unknown attribute 19@Attr6
|
||||
define('SPELL_ATTR6_ONLY_VISIBLE_TO_CASTER', 0x00100000); // Only visible to caster (client only)
|
||||
define('SPELL_ATTR6_CLIENT_UI_TARGET_EFFECTS', 0x00200000); // Client UI target effects (client only)
|
||||
define('SPELL_ATTR6_UNK22', 0x00400000); // Unknown attribute 22@Attr6
|
||||
define('SPELL_ATTR6_UNK23', 0x00800000); // Unknown attribute 23@Attr6
|
||||
define('SPELL_ATTR6_CAN_TARGET_UNTARGETABLE', 0x01000000); // Can target untargetable units
|
||||
define('SPELL_ATTR6_NOT_RESET_SWING_IF_INSTANT', 0x02000000); // Do not reset swing timer if cast time is instant
|
||||
define('SPELL_ATTR6_UNK26', 0x04000000); // Unknown attribute 26@Attr6 DESCRIPTION Player castable buff?
|
||||
define('SPELL_ATTR6_LIMIT_PCT_HEALING_MODS', 0x08000000); // Limit applicable %healing modifiers DESCRIPTION This prevents certain healing modifiers from applying - see implementation if you really care about details
|
||||
define('SPELL_ATTR6_UNK28', 0x10000000); // Unknown attribute 28@Attr6 DESCRIPTION Death grip?
|
||||
define('SPELL_ATTR6_LIMIT_PCT_DAMAGE_MODS', 0x20000000); // Limit applicable %damage modifiers DESCRIPTION This prevents certain damage modifiers from applying - see implementation if you really care about details
|
||||
define('SPELL_ATTR6_UNK30', 0x40000000); // Unknown attribute 30@Attr6
|
||||
define('SPELL_ATTR6_IGNORE_CATEGORY_COOLDOWN_MODS', 0x80000000); // Ignore cooldown modifiers for category cooldown
|
||||
|
||||
define('SPELL_ATTR7_UNK0', 0x00000001); // Unknown attribute 0@Attr7
|
||||
define('SPELL_ATTR7_IGNORE_DURATION_MODS', 0x00000002); // Ignore duration modifiers
|
||||
define('SPELL_ATTR7_REACTIVATE_AT_RESURRECT', 0x00000004); // Reactivate at resurrect (client only)
|
||||
define('SPELL_ATTR7_IS_CHEAT_SPELL', 0x00000008); // Is cheat spell DESCRIPTION Cannot cast if caster doesn't have UnitFlag2 & UNIT_FLAG2_ALLOW_CHEAT_SPELLS
|
||||
define('SPELL_ATTR7_UNK4', 0x00000010); // Unknown attribute 4@Attr7 DESCRIPTION Soulstone related?
|
||||
define('SPELL_ATTR7_SUMMON_PLAYER_TOTEM', 0x00000020); // Summons player-owned totem
|
||||
define('SPELL_ATTR7_NO_PUSHBACK_ON_DAMAGE', 0x00000040); // Damage dealt by this does not cause spell pushback
|
||||
define('SPELL_ATTR7_UNK7', 0x00000080); // Unknown attribute 7@Attr7
|
||||
define('SPELL_ATTR7_HORDE_ONLY', 0x00000100); // Horde only
|
||||
define('SPELL_ATTR7_ALLIANCE_ONLY', 0x00000200); // Alliance only
|
||||
define('SPELL_ATTR7_DISPEL_CHARGES', 0x00000400); // Dispel/Spellsteal remove individual charges
|
||||
define('SPELL_ATTR7_INTERRUPT_ONLY_NONPLAYER', 0x00000800); // Only interrupt non-player casting
|
||||
define('SPELL_ATTR7_UNK12', 0x00001000); // Unknown attribute 12@Attr7
|
||||
define('SPELL_ATTR7_UNK13', 0x00002000); // Unknown attribute 13@Attr7
|
||||
define('SPELL_ATTR7_UNK14', 0x00004000); // Unknown attribute 14@Attr7
|
||||
define('SPELL_ATTR7_UNK15', 0x00008000); // Unknown attribute 15@Attr7 DESCRIPTION Exorcism - guaranteed crit vs families?
|
||||
define('SPELL_ATTR7_CAN_RESTORE_SECONDARY_POWER', 0x00010000); // Can restore secondary power DESCRIPTION Only spells with this attribute can replenish a non-active power type
|
||||
define('SPELL_ATTR7_UNK17', 0x00020000); // Unknown attribute 17@Attr7
|
||||
define('SPELL_ATTR7_HAS_CHARGE_EFFECT', 0x00040000); // Has charge effect
|
||||
define('SPELL_ATTR7_ZONE_TELEPORT', 0x00080000); // Is zone teleport
|
||||
define('SPELL_ATTR7_UNK20', 0x00100000); // Unknown attribute 20@Attr7 DESCRIPTION Invulnerability related?
|
||||
define('SPELL_ATTR7_UNK21', 0x00200000); // Unknown attribute 21@Attr7
|
||||
define('SPELL_ATTR7_IGNORE_COLD_WEATHER_FLYING', 0x00400000); // Ignore cold weather flying restriction DESCRIPTION Set for loaner mounts, allows them to be used despite lacking required flight skill
|
||||
define('SPELL_ATTR7_UNK23', 0x00800000); // Unknown attribute 23@Attr7
|
||||
define('SPELL_ATTR7_UNK24', 0x01000000); // Unknown attribute 24@Attr7
|
||||
define('SPELL_ATTR7_UNK25', 0x02000000); // Unknown attribute 25@Attr7
|
||||
define('SPELL_ATTR7_UNK26', 0x04000000); // Unknown attribute 26@Attr7
|
||||
define('SPELL_ATTR7_UNK27', 0x08000000); // Unknown attribute 27@Attr7
|
||||
define('SPELL_ATTR7_CONSOLIDATED_RAID_BUFF', 0x10000000); // Consolidate in raid buff frame (client only)
|
||||
define('SPELL_ATTR7_UNK29', 0x20000000); // Unknown attribute 29@Attr7
|
||||
define('SPELL_ATTR7_UNK30', 0x40000000); // Unknown attribute 30@Attr7
|
||||
define('SPELL_ATTR7_CLIENT_INDICATOR', 0x80000000); // Client indicator (client only)
|
||||
|
||||
// AchievementCriteriaCondition
|
||||
define('ACHIEVEMENT_CRITERIA_CONDITION_NO_DEATH', 1); // reset progress on death
|
||||
define('ACHIEVEMENT_CRITERIA_CONDITION_BG_MAP', 3); // requires you to be on specific map, reset at change
|
||||
|
||||
@@ -796,7 +796,7 @@ class SpellList extends BaseType
|
||||
else if ($noInstant && !in_array($this->curTpl['typeCat'], [11, 7, -3, -6, -8, 0]) && !($this->curTpl['cuFlags'] & SPELL_CU_TALENTSPELL))
|
||||
return '';
|
||||
// SPELL_ATTR0_ABILITY instant ability.. yeah, wording thing only (todo (low): rule is imperfect)
|
||||
else if ($this->curTpl['damageClass'] != 1 || $this->curTpl['attributes0'] & 0x10)
|
||||
else if ($this->curTpl['damageClass'] != 1 || $this->curTpl['attributes0'] & SPELL_ATTR0_ABILITY)
|
||||
return Lang::spell('instantPhys');
|
||||
else // instant cast
|
||||
return Lang::spell('instantMagic');
|
||||
@@ -831,7 +831,7 @@ class SpellList extends BaseType
|
||||
else if ($level < $baseLvl)
|
||||
$level = $baseLvl;
|
||||
|
||||
if (!$ref->getField('atributes0') & 0x40) // SPELL_ATTR0_PASSIVE
|
||||
if (!$ref->getField('atributes0') & SPELL_ATTR0_PASSIVE)
|
||||
$level -= $ref->getField('spellLevel');
|
||||
|
||||
$base += (int)($level * $rppl);
|
||||
@@ -881,7 +881,7 @@ class SpellList extends BaseType
|
||||
|
||||
public function isChanneledSpell()
|
||||
{
|
||||
return $this->curTpl['attributes1'] & 0x44;
|
||||
return $this->curTpl['attributes1'] & (SPELL_ATTR1_CHANNELED_1 | SPELL_ATTR1_CHANNELED_2);
|
||||
}
|
||||
|
||||
public function isHealingSpell()
|
||||
@@ -1356,7 +1356,7 @@ class SpellList extends BaseType
|
||||
|
||||
$formOutStr = '';
|
||||
|
||||
while ($formCurPos <= strlen($formula))
|
||||
while ($formCurPos < strlen($formula))
|
||||
{
|
||||
$char = $formula[$formCurPos];
|
||||
|
||||
@@ -1650,7 +1650,7 @@ class SpellList extends BaseType
|
||||
|
||||
$formOutStr = '';
|
||||
|
||||
while ($formCurPos <= strlen($data)) // only hard-exit condition, we'll hit those breaks eventually^^
|
||||
while ($formCurPos < strlen($data)) // only hard-exit condition, we'll hit those breaks eventually^^
|
||||
{
|
||||
$char = $data[$formCurPos];
|
||||
|
||||
@@ -1754,7 +1754,7 @@ class SpellList extends BaseType
|
||||
$condParts = [];
|
||||
$isLastElse = false;
|
||||
|
||||
while ($condCurPos <= strlen($data)) // only hard-exit condition, we'll hit those breaks eventually^^
|
||||
while ($condCurPos < strlen($data)) // only hard-exit condition, we'll hit those breaks eventually^^
|
||||
{
|
||||
$char = $data[$condCurPos];
|
||||
|
||||
@@ -1916,9 +1916,9 @@ class SpellList extends BaseType
|
||||
|
||||
$reagents = array_reverse($reagents);
|
||||
|
||||
// get stances (check: SPELL_ATTR2_NOT_NEED_SHAPESHIFT)
|
||||
// get stances
|
||||
$stances = '';
|
||||
if ($this->curTpl['stanceMask'] && !($this->curTpl['attributes2'] & 0x80000))
|
||||
if ($this->curTpl['stanceMask'] && !($this->curTpl['attributes2'] & SPELL_ATTR2_NOT_NEED_SHAPESHIFT))
|
||||
$stances = Lang::game('requires2').' '.Lang::getStances($this->curTpl['stanceMask']);
|
||||
|
||||
// get item requirement (skip for professions)
|
||||
@@ -2296,7 +2296,7 @@ class SpellList extends BaseType
|
||||
{
|
||||
// mainly for DoTs which are 3500 here otherwise
|
||||
$originalCastTime = $this->curTpl['castTime'] * 1000;
|
||||
if ($this->curTpl['attributes0'] & 0x2) // requires Ammo
|
||||
if ($this->curTpl['attributes0'] & SPELL_ATTR0_REQ_AMMO)
|
||||
$originalCastTime += 500;
|
||||
|
||||
if ($originalCastTime > 7000)
|
||||
@@ -2399,105 +2399,105 @@ class SpellListFilter extends Filter
|
||||
|
||||
// cr => [type, field, misc, extraCol]
|
||||
protected $genericFilter = array( // misc (bool): _NUMERIC => useFloat; _STRING => localized; _FLAG => match Value; _BOOLEAN => stringSet
|
||||
1 => [FILTER_CR_CALLBACK, 'cbCost', ], // costAbs [op] [int]
|
||||
2 => [FILTER_CR_NUMERIC, 'powerCostPercent', NUM_CAST_INT ], // prcntbasemanarequired
|
||||
3 => [FILTER_CR_BOOLEAN, 'spellFocusObject' ], // requiresnearbyobject
|
||||
4 => [FILTER_CR_NUMERIC, 'trainingcost', NUM_CAST_INT ], // trainingcost
|
||||
5 => [FILTER_CR_BOOLEAN, 'reqSpellId' ], // requiresprofspec
|
||||
8 => [FILTER_CR_FLAG, 'cuFlags', CUSTOM_HAS_SCREENSHOT ], // hasscreenshots
|
||||
9 => [FILTER_CR_CALLBACK, 'cbSource', ], // source [enum]
|
||||
10 => [FILTER_CR_FLAG, 'cuFlags', SPELL_CU_FIRST_RANK ], // firstrank
|
||||
11 => [FILTER_CR_FLAG, 'cuFlags', CUSTOM_HAS_COMMENT ], // hascomments
|
||||
12 => [FILTER_CR_FLAG, 'cuFlags', SPELL_CU_LAST_RANK ], // lastrank
|
||||
13 => [FILTER_CR_NUMERIC, 'rankNo', NUM_CAST_INT ], // rankno
|
||||
14 => [FILTER_CR_NUMERIC, 'id', NUM_CAST_INT, true ], // id
|
||||
15 => [FILTER_CR_STRING, 'ic.name', ], // icon
|
||||
17 => [FILTER_CR_FLAG, 'cuFlags', CUSTOM_HAS_VIDEO ], // hasvideos
|
||||
19 => [FILTER_CR_FLAG, 'attributes0', 0x80000 ], // scaling
|
||||
20 => [FILTER_CR_CALLBACK, 'cbReagents', ], // has Reagents [yn]
|
||||
// 22 => [FILTER_CR_NYI_PH, null, null, null ], // proficiencytype [proficiencytype] pointless
|
||||
25 => [FILTER_CR_BOOLEAN, 'skillLevelYellow' ], // rewardsskillups
|
||||
27 => [FILTER_CR_FLAG, 'attributes1', 0x0044, true ], // channeled [yn]
|
||||
28 => [FILTER_CR_NUMERIC, 'castTime', NUM_CAST_FLOAT ], // casttime [num]
|
||||
29 => [FILTER_CR_CALLBACK, 'cbAuraNames', ], // appliesaura [effectauranames]
|
||||
// 31 => [FILTER_CR_NYI_PH, null, null, null ], // usablewhenshapeshifted [yn] pointless
|
||||
33 => [FILTER_CR_CALLBACK, 'cbInverseFlag', 'attributes0', 0x10000000], // combatcastable [yn]
|
||||
34 => [FILTER_CR_CALLBACK, 'cbInverseFlag', 'attributes2', 0x20000000], // chancetocrit [yn]
|
||||
35 => [FILTER_CR_CALLBACK, 'cbInverseFlag', 'attributes3', 0x00040000], // chancetomiss [yn]
|
||||
36 => [FILTER_CR_FLAG, 'attributes3', 0x00100000 ], // persiststhroughdeath [yn]
|
||||
38 => [FILTER_CR_FLAG, 'attributes0', 0x00020000 ], // requiresstealth [yn]
|
||||
39 => [FILTER_CR_CALLBACK, 'cbSpellstealable', 'attributes4', 0x00000040], // spellstealable [yn]
|
||||
40 => [FILTER_CR_ENUM, 'damageClass' ], // damagetype [damagetype]
|
||||
41 => [FILTER_CR_FLAG, 'stanceMask', (1 << (22 - 1)) ], // requiresmetamorphosis [yn]
|
||||
42 => [FILTER_CR_FLAG, 'attributes5', 0x00000008 ], // usablewhenstunned [yn]
|
||||
44 => [FILTER_CR_CALLBACK, 'cbUsableInArena' ], // usableinarenas [yn]
|
||||
45 => [FILTER_CR_ENUM, 'powerType' ], // resourcetype [resourcetype]
|
||||
// 46 => [FILTER_CR_NYI_PH, null, null, null ], // disregardimmunity [yn]
|
||||
47 => [FILTER_CR_FLAG, 'attributes1', 0x00010000 ], // disregardschoolimmunity [yn]
|
||||
48 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 0x0004000C, false ], // reqrangedweapon [yn]
|
||||
49 => [FILTER_CR_FLAG, 'attributes0', 0x00000004 ], // onnextswingplayers [yn]
|
||||
50 => [FILTER_CR_FLAG, 'attributes0', 0x00000040 ], // passivespell [yn]
|
||||
51 => [FILTER_CR_FLAG, 'attributes1', 0x10000000 ], // hiddenaura [yn]
|
||||
52 => [FILTER_CR_FLAG, 'attributes0', 0x00000400 ], // onnextswingnpcs [yn]
|
||||
53 => [FILTER_CR_FLAG, 'attributes0', 0x00001000 ], // daytimeonly [yn]
|
||||
54 => [FILTER_CR_FLAG, 'attributes0', 0x00002000 ], // nighttimeonly [yn]
|
||||
55 => [FILTER_CR_FLAG, 'attributes0', 0x00004000 ], // indoorsonly [yn]
|
||||
56 => [FILTER_CR_FLAG, 'attributes0', 0x00008000 ], // outdoorsonly [yn]
|
||||
57 => [FILTER_CR_FLAG, 'attributes0', 0x80000000 ], // uncancellableaura [yn]
|
||||
58 => [FILTER_CR_FLAG, 'attributes0', 0x00080000 ], // damagedependsonlevel [yn]
|
||||
59 => [FILTER_CR_FLAG, 'attributes0', 0x00100000 ], // stopsautoattack [yn]
|
||||
60 => [FILTER_CR_FLAG, 'attributes0', 0x00200000 ], // cannotavoid [yn]
|
||||
61 => [FILTER_CR_FLAG, 'attributes0', 0x00800000 ], // usabledead [yn]
|
||||
62 => [FILTER_CR_FLAG, 'attributes0', 0x01000000 ], // usablemounted [yn]
|
||||
63 => [FILTER_CR_FLAG, 'attributes0', 0x02000000 ], // delayedrecoverystarttime [yn]
|
||||
64 => [FILTER_CR_FLAG, 'attributes0', 0x08000000 ], // usablesitting [yn]
|
||||
65 => [FILTER_CR_FLAG, 'attributes1', 0x00000002 ], // usesallpower [yn]
|
||||
66 => [FILTER_CR_FLAG, 'attributes1', 0x00000044, true ], // channeled [yn] redundancy much...?
|
||||
67 => [FILTER_CR_FLAG, 'attributes1', 0x00000080 ], // cannotreflect [yn]
|
||||
68 => [FILTER_CR_FLAG, 'attributes1', 0x00000020 ], // usablestealthed [yn]
|
||||
69 => [FILTER_CR_FLAG, 'attributes0', 0x04000000 ], // harmful [yn]
|
||||
70 => [FILTER_CR_FLAG, 'attributes1', 0x00000100 ], // targetnotincombat [yn]
|
||||
71 => [FILTER_CR_FLAG, 'attributes1', 0x00000400 ], // nothreat [yn]
|
||||
72 => [FILTER_CR_FLAG, 'attributes1', 0x00001000 ], // pickpocket [yn]
|
||||
73 => [FILTER_CR_FLAG, 'attributes1', 0x00008000 ], // dispelauraonimmunity [yn]
|
||||
74 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 0x00100000, false ], // reqfishingpole [yn]
|
||||
75 => [FILTER_CR_FLAG, 'attributes2', 0x00000040 ], // requntappedtarget [yn]
|
||||
// 76 => [FILTER_CR_NYI_PH, null, null, null ], // targetownitem [yn] // the flag for this has to be somewhere....
|
||||
77 => [FILTER_CR_FLAG, 'attributes2', 0x00080000 ], // doesntreqshapeshift [yn]
|
||||
78 => [FILTER_CR_FLAG, 'attributes2', 0x80000000 ], // foodbuff [yn]
|
||||
79 => [FILTER_CR_FLAG, 'attributes3', 0x00000100 ], // targetonlyplayer [yn]
|
||||
80 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 1 << INVTYPE_WEAPONMAINHAND, true ], // reqmainhand [yn]
|
||||
81 => [FILTER_CR_FLAG, 'attributes3', 0x00020000 ], // doesntengagetarget [yn]
|
||||
82 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 0x00080000, false ], // reqwand [yn]
|
||||
83 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 1 << INVTYPE_WEAPONOFFHAND, true ], // reqoffhand [yn]
|
||||
84 => [FILTER_CR_FLAG, 'attributes0', 0x00000100 ], // nolog [yn]
|
||||
85 => [FILTER_CR_FLAG, 'attributes4', 0x00000004 ], // auratickswhileloggedout [yn]
|
||||
87 => [FILTER_CR_FLAG, 'attributes5', 0x00000200 ], // startstickingatapplication [yn]
|
||||
88 => [FILTER_CR_FLAG, 'attributes5', 0x00040000 ], // usableconfused [yn]
|
||||
89 => [FILTER_CR_FLAG, 'attributes5', 0x00020000 ], // usablefeared [yn]
|
||||
90 => [FILTER_CR_FLAG, 'attributes6', 0x00000002 ], // onlyarena [yn]
|
||||
91 => [FILTER_CR_FLAG, 'attributes6', 0x00000800 ], // notinraid [yn]
|
||||
92 => [FILTER_CR_FLAG, 'attributes7', 0x00000004 ], // paladinaura [yn]
|
||||
93 => [FILTER_CR_FLAG, 'attributes7', 0x00000020 ], // totemspell [yn]
|
||||
95 => [FILTER_CR_CALLBACK, 'cbBandageSPell' ], // bandagespell [yn] ...don't ask
|
||||
96 => [FILTER_CR_STAFFFLAG, 'attributes0' ], // flags1 [flags]
|
||||
97 => [FILTER_CR_STAFFFLAG, 'attributes1' ], // flags2 [flags]
|
||||
98 => [FILTER_CR_STAFFFLAG, 'attributes2' ], // flags3 [flags]
|
||||
99 => [FILTER_CR_STAFFFLAG, 'attributes3' ], // flags4 [flags]
|
||||
100 => [FILTER_CR_STAFFFLAG, 'attributes4' ], // flags5 [flags]
|
||||
101 => [FILTER_CR_STAFFFLAG, 'attributes5' ], // flags6 [flags]
|
||||
102 => [FILTER_CR_STAFFFLAG, 'attributes6' ], // flags7 [flags]
|
||||
103 => [FILTER_CR_STAFFFLAG, 'attributes7' ], // flags8 [flags]
|
||||
104 => [FILTER_CR_STAFFFLAG, 'targets' ], // flags9 [flags]
|
||||
105 => [FILTER_CR_STAFFFLAG, 'stanceMaskNot' ], // flags10 [flags]
|
||||
106 => [FILTER_CR_STAFFFLAG, 'spellFamilyFlags1' ], // flags11 [flags]
|
||||
107 => [FILTER_CR_STAFFFLAG, 'spellFamilyFlags2' ], // flags12 [flags]
|
||||
108 => [FILTER_CR_STAFFFLAG, 'spellFamilyFlags3' ], // flags13 [flags]
|
||||
109 => [FILTER_CR_CALLBACK, 'cbEffectNames', ], // effecttype [effecttype]
|
||||
// 110 => [FILTER_CR_NYI_PH, null, null, null ], // scalingap [yn] // unreasonably complex for now
|
||||
// 111 => [FILTER_CR_NYI_PH, null, null, null ], // scalingsp [yn] // unreasonably complex for now
|
||||
114 => [FILTER_CR_CALLBACK, 'cbReqFaction' ], // requiresfaction [side]
|
||||
116 => [FILTER_CR_BOOLEAN, 'startRecoveryTime' ] // onGlobalCooldown [yn]
|
||||
1 => [FILTER_CR_CALLBACK, 'cbCost', ], // costAbs [op] [int]
|
||||
2 => [FILTER_CR_NUMERIC, 'powerCostPercent', NUM_CAST_INT ], // prcntbasemanarequired
|
||||
3 => [FILTER_CR_BOOLEAN, 'spellFocusObject' ], // requiresnearbyobject
|
||||
4 => [FILTER_CR_NUMERIC, 'trainingcost', NUM_CAST_INT ], // trainingcost
|
||||
5 => [FILTER_CR_BOOLEAN, 'reqSpellId' ], // requiresprofspec
|
||||
8 => [FILTER_CR_FLAG, 'cuFlags', CUSTOM_HAS_SCREENSHOT ], // hasscreenshots
|
||||
9 => [FILTER_CR_CALLBACK, 'cbSource', ], // source [enum]
|
||||
10 => [FILTER_CR_FLAG, 'cuFlags', SPELL_CU_FIRST_RANK ], // firstrank
|
||||
11 => [FILTER_CR_FLAG, 'cuFlags', CUSTOM_HAS_COMMENT ], // hascomments
|
||||
12 => [FILTER_CR_FLAG, 'cuFlags', SPELL_CU_LAST_RANK ], // lastrank
|
||||
13 => [FILTER_CR_NUMERIC, 'rankNo', NUM_CAST_INT ], // rankno
|
||||
14 => [FILTER_CR_NUMERIC, 'id', NUM_CAST_INT, true ], // id
|
||||
15 => [FILTER_CR_STRING, 'ic.name', ], // icon
|
||||
17 => [FILTER_CR_FLAG, 'cuFlags', CUSTOM_HAS_VIDEO ], // hasvideos
|
||||
19 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION ], // scaling
|
||||
20 => [FILTER_CR_CALLBACK, 'cbReagents', ], // has Reagents [yn]
|
||||
// 22 => [FILTER_CR_NYI_PH, null, null, null ], // proficiencytype [proficiencytype] pointless
|
||||
25 => [FILTER_CR_BOOLEAN, 'skillLevelYellow' ], // rewardsskillups
|
||||
27 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_CHANNELED_1, true ], // channeled [yn]
|
||||
28 => [FILTER_CR_NUMERIC, 'castTime', NUM_CAST_FLOAT ], // casttime [num]
|
||||
29 => [FILTER_CR_CALLBACK, 'cbAuraNames', ], // appliesaura [effectauranames]
|
||||
// 31 => [FILTER_CR_NYI_PH, null, null, null ], // usablewhenshapeshifted [yn] pointless
|
||||
33 => [FILTER_CR_CALLBACK, 'cbInverseFlag', 'attributes0', SPELL_ATTR0_CANT_USED_IN_COMBAT], // combatcastable [yn]
|
||||
34 => [FILTER_CR_CALLBACK, 'cbInverseFlag', 'attributes2', SPELL_ATTR2_CANT_CRIT ], // chancetocrit [yn]
|
||||
35 => [FILTER_CR_CALLBACK, 'cbInverseFlag', 'attributes3', SPELL_ATTR3_IGNORE_HIT_RESULT ], // chancetomiss [yn]
|
||||
36 => [FILTER_CR_FLAG, 'attributes3', SPELL_ATTR3_DEATH_PERSISTENT ], // persiststhroughdeath [yn]
|
||||
38 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_ONLY_STEALTHED ], // requiresstealth [yn]
|
||||
39 => [FILTER_CR_CALLBACK, 'cbSpellstealable', 'attributes4', SPELL_ATTR4_NOT_STEALABLE ], // spellstealable [yn]
|
||||
40 => [FILTER_CR_ENUM, 'damageClass' ], // damagetype [damagetype]
|
||||
41 => [FILTER_CR_FLAG, 'stanceMask', (1 << (22 - 1)) ], // requiresmetamorphosis [yn]
|
||||
42 => [FILTER_CR_FLAG, 'attributes5', SPELL_ATTR5_USABLE_WHILE_STUNNED ], // usablewhenstunned [yn]
|
||||
44 => [FILTER_CR_CALLBACK, 'cbUsableInArena' ], // usableinarenas [yn]
|
||||
45 => [FILTER_CR_ENUM, 'powerType' ], // resourcetype [resourcetype]
|
||||
// 46 => [FILTER_CR_NYI_PH, null, null, null ], // disregardimmunity [yn]
|
||||
47 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_UNAFFECTED_BY_SCHOOL_IMMUNE ], // disregardschoolimmunity [yn]
|
||||
48 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 0x0004000C, false ], // reqrangedweapon [yn]
|
||||
49 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_ON_NEXT_SWING ], // onnextswingplayers [yn]
|
||||
50 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_PASSIVE ], // passivespell [yn]
|
||||
51 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_DONT_DISPLAY_IN_AURA_BAR ], // hiddenaura [yn]
|
||||
52 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_ON_NEXT_SWING_2 ], // onnextswingnpcs [yn]
|
||||
53 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_DAYTIME_ONLY ], // daytimeonly [yn]
|
||||
54 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_NIGHT_ONLY ], // nighttimeonly [yn]
|
||||
55 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_INDOORS_ONLY ], // indoorsonly [yn]
|
||||
56 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_OUTDOORS_ONLY ], // outdoorsonly [yn]
|
||||
57 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_CANT_CANCEL ], // uncancellableaura [yn]
|
||||
58 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_LEVEL_DAMAGE_CALCULATION ], // damagedependsonlevel [yn]
|
||||
59 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_STOP_ATTACK_TARGET ], // stopsautoattack [yn]
|
||||
60 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_IMPOSSIBLE_DODGE_PARRY_BLOCK ], // cannotavoid [yn]
|
||||
61 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_CASTABLE_WHILE_DEAD ], // usabledead [yn]
|
||||
62 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_CASTABLE_WHILE_MOUNTED ], // usablemounted [yn]
|
||||
63 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_DISABLED_WHILE_ACTIVE ], // delayedrecoverystarttime [yn]
|
||||
64 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_CASTABLE_WHILE_SITTING ], // usablesitting [yn]
|
||||
65 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_DRAIN_ALL_POWER ], // usesallpower [yn]
|
||||
66 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_CHANNELED_2, true ], // channeled [yn]
|
||||
67 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_CANT_BE_REFLECTED ], // cannotreflect [yn]
|
||||
68 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_NOT_BREAK_STEALTH ], // usablestealthed [yn]
|
||||
69 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_NEGATIVE_1 ], // harmful [yn]
|
||||
70 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_CANT_TARGET_IN_COMBAT ], // targetnotincombat [yn]
|
||||
71 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_NO_THREAT ], // nothreat [yn]
|
||||
72 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_IS_PICKPOCKET ], // pickpocket [yn]
|
||||
73 => [FILTER_CR_FLAG, 'attributes1', SPELL_ATTR1_DISPEL_AURAS_ON_IMMUNITY ], // dispelauraonimmunity [yn]
|
||||
74 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 0x00100000, false ], // reqfishingpole [yn]
|
||||
75 => [FILTER_CR_FLAG, 'attributes2', SPELL_ATTR2_CANT_TARGET_TAPPED ], // requntappedtarget [yn]
|
||||
// 76 => [FILTER_CR_NYI_PH, null, null, null ], // targetownitem [yn] // the flag for this has to be somewhere....
|
||||
77 => [FILTER_CR_FLAG, 'attributes2', SPELL_ATTR2_NOT_NEED_SHAPESHIFT ], // doesntreqshapeshift [yn]
|
||||
78 => [FILTER_CR_FLAG, 'attributes2', SPELL_ATTR2_FOOD_BUFF ], // foodbuff [yn]
|
||||
79 => [FILTER_CR_FLAG, 'attributes3', SPELL_ATTR3_ONLY_TARGET_PLAYERS ], // targetonlyplayer [yn]
|
||||
80 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 1 << INVTYPE_WEAPONMAINHAND, true ], // reqmainhand [yn]
|
||||
81 => [FILTER_CR_FLAG, 'attributes3', SPELL_ATTR3_NO_INITIAL_AGGRO ], // doesntengagetarget [yn]
|
||||
82 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 0x00080000, false ], // reqwand [yn]
|
||||
83 => [FILTER_CR_CALLBACK, 'cbEquippedWeapon', 1 << INVTYPE_WEAPONOFFHAND, true ], // reqoffhand [yn]
|
||||
84 => [FILTER_CR_FLAG, 'attributes0', SPELL_ATTR0_HIDE_IN_COMBAT_LOG ], // nolog [yn]
|
||||
85 => [FILTER_CR_FLAG, 'attributes4', SPELL_ATTR4_FADES_WHILE_LOGGED_OUT ], // auratickswhileloggedout [yn]
|
||||
87 => [FILTER_CR_FLAG, 'attributes5', SPELL_ATTR5_START_PERIODIC_AT_APPLY ], // startstickingatapplication [yn]
|
||||
88 => [FILTER_CR_FLAG, 'attributes5', SPELL_ATTR5_USABLE_WHILE_CONFUSED ], // usableconfused [yn]
|
||||
89 => [FILTER_CR_FLAG, 'attributes5', SPELL_ATTR5_USABLE_WHILE_FEARED ], // usablefeared [yn]
|
||||
90 => [FILTER_CR_FLAG, 'attributes6', SPELL_ATTR6_ONLY_IN_ARENA ], // onlyarena [yn]
|
||||
91 => [FILTER_CR_FLAG, 'attributes6', SPELL_ATTR6_NOT_IN_RAID_INSTANCE ], // notinraid [yn]
|
||||
92 => [FILTER_CR_FLAG, 'attributes7', SPELL_ATTR7_REACTIVATE_AT_RESURRECT ], // paladinaura [yn]
|
||||
93 => [FILTER_CR_FLAG, 'attributes7', SPELL_ATTR7_SUMMON_PLAYER_TOTEM ], // totemspell [yn]
|
||||
95 => [FILTER_CR_CALLBACK, 'cbBandageSpell' ], // bandagespell [yn] ...don't ask
|
||||
96 => [FILTER_CR_STAFFFLAG, 'attributes0' ], // flags1 [flags]
|
||||
97 => [FILTER_CR_STAFFFLAG, 'attributes1' ], // flags2 [flags]
|
||||
98 => [FILTER_CR_STAFFFLAG, 'attributes2' ], // flags3 [flags]
|
||||
99 => [FILTER_CR_STAFFFLAG, 'attributes3' ], // flags4 [flags]
|
||||
100 => [FILTER_CR_STAFFFLAG, 'attributes4' ], // flags5 [flags]
|
||||
101 => [FILTER_CR_STAFFFLAG, 'attributes5' ], // flags6 [flags]
|
||||
102 => [FILTER_CR_STAFFFLAG, 'attributes6' ], // flags7 [flags]
|
||||
103 => [FILTER_CR_STAFFFLAG, 'attributes7' ], // flags8 [flags]
|
||||
104 => [FILTER_CR_STAFFFLAG, 'targets' ], // flags9 [flags]
|
||||
105 => [FILTER_CR_STAFFFLAG, 'stanceMaskNot' ], // flags10 [flags]
|
||||
106 => [FILTER_CR_STAFFFLAG, 'spellFamilyFlags1' ], // flags11 [flags]
|
||||
107 => [FILTER_CR_STAFFFLAG, 'spellFamilyFlags2' ], // flags12 [flags]
|
||||
108 => [FILTER_CR_STAFFFLAG, 'spellFamilyFlags3' ], // flags13 [flags]
|
||||
109 => [FILTER_CR_CALLBACK, 'cbEffectNames', ], // effecttype [effecttype]
|
||||
// 110 => [FILTER_CR_NYI_PH, null, null, null ], // scalingap [yn] // unreasonably complex for now
|
||||
// 111 => [FILTER_CR_NYI_PH, null, null, null ], // scalingsp [yn] // unreasonably complex for now
|
||||
114 => [FILTER_CR_CALLBACK, 'cbReqFaction' ], // requiresfaction [side]
|
||||
116 => [FILTER_CR_BOOLEAN, 'startRecoveryTime' ] // onGlobalCooldown [yn]
|
||||
);
|
||||
|
||||
// fieldId => [checkType, checkValue[, fieldIsArray]]
|
||||
@@ -2592,6 +2592,11 @@ class SpellListFilter extends Filter
|
||||
return $parts;
|
||||
}
|
||||
|
||||
public function getGenericFilter($cr) // access required by SpellDetailPage's SpellAttributes list
|
||||
{
|
||||
return $this->genericFilter[$cr] ?? [];
|
||||
}
|
||||
|
||||
protected function cbClasses(&$val)
|
||||
{
|
||||
if (!$this->parentCats || !in_array($this->parentCats[0], [-13, -2, 7]))
|
||||
@@ -2735,13 +2740,13 @@ class SpellListFilter extends Filter
|
||||
|
||||
if ($cr[1])
|
||||
return ['AND',
|
||||
[['attributes4', 0x00010000, '&'], 0],
|
||||
['OR', ['recoveryTime', 10 * MINUTE * 1000, '<='], ['attributes4', 0x00020000, '&']]
|
||||
[['attributes4', SPELL_ATTR4_NOT_USABLE_IN_ARENA, '&'], 0],
|
||||
['OR', ['recoveryTime', 10 * MINUTE * 1000, '<='], ['attributes4', SPELL_ATTR4_USABLE_IN_ARENA, '&']]
|
||||
];
|
||||
else
|
||||
return ['OR',
|
||||
['attributes4', 0x00010000, '&'],
|
||||
['AND', ['recoveryTime', 10 * MINUTE * 1000, '>'], [['attributes4', 0x00020000, '&'], 0]]
|
||||
['attributes4', SPELL_ATTR4_NOT_USABLE_IN_ARENA, '&'],
|
||||
['AND', ['recoveryTime', 10 * MINUTE * 1000, '>'], [['attributes4', SPELL_ATTR4_USABLE_IN_ARENA, '&'], 0]]
|
||||
];
|
||||
}
|
||||
|
||||
@@ -2751,9 +2756,9 @@ class SpellListFilter extends Filter
|
||||
return false;
|
||||
|
||||
if ($cr[1]) // match exact, not as flag
|
||||
return ['AND', ['attributes1', 0x00004044], ['effect1ImplicitTargetA', 21]];
|
||||
return ['AND', ['attributes1', SPELL_ATTR1_CHANNELED_1 | SPELL_ATTR1_CHANNELED_2 | SPELL_ATTR1_CHANNEL_TRACK_TARGET], ['effect1ImplicitTargetA', 21]];
|
||||
else
|
||||
return ['OR', ['attributes1', 0x00004044, '!'], ['effect1ImplicitTargetA', 21, '!']];
|
||||
return ['OR', ['attributes1', SPELL_ATTR1_CHANNELED_1 | SPELL_ATTR1_CHANNELED_2 | SPELL_ATTR1_CHANNEL_TRACK_TARGET, '!'], ['effect1ImplicitTargetA', 21, '!']];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -219,6 +219,7 @@ $lang = array(
|
||||
'emotes' => "Emotes",
|
||||
'enchantment' => "Verzauberung",
|
||||
'enchantments' => "Verzauberungen",
|
||||
'flags' => "Flags",
|
||||
'object' => "Objekt",
|
||||
'objects' => "Objekte",
|
||||
'glyphType' => "Glyphenart",
|
||||
@@ -1450,6 +1451,65 @@ $lang = array(
|
||||
),
|
||||
'stealthType' => ["Allgemein", "Falle"],
|
||||
'invisibilityType' => ["Allgemein", 3 => "Falle", 6 => "Trunkenheit"],
|
||||
'attributes' => array( // index defined by filters
|
||||
69 => "Alle Zaubereffekte sind schädlich",
|
||||
57 => "Aura kann nicht entfernt werden",
|
||||
51 => "Aura ist versteckt",
|
||||
95 => "Verbandszauber",
|
||||
61 => "Kann tot verwendet werden",
|
||||
62 => "Kann verwendet werden, während Ihr auf einem Reittier sitzt",
|
||||
64 => "Kann im Sitzen benutzt werden",
|
||||
53 => "Kann nur tagsüber benutzt werden",
|
||||
54 => "Kann nur nachts verwendet werden",
|
||||
55 => "Kann nur drinnen verwendet werden",
|
||||
56 => "Kann nur draußen verwendet werden",
|
||||
79 => "Kann nur einen Spieler zum Ziel haben",
|
||||
60 => "Kann nicht ausgewichen, pariert oder geblockt werden",
|
||||
67 => "Kann nicht reflektiert werden",
|
||||
91 => "Kann nicht im Schlachtzug verwendet werden",
|
||||
33 => "Kann im Kampf gewirkt werden",
|
||||
34 => "Chance, kritisch zu treffen",
|
||||
35 => "Chance to verfehlen",
|
||||
27 => "Kanalisiert",
|
||||
66 => "Kanalisiert 2",
|
||||
85 => "Dauert an, während Ihr ausgeloggt seid",
|
||||
84 => "Erscheint nicht im Log",
|
||||
68 => "Beendet Verstohlenheitsmodus nicht",
|
||||
81 => "Verwickelt das Ziel nicht in einen Kampf",
|
||||
77 => "Erfordert keine Gestaltwandlung",
|
||||
// 46 => "Ignoriert Unverwundbarkeit",
|
||||
47 => "Ignoriert Unverwundbarkeit gegen Magieart",
|
||||
78 => "Essens-/Getränk-Buff",
|
||||
71 => "Generiert keine Bedrohung",
|
||||
52 => "Mit dem nächsten Schwung (NSCs)",
|
||||
49 => "Mit dem nächsten Schwung (Spieler)",
|
||||
90 => "Nur in der Arena benutzbar",
|
||||
92 => "Paladin Aura",
|
||||
50 => "Passiver Zauber",
|
||||
36 => "Hält über Tod hinaus an",
|
||||
72 => "Taschendiebstahl-Zauber",
|
||||
73 => "Entfernt Auren auf Immunität",
|
||||
48 => "Benötigt eine Fernkampfwaffe",
|
||||
82 => "Benötigt einen Zauberstab",
|
||||
83 => "Benötigt eine Schildhandwaffe",
|
||||
74 => "Erfordert Angelrute",
|
||||
41 => "Benötigt Metamorphose",
|
||||
80 => "Benötigt eine Haupthandwaffe",
|
||||
38 => "Benötigt Verstohlenheit",
|
||||
75 => "Setzt ein unmarkiertes Ziel voraus",
|
||||
58 => "Zauberschaden ist abhängig von der Stufe des Zauberers",
|
||||
39 => "Zauber kann geraubt werden",
|
||||
63 => "Abklingzeit beginnt, nachdem die Aura schwindet",
|
||||
87 => "Beginnt zu ticken, sobald die Aura angewendet wird",
|
||||
59 => "Stoppt Autoangriff",
|
||||
// 76 => "Das Ziel muss ein eigener Gegenstand sein",
|
||||
70 => "Das Ziel darf sich nicht im Kampf befinden",
|
||||
93 => "Totem",
|
||||
42 => "Benutzbar in Betäubung",
|
||||
88 => "Verwendbar, während Ihr verwirrt seid",
|
||||
89 => "Verwendbar, während Ihr verängstigt seid",
|
||||
65 => "Braucht alle Ressourcen auf"
|
||||
),
|
||||
'unkEffect' => 'Unknown Effect',
|
||||
'effects' => array(
|
||||
/*0-5 */ 'None', 'Instakill', 'School Damage', 'Dummy', 'Portal Teleport', 'Teleport Units',
|
||||
|
||||
@@ -219,6 +219,7 @@ $lang = array(
|
||||
'emotes' => "Emotes",
|
||||
'enchantment' => "enchantment",
|
||||
'enchantments' => "Enchantments",
|
||||
'flags' => "Flags",
|
||||
'object' => "object",
|
||||
'objects' => "Objects",
|
||||
'glyphType' => "Glyph type",
|
||||
@@ -1450,6 +1451,65 @@ $lang = array(
|
||||
),
|
||||
'stealthType' => ["General", "Trap"],
|
||||
'invisibilityType' => ["General", 3 => "Trap", 6 => "Drunk"],
|
||||
'attributes' => array( // index defined by filters
|
||||
69 => "All spell effects are harmful",
|
||||
57 => "Aura cannot be cancelled",
|
||||
51 => "Aura is hidden",
|
||||
95 => "Bandage spell",
|
||||
61 => "Can be used while dead",
|
||||
62 => "Can be used while mounted",
|
||||
64 => "Can be used while sitting",
|
||||
53 => "Can only be used during daytime",
|
||||
54 => "Can only be used during nighttime",
|
||||
55 => "Can only be used indoors",
|
||||
56 => "Can only be used outdoors",
|
||||
79 => "Can only target the player",
|
||||
60 => "Cannot be dodged, parried or blocked",
|
||||
67 => "Cannot be reflected",
|
||||
91 => "Cannot be used in a raid",
|
||||
33 => "Castable in combat",
|
||||
34 => "Chance to critically hit",
|
||||
35 => "Chance to miss",
|
||||
27 => "Channeled",
|
||||
66 => "Channeled 2",
|
||||
85 => "Continues while logged out",
|
||||
84 => "Does not appear in log",
|
||||
68 => "Does not break stealth",
|
||||
81 => "Does not engage target",
|
||||
77 => "Does not require shapeshift",
|
||||
// 46 => "Disregards immunity",
|
||||
47 => "Disregards school immunity",
|
||||
78 => "Food/Drink buff",
|
||||
71 => "Generates no threat",
|
||||
52 => "On next swing (npcs)",
|
||||
49 => "On next swing (players)",
|
||||
90 => "Only usable in arena",
|
||||
92 => "Paladin aura",
|
||||
50 => "Passive spell",
|
||||
36 => "Persists through death",
|
||||
72 => "Pickpocket spell",
|
||||
73 => "Remove auras on immunity",
|
||||
48 => "Requires a ranged weapon",
|
||||
82 => "Requires a wand",
|
||||
83 => "Requires an off-hand weapon",
|
||||
74 => "Requires fishing pole",
|
||||
41 => "Requires Metamorphosis",
|
||||
80 => "Requires main hand weapon",
|
||||
38 => "Requires Stealth",
|
||||
75 => "Requires untapped target",
|
||||
58 => "Spell damage depends on caster level",
|
||||
39 => "Spellstealable",
|
||||
63 => "Starts cooldown after aura fades",
|
||||
87 => "Starts ticking at aura application",
|
||||
59 => "Stops auto-attack",
|
||||
// 76 => "Target must be own item",
|
||||
70 => "The target cannot be in combat",
|
||||
93 => "Totem",
|
||||
42 => "Usable when stunned",
|
||||
88 => "Usable while confused",
|
||||
89 => "Usable while feared",
|
||||
65 => "Uses all power"
|
||||
),
|
||||
'unkEffect' => 'Unknown Effect',
|
||||
'effects' => array(
|
||||
/*0-5 */ 'None', 'Instakill', 'School Damage', 'Dummy', 'Portal Teleport', 'Teleport Units',
|
||||
|
||||
@@ -219,6 +219,7 @@ $lang = array(
|
||||
'emotes' => "Emociones",
|
||||
'enchantment' => "encantamiento",
|
||||
'enchantments' => "Encantamientos",
|
||||
'flags' => "Banderas",
|
||||
'object' => "entidad",
|
||||
'objects' => "Entidades",
|
||||
'glyphType' => "Tipo de glifo",
|
||||
@@ -1450,6 +1451,65 @@ $lang = array(
|
||||
),
|
||||
'stealthType' => ["GENERAL", "TRAP"],
|
||||
'invisibilityType' => ["GENERAL", 3 => "TRAP", 6 => "DRUNK"],
|
||||
'attributes' => array( // index defined by filters
|
||||
69 => "Todos los efectos de Hechizos son perjudiciales",
|
||||
57 => "El aura no se puede cancelar",
|
||||
51 => "El Aura esta oculta",
|
||||
95 => "Hechizo de Venda",
|
||||
61 => "Se puede utilizar estando muerto",
|
||||
62 => "Se puede utilizar estando montado",
|
||||
64 => "Se puede utilizar sentado",
|
||||
53 => "Solo puede ser utilizado de día",
|
||||
54 => "Sólo se puede utilizar durante la noche",
|
||||
55 => "Solo puede ser utilizado en interiores",
|
||||
56 => "Solo puede ser utilizado en exteriores",
|
||||
79 => "Solo puede hacerle objetivo al jugador",
|
||||
60 => "No puede ser esquivado, parado o bloqueado",
|
||||
67 => "No puede ser reflejado",
|
||||
91 => "No puede ser utilizado en una banda",
|
||||
33 => "Utilizable en combate",
|
||||
34 => "Oportunidad de golpe crítico",
|
||||
35 => "Oportunidad de fallar",
|
||||
27 => "Canalizado",
|
||||
66 => "Canalizado 2",
|
||||
85 => "Continúa mientras esta desconectado",
|
||||
84 => "No aparece en el registro",
|
||||
68 => "No rompe el sigilo",
|
||||
81 => "No ataca al objetivo",
|
||||
77 => "No requiere cambio de forma",
|
||||
// 46 => "Ignora la inmunidad",
|
||||
47 => "Ignora la imunidad a una escuela de magia",
|
||||
78 => "Beneficio de la Bebida/Comida",
|
||||
71 => "No genera amenza",
|
||||
52 => "Con el próximo golpe (PNJs)",
|
||||
49 => "Con el próximo golpe (jugadores)",
|
||||
90 => "Solo utilizable en Arena",
|
||||
92 => "Aura de Paladín",
|
||||
50 => "Hechizo Pasivo",
|
||||
36 => "Persiste después de la muerte",
|
||||
72 => "Hechizo de Robar",
|
||||
73 => "Remueve las auras siendo inmune",
|
||||
48 => "Requiere un arma a distancia",
|
||||
82 => "Requiere una varita",
|
||||
83 => "Requiere un arma en la mano izquierda",
|
||||
74 => "Requiere una Caña de Pescar",
|
||||
41 => "Requiere Metamorfosis",
|
||||
80 => "Requiere Arma en la Mano Principal",
|
||||
38 => "Requiere Sigilo",
|
||||
75 => "Requiere un objetivo no seleccionado",
|
||||
58 => "Daño con Hechizos depende del nivel del lanzador",
|
||||
39 => "Hechizo puede ser robado",
|
||||
63 => "Comienza el tiempo de reutilización luego de que el aura se desvanece",
|
||||
87 => 'Comienzan los "ticks" con la aplicación del aura',
|
||||
59 => "Detiene el auto-ataque",
|
||||
// 76 => "El objetivo debe ser dueño del objeto",
|
||||
70 => "El objetivo no debe estar en combate",
|
||||
93 => "Totem",
|
||||
42 => "Utilizable durante aturdimiento",
|
||||
88 => "Utilizable mientras se esta confuso",
|
||||
89 => "Utilizable mientras se esta aterrorizado",
|
||||
65 => "Utiliza todo el poder"
|
||||
),
|
||||
'unkEffect' => 'Unknown Effect',
|
||||
'effects' => array(
|
||||
/*0-5 */ 'None', 'Instakill', 'School Damage', 'Dummy', 'Portal Teleport', 'Teleport Units',
|
||||
|
||||
@@ -219,6 +219,7 @@ $lang = array(
|
||||
'emotes' => "Emotes",
|
||||
'enchantment' => "enchantement",
|
||||
'enchantments' => "Enchantements",
|
||||
'flags' => "Marqueurs",
|
||||
'object' => "entité",
|
||||
'objects' => "Entités",
|
||||
'glyphType' => "Type de glyphe",
|
||||
@@ -1450,6 +1451,65 @@ $lang = array(
|
||||
),
|
||||
'stealthType' => ["GENERAL", "TRAP"],
|
||||
'invisibilityType' => ["GENERAL", 3 => "TRAP", 6 => "DRUNK"],
|
||||
'attributes' => array( // index defined by filters
|
||||
69 => "Tous les effets de sort sont nuisibles",
|
||||
57 => "L'aura ne peut être annulée",
|
||||
51 => "Aura cachée",
|
||||
95 => "Sort de bandage",
|
||||
61 => "Utilisable même mort",
|
||||
62 => "Utilisable en monture",
|
||||
64 => "Utilisable assis",
|
||||
53 => "Ne peut être utilisé que pendant la journée",
|
||||
54 => "Ne peut être utilisé que pendant la nuit",
|
||||
55 => "Peut être utilisé uniquement à l'intérieur",
|
||||
56 => "Ne peut être utilisé qu'à l'extérieur",
|
||||
79 => "Ne peut cibler que le joueur",
|
||||
60 => "Ne peut être esquivé, paré ou bloqué",
|
||||
67 => "Ne peut être renvoyé",
|
||||
91 => "Ne peut être utilisé en raid",
|
||||
33 => "Utilisable en combat",
|
||||
34 => "Chance d'infliger un coup critique",
|
||||
35 => "Chance de rater",
|
||||
27 => "Canalisé",
|
||||
66 => "Canalisé 2",
|
||||
85 => "Continue après la déconnexion",
|
||||
84 => "N'apparait pas dans le journal",
|
||||
68 => "N'enlève pas le camouflage",
|
||||
81 => "N'engage pas la cible",
|
||||
77 => "Ne requiert pas de changeforme",
|
||||
// 46 => "Ignore les immunités",
|
||||
47 => "Ignore les immunités à une école de magie",
|
||||
78 => "Buff Nourriture/Boisson",
|
||||
71 => "Ne génère pas de menace",
|
||||
52 => "Au coup suivant (PNJ)",
|
||||
49 => "Au coup suivant (joueurs)",
|
||||
90 => "Utilisable uniquement en arène",
|
||||
92 => "Aura de paladin",
|
||||
50 => "Sort passif",
|
||||
36 => "Persiste après la mort",
|
||||
72 => "Sort de pickpocket",
|
||||
73 => "Retire les auras sur immunité",
|
||||
48 => "Requiert une arme à distance",
|
||||
82 => "Requiert une baguette",
|
||||
83 => "Requiert une arme en main gauche",
|
||||
74 => "Requiert une canne à pêche",
|
||||
41 => "Requiert Métamorphose",
|
||||
80 => "Requiert une arme en main droite",
|
||||
38 => "Requiert Camouflage",
|
||||
75 => "Requiert une cible non engagée",
|
||||
58 => "Les dégats du sort dépendent du niveau du lanceur",
|
||||
39 => "Peut faire l'objet d'un vol de sort",
|
||||
63 => "Le temps de recharge démarre après que l'aura disparaît",
|
||||
87 => "Commence les tics à l'application de l'aura",
|
||||
59 => "Arrête l'auto-attaque",
|
||||
// 76 => "La cible doit être un objet possédé",
|
||||
70 => "La cible ne peut être en combat",
|
||||
93 => "Totem",
|
||||
42 => "Utilisable quand assommé",
|
||||
88 => "Utilisable quand confus",
|
||||
89 => "Utilisable sous l'effet de peur",
|
||||
65 => "Utilise toute la puissance"
|
||||
),
|
||||
'unkEffect' => 'Unknown Effect',
|
||||
'effects' => array(
|
||||
/*0-5 */ 'None', 'Instakill', 'School Damage', 'Dummy', 'Portal Teleport', 'Teleport Units',
|
||||
|
||||
@@ -219,6 +219,7 @@ $lang = array(
|
||||
'emotes' => "Эмоции",
|
||||
'enchantment' => "улучшение",
|
||||
'enchantments' => "Улучшения",
|
||||
'flags' => "Метки",
|
||||
'object' => "объект",
|
||||
'objects' => "Объекты",
|
||||
'glyphType' => "Тип символа",
|
||||
@@ -1450,6 +1451,65 @@ $lang = array(
|
||||
),
|
||||
'stealthType' => ["GENERAL", "TRAP"],
|
||||
'invisibilityType' => ["GENERAL", 3 => "TRAP", 6 => "DRUNK"],
|
||||
'attributes' => array( // index defined by filters
|
||||
69 => "Все пагубные эффекты заклинаний",
|
||||
57 => "Эффект не может быть отменен",
|
||||
51 => "Эффект скрыт",
|
||||
95 => "Исцеление бинтами",
|
||||
61 => "Может быть использовано, пока вы мертвы",
|
||||
62 => "Начинает восстановление после спадения эффекта",
|
||||
64 => "Может быть использовано сидя",
|
||||
53 => "Может быть использовано только в дневное время",
|
||||
54 => "Может быть использовано только ночью",
|
||||
55 => "Можно использовать только в помещении",
|
||||
56 => "Может быть использовано только снаружи",
|
||||
79 => "Целью может быть только игрок",
|
||||
60 => "Невозможно уклониться, парировать или блокировать",
|
||||
67 => "Не может быть отражено",
|
||||
91 => "Не может быть использовано в рейде",
|
||||
33 => "Может использоваться в бою",
|
||||
34 => "Шанс ударить критически",
|
||||
35 => "Шанс промахнуться",
|
||||
27 => "Потоковое",
|
||||
66 => "Потоковое 2",
|
||||
85 => "Продолжается после выхода из игрового мира",
|
||||
84 => "Не появляется в логе",
|
||||
68 => "Не прерывает режим скрытности",
|
||||
81 => "Цель не вступает в бой",
|
||||
77 => "Не приводит к смене формы",
|
||||
// 46 => "Игнорирует иммунитет",
|
||||
47 => "Игнорирует иммунитет к школе заклинаний",
|
||||
78 => "Бонус от еды/питья",
|
||||
71 => "Не создает угрозы",
|
||||
52 => "Следующая атака (НИП)",
|
||||
49 => "Следующая атака (игрок)",
|
||||
90 => "Используется только на арене",
|
||||
92 => "Аура Паладина",
|
||||
50 => "Пассивная способность",
|
||||
36 => "Сохраняется после смерти",
|
||||
72 => "Заклинание кражи",
|
||||
73 => "Снять эффект при иммунитете",
|
||||
48 => "Необходимо оружие дальнего боя",
|
||||
82 => "Требует жезл",
|
||||
83 => "Необходимо оружие для левой руки",
|
||||
74 => "Требуется удочка",
|
||||
41 => "Требует Метаморфозу",
|
||||
80 => "Необходимо оружие для правой руки",
|
||||
38 => "Требует Незаметность",
|
||||
75 => "Требует цель вне боя",
|
||||
58 => "Урон заклинания зависит от уровня произносящего",
|
||||
39 => "Можно применить Чарокрад",
|
||||
63 => "Начинает восстановление после спадения эффекта",
|
||||
87 => "Эффект начинается вместе с применением",
|
||||
59 => "Прекращает автоатаку",
|
||||
// 76 => "Цель должна быть вашей вещью",
|
||||
70 => "Цель не может находиться в бою",
|
||||
93 => "Тотем",
|
||||
42 => "Может быть использовано во время оглушения",
|
||||
88 => "Используемо в замешательстве",
|
||||
89 => "usablefearedМожет быть использовано, пока наложен Страх",
|
||||
65 => "Использует ресурс полностью"
|
||||
),
|
||||
'unkEffect' => 'Unknown Effect',
|
||||
'effects' => array(
|
||||
/*0-5 */ 'None', 'Instakill', 'School Damage', 'Dummy', 'Portal Teleport', 'Teleport Units',
|
||||
|
||||
@@ -219,6 +219,7 @@ $lang = array(
|
||||
'emotes' => "表情",
|
||||
'enchantment' => "附魔",
|
||||
'enchantments' => "附魔",
|
||||
'flags' => "标记",
|
||||
'object' => "对象",
|
||||
'objects' => "对象",
|
||||
'glyphType' => "雕文类型",
|
||||
@@ -1450,6 +1451,65 @@ $lang = array(
|
||||
),
|
||||
'stealthType' => ["General", "Trap"],
|
||||
'invisibilityType' => ["General", 3 => "Trap", 6 => "Drunk"],
|
||||
'attributes' => array( // index defined by filters
|
||||
69 => "所有法术效果都是有害的",
|
||||
57 => "无法取消光环",
|
||||
51 => "隐藏光环",
|
||||
95 => "绷带法术",
|
||||
61 => "死亡后可用",
|
||||
62 => "骑乘时可用",
|
||||
64 => "坐下时可用",
|
||||
53 => "只可在白天使用",
|
||||
54 => "只可在夜间使用",
|
||||
55 => "只可在室内使用",
|
||||
56 => "只可在室外使用",
|
||||
79 => "只能瞄准玩家",
|
||||
60 => "无法躲避、招架或格挡",
|
||||
67 => "无法反射",
|
||||
91 => "团队副本中无法使用",
|
||||
33 => "可在战斗中施法",
|
||||
34 => "致命一击几率",
|
||||
35 => "未命中几率",
|
||||
27 => "引导",
|
||||
66 => "引导 2",
|
||||
85 => "退出登录后仍继续",
|
||||
84 => "不在日志中显示",
|
||||
68 => "不打破潜行",
|
||||
81 => "无目标接触",
|
||||
77 => "不需要形变",
|
||||
// 46 => "忽略免疫",
|
||||
47 => "忽略类型免疫",
|
||||
78 => "食物/饮料增强",
|
||||
71 => "不产生威胁",
|
||||
52 => "再次攻击时生效(npc)",
|
||||
49 => "再次攻击时生效(玩家)",
|
||||
90 => "只可在竞技场中使用",
|
||||
92 => "圣骑士光环",
|
||||
50 => "被动技能",
|
||||
36 => "死亡后继续存在",
|
||||
72 => "偷窃法术",
|
||||
73 => "免疫时移除光效",
|
||||
48 => "需要远距离武器",
|
||||
82 => "需要魔杖",
|
||||
83 => "需要副手武器",
|
||||
74 => "需要钓鱼竿",
|
||||
41 => "需要变形",
|
||||
80 => "需要主手武器",
|
||||
38 => "需要潜行",
|
||||
75 => "需要未作用过的目标",
|
||||
58 => "法术伤害取决于施法者等级",
|
||||
39 => "可盗法",
|
||||
63 => "光效褪去后开始冷却",
|
||||
87 => "光环出现时开始计时",
|
||||
59 => "停止自动攻击",
|
||||
// 76 => "目标必须为自有物品",
|
||||
70 => "目标不能处于战斗中",
|
||||
93 => "图腾",
|
||||
42 => "昏迷中可用",
|
||||
88 => "混乱时可用",
|
||||
89 => "恐惧时可用",
|
||||
65 => "消耗所有力量"
|
||||
),
|
||||
'unkEffect' => '未知效果',
|
||||
'effects' => array(
|
||||
/*0-5 */ '无', '杀死', '类型伤害', 'Dummy', '传送门', '传送单位',
|
||||
|
||||
@@ -277,6 +277,7 @@ class SpellPage extends GenericPage
|
||||
$this->items = $this->createRequiredItems();
|
||||
$this->tools = $this->createTools();
|
||||
$this->effects = $effects;
|
||||
$this->attributes = $this->createAttributesList();
|
||||
$this->infobox = $infobox;
|
||||
$this->powerCost = $this->subject->createPowerCostForCurrent();
|
||||
$this->castTime = $this->subject->createCastTimeForCurrent(false, false);
|
||||
@@ -2169,6 +2170,58 @@ class SpellPage extends GenericPage
|
||||
return $effects;
|
||||
}
|
||||
|
||||
private function createAttributesList() : array
|
||||
{
|
||||
$cbBandageSpell = function()
|
||||
{
|
||||
return ($this->subject->getField('attributes1') & 0x00004044) && ($this->subject->getField('effect1ImplicitTargetA') == 21);
|
||||
};
|
||||
|
||||
$cbInverseFlag = function($field, $flag)
|
||||
{
|
||||
return !($this->subject->getField($field) & $flag);
|
||||
};
|
||||
|
||||
$cbEquippedWeapon = function ($mask, $useInvType)
|
||||
{
|
||||
$field = $useInvType ? 'equippedItemInventoryTypeMask' : 'equippedItemSubClassMask';
|
||||
|
||||
return ($this->subject->getField('equippedItemClass') == ITEM_CLASS_WEAPON) && ($this->subject->getField($field) & $mask);
|
||||
};
|
||||
|
||||
$cbSpellstealable = function($field, $flag)
|
||||
{
|
||||
return !($this->subject->getField($field) & $flag) && ($this->subject->getField('dispelType') == 1);
|
||||
};
|
||||
|
||||
$list = [];
|
||||
$fi = new SpellListFilter();
|
||||
foreach (Lang::spell('attributes') as $idx => $_)
|
||||
{
|
||||
if ($cr = $fi->getGenericFilter($idx))
|
||||
{
|
||||
if ($cr[0] == FILTER_CR_CALLBACK)
|
||||
{
|
||||
if (!isset($cr[1]))
|
||||
trigger_error('SpellDetailPage::createAttributesList - callback handler '.$cr[1].' not defined for IDX #'.$idx, E_USER_WARNING);
|
||||
else if (${$cr[1]}($cr[2] ?? null, $cr[3] ?? null))
|
||||
$list[] = $idx;
|
||||
}
|
||||
else if ($cr[0] == FILTER_CR_FLAG)
|
||||
{
|
||||
if ($this->subject->getField($cr[1]) & $cr[2])
|
||||
$list[] = $idx;
|
||||
}
|
||||
else
|
||||
trigger_error('SpellDetailPage::createAttributesList - unhandled filter case #'.$cr[0].' for IDX #'.$idx, E_USER_WARNING);
|
||||
}
|
||||
else
|
||||
trigger_error('SpellDetailPage::createAttributesList - SpellAttrib IDX #'.$idx.' defined in Lang, but not set as filter', E_USER_WARNING);
|
||||
}
|
||||
|
||||
return $list;
|
||||
}
|
||||
|
||||
private function ubSmartScript(int $type) : array
|
||||
{
|
||||
$src = -1;
|
||||
|
||||
@@ -4094,7 +4094,7 @@ var LANG = {
|
||||
combatcastable: "Utilizable en combate",
|
||||
chancetocrit: "Oportunidad de golpe crítico",
|
||||
chancetomiss: "Oportunidad de fallar",
|
||||
persiststhroughdeath: "Persiste después de la muerte ",
|
||||
persiststhroughdeath: "Persiste después de la muerte",
|
||||
requiresmetamorphosis: "Requiere Metamorfosis",
|
||||
requiresstealth: "Requiere Sigilo",
|
||||
spellstealable: "Hechizo puede ser robado",
|
||||
@@ -4102,7 +4102,7 @@ var LANG = {
|
||||
usablewhenstunned: "Utilizable durante aturdimiento",
|
||||
usableinbgs: "Utilizable solamente en los campos de batalla",
|
||||
usableinarenas: "Se puede usar en arenas",
|
||||
disregardimmunity: "Ignora la inmunidad ",
|
||||
disregardimmunity: "Ignora la inmunidad",
|
||||
disregardschoolimmunity: "Ignora la imunidad a una escuela de magia",
|
||||
reqrangedweapon: "Requiere un arma a distancia",
|
||||
onnextswingplayers: "Con el próximo golpe (jugadores)",
|
||||
@@ -4134,7 +4134,7 @@ var LANG = {
|
||||
requntappedtarget: "Requiere un objetivo no seleccionado",
|
||||
targetownitem: "El objetivo debe ser dueño del objeto",
|
||||
doesntreqshapeshift: "No requiere cambio de forma",
|
||||
foodbuff: "Beneficio de la Bebida/Comida ",
|
||||
foodbuff: "Beneficio de la Bebida/Comida",
|
||||
targetonlyplayer: "Solo puede hacerle objetivo al jugador",
|
||||
reqmainhand: "Requiere Arma en la Mano Principal",
|
||||
doesntengagetarget: "No ataca al objetivo",
|
||||
|
||||
@@ -257,6 +257,16 @@ $WH.aE(window,\'load\',function(){$WH.ge(\'spelleffectmarkup-'.$i.'\').innerHTML
|
||||
<?php
|
||||
endforeach;
|
||||
?>
|
||||
<tr>
|
||||
<th><?=Lang::game('flags');?></th>
|
||||
<td colspan="3" style="line-height:17px">
|
||||
<ul style="margin:0"><?php
|
||||
foreach ($this->attributes as $cr):
|
||||
echo '<li><a href="?spells&filter=cr='.$cr.';crs=1;crv=0">'.Lang::spell('attributes', $cr).'</a></li>';
|
||||
endforeach;
|
||||
?></ul>
|
||||
</td>
|
||||
</tr>
|
||||
</table>
|
||||
|
||||
<h2 class="clear"><?=Lang::main('related');?></h2>
|
||||
|
||||
Reference in New Issue
Block a user