Пример #1
0
void IsleOfConquest::EventRefineryCaptured(){
    ControlPointTypes state = controlpoint[ IOC_CONTROL_POINT_REFINERY ].state;
    uint32 newteam = 0;
    uint32 oldteam = 0;
    
    switch( state ){
        case IOC_SPAWN_TYPE_ALLIANCE_CONTROLLED:
            newteam = TEAM_ALLIANCE;
            oldteam = TEAM_HORDE;
            break;
        case IOC_SPAWN_TYPE_HORDE_CONTROLLED:
            newteam = TEAM_HORDE;
            oldteam = TEAM_ALLIANCE;
            break;
    }

    RemoveAuraFromTeam( oldteam, IOC_REFINERY_BONUS );
    CastSpellOnTeam( newteam, IOC_REFINERY_BONUS );
}
void StrandOfTheAncient::StartRound(){
	roundprogress = SOTA_ROUND_STARTED;

	m_mainLock.Acquire();
	
	for( std::set< Player* >::iterator itr = m_players[ Attackers ].begin(); itr != m_players[ Attackers ].end(); itr++ ){
		Player *p = *itr;
		
		p->SafeTeleport( p->GetMapId(), p->GetInstanceID(), sotaAttackerStartingPosition[ SOTA_ROUND_STARTED ] );
		p->RemoveAura( BG_PREPARATION );
	}

	m_mainLock.Release();

	RemoveAuraFromTeam( Defenders, BG_PREPARATION );

	SetWorldState( WORLDSTATE_SOTA_TIMER_1, 10 );
	SetTime( ROUND_LENGTH );
	sEventMgr.AddEvent( this, &StrandOfTheAncient::TimeTick, EVENT_SOTA_TIMER, MSTIME_SECOND * 5, 0, EVENT_FLAG_DO_NOT_EXECUTE_IN_WORLD_CONTEXT );
	UpdatePvPData();
}