Results 1 to 5 of 5

Thread: UBER Mods v7.95 (TDM, FFA, BB, FT, CYB, SND) + In-Game Menu Skin (4-16-2024)

  1. #1

    Cool UBER Mods v7.95 (TDM, FFA, BB, FT, CYB, SND) + In-Game Menu Skin (4-16-2024)

    <><><> How To Install / Uninstall <><><>

    Delete any and all older UBER MODS .pk3 files.
    If packed in a .zip, unpack the .pk3 files. Copy the .pk3 files and paste them in the "Medal of Honor/main" folder (same folder as Pak0.pk3, Pak1.pk3, Pak2.pk3).
    Uninstall by deleting the .pk3 mod files from the "main" folder.
    This mod only works for MOHAA Reborn 1.12 (mainly Allied Assault), and must run in a dedicated server.

    <><><> <><><>

    <><><> Essential CVARS for UBER MODS Servers <><><>


    This new CVAR allows for switching between the current 3 uber game modes (besides FFA or TDM) before loading a new map.
    Place one of these lines into your server.cfg file, or add one of these lines to an .scr map script (before level waittill prespawn):

    Code:
    	seta g_ubergametype ""		// none or "0", default to g_gametype 1 or g_gametype 2.
    	seta g_ubergametype "bb"	// UBER BASEBUILDER game mode
    	seta g_ubergametype "cyb"	// CYBER ATTACK game mode
    	seta g_ubergametype "snd"	// SEARCH & DESTROY game mode
    	seta g_ubergametype "ft"	// FREEZE TAG game mode
    To switch to any of the "obj/" maps from an FFA or TDM game mode map (such as "dm/"), type the following into the console:

    Code:
    	g_gametype 4; map obj/obj_team1
    	g_gametype 4; map obj/obj_team2
    	g_gametype 4; map obj/obj_team3
    	g_gametype 4; map obj/obj_team4
    <><><> <><><>

    <><><> Essential UBER BASEBUILDER Info <><><>


    Code:
    	exec alienx/basebuild.scr::main 800 1000 250 1 1 0 0 0 // buildtime, objectlimit, buildspeed, buildtakeweaps, buildfalldamage, countdownhide, hudhide, consoleprint
    
    	// basebuild.scr::main (parameters) --->
    	// 	build start time in seconds (ex: 800),
    	// 	object limit (ex: 1000),
    	// 	player speed while building (ex: >= 280, 250 is default).
    	// 	take weapons while building (0 for no),
    	// 	fall damage while building (1 for yes),
    	// 	hide 70-sec countdown hud (1 for yes),
    	// 	hide bottom hud text (1 for yes),
    	// 	print object-placed origin, angles, model (1 for yes).
    
    	// BASEBUILDER CONSOLE COMMANDS:
    		alx_basebuild 0 (turn off basebuilding immediately, respawns everyone)
    		alx_timeboost 120 (increase build time limit by 120 seconds, or any # of seconds)
    		alx_timedown 120 (decrease build time limit by 120 seconds, or any # of seconds)
    		alx_objectlimitboost 200 (increase basebuild object limit by 200, or any # of objects)
    		alx_objectlimitdown 200 (decrease basebuild object limit by 200, or any # of objects)
    
    	While holding object & holding USE key, lean left/right to change object angles. Hold lean left/right for 2 seconds to slowly trim object's angles.
    	Basebuilder script automatically lowers "objectlimit" count to avoid going beyond 1024 maxentities.
    	Mini-flak88 objects act as flamethrowers, killing players within 5 hits.
    <><><> <><><>

    <><><> UBER CVARS Scripts Info <><><>


    Code:
    				//		         maxentities = 869 in code, but players may crash joining Reborn servers (singleplayer maps) if current entities = 725+, or 140+ remaining entities.
    exec cvars/playercount.scr	// "players" cvar.  	"players 1" = print to console the # of players in-game (type these into the server's console window).
    				//	       		"players 2" = print to console the # of players in-game & their usernames.
    				//	       		"players 3" = see which players in $player array are NULL.
    exec cvars/entitycount.scr 	// "entities" cvar.	"entities 1" = wait 4 seconds to print # of entities & remaining entities until maxentities (1024) is reached.
    				//	       		"entities 2" = print all entities & their targetnames (or NULL) from 1 to maxentities.
    				//	       		"entities 3" = print all entities & their targetnames, but print slower.
    				//			"entities 4" = print only non-NULL entities ($player entities do not print for "entities" 4, 5, 6, 7).
    				//			"entities 5" = print only non-NULL entities that have targetnames.
    				//			"entities 6" = print only non-NULL entities that do not have targetnames (targetnames = "").
    				//			"entities 7" = print only non-NULL entities, and print their classnames.
    exec cvars/track.scr		// "track" cvar.    	"track 1" = iprint each players' coords & angle to their own screens. 
    				//			"track 2" = iprint and print to console each players' coords & angles once every 3 seconds.
    				//			"track 0" = turn off tracking.
    exec cvars/check.scr		// "check_[trigger]" cvar. "check_giantbomb 1" "check_giantbomb 2" "check_lightbomb 1" "check_lightbomb 2" (giantbomb, lightbomb, health, grenade, rocket, snowball)
    				// 			"1" = teleports all spectators to each of the ("giantbomb", "health", "rocket", etc) trigger's randomized origins every 3 seconds.
    				// 			"2" = spawn in a dummy model at each of the trigger's origins (only works once).
    				// 			"0" = stop teleporting, delete the dummy models.
    				// 			"check 0" = make all "check_[trigger]" cvars "0".
    				//
    exec cvars/find.scr		// "find [targetname without $]" cvar. "find truckclip", "find endtrigger", "find aispawn", or multiple ents with the same targetname: "find barrel[1]", "find barrel[2]",
    				// 			to teleport all players on the map to the entity's coords (also printing: coords, angles, entnum, and target).
    exec cvars/findent.scr		// "findent [entnum]" cvar. "findent 65", "findent 450", or any entnum >= "sv_maxclients" cvar to teleport all players on the map to the entity's coords (also printing: coords, angles,
    				// classname, model, targetname, target, health).
    				//
    exec cvars/findclass.scr	// "findclass [classname, case-specific]" cvar. "findclass ScriptModel", "findclass CrateObject", "findclass TurretGun", "findclass Trigger", or any other classname to print all entnums and
    				// their targetnames in the map with that classname.
    				//
    exec cvars/findmodel.scr	// "findmodel [models/...tik]" cvar. "findmodel models/static/indycrate.tik", "findmodel static/indycrate.tik", or any other model to print all entnums and
    				// their targetnames in the map with that model name.
    				//
    exec cvars/drawpath.scr		// "drawpath [1st ent's targetname without $ in a path]" cvar. "drawpath bomberpath", "drawpath spotpath1_1", "drawpath latertruckpath", or multiple paths with the same targetname: "drawpath
    				// exploderchunk[1]", "drawpath exploderchunk[12]", to spawn nodes & lasers and draw them to each .target, until there's no more .targets or until the .target reaches an already-drawn node.
    				//
    exec cvars/cybsnd.scr		// "cybsnd_score 1" cvar, to print the current Cyber Attack, Search & Destroy, or Freeze Tag score (rounds Allies won, Axis won).
    				// "cybsnd_info 1" cvar, to print round start time, rounds to win, change sides (0 or 1 for switching bombsites), melt time, melt respawn (0 or 1 for spawning at frozen body or regular
    				// spawn), spectators auto-join teams (once round begins), bomb camera (1 or 0, when bomb explodes), bomb camera distance.
    				// "cybsnd_debug 1" cvar, to print once per second the Allies/Axis team count (living players) and Allies/Axis team total.
    				//
    exec cvars/coord_pointer.scr	// "coord_pointer" cvar.	"coord_pointer [27 or Searingwolfe]" = give/take a coord pointer to $player[27] or the player with the name "Searingwolfe".
    				//				Hold USE(e) to aim the laser, and press FIRE to iprint the origin + angle of the aimed target as integers (also prints them to console).
    				//				Double click at the exact same spot (ideally in spectator or while noclipping) to print origin + angle in 3 decimal places.
    				//
    exec cvars/ubergametype.scr	// "g_ubergametype" cvar. 	"g_ubergametype bb" = Base-Builder gametype.
    				//				"g_ubergametype cyb" = Cyber Attack gametype.
    				//				"g_ubergametype snd" = Search & Destroy gametype.
    				//				"g_ubergametype ft" = Freeze-Tag gametype.
    				//				"g_ubergametype 0" or "" = none, regular TDM or FFA (based on g_gametype).
    				// "g_ubermods" cvar.		"g_ubermods 2" = default, all UBER mods enabled.
    				//				"g_ubermods 1" = No crates or teles, fewer triggers for multiplayer maps. Crates & teles, but no extra mods for singleplayer maps.
    				//				"g_ubermods 0" = all UBER mods disabled.
    				// "g_throwingknives" cvar.	"g_throwingknives 1" = all players spawn with 1 throwing knife (hold USE + FIRE to throw), and 4 extra knives spawn around the map.
    				//				"g_throwingknives 0" = no throwing knives.
    				//
    exec cvars/adminstuff.scr	// "hacker_kill" cvar.		"hacker_kill 27" = continuously kill $player[27].
    				//				"hacker_kill Searingwolfe" = continuously kill the player with the name "Searingwolfe".
    				//				"hacker_takeall [27 or Searingwolfe]" = continuously take all their weapons.
    				//				"spectator [27 or Searingwolfe]" = continuously force them into spectator.
    				//
    				// "votekick" cvar.		"votekick [27 or Searingwolfe]" = all players vote to kick: Hold USE(e) key + Lean Left = VOTE NO (default), Hold USE(e) key + Lean Right = VOTE YES.
    				//
    				// "noclip2" cvar.		"noclip2 [27 or Searingwolfe]" = noclip around the map; still works if "cheats" = "0"; $player[1] client num = 1.
    				//				other hidden CVARS: "nodamage [27 or Searingwolfe]", "takedamage ", "show ", "hide ", "wuss2 " ("hide" makes a player invisible to wallhacks).
    				//
    				// "addkills" cvar.		"addkills [27 or Searingwolfe]" = add one kill to $player[27].
    				// "adddeaths" cvar.		"adddeaths [27 or Searingwolfe]" = add one death to $player[27].
    				//
    				// "coord2" cvar.		print $player[1]'s coords & angles to a "main/cvars/coords.txt" file (must create this file for CVAR to work).
    				//				"coord2 entity" or "coord2 1" = print "( 0 0 0 ) ( 0 0 0 )" coords/angles format on a new line.
    				//				"coord2 trigger" = print "( 0 0 0 ) " coords format on the same line.
    				//				"coord2 spawn" = print ""0 0 0" "angle" "0"" coords format on a new line.
    				//
    				// for "players same name" fix: add admin's IPs at top of "adminstuff.scr", to give admins name-changing priority.
    <><><> <><><>

    <><><> Features (In-Game Menu Skin) <><><>


    Code:
    - This highly modded menu skin (Press "Esc" in-game to open), adds monitor resolution related options and in-game display options, along with some scripting developer-only options. 
    
    - IMPORTANT : If you don't normally type in the console "set rconpassword PWORD" upon starting a server, or if an rconpassword isn't already set yet, change the rconpassword stuffcommand within zzzIn-game Menu Skin.pk3.
    Inside the file, go to the "ui" folder and open "mapswitch.urc" file. Scroll down a few lines to see "MAPS MENU (sets rconpassword) [Click This First]" and change the rconpassword in the stuffcommand "set rconpassword ...".
    
    - All non-cheat buttons/sliders on outermost menu: Join Allies, Join Axis, Kill Yourself, Spectator, Volume (must apply & close when done), Brightness (apply & close), Mouse Speed (apply & close), Disconnect, Choose Team, Main Menu, Quit Mohaa, Choose Weapon, MP Options, Toggle FPS, Toggle HUD, MP3 Menu, Lagometer, Change Servers, MAPS Menu, 1920 x 1080, 3840 x 2160, Fullscreen, Windowed, Disable All, Apply And Close. 
    
    - All developer-only buttons on outermost menu (DO NOT USE ON PUBLIC SERVERS): 3rd Person (must apply & close when done), Show Entity Nums (must apply & close when done), Clay Mode On (r_picmip 10, to see through trees when developing), Clay Mode Off (r_picmip 0), Fullbright On, Fullbright Off, Toggle Developer (on/off), Lod Spawnlist. Make sure cheats = 1 and thereisnomonkey = 1 before using these buttons.
    There are 9 empty options next to "3rd Person" as well, in case you wants to add more features to the In-game Menu Skin. For any added options with orange 'X's, you must click "Apply And Close" after selecting them.
    
    - All buttons/sliders within the "MP3 Menu": Music Volume, Volume General, STOP, and 20 different music buttons. Clicking any of these, after turning up the Music Volume slider, will play music only for you while also playing MOHAA.
    
    - All buttons within the "MAPS Menu": "MAPS MENU (sets rconpassword) [Click This First]", Allow RBM, Allow TDM, Allow OBJ, Allow FFA, and 26 different maps buttons (10 are still empty).
    If an rconpassword is not already set, then choosing a map will not work unless you click the [Click This First] button (once set, you won't need to click it again).
    The 4 yellow "Allow" buttons change the g_gametype of the server. These must be clicked before switching a map if you need to change the g_gametype first. For example: in a TDM match on mohdm1, you cannot switch to obj_team3 without first clicking "Allow OBJ". Sometimes, you may need to click these buttons twice to get MOHAA to switch maps.
    <><><> <><><>

    <><><> Features (Elgan's Admin Pro Menu) <><><>


    Code:
    - The UBER FFA/TDM also comes with the Admin Pro mod, whose hotkey must be set in MOHAA's Options --> Controls --> Keyboard, and scroll up to see the "Admin Menu" Action above Primary and Secondary Attack. 
    
    - IMPORTANT: Inside the UBER V7.0 FFA TDM.pk3 file, go to the "Admin_menu" folder and open "rconpassword.cfg". Change the rconpassword to your desired server admin password.
    
    - Once opened in-game with the "Admin Menu" hotkey, go to Client Section --> Controls to see even more options for keyboard controls. The most useful one, "Editscript" allows the developer to open the map's .scr script in-game, editing and saving it without Alt-Tabbing back and forth between the desktop's Notepad and MOHAA.
    For all other features, see Elgan's readme on his Admin Pro menu mod.
    <><><> <><><>

    <><><> Essential CYBER ATTACK / SEARCH & DESTROY / FREEZE TAG Info <><><>


    Code:
    The popular Cyber Attack and Search & Destroy game modes from Call of Duty: Modern Warfare 2 (2022) have been ported into MOHAA for 2023.
    The gameplay, rules, and conditions to win/lose in this mod are almost identical to the originals.
    Both game modes use "g_gametype 2" or team deathmatch, but killed players go to team-only spectator instead of respawning.
    In Cyber Attack, dead players are frozen like in Freeze Tag and other teammates can revive them (there are no long-range melt lasers in Cyber Attack).
    In Search & Destroy, dead players cannot be revived. Bombsites and an explosive are also on the map, allowing a team to blow up the other team's bombsite to win the round.
    Teams in both game modes have a specified amount of rounds to win (5 by default) before the map ends or until the map time limit runs out. Specific rules below.
    
    ---------------
    
    - When the map loads, the first round begins after a few seconds (8 by default). Until the round begins, the bomb cannot be picked up, and all players can respawn after dying.
    Once started, the bomb and bombsites become triggerable. Any players that die will go to team-only spectating mode (not actually in spectator), and a frozen body will appear where players died if playing Cyber Attack.
    These frozen players can only be melted by their teammates, similar to Freeze Tag.
    When revived, the melted player is respawned and teleported back to where they were frozen, only after all other players have moved far enough away from your frozen body (prevents players getting stuck inside each other). 
    
    - While in team-spectating mode and waiting to get melted in Cyber Attack, or waiting for the next round in Search & Destroy, the spectating player can cycle between any living teammates or frozen dead bodies, with FIRE key (cycle forward) or USE key (cycle backward).
    If the enemy team wins while your teammates are spectating, all team-spectators will begin spectating the enemy team until the next round begins (usually 3 seconds total).
    If somehow all players are dead (round was a draw), then team-spectators will all teleport to and be trapped within their frozen body's beams until the next round begins.
    
    - If a team wins but there are no players on the other team, scorepoints will not be added. A bomb (thread) and at least two bombsites (waitthreads) are added in the main map script.
    If a bomb-carrying player dies, the bomb drops to the ground. If a bomb-carrying player leaves or changes teams or goes to spectator, the bomb respawns back to the origin it was last picked up at.
    
    - Cyber Attack: This game mode is best played on DM maps, since bombsites switch team defenders every 3 rounds. Each team has a bombsite to defend at all times, ideally placed near opposite corners of the map in DM maps or near team spawnpoints in OBJ maps.
    The Allies bombsite is blue-lit and the Axis bombsite is red-lit. The radiobomb is ideally spawned near the middle of the map. Both teams must find the purple-lit bomb and plant it on the opposite team's bombsite. The bomb takes 1.5 seconds to plant/defuse.
    If defused by the enemy team, the defusing player receives the radiobomb, ready to be planted on the enemy team's bombsite. To win, players must kill all enemies or plant and destroy the enemy's bombsite.
    Every 3 rounds, the bombsites "change sides": all Allies bombsites become Axis, and all Axis bombsites become Allies.
    
    - Search & Destroy: This game mode is best played on OBJ maps, so the bomb can always spawn near the planting team's spawnpoints.
    Depending on "level.changesides" (0 or default = Allies plant first, 1 = Axis plant first), one team has two bombsites to find and defend, while the other planting team must find and destroy a bombsite.
    These bombsites are ideally placed near the center of the map where both teams clash in gun battles the most, but kept far enough away from each other so the defending team cannot defend both bombsites with one player simultaneously.
    The bomb is ideally spawned near the planting team's spawnpoints, whose origin changes when the planting team changes. The bomb cannot be picked up by players on the defending team. The bomb takes 4.5 seconds to plant/defuse.
    If defused by the enemy team, the defusing team wins immediately. To win, players must kill all enemies, plant and destroy the enemy's bombsite, or defuse the enemy's bomb.
    Every 3 rounds, the bombsites "change sides": the planting team becomes defenders, the defending team becomes planters, and all bombsites change teams accordingly. 
    
    - Freeze Tag: This game mode is an almost identical replica of Mefy's Freeze Tag. Unlike Cyber Attack where melted players respawn back to their dead bodies, Freeze Tag simply respawns the melted players.
    There are no bombs or bombsites in Freeze Tag, so any "bombsite" or "bomb" threads are ignored by the script (still requires running the main script, or running "......scr::main" to run this game mode).
    After the round begins, the 1st team to kill all enemy players wins the round.
    
    ---------------
    
    - bombsite: Make sure these are waitthreads, so the bombsite's targetname can increment after a previous bombsite has finished spawning. Parameters: origin, angle, team.
    The "team" parameter only applies to Cyber Attack, since "level.changesides" will determine the team for both bombsites in Search & Destroy.
    Both teams in Cyber Attack can have more than 1 bombsite if desired, but make sure they have at least 1 bombsite. Search & Destroy can also have 1, 2, or more bombsites since team parameter is ignored.
    Run "exec global/cyberattack_searchdestroy.scr" after level waittill spawn and after all cyberattack_searchdestroy.scr threads run. Example below:
    
    	- waitthread global/cyberattack_searchdestroy.scr::bombsite ( -1210 485 168 ) -90 axis // team parameters can be removed for search & destroy.
    	- waitthread global/cyberattack_searchdestroy.scr::bombsite ( 1297 2461 672 ) 90 allies
    
    - bomb: Parameters: Allies origin, Allies origin, Axis origin, Axis angle, central origin, central angle. Both Allies and Axis origins/angles are for Search & Destroy only.
    The central origin/angle is for Cyber Attack only. The bomb color is always blue when Allies are planting, and red when Axis are planting in Search & Destroy. Only spawn in one bomb per map.
    If only using Cyber Attack, for example, then don't forget the other parameters (just keep them 0). Examples below:
    
    	- thread global/cyberattack_searchdestroy.scr::bomb ( -153 1445 96 ) 180 ( -153 1445 96 ) 180 ( -153 1445 96 ) -90 	// cyb & snd
    	- thread global/cyberattack_searchdestroy.scr::bomb ( 0 0 0 ) 0 ( 0 0 0 ) 0 ( -153 1445 96 ) -90 			// cyber attack only
    	- thread global/cyberattack_searchdestroy.scr::bomb ( -153 1445 96 ) 180 ( -153 1445 96 ) 180 ( 0 0 0 ) 0 		// search & destroy only only
    
    ---------------
    
    - level.round_starttime: 8 seconds default. This variable determimes the time in seconds until the round begins, disabling respawning and forcing dead players to spectate their teammates until the next round begins.
    Waiting a few seconds for a new round to begin serves as a temporary spawn protection. 
    
    - level.rounds_towin: 5 rounds to win default. This determines how many rounds a team must obtain before winning and ending the map, allowing a winning game to be as close as 5 to 4 points by default.
    
    - level.changesides: 0, Allies plant first default. This can only be 0 or 1, where 1 = Axis plant first (for Search & Destroy).
    If playing Cyber Attack, setting level.changesides = 1 will flip the bombsite's defending teams to the opposite teams initially.
    Every 3 total rounds, level.changesides toggles from 1 to 0 or from 0 to 1. 
    
    - level.keepsamesides: 0, no nothing default. If set to 1, level.changesides will never increment, mainly for OBJ & singleplayer maps (bomb & bombsites will not change teams every 3 rounds).
    
    - level.spectators_jointeams: 0, do nothing default. If set to 1, all actual spectators will be forced to auto-join teams and be given a machine gun, pistol, and grenades when the round begins.
    If those players are still AFK, they'll eventually get killed and placed into team-spectating mode until the next round begins.
    
    - level.bombcamera: 0, do nothing default. If set to 1, when a bombsite is about to explode, all players' cameras are moved to the bombsite to view the explosion, before returning all cameras back to their respective players' heads after a few seconds.
    While viewing the explosion, players cannot see or kill each other.
    
    - level.cameradistance: 200 default. This determines the distance between a bombsite and all players' cameras when the bombsite blows up.
    Some bombsites are indoors. If the camera is inside the wall or the bombsite is invisible during explosion, this variable should be lowered.
    
    - level.melttime: 3 seconds default. This determines the time in seconds for a player to melt/revive a teammate.
    Note: there's always roughly a half-second extra time required for all players to move away from the melted/revived teammate, before he respawns.
    
    - level.meltrespawn: 0, respawn melted/revived players back to their frozen bodies default. If set to 1, then all players that get melted/revived will not tele back to their dead bodies (regular respawn instead).
    This = 1 by default for Freeze Tag only, unless specified as level.meltrespawn = 0.
    
    - level.meltlaser: 0, laser beam is invisible default (Freeze Tag only). If set to 1, all players' melting laser beams (when holding USE key) are visible.
    
    ---------------
    
    // Example threads for adding the UBER gametypes to a new map script.
    // For adding Freeze Tag UBER, simply run the "cyb" or "snd" thread before "level waittill spawn", and the script will ignore the "bombsite" and "bomb" threads automatically.
    
    cyb:
    
    level waittill spawn
    
    	level.round_starttime = 8
    	level.rounds_towin = 6
     	level.changesides = 0
    	level.keepsamesides = 1
    	level.bombcamera = 1
    
      	waitthread global/cyberattack_searchdestroy.scr::bombsite ( -2492 7021 86 ) 0 axis    // for cyber attack only
      	waitthread global/cyberattack_searchdestroy.scr::bombsite ( -2979 -32 -23 ) 0 allies
    
      	thread global/cyberattack_searchdestroy.scr::bomb ( 0 0 0 ) 0 ( 0 0 0 ) 0 ( -582 2750 -23 ) 0
    									
    	exec global/cyberattack_searchdestroy.scr
    end
    
    snd:
    
    level waittill spawn
    
    	level.round_starttime = 8
    	level.rounds_towin = 6
     	level.changesides = 0
    	level.bombcamera = 1
    
      	waitthread global/cyberattack_searchdestroy.scr::bombsite ( -4895 1763 -23 ) -90    // for search & destroy only, team parameter doesn't matter
      	waitthread global/cyberattack_searchdestroy.scr::bombsite ( 1056 2268 -23 ) 90
    
      	thread global/cyberattack_searchdestroy.scr::bomb ( -1520 -292 41 ) 180 ( -1989 6692 -25 ) 0 ( 0 0 0 ) 0
    									
    	exec global/cyberattack_searchdestroy.scr
    end
    
    ---------------
    
    // When Search & Destroy games changes sides (every 3 rounds), the bombsites' origins do not normally change.
    // This example thread below for "snd" moves both bombsites to new origins each time "level.changesides" changes (so both bombsites are closer to defending team's spawn).
    
    snd:
    
    level waittill spawn
    
    	level.round_starttime = 8
    	level.rounds_towin = 6
     	level.changesides = 0
    	level.bombcamera = 1
    	//level.cameradistance = 200 // this can be changed for each "changesides" if a bombsite is inside a small room, so the camera is not inside of a wall
    
    	if(level.changesides == 0) // allies are planting (axis bombsite origins)
    	{
      		waitthread global/cyberattack_searchdestroy.scr::bombsite ( 1556 7363 -31 ) -90		// for search & destroy only, team parameter doesn't matter
      		waitthread global/cyberattack_searchdestroy.scr::bombsite ( 3299 1118 474 ) 180		// make sure to include initial bombsites before the while-loop begins.
    	}
    	if(level.changesides == 1) // xis are planting (allies bombsite origins)
    	{
      		waitthread global/cyberattack_searchdestroy.scr::bombsite ( -2454 -2732 452 ) 0
      		waitthread global/cyberattack_searchdestroy.scr::bombsite ( 737 622 489 ) 90
    	}
    
      	thread global/cyberattack_searchdestroy.scr::bomb ( -2342 -2934 488 ) 90 ( 3389 6515 -63 ) 180 ( 0 0 0 ) 0
    	exec global/cyberattack_searchdestroy.scr // begin the main script
    
    //-----------------------------------------------------------------------------
    
    	local.sides = level.changesides	// when the sides change each 3 rounds, old bombsites are removed and 2 ones are added closer to the defending team's spawn.
    	while(1)
    	{
    		if(level.changesides != local.sides)
    		{
    			waitthread global/cyberattack_searchdestroy.scr::bombsites_remove
    
    			if(level.changesides == 0)
    			{
      				waitthread global/cyberattack_searchdestroy.scr::bombsite ( 1556 7363 -31 ) -90
      				waitthread global/cyberattack_searchdestroy.scr::bombsite ( 3299 1118 474 ) 180
    				//level.cameradistance = 150
    			}
    			if(level.changesides == 1)
    			{
      				waitthread global/cyberattack_searchdestroy.scr::bombsite ( -2454 -2732 452 ) 0
      				waitthread global/cyberattack_searchdestroy.scr::bombsite ( 737 622 489 ) 90
    				//level.cameradistance = 200
    			}
    			local.sides = level.changesides
    		}
    		waitframe
    	}
    end
    <><><> <><><>

    <><><> Singleplayer Maps Mods <><><>


    Code:
    Singleplayer maps finished so far: Training, M1L1, M1L2A, M1L2B, M1L3A, M1L3B, M1L3C, M2l1, M2l2A, M2L2B, M2L2C.
    
    ---------------
    
    - Training fully modded [See READMES old/README 4 (training map mods).txt for mod-specific info].
    - g_ubergametype "0" or "": Main Training script mods, where blowing up the tank unlocks doors to the 1st gunrange, doing 4 objectives unlocks the 2nd gunrange, doing 2 more spawns the final key for the final door.
    - in the training.scr script, exec maps/training_mapscripts/tank_m3_replace.scr drive, the "drive" can be replaced with "static" for a nondrivable tank, spawning Allies explosives for them to blow up the tank.
    
    - g_ubergametype "bb", "cyb", "snd", "ft": all doors are unlocked, all crate stairs now visible, all player spawns are enabled.
    Almost all mods are removed except for the drivable tanks and valve switches for moving tables behind the final gunrange.
    
    - g_ubergametype "bb": teles, crates, and tables added for going behind walls, moving around behind walls.
    
    - g_ubergametype "cyb", "snd", or "ft": no teles for going behind walls or objects behind them, all decoration objects now visible.
    Some mods added: airstrike radio triggrs, fire field detonators, field bombs detonator, trench bombs alarm switches, radio music triggers, truck/halftrack sound triggers.
    
    ---------------
    
    - M1L1 fully modded. Crates, teles, tables added to walk inside of most buildings, on their rooftops, or on stairs between rooftops, including on top of the Axis-side tower and the Allies-side light house (tele to it behind the Axis spawn).
    - 2 drivable tanks (one arrives with vehicle convoy), one drivable opeltruck & jeep & bmwbike, one Radiobomb Walkie, and 2 throwing knives on the map initially.
    
    - 3 sets of bangalore wallbombs that can blown up from alarm-switches: behind the Axis-side crate room, inside the Axis-side crate room, and inside the Allies-side tan building.
    - Various doors and metal gates can be opened/closed, including the 2 shutters in the 2nd story mg42 building.
    
    - The Axis-side ceiling before the 2nd story mg42 building can be blown up with a Giant Bomb or a Radiobomb Walkie.
    - Simplified Allies/Axis airstrikes added (every 2 mins, 30 secs), since entity count is already approaching 700+ after adding the 3 splinepaths needed for the vehicle convoy.
    
    - M1L1 Vehicle Convoy arrives after 90 seconds: opeltruckgreen_canopy, opeltruck, and panzer_tank_europe following the street path from the Allies side. Opeltruckgreen_canopy has another Radiobomb Walkie and 2 extra throwing knives.
    The green opeltruck cannot be destroyed or driven (hold USE near driver door for 3 secs to turn on truck, then hold USE for 1 sec to honk horn).
    - Regular opeltruck explodes before parking near the tan building. The panzer_tank_europe's turret looks at the explosion while turning to the left, before rotating the turret back forward, parking, and becoming a 2nd drivable tank.
    
    For all modded maps so far:
    - Player spawns added and distributed more widely across the Allies/Axis spawns.
    - Invisible solid walls added to prevent players from hiding inside walls and shooting players through them in common camping spots.
    - Fell-under-map teles added at all areas where players can get trapped or walk under parts of the map.
    - Cyber Attack and Search & Destroy bombs and bombsites added to the map. Base-Builder objects reorganized. Mini-flak88 flamethrower build-objects added for UBER BASEBUILDER; build-objects reorganized.
    - Most teleporters, objects, and spotlights are removed for UBER BASEBUILDER to minimize maxentities & maximize number of build-objects that can be placed.
    - For some large maps: bombsites in Search & Destroy will move closer to defending team's spawn each time the gamemode changes sides (when "level.changesides" changes).
    
    ---------------
    
    - M1L2A fully modded. Crates, teles, tables added to walk inside of most buildings, on their rooftops, or on stairs between rooftops.
    - One drivable king tank, one drivable opeltruck, 2 drivable bmwbikes, one drivable jeep, 2 usable flak88s, 2 Radiobomb Walkies, and 4 throwing knives on the map.
    - The Axis main building has 3 auto-spotlights, each scanning on their own path. If a player gets too close to a beam, the spotlight follows the player until he goes out of sight.
    Any player that goes near the spotlight itself instantly converts it into a regular spotlight, following the player's viewangles. If that player moves away, the spotlight returns to an auto-spotlight (also turning back on).
    - 2 alarm switches for controlling all auto-spotlights' colors on Axis main building roof: turn on rapidly changing rainbow colors, or turn on slower changing rainbow colors.
    
    - 3 sets of bangalore wallbombs with 2-way switches: long zig-zag hallway, outside flak88 building, outside Axis main building.
    - 6 individual bangalore wallbombs: SAS building, cots building, outside tan bunker, 2 single-rooms Axis main building, one single-room near flak88s.
    - Various doors and large wooden gates can be opened/closed, including large wood doors in Allies spawn (laser door outlines & tables behind them) and SAS building's vault door.
    - The 3 chairs in the SAS building ground floor can be blown backwards with any grenade or explosion. 2 cabinet switches and a radio music trigger in the SAS building.
    
    - The explosives room in the basement of the Axis main building can be blown up with a Giant bomb or a Radiobomb Walkie.
    - The large wooden doors with horizontal lasers and explosives on the ground (near flak88s) can be blown up with a grenade or any other explosion.
    - Complex Allies/Axis airstrikes added (Allies: 3 mins, Axis: 3 mins 10 secs), where each plane has its own splinepath and bombdrop coords.
    
    ---------------
    
    - M1L2B fully modded. Crates, teles, tables added to walk inside of most buildings, on their rooftops, or on stairs between rooftops.
    - 3 drivable tanks, 2 drivable opeltrucks, one drivable jeep, 2 Radiobomb Walkies, and 4 throwing knives on the map.
    - There are 3 auto-spotlights in the Axis spawn, and 1 auto-spotlight in the middle of the map, each scanning on their own path.
    - 2 alarm switches for controlling all auto-spotlights' colors behind the middle auto-spotlight: turn on rapidly changing rainbow colors, or turn on slower changing rainbow colors.
    
    - 2 sets of bangalore wallbombs with 2-way switches: Allies 3-door truck garage, Axis office building.
    - 2 individual bangalore wallbombs: wooden door in the Allies-side single garage, open door in the Axis-side green opeltruck garage.
    - Lasers for indicating the edges of the wide invisible roof above the Axis office building.
    - The Axis-side static opeltruck can be turned on: hold USE near the driver door for 3 secs to turn on/off truck, hold USE for 1 sec to honk horn, hold USE for 1-2 secs to turn on/off headlights.
    - The red wire in the 3 open-hood opeltrucks (looping an idle-truck sound) can be shot at, breaking the wire and turning off the truck. For open-hood opeltrucks: hold USE for 1 sec near driver door to honk horn.
    - Vehicle teleporter on the Allies-side fence allows vehicles and tanks to move through the fence by running through the 3 wide red lasers (green briefly if teleporting succeed, flashes white if shot at).
    - One cabinet switches and 3 radio music triggers in the Axis office building.
    
    - The Axis side panzer tank and its turret on the crane can be blown up with a tank, a Giant Bomb, or a Radiobomb Walkie.
    - The green grenade ammobox crate near the green-canopy opeltruck can be blown up with a grenade or any other explosion.
    - Allies/Axis airstrikes added (Allies: 3 mins, Axis: 3 mins 10 secs); each pair of planes flies on the same splinepath but start on opposite ends (different dropbomb coords).
    
    ---------------
    
    - M1L3A fully modded. 3 tanks, 7 drivable vehicles, and 4 flyable plane triggers added to the map. 2 sets of radiobomb-walkies, 4 extra throwing knives also added.
    - Laser roads across the back edge of the map allow vehicles via ramps to drive on/off the main part of the map, also connecting to the road at the far end of the map.
    - Any vehicle/tank that falls off the laser road, or is somehow pushed outside of the map, will explode.
    - NOTE: Tank treads should be roughly horizontal before going onto the laser road, otherwise the tank could fly up into the sky and explode!
    - NOTE: Players driving some vehicles with windshields (such as mercedes), cannot see any lasers through the windshield.
    
    - Some teles allow players to stand on rock cliffs or platforms on top of large rocks, to shoot players from high above them.
    - Alarm switches in the dead-end halls behind the openable doors each blow up a bangalore outside the door.
    
    - New airstrikes script (global/bomberplane.scr) simplifies adding them into maps. Only a splinepath is needed; bomb drop coords are automated and drop closer to splinepath's central line.
    - Parameters: path targetname, team (allies, axis, c47), number of planes, off time, bombs off (0 = no, 1 = yes), amount of bombs, time until bombs drop, end (1 = only do 1 airstrike).
    - Example: exec global/bomberplane.scr bomberpath allies 2 150 0 16 3.2
    - Example: exec global/bomberplane.scr bomberpath allies 2 150 1
    
    - level.bomberplane_health = 200     // these are defaults set inside global/bomberplane.scr
    - level.bomberplane_bombspeed = 0.25 // speed multiplier; higher = bombs drop horizontally further away from plane's splinepath (default = 0.5)
    - level.bomberplane_bombgravity = 2  // higher = bombs drop faster vertically & closer to plane's splinepath
    - Allies/Axis airstrikes can also be alternated within a simple while(1) loop. Example thread is below:
    
    airstrikes_alternate:
    
    	while(1)
    	{
    		local.r = randomint(2)
    		if(local.r == 0) { waitexec global/bomberplane.scr bomberpath allies 2 150 0 16 3.2 1 }
    		if(local.r == 1) { waitexec global/bomberplane.scr bomberpath2 axis 2 150 0 16 3.2 1 }
    		waitframe
    	}
    end
    
    ---------------
    
    - M1L3B fully modded. 4 tanks, 8 drivable vehicles, and 4 flyable plane triggers added to the map. 2 sets of radiobomb-walkies, 4 extra throwing knives also added.
    - 1 Flak88 on the Axis side, and 1 Nebelwerfer on the Allies side. 2 sets of bangalore wallbombs: 1 above the Axis red-light bunker, and two above the Allies two-door building.
    
    - Airstrikes every 2 minutes, 50% chance Allies or Axis strike. For Allies strikes: 50% chance the planes will spawn from left or right side of the airstrip, and 33% chance for c47s flying. 
    
    - All parked planes are destructible. The black 20mm Flak cannon's angles can be moved from 0, 30, 60 degrees by pressing USE near it, or blow it up with 2+ grenades.
    - Teles allow players to walk along the entire Axis-side cliff, or on the Allies-side cliff near the back airstrip-side corner.
    
    - Some teles allow players to stand on rock cliffs or platforms on top of large rocks, to shoot players from high above them.
    - Alarm switches in the dead-end halls behind the openable doors each blow up a bangalore outside the door.
    
    ---------------
    
    - M1L3C fully modded. 2 drivable higgins boats, and 9 vehicles added to the map. 2 sets of radiobomb-walkies, 4 extra throwing knives also added.
    - 3 bangalore wallbombs in Allies spawn, and 2 sets of bangalore wallbombs in Axis spawn. No airstrikes on this map, since the road between both spawns is too skinny.
    - Any players that are touching a higgins boat will not be forcibly respawned if also touching the "$ocean" trigger.
    
    - Solid floors and walls added behind the light house to expand the Axis spawn's total area.
    - The tunnel behind the light house has lasers marking the map edges, and serves as a vehicle garage for the Axis.
    - The light house fence has a vehicle teleporter allowing vehicles to go through the fence. Be careful not to drive facing the cliff edge.
    - Any vehicles that accidentally fall off the cliff will be destroyed.
    
    - Elevator script reworked to operate much faster. Teles added above and below the elevator to escape if trapped in the shaft.
    - Minen (entmint) bombs on the top-floor Allies spawn can be blown up with grenades.
    - Looping sounds added to all transformers and the red HVAC machine in Allies spawn; transformers can also be destroyed.
    - Toilets can be flushed in Allies spawn, and the dripping water spigot (bucket near it) can be turned on/off.
    - Airtanks in the bottom-floor Allies spawn can be turned on/off to loop a steaming sound.
    - Static opeltrucks in the bottom-floor Allies spawn can be turned on/off. While on, hold USE for 1 second to honk horn; hold USE for 1-2 seconds to turn on/off headlights.
    - The lighthouse can be turned on/off with the train switch in Axis spawn.
    
    - Some teles allow players to stand on rock cliffs or platforms on top of large rocks, to shoot players from high above them.
    - Bombsites in Search & Destroy will move closer to defending team's spawn each time the gamemode changes sides (when "level.changesides" changes).
    
    ---------------
    
    - M2L1 fully modded. 5 flyable planes, 1 flak88, 1 nebelwerfer, 4 tanks and 12 vehicles added to the map. 3 sets of radiobomb-walkies, 4 extra throwing knives also added.
    - 5 bangalore wallbombs: 1 in Allies spawn, 2 in main center building, and 2 in Axis spawn. Airstrikes launch randomly between 90 and 180 seconds.
    - These airstrikes use global/bomberplane_nospline.scr and require level.bomberplane_map_setsizes to be defined before running these threads, since origin & angles are randomized per airstrike.
    
    	level.bomberplane_map_setsize1 = ( -6935 -4375 0 )	// just like a .tik file, adjust these map_setsizes so the planes aren't dropping bombs outside of the map (also includes skybox height).
    	level.bomberplane_map_setsize2 = ( 5935 7415 2100 )	// start at ( 0 0 0 ) on the map. setsize1 must have - numbers, and setsize2 must have + numbers.
    
    - The flat snow-covered cliff behind the main middle building can be driven/walked on, as well as the higher cliff next to the Allies spawn.
    - Vehicle teles allow tanks/vehicles to travel across the middle fence and on top of the flat snow-covered cliff.
    - The metal gate at the Allies spawn can be opened/closed from both sides using the red-pulsing train switch.
    - Every 60 to 180 seconds, a train (2 to 4 train cars) quickly drives across the train tracks behind the Allies spawn, killing anyone that gets run over.
    
    - Various looping sounds added inside the buildings for airvents, humming transformers, etc. The paper documents can be blown up with a grenade. 
    - The large generator in the 2nd floor main building can be turned on/off with a nearby electrical switch. 3 radios across the map can also be turned on/off to play static or music.
    
    ---------------
    
    - M2L2A fully modded. 3 flyable planes, 4 higgins boats, 4 uboats, 3 jetpacks, 2 flak88s, 1 nebelwerfer, 1 tank and 3 vehicles added to the map. 2 sets of radiobomb-walkies, 8 extra throwing knives also added.
    - 6 bangalore wallbombs mostly in Allies spawn; 2 of these alarm switches keep a nearby red light on until the switches have reset. Airstrikes are not included in this level, since half of the level is inside.
    
    - Drivable uboats added into global/playerboat.scr. Similar to drivable higgins boats, the uboats have 5 extra passenger seats that allow passengers to stand on the uboat's upper platforms.
    - Uboat drivers can press Primary FIRE to shoot a large tank shell projectile in a horizontal line, or press Secondary FIRE to throw grenades in front of the uboat. These projectiles will not hurt teammates.
    
    Uboat Parameters: targetname (must not exist yet), model path, origin, angles, health, vehicle speed, reset time, boat scale.
    Uboat Example: exec global/playerboat.scr boat2 vehicles/uboat.tik ( -913 3598 -400 ) ( 0 -90 0 ) 250 40 45 1.0
    
    - A vehicle tele (thick red lasers) allows vehicles to travel through the metal doors that separate the Allies spawn and uboat area, instead of using the single door near the ocean.
    - NOTE: The walls on maps M2L2A, M2L2B, M2L2C are glitchier than normal for vehicles. Driving at an angle into walls will get vehicles stuck inside them (if player exits the vehicle inside a wall, they will auto-respawn after 3 seconds).
    
    - The naxos prototype in the scientists' room can be blown up with grenades.
    - The crane's loopsound is louder. A spotlight is mounted on the outer wall of the crane's metal basket, with nearby tele to enter/exit this basket.
    - The airtanks in the bottom-floor Alies spawn can be turned on/off. Sound entities added to 6 air vents.
    
    - Red and green lasers added to the rooftops near the ocean, indicating solid walls (green) and roof-edges that players can jump off from (red).
    
    ---------------
    
    - M2L2B fully modded. 4 flyable planes, 4 higgins boats, 4 uboats, 4 jetpacks, 1 flak88, 1 nebelwerfer, 1 tank and 3 vehicles added to the map. 2 sets of radiobomb-walkies, 8 extra throwing knives also added.
    - 4 bangalore wallbombs, 2 inside the uboat sub, and 2 between other uboat docks. 1 set of bangalore wallbombs triggered via detonator on top of the uboat sub. Airstrikes are not included in this level.
    
    - A vehicle tele allows vehicles to travel through a metal gate to a normally inaccessable uboat dock.
    
    - Numerous sound entities added inside the uboat sub: air vents, generators, transformers, water dripping near the toilet. Press USE(e) near the toilet to flush it. Sound entities added to 3 air vents outside the sub.
    - Two radios in the uboat sub can also play music by pressing USE(e) a few times.
    
    - Red and green lasers added to the rooftops near the ocean, indicating solid walls (green) and roof-edges that players can jump off from (red).
    
    ---------------
    
    - M2l2C fully modded. 4 flyable planes, 5 higgins boats, 4 uboats, 5 jetpacks, 2 flak88s, 2 nebelwerfers, 1 tank and 6 vehicles added to the map. 2 sets of radiobomb-walkies, 8 extra throwing knives also added.
    - 3 bangalore wallbombs, 2 in Axis spawn, 1 in Allies spawn. 2 sets of bangalore wallbombs triggered via detonator on top of both uboat subs. Airstrikes are not included in this level.
    
    - A vehicle tele allows vehicles to travel through a metal gate to a normally inaccessable uboat dock.
    - Another vehicle tele allows travel between the large white platform in the ocean and the roomy garage behind the Axis spawn. Vehicles can travel through the adjacent metal fence without teleporting.
    - These are the best, most portable versions of vehicle teles. Parameters allow for any array size of lasers, teleporting alignment along X or Y axis, and teleporting speed
    
    Parameters: origin, setsize 1, setsize 2, laser array, teleporting alignment (NIL = none, 0 = 0-180 axis, 1 = 90-270 axis), vehicle height after teleporting (default/NIL = 0), teleporting speed (default/NIL = 25).
    
    Example: thread vehicle_tele ( 4193 -1119 -511 ) ( -222 -680 -10 ) ( 222 680 355 ) local.lasers 1 0 50
    
    	local.lasers[1] = thread spawnlaser ( -1507 -6227 -511 ) ( -1507 -6227 -262 ) ( 1 0 0 ) 3 // origin, endpoint, initial color, scale
    	local.lasers[2] = thread spawnlaser ( -1507 -6224 -259 ) ( -1507 -6464 -259 ) ( 1 0 0 ) 3
    	local.lasers[3] = thread spawnlaser ( -1507 -6461 -262 ) ( -1507 -6461 -511 ) ( 1 0 0 ) 3
    	thread vehicle_tele ( -1502 -6344 -511 ) ( -30 -115 -10 ) ( 30 115 200 ) local.lasers 0
    
    - 4 ladders added to the 2 docked uboats for players to climb up/down them. Players must be looking directly at ladder, and must be looking up/down more than 30 degrees to climb these ladders.
    - Adjust the "offset" parameter if desired, or if player is getting stuck on stuff while climbing the ladder.
    
    Parameters: origin, angle for players to attach, ladder setsize1, ladder setsize2, optional offset distance away from ladder (lower = players hands closer to ladder, higher = further away, default = 14). If > 18, players cannot climb the ladder.
    
    Example: exec global/spawnladder.scr ( -200 300 0 ) 90 ( -1 -10 0 ) ( 1 10 250 )
    Example2: local.ladder = thread global/spawnladder.scr::main ( -200 300 0 ) 90 ( -1 -10 0 ) ( 1 10 250 ) 10
    
    - Sound entities added to 12 air vents throughout the uboat docks. Tranformer and red HVAC sounds added in Axis spawn. 3 more air vent sounds added in the vents above the Axis spawn.
    - Red and green lasers added to the rooftops near the ocean, indicating solid walls (green) and roof-edges that players can jump off from (red).
    
    ---------------
    
    - M2L3 fully modded. 4 flyable planes, 1 flak88, 1 nebelwerfer, 3 tanks, 4 vehicles added to the map. 2 sets of radiobomb-walkies, 5 extra throwing knives also added.
    - 1 set of bangalore wallbombs (two-way switch) between the truck garage and Axis spawn outdoors. Airstrikes are not included in this level.
    
    - The train's splinepath is extended along the curved railroad, and extended from the train tunnel. The tunnel itself is extended all the way to the map's edge.
    - Press USE(e) near the train and the fence to ride in the train. The train moves automatically. Hold USE(e) for 1 second to exit the train (only when outside of the "player_clip" brushes).
    - Any players that exit the train while it's moving will appear on top of the train. Press USE(e) while looking down to re-enter the train. Walking too close to the edge of a moving train will kill the player.
    - When the train arrives and fully stops, all players inside the train-front and the train cab will automatically exit the train and teleported to the ground.
    - Players/vehicles/tanks that touch the moving train will be killed/destroyed.
    
    - Up to 2 players (teammates only, does not work in FFA) can ride in the front of the train (the bp44train.tik model), and they must hop in before the train is moving too fast.
    - The 2 train-front riders can shoot from the train's windows, and aim by holding FIRE(zoom). These players can be shot/killed by other players shooting at the train's windows too.
    
    - Up to 20 players (5 rows, 4 columns) can ride in the train cab, regardless of teammates. The riders can shoot and aim by holding FIRE(zoom), or exit the train cab by holding USE(e).
    - When train starts moving (only when a player gets into the train-front, the bp44train), all players inside the train cab will be locked into 1 of 20 available seats.
    - If all seats are filled, the extra players are teleported back outside of the cab on the ground.
    
    - If players on opposite teams are riding in the train cab together, anywhere they shoot will cause damage to their riding enemies since the damage-respoding trigger covers the whole cab's interior.
    - The train cab rider in the 1st seat (middle row, closest to door) can toggle opening/closing the solid traincab door by Leaning Left/Right
    - If the train cab door is closed, players inside the cab cannot be shot/killed or shoot/kill others.
    
    - 2 vehicle teles for vehicles to enter/exit the truck garage. Various extra roads outlined by lasers spawned in extra map areas.
    - Other lasers on the rooftops help prevent players from falling off edges.
    
    - Thick green lasers on the ground outline "player_clip" brushes from the map's .bsp (brushes cannot be removed), since players cannot walk through them.
    - Vehicles/tanks can drive through them, but players that exit them while inside these brushes will get trapped (respawned after 3 seconds).
    - Building rooftops and ledges are solified with "script_origin"s and accessible via teles from the ground (glitching can occur when standing still. To reduce entity count, smaller "script_model"s were not used).
    
    - Numerous sound entities added throughout the Allies spawn and truck garage: 3 generators, 16 transformers, 8 air vents.
    
    ---------------
    
    - All singleplayer maps will eventually be modded: M1 and M2 (v7.95), M3 and M4 (v7.97), M5 and M6 + final version edits (v8.00).
    <><><> <><><>

    <><><> Drivable Vehicles / Usable Statweapons <><><>


    Code:
    - global/playerboat.scr & global/playertank.scr & global/playervehicle.scr.
    - Place any script examples before "level waittill spawn". Change coords & angles as needed.
    
    - Available drivable tanks: kingtank, panzer_tank, panzer_tank_europe. (tigertank & tigertankdsrt cannot be driven, since turret model completely blocks player's screen).
    - Available drivable boats: higginsxtrahull (higgins boats), uboat.
    - Available drivable vehicles: bmwbike, european_car_grey, european_car_silver, european_car_tan, european_delivery_truck_green, european_delivery_truck_grey, european_delivery_truck_red3,
    gmctruck, jeep, jeep_bench, m3, mercedes, opeltruck, opeltruckgreen, opeltruckgreen_canopy, sdkfz, sdkfz_afrika, shermantank.
    
    - Passenger seats per vehicle (not including driver seat); can only carry teammates (none if in Free-For-All):
    - 2 for bmwbike & jeeps, 3 for european_cars & european_delivery_trucks & mercedes, 4 for gmctrucks & opeltrucks & sdkfzs & m3s, 1 for shermantank, 9 for higgins boats, 5 for uboats.
    
    - For drivable vehicles: Hold FIRE = look behind, Press JUMP = exit, Lean Left = honk horn, Lean Right = turn on/off headlights (only if "noheadlights" parameter is not equal to 1).
    - For drivable tanks: Press FIRE = shoot turret, Press JUMP = exit.
    - For drivable boats: Hold FIRE = look behind. Hold Left Lean = look left. Hold Right Lean = look right. Press JUMP = exit.
    - For drivable uboats: Primary FIRE = shoot tank shell, Secondary FIRE = throw grenade, Press JUMP = exit, Lean Left/Right = look behind.
    
    - Drivable tanks now have an additional 30cal turret gun seat, allowing a 2nd player to shoot the 30cal while the tank driver uses the main tank turret.
    - Drivable jeeps & SDKFZ halftracks also have a 30cal turret gun seat. Players using the 30cals can be shot at or killed by explosions, without necessarily destroying the vehicle.
    
    Tank Parameters: targetname (must not exist yet), model path, origin, angles, health, reset time
    Tank Example: exec global/playertank.scr tank01 vehicles/panzer_tank_europe.tik ( -680 2788 -257 ) ( 0 270 0 ) 1000 60
    
    Vehicle Parameters: targetname (must not exist yet), model path, origin, angles, health, vehicle speed, reset time, initial headlights (0 = off, 1 = on), no headlights (1 = keep them off).
    Vehicle Example: exec global/playervehicle.scr jeep vehicles/jeep.tik ( -2541 2297 -255 ) ( 0 40 0 ) 250 400 45 1
    
    Boat Parameters: targetname (must not exist yet), model path, origin, angles, health, vehicle speed, reset time, boat scale.
    Boat Example (a): exec global/playerboat.scr boat1 vehicles/higginsxtrahull.tik ( -6415 -3016 -380 ) ( 0 173.5 0 ) 250 250 45
    Boat Example (b): exec global/playerboat.scr boat2 vehicles/uboat.tik ( -913 3598 -400 ) ( 0 -90 0 ) 250 40 45 1.0
    
    ---------------
    
    - global/playerflak88.scr & global/playernebelwerfer.scr
    - Place any script examples before "level waittill spawn". Change coords & angles as needed.
    
    - With these two global scripts, players can now get into, rotate, and shoot with the flak88s & nebelwerfers (mainly for Allied Assault).
    - The flak88s shoots one shell before waiting 5 seconds to reload. Player is invisible and cannot be killed unless the flak88 is destroyed.
    
    - The nebelwerfers shoot 6 rockets before waiting 6 seconds to reload. Player is visible and can be shot or killed without destroying the nebelwerfer, or killed after it is destroyed.
    - The nebelwerfers cannot reload until all 6 rockets are fired, and it keeps reloading even if the player leaves.
    - After a specified amount of reset time, both scripts reset the destroyed turrets back to their initial states.
    
    - The flak88s' shells do not count as kills / scorepoints, but nebelwerfer rockets do count as kills (rockets do not kill teammates).
    - Firing the nebelwerfer rockets too close to the nebelwerfer could blow it up and kill the turret player.
    
    - To prevent the turrets from ever resetting, set the reset time to 99999.
    - Ideally, health should be 250, so only two grenades or a direct shotgun blast can destroy the turrets (damage scale below):
    shotgun: 340 damage, bazooka: 105 damage, sniper: 106 damage, one grenade: 200 damage, two grenades: 400 damage.
    
    Flak88 Parameters: existing flak88 targetname (NIL, if spawning a new one), health, reset time, new flak88 origin, new flak88 angles, remove turret base (0 = no, 1 = yes), turret base angles (if NIL, default = flak88 angles)
    Flak88 Example (a): exec global/playerflak88.scr $flak88_weapon1 250 60
    Flak88 Example (b): exec global/playerflak88.scr NIL 250 60 ( 2150 3700 -253 ) ( 0 0 0 ) 0 ( 0 90 0 )
    
    Nebelwerfer Parameters: existing nebelwerfer targetname (NIL, if spawning a new one), health, reset time, new nebel origin, new nebel angles
    Nebelwerfer Example (a): exec global/playernebelwerfer.scr $nebelwerfer_1 250 60
    Nebelwerfer Example (b): exec global/playernebelwerfer.scr NIL 250 60 ( 859 186 282 ) ( 0 -90 0 )
    <><><> <><><>

    <><><> Killstreak Rewards <><><>


    Code:
    - Killstreak count increases as a player gains kills without dying. Whenever a player dies or changes teams, their killstreak count reverts to 0 again.
    - Killstreak damage handler ensures that scorepoints are properly given to killstreak owners, or to enemies that destroy the killstreaks and kill other players.
    - Scorepoints are also properly given during chain-reaction explosions, such as a mine destroying another mine before killing an enemy player.
    - If a players' killstreak still exists and that player changes teams or leaves the game, the killstreak is removed immediately.
    
    - 4 killstreaks added, more coming soon: 2 claymores (3 kills), airstrike (5 kills), cluster mine (7 kills), sentry turret (9 kills).
    - To use killstreaks: hold USE(e) + lean left/right to show the killstreak and begin placing.
    - To place killstreaks: hold USE(e) + FIRE(right click) to place down the killstreak.
    
    - Claymores: Lasers point toward enemies. All enemy players (including the claymore-owner, but not his allies) that run too close to a claymore will be killed within 150 degrees from forward.
    If an enemy shoots the claymore, the claymore-owner and his allies standing too close can be killed within all 360 degrees.
    Claymores remain on the map after the player_owner dies, but disappear after the player_owner respawns.
    
    - Sentry Turret: Rotates continuously. The closest enemy player to the turret will be locked-on (within 120 degrees) for 1 second before firing until the enemy player goes out of sight or dies.
    Enemies can destroy the sentry turret with explosions, grenades or rockets (bullets do not deal damage).
    Sentry Turrets stay on the map after the player_owner dies and respawns. These will disappear after 180 seconds if not destroyed.
    
    - Cluster Mine: 5 additional mines fly out from center. Similar to claymores, but without lasers and capable of killing enemies within all 360 degrees. These can also be shot and destroyed.
    Cluster mines stay on the map after the player_owner dies and respawns.
    
    - Airstrike: Mark the center-point location and the direction of the airstrike's bombing run, before launching the airstrike.
    Laser arrows indicate the direction that airstrike planes will follow. Bombs drop from the planes continuously (traveling -8200 to 8200 units from player's origin, 16400 units total).
    Dropped bombs that kill players count as scoreponts and cannot damage teammates (but can kill them if driving vehicles).
    The airplanes can only be shot down by enemy players after shooting them 8+ times. Any crashing planes can kill any players.
    
    ---------------
    
    - Place any script examples before "level waittill spawn". Change "kills" parameter as needed (number of kills in a killstreak, without dying or changing teams).
    - Additional level parameters such as "damage", "radius" (radius of damage and distance to trigger explosions), triggering field-of-view in degrees, scale of claymore/mine, 
    velocity of additional mines spawned, bullet damage for sentry turrets, turret lock-on delay in frames, and maximum lock-on distance, can be edited at the top of each killstreak script.
    
    Claymores Parameters: number of kills, number of claymores given (max = 5).
    Claymores Example: exec killstreaks/claymores.scr 3 2
    
    Sentry Turret Parameters: number of kills, time until sentry turret dies.
    Sentry Turret Example: exec killstreaks/sentry_turret.scr 6 90
    
    Cluster Mine Parameters: number of kills, number of additional mines spawned (max = 15).
    Cluster Mine Example: exec killstreaks/cluster_mines.scr 9 5
    
    Airstrike Parameters: number of kills, number of bullets to kill a plane, map height (40 below skybox ceiling; all modded maps have pre-defined map heights, so "map height" can be left empty).
    Airstrike Example: exec killstreaks/airstrikes.scr 5 8
    <><><> <><><>

    <><><> List of Finished UBER MODS scripts <><><>


    Code:
    - maps/dm/mohdm1.scr
    - maps/dm/mohdm2.scr
    - maps/dm/mohdm3.scr
    - maps/dm/mohdm4.scr
    - maps/dm/mohdm5.scr
    - maps/dm/mohdm6.scr
    - maps/dm/mohdm7.scr
    - maps/obj/obj_team1.scr
    - maps/obj/obj_team2.scr
    - maps/obj/obj_team3.scr
    - maps/obj/obj_team4.scr
    
    - maps/m1l1.scr
    - maps/m1l2a.scr
    - maps/m1l2b.scr
    - maps/m1l3a.scr
    - maps/m1l3b.scr
    - maps/m1l3c.scr
    - maps/m2l1.scr
    - maps/m2l2a.scr
    - maps/m2l2b.scr
    - maps/m2l2c.scr
    - maps/m2l3.scr
    - maps/training.scr
    - maps/void.scr
    
    <><><> <><><>
    
    <><><> List of UBER CVARS scripts <><><>
    
    - cvars/adminstuff.scr
    - cvars/check.scr
    - cvars/coord_pointer.scr
    - cvars/coords.txt
    - cvars/cybsnd.scr
    - cvars/drawpath.scr
    - cvars/entitycount.scr
    - cvars/find.scr
    - cvars/findclass.scr
    - cvars/findent.scr
    - cvars/findmodel.scr
    - cvars/playercount.scr
    - cvars/playerspawns.scr
    - cvars/track.scr
    - cvars/ubergametype.scr
    
    <><><> <><><>
    
    <><><> List of UBER MODS Scripts <><><>
    
    - alienx/basebuilder.scr
    - alienx/hud.scr
    - alienx/hud_test.scr
    
    - global/aliascache_triggersounds.scr
    - global/ambience_mp.scr
    - global/bomberplane.scr
    - global/bomberplane_nospline.scr
    - global/cyberattack_searchdestroy.scr
    - global/dog.scr
    - global/fastsky.scr
    - global/flickerrotate.scr
    - global/fworks.scr
    - global/get_player_weaponclass.scr
    - global/give_players_knives.scr
    - global/math.scr
    - global/messagetrig_print.scr
    - global/player_spotlight.scr
    - global/playerboat.scr
    - global/playerflak88.scr
    - global/playernebelwerfer.scr
    - global/playertank.scr
    - global/playervehicle.scr
    - global/playervehicle_movement.scr
    - global/respawn_stuck_fix.scr
    - global/spawnladder.scr
    - global/throwingknife.scr
    - global/uberversion.scr
    - global/vehicle_tele.scr
    - global/victory_podium.scr
    
    - guidedmissile/spawntrigger.scr
    - jetpack/trigger.scr
    
    - killstreaks/airstrikes.scr
    - killstreaks/claymores.scr
    - killstreaks/cluster_mines.scr
    - killstreaks/damagehandler.scr
    - killstreaks/sentry_turret.scr
    
    - map_triggers/bomb.scr
    - map_triggers/grenade_ammo.scr
    - map_triggers/health.scr
    - map_triggers/joint.scr
    - map_triggers/led_spotlight.scr
    - map_triggers/led_trap.scr
    - map_triggers/lightbomb.scr
    - map_triggers/player_spotlight.scr
    - map_triggers/rocket_ammo.scr
    - map_triggers/snowball_ammo.scr
    - map_triggers/spotlight_colorswitch.scr
    - map_triggers/tele.scr
    - map_triggers/teleface.scr
    - map_triggers/telecrouch.scr
    - map_triggers/undermap.scr
    
    - map_triggers/gen_switches/alarmswitch.scr
    - map_triggers/gen_switches/cabinetswitch.scr
    - map_triggers/gen_switches/detonatorswitch.scr
    - map_triggers/gen_switches/electricalswitch.scr
    - map_triggers/gen_switches/enigmaswitch.scr
    - map_triggers/gen_switches/lampswitch.scr
    - map_triggers/gen_switches/lightswitch.scr
    - map_triggers/gen_switches/trainswitch.scr
    - map_triggers/gen_switches/valveswitch.scr
    
    - map_triggers/map_switches/training_alarmswitch_gunrange.scr
    - map_triggers/map_switches/training_alarmswitch_trench.scr
    - map_triggers/map_switches/training_detonator_field.scr
    - map_triggers/map_switches/training_detonator_final.scr
    - map_triggers/map_switches/training_electricalswitch.scr
    - map_triggers/map_switches/training_trainswitch.scr
    - map_triggers/map_switches/training_valveswitch.scr
    - map_triggers/map_switches/training_valveswitch_final.scr
    
    - map_triggers/unusedtriggers/allweapons.scr
    - map_triggers/unusedtriggers/camo.scr
    - map_triggers/unusedtriggers/giant.scr
    - map_triggers/unusedtriggers/invisible.scr
    - map_triggers/unusedtriggers/invulnerable.scr
    - map_triggers/unusedtriggers/midget.scr
    - map_triggers/unusedtriggers/normal.scr
    - map_triggers/unusedtriggers/spy.scr
    
    - maps/gen_mapscripts/bonfire.scr
    - maps/gen_mapscripts/doorsgates.scr
    - maps/gen_mapscripts/radiobomb_walkietrig.scr
    - maps/gen_mapscripts/radios_musictrig.scr
    - maps/gen_mapscripts/slidingobject.scr
    - maps/gen_mapscripts/truckstuff_trig.scr
    
    - maps/mapspawns/objteam1_dm.scr
    - maps/mapspawns/objteam3_dm.scr
    - maps/mapspawns/objteam4_dm.scr
    - maps/obj_medicstuff/healthtables.scr
    - maps/obj_medicstuff/medics.scr
    
    - maps/training_mapscripts/airstrike_radiotrig.scr
    - maps/training_mapscripts/airstrikebombs.scr
    - maps/training_mapscripts/bangalore_wallbomb.scr
    - maps/training_mapscripts/explosiveboxes.scr
    - maps/training_mapscripts/finaldoor_keytrig.scr
    - maps/training_mapscripts/finalfield_bombs.scr
    - maps/training_mapscripts/firefields.scr
    - maps/training_mapscripts/obj6b_explosive_tanktrig.scr
    - maps/training_mapscripts/tank_m3_replace.scr
    - maps/training_mapscripts/tankexplosions.scr
    - maps/training_mapscripts/tentwall_lasers.scr
    - maps/training_mapscripts/trenchbombs.scr
    - maps/training_mapscripts/trucksounds_trig.scr
    - maps/training_mapscripts/uboatmapwalls.scr
    
    - maps/UBER_mapscripts/sky_platform.scr
    - maps/UBER_mapscripts/tunnelbase_nazi.scr
    - maps/UBER_mapscripts/tunnelbase_nazi2.scr
    
    - server_planes/avatar.scr
    - server_planes/damage.scr
    - server_planes/movement.scr
    - server_planes/parachute.scr
    - server_planes/parachute_sh.scr
    - server_planes/plane_crash.scr
    - server_planes/server_fly.scr
    - server_planes/sound.scr
    - server_planes/trigger.scr
    - ui/fix.scr
    
    - settings/Advanced.txt
    - settings/flyable-planes.txt
    
    <><><> <><><>
    
    <><><> List of MOHAA Script Fixes <><><>
    
    - anim/attack.scr
    - anim/reload.scr
    - anim/stand.scr
    - anim/standflinch.scr
    - anim/standshock.scr
    
    - global/ac/command_post/commands_with_extra.scr
    - global/ambient.scr
    - global/barrel.scr
    - global/check_team_swap.scr
    - global/localization.txt
    - global/dmprecache.scr
    - global/nangle_aa_torso.st
    - global/nangle_bt_torso.st
    - global/nangle_sh_torso.st
    - global/obj_dm.scr
    - global/settings.scr
    - global/strings.scr
    
    - models/animal/german_shepherd.tik
    - models/animate/fx_mortar_water.tik
    - models/emitters/fancyfire.tik
    - models/emitters/fx_oceanspray.tik
    - models/emitters/snowdrift.tik
    - models/emitters/waterfall.tik
    - models/fx/300damage.tik
    - models/fx/bazookaexplosion.tik
    - models/fx/bazookaexplosion_dm.tik
    - models/fx/bh_human_uniform_hard.tik
    - models/fx/bh_human_uniform_lite.tik
    - models/fx/explosionPANZERIVshell.tik
    - models/fx/explosionTIGERshell.tik
    - models/fx/fx_explosion.tik
    - models/fx/fx_grenade_explosion.tik
    - models/fx/grenexp_fireball.tik
    - models/fx/m2fgrenadeexplosion.tik
    - models/fx/scriptbazookaexplosion.tik
    - models/fx/tankshellexplosion.tik
    - models/human/new_generic_human.tik
    - models/items/item_grenade_ammobox.tik
    - models/items/item_heavy_ammobox.tik
    - models/items/papers.tik
    - models/player/base/include.txt
    - models/projectiles/bazookashell.tik
    - models/projectiles/bazookashell_dm.tik
    - models/projectiles/M2FGrenade_base.txt
    - models/projectiles/panzerIVshell.tik
    - models/projectiles/steilhandgranate_base.txt
    - models/projectiles/tigercannonshell.tik
    - models/static/screwdriver.tik
    - models/statweapons/flak88turret.tik
    - models/statweapons/flak88turret_viewmodel.tik [new model]
    - models/statweapons/mg42_gun.tik
    - models/statweapons/nebelwerfer.tik
    - models/vehicles/bmwbike.tik
    - models/vehicles/bmwbike_d.tik
    - models/vehicles/european_car_grey.tik
    - models/vehicles/european_car_silver.tik
    - models/vehicles/european_car_tan.tik
    - models/vehicles/european_delivery_truck_green.tik
    - models/vehicles/european_delivery_truck_grey.tik
    - models/vehicles/european_delivery_truck_red3.tik
    - models/vehicles/fockwulffly.tik
    - models/vehicles/gmctruck.tik
    - models/vehicles/higginxtrahull.tik
    - models/vehicles/jeep.tik
    - models/vehicles/jeep_30cal.tik
    - models/vehicles/jeep_bench.tik
    - models/vehicles/kingcannon.tik
    - models/vehicles/kingtank.tik
    - models/vehicles/kingtank_all_d.tik
    - models/vehicles/kingtank_d.tik
    - models/vehicles/m3.tik
    - models/vehicles/mercedes.tik
    - models/vehicles/opeltruck.tik
    - models/vehicles/opeltruck_d.tik
    - models/vehicles/opeltruckgreen.tik
    - models/vehicles/opeltruckgreen_canopy.tik
    - models/vehicles/opeltruckgreen_d.tik
    - models/vehicles/panzer_cannon_europe.tik
    - models/vehicles/panzer_tank.tik
    - models/vehicles/panzer_tank_europe.tik
    - models/vehicles/sdkfz.tik
    - models/vehicles/sdkfz_afrika.tik
    - models/vehicles/sdkfz_desert_d.tik
    - models/vehicles/sdkfz_green_d.tik
    - models/vehicles/sdkfz_mg42.tik
    - models/vehicles/sdkfz_mg42_viewmodel.tik [new model]
    - models/vehicles/shermantank.tik
    - models/vehicles/shermantank_damaged.tik
    - models/vehicles/tigercannon.tik
    - models/vehicles/tigercannondead.tik
    - models/vehicles/tigersmgun.tik
    - models/vehicles/tigertank.tik
    - models/vehicles/tigertankdsrt.tik
    - models/vehicles/uboat.tik
    - models/weapons/bazooka.tik
    - models/weapons/m2frag_grenade_base.txt
    - models/weapons/panzerschreck.tik
    - models/weapons/silencedpistol.tik
    - models/weapons/steilhandgranate_base.txt
    
    - several missing .tga & .jpg textures added for the finished singleplayer maps.
    
    - ubersound/uberdialog.scr
    - ubersound/ubersound.scr
    
    <><><> <><><>
    
    <><><> List of UBER MAP EXTRAS scripts <><><>
    
    - maps/UBER_mapextras/dm1_cratesstuff.scr
    - maps/UBER_mapextras/dm1_teleporters.scr
    - maps/UBER_mapextras/dm2_cratesstuff.scr
    - maps/UBER_mapextras/dm2_teleporters.scr
    - maps/UBER_mapextras/dm3_cratesstuff.scr
    - maps/UBER_mapextras/dm3_teleporters.scr
    - maps/UBER_mapextras/dm4_cratesstuff.scr
    - maps/UBER_mapextras/dm4_teleporters.scr
    - maps/UBER_mapextras/dm5_cratesstuff.scr
    - maps/UBER_mapextras/dm5_teleporters.scr
    - maps/UBER_mapextras/dm6_cratesstuff.scr
    - maps/UBER_mapextras/dm6_teleporters.scr
    - maps/UBER_mapextras/dm7_cratesstuff.scr
    - maps/UBER_mapextras/dm7_teleporters.scr
    
    - maps/UBER_mapextras/obj1_cratesstuff.scr
    - maps/UBER_mapextras/obj1_teleporters.scr
    - maps/UBER_mapextras/obj2_cratesstuff.scr
    - maps/UBER_mapextras/obj2_teleporters.scr
    - maps/UBER_mapextras/obj3_cratesstuff.scr
    - maps/UBER_mapextras/obj3_teleporters.scr
    - maps/UBER_mapextras/obj4_cratesstuff.scr
    - maps/UBER_mapextras/obj4_teleporters.scr
    
    - maps/UBER_mapextras/training_cratesstuff.scr
    - maps/UBER_mapextras/training_teleporters.scr
    <><><> <><><>

    <><><> Latest Updates & Bug Fixes <><><>


    Code:
    v7.95 (4-14-2023): - Various player-damaging scripts modified for giving scorepoints to player killers and preventing teammates from being killed by vehicle/tank/boat/plane weapons or explosions.
    
    - Press JUMP to exit nebelwerfers and flak88s now, along with other drivable stuff; hold FIRE(zoom) to look around.
    - Players driving uboats can now lean left/right to aim turret projectiles up/down (only while moving), instead of only shooting them in a horizontal line (a laser is visible while adjusting aim). Lean left/right while not moving to look behind.
    
    - Claymore, Cluster Mine, Sentry Turret killstreaks will respond to enemies driving vehicles/tanks/boats, flying planes, riding as passengers, and riding as turret players, properly giving kills/scorepoints for most scenarios.
    - Sentry Turrets will not shoot at players driving vehicles/tanks/boats if there are no other passengers or turret players, since drivers cannot be killed with bullets.
    
    - Giant Bombs, Light Bombs, Nebelwerfers, Flak88s, Flyable planes' bullets/rockets/ejected planes, uboat projectiles, airstrike bombs killing players that are riding in vehicles/tanks/boats/planes will properly give kills/scorepoints to the player that launched projectiles from them.
    - Tank & Flak88 projectiles will give kills/scorepoints to the player that launched them for most other cases too.
    - Bangalore wall bombs & Radiobomb Walkies also give kills/scorepoints to the player that triggered them.
    
    - Ensured that players cannot attempt to get into vehicles whose passenger seats are all occupied.
    - Improved player reset threads when exiting vehicles/tanks/boats to better avoid players getting stuck in them when on sharply-angled sloped terrain.
    
    - Vehicle/tank "_trig" triggers are now glued to their vehicles/tanks, so vehicles/tanks and their triggers are at the exact same origin initially.
    - Tank setsizes readjusted (mainly kingtank.tik). Tank cannons are now solid.
    
    - Revamped Tank & Flak88 shooting by replacing their original projectiles (causing radiusdamage from $world after exploding) with scripted ones (modifying tank cannon .tiks) that give kills/scorepoints to the driver when needed.
    - Tank & Flak88 projectiles will no longer deal radiusdamage and kill teammates if exploding too close to at least 1 teammate, even if they're driving or riding in something.
    
    - Flyable planes that players eject from (on fire and crashing) will no longer deal radiusdamage and kill teammates if exploding too close to at least 1 teammate, even if they're driving or riding in something.
    - Players who switch teams during first-flight instructions will no longer be teleported back to the plane trigger for flying a plane (flight is cancelled).
    
    - cvars/adminstuff.scr script now uses admins' IPs in a level array variable (top of script) to prevent admins from getting auto-kicked for same-name fix & stufftext-check threads (or make sure $player[admin clientnum + 1] isadmin == 1).
    
    ---------------
    
    - The new script, global/ambience_mp.scr, recreates ambience sound changes between different environments in singleplayer maps, for multiplayer purposes.
    - Originally, global/ambient.scr would run only the "normal" soundtrack (from music/[map name].mus in Pak0.pk3), or switch between soundtracks if $player walked through any $interior or $exterior triggers.
    - Players that are inside of a volume will run stufftext "tmstop; tmloop [music filepath]" only if the music filepath is different from their current playing music.
    - Players will only change music once per 40 frames, preventing spamming when standing at ambience volume borders.
    - The script can also make players run stufftext "s_musicvolume 1" if local.forcemaxvolume = 1 in the main script, to ensure that all players hear the ambience.
    - Music volume must be greater than 0% to hear these ambient sounds.
    
    - If debug iprint = 1 (local.debug = 1), players will iprint music filepath each time a new ambient sound plays, and music will change faster (once per frame).
    - If a player walks into an area where 2+ volumes are still overlapping (should never happen, but runs if the script failed to see the overlap), the player's origin is printed and the script ends.
    - Ambience volumes are like triggers, but triggers aren't actually spawned. They should fill the whole interior of a building, or whatever 3D region that players will hear interior ambience within it (or other special ambiences).
    - Circular volumes (light houses), curved or diagonal walls (not along X-Y axis) will require several small rectangular volumes stacked like pancakes to fill in these interior areas.
    
    - Main script parameters: outside/exterior ambient music filepath, force max volume (0 = no, 1 = yes), debug iprint (0 = no, 1 = iprint music, change music faster).
    
    - First, create a "level.spawnambs = makeArray" and add various ambience volumes, starting with origin and both -/+ setsizes, then the music to be played inside it.
    - Then, run "exec global/ambience_mp.scr local.music" where "local.music" = ambience music filepath for outdoors music to be played (the default ambience to play when players are outside all other volumes).
    - If any 2 volumes are overlapping and/or touching in all 3 axes (x,y,z), then the 2nd volume is removed and replaced with 0s in the makeArray.
    - Errors print suggestions for fixing a volume's setsizes or origin if any volume is deleted.
    - If level.spawnamb does not exist or doesn't have any volumes, the map's ambience will default to "local.music".
    
    - Parameters: origin, setsize 1, setsize 2, indoors ambient music filepath.
    - Example:
    	ambience: // make sure the spawnamb volumes are not touching or overlapping!!!
    
    		level.spawnamb = makeArray // map M2L1.
    			( -1903 -3775 380 ) ( 0 0 0 ) ( 351 351 379 ) sound/amb_stereo/Amb_M2_SnowInt.mp3		// amb[1]
    			( -73 2415 360 ) ( 0 -911 0 ) ( 1528 0 423 ) sound/amb_stereo/Amb_M2_SnowInt.mp3		// amb[2]
    			( 1455 3343 380 ) ( -1487 -927 0 ) ( 0 0 226 ) sound/amb_stereo/Amb_M2_SnowInt.mp3		// amb[3]
    			( 2816 7879 -307 ) ( 0 -1108 0 ) ( 1455 0 882 ) sound/amb_stereo/Amb_M2_SubFacility.mp3		// amb[4]
    		endArray
    
    		exec global/ambience_mp.scr sound/amb_stereo/Amb_M2_SnowExt.mp3
    		//exec global/ambience_mp.scr sound/amb_stereo/Amb_M2_SnowExt.mp3 1 1 // outdoors music filepath, force max music volume, debug iprint.
    	end
    
    ---------------
    
    - M2L3 fully modded. 4 flyable planes, 1 flak88, 1 nebelwerfer, 3 tanks, 4 vehicles added to the map. 2 sets of radiobomb-walkies, 5 extra throwing knives also added.
    - 1 set of bangalore wallbombs (two-way switch) between the truck garage and Axis spawn outdoors. Airstrikes are not included in this level.
    
    - The train's splinepath is extended along the curved railroad, and extended from the train tunnel. The tunnel itself is extended all the way to the map's edge.
    - Press USE(e) near the train and the fence to ride in the train. The train moves automatically. Hold USE(e) for 1 second to exit the train (only when outside of the "player_clip" brushes).
    - Any players that exit the train while it's moving will appear on top of the train. Press USE(e) while looking down to re-enter the train. Walking too close to the edge of a moving train will kill the player.
    - When the train arrives and fully stops, all players inside the train-front and the train cab will automatically exit the train and teleported to the ground.
    - Players/vehicles/tanks that touch the moving train will be killed/destroyed.
    
    - Up to 2 players (teammates only, does not work in FFA) can ride in the front of the train (the bp44train.tik model), and they must hop in before the train is moving too fast.
    - The 2 train-front riders can shoot from the train's windows, and aim by holding FIRE(zoom). These players can be shot/killed by other players shooting at the train's windows too.
    
    - Up to 20 players (5 rows, 4 columns) can ride in the train cab, regardless of teammates. The riders can shoot and aim by holding FIRE(zoom), or exit the train cab by holding USE(e).
    - When train starts moving (only when a player gets into the train-front, the bp44train), all players inside the train cab will be locked into 1 of 20 available seats.
    - If all seats are filled, the extra players are teleported back outside of the cab on the ground.
    
    - If players on opposite teams are riding in the train cab together, anywhere they shoot will cause damage to their riding enemies since the damage-respoding trigger covers the whole cab's interior.
    - The train cab rider in the 1st seat (middle row, closest to door) can toggle opening/closing the solid traincab door by Leaning Left/Right
    - If the train cab door is closed, players inside the cab cannot be shot/killed or shoot/kill others.
    
    - 2 vehicle teles for vehicles to enter/exit the truck garage. Various extra roads outlined by lasers spawned in extra map areas.
    - Other lasers on the rooftops help prevent players from falling off edges.
    
    - Thick green lasers on the ground outline "player_clip" brushes from the map's .bsp (brushes cannot be removed), since players cannot walk through them.
    - Vehicles/tanks can drive through them, but players that exit them while inside these brushes will get trapped (respawned after 3 seconds).
    - Building rooftops and ledges are solified with "script_origin"s and accessible via teles from the ground (glitching can occur when standing still. To reduce entity count, smaller "script_model"s were not used).
    
    - Numerous sound entities added throughout the Allies spawn and truck garage: 3 generators, 16 transformers, 8 air vents.[Details in "Singleplayer Map Mods"]
    <><><> <><><>

    (4-16-2023): - Prevented dropped bombs in bomberplane.scr and bomberplane_nospline.scr from killing the airstrike planes.
    - Flyable planes will no longer blow up if they touch a projectile owned by a teammate (not including in FFA), and kills/scorepoints will be given to the projectile's owner that touches/blows up any planes.
    - Kills/scorepoints are given to those whose projectiles hit and destroy any player's plane.
    - Fixed kills/scorepoints not counting towards those who kill players using nebelwerfers or riding the M2L3 train.
    - changed mohdm2 and obj_team1's outdoor ambiences. Fixed some ambience sizes in mohdm7.

    More updates are in older README files. If I find any more errors before the next round of SP maps are fully modded, I'll update a new version here again.
    Attached Files Attached Files
    Last edited by Searingwolfe; Today at 11:17 AM. Reason: v7.95 on 4-16-2024 (lastest)

  2. #2

    Default

    Hi, I didn't read the whole post but Wow, great work.
    I love the super modded servers

    and nice to know you are still into moh scripting after all this years

  3. #3

    Default

    Here a new update to the UBER mods (bumping), with everything I've made/edited so far. Most notably, playertank.scr & playervehicle.scr finally got a script overhaul to remove all the spamming errors, and fix the server-crash issue if tank drivers leave the game.
    Very useful new CVARs added, such as entitycount.scr for counting how many entities are in a map by typing in "entities 1" to the server's console window. Due to a Reborn bug, this script can only count up to 869 entities [getentity() only goes from 0 - 868].

    If anyone has more ideas for adding new CVARs, fixing up old scripts like I did with tanks, jetpacks, etc, feel free to let me know.
    Unless I find more random bugs, there won't be a new update to this mod for a while, until I finish modding all 30+ singleplayer maps.
    Training & all its mods are now ready for Reborn servers (keep entity count below 725 in this level for Reborn).
    Last edited by Searingwolfe; May 4th, 2023 at 11:40 AM.

  4. #4

    Default

    Bumping again because v7.80 is FINALLY uploaded. New stuff includes more developer/modding cvars, admin-related cvars, g_ubergametype (ft, cyb, snd, or 0 for TDM/FFA only) to switch between the available UBER game modes (Freeze Tag, Cyber Attack, Search & Destroy, Basebuilder).
    Other cvars like g_ubermods (0 for all off, 1 for only a few mods, 2 for all on), and g_throwingknives (0 for off, 1 for on) are added for enabling/disabling some mods.
    The admin cvars may still need work, like making HUD nicer for "votekick 27" or "votekick Searingwolfe". Same-name fix added to prevent 2+ players having the same name (exceptions for admins are in cvars/adminstuff.scr, where admins' IP addresses must be added to the array, so they can have name priority).

    Besides that, most of the script changes & bug fixes are for the drivable flak88s, nebelwerfers, tanks, and vehicles. Vehicles have a bunch of stuff added, such as headlights & passengers that can ride along with the driver (teammates only, no passengers allowed in FFA). More of these will be added to more singleplayer maps that I haven't modded yet.
    Enjoy!
    Last edited by Searingwolfe; September 13th, 2023 at 03:54 PM.

  5. #5

    Default

    nice work --- thanks

Tags for this Thread

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •