Creature* Battlefield::SpawnCreature(uint32 entry, Position const& pos, TeamId teamId) { return SpawnCreature(entry, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teamId); }
Creature* Battlefield::SpawnCreature(uint32 entry, Position pos, TeamId team) { return SpawnCreature(entry, pos.m_positionX, pos.m_positionY, pos.m_positionZ, pos.m_orientation, team); }
void BMutanus() { Mutanus = SpawnCreature(CN_MUTANUS, 136.337006f, 263.769989f, -102.666000f, 4.002330f); }
void IsleOfConquest::OnCreate(){ // generals/leaders! generals[ TEAM_ALLIANCE ] = SpawnCreature(34924, 214.77f, -830.73f, 60.81f, 0.07f, 1 ); // High Commander Halford Wyrmbane (ALLIANCE) generals[ TEAM_HORDE ] = SpawnCreature(34922, 1296.57f, -765.78f, 69.98f, 6.22f, 2 ); // Overlord Agmar (not sure this is the good general) (HORDE) // Spawn const spiritguides SpawnGraveyard( IOC_GY_ALLIANCE, TEAM_ALLIANCE ); SpawnGraveyard( IOC_GY_HORDE, TEAM_HORDE ); // Spawn Teleporters for( uint32 i = 0; i < 3; i++ ){ teleporter[ i ].teleporter = SpawnGameObject( IOC_TELEPORTER_A_IN, 628, iocTransporterLocation[i][0], iocTransporterLocation[i][1], iocTransporterLocation[i][2], iocTransporterLocation[i][3], 0, 1, 1.0f); teleporter[ i ].teleporter->PushToWorld(m_mapMgr); } for( uint32 i = 3; i < 6; i++ ){ teleporter[ i ].teleporter = SpawnGameObject( IOC_TELEPORTER_A_OUT, 628, iocTransporterLocation[i][0], iocTransporterLocation[i][1], iocTransporterLocation[i][2], iocTransporterLocation[i][3], 0, 1, 1.0f); teleporter[ i ].teleporter->PushToWorld(m_mapMgr); } for( uint32 i = 6; i < 9; i++ ){ teleporter[ i ].teleporter = SpawnGameObject( IOC_TELEPORTER_H_IN, 628, iocTransporterLocation[i][0], iocTransporterLocation[i][1], iocTransporterLocation[i][2], iocTransporterLocation[i][3], 0, 2, 1.0f); teleporter[ i ].teleporter->PushToWorld(m_mapMgr); } for( uint32 i = 9; i < 12; i++ ){ teleporter[ i ].teleporter = SpawnGameObject( IOC_TELEPORTER_H_OUT, 628, iocTransporterLocation[i][0], iocTransporterLocation[i][1], iocTransporterLocation[i][2], iocTransporterLocation[i][3], 0, 2, 1.0f); teleporter[ i ].teleporter->PushToWorld(m_mapMgr); } // spawn teleporter effects for( uint32 i = 0; i < 6; i++ ){ teleporter[ i ].effect = SpawnGameObject(TELEPORTER_EFFECT_A, 628, iocTransporterLocation[i][0], iocTransporterLocation[i][1], iocTransporterLocation[i][2], iocTransporterLocation[i][3], 0, 1, 1.0f); teleporter[ i ].effect->PushToWorld(m_mapMgr); } for( uint32 i = 6; i < 12; i++ ){ teleporter[ i ].effect = SpawnGameObject(TELEPORTER_EFFECT_H, 628, iocTransporterLocation[i][0], iocTransporterLocation[i][1], iocTransporterLocation[i][2], iocTransporterLocation[i][3], 0, 1, 1.0f); teleporter[ i ].effect->PushToWorld(m_mapMgr); } // Spawn Alliance gates for( uint32 i = 0; i < 3; i++ ){ gates[ TEAM_ALLIANCE ][ i ].gate = SpawnGameObject( allygateids[ i ], 628, allygatelocations[ i ][ 0 ], allygatelocations[ i ][ 1 ], allygatelocations[ i ][ 2 ], allygatelocations[ i ][ 3 ], 0, 1, 1.0f ); gates[ TEAM_ALLIANCE ][ i ].gate->PushToWorld( m_mapMgr ); gates[ TEAM_ALLIANCE ][ i ].dyngate = SpawnGameObject( IOC_DYNAMIC_GATE_ALLY, 628, allygatelocations[ i ][ 0 ], allygatelocations[ i ][ 1 ], allygatelocations[ i ][ 2 ], allygatelocations[ i ][ 3 ], 0, 1, 1.0f ); gates[ TEAM_ALLIANCE ][ i ].dyngate->SetFlags( GAMEOBJECT_FLAG_UNTARGETABLE ); gates[ TEAM_ALLIANCE ][ i ].dyngate->PushToWorld( m_mapMgr ); } //Spawn Horde gates for( uint32 i = 0; i < 3; i++ ){ gates[ TEAM_HORDE ][ i ].gate = SpawnGameObject( hordegateids[ i ], 628, hordegatelocations[ i ][ 0 ], hordegatelocations[ i ][ 1 ], hordegatelocations[ i ][ 2 ], hordegatelocations[ i ][ 3 ], 0, 2, 1.0f ); gates[ TEAM_HORDE ][ i ].gate->PushToWorld( m_mapMgr ); gates[ TEAM_HORDE ][ i ].dyngate = SpawnGameObject( IOC_DYNAMIC_GATE_HORDE, 628, hordegatelocations[ i ][ 0 ], hordegatelocations[ i ][ 1 ], hordegatelocations[ i ][ 2 ], hordegatelocations[ i ][ 3 ], 0, 2, 1.0f ); gates[ TEAM_HORDE ][ i ].dyngate->SetFlags( GAMEOBJECT_FLAG_UNTARGETABLE ); gates[ TEAM_HORDE ][ i ].dyngate->PushToWorld( m_mapMgr ); } //Spawn ally towergates for( uint32 i = 0; i < 2; i++ ){ towergates[ TEAM_ALLIANCE ][ i ] = SpawnGameObject( 195436, AllyTowerGates[ i ], 0, 35, 1.0f ); towergates[ TEAM_ALLIANCE ][ i ]->SetFlags( GAMEOBJECT_FLAG_UNTARGETABLE ); towergates[ TEAM_ALLIANCE ][ i ]->PushToWorld( m_mapMgr ); } //Spawn horde towergates for( uint32 i = 0; i < 2; i++ ){ towergates[ TEAM_HORDE ][ i ] = SpawnGameObject( 195437, HordeTowerGates[ i ], 0, 35, 0.5f ); towergates[ TEAM_HORDE ][ i ]->SetFlags( GAMEOBJECT_FLAG_UNTARGETABLE ); towergates[ TEAM_HORDE ][ i ]->PushToWorld( m_mapMgr ); } //Spawn Alliance keep canons for( uint32 i = 0; i < 12; i++ ) SpawnCreature( 34944, AllyKeepCanons[ i ], 1 ); //Spawn Horde keep canons for( uint32 i = 0; i < 13; i++ ) SpawnCreature( 34944, HordeKeepCanons[ i ], 2 ); //Spawn Alliance Keep guards for( uint32 i = 0; i < 4; i++ ) SpawnCreature( 34919, AllyGuards[ i ], 1 ); //Spawn Horde Keep guards for( uint32 i = 0; i < 4; i++ ) SpawnCreature( 34918, HordeGuards[ i ], 2 ); // Flagpole for( uint32 i = 0; i < IOC_NUM_CONTROL_POINTS; ++i ){ controlpoint[ i ].pole = SpawnGameObject(IOC_FLAGPOLE, 628, ControlPointCoordinates[i][0], ControlPointCoordinates[i][1], ControlPointCoordinates[i][2], ControlPointCoordinates[i][3], 0, 35, 1.0f); controlpoint[ i ].pole->PushToWorld(m_mapMgr); } SpawnControlPoint(IOC_CONTROL_POINT_REFINERY, IOC_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(IOC_CONTROL_POINT_QUARRY, IOC_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(IOC_CONTROL_POINT_DOCKS, IOC_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(IOC_CONTROL_POINT_HANGAR, IOC_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(IOC_CONTROL_POINT_WORKSHOP, IOC_SPAWN_TYPE_NEUTRAL); SpawnControlPoint(IOC_CONTROL_POINT_ALLIANCE_KEEP, IOC_SPAWN_TYPE_ALLIANCE_CONTROLLED); SpawnControlPoint(IOC_CONTROL_POINT_HORDE_KEEP, IOC_SPAWN_TYPE_HORDE_CONTROLLED); }
void OnDied(Unit* pKiller) { SpawnCreature(CN_BRITTLE_GOLEM); Despawn(1); }
void AIUpdate() { if(IsTimerFinished(mJovaanTimer)) { switch(mJovaanPhase) { case 0: { MoonScriptCreatureAI* pRazuunAI = SpawnCreature(21502, -3300.47f, 2927.22f, 173.870f, 2.42924f, false); // Spawn Razuun if(pRazuunAI != NULL) { pRazuunAI->GetUnit()->SetUInt64Value(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_ATTACKABLE_2); pRazuunAI->SetCanEnterCombat(false); pRazuunAI->SetMoveType(Move_DontMoveWP); pRazuunAI->SetCanMove(false); } _unit->SetStandState(STANDSTATE_KNEEL); _unit->Emote(EMOTE_ONESHOT_TALK); _unit->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Everything is in readiness, warbringer."); mJovaanPhase = 1; ResetTimer(mJovaanTimer, 6000); } break; case 1: { _unit->Emote(EMOTE_ONESHOT_TALK); _unit->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "Warbringer, that will require the use of all the hold's infernals. It may leave us vulnerable to a counterattack."); mJovaanPhase = 2; ResetTimer(mJovaanTimer, 11000); } break; case 2: { _unit->SetStandState(STANDSTATE_STAND); mJovaanPhase = 3; ResetTimer(mJovaanTimer, 1000); } break; case 3: { _unit->Emote(EMOTE_ONESHOT_SALUTE); _unit->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "It shall be as you say, warbringer. One last question, if I may..."); mJovaanPhase = 4; ResetTimer(mJovaanTimer, 10000); } break; case 4: { _unit->Emote(EMOTE_ONESHOT_QUESTION); _unit->SendChatMessage(CHAT_MSG_MONSTER_SAY, LANG_UNIVERSAL, "What's in the crate?"); mJovaanPhase = 5; ResetTimer(mJovaanTimer, 10000); } break; case 5: { _unit->Emote(EMOTE_ONESHOT_SALUTE); mJovaanPhase = -1; RemoveTimer(mJovaanTimer); } break; } } ParentClass::AIUpdate(); }
void AIUpdate() { SetCanEnterCombat(false); SetCanMove(false); SetAllowMelee(false); SetAllowSpell(false); // ORB ONE if (IsTimerFinished(Phase_Timer) && GetPhase() == 0) { if (Phasepart == 0) { Spawncounter = 0; orb1 = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(482.929f, -151.114f, 43.654f, 183961); if (orb1) orb1->SetState(GAMEOBJECT_STATE_OPEN); switch (RandomUInt(1)) { NPC_ID_Spawn = 0; case 0: NPC_ID_Spawn = CN_BLAZING_TRICKSTER; break; case 1: NPC_ID_Spawn = CN_WARP_STALKER; break; } ResetTimer(Phase_Timer, 8000); Phasepart = 1; return; } else if (Phasepart == 1) { if (!NPC_orb1 && NPC_ID_Spawn != 0 && Spawncounter == 0) { ++Spawncounter; NPC_orb1 = SpawnCreature(NPC_ID_Spawn, 475.672f, -147.086f, 42.567f, 3.184015f); return; } else if (NPC_orb1 && !NPC_orb1->IsAlive()) { _unit->SendScriptTextChatMessage(SAY_MELLICHAR_03); SetPhase(1); Phasepart = 0; ResetTimer(Phase_Timer, 6000); return; } else { return; } return; } //return; } // ORB TWO else if (IsTimerFinished(Phase_Timer) && GetPhase() == 1) { if (Phasepart == 0) { Spawncounter = 0; orb2 = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(409.062f, -152.161f, 43.653f, 183963); if (orb2) orb2->SetState(GAMEOBJECT_STATE_OPEN); ResetTimer(Phase_Timer, 8000); Phasepart = 1; return; } else if (Phasepart == 1) { if (!NPC_orb2 && Spawncounter == 0) { ++Spawncounter; NPC_orb2 = SpawnCreature(CN_MILLHOUSE_MANASTORM, 413.192f, -148.586f, 42.569f, 0.024347f); return; } else if (NPC_orb2 && NPC_orb2->IsAlive()) { Creature* millhouse = TO_CREATURE(ForceCreatureFind(CN_MILLHOUSE_MANASTORM)); if (millhouse) { millhouse->SendTimedScriptTextChatMessage(SAY_MILLHOUS_01, 2000); _unit->SendTimedScriptTextChatMessage(SAY_MELLICHAR_04, 13000); millhouse->SendTimedScriptTextChatMessage(SAY_MILLHOUS_02, 22000); } SetPhase(2); Phasepart = 0; ResetTimer(Phase_Timer, 25000); return; } else { return; } return; } //return; } // ORB THREE else if (IsTimerFinished(Phase_Timer) && GetPhase() == 2) { if (Phasepart == 0) { Spawncounter = 0; orb3 = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(415.167f, -174.338f, 43.654f, 183964); if (orb3) orb3->SetState(GAMEOBJECT_STATE_OPEN); switch (RandomUInt(1)) { NPC_ID_Spawn = 0; case 0: NPC_ID_Spawn = CN_SULFURON_MAGMA_THROWER; break; case 1: NPC_ID_Spawn = CN_AKKIRIS_LIGHTNING_WAKER; break; } ResetTimer(Phase_Timer, 8000); Phasepart = 1; return; } else if (Phasepart == 1) { if (!NPC_orb3 && NPC_ID_Spawn != 0 && Spawncounter == 0) { /// \todo investigate.... saying "1"... really? _unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, "1"); ++Spawncounter; NPC_orb3 = SpawnCreature(NPC_ID_Spawn, 420.050f, -173.500f, 42.580f, 6.110f); return; } else if (!NPC_orb3) { /// \todo investigate.... saying "2"... really? _unit->SendChatMessage(CHAT_MSG_MONSTER_YELL, LANG_UNIVERSAL, "2"); NPC_orb3 = GetNearestCreature(NPC_ID_Spawn); } else if (NPC_orb3 && !NPC_orb3->IsAlive()) { _unit->SendScriptTextChatMessage(SAY_MELLICHAR_05); SetPhase(3); Phasepart = 0; ResetTimer(Phase_Timer, 8000); return; } else { return; } return; } //return; } // ORB FOUR else if (IsTimerFinished(Phase_Timer) && GetPhase() == 3) { if (Phasepart == 0) { Spawncounter = 0; orb4 = _unit->GetMapMgr()->GetInterface()->GetGameObjectNearestCoords(476.422f, -174.517f, 42.748f, 183962); if (orb4) orb4->SetState(GAMEOBJECT_STATE_OPEN); switch (RandomUInt(1)) { NPC_ID_Spawn = 0; case 0: NPC_ID_Spawn = CN_TWILIGHT_DRAKONAAR; break; case 1: NPC_ID_Spawn = CN_BLACKWING_DRAKONAAR; break; } ResetTimer(Phase_Timer, 8000); Phasepart = 1; return; } else if (Phasepart == 1) { if (!NPC_orb4 && NPC_ID_Spawn != 0 && Spawncounter == 0) { ++Spawncounter; NPC_orb4 = SpawnCreature(NPC_ID_Spawn, 471.153f, -174.715f, 42.589f, 3.097f); return; } else if (!NPC_orb4) { NPC_orb4 = GetNearestCreature(NPC_ID_Spawn); } else if (NPC_orb4 && !NPC_orb4->IsAlive()) { _unit->SendScriptTextChatMessage(SAY_MELLICHAR_06); SetPhase(4); Phasepart = 0; ResetTimer(Phase_Timer, 6000); return; } else { return; } return; } //return; } else if (IsTimerFinished(Phase_Timer) && GetPhase() == 4) {} ParentClass::AIUpdate(); SetCanMove(false); SetAllowMelee(false); SetAllowSpell(false); }