Scripts/DrakTharonKeep: add some spellscripts, add yells to novos, and do some cosmetic changes

This commit is contained in:
joschiwald
2013-08-07 17:31:36 +02:00
parent f4815fbf80
commit 0667e89005
16 changed files with 350 additions and 126 deletions

View File

@@ -0,0 +1,48 @@
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 and `SourceEntry` IN (49555,59807,49618,59809,49405,49380,59803);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
(13,1,49555,0,0,31,0,3,27709,0,0,0,0,'','Trollgore - Corpse Explode'),
(13,1,49555,0,1,31,0,3,27753,0,0,0,0,'','Trollgore - Corpse Explode'),
(13,1,49555,0,2,31,0,3,27754,0,0,0,0,'','Trollgore - Corpse Explode'),
(13,1,59807,0,0,31,0,3,27709,0,0,0,0,'','Trollgore - Corpse Explode'),
(13,1,59807,0,1,31,0,3,27753,0,0,0,0,'','Trollgore - Corpse Explode'),
(13,1,59807,0,2,31,0,3,27754,0,0,0,0,'','Trollgore - Corpse Explode'),
(13,1,49618,0,0,31,0,3,27709,0,0,0,0,'','Trollgore - Corpse Explode Damage'),
(13,1,49618,0,1,31,0,3,27753,0,0,0,0,'','Trollgore - Corpse Explode Damage'),
(13,1,49618,0,2,31,0,3,27754,0,0,0,0,'','Trollgore - Corpse Explode Damage'),
(13,1,49618,0,3,31,0,4,0,0,0,0,0,'','Trollgore - Corpse Explode Damage'),
(13,1,59809,0,0,31,0,3,27709,0,0,0,0,'','Trollgore - Corpse Explode Damage'),
(13,1,59809,0,1,31,0,3,27753,0,0,0,0,'','Trollgore - Corpse Explode Damage'),
(13,1,59809,0,2,31,0,3,27754,0,0,0,0,'','Trollgore - Corpse Explode Damage'),
(13,1,59809,0,3,31,0,4,0,0,0,0,0,'','Trollgore - Corpse Explode Damage'),
(13,1,49405,0,0,31,0,3,26630,0,0,0,0,'','Trollgore - Invader Taunt Trigger'),
(13,3,49380,0,0,31,0,3,27709,0,0,0,0,'','Trollgore - Consume'),
(13,3,49380,0,1,31,0,3,27753,0,0,0,0,'','Trollgore - Consume'),
(13,3,49380,0,2,31,0,3,27754,0,0,0,0,'','Trollgore - Consume'),
(13,3,49380,0,3,31,0,4,0,0,0,0,0,'','Trollgore - Consume'),
(13,3,59803,0,0,31,0,3,27709,0,0,0,0,'','Trollgore - Consume'),
(13,3,59803,0,1,31,0,3,27753,0,0,0,0,'','Trollgore - Consume'),
(13,3,59803,0,2,31,0,3,27754,0,0,0,0,'','Trollgore - Consume'),
(13,3,59803,0,3,31,0,4,0,0,0,0,0,'','Trollgore - Consume');
DELETE FROM `spell_script_names` WHERE `spell_id` IN (49555,59807,49405,49380,59803,59910);
INSERT INTO `spell_script_names`(`spell_id`, `ScriptName`) VALUES
(49555,'spell_trollgore_corpse_explode'),
(59807,'spell_trollgore_corpse_explode'),
(49405,'spell_trollgore_invader_taunt'),
(49380,'spell_trollgore_consume'),
(59803,'spell_trollgore_consume'),
(59910,'spell_novos_summon_minions');
DELETE FROM `creature_text` WHERE `entry`=26631 AND `groupid`=5;
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES
(26631, 5, 0, '%s calls for assistance!', 41, 0, 100, 0, 0, 0, 'Novos the Summoner - EMOTE_SUMMONING_ADDS');
DELETE FROM `spelldifficulty_dbc` WHERE `id`=49618;
INSERT INTO `spelldifficulty_dbc` (`id`, `spellid0`, `spellid1`) VALUES
(49618, 49618, 59809);

View File

@@ -50,7 +50,7 @@ class spell_ex_5581 : public SpellScriptLoader
// function called on server startup
// checks if script has data required for it to work
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
// check if spellid 70522 exists in dbc, we will trigger it later
if (!sSpellMgr->GetSpellInfo(SPELL_TRIGGERED))
@@ -208,7 +208,7 @@ class spell_ex_66244 : public SpellScriptLoader
PrepareAuraScript(spell_ex_66244AuraScript);
// function called on server startup
// checks if script has data required for it to work
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
// check if spellid exists in dbc, we will trigger it later
if (!sSpellMgr->GetSpellInfo(SPELL_TRIGGERED))

View File

@@ -448,7 +448,8 @@ class spell_mount_check : public SpellScriptLoader
class spell_mount_check_AuraScript : public AuraScript
{
PrepareAuraScript(spell_mount_check_AuraScript)
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_MOUNTING_CHECK))
return false;
@@ -495,7 +496,8 @@ class spell_voljin_war_drums : public SpellScriptLoader
class spell_voljin_war_drums_SpellScript : public SpellScript
{
PrepareSpellScript(spell_voljin_war_drums_SpellScript)
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_MOTIVATE_1))
return false;
@@ -552,7 +554,7 @@ class spell_voodoo : public SpellScriptLoader
{
PrepareSpellScript(spell_voodoo_SpellScript)
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_BREW) || !sSpellMgr->GetSpellInfo(SPELL_GHOSTLY) ||
!sSpellMgr->GetSpellInfo(SPELL_HEX1) || !sSpellMgr->GetSpellInfo(SPELL_HEX2) ||

View File

@@ -612,7 +612,7 @@ class spell_ooze_zap : public SpellScriptLoader
{
PrepareSpellScript(spell_ooze_zap_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_OOZE_ZAP))
return false;
@@ -659,7 +659,7 @@ class spell_ooze_zap_channel_end : public SpellScriptLoader
{
PrepareSpellScript(spell_ooze_zap_channel_end_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_OOZE_ZAP_CHANNEL_END))
return false;
@@ -695,7 +695,7 @@ class spell_energize_aoe : public SpellScriptLoader
{
PrepareSpellScript(spell_energize_aoe_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_ENERGIZED))
return false;

View File

@@ -2312,7 +2312,7 @@ class spell_toc_bloodlust : public SpellScriptLoader
{
PrepareSpellScript(spell_toc_bloodlust_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(AURA_SATED))
return false;
@@ -2353,7 +2353,7 @@ class spell_toc_heroism : public SpellScriptLoader
{
PrepareSpellScript(spell_toc_heroism_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(AURA_EXHAUSTION))
return false;

View File

@@ -20,21 +20,14 @@
#include "ScriptedCreature.h"
#include "drak_tharon_keep.h"
enum Misc
enum Yells
{
ACTION_RESET_CRYSTALS,
ACTION_ACTIVATE_CRYSTAL,
ACTION_DEACTIVATE,
EVENT_ATTACK,
EVENT_SUMMON_MINIONS,
DATA_NOVOS_ACHIEV
};
enum Creatures
{
NPC_FETID_TROLL_CORPSE = 27598,
NPC_RISEN_SHADOWCASTER = 27600,
NPC_HULKING_CORPSE = 27597
SAY_AGGRO = 0,
SAY_KILL = 1,
SAY_DEATH = 2,
SAY_SUMMONING_ADDS = 3, // unused
SAY_ARCANE_FIELD = 4,
EMOTE_SUMMONING_ADDS = 5 // unused
};
enum Spells
@@ -46,6 +39,7 @@ enum Spells
SPELL_SUMMON_FETID_TROLL_CORPSE = 49103,
SPELL_SUMMON_HULKING_CORPSE = 49104,
SPELL_SUMMON_CRYSTAL_HANDLER = 49179,
SPELL_SUMMON_COPY_OF_MINIONS = 59933,
SPELL_ARCANE_BLAST = 49198,
SPELL_BLIZZARD = 49034,
@@ -54,6 +48,16 @@ enum Spells
SPELL_SUMMON_MINIONS = 59910
};
enum Misc
{
ACTION_RESET_CRYSTALS,
ACTION_ACTIVATE_CRYSTAL,
ACTION_DEACTIVATE,
EVENT_ATTACK,
EVENT_SUMMON_MINIONS,
DATA_NOVOS_ACHIEV
};
struct SummonerInfo
{
uint32 data, spell, timer;
@@ -92,6 +96,7 @@ public:
void EnterCombat(Unit* /* victim */) OVERRIDE
{
_EnterCombat();
Talk(SAY_AGGRO);
SetCrystalsStatus(true);
SetSummonerStatus(true);
@@ -107,6 +112,18 @@ public:
DoStartNoMovement(target);
}
void KilledUnit(Unit* who) OVERRIDE
{
if (who->GetTypeId() == TYPEID_PLAYER)
Talk(SAY_KILL);
}
void JustDied(Unit* killer) OVERRIDE
{
_JustDied();
Talk(SAY_DEATH);
}
void UpdateAI(uint32 diff) OVERRIDE
{
if (!UpdateVictim() || _bubbled)
@@ -210,9 +227,6 @@ public:
void SetCrystalStatus(GameObject* crystal, bool active)
{
if (!crystal)
return;
crystal->SetGoState(active ? GO_STATE_ACTIVE : GO_STATE_READY);
if (Creature* crystalChannelTarget = crystal->FindNearestCreature(NPC_CRYSTAL_CHANNEL_TARGET, 5.0f))
{
@@ -236,6 +250,7 @@ public:
if (++_crystalHandlerCount >= 4)
{
Talk(SAY_ARCANE_FIELD);
SetSummonerStatus(false);
SetBubbled(false);
events.ScheduleEvent(EVENT_ATTACK, 3000);
@@ -332,42 +347,44 @@ public:
}
};
enum SummonMinions
class spell_novos_summon_minions : public SpellScriptLoader
{
SPELL_COPY_OF_SUMMON_MINIONS = 59933
};
public:
spell_novos_summon_minions() : SpellScriptLoader("spell_novos_summon_minions") { }
class spell_summon_minions : public SpellScriptLoader
{
public:
spell_summon_minions() : SpellScriptLoader("spell_summon_minions") { }
class spell_summon_minions_SpellScript : public SpellScript
{
PrepareSpellScript(spell_summon_minions_SpellScript);
void HandleScript(SpellEffIndex /*effIndex*/)
class spell_novos_summon_minions_SpellScript : public SpellScript
{
GetCaster()->CastSpell((Unit*)NULL, SPELL_COPY_OF_SUMMON_MINIONS, true);
GetCaster()->CastSpell((Unit*)NULL, SPELL_COPY_OF_SUMMON_MINIONS, true);
}
PrepareSpellScript(spell_novos_summon_minions_SpellScript);
void Register() OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_COPY_OF_MINIONS))
return false;
return true;
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
for (uint8 i = 0; i < 2; ++i)
GetCaster()->CastSpell((Unit*)NULL, SPELL_SUMMON_COPY_OF_MINIONS, true);
}
void Register() OVERRIDE
{
OnEffectHitTarget += SpellEffectFn(spell_novos_summon_minions_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const OVERRIDE
{
OnEffectHitTarget += SpellEffectFn(spell_summon_minions_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
return new spell_novos_summon_minions_SpellScript();
}
};
SpellScript* GetSpellScript() const OVERRIDE
{
return new spell_summon_minions_SpellScript();
}
};
void AddSC_boss_novos()
{
new boss_novos();
new npc_crystal_channel_target();
new spell_summon_minions();
new spell_novos_summon_minions();
new achievement_oh_novos();
}

View File

@@ -26,35 +26,36 @@
enum Spells
{
SPELL_INFECTED_WOUND = 49637,
SPELL_CRUSH = 49639,
SPELL_CORPSE_EXPLODE = 49555,
SPELL_CONSUME = 49380,
SPELL_CONSUME_AURA = 49381,
// Heroic spells
H_SPELL_CORPSE_EXPLODE = 59807,
H_SPELL_CONSUME = 59803,
H_SPELL_CONSUME_AURA = 59805,
SPELL_INFECTED_WOUND = 49637,
SPELL_CRUSH = 49639,
SPELL_CORPSE_EXPLODE = 49555,
SPELL_CORPSE_EXPLODE_DAMAGE = 49618,
SPELL_CONSUME = 49380,
SPELL_CONSUME_BUFF = 49381,
SPELL_CONSUME_BUFF_H = 59805,
SPELL_SUMMON_INVADER_A = 49456,
SPELL_SUMMON_INVADER_B = 49457,
//SPELL_SUMMON_INVADER_C = 49458, // can't find any sniffs
H_SPELL_CORPSE_EXPLODE = 59807,
H_SPELL_CONSUME = 59803,
};
#define SPELL_CONSUME_BUFF_HELPER DUNGEON_MODE<uint32>(SPELL_CONSUME_BUFF, SPELL_CONSUME_BUFF_H)
enum Yells
{
SAY_AGGRO = 0,
SAY_KILL = 1,
SAY_CONSUME = 2,
SAY_EXPLODE = 3,
SAY_DEATH = 4
};
enum Creatures
{
NPC_DRAKKARI_INVADER_1 = 27753,
NPC_DRAKKARI_INVADER_2 = 27709
SAY_AGGRO = 0,
SAY_KILL = 1,
SAY_CONSUME = 2,
SAY_EXPLODE = 3,
SAY_DEATH = 4
};
enum Misc
{
DATA_CONSUMPTION_JUNCTION = 1
DATA_CONSUMPTION_JUNCTION = 1
};
Position AddSpawnPoint = { -260.493011f, -622.968018f, 26.605301f, 3.036870f };
@@ -97,9 +98,9 @@ public:
lSummons.DespawnAll();
me->RemoveAura(DUNGEON_MODE(SPELL_CONSUME_AURA, H_SPELL_CONSUME_AURA));
me->RemoveAura(SPELL_CONSUME_BUFF_HELPER);
instance->SetData(DATA_TROLLGORE, NOT_STARTED);
instance->SetBossState(DATA_TROLLGORE, NOT_STARTED);
}
void EnterCombat(Unit* /*who*/) OVERRIDE
@@ -118,7 +119,7 @@ public:
{
uint32 spawnNumber = urand(2, DUNGEON_MODE(3, 5));
for (uint8 i = 0; i < spawnNumber; ++i)
DoSummon(RAND(NPC_DRAKKARI_INVADER_1, NPC_DRAKKARI_INVADER_2), AddSpawnPoint, 0, TEMPSUMMON_DEAD_DESPAWN);
DoSummon(RAND(NPC_DRAKKARI_INVADER_A, NPC_DRAKKARI_INVADER_B), AddSpawnPoint, 0, TEMPSUMMON_DEAD_DESPAWN);
uiSpawnTimer = urand(30*IN_MILLISECONDS, 40*IN_MILLISECONDS);
} else uiSpawnTimer -= diff;
@@ -131,7 +132,7 @@ public:
if (consumptionJunction)
{
Aura* ConsumeAura = me->GetAura(DUNGEON_MODE(SPELL_CONSUME_AURA, H_SPELL_CONSUME_AURA));
Aura* ConsumeAura = me->GetAura(SPELL_CONSUME_BUFF_HELPER);
if (ConsumeAura && ConsumeAura->GetStackAmount() > 9)
consumptionJunction = false;
}
@@ -197,6 +198,119 @@ public:
}
};
// 49380, 59803 - Consume
class spell_trollgore_consume : public SpellScriptLoader
{
public:
spell_trollgore_consume() : SpellScriptLoader("spell_trollgore_consume") { }
class spell_trollgore_consume_SpellScript : public SpellScript
{
PrepareSpellScript(spell_trollgore_consume_SpellScript);
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_CONSUME_BUFF))
return false;
return true;
}
void HandleConsume(SpellEffIndex /*effIndex*/)
{
if (Unit* target = GetHitUnit())
target->CastSpell(GetCaster(), SPELL_CONSUME_BUFF, true);
}
void Register() OVERRIDE
{
OnEffectHitTarget += SpellEffectFn(spell_trollgore_consume_SpellScript::HandleConsume, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const OVERRIDE
{
return new spell_trollgore_consume_SpellScript();
}
};
// 49555, 59807 - Corpse Explode
class spell_trollgore_corpse_explode : public SpellScriptLoader
{
public:
spell_trollgore_corpse_explode() : SpellScriptLoader("spell_trollgore_corpse_explode") { }
class spell_trollgore_corpse_explode_AuraScript : public AuraScript
{
PrepareAuraScript(spell_trollgore_corpse_explode_AuraScript);
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_CORPSE_EXPLODE_DAMAGE))
return false;
return true;
}
void PeriodicTick(AuraEffect const* aurEff)
{
if (aurEff->GetTickNumber() == 2)
if (Unit* caster = GetCaster())
caster->CastSpell(GetTarget(), SPELL_CORPSE_EXPLODE_DAMAGE, true, NULL, aurEff);
}
void HandleRemove(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/)
{
if (Creature* target = GetTarget()->ToCreature())
target->DespawnOrUnsummon();
}
void Register() OVERRIDE
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_trollgore_corpse_explode_AuraScript::PeriodicTick, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
AfterEffectRemove += AuraEffectRemoveFn(spell_trollgore_corpse_explode_AuraScript::HandleRemove, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const OVERRIDE
{
return new spell_trollgore_corpse_explode_AuraScript();
}
};
// 49405 - Invader Taunt Trigger
class spell_trollgore_invader_taunt : public SpellScriptLoader
{
public:
spell_trollgore_invader_taunt() : SpellScriptLoader("spell_trollgore_invader_taunt") { }
class spell_trollgore_invader_taunt_SpellScript : public SpellScript
{
PrepareSpellScript(spell_trollgore_invader_taunt_SpellScript);
bool Validate(SpellInfo const* spellInfo) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_0].CalcValue()))
return false;
return true;
}
void HandleTaunt(SpellEffIndex /*effIndex*/)
{
if (Unit* target = GetHitUnit())
target->CastSpell(GetCaster(), uint32(GetEffectValue()), true);
}
void Register() OVERRIDE
{
OnEffectHitTarget += SpellEffectFn(spell_trollgore_invader_taunt_SpellScript::HandleTaunt, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
SpellScript* GetSpellScript() const OVERRIDE
{
return new spell_trollgore_invader_taunt_SpellScript();
}
};
class achievement_consumption_junction : public AchievementCriteriaScript
{
public:
@@ -220,5 +334,8 @@ class achievement_consumption_junction : public AchievementCriteriaScript
void AddSC_boss_trollgore()
{
new boss_trollgore();
new spell_trollgore_consume();
new spell_trollgore_corpse_explode();
new spell_trollgore_invader_taunt();
new achievement_consumption_junction();
}

View File

@@ -36,6 +36,10 @@ enum DataTypes
// Additional data
//DATA_KING_DRED_ACHIEV,
DATA_TROLLGORE_INVADER_SUMMONER_1,
DATA_TROLLGORE_INVADER_SUMMONER_2,
DATA_TROLLGORE_INVADER_SUMMONER_3,
DATA_NOVOS_CRYSTAL_1,
DATA_NOVOS_CRYSTAL_2,
DATA_NOVOS_CRYSTAL_3,
@@ -55,13 +59,23 @@ enum CreatureIds
NPC_KING_DRED = 27483,
NPC_THARON_JA = 26632,
// Trollgore
NPC_DRAKKARI_INVADER_A = 27709,
NPC_DRAKKARI_INVADER_B = 27753,
NPC_DRAKKARI_INVADER_C = 27754,
// Novos
NPC_CRYSTAL_CHANNEL_TARGET = 26712,
NPC_CRYSTAL_HANDLER = 26627,
NPC_HULKING_CORPSE = 27597,
NPC_FETID_TROLL_CORPSE = 27598,
NPC_RISEN_SHADOWCASTER = 27600,
// King Dred
NPC_DRAKKARI_GUTRIPPER = 26641,
NPC_DRAKKARI_SCYTHECLAW = 26628
NPC_DRAKKARI_SCYTHECLAW = 26628,
NPC_WORLD_TRIGGER = 22515
};
enum GameObjectIds

View File

@@ -36,11 +36,12 @@ class instance_drak_tharon_keep : public InstanceMapScript
KingDredGUID = 0;
TharonJaGUID = 0;
memset(TrollgoreInvaderSummonerGuids, 0, 4 * sizeof(uint64));
memset(NovosCrystalGUIDs, 0, 4 * sizeof(uint64));
memset(NovosSummonerGUIDs, 0, 4 * sizeof(uint64));
}
void OnCreatureCreate(Creature* creature)
void OnCreatureCreate(Creature* creature) OVERRIDE
{
switch (creature->GetEntry())
{
@@ -56,6 +57,9 @@ class instance_drak_tharon_keep : public InstanceMapScript
case NPC_THARON_JA:
TharonJaGUID = creature->GetGUID();
break;
case NPC_WORLD_TRIGGER:
InitializeTrollgoreInvaderSummoner(creature);
break;
case NPC_CRYSTAL_CHANNEL_TARGET:
InitializeNovosSummoner(creature);
break;
@@ -64,31 +68,43 @@ class instance_drak_tharon_keep : public InstanceMapScript
}
}
void OnGameObjectCreate(GameObject* go)
void OnGameObjectCreate(GameObject* go) OVERRIDE
{
switch (go->GetEntry())
{
case GO_NOVOS_CRYSTAL_1:
NovosCrystalGUIDs[0] = go->GetGUID();
go->SetGoState(GO_STATE_READY);
break;
case GO_NOVOS_CRYSTAL_2:
NovosCrystalGUIDs[1] = go->GetGUID();
go->SetGoState(GO_STATE_READY);
break;
case GO_NOVOS_CRYSTAL_3:
NovosCrystalGUIDs[2] = go->GetGUID();
go->SetGoState(GO_STATE_READY);
break;
case GO_NOVOS_CRYSTAL_4:
NovosCrystalGUIDs[3] = go->GetGUID();
go->SetGoState(GO_STATE_READY);
break;
default:
break;
}
}
void InitializeTrollgoreInvaderSummoner(Creature* creature)
{
float y = creature->GetPositionY();
float z = creature->GetPositionZ();
if (z < 50.0f)
return;
if (y < -650.0f && y > -660.0f)
TrollgoreInvaderSummonerGuids[0] = creature->GetGUID();
else if (y < -660.0f && y > -670.0f)
TrollgoreInvaderSummonerGuids[1] = creature->GetGUID();
else if (y < -675.0f && y > -685.0f)
TrollgoreInvaderSummonerGuids[2] = creature->GetGUID();
}
void InitializeNovosSummoner(Creature* creature)
{
float x = creature->GetPositionX();
@@ -117,6 +133,10 @@ class instance_drak_tharon_keep : public InstanceMapScript
return KingDredGUID;
case DATA_THARON_JA:
return TharonJaGUID;
case DATA_TROLLGORE_INVADER_SUMMONER_1:
case DATA_TROLLGORE_INVADER_SUMMONER_2:
case DATA_TROLLGORE_INVADER_SUMMONER_3:
return TrollgoreInvaderSummonerGuids[type - DATA_TROLLGORE_INVADER_SUMMONER_1];
case DATA_NOVOS_CRYSTAL_1:
case DATA_NOVOS_CRYSTAL_2:
case DATA_NOVOS_CRYSTAL_3:
@@ -132,14 +152,14 @@ class instance_drak_tharon_keep : public InstanceMapScript
return 0;
}
void OnUnitDeath(Unit* unit)
void OnUnitDeath(Unit* unit) OVERRIDE
{
if (unit->GetEntry() == NPC_CRYSTAL_HANDLER)
if (Creature* novos = instance->GetCreature(NovosGUID))
novos->AI()->DoAction(ACTION_CRYSTAL_HANDLER_DIED);
}
std::string GetSaveData()
std::string GetSaveData() OVERRIDE
{
OUT_SAVE_INST_DATA;
@@ -150,7 +170,7 @@ class instance_drak_tharon_keep : public InstanceMapScript
return saveStream.str();
}
void Load(char const* str)
void Load(char const* str) OVERRIDE
{
if (!str)
{
@@ -188,6 +208,7 @@ class instance_drak_tharon_keep : public InstanceMapScript
uint64 KingDredGUID;
uint64 TharonJaGUID;
uint64 TrollgoreInvaderSummonerGuids[3];
uint64 NovosCrystalGUIDs[4];
uint64 NovosSummonerGUIDs[4];
};

View File

@@ -432,11 +432,10 @@ class spell_ignis_slag_pot : public SpellScriptLoader
{
PrepareAuraScript(spell_ignis_slag_pot_AuraScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_SLAG_POT_DAMAGE))
return false;
if (!sSpellMgr->GetSpellInfo(SPELL_SLAG_IMBUED))
if (!sSpellMgr->GetSpellInfo(SPELL_SLAG_POT_DAMAGE)
|| !sSpellMgr->GetSpellInfo(SPELL_SLAG_IMBUED))
return false;
return true;
}

View File

@@ -163,6 +163,7 @@ enum TickingTimeBomb
{
SPELL_TICKING_TIME_BOMB_EXPLODE = 59687
};
class spell_ticking_time_bomb : public SpellScriptLoader
{
public:
@@ -172,9 +173,11 @@ class spell_ticking_time_bomb : public SpellScriptLoader
{
PrepareAuraScript(spell_ticking_time_bomb_AuraScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
return (bool) sSpellMgr->GetSpellInfo(SPELL_TICKING_TIME_BOMB_EXPLODE);
if (!sSpellMgr->GetSpellInfo(SPELL_TICKING_TIME_BOMB_EXPLODE))
return false;
return true;
}
void HandleOnEffectRemove(AuraEffect const* /* aurEff */, AuraEffectHandleModes /* mode */)
@@ -210,9 +213,11 @@ class spell_fixate : public SpellScriptLoader
{
PrepareSpellScript(spell_fixate_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
return (bool) sSpellMgr->GetSpellInfo(SPELL_FIXATE_TRIGGER);
if (!sSpellMgr->GetSpellInfo(SPELL_FIXATE_TRIGGER))
return false;
return true;
}
void HandleScriptEffect(SpellEffIndex /*effIndex*/)

View File

@@ -1609,7 +1609,7 @@ class spell_random_ingredient_aura : public SpellScriptLoader
{
PrepareAuraScript(spell_random_ingredient_aura_AuraScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_EASY) || !sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_MEDIUM) || !sSpellMgr->GetSpellInfo(SPELL_RANDOM_INGREDIENT_HARD))
return false;
@@ -1656,7 +1656,7 @@ class spell_random_ingredient : public SpellScriptLoader
{
PrepareSpellScript(spell_random_ingredient_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_FETCH_KNOTROOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PICKLED_EAGLE_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPECKLED_GUANO) ||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_WITHERED_BATWING) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SEASONED_SLIDER_CIDER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH) ||
@@ -1720,7 +1720,7 @@ class spell_pot_check : public SpellScriptLoader
{
PrepareSpellScript(spell_pot_check_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_FETCH_KNOTROOT) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PICKLED_EAGLE_EGG) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SPECKLED_GUANO) ||
!sSpellMgr->GetSpellInfo(SPELL_FETCH_WITHERED_BATWING) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_SEASONED_SLIDER_CIDER) || !sSpellMgr->GetSpellInfo(SPELL_FETCH_PULVERIZED_GARGOYLE_TEETH) ||

View File

@@ -903,7 +903,7 @@ public:
{
PrepareAuraScript(spell_boss_lady_malande_shield_AuraScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
return sSpellMgr->GetSpellInfo(SPELL_REFLECTIVE_SHIELD_T);
}

View File

@@ -519,7 +519,7 @@ class spell_astromancer_wrath_of_the_astromancer : public SpellScriptLoader
{
PrepareAuraScript(spell_astromancer_wrath_of_the_astromancer_AuraScript);
bool Validate(SpellInfo const* /*SpellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_WRATH_OF_THE_ASTROMANCER_DOT))
return false;

View File

@@ -619,7 +619,7 @@ class spell_gen_cannibalize : public SpellScriptLoader
{
PrepareSpellScript(spell_gen_cannibalize_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_CANNIBALIZE_TRIGGERED))
return false;
@@ -672,7 +672,7 @@ class spell_gen_chaos_blast : public SpellScriptLoader
{
PrepareSpellScript(spell_gen_chaos_blast_SpellScript)
bool Validate(SpellInfo const* /*SpellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_CHAOS_BLAST))
return false;
@@ -779,7 +779,7 @@ class spell_gen_clone_weapon_aura : public SpellScriptLoader
uint32 prevItem;
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_COPY_WEAPON_AURA) ||
!sSpellMgr->GetSpellInfo(SPELL_COPY_WEAPON_2_AURA) ||
@@ -1021,9 +1021,10 @@ class spell_gen_dalaran_disguise : public SpellScriptLoader
class spell_gen_dalaran_disguise_SpellScript : public SpellScript
{
PrepareSpellScript(spell_gen_dalaran_disguise_SpellScript);
bool Validate(SpellInfo const* spellEntry) OVERRIDE
bool Validate(SpellInfo const* spellInfo) OVERRIDE
{
switch (spellEntry->Id)
switch (spellInfo->Id)
{
case SPELL_SUNREAVER_DISGUISE_TRIGGER:
if (!sSpellMgr->GetSpellInfo(SPELL_SUNREAVER_DISGUISE_FEMALE) ||
@@ -1093,7 +1094,7 @@ class spell_gen_damage_reduction_aura : public SpellScriptLoader
{
PrepareAuraScript(spell_gen_damage_reduction_AuraScript);
bool Validate(SpellInfo const* /*SpellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_DAMAGE_REDUCTION_AURA))
return false;
@@ -1148,7 +1149,7 @@ class spell_gen_defend : public SpellScriptLoader
{
PrepareAuraScript(spell_gen_defend_AuraScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_VISUAL_SHIELD_1))
return false;
@@ -1270,7 +1271,7 @@ class spell_gen_divine_storm_cd_reset : public SpellScriptLoader
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_DIVINE_STORM))
return false;
@@ -1348,7 +1349,7 @@ class spell_gen_dummy_trigger : public SpellScriptLoader
{
PrepareSpellScript(spell_gen_dummy_trigger_SpellScript);
bool Validate(SpellInfo const* /*SpellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_PERSISTANT_SHIELD_TRIGGERED) ||
!sSpellMgr->GetSpellInfo(SPELL_PERSISTANT_SHIELD))
@@ -1441,7 +1442,7 @@ class spell_gen_elune_candle : public SpellScriptLoader
class spell_gen_elune_candle_SpellScript : public SpellScript
{
PrepareSpellScript(spell_gen_elune_candle_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_ELUNE_CANDLE_OMEN_HEAD) ||
!sSpellMgr->GetSpellInfo(SPELL_ELUNE_CANDLE_OMEN_CHEST) ||
@@ -1508,7 +1509,7 @@ class spell_gen_gadgetzan_transporter_backfire : public SpellScriptLoader
{
PrepareSpellScript(spell_gen_gadgetzan_transporter_backfire_SpellScript)
bool Validate(SpellInfo const* /*SpellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_TRANSPORTER_MALFUNCTION_POLYMORPH) ||
!sSpellMgr->GetSpellInfo(SPELL_TRANSPORTER_EVIL_TWIN) ||
@@ -1609,7 +1610,7 @@ class spell_gen_gnomish_transporter : public SpellScriptLoader
{
PrepareSpellScript(spell_gen_gnomish_transporter_SpellScript)
bool Validate(SpellInfo const* /*SpellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_TRANSPORTER_SUCCESS) ||
!sSpellMgr->GetSpellInfo(SPELL_TRANSPORTER_FAILURE))
@@ -3204,7 +3205,7 @@ class spell_gen_summon_tournament_mount : public SpellScriptLoader
{
PrepareSpellScript(spell_gen_summon_tournament_mount_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_LANCE_EQUIPPED))
return false;
@@ -3253,7 +3254,7 @@ class spell_gen_tournament_duel : public SpellScriptLoader
{
PrepareSpellScript(spell_gen_tournament_duel_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_ON_TOURNAMENT_MOUNT) ||
!sSpellMgr->GetSpellInfo(SPELL_MOUNTED_DUEL))
@@ -3345,7 +3346,7 @@ class spell_pvp_trinket_wotf_shared_cd : public SpellScriptLoader
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER) ||
!sSpellMgr->GetSpellInfo(SPELL_WILL_OF_THE_FORSAKEN_COOLDOWN_TRIGGER_WOTF))

View File

@@ -47,7 +47,7 @@ class spell_item_trigger_spell : public SpellScriptLoader
public:
spell_item_trigger_spell_SpellScript(uint32 triggeredSpellId) : SpellScript(), _triggeredSpellId(triggeredSpellId) { }
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(_triggeredSpellId))
return false;
@@ -322,7 +322,7 @@ class spell_item_deviate_fish : public SpellScriptLoader
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
for (uint32 spellId = SPELL_SLEEPY; spellId <= SPELL_HEALTHY_SPIRIT; ++spellId)
if (!sSpellMgr->GetSpellInfo(spellId))
@@ -367,7 +367,7 @@ class spell_item_flask_of_the_north : public SpellScriptLoader
{
PrepareSpellScript(spell_item_flask_of_the_north_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_FLASK_OF_THE_NORTH_SP) || !sSpellMgr->GetSpellInfo(SPELL_FLASK_OF_THE_NORTH_AP) || !sSpellMgr->GetSpellInfo(SPELL_FLASK_OF_THE_NORTH_STR))
return false;
@@ -436,7 +436,7 @@ class spell_item_gnomish_death_ray : public SpellScriptLoader
{
PrepareSpellScript(spell_item_gnomish_death_ray_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_GNOMISH_DEATH_RAY_SELF) || !sSpellMgr->GetSpellInfo(SPELL_GNOMISH_DEATH_RAY_TARGET))
return false;
@@ -492,7 +492,7 @@ class spell_item_make_a_wish : public SpellScriptLoader
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_MR_PINCHYS_BLESSING) || !sSpellMgr->GetSpellInfo(SPELL_SUMMON_MIGHTY_MR_PINCHY) || !sSpellMgr->GetSpellInfo(SPELL_SUMMON_FURIOUS_MR_PINCHY) || !sSpellMgr->GetSpellInfo(SPELL_TINY_MAGICAL_CRAWDAD) || !sSpellMgr->GetSpellInfo(SPELL_MR_PINCHYS_GIFT))
return false;
@@ -646,7 +646,7 @@ class spell_item_net_o_matic : public SpellScriptLoader
{
PrepareSpellScript(spell_item_net_o_matic_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_NET_O_MATIC_TRIGGERED1) || !sSpellMgr->GetSpellInfo(SPELL_NET_O_MATIC_TRIGGERED2) || !sSpellMgr->GetSpellInfo(SPELL_NET_O_MATIC_TRIGGERED3))
return false;
@@ -703,7 +703,7 @@ class spell_item_noggenfogger_elixir : public SpellScriptLoader
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_NOGGENFOGGER_ELIXIR_TRIGGERED1) || !sSpellMgr->GetSpellInfo(SPELL_NOGGENFOGGER_ELIXIR_TRIGGERED2) || !sSpellMgr->GetSpellInfo(SPELL_NOGGENFOGGER_ELIXIR_TRIGGERED3))
return false;
@@ -788,7 +788,7 @@ class spell_item_savory_deviate_delight : public SpellScriptLoader
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
for (uint32 spellId = SPELL_FLIP_OUT_MALE; spellId <= SPELL_YAAARRRR_FEMALE; ++spellId)
if (!sSpellMgr->GetSpellInfo(spellId))
@@ -1112,7 +1112,7 @@ class spell_item_six_demon_bag : public SpellScriptLoader
{
PrepareSpellScript(spell_item_six_demon_bag_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_FROSTBOLT) || !sSpellMgr->GetSpellInfo(SPELL_POLYMORPH) || !sSpellMgr->GetSpellInfo(SPELL_SUMMON_FELHOUND_MINION) || !sSpellMgr->GetSpellInfo(SPELL_FIREBALL) || !sSpellMgr->GetSpellInfo(SPELL_CHAIN_LIGHTNING) || !sSpellMgr->GetSpellInfo(SPELL_ENVELOPING_WINDS))
return false;
@@ -1213,7 +1213,7 @@ class spell_item_underbelly_elixir : public SpellScriptLoader
{
return GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_UNDERBELLY_ELIXIR_TRIGGERED1) || !sSpellMgr->GetSpellInfo(SPELL_UNDERBELLY_ELIXIR_TRIGGERED2) || !sSpellMgr->GetSpellInfo(SPELL_UNDERBELLY_ELIXIR_TRIGGERED3))
return false;
@@ -1491,7 +1491,7 @@ class spell_item_vanquished_clutches : public SpellScriptLoader
{
PrepareSpellScript(spell_item_vanquished_clutches_SpellScript);
bool Validate(SpellInfo const* /*spellEntry*/) OVERRIDE
bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
{
if (!sSpellMgr->GetSpellInfo(SPELL_CRUSHER) || !sSpellMgr->GetSpellInfo(SPELL_CONSTRICTOR) || !sSpellMgr->GetSpellInfo(SPELL_CORRUPTOR))
return false;