bool Carcass(uint32 i, SpellPointer pSpell) // Becoming a Shadoweave Tailor { if(!pSpell->u_caster->IsPlayer()) return true; PlayerPointer pPlayer = TO_PLAYER(pSpell->u_caster); QuestLogEntry *pQuest = pPlayer->GetQuestLogForEntry( 10804 ); CreaturePointer NetherDrake = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 21648); GameObjectPointer FlayerCarcass = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 185155); if ( FlayerCarcass == NULLGOB ) { FlayerCarcass = sEAS.SpawnGameobject(pPlayer, 185155, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 0, 1, 0, 0, 0, 0); FlayerCarcass->Despawn(60000); } if ( NetherDrake == NULL ) return true; if ( NetherDrake->HasActiveAura(38502) ) return true; if( pQuest!=NULL && pQuest->GetMobCount( 0 ) < pQuest->GetQuest()->required_mobcount[0] ) { NetherDrake->CastSpell(NetherDrake, dbcSpell.LookupEntry( 38502 ), true); NetherDrake->GetAIInterface()->m_moveFly = true; NetherDrake->GetAIInterface()->MoveTo(pPlayer->GetPositionX(), pPlayer->GetPositionY()+2, pPlayer->GetPositionZ(), 0); pQuest->SetMobCount( 0, pQuest->GetMobCount( 0 )+1); pQuest->SendUpdateAddKill( 0 ); pQuest->UpdatePlayerFields(); } return true; }
void OnQuestComplete( PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( mTarget == NULL || mTarget->GetMapMgr() == NULL || mTarget->GetMapMgr()->GetInterface() == NULL ) return; float SSX = mTarget->GetPositionX(); float SSY = mTarget->GetPositionY(); float SSZ = mTarget->GetPositionZ(); CreaturePointer Zealot = mTarget->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(SSX, SSY, SSZ, 1931); if(Zealot == NULL) return; Zealot->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "I. . . I. . .don't. . .feel. . .right. . ."); sEAS.EventCastSpell(Zealot, Zealot, 3287, 3000); Zealot->GetAIInterface()->setMoveType(11); Zealot->GetAIInterface()->StopMovement(3000); sEAS.CreateCustomWaypointMap(Zealot); sEAS.WaypointCreate(Zealot, 2289.649658f, 237.001389f, 27.089531f, 1.323f, 0, 256, 0); sEAS.WaypointCreate(Zealot, 2291.700928f, 235.561844f, 27.089531f, 1.323f, 0, 256, 0); sEAS.WaypointCreate(Zealot, 2292.835693f, 240.636948f, 27.089531f, 1.323f, 0, 256, 0); sEAS.WaypointCreate(Zealot, 2288.737305f, 240.503952f, 27.088022f, 1.323f, 0, 256, 0); sEAS.WaypointCreate(Zealot, 2287.812744f, 236.320938f, 27.088022f, 1.323f, 0, 256, 0); sEAS.WaypointCreate(Zealot, 2292.643033f, 240.513489f, 27.088022f, 1.323f, 0, 256, 0); sEAS.WaypointCreate(Zealot, 2289.628418f, 239.908279f, 27.088022f, 1.323f, 0, 256, 0); }
void OnQuestStart( PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( mTarget == NULL || mTarget->GetMapMgr() == NULL || mTarget->GetMapMgr()->GetInterface() == NULL ) return; float SSX = mTarget->GetPositionX(); float SSY = mTarget->GetPositionY(); float SSZ = mTarget->GetPositionZ(); CreaturePointer Dashel = mTarget->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(SSX, SSY, SSZ, 4961); if(Dashel == NULL) return; Dashel->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE, 72); Dashel->GetAIInterface()->disable_melee = false; Dashel->GetAIInterface()->SetAllowedToEnterCombat(true); uint32 chance = RandomUInt(100); if(chance < 15) { string say = "Now you're gonna get it good, "; say+=(TO_PLAYER(mTarget))->GetName(); say+="!"; Dashel->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, say.c_str()); } CreaturePointer Thug1 = sEAS.SpawnCreature(mTarget, 4969, -8686.803711, 445.267792, 99.789223, 5.461184, 300000); CreaturePointer Thug2 = sEAS.SpawnCreature(mTarget, 4969, -8675.571289, 444.162262, 99.644737, 3.834103, 300000); }
void GossipSelectOption(ObjectPointer pObject, PlayerPointer plr, uint32 Id, uint32 IntId, const char * EnteredCode) { if(!plr) return; CreaturePointer doctor = TO_CREATURE(pObject); if (doctor == NULL) return; switch (IntId) { case 0: GossipHello(pObject, plr, true); break; case 1: { plr->GetItemInterface()->RemoveItemAmt(2799, 1); doctor->CastSpell(doctor, dbcSpell.LookupEntry(12380), true); if( !plr || !plr->GetMapMgr() || !plr->GetMapMgr()->GetInterface() ) return; CreaturePointer firstenemy = sEAS.SpawnCreature(plr, 1511, -13770.5, -6.79, 42.8, 5.7 , 0); firstenemy->GetAIInterface()->MoveTo(-13727.8, -26.2, 46.15, 4.07); firstenemy->Despawn(10*60*1000, 0); }break; } }
void OnQuestStart(PlayerPointer pPlayer, QuestLogEntry *pQuest) { if ( pPlayer == NULL || pPlayer->GetMapMgr() == NULL || pPlayer->GetMapMgr()->GetInterface() == NULL ) return; CreaturePointer pAkida = sEAS.SpawnCreature( pPlayer, 17379, -4183.043457f, -12511.419922f, 44.361786f, 6.05629f, 0 ); if ( pAkida == NULL ) return; pAkida->m_escorter = pPlayer; pAkida->GetAIInterface()->setMoveType( RUN ); pAkida->GetAIInterface()->StopMovement( 1000 ); pAkida->GetAIInterface()->SetAllowedToEnterCombat( false ); pAkida->SendChatMessage( CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Follow me I shall result you on a place!" ); pAkida->SetUInt32Value( UNIT_NPC_FLAGS, 0 ); pAkida->CastSpell( pAkida, 25035, true ); // Apparition Effect sEAS.CreateCustomWaypointMap( pAkida ); sEAS.WaypointCreate( pAkida, -4174.025879f, -12512.800781f, 44.361458f, 2.827430f, 0, 256, 16995 ); sEAS.WaypointCreate( pAkida, -4078.135986f, -12535.500977f, 43.066765f, 5.949394f, 0, 256, 16995 ); sEAS.WaypointCreate( pAkida, -4040.495361f, -12565.537109f, 43.698250f, 5.592041f, 0, 256, 16995 ); sEAS.WaypointCreate( pAkida, -4009.526367f, -12598.929688f, 53.168480f, 5.434962f, 0, 256, 16995 ); sEAS.WaypointCreate( pAkida, -3981.581543f, -12635.541602f, 63.896046f, 5.332861f, 0, 256, 16995 ); sEAS.WaypointCreate( pAkida, -3953.170410f, -12680.391602f, 75.433006f, 5.218981f, 0, 256, 16995 ); sEAS.WaypointCreate( pAkida, -3924.324951f, -12741.846680f, 95.187035f, 5.124734f, 0, 256, 16995 ); sEAS.WaypointCreate( pAkida, -3920.791260f, -12746.218750f, 96.887978f, 3.271200f, 0, 256, 16995 ); sEAS.EnableWaypoints( pAkida ); mAkidas.push_back( std::make_pair( pPlayer->GetGUID(), pAkida ) ); }
void OnQuestComplete( PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( mTarget == NULL || mTarget->GetMapMgr() == NULL || mTarget->GetMapMgr()->GetInterface() == NULL ) return; float SSX = mTarget->GetPositionX(); float SSY = mTarget->GetPositionY(); float SSZ = mTarget->GetPositionZ(); GameObjectPointer skull1 = mTarget->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(SSX, SSY, SSZ, 2551); if(skull1) return; CreaturePointer Kin_weelay = mTarget->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(SSX, SSY, SSZ, 2519); if(Kin_weelay == NULL) return; string msg1 = "Ah. Good "; msg1 += mTarget->GetName(); msg1 += ". Now let us see what tale these heads tell..."; Kin_weelay->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, msg1.c_str()); Kin_weelay->CastSpell(Kin_weelay, dbcSpell.LookupEntry(3644), false); skull1->Despawn(5000); GameObjectPointer skull2 = mTarget->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(SSX, SSY, SSZ, 2551); if(skull2) skull2->Despawn(5000); if(Kin_weelay == NULL) return; string msg = "There, "; msg += mTarget->GetName(); msg += ". You may now speak to the Bloodscalp chief and his witchdoctor."; sEventMgr.AddEvent(TO_UNIT(Kin_weelay), &Creature::SendChatMessage, (uint8)CHAT_MSG_MONSTER_SAY, (uint32)LANG_UNIVERSAL, msg.c_str(), EVENT_UNIT_CHAT_MSG, 500, 1, 1); }
void OnQuestComplete( PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( mTarget == NULL || mTarget->GetMapMgr() == NULL || mTarget->GetMapMgr()->GetInterface() == NULL ) return; CreaturePointer creat = mTarget->GetMapMgr()->GetInterface()->SpawnCreature(1946, 2467.314f, 14.8471f, 23.5950f, 0, true, false, 0, 0); creat->Despawn(60000,0); creat->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "You have disturbed my rest. Now face my wrath!"); }
bool ToLegionHold(uint32 i, AuraPointer pAura, bool apply) { if ( pAura == NULL || pAura->GetUnitCaster() == NULL || !pAura->GetUnitCaster()->IsPlayer() ) return true; PlayerPointer pPlayer = TO_PLAYER( pAura->GetUnitCaster() ); CreaturePointer pJovaanCheck = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(-3310.743896f, 2951.929199f, 171.132538f, 21633); if ( pJovaanCheck != NULL ) return true; QuestLogEntry *pQuest = pPlayer->GetQuestLogForEntry( 10563 ); if ( pQuest == NULL ) { pQuest = pPlayer->GetQuestLogForEntry( 10596 ); if ( pQuest == NULL ) return true; } if ( apply ) { pPlayer->SetUInt32Value( UNIT_FIELD_DISPLAYID, 20366 ); pPlayer->Root(); CreaturePointer pJovaan = sEAS.SpawnCreature( pPlayer, 21633, -3310.743896f, 2951.929199f, 171.132538f, 5.054039f, 0 ); // Spawn Jovaan if ( pJovaan != NULL ) { pJovaan->SetUInt64Value( UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2 ); if ( pJovaan->GetAIInterface() != NULL ) { pJovaan->GetAIInterface()->SetAllowedToEnterCombat( false ); } } GameObjectPointer pGameObject = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 184834); if ( pGameObject != NULL ) { pGameObject->Despawn(60000); pPlayer->UpdateNearbyGameObjects(); } } else { if ( pQuest->GetMobCount( 2 ) < pQuest->GetQuest()->required_mobcount[2] ) { pQuest->SetMobCount( 2, pQuest->GetMobCount( 2 ) + 1 ); pQuest->SendUpdateAddKill( 2 ); pQuest->UpdatePlayerFields(); } pPlayer->SetUInt32Value( UNIT_FIELD_DISPLAYID, pPlayer->GetUInt32Value( UNIT_FIELD_NATIVEDISPLAYID ) ); pPlayer->UnRoot(); } return true; }
void OnActivate(PlayerPointer pPlayer) { CreaturePointer commander = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 20482); if(commander) return; if(pPlayer->GetQuestLogForEntry(10339)) { float SSX = 4017.96f; float SSY = 2315.91f; float SSZ = 116.418f; float SSO = pPlayer->GetOrientation(); CreaturePointer NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(20482, SSX, SSY, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->Despawn(1*60*1000, 0); } }
void GossipHello( ObjectPointer pObject, PlayerPointer pPlayer, bool AutoSend ) { if ( pObject == NULL || pObject->GetTypeId() != TYPEID_ITEM || pPlayer == NULL ) return; QuestLogEntry* QuestEntry = pPlayer->GetQuestLogForEntry( 9452 ); if ( QuestEntry == NULL ) return; #ifndef BLIZZLIKE //if ( QuestEntry->GetMobCount( 0 ) >= QuestEntry->GetQuest()->required_mobcount[ 0 ] ) // return; #endif if ( pPlayer->GetMapMgr() == NULLMAPMGR ) return; // Meh, double object looking - we should find a way to remove this GameObjectPointer School = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords( pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 181616 ); if ( School == NULLGOB || pPlayer->CalcDistance( School ) > 5.0f ) return; #ifdef BLIZZLIKE sEventMgr.AddEvent( School, &GameObject::Despawn, static_cast< uint32 >( 20000 ), EVENT_GAMEOBJECT_ITEM_SPAWN, 1000, 1, 0 ); #else School->Despawn( 20000 ); #endif pPlayer->CastSpell( pPlayer, dbcSpell.LookupEntry( TO_ITEM( pObject )->GetProto()->Spells[ 0 ].Id ), false ); uint32 Chance = RandomUInt( 10 ); if ( Chance <= 3 ) { CreaturePointer NewCreature = sEAS.SpawnCreature( pPlayer, 17102, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), pPlayer->GetOrientation(), 180000 ); if ( NewCreature != NULLCREATURE ) { NewCreature->GetAIInterface()->StopMovement( 500 ); NewCreature->setAttackTimer( 1000, false ); NewCreature->m_noRespawn = true; }; return; }; sEAS.AddItem( 23614, pPlayer ); QuestEntry->SendUpdateAddKill( 1 ); QuestEntry->UpdatePlayerFields(); pPlayer->Gossip_Complete(); };
void OnQuestComplete( PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( mTarget == NULL || mTarget->GetMapMgr() == NULL || mTarget->GetMapMgr()->GetInterface() == NULL ) return; float X = mTarget->GetPositionX(); float Y = mTarget->GetPositionY(); float Z = mTarget->GetPositionZ(); CreaturePointer MacKinley = mTarget->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(X, Y, Z, 2501); if(MacKinley) { string say = "Bah! "; say += mTarget->GetName(); say += ", this foot won't budge!"; MacKinley->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, say.c_str()); } }
void OnQuestComplete( PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( mTarget == NULL || mTarget->GetMapMgr() == NULL || mTarget->GetMapMgr()->GetInterface() == NULL ) return; float X = mTarget->GetPositionX(); float Y = mTarget->GetPositionY(); float Z = mTarget->GetPositionZ(); CreaturePointer Crank = mTarget->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(X, Y, Z, 2498); if(Crank) { string say = "Hm... if you're looking to adle wits. "; say += mTarget->GetName(); say += ", then the secret behind Zanzil's zombies might just fo the trick!"; Crank->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, say.c_str()); } }
void OnQuestStart( PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( mTarget == NULL || mTarget->GetMapMgr() == NULL || mTarget->GetMapMgr()->GetInterface() == NULL ) return; float SSX = mTarget->GetPositionX(); float SSY = mTarget->GetPositionY(); float SSZ = mTarget->GetPositionZ(); CreaturePointer Dashel = mTarget->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(SSX, SSY, SSZ, 6784); if(Dashel == NULL) return; Dashel->SetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE, 28); Dashel->GetAIInterface()->disable_melee = false; Dashel->GetAIInterface()->SetAllowedToEnterCombat(true); }
void OnActivate(PlayerPointer pPlayer) { float SSX = pPlayer->GetPositionX(); float SSY = pPlayer->GetPositionY(); float SSZ = pPlayer->GetPositionZ(); float SSO = pPlayer->GetOrientation(); CreaturePointer NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(14748, SSX+1, SSY, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->Despawn(600000, 0); NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(14748, SSX, SSY, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->Despawn(600000, 0); NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(14748, SSX-1, SSY, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->Despawn(600000, 0); }
void OnActivate(PlayerPointer pPlayer) { if(!pPlayer) return; QuestLogEntry *qle = pPlayer->GetQuestLogForEntry(9582); if(qle == NULL) return; // What is this ? :O To remove ? CreaturePointer reaver = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 17556); if(reaver) { CreaturePointer reaver2 = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(17556, reaver->GetPositionX(), reaver->GetPositionY(), reaver->GetPositionZ(), reaver->GetOrientation(), true, false, 0, 0); reaver2->Despawn(5*60*1000, 0); reaver->Despawn(1, 5*60*1000); } }
void OnLootTaken(PlayerPointer pLooter, ItemPrototype *pItemInfo) { float SSX = pLooter->GetPositionX(); float SSY = pLooter->GetPositionY(); float SSZ = pLooter->GetPositionZ(); float SSO = pLooter->GetOrientation(); CreaturePointer NewCreature = pLooter->GetMapMgr()->GetInterface()->SpawnCreature(11120, SSX, SSY, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->Despawn(600000, 0); }
void OnActivate(PlayerPointer pPlayer) { CreaturePointer Ulag = NULLCREATURE; GameObjectPointer pDoor = NULLGOB; Ulag = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(2390.101807f, 336.676788f, 40.015614f, 6390); pDoor = pPlayer->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(2388.480029f, 338.3901f, 40.092899f, 176594); QuestLogEntry * en = pPlayer->GetQuestLogForEntry(1819); if(!en || pDoor==NULL || Ulag) return; CreaturePointer NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(6390, 2390.101807f, 336.676788f, 40.015614f, 2.259590f, true, false, 0, 0); if ( NewCreature != NULL ) { NewCreature->Despawn(180000, 0); NewCreature->GetAIInterface()->SetNextTarget(pPlayer); NewCreature->GetAIInterface()->AttackReaction(pPlayer, 1); pDoor->SetUInt32Value(GAMEOBJECT_FLAGS, 33); pDoor->SetByte(GAMEOBJECT_BYTES_1, 0, 0); }; }
void AreatriggerHook(PlayerPointer pPlayer, uint32 triggerID) { if(!pPlayer) return; if(triggerID == ALLIANCE_RETURN || triggerID == HORDE_RETURN) { if(pPlayer->HasAura(SILITHYST_SPELL)) // if we doesn't have it, do nothing { pPlayer->RemoveAura(SILITHYST_SPELL); /* Rewards */ pPlayer->CastSpell(pPlayer, TRACES_OF_SILITHYST, true); pPlayer->m_honorPoints += REWARD_HONOR; pPlayer->ModStanding(REWARD_REPUTATION_FACTION, REWARD_REPUTATION_VALUE); uint32 quest = pPlayer->GetTeam() == ALLIANCE ? ALLIANCE_SILITHYST_QUEST : HORDE_SILITHYST_QUEST; QuestLogEntry* qle = pPlayer->GetQuestLogForEntry(quest); if(qle) qle->SendQuestComplete(); /***********/ if(locked) return; silithyst_gathered[ pPlayer->GetTeam() ]++; uint32 worldstate = pPlayer->GetTeam() == ALLIANCE ? WORLDSTATE_SILITHUS_GATHERED_ALLIANCE : WORLDSTATE_SILITHUS_GATHERED_HORDE; pPlayer->GetMapMgr()->GetStateManager().UpdateWorldState(worldstate , silithyst_gathered[ pPlayer->GetTeam() ]); if(silithyst_gathered[ pPlayer->GetTeam() ] >= SILITHYST_MAX) { locked = true; // we win, so opposite team must wait for server restart winners = pPlayer->GetTeam(); pPlayer->GetMapMgr()->CastSpellOnPlayers(winners, CENARION_FAVOR); pPlayer->GetMapMgr()->RemovePositiveAuraFromPlayers(winners == ALLIANCE ? HORDE : ALLIANCE, CENARION_FAVOR); } } } }
void OnQuestStart(PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( !mTarget || !mTarget->GetMapMgr() || !mTarget->GetMapMgr()->GetInterface() ) return; Yor = sEAS.SpawnCreature( mTarget, 17393, -4634.246582f, -13071.686523f, -14.755350f, 1.569997f, 0 ); if( !Yor ) return; Yor->CastSpell( Yor, 25035, true ); // Apparition Effect Yor->m_escorter = mTarget; Yor->GetAIInterface()->StopMovement( 1000 ); Yor->SetUInt32Value( UNIT_NPC_FLAGS, 0 ); char msg[256]; snprintf((char*)msg, 256, "Come, %s . Let us leave the water together, purified.", mTarget->GetName() ); Yor->SendChatMessage( CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, msg ); sEAS.CreateCustomWaypointMap( Yor ); sEAS.WaypointCreate( Yor, -4650.081055f, -13016.692383f, 1.776296f, 2.021601f, 0, 256, 16393 ); sEAS.WaypointCreate( Yor, -3886.341553f, -13098.914063f, 3.964841f, 1.855801f, 1000, 256, 16393 ); sEAS.WaypointCreate( Yor, -4677.421387f, -12983.874023f, 0.833827f, 2.335760f, 0, 256, 16393 ); // Should look player sEAS.EnableWaypoints( Yor ); //We have to set up these pointers first to resolve ambiguity in the event manager template UnitPointer Totem = TO_UNIT(Yor); UnitPointer Plr = TO_UNIT(mTarget); // Change to Stillpine form sEventMgr.AddEvent(Totem, &Unit::EventCastSpell, Totem, dbcSpell.LookupEntry(30446), EVENT_CREATURE_UPDATE, 15500, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); string msg2 = "[Furbolg] We go now, together. We will seek Vark."; sEventMgr.AddEvent(Totem, &Unit::SendChatMessage, (uint8)CHAT_MSG_MONSTER_SAY, (uint32)LANG_UNIVERSAL, msg2.c_str(), EVENT_UNIT_CHAT_MSG, 26500, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); // Change to nightsaber form sEventMgr.AddEvent(Totem, &Unit::EventCastSpell, Totem, dbcSpell.LookupEntry(30448), EVENT_CREATURE_UPDATE, 30000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); string msg3 = "[Furbolg] Follow me to Vark."; sEventMgr.AddEvent(Totem, &Unit::SendChatMessage, (uint8)CHAT_MSG_MONSTER_SAY, (uint32)LANG_UNIVERSAL, msg3.c_str(), EVENT_UNIT_CHAT_MSG, 31000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); if( mTarget->CalcDistance( Totem, Plr ) <= 10 ) sEventMgr.AddEvent(Totem, &Unit::EventCastSpell, Plr, dbcSpell.LookupEntry(30448), EVENT_CREATURE_UPDATE, 31000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); }
void OnQuestStart( PlayerPointer mTarget, QuestLogEntry * qLogEntry) { if( !mTarget || !mTarget->GetMapMgr() || !mTarget->GetMapMgr()->GetInterface() ) return; Coo = sEAS.SpawnCreature( mTarget, 17391, -3926.974365f, -12752.285156f, 97.672722f, 4.926801f, 0 ); if( !Coo ) return; Coo->CastSpell( Coo, 25035, true); // Apparition Effect Coo->m_escorter = mTarget; Coo->GetAIInterface()->setMoveType( 11 ); Coo->GetAIInterface()->StopMovement( 3000 ); Coo->SendChatMessage( CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Follow me!" ); Coo->SetUInt32Value( UNIT_NPC_FLAGS, 0 ); sEAS.CreateCustomWaypointMap( Coo ); sEAS.WaypointCreate( Coo, -3926.076660f, -12755.158203f, 99.080429f, 5.031188f, 0, 256, 16993 ); sEAS.WaypointCreate( Coo, -3924.019043f, -12763.895508f, 101.547874f, 5.212689f, 0, 256, 16993 ); sEAS.EnableWaypoints( Coo ); UnitPointer Totem = TO_UNIT(Coo); UnitPointer Plr = TO_UNIT(mTarget); string msg = "Ritk kin'chikx azul azure summit..."; sEventMgr.AddEvent(TO_UNIT(Coo), &Unit::SendChatMessage, (uint8)CHAT_MSG_MONSTER_SAY, (uint32)LANG_UNIVERSAL, msg.c_str(), EVENT_UNIT_CHAT_MSG, 6000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); if( mTarget->CalcDistance( Coo, mTarget ) <= 10 ) sEventMgr.AddEvent(TO_UNIT(Coo), &Unit::EventCastSpell, Plr, dbcSpell.LookupEntry(30424), EVENT_CREATURE_UPDATE, 8750, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT ); string msg2 = "Coo xip fly... Jump ilos river. Find Tikti."; sEventMgr.AddEvent(TO_UNIT(Coo), &Unit::SendChatMessage, (uint8)CHAT_MSG_MONSTER_SAY, (uint32)LANG_UNIVERSAL, msg2.c_str(), EVENT_UNIT_CHAT_MSG, 9000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); sEventMgr.AddEvent(TO_UNIT(Coo), &Unit::EventCastSpell, Totem, dbcSpell.LookupEntry(30473), EVENT_CREATURE_UPDATE, 12750, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT ); Coo->Despawn( 15200, 0 ); }
void OnQuestStart( PlayerPointer mTarget, QuestLogEntry * qLogEntry ) { if( !mTarget || !mTarget->GetMapMgr() || !mTarget->GetMapMgr()->GetInterface() ) return; Tikti = sEAS.SpawnCreature( mTarget, 17392, -3875.430664f, -13125.011719f, 6.822148f, 2.020735f, 0 ); if( !Tikti ) return; mTarget->CastSpell( Tikti, 25035, true); // Apparition Effect Tikti->m_escorter = mTarget; Tikti->GetAIInterface()->setMoveType( WALK ); Tikti->GetAIInterface()->StopMovement( 3000 ); Tikti->SendChatMessage( CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Follow me!" ); Tikti->SetUInt32Value( UNIT_NPC_FLAGS, 0 ); sEAS.CreateCustomWaypointMap( Tikti ); sEAS.WaypointCreate( Tikti, -3881.700928f, -13111.898438f, 5.814010f, 1.855801f, 0, 256, 16999 ); sEAS.WaypointCreate( Tikti, -3886.341553f, -13098.914063f, 3.964841f, 1.855801f, 0, 256, 16999 ); sEAS.EnableWaypoints( Tikti ); UnitPointer Totem = TO_UNIT(Tikti); UnitPointer Plr = TO_UNIT(mTarget); string msg = "[Furbolg] Far you mixik tak come. Gaze upon the kitch'kal river. Follow. Ilog to Yor."; sEventMgr.AddEvent(TO_UNIT(Tikti), &Unit::SendChatMessage, (uint8)CHAT_MSG_MONSTER_SAY, (uint32)LANG_UNIVERSAL, msg.c_str(), EVENT_UNIT_CHAT_MSG, 15000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); if( mTarget->CalcDistance( Tikti, mTarget ) <= 10 ) sEventMgr.AddEvent(TO_UNIT(Tikti), &Unit::EventCastSpell, Plr, dbcSpell.LookupEntry(30430), EVENT_CREATURE_UPDATE, 18000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT ); string msg2 = "[Furbolg] Go... Search yitix'kil bottom river. South!"; sEventMgr.AddEvent(TO_UNIT(Tikti), &Unit::SendChatMessage, (uint8)CHAT_MSG_MONSTER_SAY, (uint32)LANG_UNIVERSAL, msg2.c_str(), EVENT_UNIT_CHAT_MSG, 20000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); sEventMgr.AddEvent(TO_UNIT(Tikti), &Unit::EventCastSpell, Totem, dbcSpell.LookupEntry(30431), EVENT_GMSCRIPT_EVENT, 20000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT ); sEventMgr.AddEvent(Tikti, &Creature::Despawn, uint32(0), uint32(0), EVENT_GMSCRIPT_EVENT, 24000, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT); }
void OnLootTaken(PlayerPointer pLooter, ItemPrototype *pItemInfo) { QuestLogEntry * en = pLooter->GetQuestLogForEntry(422); if(!en) return; float SSX = pLooter->GetPositionX(); float SSY = pLooter->GetPositionY(); float SSZ = pLooter->GetPositionZ(); float SSO = pLooter->GetOrientation(); CreaturePointer NewCreature = pLooter->GetMapMgr()->GetInterface()->SpawnCreature(1770, SSX, SSY, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, "The Sons of Arugal will rise against all who challenge the power of the Moonrage!"); }
void OnDied(UnitPointer mKiller) { if(mKiller->IsPlayer()) { PlayerPointer mPlayer = TO_PLAYER(mKiller); if(mPlayer == NULL || mPlayer->GetMapMgr() == NULL || mPlayer->GetMapMgr()->GetInterface() == NULL) return; CreaturePointer beka1 = sEAS.SpawnCreature(mPlayer, 1516, -13770.5, -6.79, 42.8, 5.7 , 0); beka1->GetAIInterface()->MoveTo(-13727.8, -26.2, 46.15, 4.07); beka1->Despawn(10*60*1000, 0); } else { PlayerPointer mPlayer = _unit->GetMapMgr()->GetInterface()->GetPlayerNearestCoords(_unit->GetPositionX(), _unit->GetPositionY(), _unit->GetPositionZ()); if(mPlayer) { if(mPlayer == NULL || mPlayer->GetMapMgr() == NULL || mPlayer->GetMapMgr()->GetInterface() == NULL) return; CreaturePointer beka1 = sEAS.SpawnCreature(mPlayer, 1516, -13770.5, -6.79, 42.8, 5.7 , 0); beka1->GetAIInterface()->MoveTo(-13727.8, -26.2, 46.15, 4.07); beka1->Despawn(10*60*1000, 0); } } }
void InstanceMgr::ResetSavedInstances(PlayerPointer plr) { WorldPacket data(SMSG_INSTANCE_RESET, 4); Instance * in; InstanceMap::iterator itr; InstanceMap * instancemap; uint32 i; if(!plr->IsInWorld() || plr->GetMapMgr()->GetMapInfo()->type != INSTANCE_NULL) return; m_mapLock.Acquire(); for(i = 0; i < NUM_MAPS; ++i) { if(m_instances[i] != NULL) { instancemap = m_instances[i]; for(itr = instancemap->begin(); itr != instancemap->end();) { in = itr->second; ++itr; if ( in->m_mapInfo->type == INSTANCE_NONRAID && ( plr->GetLowGUID() == in->m_creatorGuid || ( plr->GetGroup() && plr->GetGroup()->GetID() == in->m_creatorGroup ))) { if(in->m_mapMgr && in->m_mapMgr->HasPlayers()) { plr->GetSession()->SystemMessage("Can't reset instance %u (%s) when there are still players inside!", in->m_instanceId, in->m_mapMgr->GetMapInfo()->name); continue; } // <mapid> has been reset. data << uint32(in->m_mapId); plr->GetSession()->SendPacket(&data); // reset groupinstanceid if(plr->GetGroup()) plr->GetGroup()->SetGroupInstanceID(0); // destroy the instance _DeleteInstance(in, true); } } } } m_mapLock.Release(); }
void OnActivate(PlayerPointer pPlayer) { uint32 Chance = RandomUInt(100); if(Chance <= 10) { float SSX = pPlayer->GetPositionX(); float SSY = pPlayer->GetPositionY(); float SSZ = pPlayer->GetPositionZ(); float SSO = pPlayer->GetOrientation(); CreaturePointer NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(3619, SSX, SSY+1, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->Despawn(600000, 0); } }
void OnActivate(PlayerPointer pPlayer) { if(!pPlayer) return; QuestLogEntry *qle = pPlayer->GetQuestLogForEntry(3821); if(qle == NULL) return; CreaturePointer shaghost = pPlayer->GetMapMgr()->GetInterface()->GetCreatureNearestCoords(pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 9136); if(shaghost) return; CreaturePointer shaghostspawn = sEAS.SpawnCreature(pPlayer, 9136, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), pPlayer->GetOrientation(), 0); if ( shaghostspawn != NULL ) shaghostspawn->Despawn(2*60*1000, 0); }
void InstanceMgr::BuildSavedInstancesForPlayer(PlayerPointer plr) { WorldPacket data(4); Instance * in; InstanceMap::iterator itr; InstanceMap * instancemap; uint32 i; if(!plr->IsInWorld() || plr->GetMapMgr()->GetMapInfo()->type != INSTANCE_NULL) { m_mapLock.Acquire(); for(i = 0; i < NUM_MAPS; ++i) { if(m_instances[i] != NULL) { instancemap = m_instances[i]; for(itr = instancemap->begin(); itr != instancemap->end();) { in = itr->second; ++itr; if( PlayerOwnsInstance(in, plr) && in->m_mapInfo->type == INSTANCE_NONRAID ) { m_mapLock.Release(); data.SetOpcode(SMSG_UPDATE_LAST_INSTANCE); data << uint32(in->m_mapId); plr->GetSession()->SendPacket(&data); data.Initialize(SMSG_UPDATE_INSTANCE_OWNERSHIP); data << uint32(0x01); plr->GetSession()->SendPacket(&data); return; } } } } m_mapLock.Release(); } data.SetOpcode(SMSG_UPDATE_INSTANCE_OWNERSHIP); data << uint32(0x00); plr->GetSession()->SendPacket(&data); }
void OnActivate(PlayerPointer pPlayer) { if(pPlayer->GetItemInterface()->GetItemCount(9240, 1)) { float SSX = pPlayer->GetPositionX(); float SSY = pPlayer->GetPositionY(); float SSZ = pPlayer->GetPositionZ(); float SSO = pPlayer->GetOrientation(); CreaturePointer NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(7273, SSX+1, SSY, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->Despawn(1800000, 0); } else { pPlayer->BroadcastMessage("Missing required item : Mallet of Zul'Farrak"); } }
void DropFlag(PlayerPointer pPlayer, uint32 spellID) { if(!pPlayer || spellID != SILITHYST_SPELL) return; uint32 triggerID = pPlayer->GetTeam() == ALLIANCE ? ALLIANCE_RETURN : HORDE_RETURN; // we have to use AreaTrigger.dbc here AreaTrigger* pAreaTrigger = AreaTriggerStorage.LookupEntry(triggerID); if(pAreaTrigger) if(pPlayer->CalcDistance(pAreaTrigger->x, pAreaTrigger->y, pAreaTrigger->z) > 10.0f) { GameObjectPointer pGo = pPlayer->GetMapMgr()->GetInterface()->SpawnGameObject(SILITHYST_MOUND, pPlayer->GetPositionX(), pPlayer->GetPositionY(), pPlayer->GetPositionZ(), 0, true, 0, 0); if(pGo == NULL) { pGo->Destructor(); pGo = NULLGOB; } }; }
void OnActivate(PlayerPointer pPlayer) { if(pPlayer->GetQuestLogForEntry(9508)) { float SSX = pPlayer->GetPositionX(); float SSY = pPlayer->GetPositionY(); float SSZ = pPlayer->GetPositionZ(); float SSO = pPlayer->GetOrientation(); CreaturePointer NewCreature = pPlayer->GetMapMgr()->GetInterface()->SpawnCreature(17359, SSX, SSY+1, SSZ, SSO, true, false, 0, 0); if ( NewCreature != NULL ) NewCreature->Despawn(600000, 0); } else { pPlayer->BroadcastMessage("Missing required quest : Call of Water"); } }