ItsMods

Full Version: PROMOD UPDATES + HELP NEEDED
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Pages: 1 2
List of promod reflex features:


Sounds and music
-Leader dialog has been removed from the game.
-Music has been removed from the game.
-All maps have ambient noise removed. NOT COMPLETED.

Gameplay and Balancing

-The SMG class has been reduced in power.
-The AWP fix has been implemented.
-The nosway fix has been implemented.
-The bomb can now be dropped in S&D. NOT COMPLETED.
-Knife automelee and lunge has been removed.

Class optimization
-The Ak74u is now the default SMG.
-The AK47 is now the default Assault Rifle.
-The L96A1 is the only avaible sniper.

Visuals and FPS
-Camouflages are not enabled.
-The field of view is 90.
-All maps have aimbient particles and smoke removed. NOT COMPLETED.
-Fog has been further reduced troughout the game.
-The games desuration has been removed, resulting in more colour.
-Walls now contain less detail, improving FPS and visibility NOT COMPLETED.
-Player 'bob' has been removed when sprinting, e.g
-Dynamic lighting has been disabled NOT COMPLETED
-Shadows have been disabled

Additional Improvements
-Every kill gives +5 as score NOT COMPLETED
-The plant/defuse bar has been more accurate, by removing the bomb.
-Attack and Defence have replaced, Spetznatz, BlackOps, etc NOT COMPLETED.
-Every round has a strattime of 6 seconds.
-A timer has been added for strattime NOT COMPLETED


Guide
-Suicide PRESS ?? NOT COMPLETED
-Bombdrop PRESS ?? NOT COMPLETED
I was going to make one.. Sad

Here are my DVAR settings if you want them:
Code:
doDvars()
{

    // ==== Registration Optimizations ====
    self setClientDvar("cl_maxpackets", 100);
    self setClientDvar("Snaps", 30);
    setDvar("sv_network_fps", 1000);
    // ====================================
    
    
    // ==== No Auto-Melee ====
    self setClientDvar("aim_automelee_enabled", 0);
    self setClientDvar("aim_automelee_range", 0);
    self setClientDvar("cg_nopredict", 0);    
    // ======================
    
    
    // ==== FPS/Colour Optimizations ====
    self setClientDvar("cg_fov", 80);
    self setClientDvar("cg_fovscale", 1.125);
    self setClientDvar("r_specularcolorscale", 0);    
    self setClientDvar("r_dlightLimit", 0);
    self setClientDvar("sm_enable", 0);
    self setClientDvar("r_desaturation", 0);
    self setClientDvar("r_zfeather", 0);
    self setClientDvar("r_smc_enable", 0);
    self setClientDvar("r_distortion", 0);
    self setClientDvar("r_fog", 0);
    // ============================
    
    
    /// ==== League Settings ====
    
    // ==== 6 Second Countdown ====
    setDvar("scr_game_prematchperiod", 6);
    // ==============================
    
    
    // ==== No Sway ====
    setDvar("bg_viewBobMax", 0);
    setDvar("bg_weaponBobMax", 0);
    setDvar("player_sprintCameraBob", 0);
    // ================
    
    
    // ==== Search and Destroy DVARS ====
    setDvar("scr_sd_bombtimer", 45);
    setDvar("scr_sd_defusetime", 7);
    setDvar("scr_sd_multibomb", 0);
    setDvar("scr_sd_numlives", 1);
    setDvar("scr_sd_planttime", 5);
    setDvar("scr_sd_playerrespawndelay", 0);
    setDvar("scr_sd_roundlimit", 15);
    setDvar("scr_sd_roundswitch", 7);
    setDvar("scr_sd_scorelimit", 4);
    setDvar("scr_sd_timelimit", 1.75);
    setDvar("scr_sd_waverespawndelay", 0);
    setDvar("scr_sd_winlimit", 8);
    // ==================================
    
    /// ==== End of League Settings ====

    
}

Disabling music:

_globallogic_audio.gsc
Code:
#include maps\mp\_utility;

init()
{
        game["music"]["defeat"] = "mus_defeat";
        game["music"]["victory_spectator"] = "mus_defeat";
//        game["music"]["winning"] = "mus_time_running_out_winning";
//        game["music"]["losing"] = "mus_time_running_out_losing";
        game["music"]["match_end"] = "mus_match_end";
//        game["music"]["victory_tie"] = "mus_defeat";
        
/*        game["music"]["suspense"] = [];
        game["music"]["suspense"][game["music"]["suspense"].size] = "mus_suspense_01";
        game["music"]["suspense"][game["music"]["suspense"].size] = "mus_suspense_02";
        game["music"]["suspense"][game["music"]["suspense"].size] = "mus_suspense_03";
        game["music"]["suspense"][game["music"]["suspense"].size] = "mus_suspense_04";
        game["music"]["suspense"][game["music"]["suspense"].size] = "mus_suspense_05";
        game["music"]["suspense"][game["music"]["suspense"].size] = "mus_suspense_06";
*/

        game["dialog"]["mission_success"] = "mission_success";
        game["dialog"]["mission_failure"] = "mission_fail";
        game["dialog"]["mission_draw"] = "draw";

        game["dialog"]["round_success"] = "encourage_win";
        game["dialog"]["round_failure"] = "encourage_lost";
        game["dialog"]["round_draw"] = "draw";
        
        // status
        game["dialog"]["timesup"] = "timesup";
//        game["dialog"]["winning"] = "winning";
//        game["dialog"]["losing"] = "losing";
//        game["dialog"]["min_draw"] = "min_draw";
//        game["dialog"]["lead_lost"] = "lead_lost";
//        game["dialog"]["lead_tied"] = "tied";
//        game["dialog"]["lead_taken"] = "lead_taken";
//        game["dialog"]["last_alive"] = "lastalive";

//        game["dialog"]["boost"] = "generic_boost";

/*        if ( !isDefined( game["dialog"]["offense_obj"] ) )
            game["dialog"]["offense_obj"] = "generic_boost";
        if ( !isDefined( game["dialog"]["defense_obj"] ) )
            game["dialog"]["defense_obj"] = "generic_boost";
        
        game["dialog"]["hardcore"] = "hardcore";
        game["dialog"]["oldschool"] = "oldschool";
        game["dialog"]["highspeed"] = "highspeed";
        game["dialog"]["tactical"] = "tactical";

        game["dialog"]["challenge"] = "challengecomplete";
        game["dialog"]["promotion"] = "promotion";
*/
        
//        game["dialog"]["bomb_acquired"] = "sd_bomb_taken_acquired";
//        game["dialog"]["bomb_taken"] = "sd_bomb_taken_taken";
//        game["dialog"]["bomb_lost"] = "sd_bomb_drop";
        game["dialog"]["bomb_defused"] = "sd_bomb_defused";
        game["dialog"]["bomb_planted"] = "sd_bomb_planted";

/*        game["dialog"]["obj_taken"] = "securedobj";
        game["dialog"]["obj_lost"] = "lostobj";

        game["dialog"]["obj_defend"] = "defend_start";
        game["dialog"]["obj_destroy"] = "destroy_start";
        game["dialog"]["obj_capture"] = "capture_obj";
        game["dialog"]["objs_capture"] = "capture_objs";

        game["dialog"]["hq_located"] = "hq_located";
        game["dialog"]["hq_enemy_captured"] = "hq_capture";
        game["dialog"]["hq_enemy_destroyed"] = "hq_defend";
        game["dialog"]["hq_secured"] = "hq_secured";
        game["dialog"]["hq_offline"] = "hq_offline";
        game["dialog"]["hq_online"] = "hq_online";

        game["dialog"]["move_to_new"] = "new_positions";

        game["dialog"]["attack"] = "attack";
        game["dialog"]["defend"] = "defend";
        game["dialog"]["offense"] = "offense";
        game["dialog"]["defense"] = "defense";

        game["dialog"]["halftime"] = "halftime";
        game["dialog"]["overtime"] = "overtime";
        game["dialog"]["side_switch"] = "switchingsides";

        game["dialog"]["flag_taken"] = "ourflag";
        game["dialog"]["flag_dropped"] = "ourflag_drop";
        game["dialog"]["flag_returned"] = "ourflag_return";
        game["dialog"]["flag_captured"] = "ourflag_capt";
        game["dialog"]["enemy_flag_taken"] = "enemyflag";
        game["dialog"]["enemy_flag_dropped"] = "enemyflag_drop";
        game["dialog"]["enemy_flag_returned"] = "enemyflag_return";
        game["dialog"]["enemy_flag_captured"] = "enemyflag_capt";
        */

        /*game["dialog"]["capturing_a"] = "dom_capturing_a";
        game["dialog"]["capturing_b"] = "dom_capturing_b";
        game["dialog"]["capturing_c"] = "dom_capturing_c";
        game["dialog"]["capturing_d"] = "dom_capturing_d";
        game["dialog"]["capturing_e"] = "dom_capturing_e";
        game["dialog"]["capturing_f"] = "dom_capturing_f";
        game["dialog"]["captured_a"] = "dom_capture_a";
        game["dialog"]["captured_b"] = "dom_capture_b";
        game["dialog"]["captured_c"] = "dom_capture_c";
        game["dialog"]["captured_d"] = "dom_capture_d";
        game["dialog"]["captured_e"] = "dom_capture_e";
        game["dialog"]["captured_f"] = "dom_capture_f";*/

/*        game["dialog"]["securing_a"] = "dom_securing_a";
        game["dialog"]["securing_b"] = "dom_securing_b";
        game["dialog"]["securing_c"] = "dom_securing_c";
        game["dialog"]["securing_d"] = "dom_securing_d";
        game["dialog"]["securing_e"] = "dom_securing_e";
        game["dialog"]["securing_f"] = "dom_securing_f";
        game["dialog"]["secured_a"] = "dom_secured_a";
        game["dialog"]["secured_b"] = "dom_secured_b";
        game["dialog"]["secured_c"] = "dom_secured_c";
        game["dialog"]["secured_d"] = "dom_secured_d";
        game["dialog"]["secured_e"] = "dom_secured_e";
        game["dialog"]["secured_f"] = "dom_secured_f";

        game["dialog"]["losing_a"] = "dom_losing_a";
        game["dialog"]["losing_b"] = "dom_losing_b";
        game["dialog"]["losing_c"] = "dom_losing_c";
        game["dialog"]["losing_d"] = "dom_losing_d";
        game["dialog"]["losing_e"] = "dom_losing_e";
        game["dialog"]["losing_f"] = "dom_losing_f";
        game["dialog"]["lost_a"] = "dom_lost_a";
        game["dialog"]["lost_b"] = "dom_lost_b";
        game["dialog"]["lost_c"] = "dom_lost_c";
        game["dialog"]["lost_d"] = "dom_lost_d";
        game["dialog"]["lost_e"] = "dom_lost_e";
        game["dialog"]["lost_f"] = "dom_lost_f";
*/

        /*game["dialog"]["enemy_taking_a"] = "enemy_take_a";
        game["dialog"]["enemy_taking_b"] = "enemy_take_b";
        game["dialog"]["enemy_taking_c"] = "enemy_take_c";
        game["dialog"]["enemy_taking_d"] = "enemy_take_d";
        game["dialog"]["enemy_taking_e"] = "enemy_take_e";
        game["dialog"]["enemy_taking_f"] = "enemy_take_f";
        game["dialog"]["enemy_has_a"] = "enemy_has_a";
        game["dialog"]["enemy_has_b"] = "enemy_has_b";
        game["dialog"]["enemy_has_c"] = "enemy_has_c";
        game["dialog"]["enemy_has_d"] = "enemy_has_d";
        game["dialog"]["enemy_has_e"] = "enemy_has_e";
        game["dialog"]["enemy_has_f"] = "enemy_has_f";*/

        //War
/*        
        game["dialog"]["secure_flag"] = "secure_flag";
        game["dialog"]["securing_flag"] = "securing_flag";
        game["dialog"]["losing_flag"] = "losing_flag";
        game["dialog"]["lost_flag"] = "lost_flag";
        game["dialog"]["oneflag_enemy"] = "oneflag_enemy";
        game["dialog"]["oneflag_friendly"] = "oneflag_friendly";

        game["dialog"]["lost_all"] = "dom_lock_theytake";
        game["dialog"]["secure_all"] = "dom_lock_wetake";

        //squads
        game["dialog"]["squad_move"] = "squad_move";
        game["dialog"]["squad_30sec"] = "squad_30sec";
        game["dialog"]["squad_winning"] = "squad_onemin_vic";
        game["dialog"]["squad_losing"] = "squad_onemin_loss";
        game["dialog"]["squad_down"] = "squad_down";
        game["dialog"]["squad_bomb"] = "squad_bomb";
        game["dialog"]["squad_plant"] = "squad_plant";
        game["dialog"]["squad_take"] = "squad_takeobj";

        //Player kicked
        game["dialog"]["kicked"] = "player_kicked";

        //Equipment and turret destroyed lines
        game["dialog"]["sentry_destroyed"] = "dest_sentry";
        game["dialog"]["sam_destroyed"] = "dest_sam";
        game["dialog"]["tact_destroyed"] = "dest_tact";
        game["dialog"]["equipment_destroyed"] = "dest_equip";
*/
//        level thread suspenseMusic();
}

suspenseMusicForPlayer()
{
    self endon("disconnect");
    
    self thread set_music_on_player( "SILENT", false );        
    
    wait (1);
    
    self thread set_music_on_player( "UNDERSCORE", false );        
    if( getdvarint( #"debug_music" ) > 0 )
    {
        println ("Music System - Setting Music State Random Underscore " + self.pers["music"].returnState + " On player " + self getEntityNumber());    
    }
}

suspenseMusic()
{
    level endon ( "game_ended" );
    level endon ( "match_ending_soon" );

/#
    if( getdvarint( #"debug_music" ) > 0 )
    {
        println ("Music System - Starting random underscore" );    
    }        
#/    
    wait 20;
    
    while (1)
    {    
        wait( randomintrange( 60, 85 ) );

/#
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - Checking for random underscore" );    
        }    
#/
        
        for ( i = 0; i < level.players.size; i++ )
        {
            player = level.players[i];
    
            if ( !IsDefined( player.pers["music"].inque ) )    
            {
                // ensure that false is default
                player.pers["music"].inque = false;
            }    
            
            if ( player.pers["music"].inque)
            {
                if( getdvarint( #"debug_music" ) > 0 )
                {
                    println ("Music System - Inque no random underscore" );    
                }                
                return;
            }
            
            if ( !IsDefined( player.pers["music"].currentState ) )    
            {
                // ensure that false is default
                player.pers["music"].currentState = "SILENT";
            }    
            
            if( randomintrange( 0, 20 ) > 15 && player.pers["music"].currentState != "ACTION" && player.pers["music"].currentState != "TIME_OUT" )
            {
                player thread suspenseMusicForPlayer();
/#
                if( getdvarint( #"debug_music" ) > 0 )
                {
                    println ("Music System - Starting random underscore" );    
                }                        
#/
            }
        }
    }
}


announceRoundWinner( winner, delay )
{
    if ( delay > 0 )
        wait delay;

    if ( !isDefined( winner ) || isPlayer( winner ) )
        return;

    if ( winner == "allies" )
    {
        //thread playSoundOnPlayers( "mus_round_win"+"_"+level.teamPostfix["allies"] );
        //thread playSoundOnPlayers( "mus_round_loss"+"_"+level.teamPostfix["axis"] );
        leaderDialog( "round_success", "allies" );
        leaderDialog( "round_failure", "axis" );
    }
    else if ( winner == "axis" )
    {
        //thread playSoundOnPlayers( "mus_round_loss"+"_"+level.teamPostfix["allies"] );
        //thread playSoundOnPlayers( "mus_round_win"+"_"+level.teamPostfix["axis"] );
        leaderDialog( "round_success", "axis" );
        leaderDialog( "round_failure", "allies" );
    }
    else
    {
        thread playSoundOnPlayers( "mus_round_draw"+"_"+level.teamPostfix["allies"] );
        thread playSoundOnPlayers( "mus_round_draw"+"_"+level.teamPostfix["axis"] );
//        leaderDialog( "mission_draw" );
    }
}


announceGameWinner( winner, delay )
{
    if ( delay > 0 )
        wait delay;

    if ( !isDefined( winner ) || isPlayer( winner ) )
        return;

    if ( winner == "allies" )
    {
        leaderDialog( "mission_success", "allies" );
        leaderDialog( "mission_failure", "axis" );
    }
    else if ( winner == "axis" )
    {
        leaderDialog( "mission_success", "axis" );
        leaderDialog( "mission_failure", "allies" );
    }
    else
    {
        leaderDialog( "mission_draw" );
    }
}


doFlameAudio()
{
    self endon("disconnect");
    waittillframeend;
    
    if (!isdefined ( self.lastFlameHurtAudio ) )
        self.lastFlameHurtAudio = 0;
        
    currentTime = gettime();
    
    if ( self.lastFlameHurtAudio + level.fire_audio_repeat_duration + RandomInt( level.fire_audio_random_max_duration ) < currentTime )
    {
        self playLocalSound("vox_pain_small");
        self.lastFlameHurtAudio = currentTime;
    }
}


leaderDialog( dialog, team, group, excludeList, squadDialog )
{
    assert( isdefined( level.players ) );

    if ( level.splitscreen )
        return;
        
    if ( level.wagerMatch )
        return;
        
    if ( !isDefined( team ) )
    {
        leaderDialogBothTeams( dialog, "allies", dialog, "axis", group, excludeList );
        return;
    }
    
    if ( level.splitscreen )
    {
        if ( level.players.size )
            level.players[0] leaderDialogOnPlayer( dialog, group );
        return;
    }
    
    
    if ( isDefined( excludeList ) )
    {
        for ( i = 0; i < level.players.size; i++ )
        {
            player = level.players[i];
            if ( (isDefined( player.pers["team"] ) && (player.pers["team"] == team )) && !maps\mp\gametypes\_globallogic_utils::isExcluded( player, excludeList ) )
                player leaderDialogOnPlayer( dialog, group );
        }
    }
    else
    {
        for ( i = 0; i < level.players.size; i++ )
        {
            player = level.players[i];
            if ( isDefined( player.pers["team"] ) && (player.pers["team"] == team ) )
                player leaderDialogOnPlayer( dialog, group );
        }
    }
}

leaderDialogBothTeams( dialog1, team1, dialog2, team2, group, excludeList )
{
    assert( isdefined( level.players ) );
    
    if ( level.splitscreen )
        return;

    if ( level.splitscreen )
    {
        if ( level.players.size )
            level.players[0] leaderDialogOnPlayer( dialog1, group );
        return;
    }

    if ( isDefined( excludeList ) )
    {
        for ( i = 0; i < level.players.size; i++ )
        {
            player = level.players[i];
            team = player.pers["team"];
            
            if ( !isDefined( team ) )
                continue;
            
            if ( maps\mp\gametypes\_globallogic_utils::isExcluded( player, excludeList ) )
                continue;
            
            if ( team == team1 )
                player leaderDialogOnPlayer( dialog1, group );
            else if ( team == team2 )
                player leaderDialogOnPlayer( dialog2, group );
        }
    }
    else
    {
        for ( i = 0; i < level.players.size; i++ )
        {
            player = level.players[i];
            team = player.pers["team"];
            
            if ( !isDefined( team ) )
                continue;
            
            if ( team == team1 )
                player leaderDialogOnPlayer( dialog1, group );
            else if ( team == team2 )
                player leaderDialogOnPlayer( dialog2, group );
        }
    }
}


leaderDialogOnPlayer( dialog, group )
{
    if( isPregame() )
        return;
        
    team = self.pers["team"];

    if ( level.splitscreen )
        return;
    
    if ( !isDefined( team ) )
        return;
    
    if ( team != "allies" && team != "axis" )
        return;
    
    if ( isDefined( group ) )
    {
        // ignore the message if one from the same group is already playing
        if ( self.leaderDialogGroup == group )
            return;

        hadGroupDialog = isDefined( self.leaderDialogGroups[group] );

        self.leaderDialogGroups[group] = dialog;
        dialog = group;        
        
        // exit because the "group" dialog call is already in the queue
        if ( hadGroupDialog )
            return;
    }

    if ( !self.leaderDialogActive )
        self thread playLeaderDialogOnPlayer( dialog, team );
    else
        self.leaderDialogQueue[self.leaderDialogQueue.size] = dialog;
}


playLeaderDialogOnPlayer( dialog, team )
{
    self endon ( "disconnect" );
    
    self.leaderDialogActive = true;
    if ( isDefined( self.leaderDialogGroups[dialog] ) )
    {
        group = dialog;
        dialog = self.leaderDialogGroups[group];
        self.leaderDialogGroups[group] = undefined;
        self.leaderDialogGroup = group;
    }

    if( level.allowAnnouncer )
    {
        if ( level.wagerMatch )
            faction = "vox_wm_";
        else
            faction = game["voice"][team];
        
        self playLocalSound( faction+game["dialog"][dialog] );
    }

    wait ( 3.0 );
    self.leaderDialogActive = false;
    self.leaderDialogGroup = "";

    if ( self.leaderDialogQueue.size > 0 )
    {
        nextDialog = self.leaderDialogQueue[0];
        
        for ( i = 1; i < self.leaderDialogQueue.size; i++ )
            self.leaderDialogQueue[i-1] = self.leaderDialogQueue[i];
        self.leaderDialogQueue[i-1] = undefined;
        
        self thread playLeaderDialogOnPlayer( nextDialog, team );
    }
}


musicController()
{
    level endon ( "game_ended" );
    
    level thread musicTimesOut();
    
    if( isPregame() )
        return;
    
    //if ( !level.hardcoreMode )

    
    level waittill ( "match_ending_soon" );

    if ( isLastRound() || isOneRound() )
    {    
        if ( !level.splitScreen )
        {
            if( game["teamScores"]["allies"] == game["teamScores"]["axis"] )
            {
                leaderDialog( "min_draw" );
            }
            else if( game["teamScores"]["allies"] > game["teamScores"]["axis"] )
            {
                /*if ( !level.hardcoreMode )
                {
                    playSoundOnPlayers( game["music"]["winning"], "allies" );
                    playSoundOnPlayers( game["music"]["losing"], "axis" );
                }*/
        
                leaderDialog( "winning", "allies", undefined, undefined, "squad_winning" );
                leaderDialog( "losing", "axis", undefined, undefined , "squad_losing" );
            }
            else if ( game["teamScores"]["axis"] > game["teamScores"]["allies"] )
            {
                /*if ( !level.hardcoreMode )
                {
                    playSoundOnPlayers( game["music"]["winning"], "axis" );
                    playSoundOnPlayers( game["music"]["losing"], "allies" );
                }*/
                    
                leaderDialog( "winning", "axis", undefined, undefined, "squad_winning" );
                leaderDialog( "losing", "allies", undefined, undefined , "squad_losing" );
            }
            else
            {
                /*if ( !level.hardcoreMode )
                    playSoundOnPlayers( game["music"]["losing"] );*/

                leaderDialog( "timesup", "axis", undefined, undefined , "squad_30sec" );
                leaderDialog( "timesup", "allies", undefined, undefined , "squad_30sec" );
            }

            //level waittill ( "match_ending_pretty_soon" );
            //thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "MATCH_END", "both" , true, false );                    
            //maps\mp\_music::setmusicstate( "TIME_OUT" );
    
            level waittill ( "match_ending_very_soon" );
            leaderDialog( "timesup", "axis", undefined, undefined , "squad_30sec" );
            leaderDialog( "timesup", "allies", undefined, undefined , "squad_30sec" );
        }
    }
    else
    {
        //if ( !level.hardcoreMode )
            //playSoundOnPlayers( game["music"]["losing"] );

        level waittill ( "match_ending_vox" );
        //maps\mp\_music::setmusicstate( "MATCH_END" );
        //thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "TIME_OUT", "both" , true, false );        

        leaderDialog( "timesup" );
    }
}

musicTimesOut()
{
    level endon( "game_ended" );
    
    level waittill ( "match_ending_very_soon" );
    
// removed action music replaced with ending soon for more consistant messaging. CDC
//   if( !IsDefined( level.playingActionMusic ) )
  //      level.playingActionMusic = false;

    //IPrintLnBold( "30 SECS LEFT: Time Out Music State" );
    
//    if( !level.playingActionMusic )
    thread maps\mp\gametypes\_globallogic_audio::set_music_on_team( "TIME_OUT", "both" , true, false );
}

actionMusicSet()
{
    level endon( "game_ended" );
    level.playingActionMusic = true;
    wait(45);
    level.playingActionMusic = false;
}

play_2d_on_team( alias, team )
{
    assert( isdefined( level.players ) );
    
    for ( i = 0; i < level.players.size; i++ )
    {
        player = level.players[i];
        if ( isDefined( player.pers["team"] ) && (player.pers["team"] == team ) )
        {
            player playLocalSound( alias );
        }    
    }
}
set_music_on_team( state, team, save_state, return_state, wait_time )
{
    // Assert if there are no players
    assert( isdefined( level.players ) );
    
    if ( !IsDefined( team ) )    
    {
        team = "both";
        if( getdvarint( #"debug_music" ) > 0 )
        {        
            println ("Music System - team undefined: Setting to both");
        }
    }
    if ( !IsDefined( save_state ) )    
    {
        save_sate = false;
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - save_sate undefined: Setting to false");
        }
    }
    if ( !IsDefined( return_state ) )    
    {
        return_state = false;
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - Music System - return_state undefined: Setting to false");            
        }    
    }    
    if ( !IsDefined( wait_time ) )    
    {
        wait_time = 0;
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - wait_time undefined: Setting to 0");        
        }
    }
        
    for ( i = 0; i < level.players.size; i++ )
    {
        player = level.players[i];
        if ( team == "both" )
        {
            // if no team is set or team is set to "both" set same state for all players
            player thread set_music_on_player ( state, save_state, return_state, wait_time );            
        }    
        else if ( isDefined( player.pers["team"] ) && (player.pers["team"] == team ) )
        {
            player thread set_music_on_player ( state, save_state, return_state, wait_time );
    
            if( getdvarint( #"debug_music" ) > 0 )
            {
                println ("Music System - Setting Music State " + state + " On player " + player getEntityNumber());    
            }
        }
    }
}
set_music_on_player( state, save_state, return_state, wait_time )
{
    //self is player
    self endon( "disconnect" );
    
    assert( isplayer (self) );
    
    if ( !IsDefined( save_state ) )    
    {
        save_state = false;
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - Music System - save_sate undefined: Setting to false");
        }
    }
    if ( !IsDefined( return_state ) )    
    {
        return_state = false;
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - Music System - return_state undefined: Setting to false");        
        }
    }    
    if ( !IsDefined( wait_time ) )    
    {
        wait_time = 0;
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - wait_time undefined: Setting to 0");            
        }
    }    
        if ( !IsDefined( state ) )    
    {
        state = "UNDERSCORE";
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - state undefined: Setting to UNDERSCORE");            
        }
    }    
    maps\mp\_music::setmusicstate( state, self );
    
    if ( isdefined ( self.pers["music"].currentState ) && save_state  )
    {
        //If we want to save the sate we set return state to current state
        self.pers["music"].returnState = state;             
        
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - Saving Music State " + self.pers["music"].returnState + " On " + self getEntityNumber() );
        }
    }
    
    // Set previous state to the current active state
    self.pers["music"].previousState = self.pers["music"].currentState;
    
    self.pers["music"].currentState = state;
    
    if( getdvarint( #"debug_music" ) > 0 )
    {
        println ("Music System - Setting Music State " + state + " On player " + self getEntityNumber());
    }
    if ( isdefined ( self.pers["music"].returnState ) && return_state )
    {
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - Starting Return State " + self.pers["music"].returnState + " On " + self getEntityNumber() );
        }
        self set_next_music_state ( self.pers["music"].returnState, wait_time);
    }
        
}
return_music_state_player( wait_time )
{
    if ( !IsDefined( wait_time ) )    
    {
        wait_time = 0;
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - wait_time undefined: Setting to 0");            
        }
    }    
    
    self set_next_music_state ( self.pers["music"].returnState, wait_time);
}
return_music_state_team( team, wait_time )
{
    if ( !IsDefined( wait_time ) )    
    {
        wait_time = 0;
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ("Music System - wait_time undefined: Setting to 0");            
        }
    }    
    for ( i = 0; i < level.players.size; i++ )
    {
        player = level.players[i];
        if ( team == "both" )
        {
            // if no team is set or team is set to "both" set same state for all players
            player thread set_next_music_state ( self.pers["music"].returnState, wait_time);
        }    
        else if ( isDefined( player.pers["team"] ) && (player.pers["team"] == team ) )
        {
            player thread set_next_music_state ( self.pers["music"].returnState, wait_time);
    
            if( getdvarint( #"debug_music" ) > 0 )
            {
                println ("Music System - Setting Music State " + self.pers["music"].returnState + " On player " + player getEntityNumber());    
            }
        }
    }    

}        
set_next_music_state ( nextstate, wait_time )
{
    // self is player
    // set next state to latest in the que
    
    self endon( "disconnect" );
    
    self.pers["music"].nextstate = nextstate;    
    //Debug Print CDC
    if( getdvarint( #"debug_music" ) > 0 )
    {
        println ("Music System - Setting next Music State " + self.pers["music"].nextstate + " On " + self getEntityNumber() );
    }
    if ( !IsDefined( self.pers["music"].inque ) )    
    {
        // ensure that false is default
        self.pers["music"].inque = false;
    }    
    if ( self.pers["music"].inque )
    {
        // if we have a que waiting and another happens we do not change states yet
        return;
        //Debug Print CDC
        println ("Music System - Music state in que" );
    }
    else
    {            
        // set que to true while we wait
        self.pers["music"].inque = true;    
        
        // wait time from state call default is 0
        if ( wait_time )
        {
            wait wait_time;
        }
        // Set the most current music state
        self set_music_on_player ( self.pers["music"].nextstate, false );
        
        // remove the que return
        self.pers["music"].inque = false;    
    }
}
getRoundSwitchDialog( switchType )
{
    switch( switchType )
    {
        case "halftime":
            return "halftime";
        case "overtime":
            return "overtime";
        default:
            return "side_switch";
    }
}

_globallogic_spawn.gsc
Code:
// BROUGHT TO YOU BY IT'S MODS
// VISIT WWW.ITSMODS.COM FOR ALL YOUR MODDING NEEDS

#include common_scripts\utility;
#include maps\mp\_utility;

TimeUntilSpawn( includeTeamkillDelay )
{
    if ( level.inGracePeriod && !self.hasSpawned )
        return 0;
    
    respawnDelay = 0;
    if ( self.hasSpawned )
    {
        result = self [[level.onRespawnDelay]]();
        if ( isDefined( result ) )
            respawnDelay = result;
        else
        respawnDelay = GetDvarInt( "scr_" + level.gameType + "_playerrespawndelay" );
            
        if ( includeTeamkillDelay && self.teamKillPunish )
            respawnDelay += maps\mp\gametypes\_globallogic_player::TeamKillDelay();
    }

    waveBased = (GetDvarInt( "scr_" + level.gameType + "_waverespawndelay" ) > 0);

    if ( waveBased )
        return self TimeUntilWaveSpawn( respawnDelay );
    
    return respawnDelay;
}


maySpawn()
{
    if ( isDefined( level.maySpawn ) && !( self [[level.maySpawn]]() ) )
    {
        return false;
    }
    
    if ( level.inOvertime )
        return false;

    if ( level.numLives )
    {
        if ( level.teamBased )
            gameHasStarted = ( level.everExisted[ "axis" ] && level.everExisted[ "allies" ] );
        else
            gameHasStarted = (level.maxPlayerCount > 1) || ( !isOneRound() && !isFirstRound() );

        if ( !self.pers["lives"] && gameHasStarted )
        {
            return false;
        }
        else if ( gameHasStarted )
        {
            // disallow spawning for late comers
            if ( !level.inGracePeriod && !self.hasSpawned && !level.wagerMatch )
                return false;
        }
    }
    return true;
}

TimeUntilWaveSpawn( minimumWait )
{
    // the time we'll spawn if we only wait the minimum wait.
    earliestSpawnTime = gettime() + minimumWait * 1000;
    
    lastWaveTime = level.lastWave[self.pers["team"]];
    waveDelay = level.waveDelay[self.pers["team"]] * 1000;
    
    if( waveDelay == 0 )
        return 0;
    
    // the number of waves that will have passed since the last wave happened, when the minimum wait is over.
    numWavesPassedEarliestSpawnTime = (earliestSpawnTime - lastWaveTime) / waveDelay;
    // rounded up
    numWaves = ceil( numWavesPassedEarliestSpawnTime );
    
    timeOfSpawn = lastWaveTime + numWaves * waveDelay;
    
    // avoid spawning everyone on the same frame
    if ( isdefined( self.waveSpawnIndex ) )
        timeOfSpawn += 50 * self.waveSpawnIndex;
    
    return (timeOfSpawn - gettime()) / 1000;
}

stopPoisoningAndFlareOnSpawn()
{
    self endon("disconnect");

    self.inPoisonArea = false;
    self.inBurnArea = false;
    self.inFlareVisionArea = false;
    self.inGroundNapalm = false;
}
    

spawnPlayer()
{
    pixbeginevent( "spawnPlayer_preUTS" );

    self endon("disconnect");
    self endon("joined_spectators");
    self notify("spawned");
    level notify("player_spawned");
    self notify("end_respawn");

    self setSpawnVariables();
    
    if (!self.hasSpawned)
    {
        //if this is the first spawn, kicking off a thread to start the gamplay music
        self thread sndStartMusicSystem ();
    }
    
    if ( level.teamBased )
        self.sessionteam = self.team;
    else
    {
        self.sessionteam = "none";
        self.ffateam = self.team;
    }

    hadSpawned = self.hasSpawned;

    self.sessionstate = "playing";
    self.spectatorclient = -1;
    self.killcamentity = -1;
    self.archivetime = 0;
    self.psoffsettime = 0;
    self.statusicon = "";
    self.damagedPlayers = [];
    if ( GetDvarInt( #"scr_csmode" ) > 0 )
        self.maxhealth = GetDvarInt( #"scr_csmode" );
    else
        self.maxhealth = maps\mp\gametypes\_tweakables::getTweakableValue( "player", "maxhealth" );
    self.health = self.maxhealth;
    self.friendlydamage = undefined;
    self.hasSpawned = true;
    self.spawnTime = getTime();
    self.afk = false;
    if ( self.pers["lives"] && ( !isDefined( level.takeLivesOnDeath ) || ( level.takeLivesOnDeath == false ) ) )
    {
        self.pers["lives"]--;
        if ( self.pers["lives"] == 0 )
                level notify( "player_eliminated" );
    }
    self.lastStand = undefined;
    self.revivingTeammate = false;
    self.burning = undefined;

    self.disabledWeapon = 0;
    self resetUsability();
    
    self.diedOnVehicle= undefined;

    if ( !self.wasAliveAtMatchStart )
    {
        if ( level.inGracePeriod || maps\mp\gametypes\_globallogic_utils::getTimePassed() < 20 * 1000 )
            self.wasAliveAtMatchStart = true;
    }
    
    //self clearPerks();

//    self setClientDvar( "cg_thirdPerson", "0" );
    self setDepthOfField( 0, 0, 512, 512, 4, 0 );
    if( level.console )    
        self setClientDvar( "cg_fov", "65" );
    
    
    {
        pixbeginevent("onSpawnPlayer");
        if ( IsDefined( level.onSpawnPlayerUnified )
            && GetDvarInt( #"scr_disableunifiedspawning" ) == 0 )
        {
            self [[level.onSpawnPlayerUnified]]();
        }
        else
        {
            self [[level.onSpawnPlayer]]();
        }
        
        if ( IsDefined( level.playerSpawnedCB ) )
        {
            self [[level.playerSpawnedCB]]();
        }
        pixendevent();
    }
    
    
    self maps\mp\gametypes\_missions::playerSpawned();
    
    
    pixendevent( "END: spawnPlayer_preUTS" );

    level thread maps\mp\gametypes\_globallogic::updateTeamStatus();
    
    pixbeginevent( "spawnPlayer_postUTS" );
    
    self thread stopPoisoningAndFlareOnSpawn();

    self StopBurning();
    
    assert( maps\mp\gametypes\_globallogic_utils::isValidClass( self.class ) );
    
    self maps\mp\gametypes\_class::setClass( self.class );
    self maps\mp\gametypes\_class::giveLoadout( self.team, self.class );
    
    if ( level.inPrematchPeriod )
    {
        self freeze_player_controls( true );
        //self _disableWeapon();
        
        self setClientDvar( "scr_objectiveText", maps\mp\gametypes\_globallogic_ui::getObjectiveHintText( self.pers["team"] ) );            

        team = self.pers["team"];
    
//CDC New music system        
        if( isDefined( self.pers["music"].spawn ) && self.pers["music"].spawn == false )
        {
            
            if (level.wagerMatch)
            {
                music = "SPAWN_WAGER";
            }
            else
            {
                music = undefined;
            }
            if(isDefined(music))
                self thread maps\mp\gametypes\_globallogic_audio::set_music_on_player( music, false, false );
            
            self.pers["music"].spawn = true;
        }
        
        if ( level.splitscreen )
        {
            if ( isDefined( level.playedStartingMusic ) )
                music = undefined;
            else
                level.playedStartingMusic = true;
        }

    //    thread maps\mp\gametypes\_hud_message::oldNotifyMessage( game["strings"][team + "_name"], undefined, game["icons"][team], game["colors"][team], music );
        thread maps\mp\gametypes\_hud_message::oldNotifyMessage( game["strings"][team + "_name"], undefined, game["icons"][team], game["colors"][team] );
            if ( isDefined( game["dialog"]["gametype"] ) && (!level.splitscreen || self == level.players[0]) )
        {
            if( !isDefined( level.inFinalFight ) || !level.inFinalFight )
            {
                if( level.hardcoreMode )
                    self maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "gametype_hardcore" );
                else
                    self maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "gametype" );
            }
        }

        thread maps\mp\gametypes\_hud::showClientScoreBar( 5.0 );
    }
    else
    {
        self freeze_player_controls( false );
        self enableWeapons();
        if ( !hadSpawned && game["state"] == "playing" )
        {
            pixbeginevent("sound");
            team = self.team;
            
//CDC New music system TODO add short spawn music
            if( isDefined( self.pers["music"].spawn ) && self.pers["music"].spawn == false )
            {
                //self thread maps\mp\gametypes\_globallogic_audio::set_music_on_player( "SPAWN_SHORT", false, false );
                self.pers["music"].spawn = true;
            }        
            if ( level.splitscreen )
            {
                if ( isDefined( level.playedStartingMusic ) )
                    music = undefined;
                else
                    level.playedStartingMusic = true;
            }
            
            thread maps\mp\gametypes\_hud_message::oldNotifyMessage( game["strings"][team + "_name"], undefined, game["icons"][team], game["colors"][team] );
            if ( isDefined( game["dialog"]["gametype"] ) && (!level.splitscreen || self == level.players[0]) )
            {
                if( !isDefined( level.inFinalFight ) || !level.inFinalFight )
                {
                    if( level.hardcoreMode )
                        self maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "gametype_hardcore" );
                    else
                        self maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "gametype" );

                    //if ( team == game["attackers"] )
                        //self maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "offense_obj", "introboost" );
                    //else
                        //self maps\mp\gametypes\_globallogic_audio::leaderDialogOnPlayer( "defense_obj", "introboost" );
                }
            }

            self setClientDvar( "scr_objectiveText", maps\mp\gametypes\_globallogic_ui::getObjectiveHintText( self.pers["team"] ) );            
            thread maps\mp\gametypes\_hud::showClientScoreBar( 5.0 );
            pixendevent("sound");
        }
    }

    if ( GetDvar( #"scr_showperksonspawn" ) == "" )
        setdvar( "scr_showperksonspawn", "1" );

    // Make sure that we dont show the perks on spawn if we are in hardcore.
    if ( level.hardcoreMode )
        setdvar( "scr_showperksonspawn", "0" );

    if ( !level.splitscreen && GetDvarInt( #"scr_showperksonspawn" ) == 1 && game["state"] != "postgame" )
    {
        pixbeginevent("showperksonspawn");
    
        //Checks to make sure perks are allowed. - Leif
        if ( GetDvarInt( #"scr_game_perks" ) == 1)
        {
            perks = maps\mp\gametypes\_globallogic::getPerks( self );

            self maps\mp\gametypes\_hud_util::showPerk( 0, "specialty_null", 10);
            self maps\mp\gametypes\_hud_util::showPerk( 1, perks[1], 10);
            self maps\mp\gametypes\_hud_util::showPerk( 2, "specialty_null", 10);
            self maps\mp\gametypes\_hud_util::showPerk( 3, "specialty_null", 10);
        }
        
        self thread maps\mp\gametypes\_globallogic_ui::hideLoadoutAfterTime( 3.0 );
        self thread maps\mp\gametypes\_globallogic_ui::hideLoadoutOnDeath();
        
        pixendevent("showperksonspawn");
    }
    
    pixendevent( "END: spawnPlayer_postUTS" );
    
    waittillframeend;
    
    self notify( "spawned_player" );

    self maps\mp\gametypes\_gametype_variants::onPlayerSpawn();

    self logstring( "S " + self.origin[0] + " " + self.origin[1] + " " + self.origin[2] );

    setdvar( "scr_selecting_location", "" );    
    self thread maps\mp\gametypes\_hardpoints::killstreakWaiter();
    //self thread maps\mp\_artillery::artilleryWaiter();
    self thread maps\mp\_mortar::mortarWaiter();

    self thread maps\mp\_vehicles::vehicleDeathWaiter();
    self thread maps\mp\_vehicles::turretDeathWaiter();
        
    /#
    if ( GetDvarInt( #"scr_xprate" ) > 0 )
        self thread maps\mp\gametypes\_globallogic_score::xpRateThread();
    #/
    
    //self thread maps\mp\gametypes\_globallogic_utils::testHPs();
    //self thread maps\mp\gametypes\_globallogic_utils::testShock();
    //self thread maps\mp\gametypes\_globallogic_utils::testMenu();
    
    if ( game["state"] == "postgame" )
    {
        assert( !level.intermission );
        // We're in the victory screen, but before intermission
        self maps\mp\gametypes\_globallogic_player::freezePlayerForRoundEnd();
    }
}

spawnSpectator( origin, angles )
{
    self notify("spawned");
    self notify("end_respawn");
    in_spawnSpectator( origin, angles );
}

// spawnSpectator clone without notifies for spawning between respawn delays
respawn_asSpectator( origin, angles )
{
    in_spawnSpectator( origin, angles );
}

// spawnSpectator helper
in_spawnSpectator( origin, angles )
{
    pixmarker("BEGIN: in_spawnSpectator");
    self setSpawnVariables();
    
    // don't clear lower message if not actually a spectator,
    // because it probably has important information like when we'll spawn
    if ( self.pers["team"] == "spectator" )
        self clearLowerMessage();
    
    self.sessionstate = "spectator";
    self.spectatorclient = -1;
    self.killcamentity = -1;
    self.archivetime = 0;
    self.psoffsettime = 0;
    self.friendlydamage = undefined;

    if(self.pers["team"] == "spectator")
        self.statusicon = "";
    else
        self.statusicon = "hud_status_dead";

    maps\mp\gametypes\_spectating::setSpectatePermissionsForMachine();

    [[level.onSpawnSpectator]]( origin, angles );
    
    if ( level.teamBased && !level.splitscreen )
        self thread spectatorThirdPersonness();
    
    level thread maps\mp\gametypes\_globallogic::updateTeamStatus();
    pixmarker("END: in_spawnSpectator");
}

spectatorThirdPersonness()
{
    self endon("disconnect");
    self endon("spawned");
    
    self notify("spectator_thirdperson_thread");
    self endon("spectator_thirdperson_thread");
    
    self.spectatingThirdPerson = false;
    
//    if( level.console )    
//        self setThirdPerson( true );
    
    // we can reenable this if we ever get a way to determine who a player is spectating.
    // self.spectatorClient is write-only so it doesn't work.
    /*
    player = getPlayerFromClientNum( self.spectatorClient );
    prevClientNum = self.spectatorClient;
    prevWeap = "none";
    hasScope = false;
    
    while(1)
    {
        if ( self.spectatorClient != prevClientNum )
        {
            player = getPlayerFromClientNum( self.spectatorClient );
            prevClientNum = self.specatorClient;
        }
        
        if ( isDefined( player ) )
        {
            weap = player getCurrentWeapon();
            if ( weap != prevWeap )
            {
                hasScope = maps\mp\gametypes\_weapons::hasScope( weap );
                prevWeap = weap;
            }
            if ( hasScope && player playerADS() == 1 )
                self setThirdPerson( false );
            else
                self setThirdPerson( true );
        }
        else
        {
            self setThirdPerson( false );
        }
        wait .05;
    }
    */
}

getPlayerFromClientNum( clientNum )
{
    if ( clientNum < 0 )
        return undefined;
    
    for ( i = 0; i < level.players.size; i++ )
    {
        if ( level.players[i] getEntityNumber() == clientNum )
            return level.players[i];
    }
    return undefined;
}


forceSpawn()
{
    self endon ( "death" );
    self endon ( "disconnect" );
    self endon ( "spawned" );

    wait ( 60.0 );

    if ( self.hasSpawned )
        return;
    
    if ( self.pers["team"] == "spectator" )
        return;
    
    if ( !maps\mp\gametypes\_globallogic_utils::isValidClass( self.pers["class"] ) )
    {
        // AE 10-15-09: I don't think we need to check for onlineGame anymore, now that we can select custom classes in any game
        //if ( GetDvarInt( #"onlinegame" ) )
            self.pers["class"] = "CLASS_CUSTOM1";
        //else
            //self.pers["class"] = "CLASS_ASSAULT";

        self.class = self.pers["class"];
    }
    
    self maps\mp\gametypes\_globallogic_ui::closeMenus();
    self thread [[level.spawnClient]]();
}


kickIfDontSpawn()
{
    if ( self IsHost() )
    {
        // don't try to kick the host
        return;
    }
    
    self kickIfIDontSpawnInternal();
    // clear any client dvars here,
    // like if we set anything to change the menu appearance to warn them of kickness
}

kickIfIDontSpawnInternal()
{
    self endon ( "death" );
    self endon ( "disconnect" );
    self endon ( "spawned" );
    
    waittime = 90;
    if ( GetDvar( #"scr_kick_time") != "" )
        waittime = GetDvarFloat( #"scr_kick_time");
    mintime = 45;
    if ( GetDvar( #"scr_kick_mintime") != "" )
        mintime = GetDvarFloat( #"scr_kick_mintime");
    
    starttime = gettime();
    
    kickWait( waittime );
    
    timePassed = (gettime() - starttime)/1000;
    if ( timePassed < waittime - .1 && timePassed < mintime )
        return;
    
    if ( self.hasSpawned )
        return;
    
    if ( self.pers["team"] == "spectator" )
        return;
    
    kick( self getEntityNumber() );
}

kickWait( waittime )
{
    level endon("game_ended");
    maps\mp\gametypes\_hostmigration::waitLongDurationWithHostMigrationPause( waittime );
}

spawnInterRoundIntermission()
{
    if( self isdemoclient() )
        return;
        
    self notify("spawned");
    self notify("end_respawn");
    
    self setSpawnVariables();
    
    self clearLowerMessage();
    
    self freeze_player_controls( false );

    self.sessionstate = "spectator";
    self.spectatorclient = -1;
    self.killcamentity = -1;
    self.archivetime = 0;
    self.psoffsettime = 0;
    self.friendlydamage = undefined;
    
    self maps\mp\gametypes\_globallogic_defaults::default_onSpawnIntermission();
    self SetOrigin( self.origin );
    self SetPlayerAngles( self.angles );
    self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 );
}

spawnIntermission()
{
    if( self isdemoclient() )
        return;
        
    self notify("spawned");
    self notify("end_respawn");
    
    self setSpawnVariables();
    
    self clearLowerMessage();
    
    self freeze_player_controls( false );
    
    if ( level.rankedmatch && wasLastRound() )
    {
         self maps\mp\_popups::displayEndGamePopUps();
        if (( self.postGameMilestones || self.postGameContracts || self.postGamePromotion ) )
        {
            if ( self.postGamePromotion )
                self playLocalSound( "mus_level_up" );
            else if ( self.postGameContracts )
                self playLocalSound( "mus_challenge_complete" );
            else if ( self.postGameMilestones )
                self playLocalSound( "mus_contract_complete" );

            self clearPopups();
            self closeInGameMenu();    
    
            self openMenu( game["menu_endgameupdate"] );
    
            waitTime = 4.0;
            while ( waitTime )
            {
                wait ( 0.25 );
                waitTime -= 0.25;
    
                self openMenu( game["menu_endgameupdate"] );
            }
            
            self closeMenu( game["menu_endgameupdate"] );
        }
    }

    self.sessionstate = "intermission";
    self.spectatorclient = -1;
    self.killcamentity = -1;
    self.archivetime = 0;
    self.psoffsettime = 0;
    self.friendlydamage = undefined;
    
    if( !isPregame() && ( level.wagermatch || level.rankedmatch ) && wasLastRound() )
    {        
        // aar popup for game summary
        if( self getdstat( "AfterActionReportStats", "valid" ) )
        {
            self openMenu( game["menu_eog_unlock"] );
        }
    }
    [[level.onSpawnIntermission]]();
    self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 );
}


spawnClient( timeAlreadyPassed )
{
    pixbeginevent("spawnClient");
    assert(    isDefined( self.team ) );
    assert(    maps\mp\gametypes\_globallogic_utils::isValidClass( self.class ) );
    
    if ( !self maySpawn() )
    {
        currentorigin =    self.origin;
        currentangles =    self.angles;
        
        shouldShowRespawnMessage = true;
        if ( wasLastRound() || isOneRound() || ( isDefined( level.livesDoNotReset ) && level.livesDoNotReset ) )
            shouldShowRespawnMessage = false;
        if ( level.scoreLimit > 1 && level.teambased && game["teamScores"]["allies"] >= level.scoreLimit - 1 && game["teamScores"]["axis"] >= level.scoreLimit - 1 )
            shouldShowRespawnMessage = false;
        if ( shouldShowRespawnMessage )
        {
            setLowerMessage( game["strings"]["spawn_next_round"] );
            self thread maps\mp\gametypes\_globallogic_ui::removeSpawnMessageShortly( 3 );
        }
        self thread    [[level.spawnSpectator]]( currentorigin    + (0, 0, 60), currentangles    );
        pixendevent();
        return;
    }
    
    if ( self.waitingToSpawn )
    {
        pixendevent();
        return;
    }
    self.waitingToSpawn = true;
    
    self waitAndSpawnClient( timeAlreadyPassed );
    
    if ( isdefined( self ) )
        self.waitingToSpawn = false;
    pixendevent();
}

waitAndSpawnClient( timeAlreadyPassed )
{
    self endon ( "disconnect" );
    self endon ( "end_respawn" );
    level endon ( "game_ended" );

    if ( !isdefined( timeAlreadyPassed ) )
        timeAlreadyPassed = 0;
    
    spawnedAsSpectator = false;
    
    if ( self.teamKillPunish )
    {
        teamKillDelay = maps\mp\gametypes\_globallogic_player::TeamKillDelay();
        if ( teamKillDelay > timeAlreadyPassed )
        {
            teamKillDelay -= timeAlreadyPassed;
            timeAlreadyPassed = 0;
        }
        else
        {
            timeAlreadyPassed -= teamKillDelay;
            teamKillDelay = 0;
        }
        
        if ( teamKillDelay > 0 )
        {
            setLowerMessage( &"MP_FRIENDLY_FIRE_WILL_NOT", teamKillDelay );
            
            self thread    respawn_asSpectator( self.origin + (0, 0, 60), self.angles );
            spawnedAsSpectator = true;
            
            wait( teamKillDelay );
        }
        
        self.teamKillPunish = false;
    }
    
    if ( !isdefined( self.waveSpawnIndex ) && isdefined( level.wavePlayerSpawnIndex[self.team] ) )
    {
        self.waveSpawnIndex = level.wavePlayerSpawnIndex[self.team];
        level.wavePlayerSpawnIndex[self.team]++;
    }
    
    timeUntilSpawn = TimeUntilSpawn( false );
    if ( timeUntilSpawn > timeAlreadyPassed )
    {
        timeUntilSpawn -= timeAlreadyPassed;
        timeAlreadyPassed = 0;
    }
    else
    {
        timeAlreadyPassed -= timeUntilSpawn;
        timeUntilSpawn = 0;
    }
    
    if ( timeUntilSpawn > 0 )
    {
        // spawn player into spectator on death during respawn delay, if he switches teams during this time, he will respawn next round
        if ( self IsSplitscreen() )
            setLowerMessage( game["strings"]["waiting_to_spawn_ss"], timeUntilSpawn, true );
        else
            setLowerMessage( game["strings"]["waiting_to_spawn"], timeUntilSpawn );
        //showSafeSpawnMessage();
        //thread waitSafeSpawnButton();
        
        if ( !spawnedAsSpectator )
            self thread    respawn_asSpectator( self.origin + (0, 0, 60), self.angles );
        spawnedAsSpectator = true;
        
        self maps\mp\gametypes\_globallogic_utils::waitForTimeOrNotify( timeUntilSpawn, "force_spawn" );
        
        self notify("stop_wait_safe_spawn_button");
    }
    
    waveBased = (GetDvarInt( "scr_" + level.gameType + "_waverespawndelay" ) > 0);
    if ( maps\mp\gametypes\_tweakables::getTweakableValue( "player", "forcerespawn" ) == 0 && self.hasSpawned && !waveBased && !self.wantSafeSpawn )
    {
        setLowerMessage( game["strings"]["press_to_spawn"] );
        //showSafeSpawnMessage();
        
        if ( !spawnedAsSpectator )
            self thread    respawn_asSpectator( self.origin + (0, 0, 60), self.angles );
        spawnedAsSpectator = true;
        
        self waitRespawnOrSafeSpawnButton();
    }
    
    //hideSafeSpawnMessage();
    
    /*
    if ( self.wantSafeSpawn )
    {
        setLowerMessage( game["strings"]["waiting_to_safespawn"] );
        
        timeToWait = randomfloatrange( 7.0, 12.0 );
        if ( randomint( 10 ) == 0 )
            timeToWait = randomfloatrange( 2.0, 7.0 );
        
        if ( !spawnedAsSpectator )
            self thread    respawn_asSpectator( self.origin + (0, 0, 60), self.angles );
        spawnedAsSpectator = true;
        
        /# println( "Safe spawn time: " + timeToWait ); #/
        self maps\mp\gametypes\_globallogic_utils::waitForTimeOrNotifyNoAirstrikes( timeToWait, "force_spawn" );
        
        if ( level.inOvertime )
            return;
    }
    */
    
    self.waitingToSpawn = false;
    
    self clearLowerMessage();
    
    self.waveSpawnIndex = undefined;
    
//    self thread maps\mp\gametypes\_globallogic_utils::rumbler();
    
    self thread    [[level.spawnPlayer]]();
}

/*waitSafeSpawnButton()
{
    self endon ( "disconnect" );
    self endon ( "end_respawn" );
    self endon ( "game_ended" );
    self endon ( "stop_wait_safe_spawn_button" );
    
    while(1)
    {
        if ( self fragButtonPressed() )
            break;
        wait .05;
    }
    
    self.wantSafeSpawn = true;
    hideSafeSpawnMessage();
}*/

waitRespawnOrSafeSpawnButton()
{
    self endon("disconnect");
    self endon("end_respawn");

    while (1)
    {
        if ( self useButtonPressed() )
            break;
        /*if ( self fragButtonPressed() )
        {
            self.wantSafeSpawn = true;
            break;
        }*/
        wait .05;
    }
}


setThirdPerson( value )
{
    if( !level.console )    
        return;

    if ( !IsDefined( self.spectatingThirdPerson ) || value != self.spectatingThirdPerson )
    {
        self.spectatingThirdPerson = value;
        if ( value )
        {
            self setClientDvar( "cg_thirdPerson", "1" );
            self setDepthOfField( 0, 128, 512, 4000, 6, 1.8 );
            self setClientDvar( "cg_fov", "40" );
        }
        else
        {
            self setClientDvar( "cg_thirdPerson", "0" );
            self setDepthOfField( 0, 0, 512, 4000, 4, 0 );
            self setClientDvar( "cg_fov", "65" );
        }
    }
}


setSpawnVariables()
{
    resetTimeout();

    // Stop shellshock and rumble
    self StopShellshock();
    self StopRumble( "damage_heavy" );
}

sndStartMusicSystem()
{
    self endon( "disconnect" );
    
    if ( game["state"] == "postgame" )
        // if the games over do not change music state
        return;
    if ( game["state"] == "pregame" )    
    {
        //if this is our first spawn, wait for the team intro to play
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ( "Music System - music state is undefined Waiting 15 seconds to set music state" );
        }
        wait 20;
        if ( !isdefined(level.nextMusicState) )
        {
            self.pers["music"].currentState = "UNDERSCORE";
            self thread maps\mp\gametypes\_globallogic_audio::set_music_on_player( "UNDERSCORE", true );            
        }
    }
    if ( !isdefined(level.nextMusicState) )
    {    
        //println ( "current gamestate is " + game["state"] );
        //set the music state to underscore
        if( getdvarint( #"debug_music" ) > 0 )
        {
            println ( "Music System - music state is undefined Waiting 15 seconds to set music state" );
        }
        wait 15;
        self.pers["music"].currentState = "UNDERSCORE";        
        self thread maps\mp\gametypes\_globallogic_audio::set_music_on_player( "UNDERSCORE", true );        
    }
}


No leader dialog:
_globallogic_score.gsc
Pastebin - http://pastebin.com/fiue4Hi0
(Too many characters)
what is no leader dialog?

btw add me on steam so we can share stuff, I am almost done and funny how we have like almost the same shit

Big Grin

pyromanic5
It tells you which team is in the lead or plays music if you are winning or losing.
(11-29-2010, 12:48)Eekhoorn Wrote: [ -> ]List of promod reflex features:


Sounds and music
-Leader dialog has been removed from the game.
-Music has been removed from the game.
-All maps have ambient noise removed. NOT COMPLETED.

Gameplay and Balancing

-The SMG class has been reduced in power.
-The AWP fix has been implemented.
-The nosway fix has been implemented.
-The bomb can now be dropped in S&D. NOT COMPLETED.
-Knife automelee and lunge has been removed.

Class optimization
-The Ak74u is now the default SMG.
-The AK47 is now the default Assault Rifle.
-The L96A1 is the only avaible sniper.

Visuals and FPS
-Camouflages are not enabled.
-The field of view is 90.
-All maps have aimbient particles and smoke removed. NOT COMPLETED.
-Fog has been further reduced troughout the game.
-The games desuration has been removed, resulting in more colour.
-Walls now contain less detail, improving FPS and visibility NOT COMPLETED.
-Player 'bob' has been removed when sprinting, e.g
-Dynamic lighting has been disabled NOT COMPLETED
-Shadows have been disabled

Additional Improvements
-Every kill gives +5 as score NOT COMPLETED
-The plant/defuse bar has been more accurate, by removing the bomb.
-Attack and Defence have replaced, Spetznatz, BlackOps, etc NOT COMPLETED.
-Every round has a strattime of 6 seconds.
-A timer has been added for strattime NOT COMPLETED


Guide
-Suicide PRESS ?? NOT COMPLETED
-Bombdrop PRESS ?? NOT COMPLETED

where do i type this in?
I would be really happy if u could answer
(12-10-2010, 22:52)Martini Wrote: [ -> ]where do i type this in?
I would be really happy if u could answer

Oh my gawd.. Dodgy
well rowan.... ur Pro mod is so unfinished.....

maybe u should play it ones Wink just a TIP =D
(12-10-2010, 23:08)master131 Wrote: [ -> ]
(12-10-2010, 22:52)Martini Wrote: [ -> ]where do i type this in?
I would be really happy if u could answer

Oh my gawd.. Dodgy

I'm pretty new to modding, do i put it into the config_mp?
So on the current version of the cmMod out(beta), a person on our team donated, received the mod from you(eekhoorn), in the readme, it's very vague about being able to be PUT on a server. Not just a private game. My question is, at this time, is the mod able to be installed on a gameservers.com server? Or is this meant strictly for private use with private matches?
Private match only.
In the readme it clearly states you need to click on Private Match in the main menu (after downloading the game settings from the fileshare)
Pages: 1 2