Quests: Fixes quest "Going Bearback". Needs DB support to work.

ref ticket:472
This commit is contained in:
Liberate
2011-01-30 18:22:30 +01:00
parent 840d2eac62
commit 0e7b60bf19
4 changed files with 115 additions and 0 deletions

View File

@@ -0,0 +1,3 @@
DELETE FROM `spell_script_names` WHERE `spell_id` = 54798 AND `ScriptName`='spell_q12851_going_bearback';
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(54798,'spell_q12851_going_bearback');

View File

@@ -0,0 +1 @@
UPDATE `creature_template` SET `ScriptName`='npc_icefang' WHERE `entry`=29602;

View File

@@ -665,6 +665,55 @@ public:
}
};
class npc_icefang : public CreatureScript
{
public:
npc_icefang() : CreatureScript("npc_icefang") { }
struct npc_icefangAI : public npc_escortAI
{
npc_icefangAI(Creature* creature) : npc_escortAI(creature) {}
void AttackStart(Unit* who) {}
void EnterCombat(Unit* who) {}
void EnterEvadeMode() {}
void PassengerBoarded(Unit* who, int8 /*seatId*/, bool apply)
{
if (who->GetTypeId() == TYPEID_PLAYER)
{
if (apply)
Start(false, true, who->GetGUID());
}
}
void WaypointReached(uint32 wp)
{
}
void JustDied(Unit* killer)
{
}
void OnCharmed(bool /*apply*/)
{
}
void UpdateAI(const uint32 diff)
{
npc_escortAI::UpdateAI(diff);
if (!UpdateVictim())
return;
}
};
CreatureAI* GetAI(Creature* creature) const
{
return new npc_icefangAI (creature);
}
};
void AddSC_storm_peaks()
{
new npc_agnetta_tyrsdottar;
@@ -676,4 +725,5 @@ void AddSC_storm_peaks()
new npc_injured_goblin;
new npc_roxi_ramrocket;
new npc_brunnhildar_prisoner;
new npc_icefang;
}

View File

@@ -619,6 +619,66 @@ public:
}
};
// http://www.wowhead.com/quest=12851 Going Bearback
// 54798 FLAMING Arrow Triggered Effect
enum eQuest12851Data
{
NPC_FROSTGIANT = 29351,
NPC_FROSTWORG = 29358,
SPELL_FROSTGIANT_CREDIT = 58184,
SPELL_FROSTWORG_CREDIT = 58183,
SPELL_IMMOLATION = 54690,
SPELL_ABLAZE = 54683,
};
class spell_q12851_going_bearback : public SpellScriptLoader
{
public:
spell_q12851_going_bearback() : SpellScriptLoader("spell_q12851_going_bearback") { }
class spell_q12851_going_bearback_AuraScript : public AuraScript
{
public:
PrepareAuraScript(spell_q12851_going_bearback_AuraScript)
void HandleEffectApply(AuraEffect const * /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
{
if (Unit* target = GetTarget())
{
if (Player* player = caster->GetCharmerOrOwnerPlayerOrPlayerItself())
{
switch(target->GetEntry())
{
case NPC_FROSTWORG:
target->CastSpell(player, SPELL_FROSTWORG_CREDIT, true);
target->CastSpell(target, SPELL_IMMOLATION, true);
target->CastSpell(target, SPELL_ABLAZE, true);
break;
case NPC_FROSTGIANT:
target->CastSpell(player, SPELL_FROSTGIANT_CREDIT, true);
target->CastSpell(target, SPELL_IMMOLATION, true);
target->CastSpell(target, SPELL_ABLAZE, true);
break;
}
}
}
}
}
void Register()
{
OnEffectApply += AuraEffectApplyFn(spell_q12851_going_bearback_AuraScript::HandleEffectApply, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_REAL);
}
};
AuraScript* GetAuraScript() const
{
return new spell_q12851_going_bearback_AuraScript();
}
};
// http://www.wowhead.com/quest=12937 Relief for the Fallen
// 55804 Healing Finished
enum eQuest12937Data
@@ -684,5 +744,6 @@ void AddSC_quest_spell_scripts()
new spell_q12459_seeds_of_natures_wrath();
new spell_q12634_despawn_fruit_tosser();
new spell_q12683_take_sputum_sample();
new spell_q12851_going_bearback();
new spell_q12937_relief_for_the_fallen();
}