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:
azazel
2010-09-04 02:33:57 +06:00
parent d4e2fdad78
commit 7884fd927a
5 changed files with 443 additions and 163 deletions
+10
View File
@@ -26643,18 +26643,28 @@ INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
( 73033, 'spell_festergut_blighted_spores'),
( 73034, 'spell_festergut_blighted_spores'),
-- quest
( 8913, 'spell_q55_sacred_cleansing'),
( 17271, 'spell_q5206_test_fetid_skull'),
( 34665, 'spell_q10255_administer_antidote'),
( 44936, 'spell_q11515_fel_siphon_dummy'),
( 45449, 'spell_q11587_arcane_prisoner_rescue'),
( 46023, 'spell_q11730_ultrasonic_screwdriver'),
( 52308, 'spell_q12683_take_sputum_sample'),
( 55804, 'spell_q12937_relief_for_the_fallen'),
-- item
( 23074, 'spell_item_arcanite_dragonling'),
( 8063, 'spell_item_deviate_fish'),
( 67019, 'spell_item_flask_of_the_north'),
( 23133, 'spell_item_gnomish_battle_chicken'),
( 13280, 'spell_item_gnomish_death_ray'),
( 33060, 'spell_item_make_a_wish'),
( 23076, 'spell_item_mechanical_dragonling'),
( 40802, 'spell_item_mingos_fortune_generator'),
( 23075, 'spell_item_mithril_mechanical_dragonling'),
( 13120, 'spell_item_net_o_matic'),
( 16589, 'spell_item_noggenfogger_elixir'),
( 8213, 'spell_item_savory_deviate_delight'),
( 14537, 'spell_item_six_demon_bag'),
( 59640, 'spell_item_underbelly_elixir'),
-- warrior
( 12975, 'spell_warr_last_stand'),
@@ -0,0 +1,39 @@
-- 14537 Six Demon Bag
DELETE FROM `spell_script_names` WHERE `spell_id`=14537 AND `ScriptName`='spell_item_six_demon_bag';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (14537,'spell_item_six_demon_bag');
-- 17271 Test Fetid Skull
DELETE FROM `spell_script_names` WHERE `spell_id`=17271 AND `ScriptName`='spell_q5206_test_fetid_skull';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (17271,'spell_q5206_test_fetid_skull');
-- 23074 Arcanite Dragonling
DELETE FROM `spell_script_names` WHERE `spell_id`=23074 AND `ScriptName`='spell_item_arcanite_dragonling';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (23074,'spell_item_arcanite_dragonling');
-- 23075 Mithril Mechanical Dragonling
DELETE FROM `spell_script_names` WHERE `spell_id`=23075 AND `ScriptName`='spell_item_mithril_mechanical_dragonling';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (23075,'spell_item_mithril_mechanical_dragonling');
-- 23076 Mechanical Dragonling
DELETE FROM `spell_script_names` WHERE `spell_id`=23076 AND `ScriptName`='spell_item_mechanical_dragonling';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (23076,'spell_item_mechanical_dragonling');
-- 23133 Gnomish Battle Chicken
DELETE FROM `spell_script_names` WHERE `spell_id`=23133 AND `ScriptName`='spell_item_gnomish_battle_chicken';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (23133,'spell_item_gnomish_battle_chicken');
-- 34665 Administer Antidote
DELETE FROM `spell_script_names` WHERE `spell_id`=34665 AND `ScriptName`='spell_q10255_administer_antidote';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (34665,'spell_q10255_administer_antidote');
-- 40802 Mingo's Fortune Generator
DELETE FROM `spell_script_names` WHERE `spell_id`=40802 AND `ScriptName`='spell_item_mingos_fortune_generator';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (40802,'spell_item_mingos_fortune_generator');
-- 8913 Sacred Cleansing
DELETE FROM `spell_script_names` WHERE `spell_id`=8913 AND `ScriptName`='spell_q55_sacred_cleansing';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (8913,'spell_q55_sacred_cleansing');
-- 44936 Quest - Fel Siphon Dummy
DELETE FROM `spell_script_names` WHERE `spell_id`=44936 AND `ScriptName`='spell_q11515_fel_siphon_dummy';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES (44936,'spell_q11515_fel_siphon_dummy');
-115
View File
@@ -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:
{
+212 -8
View File
@@ -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();
}
+182 -40
View File
@@ -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();