Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class npc_announcer_toc10 : public CreatureScript
- {
- public:
- npc_announcer_toc10() : CreatureScript("npc_announcer_toc10") { }
- struct npc_announcer_toc10AI : public ScriptedAI
- {
- npc_announcer_toc10AI(Creature* pCreature) : ScriptedAI(pCreature)
- {
- m_pInstance = (InstanceScript*)pCreature->GetInstanceScript();
- }
- InstanceScript* m_pInstance;
- void Reset()
- {
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- if (Creature *pAlly = GetClosestCreatureWithEntry(me, NPC_THRALL, 300.0f))
- pAlly->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- if (Creature *pAlly = GetClosestCreatureWithEntry(me, NPC_PROUDMOORE, 300.0f))
- pAlly->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- }
- void AttackStart(Unit* /*pWho*/) {}
- };
- bool OnGossipHello(Player* pPlayer, Creature* pCreature)
- {
- InstanceScript* m_pInstance;
- m_pInstance = (InstanceScript*)pCreature->GetInstanceScript();
- if (!m_pInstance) return false;
- char const* _message = "We are ready!";
- if (!pPlayer->getAttackers().empty() || m_pInstance->IsEncounterInProgress() || m_pInstance->GetData(TYPE_EVENT))
- return true;
- uint8 i;
- for (i = 0; i < NUM_MESSAGES; i++)
- {
- if ((!_GossipMessage[i].state && m_pInstance->GetData(_GossipMessage[i].encounter) != DONE)
- || (_GossipMessage[i].state && m_pInstance->GetData(_GossipMessage[i].encounter) == DONE))
- {
- pPlayer->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, _message, GOSSIP_SENDER_MAIN,_GossipMessage[i].id);
- break;
- }
- }
- pPlayer->SEND_GOSSIP_MENU(_GossipMessage[i].msgnum, pCreature->GetGUID());
- return true;
- }
- bool OnGossipSelect(Player* pPlayer, Creature* pCreature, uint32 /*uiSender*/, uint32 uiAction)
- {
- InstanceScript* m_pInstance;
- m_pInstance = (InstanceScript*)pCreature->GetInstanceScript();
- if (!m_pInstance) return false;
- pPlayer->CLOSE_GOSSIP_MENU();
- switch(uiAction) {
- case GOSSIP_ACTION_INFO_DEF+1:
- if (m_pInstance->GetData(TYPE_BEASTS) != DONE)
- {
- m_pInstance->SetData(TYPE_EVENT,110);
- m_pInstance->SetData(TYPE_NORTHREND_BEASTS,NOT_STARTED);
- m_pInstance->SetData(TYPE_BEASTS,NOT_STARTED);
- }
- break;
- case GOSSIP_ACTION_INFO_DEF+2:
- if (Creature* pJaraxxus = Unit::GetCreature(*pCreature,m_pInstance->GetData64(NPC_JARAXXUS)))
- {
- pJaraxxus->RemoveAurasDueToSpell(SPELL_JARAXXUS_CHAINS);
- pJaraxxus->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
- pJaraxxus->SetReactState(REACT_AGGRESSIVE);
- pJaraxxus->SetInCombatWithZone();
- }
- else
- {
- if (m_pInstance->GetData(TYPE_JARAXXUS) != DONE)
- {
- m_pInstance->SetData(TYPE_EVENT,1010);
- m_pInstance->SetData(TYPE_JARAXXUS,NOT_STARTED);
- }
- }
- break;
- case GOSSIP_ACTION_INFO_DEF+3:
- if (m_pInstance->GetData(TYPE_CRUSADERS) != DONE)
- {
- if (pPlayer->GetTeam() == ALLIANCE) m_pInstance->SetData(TYPE_EVENT,3000);
- else m_pInstance->SetData(TYPE_EVENT,3001);
- m_pInstance->SetData(TYPE_CRUSADERS,NOT_STARTED);
- }
- break;
- case GOSSIP_ACTION_INFO_DEF+4:
- if (m_pInstance->GetData(TYPE_VALKIRIES) != DONE)
- {
- m_pInstance->SetData(TYPE_EVENT,4000);
- m_pInstance->SetData(TYPE_VALKIRIES,NOT_STARTED);
- }
- break;
- case GOSSIP_ACTION_INFO_DEF+5:
- {
- if (m_pInstance->GetData(TYPE_LICH_KING) != DONE && !pPlayer->isGameMaster())
- return false;
- if (GameObject* pGoFloor = m_pInstance->instance->GetGameObject(m_pInstance->GetData64(GO_ARGENT_COLISEUM_FLOOR)))
- pGoFloor->TakenDamage(1000000);
- pCreature->CastSpell(pCreature,69016,false);
- Creature* pTemp = Unit::GetCreature((*pCreature),m_pInstance->GetData64(NPC_ANUBARAK));
- if (!pTemp || !pTemp->isAlive())
- pTemp = pCreature->SummonCreature(NPC_ANUBARAK, AnubarakLoc[0].GetPositionX(), AnubarakLoc[0].GetPositionY(), AnubarakLoc[0].GetPositionZ(), 3, TEMPSUMMON_CORPSE_TIMED_DESPAWN, DESPAWN_TIME);
- m_pInstance->SetData(TYPE_ANUBARAK,NOT_STARTED);
- if (pCreature->GetVisibility() == VISIBILITY_ON)
- pCreature->SetVisibility(VISIBILITY_OFF);
- break;
- }
- }
- pCreature->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
- return true;
- }
- CreatureAI* GetAI(Creature* pCreature) const
- {
- return new npc_announcer_toc10AI(pCreature);
- }
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement