Server-Side Extended-Gametypes MOD Version 1.1.4 For Medal of Honor (11-15-04) by Mark Follett (Mefy) mef123@geocities.com www.planetmedalofhonor.com/mefy Description ----------- This mod allows you to host seven new gametypes for the stock Medal of Honor maps: Capture-The-Flag, Freeze-Tag, Freeze-Tag-Objective, Freeze-Tag-CTF, Freeze-Tag-TOW, Demolition, and Freeze-Tag-Demolition. A brief description of each gametype: *Capture-The-Flag* (for all Allied Assault and Spearhead maps) To score a point your team must capture and bring the enemy team's flag to your own team's base and hold it there for 15 seconds. The first team to score 4 points, or the team with the most points at the end of the round, wins the round. The default round time is 12 minutes. *Freeze-Tag* (for all Allied Assault and Spearhead maps) Each team must freeze all the players from the opposing team to win the round. To freeze a player, simply kill them. Once frozen, a player can't respawn until one of their teammates melts their frozen body by either standing next to it for a couple seconds, or firing their 'melting laser' at it. This gametype was inspired by Darrell Bircsak's Quake 3 Freeze-Tag MOD. (http://www.planetquake.com/freeze/) *Freeze-Tag-Objective* (for all Allied Assault Objective maps) This is a combination of Freeze-Tag and a standard Objective-Match game. The attacking team must either freeze the entire defending team or complete their objectives. The defending team must either freeze the entire attacking team or successfully defend their objectives for the entire duration of the round. *Freeze-Tag-CTF* (for all Allied Assault and Spearhead maps) This is a Capture-The-Flag game with Freeze-Tag type respawning. Each team must capture the flag the most times to win the round. While both flags are at their own bases, Freeze Tag respawning will be active. Once a flag is removed from its base by the opposing team, then full respawning will be enabled until it is returned back. If a team is killed while in Freeze-Tag respawning mode, then the other team will have several free seconds to advance before the killed team will respawn. *Freeze-Tag-TOW* (for all Spearhead and Breakthrough TOW maps) This is a Tug-of-War game with Freeze-Tag type respawning. Each team must complete its objectives to win the match like a regular Tug-of-War game. When an objective is captured, both teams will be automatically melted. If a team is killed, then the other team will have several free seconds to advance towards their objectives before the killed team respawns. Once a team's base has been destroyed they will lose the game if all their players are killed. *Demolition* (for all Allied Assault maps) This is similar to an objective game except both teams have a base to defend. The team that finds and destroys the opponent's base while also successfully defending their own base wins the round. *Freeze-Tag-Demolition* (for all Allied Assault maps) This is Demolition mode with Freeze-Tag-Respawning. Kill the enemy team or destroy their base to win the round. The rules of each gametype can be customized by setting cvars- see below for instructions. The mod is also designed to allow modders to easily set up the gametypes for custom maps. This mod is a server-side mod, meaning clients do not have to download anything to play it on your server! Installation ------------ There are currently 2 versions available for download. One is for Allied Assault, and the other is for Spearhead and Breakthrough. Make sure you have the correct version: user-mefy-extgametypes-1_1_4-AA.pk3 (for Allied Assault) user-mefy-extgametypes-1_1_4-SH.pk3 (for Spearhead and Breakthrough) For Allied Assault, place the pk3 file in your MOHAA/main directory. For Spearhead, place the pk3 in your MOHAA/mainta directory. For Breakthrough, place the pk3 in your MOHAA/maintt directory. Hosting a Game -------------- If the map is one of the stock dm maps (mohdm#) or Spearhead tow maps, then run that map in Round-Based-Match mode in order to enable the new gametypes. If the map is one of the stock objective maps (obj_team#), then run the map in Objective mode. Running a stock dm map in Free-For-All or Team-Match modes will make the map function as normal. For Freeze-Tag-TOW, run the map in Tug-of-War mode. The default gametype that will be played is Freeze-Tag for the dm maps, Freeze-Tag-Objective for the obj maps, and Freeze-Tag-TOW for the tow maps. If you want to activate the other gametypes for a map, you must set the cvar "g_extgametype" to the gametype that you want to play: set g_extgametype ctf // Capture-The-Flag set g_extgametype ft // Freeze-Tag set g_extgametype ftobj // Freeze-Tag-Objective set g_extgametype ftctf // Freeze-Tag-CTF set g_extgametype fttow // Freeze-Tag-TOW set g_extgametype dem // Demolition set g_extgametype ftdem // Freeze-Tag-Demolition If you want to play Round-Based-Match instead of one of the new gametypes: set g_extgametype rbm // Round-Based-Match Or if you want to play Objective-Match: set g_extgametype obj // Objective-Match You can also set "g_extgametype" to the other standard gametypes: set g_extgametype ffa // Free-For-All set g_extgametype tdm // Team-Match set g_extgametype tow // Tug-of-War set g_extgametype lib // Liberation When "g_extgametype" is set, it will override whatever you set "g_gametype" as. For example, if "g_extgametype" is set to "ctf" and "g_gametype" is "1", it will run Capture-The-Flag, not Free-For-All. You can unset "g_extgametype" by setting it to "". You can also set a map-specific cvar for setting the gametype for a particular map. For example, set g_extgametype_mohdm1 ctf will activate Capture-The-Flag for Southern France. This is used in a mixed gametype rotation. See the included sample server config files for examples on how to set up a server for hosting each of the gametypes, and also for setting up a map rotation with multiple gametypes: ctf.cfg - Capture-The-Flag config ft.cfg - Freeze-Tag config ftobj.cfg - Freeze-Tag-Objective config ftctf.cfg - Freeze-Tag-CTF config fttow.cfg - Freeze-Tag-TOW config dem.cfg - Demolition config ftdem.cfg - Freeze-Tag-Demolition config mixed-types-aa.cfg - Mixed Gametypes config for Allied Assault mixed-types-sh.cfg - Mixed Gametypes config for Spearhead and Breakthrough only Special Notes ------------- For Freeze-Tag-TOW, this mod will automatically turn off the built-in respawning delay feature of Spearhead and Breakthrough (sv_team_spawn_interval will be set to 0), since this interferes with Freeze-Tag respawning. Do not turn it back on while in the middle of a Freeze-Tag-TOW round or players may be able to hold up the round if they don't spawn into the game. If you are hosting a mixed gametype rotation where you want respawn delay on other maps in the rotation, use a VSTR rotation where you set "sv_team_spawn_interval" back to the desired value for the specific map. Troubleshooting --------------- If you are having trouble getting the mod to run, please read the Hosting FAQ (www.planetmedalofhonor.com/mefy/hosting-faq.html) which addresses the common problems. If you are running other mods (like map fix mods), they may be conflicting with this mod. If you're still having trouble try posting a question in the mod forums which you can find at www.planetmedalofhonor.com/mefy. Uninstall --------- Just remove the user-mefy-extgametypes... pk3 file from your server's directory. General Customization --------------------- The game can be customized by adjusting the following cvars. After setting a cvar, you must restart the game for the changes to take effect. Below is a list of cvars that can be set for each gametype. NOTE that you do not need to set any of these cvars to get the game to run-- they are only meant for changing the rules from the default settings. Global CVARS ------------ * "g_mef_disable" Default: 0 Set this to 1 in order to disable the Extended Gametypes mod completely. * "g_mef_team_spawn_interval" Default: 0 This controls respawning delay for a Capture-The-Flag or Demolition game and works similar to the Spearhead and Breakthrough wave respawning feature. Set this to the number of seconds a player must wait after they are killed before they can respawn again. Set this to 0 to disable wave respawning. * "g_mef_observe" Default: "bodies" This setting controls how players are allowed to spectate the game while they are dead. The format is a list of options separated by spaces: "freefloat" -- Allows players to freefloat in the map while they are dead. "bodies" -- Allows players to spectate their own team's frozen bodies while they are dead. "builtin" -- Enables the "built-in" spectating mode. In this mode you will be able to see dead player names as red on the scoreboard and gun turrets will be available in the map. However, you will no longer be able to free-float while spectating or be able to spectate from frozen bodies. "none" -- Set the cvar to "none" to disable both freefloating and spectating of frozen bodies. * "g_cinematics_off" Default: 0 Set this cvar to 1 in order to disable the cinematics at the end of a Tug-of-War or Freeze-Tag-TOW game. Freeze-Tag and Freeze-Tag-Objective CVARS ----------------------------------------- Use the "g_ft_" cvars to control the settings for a Freeze-Tag game. Use the "g_ftobj_" cvars to control the settings for a Freeze-Tag-Objective game. * "g_ft_suddendeath" and "g_ftobj_suddendeath" Default: 1 Set this to the number of minutes you want for the sudden death round. Once sudden death begins, players will no longer be able to respawn. In a Freeze-Tag game, if players are still alive after the sudden death round completes, the team with more players alive will win the round. The sudden death time is included in the round time. For example, if roundlimit is set to 10 and sudden death is set to 2, then there will be 8 minutes of normal Freeze-Tag, then 2 minutes of sudden death. Set this to 0 to disable sudden death. Generic CVARS for all Freeze-Tag gametypes ------------------------------------------ These cvars apply to all gametypes with Freeze-Tag respawning: Freeze-Tag, Freeze-Tag-Objective, Freeze-Tag-CTF, and Freeze-Tag-TOW. Use the "g_ft_" cvars to control the settings for a Freeze-Tag game. Use the "g_ftobj_" cvars to control the settings for a Freeze-Tag-Objective game. For Freeze-Tag-CTF, use the "g_ftctf_" cvars. For Freeze-Tag-TOW, use the "g_fttow_" cvars. * "g_ft_melttime", "g_ftobj_melttime", "g_ftctf_melttime", and "g_fttow_melttime" Default: 20 This cvar controls the amount of time it takes to melt a player (in tenths of a second). This is how much time it would take to melt if a player was standing right next to a frozen body. If you are using the melting laser to melt a body, then the time will increase with the distance you are from the body. * "g_ft_meltradius", "g_ftobj_meltradius", "g_ftctf_meltradius", and "g_fttow_meltradius" Default: 100 This controls how close you must be standing to a frozen body in order to melt it (in map units). * "g_ft_meltgun", "g_ftobj_meltgun", "g_ftctf_meltgun", and "g_fttow_meltgun" Default: 1 Set this to 0 to disable the melting laser. Players would then have to stand next to a frozen body to melt it. * "g_ft_ftannounce", "g_ftobj_ftannounce", "g_ftctf_ftannounce", and "g_fttow_ftannounce" Default: "hudmessages frozen melted bodycodes" This setting controls the announcing of the frozen body locations for given events. The format is the list of events in which to announce the location. The possible events are: "hudmessages" -- Announces when a player is frozen or melted. "frozen" -- Announce the body's location when a player is frozen. "melted" -- Announce the body's location when a player is melted. "bodycodes" -- Display all of the frozen body locations in abbreviated format on the HUD in the lower left corner of the screen. "none" -- Set the cvar to "none" to disable all location announcements. Note that body locations will only be announced for maps that have a map description set up (currently all Allied Assault dm maps, obj_team1, and obj_team4). If a map doesn't have a description available then you will only get generic announcements without locations. Capture-The-Flag and Freeze-Tag-CTF CVARS ----------------------------------------- Use the "g_ctf_" cvars to control the settings for a Capture-The-Flag game. Use the "g_ftctf_" cvars to control the settings for a Freeze-Tag-CTF game. * "g_ctf_respawn" Default: 1 Set this cvar to 0 in order to enable a non-respawning Capture-The-Flag game. While both flags are at their home bases, respawning will be disabled. Once a flag is captured from it's home base, then respawning will be enabled in order to allow that flag's team to re-capture it before the enemy team runs it back to score. If a team is killed while in non-respawning mode, the other team will have several free seconds in order to advance before the killed team will respawn. This cvar has no effect on a Freeze-Tag-CTF game. * "g_ctf_pointlimit" and "g_ftctf_pointlimit" Default: 4 This sets the number of points a team must score in order to win a round. If time runs out before the point limit is reached, then the team with the most points will be the winner. Setting this to 0 will allow the round to continue until time runs out, then determine a winner. Use the standard 'roundlimit' cvar to control the length of the round. The default round time is 12 minutes. * "g_ctf_suddendeath" and "g_ftctf_suddendeath" Default: 5 If time runs out and the score is tied, a sudden death round will begin. The next team to score will win the round. Set this option to the number of minutes the sudden death round should last. If the sudden death round ends with the score still tied, then a 'final' sudden death round will occur (see below). Setting this to 0 will start a final sudden death round immediately. * "g_ctf_fsuddendeath" and "g_ftctf_fsuddendeath" Default: 3 If time runs out in sudden death, then a final sudden death round will begin. This is the same as sudden death except that respawning will be disabled. The next team to score or kill all of the enemy team will win the round. Set this option to the number of minutes the final sudden death round should last. If the final sudden death round ends with the score still tied and players still alive, then a draw will occur. Setting this to 0 will force a draw immediately. * "g_ctf_returnboth" and "g_ftctf_returnboth" Default: 0 Set this to 1 in order to require a team to bring both flags to their own base in order to score a point. When set to 0, they only have to bring the enemy team's flag to their own base to score. * "g_ctf_countdown" and "g_ftctf_countdown" Default: 15 This sets the number of seconds a team must hold the flags at their base in order to score a point. Setting this to 0 will cause them to instantly score when the flags are brought home. Setting this to a large value will give the opposing team a chance to re-capture their flag and prevent a score. The scoring team will have to guard their base well in order to hold off the opposing team. Set this to a small value to make scoring easy. * "g_ctf_capturepress" and "g_ftctf_capturepress" Default: 20 This sets the duration of the button press for capturing a flag from the enemy's base (in tenths of a second). Setting this to -1 means that a button press is not required- you can walk up to the flag and capture it immediately. Set this to a large value to make it difficult to capture a flag from an enemy team's base. A player will have to stand in front of the base while pressing the button and be vulnerable to attack. This allows snipers to guard a base. Setting to zero is not recommended-- it will be too easy for the opposing team to re-capture their flag and prevent a score. * "g_ctf_returnpress" and "g_ftctf_returnpress" Default: 15 This sets the duration of the button press for returning a flag to home base (in tenths of a second). Setting this to -1 means a button press is not required- simply walk up to the spot where the flag should go and it will attach to the base immediately. Set this to a large value to make it difficult to return a flag to home base, and keep the snipers happy. * "g_ctf_drophold" and "g_ftctf_drophold" Default: -1 This sets how long a player must hold the 'use' key in order to drop a flag (in tenths of a second). Setting this to -1 will disable intentional flag dropping. Setting this to a value of 20 would enable flag dropping, and require a player to hold the use key for 2 seconds in order to drop it. This would allow players to intentionally hide a flag from the opposing team, or allow a player to hand off their flag to a teammate. * "g_ctf_friendlyreturn" and "g_ftctf_friendlyreturn" Default: 7 This determines how much time (in seconds) after a player captures their own team's flag that it will return automatically to their own base. Setting this to 0 will cause the flag to immediately return home. Setting this to -1 means that the flag will not return home. Setting this to a large value means that a player needs to stay alive for awhile after they pick up their team's flag in order for it to return to home base. Disabling flag return by setting to -1 will allow a team to hide their own flag by having a teammate carry the flag and hide somewhere. * "g_ctf_groundreturn" and "g_ftctf_groundreturn" Default: 25 This determines how much time (in seconds) after a flag sits on the ground that it will automatically return to its base. Setting this to 0 will cause the flag to immediately return home. Setting this to -1 means that the flag will not return home. Setting this to a large value will give a team the chance to recapture a flag and continue their progress if their flag carrier drops the flag by being killed. Setting this to 0 would mean that the flag carrier must stay alive during the entire journey back to home base. Setting to -1 is not recommended-- the flag could potentially be lost somewhere for the remainder of the round. * "g_ctf_enemyreturn" and "g_ftctf_enemyreturn" Default: -1 This determines how much time (in seconds) after a flag is captured by the enemy team that it will automatically return to its base. Setting this to -1 means that the flag will not return home. * "g_ctf_dropdelay" and "g_ftctf_dropdelay" Default: 20 This sets the amount of time (in tenths of a second) after a flag is dropped that it cannot be picked up by any player. The flag will be semi-transparent while it is disabled. Set this to a large value to lengthen the amount of time players will fight over a flag once its dropped. Setting to 0 is not recommended and may make certain functions not work. * "g_ctf_announce" and "g_ftctf_announce" Default: "dropped atbase" This setting controls the announcing of the flag positions for given events. The format is the list of events in which to announce the flag position. The possible events are: "captured" -- Announce the flag position when a player picks up a flag. When not set, the position will be a generic 'Axis/Allied Player' "dropped" -- Announce the flag position when the flag is on the ground. When not set, the position will be 'Ground' "atbase" -- Announce the flag position when the flag is at a team's base. When not set, the position will be 'Axis/Allied Base' "abbr" -- Include this option to announce the flag positions in abbreviated format. "none" -- Set the cvar to "none" to disable all flag position announcements. Note that flag positions will only be announced for maps that have a map description set up (currently all Allied Assault dm maps, obj_team1, and obj_team4). If a map doesn't have a description available then you will only get the generic announcements. Setting these options will keep the game moving forward by showing players where the flags are. * "g_ctf_announcefreq" and "g_ftctf_announcefreq" Default: 8 If announcing the flag position when "captured" is enabled, this setting controls the frequency that the flag position is updated. Set to the number of seconds between updates of the flag position. If set to 0, then only the position at the spot of capture will be announced. Setting this to a small value will make it impossible for the flag carrier to hide or stay alive. Set this to a large value to give them a chance but not allow them to completely hide. Demolition and Freeze-Tag-Demolition CVARS ------------------------------------------ Use the "g_dem_" cvars to control the settings for a Demolition game. Use the "g_ftdem_" cvars to control the settings for a Freeze-Tag-Demolition game. * "g_dem_respawn" Default: 0 (1 for Stalingrad) Set this cvar to 1 in order to enable a full respawning Demolition game. This cvar has no effect on a Freeze-Tag-Demolition game. * "g_dem_settime" and "g_ftdem_settime" Default: 50 Set the amount of time (in tenths of a second) it takes to plant a bomb. * "g_dem_defusetime" and "g_ftdem_defusetime" Default: 35 Set the amount of time (in tenths of a second) it takes to defuse a bomb. * "g_dem_ticktime" and "g_ftdem_ticktime" Default: 45 (60 for Stalingrad) Set the amount of time (in seconds) it takes for a bomb to explode. * "g_dem_activatedelay" and "g_ftdem_activatedelay" Default: 20 Set the amount of time (in seconds) before the bombs become activated at the start of the round. * "g_dem_attacker" and "g_ftdem_attacker" Default: "both" This determines which team will be the attacking team and which team will be the defending team. The possible options are: "both" -- enables a standard double-objective game where both teams must try to blow up the other team's base "allies" -- the allies must blow up the axis team's base "axis" -- the axis must blow up the allied base "swap" -- swaps between the axis team and allied team attacking each round * "g_dem_suddendeath" and "g_ftdem_suddendeath" Default: 1 Set this to the number of minutes you want for the sudden death round. Once sudden death begins, players will no longer be able to respawn. If players are still alive after the sudden death round completes, the team with more players alive will win the round. Set this to 0 to disable sudden death. Map-Specific Customization -------------------------- The game can be further customized by having map-specific rules. In order to do this, set a cvar named "g___settings" to a list of settings to be used for the map. For example: set g_ctf_mohdm2_settings "returnboth: 1 drophold: 20" will adjust the Capture-The-Flag rules for Destroyed Village to require players to return both flags to their base and enable intentional flag dropping. Another example: set g_ft_mohdm1_settings "meltgun: 0 melttime: 30 ftannounce: none" will adjust the Freeze-Tag settings for Southern France to disable the melting laser, set the melting time to 3 seconds, and disable all announcing of body locations. If a map-specific setting is set, it will override the general setting cvar. You can review the current settings during any game by reading the cvar "g__currentsettings", which will give a list of all settings. Extended-Gametypes for Custom Maps ---------------------------------- Setting up these new gametypes for a custom map is easy. Most of the code is placed in library files that you simply need to distribute with your custom map. The library files are as follows: /global/libmef/bases.scr /global/libmef/bomb.scr /global/libmef/ctf.scr /global/libmef/dem.scr /global/libmef/ft.scr /global/libmef/hud.scr /global/libmef/mapdesc.scr /global/libmef/respawn.scr /global/libmef/spawn.scr /global/libmef/tow.scr /global/libmef/util.scr You will then need to modify your map script to initialize the new gametypes. Use one of the stock map script files included in this map pack as a template for your own map's script file. Also see the mod forums for a tutorial on how to set up a map script for the new gametypes. Other useful cvars ------------------ g_ctf_version -- is set to which version of CTF or FTCTF you are running g_ft_version -- is set to which version of FT, FTOBJ, and FTTOW you are running g_dem_version -- is set to which version of DEM or FTDEM you are running g_ctf_currentsettings -- lists the current settings for CTF g_ft_currentsettings -- lists the current settings for FT g_ftobj_currentsettings -- lists the current settings for FTOBJ g_ftctf_currentsettings -- lists the current settings for FTCTF g_fttow_currentsettings -- lists the current settings for FTTOW g_dem_currentsettings -- lists the current settings for DEM g_ftdem_currentsettings -- lists the current settings for FTDEM g_mef_devmode -- Set this to 1 to enable the mod developer mode. This will start the round immediately so you can see where the base locations are for CTF or DEM. Useful if you want to tweak settings or change base locations by yourself. References ---------- http://www.planetmedalofhonor.com/rjukanproject/ http://www.alliedassault.com http://www.alliedassault.com/community/guides/BitsnCK/ http://www.alliedassault.us http://www.mohadmin.com http://www.modtheater.com http://www.planetmedalofhonor.com/map/ Special Thanks to: ------------------ Kaotik of '=EAF= Clan': for setting up the gametypes for the Spearhead and Breakthrough maps and continued support in the mod forums. Thank you! Hecktic of 'Clan DWR': for providing test servers, hosting the mod forums, providing a download mirror, and overall support of the mod. Tick of 'Clan DWR': for help with setting up and administering the mod forums since I'm clueless with phpnuke =) Darrell "Doolittle" Bircsak: for creating the original Freeze Tag for Quake 3: providing the inspiration for this mod. Resurrection of 'Clan FSK', Dozer of 'Clan DOGS', and Mrs Night Stalker of 'Clan FS': for help with testing the mod. PlanetMedalofHonor: for hosting the web site. Creaper of 'Clan [mme]': for creating the initial Freeze-Tag-CTF mod. Killmore of 'Clan QBM': for setting up Freeze-Tag version 1.0 for the rest of the stock Allied Assault maps. jv_map: for valuable ideas on detecting when a player spawns and detecting a players current weapon. Doc of 'Clan |NaS|': for creating a server config maker that supports the new gametypes. ChinQ of 'Clan |XSR|' and Posse of 'Clan D|R': for valuable feedback. [BC]Olie and [BC]Nappyoo: for hosting the early versions of these mods in demo. |KAC|Carnivore: for hosting the first server (Just for Fun) in Allied Assault. Nypd030 of 'Clan BR1': for hosting the first CTF and Freeze-Tag servers in Spearhead and setting up a CTF ladder in Teamwarfare. Kalti of Uberclan.com: for providing publicity for this mod and providing downloads of the mod. dukerz: for help with testing of the early versions of the mod. Finally, a big thanks to all of the clans that have hosted this mod and allowed people to enjoy the new gametypes!