bool npc_wg_demolisher_engineer::OnGossipHello(Player* pPlayer, Creature* pCreature) { uint32 menuId = Player::GetDefaultGossipMenuForSource(pCreature); uint32 textId = pPlayer->GetGossipTextId(pCreature); if (pCreature->isQuestGiver()) pPlayer->PrepareQuestMenu(pCreature->GetGUID()); if (CanBuild(pCreature)) { if (pPlayer->HasAura(SPELL_CORPORAL) || pPlayer->HasAura(SPELL_LIEUTENANT)) pPlayer->ADD_GOSSIP_ITEM_DB(menuId, WG_GOSSIP_ENGINEER_BUILD_CATAPULT, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); if (pPlayer->HasAura(SPELL_LIEUTENANT)) { pPlayer->ADD_GOSSIP_ITEM_DB(menuId, WG_GOSSIP_ENGINEER_BUILD_DEMOLISHER, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); pPlayer->ADD_GOSSIP_ITEM_DB(menuId, WG_GOSSIP_ENGINEER_BUILD_SIEGE_ENGINE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); } } else pPlayer->ADD_GOSSIP_ITEM_DB(menuId, WG_GOSSIP_ENGINEER_CANNOT_BUILD, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); pPlayer->SEND_GOSSIP_MENU(textId, pCreature->GetGUID()); return true; }
bool OnGossipHello(Player* player, Creature* creature) override { if (creature->IsQuestGiver()) player->PrepareQuestMenu(creature->GetGUID()); if (CanBuild(creature)) { if (player->HasAura(SPELL_CORPORAL)) AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); else if (player->HasAura(SPELL_LIEUTENANT)) { AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF); AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1); AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2); } } else AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_HELLO_DEMO4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 9); SendGossipMenuFor(player, player->GetGossipTextId(creature), creature->GetGUID()); return true; }
bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override { CloseGossipMenuFor(player); if (CanBuild(creature)) { switch (action - GOSSIP_ACTION_INFO_DEF) { case 0: creature->CastSpell(player, SPELL_BUILD_CATAPULT_FORCE, true); break; case 1: creature->CastSpell(player, SPELL_BUILD_DEMOLISHER_FORCE, true); break; case 2: creature->CastSpell(player, player->GetTeamId() == TEAM_ALLIANCE ? SPELL_BUILD_SIEGE_VEHICLE_FORCE_ALLIANCE : SPELL_BUILD_SIEGE_VEHICLE_FORCE_HORDE, true); break; } if (Creature* controlArms = creature->FindNearestCreature(NPC_WINTERGRASP_CONTROL_ARMS, 30.0f, true)) creature->CastSpell(controlArms, SPELL_ACTIVATE_CONTROL_ARMS, true); } return true; }
bool npc_wg_demolisher_engineer::OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*sender*/, uint32 action) { pPlayer->CLOSE_GOSSIP_MENU(); if (CanBuild(pCreature)) { switch (action - GOSSIP_ACTION_INFO_DEF) { case 0: pPlayer->CastSpell(pPlayer, SPELL_BUILD_CATAPULT_FORCE, true); break; case 1: pPlayer->CastSpell(pPlayer, SPELL_BUILD_DEMOLISHER_FORCE, true); break; case 2: pPlayer->CastSpell(pPlayer, pPlayer->GetTeamId() == TEAM_ALLIANCE ? SPELL_BUILD_SIEGE_VEHICLE_FORCE_ALLIANCE : SPELL_BUILD_SIEGE_VEHICLE_FORCE_HORDE, true); break; } if (Creature* pCreatureArms = pCreature->FindNearestCreature(BATTLEFIELD_WG_NPC_CONTROL_ARMS, 30.0f, true)) pCreature->CastSpell(pCreatureArms, SPELL_ACTIVATE_CONTROL_ARMS, true); } return true; }
int CPlayerClassDefender::CanBuildSentryGun() { return CanBuild( OBJ_SENTRYGUN_ROCKET_LAUNCHER ) == CB_CAN_BUILD || CanBuild( OBJ_SENTRYGUN_PLASMA ) == CB_CAN_BUILD; }