garrisons work
This commit is contained in:
@@ -14181,6 +14181,9 @@ void Player::OnGossipSelect(WorldObject* source, int32 gossipOptionId, uint32 me
|
||||
case GossipOptionNpc::BarbersChoice:
|
||||
handled = false;
|
||||
break;
|
||||
case GossipOptionNpc::GarrisonMissionNpc:
|
||||
handled = false;
|
||||
break;
|
||||
default:
|
||||
handled = false;
|
||||
break;
|
||||
|
||||
@@ -462,7 +462,7 @@ void OpcodeTable::InitializeClientOpcodes()
|
||||
DEFINE_HANDLER(CMSG_GARRISON_ADD_FOLLOWER_HEALTH, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_ASSIGN_FOLLOWER_TO_BUILDING, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_CANCEL_CONSTRUCTION, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGarrisonCancelConstruction);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_CHECK_UPGRADEABLE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_CHECK_UPGRADEABLE, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGarrisonCheckUpgradeable);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_COMPLETE_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_FULLY_HEAL_ALL_FOLLOWERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_GENERATE_RECRUITS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
@@ -484,7 +484,7 @@ void OpcodeTable::InitializeClientOpcodes()
|
||||
DEFINE_HANDLER(CMSG_GARRISON_SET_FOLLOWER_INACTIVE, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_SET_RECRUITMENT_PREFERENCES, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_SOCKET_TALENT, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleGarrisonSocketTalent);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_START_MISSION, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_START_MISSION, STATUS_LOGGEDIN, PROCESS_INPLACE, &WorldSession::HandleGarrisonStartMission);
|
||||
DEFINE_HANDLER(CMSG_GARRISON_SWAP_BUILDINGS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||
DEFINE_HANDLER(CMSG_GENERATE_RANDOM_CHARACTER_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomizeCharNameOpcode);
|
||||
DEFINE_HANDLER(CMSG_GET_ACCOUNT_CHARACTER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
||||
|
||||
@@ -38,7 +38,19 @@ enum BarosAlexstonMisc
|
||||
// Spells
|
||||
SPELL_QUEST_34586_KILLCREDIT = 161033,
|
||||
SPELL_CREATE_GARRISON_SHADOWMOON_VALLEY_ALLIANCE = 156020,
|
||||
SPELL_DESPAWN_ALL_SUMMONS_GARRISON_INTRO_ONLY = 160938
|
||||
SPELL_DESPAWN_ALL_SUMMONS_GARRISON_INTRO_ONLY = 160938,
|
||||
|
||||
};
|
||||
|
||||
enum PingCrystalMisc
|
||||
{
|
||||
KILL_CREDIT_PING_CRYSTAL = 81506,
|
||||
SPELL_PING_CRYSTAL_DEACTIVATE = 163732
|
||||
};
|
||||
|
||||
enum Shadowmoonvalleynpcs
|
||||
{
|
||||
NPC_FOR_THE_ALLIANCE_PORTAL_KILL_CREDIT = 79433,
|
||||
};
|
||||
|
||||
Position const GarrisonLevelOneCreationPlayerPosition = { 1904.58f, 312.906f, 88.9542f, 4.303615f };
|
||||
@@ -70,7 +82,57 @@ struct npc_baros_alexston : public ScriptedAI
|
||||
}
|
||||
};
|
||||
|
||||
// 163732 - Ping Crystal Deactivate (Internal Only)
|
||||
class spell_ping_crystal_deactivate : public SpellScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
void HandleCast()
|
||||
{
|
||||
Unit* caster = GetCaster();
|
||||
if (!caster || !caster->IsPlayer())
|
||||
return;
|
||||
|
||||
Player* player = caster->ToPlayer();
|
||||
|
||||
// Give kill credit
|
||||
player->KilledMonsterCredit(KILL_CREDIT_PING_CRYSTAL);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnCast += SpellCastFn(spell_ping_crystal_deactivate::HandleCast);
|
||||
}
|
||||
};
|
||||
|
||||
// Revendication 169455
|
||||
class spell_shadowmoon_claiming : public SpellScript
|
||||
{
|
||||
void HandleDummy(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (!GetCaster())
|
||||
return;
|
||||
|
||||
Player* player = GetCaster()->ToPlayer();
|
||||
|
||||
if (!player)
|
||||
return;
|
||||
|
||||
player->KilledMonsterCredit(NPC_FOR_THE_ALLIANCE_PORTAL_KILL_CREDIT);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_shadowmoon_claiming::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_draenor_shadowmoon_valley()
|
||||
{
|
||||
RegisterCreatureAI(npc_baros_alexston);
|
||||
RegisterSpellScript(spell_ping_crystal_deactivate);
|
||||
RegisterSpellScript(spell_shadowmoon_claiming);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user