/*
map cycling script sample - select with g_mapCycle

the script is purged and reloaded at each map restart
  which happens on map change, but also when hitting GAMEON
  for persistance, you need to use the {get,set}Persistant functions

files with .scriptcfg extension can be loaded outside of pure paks
*/

namespace mapcycle {

	void cycle() {
		// config
		float cycle_maps = 1;				// 1 = cycle through maps in the current game type, 0 = keep the same map
		float cycle_gametypes = 0;			// 1 = cycle through game types, 0 = keep the same game type

		// cycle maps and game types
		float replay_count = sys.getPersistantFloat( "replay_count" );
		string si_gameType = sys.getcvar( "si_gameType" );
		string si_map = sys.getcvar( "si_map" );
		
		//map definitions//
		
		sys.println( "cycle: replay_count = " + replay_count );
		/*
		if ( replay_count <= 0 ) {
			// restart n times before next map
			replay_count = 2;
			
			// add in custom replay counts here for current game type
			if ( si_gameType == "DM" ) 
			{
				replay_count = 123;
			} else if ( si_gameType == "Team DM" ) {
				replay_count = 456;
			} else if ( si_gameType == "CTF" ) {
				replay_count = 789;
			} 
			
		}
		*/
		replay_count--;
		sys.setPersistantArg( "replay_count", replay_count );
		if ( replay_count <= 0 ) {
			// restart n times before next map
			/*
			if ( cycle_gametypes > 0 ) {
			
				cycle_maps = 1;		// we want to make sure that we transition to a proper map for the new gametype
				
				if ( si_gameType == "DM" ) {
					sys.setcvar( "si_gameType", "Tourney" );
				} else if ( si_gameType == "Tourney" ) {
					sys.setcvar( "si_gameType", "Team DM" );
				} else if ( si_gameType == "Team DM" ) {
					sys.setcvar( "si_gameType", "CTF" );
				} else if ( si_gameType == "CTF" ) {
					sys.setcvar( "si_gameType", "Arena CTF" );
				} else if ( si_gameType == "Arena CTF" ) {
					sys.setcvar( "si_gameType", "DM" );
				} else {
					sys.setcvar( "si_gameType", "DM" );
				}
				
			}
			*/

			if ( cycle_maps > 0 ) {
			
				if ( si_gameType == "DM") {
					
						if ( si_map == map1 ) {
							if(map2 != "")
							{
								//map2 options//
								sys.setcvar( "si_map", map2 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}
						} else if ( si_map == map2 ) {
							if(map3 != "")
							{
								//map3 options//
								sys.setcvar( "si_map", map3 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}

						} else if ( si_map == map3 ) {
							if(map4 != "")
							{
								//map4 options//
								sys.setcvar( "si_map", map4 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}

						} else if ( si_map == map4) {
							if(map5 != "")
							{
								//map options//
								sys.setcvar( "si_map", map5 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}

						} else if ( si_map == map5) {
							if(map6 != "")
							{
								//map6 options//
								sys.setcvar( "si_map", map6 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}

						} else if ( si_map == map6) {
							if(map7 != "")
							{
								//map7 options//
								sys.setcvar( "si_map", map7 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}

						} else if ( si_map == map7) {
							if(map8 != "")
							{
								//map8 options//
								sys.setcvar( "si_map", map8 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}

						} else if ( si_map == map8) {
							if(map9 != "")
							{
								//map9 options//
								sys.setcvar( "si_map", map9 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}

						} else if ( si_map == map9) {
							if(map10 != "")
							{
								//map10 options//
								sys.setcvar( "si_map", map10 );
							}
							else
							{
								//map1 options//
								sys.setcvar( "si_map", map1 );

							}

						} else {
							//map1 options//							
							sys.setcvar( "si_map", map1 );
						}
				
				} else if ( si_gameType == "TEAM DM") {
					
						if ( si_map == map11 ) {
							if(map12 != "")
							{
								//map12 options//
								sys.setcvar( "si_map", map12 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11 );

							}
						} else if ( si_map == map12 ) {
							if(map13 != "")
							{
								//map13 options//
								sys.setcvar( "si_map", map13 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11 );

							}

						} else if ( si_map == map13 ) {
							if(map14 != "")
							{
								//map14 options//
								sys.setcvar( "si_map", map14 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11 );

							}

						} else if ( si_map == map14) {
							if(map15 != "")
							{
								//map15 options//
								sys.setcvar( "si_map", map15 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11 );

							}

						} else if ( si_map == map15) {
							if(map16 != "")
							{
								//map16 options//
								sys.setcvar( "si_map", map16 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11 );

							}

						} else if ( si_map == map16) {
							if(map17 != "")
							{
								//map17 options//
								sys.setcvar( "si_map", map17 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11 );

							}

						} else if ( si_map == map17) {
							if(map18 != "")
							{
								//map18 options//
								sys.setcvar( "si_map", map18 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11 );

							}

						} else if ( si_map == map18) {
							if(map19 != "")
							{
								//map19 options//
								sys.setcvar( "si_map", map19 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11 );

							}

						} else if ( si_map == map19) {
							if(map20 != "")
							{
								//map20 options//
								sys.setcvar( "si_map", map20 );
							}
							else
							{
								//map11 options//
								sys.setcvar( "si_map", map11);

							}

						} else {
							//map11 options//							
							sys.setcvar( "si_map", map11 );
						}
				
				}else if ( si_gameType == "CTF") {
					
						if ( si_map == map21 ) {
							if(map22 != "")
							{
								//map22 options//
								sys.setcvar( "si_map", map22 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}
						} else if ( si_map == map22 ) {
							if(map23 != "")
							{
								//map23 options//
								sys.setcvar( "si_map", map23 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}

						} else if ( si_map == map23 ) {
							if(map24 != "")
							{
								//map24 options//
								sys.setcvar( "si_map", map24 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}

						} else if ( si_map == map24) {
							if(map25 != "")
							{
								//map25 options//
								sys.setcvar( "si_map", map25 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}

						} else if ( si_map == map25) {
							if(map26 != "")
							{
								//map26 options//
								sys.setcvar( "si_map", map26 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}

						} else if ( si_map == map26) {
							if(map27 != "")
							{
								//map27 options//
								sys.setcvar( "si_map", map27 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}

						} else if ( si_map == map27) {
							if(map28 != "")
							{
								//map28 options//
								sys.setcvar( "si_map", map28 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}

						} else if ( si_map == map28) {
							if(map29 != "")
							{
								//map29 options//
								sys.setcvar( "si_map", map29 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}

						} else if ( si_map == map29) {
							if(map30 != "")
							{
								//map30 options//
								sys.setcvar( "si_map", map30 );
							}
							else
							{
								//map21 options//
								sys.setcvar( "si_map", map21 );

							}

						} else {
							//map21 options//							
							sys.setcvar( "si_map", map21 );
						}
				
				}
			}
		} else {
			sys.say( "map cycle: restarting current map " + replay_count + " more time(s)" );
		}
	}
}
