Core/Scripts: converted Argent Tournament pennants to AI

Closes #14616
This commit is contained in:
ariel- authored and Aokromes committed 2017-03-13 10:08:59 +01:00
1 parent d9c5065acc
commit 68c4606725
3 files changed
+246 -260

No files matched your search

@@ -0,0 +1,2 @@
DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_gen_on_tournament_mount';
UPDATE `creature_template` SET `ScriptName`='npc_tournament_mount' WHERE `entry` IN (33217,33316,33317,33318,33319,33320,33321,33322,33323,33324,33782,33845,33844);
-260
View File
@@ -2246,265 +2246,6 @@ class spell_gen_obsidian_armor : public SpellScriptLoader
}
};
enum TournamentPennantSpells
{
SPELL_PENNANT_STORMWIND_ASPIRANT = 62595,
SPELL_PENNANT_STORMWIND_VALIANT = 62596,
SPELL_PENNANT_STORMWIND_CHAMPION = 62594,
SPELL_PENNANT_GNOMEREGAN_ASPIRANT = 63394,
SPELL_PENNANT_GNOMEREGAN_VALIANT = 63395,
SPELL_PENNANT_GNOMEREGAN_CHAMPION = 63396,
SPELL_PENNANT_SEN_JIN_ASPIRANT = 63397,
SPELL_PENNANT_SEN_JIN_VALIANT = 63398,
SPELL_PENNANT_SEN_JIN_CHAMPION = 63399,
SPELL_PENNANT_SILVERMOON_ASPIRANT = 63401,
SPELL_PENNANT_SILVERMOON_VALIANT = 63402,
SPELL_PENNANT_SILVERMOON_CHAMPION = 63403,
SPELL_PENNANT_DARNASSUS_ASPIRANT = 63404,
SPELL_PENNANT_DARNASSUS_VALIANT = 63405,
SPELL_PENNANT_DARNASSUS_CHAMPION = 63406,
SPELL_PENNANT_EXODAR_ASPIRANT = 63421,
SPELL_PENNANT_EXODAR_VALIANT = 63422,
SPELL_PENNANT_EXODAR_CHAMPION = 63423,
SPELL_PENNANT_IRONFORGE_ASPIRANT = 63425,
SPELL_PENNANT_IRONFORGE_VALIANT = 63426,
SPELL_PENNANT_IRONFORGE_CHAMPION = 63427,
SPELL_PENNANT_UNDERCITY_ASPIRANT = 63428,
SPELL_PENNANT_UNDERCITY_VALIANT = 63429,
SPELL_PENNANT_UNDERCITY_CHAMPION = 63430,
SPELL_PENNANT_ORGRIMMAR_ASPIRANT = 63431,
SPELL_PENNANT_ORGRIMMAR_VALIANT = 63432,
SPELL_PENNANT_ORGRIMMAR_CHAMPION = 63433,
SPELL_PENNANT_THUNDER_BLUFF_ASPIRANT = 63434,
SPELL_PENNANT_THUNDER_BLUFF_VALIANT = 63435,
SPELL_PENNANT_THUNDER_BLUFF_CHAMPION = 63436,
SPELL_PENNANT_ARGENT_CRUSADE_ASPIRANT = 63606,
SPELL_PENNANT_ARGENT_CRUSADE_VALIANT = 63500,
SPELL_PENNANT_ARGENT_CRUSADE_CHAMPION = 63501,
SPELL_PENNANT_EBON_BLADE_ASPIRANT = 63607,
SPELL_PENNANT_EBON_BLADE_VALIANT = 63608,
SPELL_PENNANT_EBON_BLADE_CHAMPION = 63609
};
enum TournamentMounts
{
NPC_STORMWIND_STEED = 33217,
NPC_IRONFORGE_RAM = 33316,
NPC_GNOMEREGAN_MECHANOSTRIDER = 33317,
NPC_EXODAR_ELEKK = 33318,
NPC_DARNASSIAN_NIGHTSABER = 33319,
NPC_ORGRIMMAR_WOLF = 33320,
NPC_DARK_SPEAR_RAPTOR = 33321,
NPC_THUNDER_BLUFF_KODO = 33322,
NPC_SILVERMOON_HAWKSTRIDER = 33323,
NPC_FORSAKEN_WARHORSE = 33324,
NPC_ARGENT_WARHORSE = 33782,
NPC_ARGENT_STEED_ASPIRANT = 33845,
NPC_ARGENT_HAWKSTRIDER_ASPIRANT = 33844
};
enum TournamentQuestsAchievements
{
ACHIEVEMENT_CHAMPION_STORMWIND = 2781,
ACHIEVEMENT_CHAMPION_DARNASSUS = 2777,
ACHIEVEMENT_CHAMPION_IRONFORGE = 2780,
ACHIEVEMENT_CHAMPION_GNOMEREGAN = 2779,
ACHIEVEMENT_CHAMPION_THE_EXODAR = 2778,
ACHIEVEMENT_CHAMPION_ORGRIMMAR = 2783,
ACHIEVEMENT_CHAMPION_SEN_JIN = 2784,
ACHIEVEMENT_CHAMPION_THUNDER_BLUFF = 2786,
ACHIEVEMENT_CHAMPION_UNDERCITY = 2787,
ACHIEVEMENT_CHAMPION_SILVERMOON = 2785,
ACHIEVEMENT_ARGENT_VALOR = 2758,
ACHIEVEMENT_CHAMPION_ALLIANCE = 2782,
ACHIEVEMENT_CHAMPION_HORDE = 2788,
QUEST_VALIANT_OF_STORMWIND = 13593,
QUEST_A_VALIANT_OF_STORMWIND = 13684,
QUEST_VALIANT_OF_DARNASSUS = 13706,
QUEST_A_VALIANT_OF_DARNASSUS = 13689,
QUEST_VALIANT_OF_IRONFORGE = 13703,
QUEST_A_VALIANT_OF_IRONFORGE = 13685,
QUEST_VALIANT_OF_GNOMEREGAN = 13704,
QUEST_A_VALIANT_OF_GNOMEREGAN = 13688,
QUEST_VALIANT_OF_THE_EXODAR = 13705,
QUEST_A_VALIANT_OF_THE_EXODAR = 13690,
QUEST_VALIANT_OF_ORGRIMMAR = 13707,
QUEST_A_VALIANT_OF_ORGRIMMAR = 13691,
QUEST_VALIANT_OF_SEN_JIN = 13708,
QUEST_A_VALIANT_OF_SEN_JIN = 13693,
QUEST_VALIANT_OF_THUNDER_BLUFF = 13709,
QUEST_A_VALIANT_OF_THUNDER_BLUFF = 13694,
QUEST_VALIANT_OF_UNDERCITY = 13710,
QUEST_A_VALIANT_OF_UNDERCITY = 13695,
QUEST_VALIANT_OF_SILVERMOON = 13711,
QUEST_A_VALIANT_OF_SILVERMOON = 13696
};
class spell_gen_on_tournament_mount : public SpellScriptLoader
{
public:
spell_gen_on_tournament_mount() : SpellScriptLoader("spell_gen_on_tournament_mount") { }
class spell_gen_on_tournament_mount_AuraScript : public AuraScript
{
PrepareAuraScript(spell_gen_on_tournament_mount_AuraScript);
public:
spell_gen_on_tournament_mount_AuraScript()
{
_pennantSpellId = 0;
}
private:
uint32 _pennantSpellId;
bool Load() override
{
return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER;
}
void HandleApplyEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
{
if (Unit* vehicle = caster->GetVehicleBase())
{
_pennantSpellId = GetPennatSpellId(caster->ToPlayer(), vehicle);
caster->CastSpell(caster, _pennantSpellId, true);
}
}
}
void HandleRemoveEffect(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
if (Unit* caster = GetCaster())
caster->RemoveAurasDueToSpell(_pennantSpellId);
}
uint32 GetPennatSpellId(Player* player, Unit* mount)
{
switch (mount->GetEntry())
{
case NPC_ARGENT_STEED_ASPIRANT:
case NPC_STORMWIND_STEED:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_STORMWIND))
return SPELL_PENNANT_STORMWIND_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_STORMWIND) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_STORMWIND))
return SPELL_PENNANT_STORMWIND_VALIANT;
else
return SPELL_PENNANT_STORMWIND_ASPIRANT;
}
case NPC_GNOMEREGAN_MECHANOSTRIDER:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_GNOMEREGAN))
return SPELL_PENNANT_GNOMEREGAN_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_GNOMEREGAN) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_GNOMEREGAN))
return SPELL_PENNANT_GNOMEREGAN_VALIANT;
else
return SPELL_PENNANT_GNOMEREGAN_ASPIRANT;
}
case NPC_DARK_SPEAR_RAPTOR:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_SEN_JIN))
return SPELL_PENNANT_SEN_JIN_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_SEN_JIN) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_SEN_JIN))
return SPELL_PENNANT_SEN_JIN_VALIANT;
else
return SPELL_PENNANT_SEN_JIN_ASPIRANT;
}
case NPC_ARGENT_HAWKSTRIDER_ASPIRANT:
case NPC_SILVERMOON_HAWKSTRIDER:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_SILVERMOON))
return SPELL_PENNANT_SILVERMOON_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_SILVERMOON) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_SILVERMOON))
return SPELL_PENNANT_SILVERMOON_VALIANT;
else
return SPELL_PENNANT_SILVERMOON_ASPIRANT;
}
case NPC_DARNASSIAN_NIGHTSABER:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_DARNASSUS))
return SPELL_PENNANT_DARNASSUS_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_DARNASSUS) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_DARNASSUS))
return SPELL_PENNANT_DARNASSUS_VALIANT;
else
return SPELL_PENNANT_DARNASSUS_ASPIRANT;
}
case NPC_EXODAR_ELEKK:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_THE_EXODAR))
return SPELL_PENNANT_EXODAR_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_THE_EXODAR) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_THE_EXODAR))
return SPELL_PENNANT_EXODAR_VALIANT;
else
return SPELL_PENNANT_EXODAR_ASPIRANT;
}
case NPC_IRONFORGE_RAM:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_IRONFORGE))
return SPELL_PENNANT_IRONFORGE_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_IRONFORGE) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_IRONFORGE))
return SPELL_PENNANT_IRONFORGE_VALIANT;
else
return SPELL_PENNANT_IRONFORGE_ASPIRANT;
}
case NPC_FORSAKEN_WARHORSE:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_UNDERCITY))
return SPELL_PENNANT_UNDERCITY_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_UNDERCITY) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_UNDERCITY))
return SPELL_PENNANT_UNDERCITY_VALIANT;
else
return SPELL_PENNANT_UNDERCITY_ASPIRANT;
}
case NPC_ORGRIMMAR_WOLF:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_ORGRIMMAR))
return SPELL_PENNANT_ORGRIMMAR_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_ORGRIMMAR) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_ORGRIMMAR))
return SPELL_PENNANT_ORGRIMMAR_VALIANT;
else
return SPELL_PENNANT_ORGRIMMAR_ASPIRANT;
}
case NPC_THUNDER_BLUFF_KODO:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_THUNDER_BLUFF))
return SPELL_PENNANT_THUNDER_BLUFF_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_THUNDER_BLUFF) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_THUNDER_BLUFF))
return SPELL_PENNANT_THUNDER_BLUFF_VALIANT;
else
return SPELL_PENNANT_THUNDER_BLUFF_ASPIRANT;
}
case NPC_ARGENT_WARHORSE:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_ALLIANCE) || player->HasAchieved(ACHIEVEMENT_CHAMPION_HORDE))
return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_CHAMPION : SPELL_PENNANT_ARGENT_CRUSADE_CHAMPION;
else if (player->HasAchieved(ACHIEVEMENT_ARGENT_VALOR))
return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_VALIANT : SPELL_PENNANT_ARGENT_CRUSADE_VALIANT;
else
return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_ASPIRANT : SPELL_PENNANT_ARGENT_CRUSADE_ASPIRANT;
}
default:
return 0;
}
}
void Register() override
{
AfterEffectApply += AuraEffectApplyFn(spell_gen_on_tournament_mount_AuraScript::HandleApplyEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
OnEffectRemove += AuraEffectRemoveFn(spell_gen_on_tournament_mount_AuraScript::HandleRemoveEffect, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK);
}
};
AuraScript* GetAuraScript() const override
{
return new spell_gen_on_tournament_mount_AuraScript();
}
};
class spell_gen_oracle_wolvar_reputation : public SpellScriptLoader
{
public:
@@ -4348,7 +4089,6 @@ void AddSC_generic_spell_scripts()
new spell_gen_moss_covered_feet();
new spell_gen_netherbloom();
new spell_gen_obsidian_armor();
new spell_gen_on_tournament_mount();
new spell_gen_oracle_wolvar_reputation();
new spell_gen_orc_disguise();
new spell_gen_parachute();
+244
View File
@@ -33,6 +33,7 @@
#include "SpellAuras.h"
#include "Pet.h"
#include "CreatureTextMgr.h"
#include "CombatAI.h"
#include "SmartAI.h"
#include "Vehicle.h"
#include "MoveSplineInit.h"
@@ -1475,6 +1476,248 @@ public:
}
};
enum TournamentPennantSpells
{
SPELL_PENNANT_STORMWIND_ASPIRANT = 62595,
SPELL_PENNANT_STORMWIND_VALIANT = 62596,
SPELL_PENNANT_STORMWIND_CHAMPION = 62594,
SPELL_PENNANT_GNOMEREGAN_ASPIRANT = 63394,
SPELL_PENNANT_GNOMEREGAN_VALIANT = 63395,
SPELL_PENNANT_GNOMEREGAN_CHAMPION = 63396,
SPELL_PENNANT_SEN_JIN_ASPIRANT = 63397,
SPELL_PENNANT_SEN_JIN_VALIANT = 63398,
SPELL_PENNANT_SEN_JIN_CHAMPION = 63399,
SPELL_PENNANT_SILVERMOON_ASPIRANT = 63401,
SPELL_PENNANT_SILVERMOON_VALIANT = 63402,
SPELL_PENNANT_SILVERMOON_CHAMPION = 63403,
SPELL_PENNANT_DARNASSUS_ASPIRANT = 63404,
SPELL_PENNANT_DARNASSUS_VALIANT = 63405,
SPELL_PENNANT_DARNASSUS_CHAMPION = 63406,
SPELL_PENNANT_EXODAR_ASPIRANT = 63421,
SPELL_PENNANT_EXODAR_VALIANT = 63422,
SPELL_PENNANT_EXODAR_CHAMPION = 63423,
SPELL_PENNANT_IRONFORGE_ASPIRANT = 63425,
SPELL_PENNANT_IRONFORGE_VALIANT = 63426,
SPELL_PENNANT_IRONFORGE_CHAMPION = 63427,
SPELL_PENNANT_UNDERCITY_ASPIRANT = 63428,
SPELL_PENNANT_UNDERCITY_VALIANT = 63429,
SPELL_PENNANT_UNDERCITY_CHAMPION = 63430,
SPELL_PENNANT_ORGRIMMAR_ASPIRANT = 63431,
SPELL_PENNANT_ORGRIMMAR_VALIANT = 63432,
SPELL_PENNANT_ORGRIMMAR_CHAMPION = 63433,
SPELL_PENNANT_THUNDER_BLUFF_ASPIRANT = 63434,
SPELL_PENNANT_THUNDER_BLUFF_VALIANT = 63435,
SPELL_PENNANT_THUNDER_BLUFF_CHAMPION = 63436,
SPELL_PENNANT_ARGENT_CRUSADE_ASPIRANT = 63606,
SPELL_PENNANT_ARGENT_CRUSADE_VALIANT = 63500,
SPELL_PENNANT_ARGENT_CRUSADE_CHAMPION = 63501,
SPELL_PENNANT_EBON_BLADE_ASPIRANT = 63607,
SPELL_PENNANT_EBON_BLADE_VALIANT = 63608,
SPELL_PENNANT_EBON_BLADE_CHAMPION = 63609
};
enum TournamentMounts
{
NPC_STORMWIND_STEED = 33217,
NPC_IRONFORGE_RAM = 33316,
NPC_GNOMEREGAN_MECHANOSTRIDER = 33317,
NPC_EXODAR_ELEKK = 33318,
NPC_DARNASSIAN_NIGHTSABER = 33319,
NPC_ORGRIMMAR_WOLF = 33320,
NPC_DARK_SPEAR_RAPTOR = 33321,
NPC_THUNDER_BLUFF_KODO = 33322,
NPC_SILVERMOON_HAWKSTRIDER = 33323,
NPC_FORSAKEN_WARHORSE = 33324,
NPC_ARGENT_WARHORSE = 33782,
NPC_ARGENT_STEED_ASPIRANT = 33845,
NPC_ARGENT_HAWKSTRIDER_ASPIRANT = 33844
};
enum TournamentQuestsAchievements
{
ACHIEVEMENT_CHAMPION_STORMWIND = 2781,
ACHIEVEMENT_CHAMPION_DARNASSUS = 2777,
ACHIEVEMENT_CHAMPION_IRONFORGE = 2780,
ACHIEVEMENT_CHAMPION_GNOMEREGAN = 2779,
ACHIEVEMENT_CHAMPION_THE_EXODAR = 2778,
ACHIEVEMENT_CHAMPION_ORGRIMMAR = 2783,
ACHIEVEMENT_CHAMPION_SEN_JIN = 2784,
ACHIEVEMENT_CHAMPION_THUNDER_BLUFF = 2786,
ACHIEVEMENT_CHAMPION_UNDERCITY = 2787,
ACHIEVEMENT_CHAMPION_SILVERMOON = 2785,
ACHIEVEMENT_ARGENT_VALOR = 2758,
ACHIEVEMENT_CHAMPION_ALLIANCE = 2782,
ACHIEVEMENT_CHAMPION_HORDE = 2788,
QUEST_VALIANT_OF_STORMWIND = 13593,
QUEST_A_VALIANT_OF_STORMWIND = 13684,
QUEST_VALIANT_OF_DARNASSUS = 13706,
QUEST_A_VALIANT_OF_DARNASSUS = 13689,
QUEST_VALIANT_OF_IRONFORGE = 13703,
QUEST_A_VALIANT_OF_IRONFORGE = 13685,
QUEST_VALIANT_OF_GNOMEREGAN = 13704,
QUEST_A_VALIANT_OF_GNOMEREGAN = 13688,
QUEST_VALIANT_OF_THE_EXODAR = 13705,
QUEST_A_VALIANT_OF_THE_EXODAR = 13690,
QUEST_VALIANT_OF_ORGRIMMAR = 13707,
QUEST_A_VALIANT_OF_ORGRIMMAR = 13691,
QUEST_VALIANT_OF_SEN_JIN = 13708,
QUEST_A_VALIANT_OF_SEN_JIN = 13693,
QUEST_VALIANT_OF_THUNDER_BLUFF = 13709,
QUEST_A_VALIANT_OF_THUNDER_BLUFF = 13694,
QUEST_VALIANT_OF_UNDERCITY = 13710,
QUEST_A_VALIANT_OF_UNDERCITY = 13695,
QUEST_VALIANT_OF_SILVERMOON = 13711,
QUEST_A_VALIANT_OF_SILVERMOON = 13696
};
class npc_tournament_mount : public CreatureScript
{
public:
npc_tournament_mount() : CreatureScript("npc_tournament_mount") { }
struct npc_tournament_mountAI : public VehicleAI
{
npc_tournament_mountAI(Creature* creature) : VehicleAI(creature)
{
_pennantSpellId = 0;
}
void PassengerBoarded(Unit* passenger, int8 /*seatId*/, bool apply) override
{
Player* player = passenger->ToPlayer();
if (!player)
return;
if (apply)
{
_pennantSpellId = GetPennantSpellId(player);
player->CastSpell((Unit*)nullptr, _pennantSpellId, true);
}
else
player->RemoveAurasDueToSpell(_pennantSpellId);
}
private:
uint32 _pennantSpellId;
uint32 GetPennantSpellId(Player* player) const
{
switch (me->GetEntry())
{
case NPC_ARGENT_STEED_ASPIRANT:
case NPC_STORMWIND_STEED:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_STORMWIND))
return SPELL_PENNANT_STORMWIND_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_STORMWIND) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_STORMWIND))
return SPELL_PENNANT_STORMWIND_VALIANT;
else
return SPELL_PENNANT_STORMWIND_ASPIRANT;
}
case NPC_GNOMEREGAN_MECHANOSTRIDER:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_GNOMEREGAN))
return SPELL_PENNANT_GNOMEREGAN_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_GNOMEREGAN) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_GNOMEREGAN))
return SPELL_PENNANT_GNOMEREGAN_VALIANT;
else
return SPELL_PENNANT_GNOMEREGAN_ASPIRANT;
}
case NPC_DARK_SPEAR_RAPTOR:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_SEN_JIN))
return SPELL_PENNANT_SEN_JIN_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_SEN_JIN) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_SEN_JIN))
return SPELL_PENNANT_SEN_JIN_VALIANT;
else
return SPELL_PENNANT_SEN_JIN_ASPIRANT;
}
case NPC_ARGENT_HAWKSTRIDER_ASPIRANT:
case NPC_SILVERMOON_HAWKSTRIDER:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_SILVERMOON))
return SPELL_PENNANT_SILVERMOON_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_SILVERMOON) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_SILVERMOON))
return SPELL_PENNANT_SILVERMOON_VALIANT;
else
return SPELL_PENNANT_SILVERMOON_ASPIRANT;
}
case NPC_DARNASSIAN_NIGHTSABER:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_DARNASSUS))
return SPELL_PENNANT_DARNASSUS_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_DARNASSUS) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_DARNASSUS))
return SPELL_PENNANT_DARNASSUS_VALIANT;
else
return SPELL_PENNANT_DARNASSUS_ASPIRANT;
}
case NPC_EXODAR_ELEKK:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_THE_EXODAR))
return SPELL_PENNANT_EXODAR_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_THE_EXODAR) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_THE_EXODAR))
return SPELL_PENNANT_EXODAR_VALIANT;
else
return SPELL_PENNANT_EXODAR_ASPIRANT;
}
case NPC_IRONFORGE_RAM:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_IRONFORGE))
return SPELL_PENNANT_IRONFORGE_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_IRONFORGE) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_IRONFORGE))
return SPELL_PENNANT_IRONFORGE_VALIANT;
else
return SPELL_PENNANT_IRONFORGE_ASPIRANT;
}
case NPC_FORSAKEN_WARHORSE:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_UNDERCITY))
return SPELL_PENNANT_UNDERCITY_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_UNDERCITY) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_UNDERCITY))
return SPELL_PENNANT_UNDERCITY_VALIANT;
else
return SPELL_PENNANT_UNDERCITY_ASPIRANT;
}
case NPC_ORGRIMMAR_WOLF:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_ORGRIMMAR))
return SPELL_PENNANT_ORGRIMMAR_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_ORGRIMMAR) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_ORGRIMMAR))
return SPELL_PENNANT_ORGRIMMAR_VALIANT;
else
return SPELL_PENNANT_ORGRIMMAR_ASPIRANT;
}
case NPC_THUNDER_BLUFF_KODO:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_THUNDER_BLUFF))
return SPELL_PENNANT_THUNDER_BLUFF_CHAMPION;
else if (player->GetQuestRewardStatus(QUEST_VALIANT_OF_THUNDER_BLUFF) || player->GetQuestRewardStatus(QUEST_A_VALIANT_OF_THUNDER_BLUFF))
return SPELL_PENNANT_THUNDER_BLUFF_VALIANT;
else
return SPELL_PENNANT_THUNDER_BLUFF_ASPIRANT;
}
case NPC_ARGENT_WARHORSE:
{
if (player->HasAchieved(ACHIEVEMENT_CHAMPION_ALLIANCE) || player->HasAchieved(ACHIEVEMENT_CHAMPION_HORDE))
return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_CHAMPION : SPELL_PENNANT_ARGENT_CRUSADE_CHAMPION;
else if (player->HasAchieved(ACHIEVEMENT_ARGENT_VALOR))
return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_VALIANT : SPELL_PENNANT_ARGENT_CRUSADE_VALIANT;
else
return player->getClass() == CLASS_DEATH_KNIGHT ? SPELL_PENNANT_EBON_BLADE_ASPIRANT : SPELL_PENNANT_ARGENT_CRUSADE_ASPIRANT;
}
default:
return 0;
}
}
};
CreatureAI* GetAI(Creature* creature) const override
{
return new npc_tournament_mountAI(creature);
}
};
/*####
## npc_brewfest_reveler
####*/
@@ -2724,6 +2967,7 @@ void AddSC_npcs_special()
new npc_sayge();
new npc_steam_tonk();
new npc_tonk_mine();
new npc_tournament_mount();
new npc_brewfest_reveler();
new npc_training_dummy();
new npc_wormhole();