diff --git a/sql/updates/world/custom/custom_2019_03_05_01_world.sql b/sql/updates/world/custom/custom_2019_03_05_01_world.sql
new file mode 100644
index 00000000000..f930dd8db2f
--- /dev/null
+++ b/sql/updates/world/custom/custom_2019_03_05_01_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `conditions` WHERE `SourceEntry` IN (75365, 75378) AND `SourceTypeOrReferenceId`= 13;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ScriptName`, `Comment`) VALUES
+(13, 1, 75365, 0, 0, 31, 0, 3, 40406, 0, 0, 0, '', 'Consume - Target Tumultous Earthstorm');
diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
index e767a7dd632..6ad2b977fc8 100644
--- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
+++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_earthrager_ptah.cpp
@@ -15,9 +15,6 @@
* with this program. If not, see .
*/
-// To-do:
-// - Script "Sand Vortex", heroic mode ability.
-
#include "halls_of_origination.h"
#include "ScriptMgr.h"
#include "InstanceScript.h"
@@ -56,7 +53,7 @@ enum Events
EVENT_SUMMON_JEWELED_SCARAB,
// Tumultuous Earthstorm
- EVENT_START_MOVEMENT,
+ EVENT_START_MOVEMENT
};
enum Spells
@@ -88,6 +85,11 @@ enum Sounds
SOUND_PTAH_EARTHQUAKE = 18908
};
+enum Data
+{
+ DATA_LAST_CONSUME_TARGET = 0
+};
+
// 39428 Earthrager Ptah
class boss_earthrager_ptah : public CreatureScript
{
@@ -362,9 +364,9 @@ class npc_ptah_tumultuous_earthstorm : public CreatureScript
_guid = passenger->GetGUID();
}
- ObjectGuid GetLastPassengerGuid()
+ ObjectGuid GetGUID(int32 type) const override
{
- return _guid;
+ return (type == DATA_LAST_CONSUME_TARGET ? _guid : ObjectGuid::Empty);
}
void UpdateAI(uint32 diff) override
@@ -497,9 +499,7 @@ class ConsumeEntryCheck
bool operator()(WorldObject* object)
{
if (Unit* target = object->ToUnit())
- {
return target->movespline->isParabolic() || target->HasAura(SPELL_CONSUME_DAMAGE);
- }
return false;
}
@@ -512,18 +512,20 @@ class ConsumeKnockbackCheck
bool operator()(WorldObject* object)
{
- if (Unit* target = object->ToUnit())
+ Unit* target = object->ToUnit();
+ if (!target)
+ return true;
+
+ Creature* caster = _caster->ToCreature();
+ if (!caster)
+ return true;
+
+ if (caster->IsAIEnabled && target->GetTypeId() == TYPEID_PLAYER)
{
- if (Creature* caster = _caster->ToCreature())
- {
- if (!caster->IsAIEnabled)
- return true;
-
- ObjectGuid guid = CAST_AI(npc_ptah_tumultuous_earthstorm::npc_ptah_tumultuous_earthstormAI, caster->AI())->GetLastPassengerGuid();
-
- return target->GetGUID() != guid;
- }
+ ObjectGuid guid = caster->AI()->GetGUID(DATA_LAST_CONSUME_TARGET);
+ return target->GetGUID() != guid;
}
+
return false;
}
private:
@@ -540,17 +542,12 @@ class spell_earthrager_ptah_consume: public SpellScriptLoader
{
PrepareSpellScript(spell_earthrager_ptah_consume_SpellScript);
- bool Validate(SpellInfo const* /*spellInfo*/) override
- {
- return ValidateSpellInfo({ SPELL_CONSUME_DAMAGE });
- }
-
void FilterTargets(std::list& targets)
{
if (targets.empty())
return;
- targets.remove_if(Trinity::UnitAuraCheck(true, SPELL_CONSUME_DAMAGE));
+ targets.remove_if(ConsumeEntryCheck());
}
void FilterTargetsKnockback(std::list& targets)