Пример #1
0
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;
        }
Пример #4
0
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;
}