void GossipSelectOption(Object* pObject, Player* plr, uint32 Id, uint32 IntId, const char* Code) { GossipMenu* Menu; if(!pObject->IsCreature()) return; Creature* pCreature = TO_CREATURE(pObject); switch(IntId) { case 1: objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 60036, plr); // What can I purchase? Menu->SendTo(plr); break; case 2: objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 60037, plr); // What are Darkmoon Faire Prize Tickets and how do I get them? Menu->SendTo(plr); break; case 3: objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 60038, plr); // What are Darkmoon Cards? Menu->AddItem(0, "<more>", 10); Menu->SendTo(plr); break; case 4: objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 60040, plr); // What other things can I do at the faire? Menu->AddItem(0, "What are these Tonk Control Consoles?", 20); Menu->AddItem(0, "Tell me about the cannon.", 21); Menu->SendTo(plr); break; case 10: objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 60039, plr); // What are Darkmoon Cards? <more> Menu->SendTo(plr); break; case 20: objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 60041, plr); // What are these Tonk Control Consoles? Menu->SendTo(plr); break; case 21: objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 60042, plr); // Tell me about the cannon. Menu->SendTo(plr); break; } }
/* This function handles the packet from the client which is sent when we click on an npc with the flag UNIT_FLAG_SPELLCLICK and checks if there is room for us then adds us as a passenger to that vehicle*/ void WorldSession::HandleSpellClick( WorldPacket & recv_data ) { if (GetPlayer() == NULL || GetPlayer()->m_CurrentVehicle) return; CHECK_PACKET_SIZE(recv_data, 8); uint64 guid; recv_data >> guid; Vehicle* pVehicle = NULL; Unit* unit = GetPlayer()->GetMapMgr()->GetUnit(guid); Unit* pPlayer = TO_UNIT(GetPlayer()); if(!unit) return; if(!unit->IsVehicle()) { if(unit->IsCreature()) { Creature* ctr = TO_CREATURE(unit); if(ctr->GetProto()->SpellClickid) ctr->CastSpell(pPlayer, ctr->GetProto()->SpellClickid, true); else OUT_DEBUG("[SPELL][CLICK]: Unknown spell click spell on creature %u", ctr->GetEntry()); } return; } else { pVehicle = TO_VEHICLE(unit); } if(!pVehicle->GetMaxPassengerCount()) return; if(!pVehicle->GetMaxSeat()) return; // just in case. if( sEventMgr.HasEvent( pVehicle, EVENT_VEHICLE_SAFE_DELETE ) ) return; if(pVehicle->HasPassenger(pPlayer)) pVehicle->RemovePassenger(pPlayer); pVehicle->AddPassenger(pPlayer); }
void GossipSelectOption(Object* pObject, Player* plr, uint32 Id, uint32 IntId, const char * Code) { Creature* pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?(TO_CREATURE(pObject)):NULL; if(pCreature==NULL) return; switch(IntId) { case 1: { TaxiPath * path = sTaxiMgr.GetTaxiPath( 316 ); // Flight Path plr->TaxiStart( path, 295, 0 ); // Wyvern }break; } }
void GossipSelectOption(ObjectPointer pObject, PlayerPointer plr, uint32 Id, uint32 IntId, const char * Code) { CreaturePointer pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?(TO_CREATURE(pObject)):NULLCREATURE; if(pObject->GetTypeId()!=TYPEID_UNIT) return; switch(IntId) { case 1: { plr->Gossip_Complete(); pCreature->CastSpell(plr, dbcSpell.LookupEntry(42711), true); }break; } }
/// Spell Target Handling for type 18: All Party Members around the Caster in given range NOT RAID void Spell::SpellTargetAllPartyMembersRangeNR(uint32 i, uint32 j) { Player* p = p_caster; if( p == NULL ) { if( TO_CREATURE( u_caster)->IsTotem() ) p = TO_PLAYER( TO_CREATURE(u_caster)->GetSummonOwner()); else if( u_caster->IsPet() && TO_PET( u_caster )->GetPetOwner() ) p = TO_PET( u_caster )->GetPetOwner(); } if( p == NULL ) return; float r = GetDBCCastTime(i); r *= r; if( IsInrange( m_caster->GetPositionX(), m_caster->GetPositionY(), m_caster->GetPositionZ(), p, r ) ) _AddTargetForced(p->GetGUID(), i); SubGroup* subgroup = p->GetGroup() ? p->GetGroup()->GetSubGroup( p->GetSubGroup() ) : 0; if( subgroup != NULL ) { p->GetGroup()->Lock(); for(GroupMembersSet::iterator itr = subgroup->GetGroupMembersBegin(); itr != subgroup->GetGroupMembersEnd(); itr++) { if(!(*itr)->m_loggedInPlayer || m_caster == (*itr)->m_loggedInPlayer) continue; if(IsInrange(m_caster->GetPositionX(),m_caster->GetPositionY(),m_caster->GetPositionZ(),(*itr)->m_loggedInPlayer,r)) _AddTargetForced( (*itr)->m_loggedInPlayer->GetGUID(), i ); } p->GetGroup()->Unlock(); } }
void OnDamageTaken(UnitPointer mAttacker, float fAmount) { if( _unit->GetHealthPct() < 3 ) {//freeze, some kinda of animation here maybe? _unit->Root(); _unit->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2); for( uint8 i=0; i<7; i++ ) _unit->SchoolImmunityList[i] = 1; _unit->GetAIInterface()->disable_combat = true; RemoveAIUpdateEvent(); UnitPointer Volkhan = _unit->GetMapMgr()->GetUnit( _unit->GetUInt64Value( UNIT_FIELD_SUMMONEDBY ) ); if( Volkhan ) TO_CREATURE( Volkhan )->GetScript()->OnReachWP( 1337, true ); } }
void GossipSelectOption(Object* pObject, Player* plr, uint32 Id, uint32 IntId, const char* Code) { GossipMenu* Menu; if(!pObject->IsCreature()) return; Creature* pCreature = TO_CREATURE(pObject); switch(IntId) { case 1: objmgr.CreateGossipMenuForPlayer(&Menu, pCreature->GetGUID(), 60014, plr); // Silas, why is most everything at the fair free? How do you make a profit? Menu->SendTo(plr); break; } }
void GossipHello(Object* pObject, Player* plr) { if(!plr) return; GossipMenu* Menu; Creature* highchief = TO_CREATURE(pObject); if(highchief == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->HasQuest(9663)) Menu->AddItem(ICON_CHAT, plr->GetSession()->LocalizedGossipOption(454), 1); // Warn him Menu->SendTo(plr); }
void GossipHello(Object* pObject, Player* plr) { if(!plr) return; GossipMenu* Menu; Creature* general = TO_CREATURE(pObject); if(general == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->GetQuestLogForEntry(2702) || plr->HasFinishedQuest(2702)) Menu->AddItem(0, "I need to speak with Corporal.", 1); Menu->SendTo(plr); }
void GossipHello(Object* pObject, Player* plr) { if(!plr) return; GossipMenu* Menu; Creature* doctor = TO_CREATURE(pObject); if(doctor == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->HasQuest(10201) && plr->GetItemInterface()->GetItemCount(28500, 0)) Menu->AddItem(ICON_CHAT, plr->GetSession()->LocalizedGossipOption(497), 1); // Try this Menu->SendTo(plr); }
void GossipHello(Object* pObject, Player* plr) { if(!plr) return; GossipMenu* Menu; Creature* windwatcher = TO_CREATURE(pObject); if(windwatcher == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->GetQuestLogForEntry(1713)) Menu->AddItem(0, "I'm ready, Summon Him!", 1); Menu->SendTo(plr); }
void GossipSelectOption(Object* pObject, Player* pPlayer, uint32 Id, uint32 IntId, const char * Code) { if( !pObject->IsCreature() ) return; switch (IntId) { case 1: pPlayer->Gossip_Complete(); pPlayer->CastSpell( pPlayer, SPELL_ABMER_TO_COLDARRA, true ); break; case 2: pPlayer->GetSession()->SendTaxiList( TO_CREATURE( pObject ) ); break; }; };
void GossipHello(Object* pObject, Player* plr) { if (!plr) return; GossipMenu* Menu; Creature* Prisoner12 = TO_CREATURE(pObject); if (Prisoner12 == nullptr) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if (plr->HasQuest(9164)) Menu->AddItem(ICON_CHAT, plr->GetSession()->LocalizedGossipOption(462), 1); // Release Him. Menu->SendTo(plr); }
void GossipHello(Object* pObject, Player* plr, bool AutoSend) { if(!plr) return; GossipMenu *Menu; Creature* Prisoner12 = TO_CREATURE(pObject); if (Prisoner12 == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->GetQuestLogForEntry(9164)) Menu->AddItem( 0, "Release Him.", 1); if(AutoSend) Menu->SendTo(plr); }
void GossipSelectOption(Object* pObject, Player* plr, uint32 Id, uint32 IntId, const char * Code) { Creature* pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?(TO_CREATURE(pObject)):NULL; if(pCreature==NULL) return; switch(IntId) { case 1: { plr->GetQuestLogForEntry(11142)->SendQuestComplete(); TaxiPath * path = sTaxiMgr.GetTaxiPath( 724 ); // Flight Path plr->TaxiStart( path, 1147, 0 ); // Gryph }break; } }
void GossipHello(Object* pObject, Player* plr) { if(!plr) return; GossipMenu* Menu; Creature* highchief = TO_CREATURE(pObject); if(highchief == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->GetQuestLogForEntry(9663)) Menu->AddItem(0, "Warn him", 1); Menu->SendTo(plr); }
void GossipSelectOption(Object* pObject, Player* Plr, uint32 Id, uint32 IntId, const char * Code) { Creature* pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?(TO_CREATURE(pObject)):NULL; if(!pCreature) return; switch(IntId) { case 1: //Mission: The Abyssal Shelf ( GOSSIP_MISSIONA ) { //We need Horde / Alliance Check if ( Plr->GetTeam() == 1) { TaxiPath * taxipath = sTaxiMgr.GetTaxiPath(587); Plr->TaxiStart(taxipath, 18712, 0); } else { TaxiPath * taxipath = sTaxiMgr.GetTaxiPath(589); Plr->TaxiStart(taxipath, 18736, 0); } }break; case 2: { if ( Plr->GetTeam() == 1) pCreature->CastSpell(Plr, 33659, true); //Gateways Murket and Shaadraz H else pCreature->CastSpell(Plr, 33768, true); // Gateways Murket and Shaadraz A }break; case 3: //SPINEBRIDGE { pCreature->CastSpell(Plr, 34578, true); // Taxi - Reaver's Fall to Spinebreaker Ridge }break; case 4: { if(pCreature->GetEntry() == TAXI_DABIREE) pCreature->CastSpell(Plr, 35069, true); // Taxi - Hellfire Peninsula - Expedition Point to Shatter Point if(pCreature->GetEntry() == TAXI_LEAFBEARD) pCreature->CastSpell(Plr, 35066, true); // Taxi - Hellfire Peninsula - Beach Head to Shatter Point }break; case 5: { pCreature->CastSpell(Plr, 35065, true); // Taxi - Hellfire Peninsula - Shatter Point to Beach Head }break; } }
void GossipHello(ObjectPointer pObject, PlayerPointer plr, bool AutoSend) { if(!plr) return; GossipMenu *Menu; CreaturePointer doctor = TO_CREATURE(pObject); if (doctor == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->GetQuestLogForEntry(348) && plr->GetItemInterface()->GetItemCount(2799, 0) && !plr->GetItemInterface()->GetItemCount(2797, 0)) Menu->AddItem( 0, "I'm ready, Summon Him!", 1); if(AutoSend) Menu->SendTo(plr); }
void GossipHello(Object* pObject, Player* plr, bool AutoSend) { if(!plr) return; GossipMenu *Menu; Creature* doctor = TO_CREATURE(pObject); if (doctor == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->GetQuestLogForEntry(10201) && plr->GetItemInterface()->GetItemCount(28500, 0)) Menu->AddItem( 0, "Try this", 1); if(AutoSend) Menu->SendTo(plr); }
void GossipHello(Object* pObject, Player* plr, bool AutoSend) { if(!plr) return; GossipMenu *Menu; Creature* lord = TO_CREATURE(pObject); if (lord == NULL) return; objmgr.CreateGossipMenuForPlayer(&Menu, pObject->GetGUID(), 1, plr); if(plr->GetQuestLogForEntry(9692)) Menu->AddItem( 0, "Take Insignia", 1); if(AutoSend) Menu->SendTo(plr); }
void OnSelectOption(Object *pObject, Player *plr, uint32 Id, const char *Code) { switch (Id) { case 0: { plr->CloseGossip(); TO_CREATURE(pObject)->GetMapMgr()->GetInterface()->SpawnCreature(NPC_ARGENT_VALIANT, 8575.451f, 952.472f, 547.554f, 0.38f, false, true, 0, 0, 1); }break; case 1: { }break; default: break; } }
bool ElementalPowerExtractor(uint32 i, Spell * pSpell) { if ( pSpell == NULL || pSpell->u_caster == NULL || !pSpell->u_caster->IsPlayer() ) return true; Player * pPlayer = TO_PLAYER( pSpell->u_caster ); Unit * pUnit = pSpell->GetUnitTarget(); if ( pUnit == NULL || !pUnit->IsCreature() ) return true; Creature * pTarget = TO_CREATURE( pUnit ); if ( ( pTarget->GetEntry() == 18881 || pTarget->GetEntry() == 18865 ) && pTarget->isAlive() ) { sEAS.AddItem( 28548, pPlayer ); } return true; }
void OnHello(Object* pObject, Player* plr) { int32 i = -1; Creature* pPrisoner = TO_CREATURE(pObject); switch(pPrisoner->GetEntry()) { case 20677: i = 0; break; case 20678: i = 1; break; case 20679: i = 2; break; } if(i == -1) return; QuestLogEntry* pQuest = plr->GetQuestLogForEntry(10368); if(pQuest != NULL && pQuest->GetMobCount(i) < pQuest->GetQuest()->required_mobcount[i] && plr->GetItemInterface()->GetItemCount(29501) > 0) Arcemu::Gossip::Menu::SendQuickMenu(pObject->GetGUID(), 10104, plr, 1, Arcemu::Gossip::ICON_CHAT, "Walk free, Elder. Bring the spirits back to your tribe."); }
uint32 Transporter::BuildCreateUpdateBlockForPlayer(ByteBuffer *data, Player* target ) { uint32 cnt = Object::BuildCreateUpdateBlockForPlayer(data, target); // add all the npcs to the packet for(TransportNPCMap::iterator itr = m_npcs.begin(); itr != m_npcs.end(); itr++) { LocationVector v_offset; TO_CREATURE(itr->second)->GetMovementInfo()->GetTransportPosition(v_offset); v_offset.x += GetPositionX(); v_offset.y += GetPositionY(); v_offset.z += GetPositionZ(); itr->second->SetPosition(v_offset); cnt += itr->second->BuildCreateUpdateBlockForPlayer(data, target); } return cnt; }
bool MinionsOfGurok(uint32 i, Spell *pSpell) { Unit * target = pSpell->GetUnitTarget(); if(!pSpell->p_caster || !target || target->GetTypeId() != TYPEID_UNIT || target->GetEntry() != 17157) return true; TO_CREATURE(target)->Despawn(500, 360000); float SSX = target->GetPositionX(); float SSY = target->GetPositionY(); float SSZ = target->GetPositionZ(); float SSO = target->GetOrientation(); pSpell->p_caster->GetMapMgr()->GetInterface()->SpawnCreature(18181, SSX+rand()%8-4, SSY+rand()%8-4, SSZ, SSO, true, false, 0, 0); pSpell->p_caster->GetMapMgr()->GetInterface()->SpawnCreature(18181, SSX+rand()%8-4, SSY+rand()%8-4, SSZ, SSO, true, false, 0, 0); pSpell->p_caster->GetMapMgr()->GetInterface()->SpawnCreature(18181, SSX+rand()%8-4, SSY+rand()%8-4, SSZ, SSO, true, false, 0, 0); return true; }
void Player::SendLootUpdate(Object* o) { if(!IsVisible(o->GetGUID())) return; // Build the actual update. ByteBuffer buf(500); uint32 Flags = o->GetUInt32Value(UNIT_DYNAMIC_FLAGS); Flags |= U_DYN_FLAG_LOOTABLE; Flags |= U_DYN_FLAG_TAPPED_BY_PLAYER; if(o->IsCreature() && !TO_CREATURE(o)->HasLoot()) Flags &= ~U_DYN_FLAG_LOOTABLE; o->BuildFieldUpdatePacket(&buf, UNIT_DYNAMIC_FLAGS, Flags); PushUpdateData(&buf, 1); }
bool ChatHandler::HandleKillCommand(const char *args, WorldSession *m_session) { Unit* target = m_session->GetPlayer()->GetMapMgr()->GetUnit(m_session->GetPlayer()->GetSelection()); if(target == 0) { RedSystemMessage(m_session, "A valid selection is required."); return true; } switch(target->GetTypeId()) { case TYPEID_PLAYER: sGMLog.writefromsession(m_session, "used kill command on PLAYER %s", TO_PLAYER( target )->GetName() ); break; case TYPEID_UNIT: sGMLog.writefromsession(m_session, "used kill command on CREATURE %s", TO_CREATURE( target )->GetCreatureInfo() ? TO_CREATURE( target )->GetCreatureInfo()->Name : "unknown"); break; } // If we're killing a player, send a message indicating a gm killed them. if(target->IsPlayer()) { Player* plr = TO_PLAYER(target); m_session->GetPlayer()->DealDamage(plr, plr->GetUInt32Value(UNIT_FIELD_MAXHEALTH)+10,0,0,0); BlueSystemMessageToPlr(plr, "%s killed you with a GM command.", m_session->GetPlayer()->GetName()); } else { // Cast insta-kill. SpellEntry * se = dbcSpell.LookupEntry(5); if(se == 0) return false; SpellCastTargets targets(target->GetGUID()); Spell* sp(new Spell(m_session->GetPlayer(), se, true, NULL)); sp->prepare(&targets); } return true; }
void GossipHello(Object* pObject, Player* plr) { Creature* pCreature = (pObject->IsCreature()) ? (TO_CREATURE(pObject)) : NULL; if(pCreature == NULL) return; uint32 chance = RandomUInt(1); if(chance == 0) { pCreature->SetFaction(14); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "The Woodlands Walker is angered by your request and attacks!"); } else { sEAS.AddItem(36786, plr); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Breaking off a piece of its bark, the Woodlands Walker hands it to you before departing."); } }
void GossipHello(Object* pObject, Player* plr, bool AutoSend) { Creature* pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?(TO_CREATURE(pObject)):NULL; if( pCreature == NULL ) return; uint32 chance = RandomUInt(1); if( chance == 0 ) { pCreature->SetUInt32Value( UNIT_FIELD_FACTIONTEMPLATE, 14 ); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "The Woodlands Walker is angered by your request and attacks!" ); } else { sEAS.AddItem( 36786, plr ); pCreature->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Breaking off a piece of its bark, the Woodlands Walker hands it to you before departing." ); } }
void GossipSelectOption(Object * pObject, Player * plr, uint32 Id, uint32 IntId, const char * EnteredCode) { Creature * pCreature = (pObject->GetTypeId()==TYPEID_UNIT)?(TO_CREATURE(pObject)):NULLCREATURE; if(pCreature==NULLCREATURE) return; switch(IntId) { case 0: { TaxiPath * path = sTaxiMgr.GetTaxiPath( 795 ); // Flight Path plr->TaxiStart( path, 25854, 0 ); // Dragon }break; case 1: { plr->GetSession()->SendTaxiList(pCreature); }break; } }