garrisons work
This commit is contained in:
@@ -14181,6 +14181,9 @@ void Player::OnGossipSelect(WorldObject* source, int32 gossipOptionId, uint32 me
|
|||||||
case GossipOptionNpc::BarbersChoice:
|
case GossipOptionNpc::BarbersChoice:
|
||||||
handled = false;
|
handled = false;
|
||||||
break;
|
break;
|
||||||
|
case GossipOptionNpc::GarrisonMissionNpc:
|
||||||
|
handled = false;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
handled = false;
|
handled = false;
|
||||||
break;
|
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_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_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_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_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_FULLY_HEAL_ALL_FOLLOWERS, STATUS_UNHANDLED, PROCESS_INPLACE, &WorldSession::Handle_NULL);
|
||||||
DEFINE_HANDLER(CMSG_GARRISON_GENERATE_RECRUITS, 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_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_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_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_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_GENERATE_RANDOM_CHARACTER_NAME, STATUS_AUTHED, PROCESS_THREADUNSAFE, &WorldSession::HandleRandomizeCharNameOpcode);
|
||||||
DEFINE_HANDLER(CMSG_GET_ACCOUNT_CHARACTER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
DEFINE_HANDLER(CMSG_GET_ACCOUNT_CHARACTER_LIST, STATUS_UNHANDLED, PROCESS_THREADUNSAFE, &WorldSession::Handle_NULL);
|
||||||
|
|||||||
@@ -38,7 +38,19 @@ enum BarosAlexstonMisc
|
|||||||
// Spells
|
// Spells
|
||||||
SPELL_QUEST_34586_KILLCREDIT = 161033,
|
SPELL_QUEST_34586_KILLCREDIT = 161033,
|
||||||
SPELL_CREATE_GARRISON_SHADOWMOON_VALLEY_ALLIANCE = 156020,
|
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 };
|
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()
|
void AddSC_draenor_shadowmoon_valley()
|
||||||
{
|
{
|
||||||
RegisterCreatureAI(npc_baros_alexston);
|
RegisterCreatureAI(npc_baros_alexston);
|
||||||
|
RegisterSpellScript(spell_ping_crystal_deactivate);
|
||||||
|
RegisterSpellScript(spell_shadowmoon_claiming);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user