mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Scripts/Spells: Handle quest tame spells in spell script (#27022)
(cherry picked from commit 4441d42253)
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` IN (19548,19674,19687,19688,19689,19692,19693,19694,19696,19697,19699,19700,30646,30653,30654,30099,30102,30105) AND `ScriptName` = 'spell_quest_taming_the_beast';
|
||||
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
|
||||
(19548,'spell_quest_taming_the_beast'),
|
||||
(19674,'spell_quest_taming_the_beast'),
|
||||
(19687,'spell_quest_taming_the_beast'),
|
||||
(19688,'spell_quest_taming_the_beast'),
|
||||
(19689,'spell_quest_taming_the_beast'),
|
||||
(19692,'spell_quest_taming_the_beast'),
|
||||
(19693,'spell_quest_taming_the_beast'),
|
||||
(19694,'spell_quest_taming_the_beast'),
|
||||
(19696,'spell_quest_taming_the_beast'),
|
||||
(19697,'spell_quest_taming_the_beast'),
|
||||
(19699,'spell_quest_taming_the_beast'),
|
||||
(19700,'spell_quest_taming_the_beast'),
|
||||
(30646,'spell_quest_taming_the_beast'),
|
||||
(30653,'spell_quest_taming_the_beast'),
|
||||
(30654,'spell_quest_taming_the_beast'),
|
||||
(30099,'spell_quest_taming_the_beast'),
|
||||
(30102,'spell_quest_taming_the_beast'),
|
||||
(30105,'spell_quest_taming_the_beast');
|
||||
@@ -4568,35 +4568,6 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
|
||||
// AT REMOVE
|
||||
else
|
||||
{
|
||||
if ((GetSpellInfo()->IsQuestTame()) && caster && caster->IsAlive() && target->IsAlive())
|
||||
{
|
||||
uint32 finalSpelId = 0;
|
||||
switch (GetId())
|
||||
{
|
||||
case 19548: finalSpelId = 19597; break;
|
||||
case 19674: finalSpelId = 19677; break;
|
||||
case 19687: finalSpelId = 19676; break;
|
||||
case 19688: finalSpelId = 19678; break;
|
||||
case 19689: finalSpelId = 19679; break;
|
||||
case 19692: finalSpelId = 19680; break;
|
||||
case 19693: finalSpelId = 19684; break;
|
||||
case 19694: finalSpelId = 19681; break;
|
||||
case 19696: finalSpelId = 19682; break;
|
||||
case 19697: finalSpelId = 19683; break;
|
||||
case 19699: finalSpelId = 19685; break;
|
||||
case 19700: finalSpelId = 19686; break;
|
||||
case 30646: finalSpelId = 30647; break;
|
||||
case 30653: finalSpelId = 30648; break;
|
||||
case 30654: finalSpelId = 30652; break;
|
||||
case 30099: finalSpelId = 30100; break;
|
||||
case 30102: finalSpelId = 30103; break;
|
||||
case 30105: finalSpelId = 30104; break;
|
||||
}
|
||||
|
||||
if (finalSpelId)
|
||||
caster->CastSpell(target, finalSpelId, this);
|
||||
}
|
||||
|
||||
switch (m_spellInfo->SpellFamilyName)
|
||||
{
|
||||
case SPELLFAMILY_GENERIC:
|
||||
|
||||
@@ -1409,14 +1409,6 @@ bool SpellInfo::IsLootCrafting() const
|
||||
return HasEffect(SPELL_EFFECT_CREATE_RANDOM_ITEM) || HasEffect(SPELL_EFFECT_CREATE_LOOT);
|
||||
}
|
||||
|
||||
bool SpellInfo::IsQuestTame() const
|
||||
{
|
||||
if (GetEffects().size() < 2)
|
||||
return false;
|
||||
|
||||
return GetEffect(EFFECT_0).Effect == SPELL_EFFECT_THREAT && GetEffect(EFFECT_1).Effect == SPELL_EFFECT_APPLY_AURA && GetEffect(EFFECT_1).ApplyAuraName == SPELL_AURA_DUMMY;
|
||||
}
|
||||
|
||||
bool SpellInfo::IsProfession() const
|
||||
{
|
||||
for (SpellEffectInfo const& effect : GetEffects())
|
||||
|
||||
@@ -487,7 +487,6 @@ class TC_GAME_API SpellInfo
|
||||
|
||||
bool IsExplicitDiscovery() const;
|
||||
bool IsLootCrafting() const;
|
||||
bool IsQuestTame() const;
|
||||
bool IsProfession() const;
|
||||
bool IsPrimaryProfession() const;
|
||||
bool IsPrimaryProfessionFirstRank() const;
|
||||
|
||||
@@ -2347,6 +2347,116 @@ class spell_q11896_weakness_to_lightning_46444 : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
enum TamingTheBeast
|
||||
{
|
||||
SPELL_TAME_ICE_CLAW_BEAR = 19548,
|
||||
SPELL_TAME_LARGE_CRAG_BOAR = 19674,
|
||||
SPELL_TAME_SNOW_LEOPARD = 19687,
|
||||
SPELL_TAME_ADULT_PLAINSTRIDER = 19688,
|
||||
SPELL_TAME_PRAIRIE_STALKER = 19689,
|
||||
SPELL_TAME_SWOOP = 19692,
|
||||
SPELL_TAME_WEBWOOD_LURKER = 19693,
|
||||
SPELL_TAME_DIRE_MOTTLED_BOAR = 19694,
|
||||
SPELL_TAME_SURF_CRAWLER = 19696,
|
||||
SPELL_TAME_ARMORED_SCORPID = 19697,
|
||||
SPELL_TAME_NIGHTSABER_STALKER = 19699,
|
||||
SPELL_TAME_STRIGID_SCREECHER = 19700,
|
||||
SPELL_TAME_BARBED_CRAWLER = 30646,
|
||||
SPELL_TAME_GREATER_TIMBERSTRIDER = 30653,
|
||||
SPELL_TAME_NIGHTSTALKER = 30654,
|
||||
SPELL_TAME_CRAZED_DRAGONHAWK = 30099,
|
||||
SPELL_TAME_ELDER_SPRINGPAW = 30102,
|
||||
SPELL_TAME_MISTBAT = 30105,
|
||||
SPELL_TAME_ICE_CLAW_BEAR_1 = 19597,
|
||||
SPELL_TAME_LARGE_CRAG_BOAR_1 = 19677,
|
||||
SPELL_TAME_SNOW_LEOPARD_1 = 19676,
|
||||
SPELL_TAME_ADULT_PLAINSTRIDER_1 = 19678,
|
||||
SPELL_TAME_PRAIRIE_STALKER_1 = 19679,
|
||||
SPELL_TAME_SWOOP_1 = 19680,
|
||||
SPELL_TAME_WEBWOOD_LURKER_1 = 19684,
|
||||
SPELL_TAME_DIRE_MOTTLED_BOAR_1 = 19681,
|
||||
SPELL_TAME_SURF_CRAWLER_1 = 19682,
|
||||
SPELL_TAME_ARMORED_SCORPID_1 = 19683,
|
||||
SPELL_TAME_NIGHTSABER_STALKER_1 = 19685,
|
||||
SPELL_TAME_STRIGID_SCREECHER_1 = 19686,
|
||||
SPELL_TAME_BARBED_CRAWLER_1 = 30647,
|
||||
SPELL_TAME_GREATER_TIMBERSTRIDER_1 = 30648,
|
||||
SPELL_TAME_NIGHTSTALKER_1 = 30652,
|
||||
SPELL_TAME_CRAZED_DRAGONHAWK_1 = 30100,
|
||||
SPELL_TAME_ELDER_SPRINGPAW_1 = 30103,
|
||||
SPELL_TAME_MISTBAT_1 = 30104
|
||||
};
|
||||
|
||||
class spell_quest_taming_the_beast : public AuraScript
|
||||
{
|
||||
PrepareAuraScript(spell_quest_taming_the_beast);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo(
|
||||
{
|
||||
SPELL_TAME_ICE_CLAW_BEAR_1,
|
||||
SPELL_TAME_LARGE_CRAG_BOAR_1,
|
||||
SPELL_TAME_SNOW_LEOPARD_1,
|
||||
SPELL_TAME_ADULT_PLAINSTRIDER_1,
|
||||
SPELL_TAME_PRAIRIE_STALKER_1,
|
||||
SPELL_TAME_SWOOP_1,
|
||||
SPELL_TAME_WEBWOOD_LURKER_1,
|
||||
SPELL_TAME_DIRE_MOTTLED_BOAR_1,
|
||||
SPELL_TAME_SURF_CRAWLER_1,
|
||||
SPELL_TAME_ARMORED_SCORPID_1,
|
||||
SPELL_TAME_NIGHTSABER_STALKER_1,
|
||||
SPELL_TAME_STRIGID_SCREECHER_1,
|
||||
SPELL_TAME_BARBED_CRAWLER_1,
|
||||
SPELL_TAME_GREATER_TIMBERSTRIDER_1,
|
||||
SPELL_TAME_NIGHTSTALKER_1,
|
||||
SPELL_TAME_CRAZED_DRAGONHAWK_1,
|
||||
SPELL_TAME_ELDER_SPRINGPAW_1,
|
||||
SPELL_TAME_MISTBAT_1
|
||||
});
|
||||
}
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
if (!GetCaster() || !GetCaster()->IsAlive() || !GetTarget()->IsAlive())
|
||||
return;
|
||||
|
||||
if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_EXPIRE)
|
||||
return;
|
||||
|
||||
uint32 finalSpellId = 0;
|
||||
switch (GetId())
|
||||
{
|
||||
case SPELL_TAME_ICE_CLAW_BEAR: finalSpellId = SPELL_TAME_ICE_CLAW_BEAR_1; break;
|
||||
case SPELL_TAME_LARGE_CRAG_BOAR: finalSpellId = SPELL_TAME_LARGE_CRAG_BOAR_1; break;
|
||||
case SPELL_TAME_SNOW_LEOPARD: finalSpellId = SPELL_TAME_SNOW_LEOPARD_1; break;
|
||||
case SPELL_TAME_ADULT_PLAINSTRIDER: finalSpellId = SPELL_TAME_ADULT_PLAINSTRIDER_1; break;
|
||||
case SPELL_TAME_PRAIRIE_STALKER: finalSpellId = SPELL_TAME_PRAIRIE_STALKER_1; break;
|
||||
case SPELL_TAME_SWOOP: finalSpellId = SPELL_TAME_SWOOP_1; break;
|
||||
case SPELL_TAME_WEBWOOD_LURKER: finalSpellId = SPELL_TAME_WEBWOOD_LURKER_1; break;
|
||||
case SPELL_TAME_DIRE_MOTTLED_BOAR: finalSpellId = SPELL_TAME_DIRE_MOTTLED_BOAR_1; break;
|
||||
case SPELL_TAME_SURF_CRAWLER: finalSpellId = SPELL_TAME_SURF_CRAWLER_1; break;
|
||||
case SPELL_TAME_ARMORED_SCORPID: finalSpellId = SPELL_TAME_ARMORED_SCORPID_1; break;
|
||||
case SPELL_TAME_NIGHTSABER_STALKER: finalSpellId = SPELL_TAME_NIGHTSABER_STALKER_1; break;
|
||||
case SPELL_TAME_STRIGID_SCREECHER: finalSpellId = SPELL_TAME_STRIGID_SCREECHER_1; break;
|
||||
case SPELL_TAME_BARBED_CRAWLER: finalSpellId = SPELL_TAME_BARBED_CRAWLER_1; break;
|
||||
case SPELL_TAME_GREATER_TIMBERSTRIDER: finalSpellId = SPELL_TAME_GREATER_TIMBERSTRIDER_1; break;
|
||||
case SPELL_TAME_NIGHTSTALKER: finalSpellId = SPELL_TAME_NIGHTSTALKER_1; break;
|
||||
case SPELL_TAME_CRAZED_DRAGONHAWK: finalSpellId = SPELL_TAME_CRAZED_DRAGONHAWK_1; break;
|
||||
case SPELL_TAME_ELDER_SPRINGPAW: finalSpellId = SPELL_TAME_ELDER_SPRINGPAW_1; break;
|
||||
case SPELL_TAME_MISTBAT: finalSpellId = SPELL_TAME_MISTBAT_1; break;
|
||||
}
|
||||
|
||||
if (finalSpellId)
|
||||
GetCaster()->CastSpell(GetTarget(), finalSpellId, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
AfterEffectRemove += AuraEffectRemoveFn(spell_quest_taming_the_beast::OnRemove, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
|
||||
}
|
||||
};
|
||||
|
||||
/*######
|
||||
## Quest 14386 Leader of the Pack
|
||||
######*/
|
||||
@@ -2456,5 +2566,6 @@ void AddSC_quest_spell_scripts()
|
||||
RegisterSpellScript(spell_q11306_mixing_vrykul_blood);
|
||||
RegisterSpellScript(spell_q11306_failed_mix_43376);
|
||||
RegisterSpellScript(spell_q11306_failed_mix_43378);
|
||||
RegisterSpellScript(spell_quest_taming_the_beast);
|
||||
RegisterSpellScript(spell_q14386_call_attack_mastiffs);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user