コード例 #1
0
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        npc_barnesAI* pBarnesAI = ENSURE_AI(npc_barnes::npc_barnesAI, creature->AI());

        switch (action)
        {
            case GOSSIP_ACTION_INFO_DEF+1:
                AddGossipItemFor(player, GOSSIP_ICON_CHAT, OZ_GOSSIP2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
                SendGossipMenuFor(player, 8971, creature->GetGUID());
                break;
            case GOSSIP_ACTION_INFO_DEF+2:
                CloseGossipMenuFor(player);
                pBarnesAI->StartEvent();
                break;
            case GOSSIP_ACTION_INFO_DEF+3:
                CloseGossipMenuFor(player);
                pBarnesAI->m_uiEventId = EVENT_OZ;
                TC_LOG_DEBUG("scripts", "player (%s) manually set Opera event to EVENT_OZ", player->GetGUID().ToString().c_str());
                break;
            case GOSSIP_ACTION_INFO_DEF+4:
                CloseGossipMenuFor(player);
                pBarnesAI->m_uiEventId = EVENT_HOOD;
                TC_LOG_DEBUG("scripts", "player (%s) manually set Opera event to EVENT_HOOD", player->GetGUID().ToString().c_str());
                break;
            case GOSSIP_ACTION_INFO_DEF+5:
                CloseGossipMenuFor(player);
                pBarnesAI->m_uiEventId = EVENT_RAJ;
                TC_LOG_DEBUG("scripts", "player (%s) manually set Opera event to EVENT_RAJ", player->GetGUID().ToString().c_str());
                break;
        }

        return true;
    }
コード例 #2
0
 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
 {
     ClearGossipMenuFor(player);
     switch (action)
     {
         case GOSSIP_ACTION_INFO_DEF:
             AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
             SendGossipMenuFor(player, 9227, creature->GetGUID());
             break;
         case GOSSIP_ACTION_INFO_DEF + 1:
             AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KUR3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
             SendGossipMenuFor(player, 9229, creature->GetGUID());
             break;
         case GOSSIP_ACTION_INFO_DEF + 2:
         {
             if (!player->HasItemCount(24573))
             {
                 ItemPosCountVec dest;
                 uint32 itemId = 24573;
                 InventoryResult msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, itemId, 1, NULL);
                 if (msg == EQUIP_ERR_OK)
                 {
                     player->StoreNewItem(dest, itemId, true);
                 }
                 else
                     player->SendEquipError(msg, NULL, NULL, itemId);
             }
             SendGossipMenuFor(player, 9231, creature->GetGUID());
             break;
         }
     }
     return true;
 }
コード例 #3
0
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        uint32 spellId = 0;

        switch (action)
        {
            case GOSSIP_ACTION_INFO_DEF + 1:
                spellId = SPELL_ADD_ORANGE;
                break;
            case GOSSIP_ACTION_INFO_DEF + 2:
                spellId = SPELL_ADD_BANANAS;
                break;
            case GOSSIP_ACTION_INFO_DEF + 3:
                spellId = SPELL_ADD_PAPAYA;
                break;
        }

        if (spellId)
            player->CastSpell(player, spellId, true);

        creature->AI()->Talk(SAY_DWARF_HELP);
        creature->DespawnOrUnsummon();
        return true;
    }
コード例 #4
0
 bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
 {
     uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
     ClearGossipMenuFor(player);
     DeSpawnVeins();//despawn the alliance veins
     switch (action)
     {
         case GOSSIP_ACTION_INFO_DEF + 1:
             StartEvent(player);
             break;
         case GOSSIP_ACTION_INFO_DEF + 2:
             FirstBossDead = true;
             WaveCount = 9;
             StartEvent(player);
             break;
         case GOSSIP_ACTION_INFO_DEF + 3:
             Retreat();
             break;
         case GOSSIP_ACTION_INFO_DEF:
             Debug = !Debug;
             TC_LOG_DEBUG("scripts", "HyjalAI - Debug mode has been toggled");
             break;
     }
     return true;
 }
コード例 #5
0
        bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
        {
            uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
            ClearGossipMenuFor(player);
            switch (action)
            {
                case GOSSIP_ACTION_INFO_DEF:
                    AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 1);
                    SendGossipMenuFor(player, 12500, me->GetGUID());
                    break;
                case GOSSIP_ACTION_INFO_DEF + 1:
                    AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 2);
                    SendGossipMenuFor(player, 12502, me->GetGUID());
                    break;
                case GOSSIP_ACTION_INFO_DEF + 2:
                    AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 3);
                    SendGossipMenuFor(player, 12606, me->GetGUID());
                    break;
                case GOSSIP_ACTION_INFO_DEF + 3:
                    AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_KAEL_5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 4);
                    SendGossipMenuFor(player, 12607, me->GetGUID());
                    break;
                case GOSSIP_ACTION_INFO_DEF + 4:
                    SendGossipMenuFor(player, 12608, me->GetGUID());
                    break;
            }

            return true;
        }
コード例 #6
0
ファイル: old_hillsbrad.cpp プロジェクト: Lyill/TrinityCore
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        InstanceScript* instance = creature->GetInstanceScript();
        if (action == GOSSIP_ACTION_INFO_DEF+1)
        {
            AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_EPOCH2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
            SendGossipMenuFor(player, GOSSIP_ID_EPOCH2, creature->GetGUID());
        }
        if (action == GOSSIP_ACTION_INFO_DEF+2)
        {
            CloseGossipMenuFor(player);

            if (instance->GetData(TYPE_THRALL_EVENT) == IN_PROGRESS)
            {
                instance->SetData(TYPE_THRALL_PART4, IN_PROGRESS);
                if (instance->GetGuidData(DATA_EPOCH).IsEmpty())
                     creature->SummonCreature(ENTRY_EPOCH, 2639.13f, 698.55f, 65.43f, 4.59f, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 120000);

                if (Creature* thrall = (ObjectAccessor::GetCreature(*creature, instance->GetGuidData(DATA_THRALL))))
                    ENSURE_AI(npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, thrall->AI())->StartWP();
            }
        }
        return true;
    }
コード例 #7
0
 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
 {
     ClearGossipMenuFor(player);
     if (action == GOSSIP_ACTION_TRADE)
         player->GetSession()->SendListInventory(creature->GetGUID());
     return true;
 }
コード例 #8
0
 bool OnGossipSelect(Player* player, GameObject* go, uint32 sender, uint32 action) override
 {
     ClearGossipMenuFor(player);
     switch (sender)
     {
         case GOSSIP_SENDER_MAIN:    SendActionMenu(player, go, action); break;
     }
     return true;
 }
コード例 #9
0
 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
 {
     ClearGossipMenuFor(player);
     if (action == GOSSIP_ACTION_INFO_DEF)
     {
         CloseGossipMenuFor(player);
         creature->setFaction(FACTION_HOSTILE_CO);
         creature->AI()->AttackStart(player);
     }
     return true;
 }
コード例 #10
0
 bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
 {
     uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
     ClearGossipMenuFor(player);
     if (action == GOSSIP_SENDER_INFO)
     {
         player->CastSpell(player, 23123, false);
         SendGossipMenuFor(player, 7014, me->GetGUID());
     }
     return true;
 }
コード例 #11
0
 bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
 {
     uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
     ClearGossipMenuFor(player);
     if (action == GOSSIP_ACTION_INFO_DEF + 1)
     {
         CloseGossipMenuFor(player);
         //here we make him run to door, set the charge and run away off to nowhere
         DestroyDoor();
     }
     return true;
 }
コード例 #12
0
 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
 {
     ClearGossipMenuFor(player);
     switch (action)
     {
         case GOSSIP_ACTION_INFO_DEF:
             CloseGossipMenuFor(player);
             ENSURE_AI(npc_expedition_commanderAI, creature->AI())->Phase = 1;
             break;
     }
     return true;
 }
コード例 #13
0
 bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
 {
     uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
     ClearGossipMenuFor(player);
     if (action == GOSSIP_ACTION_INFO_DEF + 1)
     {
         CloseGossipMenuFor(player);
         PlayerGUID = player->GetGUID();
         DoAction(0);
     }
     return true;
 }
コード例 #14
0
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        if (action == GOSSIP_ACTION_INFO_DEF+1)
        {
            CloseGossipMenuFor(player);

            if (npc_escortAI* pEscortAI = CAST_AI(npc_shadowfang_prisoner::npc_shadowfang_prisonerAI, creature->AI()))
                pEscortAI->Start(false, false);
        }
        return true;
    }
コード例 #15
0
        bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
        {
            uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
            ClearGossipMenuFor(player);
            if (action == GOSSIP_ACTION_INFO_DEF + 1)
            {
                CloseGossipMenuFor(player);

                Talk(EMOTE_START);
                StartFollow(player);
            }

            return true;
        }
コード例 #16
0
 void sGossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
 {
     ClearGossipMenuFor(player);
     switch (gossipListId)
     {
         case 1:
             CloseGossipMenuFor(player);
             me->AI()->Talk(SAY_BARADA_1);
             me->AI()->DoAction(ACTION_START_EVENT);
             break;
         default:
             break;
     }
 }
コード例 #17
0
ファイル: old_hillsbrad.cpp プロジェクト: Lyill/TrinityCore
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        InstanceScript* instance = creature->GetInstanceScript();
        switch (action)
        {
            case GOSSIP_ACTION_INFO_DEF+1:
                CloseGossipMenuFor(player);
                if (instance)
                {
                    instance->SetData(TYPE_THRALL_EVENT, IN_PROGRESS);
                    instance->SetData(TYPE_THRALL_PART1, IN_PROGRESS);
                }

                creature->AI()->Talk(SAY_TH_START_EVENT_PART1);

                if (npc_escortAI* pEscortAI = CAST_AI(npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, creature->AI()))
                    pEscortAI->Start(true, true, player->GetGUID());

                ENSURE_AI(npc_escortAI, (creature->AI()))->SetMaxPlayerDistance(100.0f);//not really needed, because it will not despawn if player is too far
                ENSURE_AI(npc_escortAI, (creature->AI()))->SetDespawnAtEnd(false);
                ENSURE_AI(npc_escortAI, (creature->AI()))->SetDespawnAtFar(false);
                break;

            case GOSSIP_ACTION_INFO_DEF+2:
                AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_SKARLOC2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+20);
                SendGossipMenuFor(player, GOSSIP_ID_SKARLOC2, creature->GetGUID());
                break;

            case GOSSIP_ACTION_INFO_DEF+20:
                SendGossipMenuFor(player, GOSSIP_ID_SKARLOC3, creature->GetGUID());
                creature->SummonCreature(SKARLOC_MOUNT, 2038.81f, 270.26f, 63.20f, 5.41f, TEMPSUMMON_TIMED_DESPAWN, 12000);
                if (instance)
                    instance->SetData(TYPE_THRALL_PART2, IN_PROGRESS);

                creature->AI()->Talk(SAY_TH_START_EVENT_PART2);

                ENSURE_AI(npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, creature->AI())->StartWP();
                break;

            case GOSSIP_ACTION_INFO_DEF+3:
                CloseGossipMenuFor(player);
                if (instance)
                    instance->SetData(TYPE_THRALL_PART3, IN_PROGRESS);
                ENSURE_AI(npc_thrall_old_hillsbrad::npc_thrall_old_hillsbradAI, creature->AI())->StartWP();
                break;
        }
        return true;
    }
コード例 #18
0
            bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
            {
                uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);

                ClearGossipMenuFor(player);
                if (action == GOSSIP_ACTION_INFO_DEF + 1)
                {
                    CloseGossipMenuFor(player);
                    player->CastSpell(player, SPELL_CREATE_THORIUM_BROTHERHOOD_CONTRACT_DND, false);
                }
                if (action == GOSSIP_ACTION_TRADE)
                    player->GetSession()->SendListInventory(me->GetGUID());

                return true;
            }
コード例 #19
0
 bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
 {
     ClearGossipMenuFor(player);
     switch (gossipListId)
     {
         case 1:
             player->PlayerTalkClass->SendCloseGossip();
             me->AI()->Talk(SAY_BARADA_1);
             me->AI()->DoAction(ACTION_START_EVENT);
             break;
         default:
             break;
     }
     return false;
 }
コード例 #20
0
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        if (action == GOSSIP_ACTION_INFO_DEF+1)
        {
            CloseGossipMenuFor(player);

            if (npc_threshwackonatorAI* pThreshAI = CAST_AI(npc_threshwackonator::npc_threshwackonatorAI, creature->AI()))
            {
                creature->AI()->Talk(EMOTE_START);
                pThreshAI->StartFollow(player);
            }
        }

        return true;
    }
コード例 #21
0
 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
 {
     ClearGossipMenuFor(player);
     switch (action)
     {
         case GOSSIP_ACTION_INFO_DEF + 1:
             SendGossipMenuFor(player, GOSSIP_TEXTID_RAZAEL2, creature->GetGUID());
             player->TalkedToCreature(NPC_RAZAEL, creature->GetGUID());
             break;
         case GOSSIP_ACTION_INFO_DEF + 2:
             SendGossipMenuFor(player, GOSSIP_TEXTID_LYANA2, creature->GetGUID());
             player->TalkedToCreature(NPC_LYANA, creature->GetGUID());
             break;
     }
     return true;
 }
コード例 #22
0
            bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
            {
                uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
                ClearGossipMenuFor(player);
                if (action == GOSSIP_ACTION_INFO_DEF)
                {
                    ItemPosCountVec dest;
                    uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_TEAR_OF_GODDESS, 1);
                    if (msg == EQUIP_ERR_OK)
                        if (Item* item = player->StoreNewItem(dest, ITEM_TEAR_OF_GODDESS, true))
                            player->SendNewItem(item, 1, true, false, true);

                    SendGossipMenuFor(player, 907, me->GetGUID());
                }
                return true;
            }
コード例 #23
0
 bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
 {
     uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
     ClearGossipMenuFor(player);
     switch (action)
     {
         case GOSSIP_ACTION_INFO_DEF + 1:
             SendGossipMenuFor(player, GOSSIP_TEXTID_RAZAEL2, me->GetGUID());
             player->TalkedToCreature(NPC_RAZAEL, me->GetGUID());
             break;
         case GOSSIP_ACTION_INFO_DEF + 2:
             SendGossipMenuFor(player, GOSSIP_TEXTID_LYANA2, me->GetGUID());
             player->TalkedToCreature(NPC_LYANA, me->GetGUID());
             break;
     }
     return true;
 }
コード例 #24
0
 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
 {
     ClearGossipMenuFor(player);
     if (action == GOSSIP_ACTION_INFO_DEF)
     {
         AddGossipItemFor(player, MENU_ID_PAY_UP_OR_DIE, OPTION_ID_PAY_UP_OR_DIE, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
         SendGossipMenuFor(player, GOSSIP_HE_ALREADY_KILLED_ME, creature->GetGUID());
     }
     if (action == GOSSIP_ACTION_INFO_DEF+1)
     {
         CloseGossipMenuFor(player);
         creature->setFaction(FACTION_HOSTILE_FLOON);
         creature->AI()->Talk(SAY_FLOON_ATTACK, player);
         creature->AI()->AttackStart(player);
     }
     return true;
 }
コード例 #25
0
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        if (action == GOSSIP_ACTION_INFO_DEF + 1 && IsHolidayActive(HOLIDAY_HALLOWS_END) && !player->HasAura(SPELL_TRICK_OR_TREATED))
        {
            player->CastSpell(player, SPELL_TRICK_OR_TREATED, true);

            if (urand(0, 1))
                player->CastSpell(player, SPELL_TREAT, true);
            else
            {
                uint32 trickspell = 0;
                switch (urand(0, 13))
                {
                    case 0: trickspell = 24753; break; // cannot cast, random 30sec
                    case 1: trickspell = 24713; break; // lepper gnome costume
                    case 2: trickspell = 24735; break; // male ghost costume
                    case 3: trickspell = 24736; break; // female ghostcostume
                    case 4: trickspell = 24710; break; // male ninja costume
                    case 5: trickspell = 24711; break; // female ninja costume
                    case 6: trickspell = 24708; break; // male pirate costume
                    case 7: trickspell = 24709; break; // female pirate costume
                    case 8: trickspell = 24723; break; // skeleton costume
                    case 9: trickspell = 24753; break; // Trick
                    case 10: trickspell = 24924; break; // Hallow's End Candy
                    case 11: trickspell = 24925; break; // Hallow's End Candy
                    case 12: trickspell = 24926; break; // Hallow's End Candy
                    case 13: trickspell = 24927; break; // Hallow's End Candy
                }
                player->CastSpell(player, trickspell, true);
            }
            CloseGossipMenuFor(player);
            return true;
        }

        CloseGossipMenuFor(player);

        switch (action)
        {
            case GOSSIP_ACTION_TRADE: player->GetSession()->SendListInventory(creature->GetGUID()); break;
            case GOSSIP_ACTION_INN: player->SetBindPoint(creature->GetGUID()); break;
        }
        return true;
    }
コード例 #26
0
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        switch (action)
        {
            case GOSSIP_ACTION_INFO_DEF+1:
                AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_VEKJIK_ITEM2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
                SendGossipMenuFor(player, GOSSIP_TEXTID_VEKJIK2, creature->GetGUID());
                break;
            case GOSSIP_ACTION_INFO_DEF+2:
                CloseGossipMenuFor(player);
                creature->AI()->Talk(SAY_TEXTID_VEKJIK1, player);
                player->AreaExploredOrEventHappens(QUEST_MAKING_PEACE);
                creature->CastSpell(player, SPELL_FREANZYHEARTS_FURY, false);
                break;
        }

        return true;
    }
コード例 #27
0
ファイル: old_hillsbrad.cpp プロジェクト: Lyill/TrinityCore
 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
 {
     ClearGossipMenuFor(player);
     if (action == GOSSIP_ACTION_INFO_DEF+1)
     {
         ItemPosCountVec dest;
         uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, ITEM_ENTRY_BOMBS, 1);
         if (msg == EQUIP_ERR_OK)
         {
              player->StoreNewItem(dest, ITEM_ENTRY_BOMBS, true);
         }
         SendGossipMenuFor(player, 9515, creature->GetGUID());
     }
     if (action == GOSSIP_ACTION_INFO_DEF+2)
     {
         CloseGossipMenuFor(player);
     }
     return true;
 }
コード例 #28
0
 bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
 {
     ClearGossipMenuFor(player);
     switch (action)
     {
     case GOSSIP_ACTION_INFO_DEF+1:
         AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AOF2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
         player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXTID_AVATAR2, creature->GetGUID());
         break;
     case GOSSIP_ACTION_INFO_DEF+2:
         AddGossipItemFor(player, GOSSIP_ICON_CHAT, GOSSIP_ITEM_AOF3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
         player->PlayerTalkClass->SendGossipMenu(GOSSIP_TEXTID_AVATAR3, creature->GetGUID());
         break;
     case GOSSIP_ACTION_INFO_DEF+3:
         player->CastSpell(player, SPELL_FREYA_CONVERSATION, true);
         CloseGossipMenuFor(player);
         break;
     }
     return true;
 }
コード例 #29
0
        bool GossipSelect(Player* player, uint32 /*menuId*/, uint32 gossipListId) override
        {
            uint32 const action = player->PlayerTalkClass->GetGossipOptionAction(gossipListId);
            ClearGossipMenuFor(player);
            if (action == GOSSIP_ACTION_INFO_DEF + 1)
            {
                CloseGossipMenuFor(player);
                if (instance)
                    instance->SetData(TYPE_NARALEX_EVENT, IN_PROGRESS);

                Talk(SAY_MAKE_PREPARATIONS);

                me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
                me->SetImmuneToPC(false);

                Start(false, false, player->GetGUID());
                SetDespawnAtFar(false);
                SetDespawnAtEnd(false);
            }
            return true;
        }
コード例 #30
0
    bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) override
    {
        ClearGossipMenuFor(player);
        InstanceScript* instance = creature->GetInstanceScript();
        if (action == GOSSIP_ACTION_INFO_DEF + 1)
        {
            CloseGossipMenuFor(player);
            if (instance)
                instance->SetData(TYPE_NARALEX_EVENT, IN_PROGRESS);

            creature->AI()->Talk(SAY_MAKE_PREPARATIONS);

            creature->setFaction(250);
            creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);

            ENSURE_AI(npc_escortAI, (creature->AI()))->Start(false, false, player->GetGUID());
            ENSURE_AI(npc_escortAI, (creature->AI()))->SetDespawnAtFar(false);
            ENSURE_AI(npc_escortAI, (creature->AI()))->SetDespawnAtEnd(false);
        }
        return true;
    }