Spell Scripts:
* moved some generic spell dummy effects to scripts * implemented two spell scripts for quests: 8913 Sacred Cleansing (Quest 55), 44936 Quest - Fel Siphon Dummy (Quest 11515). Closes issue #3040 * did some cleanup in spell scripts and added more comments --HG-- branch : trunk
This commit is contained in:
@@ -842,46 +842,6 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
|
||||
}
|
||||
return;
|
||||
}
|
||||
case 14537: // Six Demon Bag
|
||||
{
|
||||
if( !unitTarget || !unitTarget->isAlive()) return;
|
||||
|
||||
uint32 ClearSpellId[6] =
|
||||
{
|
||||
15662, // Fireball
|
||||
11538, // Frostball
|
||||
21179, // Chain Lightning
|
||||
14621, // Polymorph
|
||||
25189, // Enveloping Winds
|
||||
14642 // Summon Felhund minion
|
||||
};
|
||||
|
||||
uint32 effect = 0;
|
||||
uint32 rand = urand(0, 100);
|
||||
|
||||
if (rand < 25) // Fireball (25% chance)
|
||||
effect = ClearSpellId[0];
|
||||
else if (rand < 50) // Frostball (25% chance)
|
||||
effect = ClearSpellId[1];
|
||||
else if (rand < 70) // Chain Lighting (25% chance)
|
||||
effect = ClearSpellId[2];
|
||||
else if (rand < 80) // Polymorph (10% chance)
|
||||
{
|
||||
effect = ClearSpellId[3];
|
||||
if (urand(0, 100) <= 30) // 30% chance to self-cast
|
||||
unitTarget = m_caster;
|
||||
}
|
||||
else if (rand < 95) // Enveloping Winds (15% chance)
|
||||
effect = ClearSpellId[4];
|
||||
else // Summon Felhund minion (5% chance)
|
||||
{
|
||||
effect = ClearSpellId[5];
|
||||
unitTarget = m_caster;
|
||||
}
|
||||
|
||||
m_caster->CastSpell(unitTarget, effect, true);
|
||||
return;
|
||||
}
|
||||
case 17251: // Spirit Healer Res
|
||||
{
|
||||
if (!unitTarget || !m_originalCaster)
|
||||
@@ -895,18 +855,6 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
|
||||
}
|
||||
return;
|
||||
}
|
||||
case 17271: // Test Fetid Skull
|
||||
{
|
||||
if (!itemTarget && m_caster->GetTypeId() != TYPEID_PLAYER)
|
||||
return;
|
||||
|
||||
uint32 spell_id = roll_chance_i(50)
|
||||
? 17269 // Create Resonating Skull
|
||||
: 17270; // Create Bone Dust
|
||||
|
||||
m_caster->CastSpell(m_caster, spell_id, true, NULL);
|
||||
return;
|
||||
}
|
||||
case 20577: // Cannibalize
|
||||
if (unitTarget)
|
||||
m_caster->CastSpell(m_caster, 20578, false, NULL);
|
||||
@@ -925,22 +873,6 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
|
||||
|
||||
return;
|
||||
}
|
||||
case 23074: // Arcanite Dragonling
|
||||
if (!m_CastItem) return;
|
||||
m_caster->CastSpell(m_caster, 19804, true, m_CastItem);
|
||||
return;
|
||||
case 23075: // Mithril Mechanical Dragonling
|
||||
if (!m_CastItem) return;
|
||||
m_caster->CastSpell(m_caster, 12749, true, m_CastItem);
|
||||
return;
|
||||
case 23076: // Mechanical Dragonling
|
||||
if (!m_CastItem) return;
|
||||
m_caster->CastSpell(m_caster, 4073, true, m_CastItem);
|
||||
return;
|
||||
case 23133: // Gnomish Battle Chicken
|
||||
if (!m_CastItem) return;
|
||||
m_caster->CastSpell(m_caster, 13166, true, m_CastItem);
|
||||
return;
|
||||
case 23448: // Transporter Arrival - Ultrasafe Transporter: Gadgetzan - backfires
|
||||
{
|
||||
int32 r = irand(0, 119);
|
||||
@@ -1031,20 +963,6 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
|
||||
else // Poultryized! - backfire 20%
|
||||
m_caster->CastSpell(unitTarget, 30504, true, m_CastItem);
|
||||
return;
|
||||
case 34665: //Administer Antidote
|
||||
{
|
||||
if (!unitTarget || unitTarget->GetTypeId() != TYPEID_UNIT
|
||||
|| unitTarget->GetEntry() != 16880 || unitTarget->ToCreature()->isPet())
|
||||
return;
|
||||
|
||||
unitTarget->ToCreature()->UpdateEntry(16992);
|
||||
m_caster->ToPlayer()->RewardPlayerAndGroupAtEvent(16992, unitTarget);
|
||||
|
||||
if (unitTarget->IsAIEnabled)
|
||||
unitTarget->ToCreature()->AI()->AttackStart(m_caster);
|
||||
|
||||
return;
|
||||
}
|
||||
case 35745: // Socrethar's Stone
|
||||
{
|
||||
uint32 spell_id;
|
||||
@@ -1067,39 +985,6 @@ void Spell::EffectDummy(SpellEffIndex effIndex)
|
||||
m_caster->CastCustomSpell(unitTarget, 37675, &basepoints0, NULL, NULL, true);
|
||||
return;
|
||||
}
|
||||
case 40802: // Mingo's Fortune Generator (Mingo's Fortune Giblets)
|
||||
{
|
||||
// selecting one from Bloodstained Fortune item
|
||||
uint32 newitemid;
|
||||
switch(urand(1, 20))
|
||||
{
|
||||
case 1: newitemid = 32688; break;
|
||||
case 2: newitemid = 32689; break;
|
||||
case 3: newitemid = 32690; break;
|
||||
case 4: newitemid = 32691; break;
|
||||
case 5: newitemid = 32692; break;
|
||||
case 6: newitemid = 32693; break;
|
||||
case 7: newitemid = 32700; break;
|
||||
case 8: newitemid = 32701; break;
|
||||
case 9: newitemid = 32702; break;
|
||||
case 10: newitemid = 32703; break;
|
||||
case 11: newitemid = 32704; break;
|
||||
case 12: newitemid = 32705; break;
|
||||
case 13: newitemid = 32706; break;
|
||||
case 14: newitemid = 32707; break;
|
||||
case 15: newitemid = 32708; break;
|
||||
case 16: newitemid = 32709; break;
|
||||
case 17: newitemid = 32710; break;
|
||||
case 18: newitemid = 32711; break;
|
||||
case 19: newitemid = 32712; break;
|
||||
case 20: newitemid = 32713; break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
DoCreateItem(effIndex, newitemid);
|
||||
return;
|
||||
}
|
||||
// Wrath of the Astromancer
|
||||
case 42784:
|
||||
{
|
||||
|
||||
@@ -23,6 +23,50 @@
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
// Generic script for handling item dummy effects which trigger another spell.
|
||||
class spell_item_trigger_spell : public SpellScriptLoader
|
||||
{
|
||||
private:
|
||||
uint32 _triggeredSpellId;
|
||||
|
||||
public:
|
||||
spell_item_trigger_spell(const char* name, uint32 triggeredSpellId) : SpellScriptLoader(name), _triggeredSpellId(triggeredSpellId) { }
|
||||
|
||||
class spell_item_trigger_spell_SpellScript : public SpellScript
|
||||
{
|
||||
private:
|
||||
uint32 _triggeredSpellId;
|
||||
|
||||
public:
|
||||
spell_item_trigger_spell_SpellScript(uint32 triggeredSpellId) : SpellScript(), _triggeredSpellId(triggeredSpellId) { }
|
||||
|
||||
bool Validate(SpellEntry const * /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(_triggeredSpellId))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Item* pItem = GetCastItem())
|
||||
GetCaster()->CastSpell(GetCaster(), _triggeredSpellId, true, pItem);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffect += SpellEffectFn(spell_item_trigger_spell_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_item_trigger_spell_SpellScript(_triggeredSpellId);
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=6522 Deviate Fish
|
||||
// 8063 Deviate Fish
|
||||
enum eDeviateFishSpells
|
||||
{
|
||||
SPELL_SLEEPY = 8064,
|
||||
@@ -32,7 +76,6 @@ enum eDeviateFishSpells
|
||||
SPELL_HEALTHY_SPIRIT = 8068,
|
||||
};
|
||||
|
||||
// 8063 Deviate Fish
|
||||
class spell_item_deviate_fish : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -71,6 +114,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=47499 Flask of the North
|
||||
// 67019 Flask of the North
|
||||
enum eFlaskOfTheNorthSpells
|
||||
{
|
||||
SPELL_FLASK_OF_THE_NORTH_TRIGGERED1 = 67016,
|
||||
@@ -78,7 +123,6 @@ enum eFlaskOfTheNorthSpells
|
||||
SPELL_FLASK_OF_THE_NORTH_TRIGGERED3 = 67018,
|
||||
};
|
||||
|
||||
// 67019 Flask of the North
|
||||
class spell_item_flask_of_the_north : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -120,13 +164,14 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=10645 Gnomish Death Ray
|
||||
// 13280 Gnomish Death Ray
|
||||
enum eGnomishDeathRay
|
||||
{
|
||||
SPELL_GNOMISH_DEATH_RAY_SELF = 13493,
|
||||
SPELL_GNOMISH_DEATH_RAY_TARGET = 13279,
|
||||
};
|
||||
|
||||
// 13280 Gnomish Death Ray
|
||||
class spell_item_gnomish_death_ray : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -168,6 +213,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=27388 Mr. Pinchy
|
||||
// 33060 Make a Wish
|
||||
enum eMakeAWish
|
||||
{
|
||||
SPELL_MR_PINCHYS_BLESSING = 33053,
|
||||
@@ -177,7 +224,6 @@ enum eMakeAWish
|
||||
SPELL_MR_PINCHYS_GIFT = 33064,
|
||||
};
|
||||
|
||||
// 33060 Make a Wish
|
||||
class spell_item_make_a_wish : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -230,6 +276,62 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=32686 Mingo's Fortune Giblets
|
||||
// 40802 Mingo's Fortune Generator
|
||||
class spell_item_mingos_fortune_generator : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_item_mingos_fortune_generator() : SpellScriptLoader("spell_item_mingos_fortune_generator") { }
|
||||
|
||||
class spell_item_mingos_fortune_generator_SpellScript : public SpellScript
|
||||
{
|
||||
void HandleDummy(SpellEffIndex effIndex)
|
||||
{
|
||||
// Selecting one from Bloodstained Fortune item
|
||||
uint32 newitemid;
|
||||
switch (urand(1, 20))
|
||||
{
|
||||
case 1: newitemid = 32688; break;
|
||||
case 2: newitemid = 32689; break;
|
||||
case 3: newitemid = 32690; break;
|
||||
case 4: newitemid = 32691; break;
|
||||
case 5: newitemid = 32692; break;
|
||||
case 6: newitemid = 32693; break;
|
||||
case 7: newitemid = 32700; break;
|
||||
case 8: newitemid = 32701; break;
|
||||
case 9: newitemid = 32702; break;
|
||||
case 10: newitemid = 32703; break;
|
||||
case 11: newitemid = 32704; break;
|
||||
case 12: newitemid = 32705; break;
|
||||
case 13: newitemid = 32706; break;
|
||||
case 14: newitemid = 32707; break;
|
||||
case 15: newitemid = 32708; break;
|
||||
case 16: newitemid = 32709; break;
|
||||
case 17: newitemid = 32710; break;
|
||||
case 18: newitemid = 32711; break;
|
||||
case 19: newitemid = 32712; break;
|
||||
case 20: newitemid = 32713; break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
CreateItem(effIndex, newitemid);
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffect += SpellEffectFn(spell_item_mingos_fortune_generator_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_item_mingos_fortune_generator_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=10720 Gnomish Net-o-Matic Projector
|
||||
// 13120 Net-o-Matic
|
||||
enum eNetOMaticSpells
|
||||
{
|
||||
SPELL_NET_O_MATIC_TRIGGERED1 = 16566,
|
||||
@@ -237,7 +339,6 @@ enum eNetOMaticSpells
|
||||
SPELL_NET_O_MATIC_TRIGGERED3 = 13099,
|
||||
};
|
||||
|
||||
// 13120 Net-o-Matic
|
||||
class spell_item_net_o_matic : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -284,6 +385,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=8529 Noggenfogger Elixir
|
||||
// 16589 Noggenfogger Elixir
|
||||
enum eNoggenfoggerElixirSpells
|
||||
{
|
||||
SPELL_NOGGENFOGGER_ELIXIR_TRIGGERED1 = 16595,
|
||||
@@ -291,7 +394,6 @@ enum eNoggenfoggerElixirSpells
|
||||
SPELL_NOGGENFOGGER_ELIXIR_TRIGGERED3 = 16591,
|
||||
};
|
||||
|
||||
// 16589 Noggenfogger Elixir
|
||||
class spell_item_noggenfogger_elixir : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -339,6 +441,8 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=6657 Savory Deviate Delight
|
||||
// 8213 Savory Deviate Delight
|
||||
enum eSavoryDeviateDelight
|
||||
{
|
||||
SPELL_FLIP_OUT_MALE = 8219,
|
||||
@@ -347,7 +451,6 @@ enum eSavoryDeviateDelight
|
||||
SPELL_YAAARRRR_FEMALE = 8222,
|
||||
};
|
||||
|
||||
// 8213 Savory Deviate Delight
|
||||
class spell_item_savory_deviate_delight : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -393,6 +496,89 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=7734 Six Demon Bag
|
||||
// 14537 Six Demon Bag
|
||||
enum eSixDemonBagSpells
|
||||
{
|
||||
SPELL_FROSTBOLT = 11538,
|
||||
SPELL_POLYMORPH = 14621,
|
||||
SPELL_SUMMON_FELHOUND_MINION = 14642,
|
||||
SPELL_FIREBALL = 15662,
|
||||
SPELL_CHAIN_LIGHTNING = 21179,
|
||||
SPELL_ENVELOPING_WINDS = 25189,
|
||||
};
|
||||
|
||||
class spell_item_six_demon_bag : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_item_six_demon_bag() : SpellScriptLoader("spell_item_six_demon_bag") { }
|
||||
|
||||
class spell_item_six_demon_bag_SpellScript : public SpellScript
|
||||
{
|
||||
public:
|
||||
bool Validate(SpellEntry const * /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(SPELL_FROSTBOLT))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_POLYMORPH))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_FELHOUND_MINION))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_FIREBALL))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_CHAIN_LIGHTNING))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_ENVELOPING_WINDS))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Unit* pTarget = GetHitUnit())
|
||||
{
|
||||
Unit* pCaster = GetCaster();
|
||||
|
||||
uint32 spellId = 0;
|
||||
uint32 rand = urand(0, 100);
|
||||
if (rand >= 0 && rand < 25) // Fireball (25% chance)
|
||||
spellId = SPELL_FIREBALL;
|
||||
else if (rand >= 25 && rand < 50) // Frostball (25% chance)
|
||||
spellId = SPELL_FROSTBOLT;
|
||||
else if (rand >= 50 && rand < 70) // Chain Lighting (20% chance)
|
||||
spellId = SPELL_CHAIN_LIGHTNING;
|
||||
else if (rand >= 70 && rand < 80) // Polymorph (10% chance)
|
||||
{
|
||||
spellId = SPELL_POLYMORPH;
|
||||
if (urand(0, 100) <= 30) // 30% chance to self-cast
|
||||
pTarget = pCaster;
|
||||
}
|
||||
else if (rand >=80 && rand < 95) // Enveloping Winds (15% chance)
|
||||
spellId = SPELL_ENVELOPING_WINDS;
|
||||
else // Summon Felhund minion (5% chance)
|
||||
{
|
||||
spellId = SPELL_SUMMON_FELHOUND_MINION;
|
||||
pTarget = pCaster;
|
||||
}
|
||||
|
||||
pCaster->CastSpell(pTarget, spellId, true, GetCastItem());
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffect += SpellEffectFn(spell_item_six_demon_bag_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_item_six_demon_bag_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/item=44012 Underbelly Elixir
|
||||
// 59640 Underbelly Elixir
|
||||
enum eUnderbellyElixirSpells
|
||||
{
|
||||
SPELL_UNDERBELLY_ELIXIR_TRIGGERED1 = 59645,
|
||||
@@ -400,7 +586,6 @@ enum eUnderbellyElixirSpells
|
||||
SPELL_UNDERBELLY_ELIXIR_TRIGGERED3 = 59843,
|
||||
};
|
||||
|
||||
// 59640 Underbelly Elixir
|
||||
class spell_item_underbelly_elixir : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -447,14 +632,33 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
enum eGenericData
|
||||
{
|
||||
SPELL_ARCANITE_DRAGONLING = 19804,
|
||||
SPELL_BATTLE_CHICKEN = 13166,
|
||||
SPELL_MECHANICAL_DRAGONLING = 4073,
|
||||
SPELL_MITHRIL_MECHANICAL_DRAGONLING = 12749,
|
||||
};
|
||||
|
||||
void AddSC_item_spell_scripts()
|
||||
{
|
||||
// 23074 Arcanite Dragonling
|
||||
new spell_item_trigger_spell("spell_item_arcanite_dragonling", SPELL_ARCANITE_DRAGONLING);
|
||||
// 23133 Gnomish Battle Chicken
|
||||
new spell_item_trigger_spell("spell_item_gnomish_battle_chicken", SPELL_BATTLE_CHICKEN);
|
||||
// 23076 Mechanical Dragonling
|
||||
new spell_item_trigger_spell("spell_item_mechanical_dragonling", SPELL_MECHANICAL_DRAGONLING);
|
||||
// 23075 Mithril Mechanical Dragonling
|
||||
new spell_item_trigger_spell("spell_item_mithril_mechanical_dragonling", SPELL_MITHRIL_MECHANICAL_DRAGONLING);
|
||||
|
||||
new spell_item_deviate_fish();
|
||||
new spell_item_flask_of_the_north();
|
||||
new spell_item_gnomish_death_ray();
|
||||
new spell_item_make_a_wish();
|
||||
new spell_item_mingos_fortune_generator();
|
||||
new spell_item_net_o_matic();
|
||||
new spell_item_noggenfogger_elixir();
|
||||
new spell_item_savory_deviate_delight();
|
||||
new spell_item_six_demon_bag();
|
||||
new spell_item_underbelly_elixir();
|
||||
}
|
||||
|
||||
@@ -23,15 +23,153 @@
|
||||
|
||||
#include "ScriptPCH.h"
|
||||
|
||||
enum Quest11587Spells
|
||||
class spell_generic_quest_update_entry_SpellScript : public SpellScript
|
||||
{
|
||||
QUEST11587_SPELL_SUMMON_ARCANE_PRISONER_MALE = 45446, // Summon Arcane Prisoner - Male
|
||||
QUEST11587_SPELL_SUMMON_ARCANE_PRISONER_FEMALE = 45448, // Summon Arcane Prisoner - Female
|
||||
QUEST11587_SPELL_ARCANE_PRISONER_KILL_CREDIT = 45456 // Arcane Prisoner Kill Credit
|
||||
private:
|
||||
uint32 _spellEffect;
|
||||
uint8 _effIndex;
|
||||
uint32 _originalEntry;
|
||||
uint32 _newEntry;
|
||||
bool _shouldAttack;
|
||||
uint32 _despawnTime;
|
||||
|
||||
public:
|
||||
spell_generic_quest_update_entry_SpellScript(uint32 spellEffect, uint8 effIndex, uint32 originalEntry, uint32 newEntry, bool shouldAttack, uint32 despawnTime = 0) :
|
||||
SpellScript(), _spellEffect(spellEffect), _effIndex(effIndex), _originalEntry(originalEntry),
|
||||
_newEntry(newEntry), _shouldAttack(shouldAttack), _despawnTime(despawnTime) { }
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (Creature* pCreatureTarget = GetHitCreature())
|
||||
if (!pCreatureTarget->isPet() && pCreatureTarget->GetEntry() == _originalEntry)
|
||||
{
|
||||
pCreatureTarget->UpdateEntry(_newEntry);
|
||||
if (_shouldAttack && pCreatureTarget->IsAIEnabled)
|
||||
pCreatureTarget->AI()->AttackStart(GetCaster());
|
||||
|
||||
if (_despawnTime)
|
||||
pCreatureTarget->ForcedDespawn(_despawnTime);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffect += SpellEffectFn(spell_generic_quest_update_entry_SpellScript::HandleDummy, _effIndex, _spellEffect);
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=55 Morbent Fel
|
||||
// 8913 Sacred Cleansing
|
||||
enum Quest55Data
|
||||
{
|
||||
NPC_MORBENT = 1200,
|
||||
NPC_WEAKENED_MORBENT = 24782,
|
||||
};
|
||||
|
||||
class spell_q55_sacred_cleansing : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_q55_sacred_cleansing() : SpellScriptLoader("spell_q55_sacred_cleansing") { }
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_generic_quest_update_entry_SpellScript(SPELL_EFFECT_DUMMY, EFFECT_1, NPC_MORBENT, NPC_WEAKENED_MORBENT, true);
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=5206 Marauders of Darrowshire
|
||||
// 17271 Test Fetid Skull
|
||||
enum Quest5206Data
|
||||
{
|
||||
SPELL_CREATE_RESONATING_SKULL = 17269,
|
||||
SPELL_CREATE_BONE_DUST = 17270
|
||||
};
|
||||
|
||||
class spell_q5206_test_fetid_skull : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_q5206_test_fetid_skull() : SpellScriptLoader("spell_q5206_test_fetid_skull") { }
|
||||
|
||||
class spell_q5206_test_fetid_skull_SpellScript : public SpellScript
|
||||
{
|
||||
bool Validate(SpellEntry const * /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(SPELL_CREATE_RESONATING_SKULL))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_CREATE_BONE_DUST))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
Unit* pCaster = GetCaster();
|
||||
if (pCaster->GetTypeId() == TYPEID_PLAYER)
|
||||
{
|
||||
uint32 spellId = roll_chance_i(50) ? SPELL_CREATE_RESONATING_SKULL : SPELL_CREATE_BONE_DUST;
|
||||
pCaster->CastSpell(pCaster, spellId, true, NULL);
|
||||
}
|
||||
}
|
||||
|
||||
void Register()
|
||||
{
|
||||
OnEffect += SpellEffectFn(spell_q5206_test_fetid_skull_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_q5206_test_fetid_skull_SpellScript();
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=10255 Testing the Antidote
|
||||
// 34665 Administer Antidote
|
||||
enum Quest10255Data
|
||||
{
|
||||
NPC_HELBOAR = 16880,
|
||||
NPC_DREADTUSK = 16992,
|
||||
};
|
||||
|
||||
class spell_q10255_administer_antidote : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_q10255_administer_antidote() : SpellScriptLoader("spell_q10255_administer_antidote") { }
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_generic_quest_update_entry_SpellScript(SPELL_EFFECT_DUMMY, EFFECT_0, NPC_HELBOAR, NPC_DREADTUSK, true);
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=11515 Blood for Blood
|
||||
// 44936 Quest - Fel Siphon Dummy
|
||||
enum Quest11515Data
|
||||
{
|
||||
NPC_FELBLOOD_INITIATE = 24918,
|
||||
NPC_EMACIATED_FELBLOOD = 24955
|
||||
};
|
||||
|
||||
class spell_q11515_fel_siphon_dummy : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
spell_q11515_fel_siphon_dummy() : SpellScriptLoader("spell_q11515_fel_siphon_dummy") { }
|
||||
|
||||
SpellScript* GetSpellScript() const
|
||||
{
|
||||
return new spell_generic_quest_update_entry_SpellScript(SPELL_EFFECT_DUMMY, EFFECT_0, NPC_FELBLOOD_INITIATE, NPC_EMACIATED_FELBLOOD, true);
|
||||
}
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=11587 Prison Break
|
||||
// 45449 Arcane Prisoner Rescue
|
||||
enum Quest11587Data
|
||||
{
|
||||
SPELL_SUMMON_ARCANE_PRISONER_MALE = 45446, // Summon Arcane Prisoner - Male
|
||||
SPELL_SUMMON_ARCANE_PRISONER_FEMALE = 45448, // Summon Arcane Prisoner - Female
|
||||
SPELL_ARCANE_PRISONER_KILL_CREDIT = 45456 // Arcane Prisoner Kill Credit
|
||||
};
|
||||
|
||||
class spell_q11587_arcane_prisoner_rescue : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -41,11 +179,11 @@ public:
|
||||
{
|
||||
bool Validate(SpellEntry const * /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(QUEST11587_SPELL_SUMMON_ARCANE_PRISONER_MALE))
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_ARCANE_PRISONER_MALE))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(QUEST11587_SPELL_SUMMON_ARCANE_PRISONER_FEMALE))
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_ARCANE_PRISONER_FEMALE))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(QUEST11587_SPELL_ARCANE_PRISONER_KILL_CREDIT))
|
||||
if (!sSpellStore.LookupEntry(SPELL_ARCANE_PRISONER_KILL_CREDIT))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -55,11 +193,11 @@ public:
|
||||
Unit* caster = GetCaster();
|
||||
if (Unit* unitTarget = GetHitUnit())
|
||||
{
|
||||
uint32 spellId = QUEST11587_SPELL_SUMMON_ARCANE_PRISONER_MALE;
|
||||
uint32 spellId = SPELL_SUMMON_ARCANE_PRISONER_MALE;
|
||||
if (rand() % 2)
|
||||
spellId = QUEST11587_SPELL_SUMMON_ARCANE_PRISONER_FEMALE;
|
||||
spellId = SPELL_SUMMON_ARCANE_PRISONER_FEMALE;
|
||||
caster->CastSpell(caster, spellId, true);
|
||||
unitTarget->CastSpell(caster, QUEST11587_SPELL_ARCANE_PRISONER_KILL_CREDIT, true);
|
||||
unitTarget->CastSpell(caster, SPELL_ARCANE_PRISONER_KILL_CREDIT, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -75,23 +213,23 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
enum Quest11730Spells
|
||||
{
|
||||
SPELL_QUEST_SUMMON_SCAVENGEBOT_004A8 = 46063,
|
||||
SPELL_QUEST_SUMMON_SENTRYBOT_57K = 46068,
|
||||
SPELL_QUEST_SUMMON_DEFENDOTANK_66D = 46058,
|
||||
SPELL_QUEST_SUMMON_SCAVENGEBOT_005B6 = 46066,
|
||||
SPELL_QUEST_SUMMON_55D_COLLECTATRON = 46034,
|
||||
SPELL_QUEST_ROBOT_KILL_CREDIT = 46027,
|
||||
NPC_SCAVENGEBOT_004A8 = 25752,
|
||||
NPC_SENTRYBOT_57K = 25753,
|
||||
NPC_DEFENDOTANK_66D = 25758,
|
||||
NPC_SCAVENGEBOT_005B6 = 25792,
|
||||
NPC_55D_COLLECTATRON = 25793
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=11730 Master and Servant
|
||||
// 46023 The Ultrasonic Screwdriver
|
||||
enum Quest11730Data
|
||||
{
|
||||
SPELL_SUMMON_SCAVENGEBOT_004A8 = 46063,
|
||||
SPELL_SUMMON_SENTRYBOT_57K = 46068,
|
||||
SPELL_SUMMON_DEFENDOTANK_66D = 46058,
|
||||
SPELL_SUMMON_SCAVENGEBOT_005B6 = 46066,
|
||||
SPELL_SUMMON_55D_COLLECTATRON = 46034,
|
||||
SPELL_ROBOT_KILL_CREDIT = 46027,
|
||||
NPC_SCAVENGEBOT_004A8 = 25752,
|
||||
NPC_SENTRYBOT_57K = 25753,
|
||||
NPC_DEFENDOTANK_66D = 25758,
|
||||
NPC_SCAVENGEBOT_005B6 = 25792,
|
||||
NPC_55D_COLLECTATRON = 25793
|
||||
};
|
||||
|
||||
class spell_q11730_ultrasonic_screwdriver : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -101,17 +239,17 @@ public:
|
||||
{
|
||||
bool Validate(SpellEntry const * /*spellEntry*/)
|
||||
{
|
||||
if (!sSpellStore.LookupEntry(SPELL_QUEST_SUMMON_SCAVENGEBOT_004A8))
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_SCAVENGEBOT_004A8))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_QUEST_SUMMON_SENTRYBOT_57K))
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_SENTRYBOT_57K))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_QUEST_SUMMON_DEFENDOTANK_66D))
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_DEFENDOTANK_66D))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_QUEST_SUMMON_SCAVENGEBOT_005B6))
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_SCAVENGEBOT_005B6))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_QUEST_SUMMON_55D_COLLECTATRON))
|
||||
if (!sSpellStore.LookupEntry(SPELL_SUMMON_55D_COLLECTATRON))
|
||||
return false;
|
||||
if (!sSpellStore.LookupEntry(SPELL_QUEST_ROBOT_KILL_CREDIT))
|
||||
if (!sSpellStore.LookupEntry(SPELL_ROBOT_KILL_CREDIT))
|
||||
return false;
|
||||
return true;
|
||||
}
|
||||
@@ -133,16 +271,16 @@ public:
|
||||
uint32 spellId = 0;
|
||||
switch (pTarget->GetEntry())
|
||||
{
|
||||
case NPC_SCAVENGEBOT_004A8: spellId = SPELL_QUEST_SUMMON_SCAVENGEBOT_004A8; break;
|
||||
case NPC_SENTRYBOT_57K: spellId = SPELL_QUEST_SUMMON_SENTRYBOT_57K; break;
|
||||
case NPC_DEFENDOTANK_66D: spellId = SPELL_QUEST_SUMMON_DEFENDOTANK_66D; break;
|
||||
case NPC_SCAVENGEBOT_005B6: spellId = SPELL_QUEST_SUMMON_SCAVENGEBOT_005B6; break;
|
||||
case NPC_55D_COLLECTATRON: spellId = SPELL_QUEST_SUMMON_55D_COLLECTATRON; break;
|
||||
case NPC_SCAVENGEBOT_004A8: spellId = SPELL_SUMMON_SCAVENGEBOT_004A8; break;
|
||||
case NPC_SENTRYBOT_57K: spellId = SPELL_SUMMON_SENTRYBOT_57K; break;
|
||||
case NPC_DEFENDOTANK_66D: spellId = SPELL_SUMMON_DEFENDOTANK_66D; break;
|
||||
case NPC_SCAVENGEBOT_005B6: spellId = SPELL_SUMMON_SCAVENGEBOT_005B6; break;
|
||||
case NPC_55D_COLLECTATRON: spellId = SPELL_SUMMON_55D_COLLECTATRON; break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
pCaster->CastSpell(pCaster, spellId, true, castItem);
|
||||
pCaster->CastSpell(pCaster, SPELL_QUEST_ROBOT_KILL_CREDIT, true);
|
||||
pCaster->CastSpell(pCaster, SPELL_ROBOT_KILL_CREDIT, true);
|
||||
pTarget->ForcedDespawn();
|
||||
}
|
||||
|
||||
@@ -192,14 +330,14 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
enum eQuest12937Spells
|
||||
// http://www.wowhead.com/quest=12937 Relief for the Fallen
|
||||
// 55804 Healing Finished
|
||||
enum eQuest12937Data
|
||||
{
|
||||
SPELL_TRIGGER_AID_OF_THE_EARTHEN = 55809,
|
||||
NPC_FALLEN_EARTHEN_DEFENDER = 30035,
|
||||
};
|
||||
|
||||
// http://www.wowhead.com/quest=12937 Relief for the Fallen
|
||||
// 55804 Healing Finished
|
||||
class spell_q12937_relief_for_the_fallen : public SpellScriptLoader
|
||||
{
|
||||
public:
|
||||
@@ -243,6 +381,10 @@ public:
|
||||
|
||||
void AddSC_quest_spell_scripts()
|
||||
{
|
||||
new spell_q55_sacred_cleansing();
|
||||
new spell_q5206_test_fetid_skull();
|
||||
new spell_q10255_administer_antidote();
|
||||
new spell_q11515_fel_siphon_dummy();
|
||||
new spell_q11587_arcane_prisoner_rescue();
|
||||
new spell_q11730_ultrasonic_screwdriver();
|
||||
new spell_q12683_take_sputum_sample();
|
||||
|
||||
Reference in New Issue
Block a user