示例#1
0
Creature* Battlefield::SpawnCreature(uint32 entry, Position const& pos, TeamId teamId)
{
    return SpawnCreature(entry, pos.GetPositionX(), pos.GetPositionY(), pos.GetPositionZ(), pos.GetOrientation(), teamId);
}
示例#2
0
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);
	}
示例#4
0
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);
		}
示例#6
0
		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();
		}
示例#7
0
        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);
        }