aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2011_07_15_03_world_creature_template.sql54
-rwxr-xr-xsrc/server/game/Entities/Vehicle/Vehicle.cpp14
2 files changed, 56 insertions, 12 deletions
diff --git a/sql/updates/world/2011_07_15_03_world_creature_template.sql b/sql/updates/world/2011_07_15_03_world_creature_template.sql
new file mode 100644
index 00000000000..353dab27424
--- /dev/null
+++ b/sql/updates/world/2011_07_15_03_world_creature_template.sql
@@ -0,0 +1,54 @@
+-- TODO: this list of vehicles isn't complete, need to find more vehicles with missing immunities
+UPDATE `creature_template` SET `mechanic_immune_mask` = `mechanic_immune_mask` |
+0x00000002| -- MECHANIC_DISORIENTED (Blind)
+0x00000004| -- MECHANIC_DISARM (Disarm)
+0x00000008| -- MECHANIC_DISTRACT (Distract)
+0x00000010| -- MECHANIC_FEAR (Fear, Psychic Scream)
+0x00000020| -- MECHANIC_GRIP (Death Grip)
+0x00000040| -- MECHANIC_ROOT (Entangling Roots)
+0x00000100| -- MECHANIC_SILENCE (Silence)
+0x00000200| -- MECHANIC_SLEEP (Wyvern Sting)
+0x00000400| -- MECHANIC_SNARE (Crippling Poison, Piercing Howl)
+0x00000800| -- MECHANIC_STUN (Hammer of Justice)
+0x00001000| -- MECHANIC_FREEZE (Freezing Trap)
+0x00002000| -- MECHANIC_KNOUCKOUT (Gouge, Blast Wave)
+-- 0x00004000| -- MECHANIC_BLEED (Rend, Deep Wounds) - requires confirmation
+0x00010000| -- MECHANIC_POLYMORPH (Polymorph)
+0x00040000| -- MECHANIC_SHIELD (Power word: Shield)
+-- 0x00200000| -- MECHANIC_INFECTED (Frost Fever, Blood Plague) - requires confirmation
+0x00800000| -- MECHANIC_HORROR (warlock's Death Coil)
+0x10000000| -- MECHANIC_IMMUNE_SHIELD (Hand of Protection)
+0x02000000| -- MECHANIC_INTERRUPT (Kick, Counterspell)
+0x04000000 -- MECHANIC_DAZE (Dazed)
+where entry IN (
+-- Some random quest vehicles
+25334, -- Horde Siege Tank
+26523, -- Forsaken Blight Spreader
+-- Strand of the Ancients vehicles
+28781, -- Battleground Demolisher
+27894, -- Antipersonnel Cannon
+-- Wintergrasp vehicles
+27881, -- Wintergrasp Catapult (both)
+28094, -- Wintergrasp Demolisher (both)
+28312, -- Wintergrasp Siege Engine (alliance)
+28319, -- Wintergrasp Siege Turret (alliance)
+28366, -- Wintergrasp Tower Cannon (both)
+32627, -- Wintergrasp Siege Engine (horde)
+32629, -- Wintergrasp Siege Turret (alliance)
+-- Ulduar Vehicles
+33060, -- Salvaged Siege Engine
+33062, -- Salvaged Chopper
+33067, -- Salvaged Siege Turret
+33109, -- Salvaged Demolisher
+-- Isle of Conquest vehicles
+34793, -- Catapult (both)
+34775, -- Demolisher (both)
+34776, -- Siege Engine (alliance)
+34777, -- Siege Turret (alliance)
+34778, -- Flame Turret (alliance)
+34802, -- Glaive Thrower (alliance)
+34944, -- Keep Cannon (both)
+35069, -- Siege Engine (horde)
+35273, -- Glaive Thrower (horde)
+36355, -- Siege Turret (horde)
+36356); -- Flame Turret (horde)
diff --git a/src/server/game/Entities/Vehicle/Vehicle.cpp b/src/server/game/Entities/Vehicle/Vehicle.cpp
index d93d51cf9da..fedebb45cb0 100755
--- a/src/server/game/Entities/Vehicle/Vehicle.cpp
+++ b/src/server/game/Entities/Vehicle/Vehicle.cpp
@@ -137,21 +137,11 @@ void Vehicle::Reset(bool evading /*= false*/)
void Vehicle::ApplyAllImmunities()
{
- // This couldn't be done in DB, because Vehicle's immunities are overriden by Player's ones
+ // This couldn't be done in DB, because some spells have MECHANIC_NONE
- // Vehicles should be immune on Knockback, Deathgrip ...
+ // Vehicles should be immune on Knockback ...
_me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
_me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK_DEST, true);
- _me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_GRIP, true);
-
- // ... Fear, Snare, Root, Stun ...
- _me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_FEAR, true);
- _me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_SNARE, true);
- _me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_ROOT, true);
- _me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_STUN, true);
- _me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_STUN, true);
- _me->ApplySpellImmune(0, IMMUNITY_MECHANIC, MECHANIC_DISORIENTED, true);
- _me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_CONFUSE, true);
// Mechanical units & vehicles ( which are not Bosses, they have own immunities in DB ) should be also immune on healing ( exceptions in switch below )
if (_me->ToCreature() && _me->ToCreature()->GetCreatureInfo()->type == CREATURE_TYPE_MECHANICAL && !_me->ToCreature()->isWorldBoss())