diff --git a/.gitignore b/.gitignore index 3b0802cb..9e5d16e2 100644 --- a/.gitignore +++ b/.gitignore @@ -4,3 +4,6 @@ **/Release **/SHDebug *vcxproj.user +*.tlog +code/base/* +code/demo/* \ No newline at end of file diff --git a/README - SpeedOutcast.md b/README - SpeedOutcast.md new file mode 100644 index 00000000..f1a199fd --- /dev/null +++ b/README - SpeedOutcast.md @@ -0,0 +1,233 @@ +# Speed Outcast + +Source port of the singleplayer of Star Wars Jedi Knight II: Jedi Outcast. +Focuses on staying true to the original game to be used for speedrun purposes. +See the [speedrun.com leaderboard](https://www.speedrun.com/jk2) for more information. + +Based on the original source code released by Raven, see README.txt. + +## New Console Variables + +### Input + +#### `in_mouse_raw` (0 or 1) + +Use raw mouse input. Only applies after an `in_restart` (or after restarting the game). +Default: `1`. + +### HUD + +#### `cg_drawOverbounceInfo` (0 or 1) + +Draw overbounce probabilities, G is for Go, J is for Jump. +Default: `0`. + +#### `cg_drawSecrets` (0 or 1) + +Show a tracker for found versus total number of secrets on the current level. +Default `0`. + +#### `cg_drawServerFPS` (0 or 1) + +Show current value of `sv_fps`. +For verification of speedruns for the leaderboards. +Default: `1`. + +#### `cg_drawSpeedrunTotalTimer` (0-3) + +Draw a total run timer. +Higher values show more decimals. +Default: `0`. + +#### `cg_drawSpeedrunLevelTimer` (0-3) + +Draw a current level timer. +Higher values show more decimals. +Default: `0`. + +#### `cg_drawJumpHelper` (0 or 1) + +Draw a helper for correctly timing jump release and crouch jumping. + +#### `cg_jumpHelperX` (#) + +Horizontal position of the jump helper. +Default: `0.0` (center of the screen). + +#### `cg_jumpHelperY` (#) + +Vertical position of the jump helper. +Default: `0.0` (center of the screen). + +#### `cg_jumpHelperWidth` (#) + +Width of the jump helper. +Note that this becomes height when using the vertical jump helper (`cg_jumpHelperHorizontal 0`). +Default: `300`. + +#### `cg_jumpHelperHeight` (#) + +Height of the jump helper. +Note that this becomes width when using the vertical jump helper (`cg_jumpHelperHorizontal 0`). +Default: `20`. + +#### `cg_jumpHelperHorizontal` (-1, 0 or 1) + +Whether to draw the jump helper horizontally left-to-right (`1`), horizontally right-to-left (`-1`) or vertically bottom-to-top (`0`). +Default: `1`. + +#### `cg_jumpHelperMirror` (0 or 1) + +Whether to mirror the jump helper. +Mirrors horizontally when drawing horizontally, vertically otherwise. +Default: `1`. + +#### `cg_jumpHelperAutoScale` (0 or 1) + +Whether to rescale the jump helper to the same size for each force level. +Default: `0`. + +#### `cg_jumpHelperCrouch` (0 or 1) + +Show an additional height section for crouch jumping, appended to normal jump height. +Default: `1`. + +#### `cg_jumpHelperCurrentScale` (#) + +Scale of the indicator for the current height within the jump helper. +Negative values draw from top to bottom, positive values from bottom to top. +Default: `0.5`. + +#### `cg_drawSpeed` (0 or 1) + +Draw the current player speed. +Default: `0`. + +#### `cg_speedScale` (#) + +Scale of the text for speed display. +Default: `0.9`. + +#### `cg_speedX` (#) + +Horizontal offset for drawing speed text, relative to the center of the screen. +Default: `0.0` (center of the screen). + +#### `cg_speedY` (#) + +Vertical offset for drawing speed text, relative to the center of the screen. +Default: `75.0` (Slightly below center of the screen). + +#### `cg_drawStrafeHelper` (0 or 1) + +Draw a strafe helper. +Default: `0`. + +#### `cg_strafeHelperCenter` (0 or 1) + +Put the strafe helper in the center of the screen. +Default: `1`. + +#### `cg_strafeHelperCenterMarker` (0 or 1) + +Draw a marker in the center of the strafe helper. +Default: `1`. + +#### `cg_strafeHelperHeight` (#) + +Height of strafe helper bar. +Default: `20.0`. + +#### `cg_strafeHelperScale` (#) + +Horizontal scale of the strafe helper. +Angles correspond directly to the field of view if this scale is set to `360/cg_fov`. +Default: `4.0`. + +#### `cg_strafeHelperSpeedScale` (#) + +Scale of the text for speed display tied to strafe helper. +Note that this shows the speed after friction but prior to acceleration, as this is what is relevant for optimal strafing. +It is not the intuitive current player speed. +For that, see `cg_drawSpeed`. +Default: `0.9`. + +#### `cg_strafeHelperSpeedX` (#) + +Horizontal offset of the text for speed display, relative to the center of the screen. +Default: `0.0` (center of the screen). + +#### `cg_strafeHelperSpeedY` (#) + +Vertical offset of the text for speed display, relative to the strafe helper. +Default: `0.0` (directly under the strafe helper). + +#### `cg_strafeHelperY` (#) + +Vertical position of the strafe helper. +Default: `50.0`. + +#### `cg_strafeHelperColor[...]` (0.0 - 1.0) + +Color components (red, green, blue, alpha) for different strafe helper elements. +These are `Accelerating`, `Optimal`, `CenterMarker` and `Speed`. +Colors can be set more conveniently with the corresponding commands. + +### Cosmetics + +#### `g_saber_color` (color) + +Set saber color. +Valid colors: "red", "orange", "yellow", "green", "blue", and "purple". +Default: "blue" + +### Gameplay + +#### `g_speedFactorLanding` (0 or 1) + +To play with factors to multiply speed by on landing. +A value of `0.5` will obtain Jedi Academy behaviour, `1.0` is the original behaviour in Jedi Outcast. +**Cheat protected**. +Default: `1`. + +#### `g_selfKnockback` (0 or 1) + +Allow players to damage boost themselves with explosive weapons. +**Cheat protected**. +Default: `0`. + +#### `sv_speedrunModeIL` (0 or 1) + +Individual-level run mode. +When set to `1`, ingame timer will reset every time an autosave is loaded. +When set to `0`, ingame timer will reset only when `kejim_post` is loaded. +Default: `0`. + +#### `sv_speedrunModeCheckpoint` (0 or 1) + +Mode for running from quicksave to a specified checkpoint on a map. +Coordinates can be set with the command `settimedcheckpoint x1 y1 z1 x2 y2 z2`. +When the player enters the box spanned by the two points `(x1 y1 z1)` and `(x2 y2 z2)` the run is finished. +If `x2`, `y2` and `z2` are omitted, a checkpoint of reasonable size will be created at `(x1 y1 z1)`. +Default: `0`. + +#### `sv_speedrunModeCheckpointSave` (0 or 1) + +Create an automatic save when a checkpoint is reached in checkpoint mode. +Default: `0`. + +## New Commands + +### HUD + +#### `jumpHelperColor[...] ` (components in range 0.0 to 1.0) + +Sets the color for one of the jump helper elements `Background`, `Crouch`, `CrouchExtend`, `Extend`, `Optimal`, `Current` or `Cancel` to the given red, green, blue and alpha values. + +#### `speedColor ` (components in range 0.0 to 1.0) + +Sets the color for the speed display to the given red, green, blue and alpha values. + +#### `strafeHelperColor[...] ` (components in range 0.0 to 1.0) + +Sets the color for one of the strafe helper elements `Accelerating`, `Optimal`, `CenterMarker` or `Speed` to the given red, green, blue and alpha values. diff --git a/README.md b/README.md index f1a199fd..b3d79f99 100644 --- a/README.md +++ b/README.md @@ -1,233 +1,131 @@ -# Speed Outcast +# Speed Outcast - Randomizer -Source port of the singleplayer of Star Wars Jedi Knight II: Jedi Outcast. -Focuses on staying true to the original game to be used for speedrun purposes. +Fork of SpeedOutcast, a source port of the singleplayer of Star Wars Jedi Knight II: Jedi Outcast. +Focuses on staying true to the original game and SpeedOutcast / speedrun.com rules to be used for speedrun purposes. See the [speedrun.com leaderboard](https://www.speedrun.com/jk2) for more information. -Based on the original source code released by Raven, see README.txt. +Based on the original source code released by Raven, see `README.txt`. +Based on the source port of Star Wars Jedi Knight II: Jedi Outcast named SpeedOucast, see `README - SpeedOutcast.md`. -## New Console Variables - -### Input - -#### `in_mouse_raw` (0 or 1) - -Use raw mouse input. Only applies after an `in_restart` (or after restarting the game). -Default: `1`. -### HUD - -#### `cg_drawOverbounceInfo` (0 or 1) - -Draw overbounce probabilities, G is for Go, J is for Jump. -Default: `0`. - -#### `cg_drawSecrets` (0 or 1) - -Show a tracker for found versus total number of secrets on the current level. -Default `0`. - -#### `cg_drawServerFPS` (0 or 1) +## New Console Variables -Show current value of `sv_fps`. -For verification of speedruns for the leaderboards. -Default: `1`. +### Randomizer -#### `cg_drawSpeedrunTotalTimer` (0-3) +#### `cg_enableRandomizer` (0 or 1) -Draw a total run timer. -Higher values show more decimals. +Enable or disable the NPC and items randomizer. +Only this was designed to be predictable. Default: `0`. -#### `cg_drawSpeedrunLevelTimer` (0-3) +#### `cg_enableRandomizerEnhancements` (0 or 1) -Draw a current level timer. -Higher values show more decimals. +Enable or disable the other more 'exotic' randomized elements in the game. +Check `List of addition for the 'exotic' Randomizer` below for more details. +Need `cg_enableRandomizer` to be 1 to work. +This was not designed to be predictable but doesn't interfere with the RNG used in the 'base' randomizer. Default: `0`. -#### `cg_drawJumpHelper` (0 or 1) - -Draw a helper for correctly timing jump release and crouch jumping. - -#### `cg_jumpHelperX` (#) - -Horizontal position of the jump helper. -Default: `0.0` (center of the screen). +#### `cg_setSeed` 10 digits string -#### `cg_jumpHelperY` (#) +Variable that store the current seed. Can be edited before starting a run and used if `cg_useSetSeed` is equal to 1. +Default: `EmptyString`. -Vertical position of the jump helper. -Default: `0.0` (center of the screen). +#### `cg_useSetSeed` (0 or 1) -#### `cg_jumpHelperWidth` (#) - -Width of the jump helper. -Note that this becomes height when using the vertical jump helper (`cg_jumpHelperHorizontal 0`). -Default: `300`. - -#### `cg_jumpHelperHeight` (#) - -Height of the jump helper. -Note that this becomes width when using the vertical jump helper (`cg_jumpHelperHorizontal 0`). -Default: `20`. - -#### `cg_jumpHelperHorizontal` (-1, 0 or 1) - -Whether to draw the jump helper horizontally left-to-right (`1`), horizontally right-to-left (`-1`) or vertically bottom-to-top (`0`). -Default: `1`. - -#### `cg_jumpHelperMirror` (0 or 1) - -Whether to mirror the jump helper. -Mirrors horizontally when drawing horizontally, vertically otherwise. -Default: `1`. - -#### `cg_jumpHelperAutoScale` (0 or 1) - -Whether to rescale the jump helper to the same size for each force level. +If 0, generate a random seed during the start of a new game. +If 1, will use the seed stored in `cg_setSeed`. Default: `0`. -#### `cg_jumpHelperCrouch` (0 or 1) - -Show an additional height section for crouch jumping, appended to normal jump height. -Default: `1`. - -#### `cg_jumpHelperCurrentScale` (#) - -Scale of the indicator for the current height within the jump helper. -Negative values draw from top to bottom, positive values from bottom to top. -Default: `0.5`. - -#### `cg_drawSpeed` (0 or 1) - -Draw the current player speed. -Default: `0`. - -#### `cg_speedScale` (#) - -Scale of the text for speed display. -Default: `0.9`. - -#### `cg_speedX` (#) - -Horizontal offset for drawing speed text, relative to the center of the screen. -Default: `0.0` (center of the screen). - -#### `cg_speedY` (#) - -Vertical offset for drawing speed text, relative to the center of the screen. -Default: `75.0` (Slightly below center of the screen). +### HUD -#### `cg_drawStrafeHelper` (0 or 1) +#### `cg_drawSeed` (0 or 1) -Draw a strafe helper. +Draw the seed used during a run. Will draw "No Rand" is `cg_enableRandomizer` is 0. Default: `0`. -#### `cg_strafeHelperCenter` (0 or 1) - -Put the strafe helper in the center of the screen. -Default: `1`. - -#### `cg_strafeHelperCenterMarker` (0 or 1) - -Draw a marker in the center of the strafe helper. -Default: `1`. - -#### `cg_strafeHelperHeight` (#) - -Height of strafe helper bar. -Default: `20.0`. - -#### `cg_strafeHelperScale` (#) +## About Force Holocrons +Holocron items, like the one you can find on the map yavin_trial, are available as collectible items. +Here are how they work : +- When an holocron is rolled during the randomized process, they only have a 33% to 'stay'. If you hit the 66% remaining, the item will be rerolled. +- They have a slightly higher hitbox, so they may be picked from a bit father than what their 3D model indicate. +- When picked up, if you didn't had the force power, you will unlock it and a "New Force Power" popup will appear. +- When picked up, if you already had a force power, it will be incremented by 1. +- When pickup up, if you already had this specific force power at level 3, nothing will happen. You also won't see the "New Force Power" popup. +- The Force powers will still increment as they should between missions. -Horizontal scale of the strafe helper. -Angles correspond directly to the field of view if this scale is set to `360/cg_fov`. -Default: `4.0`. +## List of addition for the base Randomizer -#### `cg_strafeHelperSpeedScale` (#) +#### Gameplay -Scale of the text for speed display tied to strafe helper. -Note that this shows the speed after friction but prior to acceleration, as this is what is relevant for optimal strafing. -It is not the intuitive current player speed. -For that, see `cg_drawSpeed`. -Default: `0.9`. +- Every NPC will be randomized during spawn, with exceptions listed below. +- NPC health will be randomized between 25% and 400% of base health. +- Every items spawned on the map such as items on the ground or in gun racks will be randomized. +- The lightsaber can be obtained early and you will receive a random saber style on pickup. +- Every Force powers (except Saber attack and Saber defense) can be obtained via holocrons. +- NPCs replacing NPCs with keys or special trigger for script will inherit said keys and/or script. +- NPCs replacing normal NPCs will inherit their AI as best as possible (droids can't pathfind exactly like a humanoid). +- Easter egg NPC called `The Death Wiggle`. +- The NPC you kill at the end of `yavin_trial` will trigger the end of the timer like in SpeedOutcast. -#### `cg_strafeHelperSpeedX` (#) +#### Exceptions -Horizontal offset of the text for speed display, relative to the center of the screen. -Default: `0.0` (center of the screen). +- Lando, Jan, Luke, MonMothman, Reelo, Desann and Ugnaught will always spawn as humanoids. +- ATSTs, Seekers, MouseDroids, R5D2 (bespin) and 'Chicken Robots' will always spawn as themselves. +- The warden in `artus_detention` will always be an humanoid. +- The stormtrooper shooting at the prisoners in `artus_topside` will always be humanoids. +- Rodian, Gran, Weequay at the end of `ns_starpad` (with Reelo) and the waves when Lando will go inside the Lady Luck will always be humanoids. +- The two Imperial Officers in `cairn_assembly` and `doom_detention` we have to mindtrick will always be humanoids. +- Kyle as in player controlled Kyle will always be Kyle. And randomly spawned Kyle will always be considered allies. -#### `cg_strafeHelperSpeedY` (#) +### List of addition for the 'exotic' Randomizer -Vertical offset of the text for speed display, relative to the strafe helper. -Default: `0.0` (directly under the strafe helper). +#### `cg_enableRandSaberStyle` (0 or 1) +Random saber style at pickup. That means you will always get a change to get any saber style, so go for a qs/ql if you want something specific. -#### `cg_strafeHelperY` (#) +#### `cg_enableRandSaberLength` (0 or 1) +Random saber lenght every time the saber is chosen. From 25% to 400% the saber lenght. -Vertical position of the strafe helper. -Default: `50.0`. +#### `cg_enableRandSaberColor` (0 or 1) +Random saber color every time the saber is chosen. Blue, Green, Yeelow, Orange, Purple and Red. RGB might be possible but that needs investigation. -#### `cg_strafeHelperColor[...]` (0.0 - 1.0) +#### `cg_enableRandJumpHeight` (0 or 1) +Random jump height with every jump. From 1/3 the normal jump without force to double the height with jump force 3. -Color components (red, green, blue, alpha) for different strafe helper elements. -These are `Accelerating`, `Optimal`, `CenterMarker` and `Speed`. -Colors can be set more conveniently with the corresponding commands. +#### `cg_enableRandJumpStrength` (0 or 1) +Random jump strength with every jump. From the normal jump without force to quadruple the Z velocity with jump force 3. -### Cosmetics +#### `cg_enableRandLanguageVoices` (0 or 1) +Random language for each voice line (randomized when loaded on map init). -#### `g_saber_color` (color) +#### `cg_enableRandWeaponProjectile` (0 or 1) +Random weapon projectile per shot. Only applies if the weapon is a blaster of some sort. -Set saber color. -Valid colors: "red", "orange", "yellow", "green", "blue", and "purple". -Default: "blue" +#### `cg_enableRandTextures` (0 or 1) +Random texture assigned to each surface per map. No vid_restart required to toggle. -### Gameplay +#### `cg_enableRandNPCSpeed` (0 or 1) +Random walking, running and turning speed for NPCs. Range of 33% to 300%. -#### `g_speedFactorLanding` (0 or 1) +#### `cg_enableSafeStart` (0 or 1) +Prevents starting two enemies from attacking unless provoked. -To play with factors to multiply speed by on landing. -A value of `0.5` will obtain Jedi Academy behaviour, `1.0` is the original behaviour in Jedi Outcast. -**Cheat protected**. -Default: `1`. +#### `cg_startWithPush` (0 or 1) +Start game with force push 1. -#### `g_selfKnockback` (0 or 1) - -Allow players to damage boost themselves with explosive weapons. -**Cheat protected**. -Default: `0`. - -#### `sv_speedrunModeIL` (0 or 1) - -Individual-level run mode. -When set to `1`, ingame timer will reset every time an autosave is loaded. -When set to `0`, ingame timer will reset only when `kejim_post` is loaded. -Default: `0`. - -#### `sv_speedrunModeCheckpoint` (0 or 1) - -Mode for running from quicksave to a specified checkpoint on a map. -Coordinates can be set with the command `settimedcheckpoint x1 y1 z1 x2 y2 z2`. -When the player enters the box spanned by the two points `(x1 y1 z1)` and `(x2 y2 z2)` the run is finished. -If `x2`, `y2` and `z2` are omitted, a checkpoint of reasonable size will be created at `(x1 y1 z1)`. -Default: `0`. - -#### `sv_speedrunModeCheckpointSave` (0 or 1) - -Create an automatic save when a checkpoint is reached in checkpoint mode. -Default: `0`. - -## New Commands - -### HUD +#### `cg_bonusJanHealth` (0 or 1) +Applies a flat +50 to Jan's health on kejim_post. This applies before random NPC health. -#### `jumpHelperColor[...] ` (components in range 0.0 to 1.0) +#### `cg_enableRandNPCHealth` (0 or 1) +Random health for NPCs. Range of 25% to 400%. -Sets the color for one of the jump helper elements `Background`, `Crouch`, `CrouchExtend`, `Extend`, `Optimal`, `Current` or `Cancel` to the given red, green, blue and alpha values. +#### `cg_enableRandKyleHealth` (0 or 1) +Random health for Kyle as the player. Range of 33% to 300%. -#### `speedColor ` (components in range 0.0 to 1.0) -Sets the color for the speed display to the given red, green, blue and alpha values. +### Todos +- Get approved for a possible speedrun randomizer leaderboard +- Random codes for doom_comm (if possible) +- Random codes for kejim_post (if possible) -#### `strafeHelperColor[...] ` (components in range 0.0 to 1.0) -Sets the color for one of the strafe helper elements `Accelerating`, `Optimal`, `CenterMarker` or `Speed` to the given red, green, blue and alpha values. diff --git a/assets/Bundle Assets.ps1 b/assets/Bundle Assets.ps1 new file mode 100644 index 00000000..d382bfa9 --- /dev/null +++ b/assets/Bundle Assets.ps1 @@ -0,0 +1,13 @@ +if(Get-Item assets_randomizer.pk3) +{ + Remove-Item assets_randomizer.pk3 +} + +$compress = @{ + Path = "ui", "models" + CompressionLevel = "Fastest" + DestinationPath = "assets_randomizer.zip" +} +Compress-Archive @compress + +Move-Item assets_randomizer.zip assets_randomizer.pk3 \ No newline at end of file diff --git a/assets/assets_randomizer.pk3 b/assets/assets_randomizer.pk3 new file mode 100644 index 00000000..9cf13aa1 Binary files /dev/null and b/assets/assets_randomizer.pk3 differ diff --git a/assets/models/map_objects/force_holocrons/grip.md3 b/assets/models/map_objects/force_holocrons/grip.md3 new file mode 100644 index 00000000..1d6231f4 Binary files /dev/null and b/assets/models/map_objects/force_holocrons/grip.md3 differ diff --git a/assets/models/map_objects/force_holocrons/heal.md3 b/assets/models/map_objects/force_holocrons/heal.md3 new file mode 100644 index 00000000..f172741f Binary files /dev/null and b/assets/models/map_objects/force_holocrons/heal.md3 differ diff --git a/assets/models/map_objects/force_holocrons/lightning.md3 b/assets/models/map_objects/force_holocrons/lightning.md3 new file mode 100644 index 00000000..51257396 Binary files /dev/null and b/assets/models/map_objects/force_holocrons/lightning.md3 differ diff --git a/assets/models/map_objects/force_holocrons/saberthrow.md3 b/assets/models/map_objects/force_holocrons/saberthrow.md3 new file mode 100644 index 00000000..3352f814 Binary files /dev/null and b/assets/models/map_objects/force_holocrons/saberthrow.md3 differ diff --git a/assets/models/map_objects/force_holocrons/telepathy.md3 b/assets/models/map_objects/force_holocrons/telepathy.md3 new file mode 100644 index 00000000..0541d67f Binary files /dev/null and b/assets/models/map_objects/force_holocrons/telepathy.md3 differ diff --git a/assets/readme.txt b/assets/readme.txt new file mode 100644 index 00000000..7250726d --- /dev/null +++ b/assets/readme.txt @@ -0,0 +1,7 @@ +Assets files are now stored in this assets folder to make them easier to edit (no more manually picking files out of .pk3s for me!) + +I will try to make sure assets_randomizer.pk3 in this folder is up to date, if you want to regenerate the file just run BundleAssets.ps1 and it will create a new assets_randomizer.pk3 in this folder with the latest files from models & ui. + +If you want to add a new folder to the pk3 then update the PATH argument in BundleAssets.ps1 to include the new folder. + +//TODO: Look at creating a github action that auto-generates this file for releases \ No newline at end of file diff --git a/assets/ui/controls.menu b/assets/ui/controls.menu new file mode 100644 index 00000000..877855ca --- /dev/null +++ b/assets/ui/controls.menu @@ -0,0 +1,3524 @@ +//-------------------------------------------------------------- +// +// CONTROLS MENU +// +//-------------------------------------------------------------- +{ + menuDef + { + name "controlsMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onOpen + { + uiScript loadControls + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + show setup_background + show weaponcontrols + } + + onClose + { + uiScript saveControls + } + + onESC + { + play sound/interface/menuroam + hide highlights + close controlsMenu + open mainMenu + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + // Big button "NEW" + itemDef + { + name newgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name newgamebutton + group toprow + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + text @MENUS1_NEW + descText @MENUS1_START_A_NEW_GAME + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show newgamebutton_glow + } + mouseExit + { + hide newgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open newgameMenu + } + } + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open loadgameMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open controlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open setupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open randomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Credits hidden button + itemDef + { + name creditsbutton + group othermain +// text @CREDITS + descText @MENUS0_SHOW_GAME_CREDITS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 51 284 52 60 + font 2 + textscale 1 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textalignx 46 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 0 + + mouseEnter + { + setitemcolor saberhalo2 forecolor 0.7 0.7 0.7 1 + } + mouseExit + { + setitemcolor saberhalo2 forecolor 0.25 0.25 0.25 1 + } + action + { + play sound/interface/button1 + close all + open creditsMenu + } + } + + // EXIT button in lower left corner + // Big button "SETUP" + itemDef + { + name exitgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/weapons/saber/saberoff.mp3" + close all + open quitMenu + } + } + + //---------------------------------------------------------------------------------------------- + // + // SECOND ROW MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Configure Controls title + itemDef + { + name control_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text @MENUS1_CONFIGURE_CONTROLS + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + // Weapons button + itemDef + { + name weaponscontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 173 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name weaponscontrolbutton + group none + text @MENUS0_WEAPONS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 173 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_WEAPON_CONTROLS + + mouseEnter + { + show weaponscontrolbutton_glow + } + mouseExit + { + hide weaponscontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + show weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 1 1 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // Force Powers button + itemDef + { + name forcecontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 203 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name forcecontrolbutton + group none + text @MENUS1_FORCE_POWERS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 203 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_FORCE_POWER + + mouseEnter + { + show forcecontrolbutton_glow + } + mouseExit + { + hide forcecontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + show forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 1 1 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // attack button + itemDef + { + name attackcontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 233 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name attackcontrolbutton + group none + text @MENUS1_ATTACK_LOOK + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 233 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_ATTACK_LOOK + + mouseEnter + { + show attackcontrolbutton_glow + } + mouseExit + { + hide attackcontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + show attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 1 1 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // movement button + itemDef + { + name movementcontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 263 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name movementcontrolbutton + group none + text @MENUS0_MOVEMENT + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 263 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_MOVEMENT_KEYS + + mouseEnter + { + show movementcontrolbutton_glow + } + mouseExit + { + hide movementcontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + show movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 1 1 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // inventory button + itemDef + { + name inventorycontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 293 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name inventorycontrolbutton + group none + text @MENUS1_INVENTORY + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 293 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_INVENTORY_KEYS + + mouseEnter + { + show inventorycontrolbutton_glow + } + mouseExit + { + hide inventorycontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + show invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 1 1 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // quick button + itemDef + { + name quickcontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 323 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name quickcontrolbutton + group none + text @MENUS1_QUICK_KEYS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 323 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS1_CONFIGURE_QUICK_KEYS + + mouseEnter + { + show quickcontrolbutton_glow + } + mouseExit + { + hide quickcontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + show quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 1 1 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // mousejoystick button + itemDef + { + name mousejoystickcontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 353 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name mousejoystickcontrolbutton + group none + text @MENUS1_MOUSE_JOYSTICK + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 353 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_MOUSE_AND_JOYSTICK + + mouseEnter + { + show mousejoystickcontrolbutton_glow + } + mouseExit + { + hide mousejoystickcontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + show joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 1 1 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // other button + itemDef + { + name othercontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 383 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name othercontrolbutton + group none + text @MENUS1_OTHER + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 383 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_ADDITIONAL + + mouseEnter + { + show othercontrolbutton_glow + } + mouseExit + { + hide othercontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + show othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 1 1 1 1 + } + } + + itemDef + { + name setup_background + group none + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_box1" // Frame + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // HIGHLIGHT BARS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name highlight1 + group highlights + style WINDOW_STYLE_SHADER + rect 305 171 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight2 + group highlights + style WINDOW_STYLE_SHADER + rect 305 191 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight3 + group highlights + style WINDOW_STYLE_SHADER + rect 305 211 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight4 + group highlights + style WINDOW_STYLE_SHADER + rect 305 231 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight5 + group highlights + style WINDOW_STYLE_SHADER + rect 305 251 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight6 + group highlights + style WINDOW_STYLE_SHADER + rect 305 271 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight7 + group highlights + style WINDOW_STYLE_SHADER + rect 305 291 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight8 + group highlights + style WINDOW_STYLE_SHADER + rect 305 311 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight9 + group highlights + style WINDOW_STYLE_SHADER + rect 305 331 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight10 + group highlights + style WINDOW_STYLE_SHADER + rect 305 351 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight11 + group highlights + style WINDOW_STYLE_SHADER + rect 305 371 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight12 + group highlights + style WINDOW_STYLE_SHADER + rect 305 391 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + + + //---------------------------------------------------------------------------------------------- + // + // WEAPON BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name weapon1 + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_STUN_BATON_LIGHTSABER + cvar "weapon 1" + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS1_READIES_THE_STUN_BATON + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight1 + show keybindstatus + } + mouseexit + { + hide highlight1 + hide keybindstatus + } + } + + itemDef + { + name weapon3 + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_PISTOL + cvar "weapon 2" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS1_READIES_THE_BRYAR_BLASTER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_RIFLE + cvar "weapon 3" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS1_READIES_THE_E_11_BLASTER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_DISRUPTOR_RIFLE + cvar "weapon 4" + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS1_READIES_THE_TENLOSS_DXR_6 + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS0_BOWCASTER + cvar "weapon 5" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS1_READIES_THE_WOOKIEE_BOWCASTER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_HEAVY_REPEATER + cvar "weapon 6" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS1_READIES_THE_IMPERIAL + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_DEMP_2 + cvar "weapon 7" + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS1_READIES_THE_DEMP2_GUN + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_FLECHETTE + cvar "weapon 8" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 8 + descText @MENUS1_READIES_THE_GOLAN_ARMS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + show keybindstatus + } + mouseexit + { + hide keybindstatus + hide highlight8 + } + } + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_MERR_SONN + cvar "weapon 9" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 9 + descText @MENUS1_READIES_THE_MERR_SONN + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_THROWABLE_WEAPONS + cvar "weapon 10" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + descText @MENUS1_TOGGLES_BETWEEN_DETONATORS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_NEXT_WEAPON + cvar "weapnext" + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + descText @MENUS1_SELECTS_THE_NEXT_WEAPON + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight11 + show keybindstatus + } + mouseexit + { + hide highlight11 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_PREVIOUS_WEAPON + cvar "weapprev" + rect 305 391 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 11 + descText @MENUS1_SELECTS_THE_PREVIOUS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight12 + show keybindstatus + } + mouseexit + { + hide highlight12 + hide keybindstatus + } + } + + //---------------------------------------------------------------------------------------------- + // + // FORCE BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name force2 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_PUSH + cvar "force_throw" + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_USES_FORCE_PUSH_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight1 + show keybindstatus + } + mouseexit + { + hide highlight1 + hide keybindstatus + } + } + + itemDef + { + name force3 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_PULL + cvar "force_pull" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_USES_FORCE_PULL_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name force4 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_SPEED + cvar "force_speed" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_USES_FORCE_SPEED_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name force5 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_HEAL + cvar "force_heal" + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_USES_FORCE_HEAL_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name force6 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_GRIP + cvar "+force_grip" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS2_USES_FORCE_GRIP_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name force7 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_MINDTRICK + cvar "force_distract" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS2_USES_JEDI_MIND_TRICK + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + + itemDef + { + name force8 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_LIGHTNING + cvar "+force_lightning" + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS2_USES_FORCE_LIGHTNING + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + + itemDef + { + name forcekeys + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS1_USE_FORCE_POWER + cvar "+useforce" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 8 + descText @MENUS1_USES_CURRENTLY_SELECTED + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + + itemDef + { + name forcekeys + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS1_FORCE_NEXT + cvar "forcenext" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 9 + descText @MENUS1_SELECTS_NEXT_AVAILABLE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + itemDef + { + name forcekeys + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS1_FORCE_PREVIOUS + cvar "forceprev" + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + descText @MENUS1_SELECTS_PREVIOUS_AVAILABLE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight11 + show keybindstatus + } + mouseexit + { + hide highlight11 + hide keybindstatus + } + } + + + //---------------------------------------------------------------------------------------------- + // + // ATTACK/LOOK BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name attacklook1 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_ATTACK + cvar "+attack" + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_ATTACKS_WITH_READIED + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight1 + show keybindstatus + } + mouseexit + { + hide highlight1 + hide keybindstatus + } + } + + itemDef + { + name attacklook2 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_ALT_ATTACK + cvar "+altattack" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_ATTACKS_WITH_ALTERNATE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name attacksaber + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_LIGHTSABER_STYLE + cvar "saberAttackCycle" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_CYCLES_BETWEEN_AVAILABLE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name attacklook3 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_USE + cvar "+use" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_ACTIVATES_WORLD_DEVICES + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name attacklook4 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS0_LOOK_UP + cvar "+lookup" + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_TILTS_VIEW_UPWARDS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + + + itemDef + { + name attacklook5 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS0_LOOK_DOWN + cvar "+lookdown" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_TILTS_VIEW_DOWNWARDS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + show keybindstatus + } + mouseexit + { + hide highlight8 + hide keybindstatus + } + } + + itemDef + { + name attacklook + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_MOUSE_LOOK + cvar "+mlook" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_IF_HELD_ALLOWS_PLAYER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + + itemDef + { + name attacklook + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_CENTERVIEW + cvar "centerview" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_RETURNS_VIEW_TO_HORIZONTAL + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + itemDef + { + name attacklook + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS0_3RD_PERSON + cvar "cg_thirdperson !" + rect 305 391 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS1_CHANGES_VIEW_BETWEEN + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight12 + show keybindstatus + } + mouseexit + { + hide highlight12 + hide keybindstatus + } + } + + +// This key is no longer being used. + itemDef + { + name quickkeys + group attackcontrols_obsolete + type ITEM_TYPE_BIND + text @MENUS1_RETURN_TO_VIEW + cvar "exitview" + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS2_RESTORES_VIEW_WHEN_OPERATING + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight11 + show keybindstatus + } + mouseexit + { + hide highlight11 + hide keybindstatus + } + } + + //---------------------------------------------------------------------------------------------- + // + // MOVEMENT BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name movement1 + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_WALK_FORWARD + cvar "+forward" + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_MOVES_PLAYER_FORWARD + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight1 + show keybindstatus + } + mouseexit + { + hide highlight1 + hide keybindstatus + } + } + + + itemDef + { + name movement2 + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_BACKPEDAL + cvar "+back" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_MOVES_PLAYER_BACKWARD + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name movement3 + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_TURN_LEFT + cvar "+left" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_ROTATES_PLAYER_LEFT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name movement4 + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_TURN_RIGHT + cvar "+right" + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_ROTATES_PLAYER_RIGHT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_RUN_WALK + cvar "+speed" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_IF_HELD_TOGGLES_BETWEEN + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_STEP_LEFT + cvar "+moveleft" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_STEPS_PLAYER_TO_THE_LEFT + + action + { + play sound/interface/button1 + } + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_STEP_RIGHT + cvar "+moveright" + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS1_STEPS_PLAYER_TO_THE_RIGHT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_SIDESTEP_TURN + cvar "+strafe" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 8 + descText @MENUS1_HELD_ALLOWS_PLAYER_TO + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + show keybindstatus + } + mouseexit + { + hide highlight8 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_UP_JUMP + cvar "+moveup" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 9 + descText @MENUS1_MAKES_PLAYER_JUMP_IF + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_DOWN_CROUCH + cvar "+movedown" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + descText @MENUS1_MAKES_PLAYER_CROUCH_TO + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + text @MENUS2_HOLD_USE_PLUS_STRAFE + font 2 + textscale 0.8 + rect 305 391 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + textaligny -2 + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 11 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // INVENTORY BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name inventory1 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_ELECTROBINOCULARS + cvar "zoom" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_ACTIVATES_NEURO_SAAV + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name inventory2 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_BACTA_CANISTER + cvar "use_bacta" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_ACTIVATES_BIOTECH_BACTA + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name inventory3 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS0_SEEKER + cvar use_seeker + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_ACTIVATES_ARAKYD_MARK + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name inventory4 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_LIGHT_AMP_GOGGLES + cvar "use_lightamp_goggles" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS2_ACTIVATES_LIGHT_AMPLIFICATION + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name inventory5 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_ASSAULT_SENTRY + cvar "use_sentry" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_ACTIVATES_PORTABLE_ASSAULT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + + itemDef + { + name inventorykeys + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_USE_HELD_ITEM + cvar "invuse" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_ACTIVATES_CURRENTLY_SELECTED + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + show keybindstatus + } + mouseexit + { + hide highlight8 + hide keybindstatus + } + } + + itemDef + { + name inventorykeys + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_NEXT_INVENTORY + cvar "invnext" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_SELECTS_NEXT_USABLE_ITEM + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + + itemDef + { + name inventorykeys + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_PREV_INVENTORY + cvar "invprev" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_SELECTS_PREVIOUS_USABLE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + + //---------------------------------------------------------------------------------------------- + // + // QUICK KEY BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name quickkeys1 + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS3_DATAPAD + cvar "datapad" + rect 305 191 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_CHECK_DATAPAD_FOR_MISSION + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name quickkeys + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS1_SAVE_MENU + cvar "uimenu ingamesavemenu" + rect 305 231 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS2_BRINGS_UP_SAVE_GAME_MENU + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name quickkeys + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS1_LOAD_MENU + cvar "uimenu ingameloadmenu" + rect 305 251 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS2_BRINGS_UP_LOAD_GAME_MENU + + action + { + play sound/interface/button1 + } + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name quickkeys + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS1_INSTANT_SAVE + cvar "save quik*" + rect 305 271 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS2_AUTOMATICALLY_SAVES_GAME + + action + { + play sound/interface/button1 + } + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + + itemDef + { + name quickkeys + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS1_INSTANT_LOAD + cvar "load quik" + rect 305 291 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS2_AUTOMATICALLY_LOADS_GAME + + action + { + play sound/interface/button1 + } + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + + + //---------------------------------------------------------------------------------------------- + // + // MOUSE/JOYSTICK KEY BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name mousejoystick1 + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_FREE_LOOK + cvar "cl_freelook" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textaligny -2 + textalignx 151 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_TOGGLE_TO_ALLOW_PLAYER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + } + + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_SLIDER + text @MENUS1_SENSITIVITY + cvarfloat "sensitivity" 5 2 30 + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_ADJUSTS_CHARACTER_REACTION + + action + { + play sound/interface/button1 + } + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_INVERT_MOUSE + cvar "ui_mousePitch" + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_TOGGLE_TO_TILT_VIEW_IN + + action { + uiScript update ui_mousePitch + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + } + + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_SMOOTH_MOUSE + cvar "m_filter" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_WHEN_TURNED_ON_MOUSE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + } + + mouseexit + { + hide highlight5 + } + } + +// +// Not shown +// + itemDef + { + name mousejoystick + group joycontrols_obsolete + type ITEM_TYPE_YESNO + text @MENUS1_FORCE_FEEDBACK + cvar "use_ff" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_WHEN_TURNED_ON_GAME + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + } + + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_ENABLE_JOYSTICK + cvar "in_joystick" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_TURNED_ON_GAME_SEARCHES + action + { + play sound/interface/button1 + exec in_restart + } + + mouseenter + { + show highlight8 + } + + mouseexit + { + hide highlight8 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_SLIDER + text @MENUS1_JOYSTICK_THRESHOLD + cvarfloat "joy_threshold" .15 .05 .75 + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS1_ADJUSTS_THE_SIZE_OF_THE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + } + mouseexit + { + hide highlight9 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_X_AXIS_AS_BUTTONS + cvar "joy_xbutton" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 8 + descText @MENUS1_WHEN_OFF_HORIZONTAL + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + } + + mouseexit + { + hide highlight10 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_Y_AXIS_AS_BUTTONS + cvar "joy_ybutton" + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 9 + descText @MENUS1_WHEN_OFF_VERTICAL_STICK + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight11 + } + + mouseexit + { + hide highlight11 + } + } + + //---------------------------------------------------------------------------------------------- + // + // OTHER + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name other1 + group othercontrols + type ITEM_TYPE_YESNO + text @MENUS0_ALWAYS_RUN + cvar "cl_run" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_WHEN_ON_PLAYER_ALWAYS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + } + + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name other2 + group othercontrols + type ITEM_TYPE_MULTI + text @MENUS0_AUTO_SWITCH + cvar "cg_autoswitch" + cvarFloatList + { + @MENUS1_DON_T_SWITCH 0 + @MENUS1_BEST_SAFE_WEAPON 1 + @MENUS1_ALWAYS_BEST_WEAPON 2 + } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_CHOOSE_WHETHER_TO_SWITCH + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + } + + mouseexit + { + hide highlight3 + } + + } + + //---------------------------------------------------------------------------------------------- + // + // Text + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name keyBindStatus + group none + ownerdraw 250 // UI_KEYBINDSTATUS + text @MENUS2_BLANK_1 + rect 375 425 0 0 + textStyle 0 + font 2 + textscale .8 + textalign ITEM_ALIGN_CENTER + forecolor 1 1 0 1 + visible 0 + decoration + } + + itemDef + { + name slider_message + group none + text @MENUS0_MOVE_THE_SLIDER_TO_INCREASE + rect 375 425 0 0 + textStyle 0 + font 2 + textscale .8 + textalign ITEM_ALIGN_CENTER + visible 0 + decoration + } + + itemDef + { + name yesno_message + group none + text @MENUS0_CLICK_ON_FIELD_TO_TOGGLE + rect 375 425 0 0 + textStyle 0 + font 2 + textscale .8 + textalign ITEM_ALIGN_CENTER + visible 0 + decoration + } + + itemDef + { + name multi_message + group none + text @MENUS0_CLICK_ON_FIELD_TO_CHANGE + rect 375 425 0 0 + textStyle 0 + font 2 + textscale .8 + textalign ITEM_ALIGN_CENTER + visible 0 + decoration + } + + } +} diff --git a/assets/ui/ingame.menu b/assets/ui/ingame.menu new file mode 100644 index 00000000..3dcf513b --- /dev/null +++ b/assets/ui/ingame.menu @@ -0,0 +1,483 @@ +// INGAME MAIN MENU +{ + menuDef + { + name "ingameMainMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + appearanceIncrement 100 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onOpen + { + setfocus resume ; + } + + onESC + { + uiScript closeingame // Close menu + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.7 0.7 0.7 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left, over the model + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.3 0.3 0.3 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // TOP MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + + // Big button "SAVE" + itemDef + { + name savegamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name savegamebutton + group toprow + text @MENUS1_SAVE + descText @MENUS1_SAVE_CURRENT_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show savegamebutton_glow + } + mouseExit + { + hide savegamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamesaveMenu + } + } + + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameloadMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameControlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameSetupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamerandomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // EXIT button in lower left corner + itemDef + { + name exitgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamequitMenu + } + } + + // RESUME button in the lower right corner + itemDef + { + name resumebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resume + group none + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 495 444 130 24 + text @MENUS1_RESUME + descText @MENUS1_RESUME_CURRENT_GAME + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + mouseEnter + { + show resumebutton_glow + } + mouseExit + { + hide resumebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + uiScript closeingame // Close menu + } + } + + + } +} + + + + + + + + + + + diff --git a/assets/ui/ingamecontrols.menu b/assets/ui/ingamecontrols.menu new file mode 100644 index 00000000..52b4e9c2 --- /dev/null +++ b/assets/ui/ingamecontrols.menu @@ -0,0 +1,3547 @@ +//-------------------------------------------------------------- +// +// in-game CONTROLS MENU +// +//-------------------------------------------------------------- +{ + menuDef + { + name "ingameControlsMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onOpen + { + uiScript loadControls + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + show setup_background + show weaponcontrols + } + + onClose + { + uiScript saveControls + } + + onESC + { + play sound/interface/button1.wav + hide highlights + close all + open ingameMainMenu + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + + // Big button "SAVE" + itemDef + { + name savegamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name savegamebutton + group toprow + text @MENUS1_SAVE + descText @MENUS1_SAVE_CURRENT_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show savegamebutton_glow + } + mouseExit + { + hide savegamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamesaveMenu + } + } + + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameloadMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameControlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameSetupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamerandomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // EXIT button in lower left corner + itemDef + { + name exitgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play sound/interface/button1 + close all + open ingamequitMenu + } + } + + // RESUME button in the lower right corner + itemDef + { + name resumebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resume + group none + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 495 444 130 24 + text @MENUS1_RESUME + descText @MENUS1_RESUME_CURRENT_GAME + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + mouseEnter + { + show resumebutton_glow + } + mouseExit + { + hide resumebutton_glow + } + action + { + play sound/interface/button1 + uiScript closeingame // Close menu + } + } + + //---------------------------------------------------------------------------------------------- + // + // SECOND ROW MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Configure Controls title + itemDef + { + name control_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text @MENUS1_CONFIGURE_CONTROLS + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 2 + decoration + } + + + // Weapons button + itemDef + { + name weaponscontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 173 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name weaponscontrolbutton + group none + text @MENUS0_WEAPONS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 173 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_WEAPON_CONTROLS + + mouseEnter + { + show weaponscontrolbutton_glow + } + mouseExit + { + hide weaponscontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + show weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 1 1 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // Force Powers button + itemDef + { + name forcecontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 203 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name forcecontrolbutton + group none + text @MENUS1_FORCE_POWERS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 203 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_FORCE_POWER + + mouseEnter + { + show forcecontrolbutton_glow + } + mouseExit + { + hide forcecontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + show forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 1 1 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // attack button + itemDef + { + name attackcontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 233 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name attackcontrolbutton + group none + text @MENUS1_ATTACK_LOOK + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 233 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_ATTACK_LOOK + + mouseEnter + { + show attackcontrolbutton_glow + } + mouseExit + { + hide attackcontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + show attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 1 1 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // movement button + itemDef + { + name movementcontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 263 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name movementcontrolbutton + group none + text @MENUS0_MOVEMENT + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 263 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_MOVEMENT_KEYS + + mouseEnter + { + show movementcontrolbutton_glow + } + mouseExit + { + hide movementcontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + show movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 1 1 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // inventory button + itemDef + { + name inventorycontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 293 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name inventorycontrolbutton + group none + text @MENUS1_INVENTORY + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 293 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_INVENTORY_KEYS + + mouseEnter + { + show inventorycontrolbutton_glow + } + mouseExit + { + hide inventorycontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + show invcontrols + hide quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 1 1 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // quick button + itemDef + { + name quickcontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 323 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name quickcontrolbutton + group none + text @MENUS1_QUICK_KEYS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 323 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS1_CONFIGURE_QUICK_KEYS + + mouseEnter + { + show quickcontrolbutton_glow + } + mouseExit + { + hide quickcontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + show quickcontrols + hide joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 1 1 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // mousejoystick button + itemDef + { + name mousejoystickcontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 353 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name mousejoystickcontrolbutton + group none + text @MENUS1_MOUSE_JOYSTICK + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 353 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_MOUSE_AND_JOYSTICK + + mouseEnter + { + show mousejoystickcontrolbutton_glow + } + mouseExit + { + hide mousejoystickcontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + show joycontrols + hide othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 1 1 1 1 + setitemcolor othercontrolbutton forecolor 0.64 0.65 1 1 + } + } + + // other button + itemDef + { + name othercontrolbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 120 383 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name othercontrolbutton + group none + text @MENUS1_OTHER + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 383 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_ADDITIONAL + + mouseEnter + { + show othercontrolbutton_glow + } + mouseExit + { + hide othercontrolbutton_glow + } + action + { + play sound/interface/button1 + show setup_background + hide weaponcontrols + hide forcecontrols + hide attackcontrols + hide movecontrols + hide invcontrols + hide quickcontrols + hide joycontrols + show othercontrols + setitemcolor weaponscontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor forcecontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor attackcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor movementcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor inventorycontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor quickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor mousejoystickcontrolbutton forecolor 0.64 0.65 1 1 + setitemcolor othercontrolbutton forecolor 1 1 1 1 + } + } + + itemDef + { + name setup_background + group none + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_box1" // Frame + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // HIGHLIGHT BARS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name highlight1 + group highlights + style WINDOW_STYLE_SHADER + rect 305 171 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight2 + group highlights + style WINDOW_STYLE_SHADER + rect 305 191 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight3 + group highlights + style WINDOW_STYLE_SHADER + rect 305 211 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight4 + group highlights + style WINDOW_STYLE_SHADER + rect 305 231 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight5 + group highlights + style WINDOW_STYLE_SHADER + rect 305 251 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight6 + group highlights + style WINDOW_STYLE_SHADER + rect 305 271 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight7 + group highlights + style WINDOW_STYLE_SHADER + rect 305 291 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight8 + group highlights + style WINDOW_STYLE_SHADER + rect 305 311 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight9 + group highlights + style WINDOW_STYLE_SHADER + rect 305 331 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight10 + group highlights + style WINDOW_STYLE_SHADER + rect 305 351 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight11 + group highlights + style WINDOW_STYLE_SHADER + rect 305 371 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight12 + group highlights + style WINDOW_STYLE_SHADER + rect 305 391 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + + + //---------------------------------------------------------------------------------------------- + // + // WEAPON BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name weapon1 + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_STUN_BATON_LIGHTSABER + cvar "weapon 1" + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_READIES_THE_STUN_BATON + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight1 + show keybindstatus + } + mouseexit + { + hide highlight1 + hide keybindstatus + } + } + + itemDef + { + name weapon3 + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_PISTOL + cvar "weapon 2" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_READIES_THE_BRYAR_BLASTER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_RIFLE + cvar "weapon 3" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_READIES_THE_E_11_BLASTER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_DISRUPTOR_RIFLE + cvar "weapon 4" + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_READIES_THE_TENLOSS_DXR_6 + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS0_BOWCASTER + cvar "weapon 5" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_READIES_THE_WOOKIEE_BOWCASTER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_HEAVY_REPEATER + cvar "weapon 6" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_READIES_THE_IMPERIAL + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_DEMP_2 + cvar "weapon 7" + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS1_READIES_THE_DEMP2_GUN + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_FLECHETTE + cvar "weapon 8" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 8 + descText @MENUS1_READIES_THE_GOLAN_ARMS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + show keybindstatus + } + mouseexit + { + hide keybindstatus + hide highlight8 + } + } + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_MERR_SONN + cvar "weapon 9" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 9 + descText @MENUS1_READIES_THE_MERR_SONN + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_THROWABLE_WEAPONS + cvar "weapon 10" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + descText @MENUS1_TOGGLES_BETWEEN_DETONATORS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_NEXT_WEAPON + cvar "weapnext" + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + descText @MENUS1_SELECTS_THE_NEXT_WEAPON + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight11 + show keybindstatus + } + mouseexit + { + hide highlight11 + hide keybindstatus + } + } + + itemDef + { + name none + group weaponcontrols + type ITEM_TYPE_BIND + text @MENUS1_PREVIOUS_WEAPON + cvar "weapprev" + rect 305 391 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 11 + descText @MENUS1_SELECTS_THE_PREVIOUS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight12 + show keybindstatus + } + mouseexit + { + hide highlight12 + hide keybindstatus + } + } + + //---------------------------------------------------------------------------------------------- + // + // FORCE BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name force2 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_PUSH + cvar "force_throw" + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_USES_FORCE_PUSH_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight1 + show keybindstatus + } + mouseexit + { + hide highlight1 + hide keybindstatus + } + } + + itemDef + { + name force3 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_PULL + cvar "force_pull" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_USES_FORCE_PULL_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name force4 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_SPEED + cvar "force_speed" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_USES_FORCE_SPEED_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name force5 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_HEAL + cvar "force_heal" + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_USES_FORCE_HEAL_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name force6 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_GRIP + cvar "+force_grip" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS2_USES_FORCE_GRIP_ABILITY + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name force7 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_MINDTRICK + cvar "force_distract" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS2_USES_JEDI_MIND_TRICK + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + + itemDef + { + name force8 + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS0_FORCE_LIGHTNING + cvar "+force_lightning" + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS2_USES_FORCE_LIGHTNING + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + + itemDef + { + name forcekeys + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS1_USE_FORCE_POWER + cvar "+useforce" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 8 + descText @MENUS1_USES_CURRENTLY_SELECTED + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + + itemDef + { + name forcekeys + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS1_FORCE_NEXT + cvar "forcenext" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 9 + descText @MENUS1_SELECTS_NEXT_AVAILABLE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + itemDef + { + name forcekeys + group forcecontrols + type ITEM_TYPE_BIND + text @MENUS1_FORCE_PREVIOUS + cvar "forceprev" + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + descText @MENUS1_SELECTS_PREVIOUS_AVAILABLE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight11 + show keybindstatus + } + mouseexit + { + hide highlight11 + hide keybindstatus + } + } + + + //---------------------------------------------------------------------------------------------- + // + // ATTACK/LOOK BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name attacklook1 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_ATTACK + cvar "+attack" + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_ATTACKS_WITH_READIED + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight1 + show keybindstatus + } + mouseexit + { + hide highlight1 + hide keybindstatus + } + } + + itemDef + { + name attacklook2 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_ALT_ATTACK + cvar "+altattack" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_ATTACKS_WITH_ALTERNATE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name attacksaber + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_LIGHTSABER_STYLE + cvar "saberAttackCycle" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_CYCLES_BETWEEN_AVAILABLE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name attacklook3 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_USE + cvar "+use" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_ACTIVATES_WORLD_DEVICES + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name attacklook4 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS0_LOOK_UP + cvar "+lookup" + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_TILTS_VIEW_UPWARDS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + + + itemDef + { + name attacklook5 + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS0_LOOK_DOWN + cvar "+lookdown" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_TILTS_VIEW_DOWNWARDS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + show keybindstatus + } + mouseexit + { + hide highlight8 + hide keybindstatus + } + } + + itemDef + { + name attacklook + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_MOUSE_LOOK + cvar "+mlook" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_IF_HELD_ALLOWS_PLAYER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + + itemDef + { + name attacklook + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS1_CENTERVIEW + cvar "centerview" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_RETURNS_VIEW_TO_HORIZONTAL + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + itemDef + { + name attacklook + group attackcontrols + type ITEM_TYPE_BIND + text @MENUS0_3RD_PERSON + cvar "cg_thirdperson !" + rect 305 391 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_CHANGES_VIEW_BETWEEN + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight12 + show keybindstatus + } + mouseexit + { + hide highlight12 + hide keybindstatus + } + } + + +// This key is no longer being used. + itemDef + { + name quickkeys + group attackcontrols_obsolete + type ITEM_TYPE_BIND + text @MENUS1_RETURN_TO_VIEW + cvar "exitview" + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS2_RESTORES_VIEW_WHEN_OPERATING + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight11 + show keybindstatus + } + mouseexit + { + hide highlight11 + hide keybindstatus + } + } + + //---------------------------------------------------------------------------------------------- + // + // MOVEMENT BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name movement1 + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_WALK_FORWARD + cvar "+forward" + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_MOVES_PLAYER_FORWARD + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight1 + show keybindstatus + } + mouseexit + { + hide highlight1 + hide keybindstatus + } + } + + + itemDef + { + name movement2 + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_BACKPEDAL + cvar "+back" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_MOVES_PLAYER_BACKWARD + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name movement3 + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_TURN_LEFT + cvar "+left" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_ROTATES_PLAYER_LEFT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name movement4 + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_TURN_RIGHT + cvar "+right" + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_ROTATES_PLAYER_RIGHT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_RUN_WALK + cvar "+speed" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_IF_HELD_TOGGLES_BETWEEN + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_STEP_LEFT + cvar "+moveleft" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_STEPS_PLAYER_TO_THE_LEFT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_STEP_RIGHT + cvar "+moveright" + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS1_STEPS_PLAYER_TO_THE_RIGHT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_SIDESTEP_TURN + cvar "+strafe" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 8 + descText @MENUS1_HELD_ALLOWS_PLAYER_TO + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + show keybindstatus + } + mouseexit + { + hide highlight8 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_UP_JUMP + cvar "+moveup" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 9 + descText @MENUS1_MAKES_PLAYER_JUMP_IF + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + type ITEM_TYPE_BIND + text @MENUS1_DOWN_CROUCH + cvar "+movedown" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + descText @MENUS1_MAKES_PLAYER_CROUCH_TO + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + itemDef + { + name movement + group movecontrols + text @MENUS2_HOLD_USE_PLUS_STRAFE + font 2 + textscale 0.8 + rect 305 391 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + textaligny -2 + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 11 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // INVENTORY BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name inventory1 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_ELECTROBINOCULARS + cvar "zoom" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_ACTIVATES_NEURO_SAAV + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name inventory2 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_BACTA_CANISTER + cvar "use_bacta" + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_ACTIVATES_BIOTECH_BACTA + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + show keybindstatus + } + mouseexit + { + hide highlight3 + hide keybindstatus + } + } + + itemDef + { + name inventory3 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS0_SEEKER + cvar use_seeker + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_ACTIVATES_ARAKYD_MARK + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name inventory4 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_LIGHT_AMP_GOGGLES + cvar "use_lightamp_goggles" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS2_ACTIVATES_LIGHT_AMPLIFICATION + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name inventory5 + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_ASSAULT_SENTRY + cvar "use_sentry" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_ACTIVATES_PORTABLE_ASSAULT + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + + itemDef + { + name inventorykeys + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_USE_HELD_ITEM + cvar "invuse" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_ACTIVATES_CURRENTLY_SELECTED + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight8 + show keybindstatus + } + mouseexit + { + hide highlight8 + hide keybindstatus + } + } + + itemDef + { + name inventorykeys + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_NEXT_INVENTORY + cvar "invnext" + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_SELECTS_NEXT_USABLE_ITEM + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + show keybindstatus + } + mouseexit + { + hide highlight9 + hide keybindstatus + } + } + + itemDef + { + name inventorykeys + group invcontrols + type ITEM_TYPE_BIND + text @MENUS1_PREV_INVENTORY + cvar "invprev" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_SELECTS_PREVIOUS_USABLE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + show keybindstatus + } + mouseexit + { + hide highlight10 + hide keybindstatus + } + } + + + //---------------------------------------------------------------------------------------------- + // + // QUICK KEY BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name quickkeys1 + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS3_DATAPAD + cvar "datapad" + rect 305 191 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_CHECK_DATAPAD_FOR_MISSION + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + show keybindstatus + } + mouseexit + { + hide highlight2 + hide keybindstatus + } + } + + itemDef + { + name quickkeys + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS1_SAVE_MENU + cvar "uimenu ingamesavemenu" + rect 305 231 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS2_BRINGS_UP_SAVE_GAME_MENU + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight4 + show keybindstatus + } + mouseexit + { + hide highlight4 + hide keybindstatus + } + } + + itemDef + { + name quickkeys + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS1_LOAD_MENU + cvar "uimenu ingameloadmenu" + rect 305 251 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS2_BRINGS_UP_LOAD_GAME_MENU + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + show keybindstatus + } + mouseexit + { + hide highlight5 + hide keybindstatus + } + } + + itemDef + { + name quickkeys + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS1_INSTANT_SAVE + cvar "save quik*" + rect 305 271 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS2_AUTOMATICALLY_SAVES_GAME + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + show keybindstatus + } + mouseexit + { + hide highlight6 + hide keybindstatus + } + } + + itemDef + { + name quickkeys + group quickcontrols + type ITEM_TYPE_BIND + text @MENUS1_INSTANT_LOAD + cvar "load quik" + rect 305 291 305 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS2_AUTOMATICALLY_LOADS_GAME + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight7 + show keybindstatus + } + mouseexit + { + hide highlight7 + hide keybindstatus + } + } + + + //---------------------------------------------------------------------------------------------- + // + // MOUSE/JOYSTICK KEY BINDING + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name mousejoystick1 + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_FREE_LOOK + cvar "cl_freelook" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textaligny -2 + textalignx 151 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_TOGGLE_TO_ALLOW_PLAYER + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + } + + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_SLIDER + text @MENUS1_SENSITIVITY + cvarfloat "sensitivity" 5 2 30 + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_ADJUSTS_CHARACTER_REACTION + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_INVERT_MOUSE + cvar "ui_mousePitch" + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_TOGGLE_TO_TILT_VIEW_IN + + action { uiScript update ui_mousePitch + play sound/interface/button1 + } + mouseenter + { + show highlight4 + } + + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_SMOOTH_MOUSE + cvar "m_filter" + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 4 + descText @MENUS1_WHEN_TURNED_ON_MOUSE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight5 + } + + mouseexit + { + hide highlight5 + } + } + +// +// Not shown +// + itemDef + { + name mousejoystick + group joycontrols_obsolete + type ITEM_TYPE_YESNO + text @MENUS1_FORCE_FEEDBACK + cvar "use_ff" + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS1_WHEN_TURNED_ON_GAME + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight6 + } + + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_ENABLE_JOYSTICK + cvar "in_joystick" + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 6 + descText @MENUS1_TURNED_ON_GAME_SEARCHES + action + { + play sound/interface/button1 + exec in_restart + } + + mouseenter + { + show highlight8 + } + + mouseexit + { + hide highlight8 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_SLIDER + text @MENUS1_JOYSTICK_THRESHOLD + cvarfloat "joy_threshold" .15 .05 .75 + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 7 + descText @MENUS1_ADJUSTS_THE_SIZE_OF_THE + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight9 + } + mouseexit + { + hide highlight9 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_X_AXIS_AS_BUTTONS + cvar "joy_xbutton" + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 8 + descText @MENUS1_WHEN_OFF_HORIZONTAL + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight10 + } + + mouseexit + { + hide highlight10 + } + } + + itemDef + { + name mousejoystick + group joycontrols + type ITEM_TYPE_YESNO + text @MENUS1_Y_AXIS_AS_BUTTONS + cvar "joy_ybutton" + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 9 + descText @MENUS1_WHEN_OFF_VERTICAL_STICK + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight11 + } + + mouseexit + { + hide highlight11 + } + } + + //---------------------------------------------------------------------------------------------- + // + // OTHER + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name other1 + group othercontrols + type ITEM_TYPE_YESNO + text @MENUS0_ALWAYS_RUN + cvar "cl_run" + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_WHEN_ON_PLAYER_ALWAYS + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight2 + } + + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name other2 + group othercontrols + type ITEM_TYPE_MULTI + text @MENUS0_AUTO_SWITCH + cvar "cg_autoswitch" + cvarFloatList + { + @MENUS1_DON_T_SWITCH 0 + @MENUS1_BEST_SAFE_WEAPON 1 + @MENUS1_ALWAYS_BEST_WEAPON 2 + } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 151 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_CHOOSE_WHETHER_TO_SWITCH + action + { + play sound/interface/button1 + } + + mouseenter + { + show highlight3 + } + + mouseexit + { + hide highlight3 + } + + } + + //---------------------------------------------------------------------------------------------- + // + // Text + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name keyBindStatus + group none + ownerdraw 250 // UI_KEYBINDSTATUS + text @MENUS2_BLANK_1 + rect 320 425 0 0 + textStyle 0 + font 2 + textscale .8 + textalign ITEM_ALIGN_CENTER + forecolor .235 .882 .847 1 + visible 0 + decoration + } + + itemDef + { + name slider_message + group none + text @MENUS0_MOVE_THE_SLIDER_TO_INCREASE + rect 320 425 0 0 + textStyle 0 + font 2 + textscale .8 + textalign ITEM_ALIGN_CENTER + visible 0 + decoration + } + + itemDef + { + name yesno_message + group none + text @MENUS0_CLICK_ON_FIELD_TO_TOGGLE + rect 320 425 0 0 + textStyle 0 + font 2 + textscale .8 + textalign ITEM_ALIGN_CENTER + visible 0 + decoration + } + + itemDef + { + name multi_message + group none + text @MENUS0_CLICK_ON_FIELD_TO_CHANGE + rect 320 425 0 0 + textStyle 0 + font 2 + textscale .8 + textalign ITEM_ALIGN_CENTER + visible 0 + decoration + } + + } +} diff --git a/assets/ui/ingameload.menu b/assets/ui/ingameload.menu new file mode 100644 index 00000000..07a96bbf --- /dev/null +++ b/assets/ui/ingameload.menu @@ -0,0 +1,740 @@ +// INGAME MAIN MENU +{ + menuDef + { + name "ingameloadMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + appearanceIncrement 10 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + disablecolor .5 .5 .5 1 + + onOpen + { + uiScript ReadSaveDirectory + } + + onESC + { + uiScript closeingame // Close menu + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + + // Big button "SAVE" + itemDef + { + name savegamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name savegamebutton + group toprow + text @MENUS1_SAVE + descText @MENUS1_SAVE_CURRENT_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show savegamebutton_glow + } + mouseExit + { + hide savegamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamesaveMenu + } + } + + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameloadMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameControlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameSetupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamerandomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // EXIT button in lower left corner + itemDef + { + name exitgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamequitMenu + } + } + + // RESUME button in the lower right corner + itemDef + { + name resumebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resume + group none + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 495 444 130 24 + text @MENUS1_RESUME + descText @MENUS1_RESUME_CURRENT_GAME + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + mouseEnter + { + show resumebutton_glow + } + mouseExit + { + hide resumebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + uiScript closeingame // Close menu + } + } + + //---------------------------------------------------------------------------------------------- + // + // LOAD GAME MENU specific stuff + // + //---------------------------------------------------------------------------------------------- + // Load Game title + itemDef + { + name loadgame_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text @MENUS1_LOAD_GAME + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + itemDef + { + name loadgamedesc + group loadgame + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + flag WINDOW_INACTIVE + text @MENUS1_DESC + cvar ui_gameDesc + maxChars 60 + rect 150 165 450 16 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny -4 + font 2 + textscale .8 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + + itemDef + { + name loadgamelist + group loadscreen + rect 145 190 285 230 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + font 2 + textaligny 2 + textscale 0.7 + border 1 + bordersize 1 + bordercolor .5 .5 .5 .5 + forecolor 0.65 0.65 1 1 + backcolor 0 0 .5 .25 + outlinecolor .5 .5 .5 .5 + elementtype LISTBOX_TEXT + feeder FEEDER_SAVEGAMES + notselectable + visible 1 + columns 2 2 35 150 155 25 100 + mouseEnter + { + setitemcolor loadgamelist bordercolor .265 .824 .886 1 + } + mouseExit + { + setitemcolor loadgamelist bordercolor .5 .5 .5 .5 + } + doubleclick + { + play sound/interface/button1.wav + uiScript loadgame + } + } + + itemDef + { + name loadgamepic + group loadscreen + style WINDOW_STYLE_EMPTY + ownerdraw 236 //UI_ALLMAPS_SELECTION + font 2 + textscale .8 + forecolor 1 1 1 1 + rect 435 190 180 135 + border 1 + bordercolor .265 .824 .886 .25 + visible 1 + } + + // loadgame button + itemDef + { + name loadgameaction_glow + group glow + style WINDOW_STYLE_SHADER + rect 440 350 175 25 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name loadgameaction + group actionbutton + text @MENUS1_LOAD_GAME + descText @MENUS1_LOAD_CHOSEN_GAME + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 440 350 175 25 + font 3 + textscale 0.8 + textalignx 175 + textaligny 1 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + cvarTest ui_SelectionOK + enableCvar { "1" } + + mouseEnter + { + show loadgameaction_glow + } + mouseExit + { + hide loadgameaction_glow + } + action + { + play sound/interface/button1.wav ; + hide glow ; + uiScript loadgame + } + } + + // deletegame button + itemDef + { + name deletegameaction_glow + group glow + style WINDOW_STYLE_SHADER + rect 440 375 175 25 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name deletegamebutton + group actionbutton + text @MENUS1_DELETE_GAME + descText @MENUS1_DELETE_CHOSEN_GAME + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 440 375 175 25 + font 3 + textscale 0.8 + textalignx 175 + textaligny 1 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + cvarTest ui_SelectionOK + enableCvar { "1" } + + mouseEnter + { + show deletegameaction_glow + } + mouseExit + { + hide deletegameaction_glow + } + action + { + play sound/interface/button1.wav ; + hide glow ; + uiScript deletegame + } + } + + // resumegame button + itemDef + { + name resumegameaction_glow + group glow + style WINDOW_STYLE_SHADER + rect 440 400 175 25 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resumeautobutton + group actionbutton + text @MENUS2_RESUME_MISSION + descText @MENUS2_RESUME_LAST_MISSION_ENTERED + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 440 400 175 25 + font 3 + textscale 0.8 + textalignx 175 + textaligny 1 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 // This button isn't used when not in game. + cvarTest ui_ResumeOK + enableCvar { "1" } + + mouseEnter + { + show resumegameaction_glow + } + mouseExit + { + hide resumegameaction_glow + } + action + { + play "sound/interface/button1.wav" ; + hide glow ; + uiScript loadAuto + } + } + + + } +} + + + + + + + + + + + + + + + + + + + diff --git a/assets/ui/ingamequit.menu b/assets/ui/ingamequit.menu new file mode 100644 index 00000000..37b43ab4 --- /dev/null +++ b/assets/ui/ingamequit.menu @@ -0,0 +1,798 @@ + //---------------------------------------------------------------------------------------------- + // + // QUIT MENU + // + //---------------------------------------------------------------------------------------------- +{ + menuDef + { + name "ingamequitMenu" + visible 0 + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + focusColor 1 1 1 1 // Focus color for text and items + appearanceIncrement 10 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + appearanceIncrement 100 // In miliseconds + + onOpen + { + hide abandongamegroup ; + hide quitprogramgroup ; + hide highlights ; + show quitchoicegroup ; + } + onESC + { + play "sound/interface/button1.wav" ; + hide abandongamegroup ; + hide quitprogramgroup ; + hide highlights ; + show quitchoicegroup ; + close all ; + open ingameMainMenu ; + } + + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + + // Big button "SAVE" + itemDef + { + name savegamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name savegamebutton + group toprow + text @MENUS1_SAVE + descText @MENUS1_SAVE_CURRENT_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show savegamebutton_glow + } + mouseExit + { + hide savegamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamesaveMenu + } + } + + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameloadMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameControlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameSetupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamerandomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // RESUME button in the lower right corner + itemDef + { + name resumebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resume + group none + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 495 444 130 24 + text @MENUS1_RESUME + descText @MENUS1_RESUME_CURRENT_GAME + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + mouseEnter + { + show resumebutton_glow + } + mouseExit + { + hide resumebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + uiScript closeingame // Close menu + } + } + + //---------------------------------------------------------------------------------------------- + // + // QUIT GAME MENU specific stuff + // + //---------------------------------------------------------------------------------------------- + // Quitting title + itemDef + { + name quit_title + group none + text @MENUS2_LEAVING_JEDI_KNIGHT_2 + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -1 + forecolor 1 1 1 1 + visible 1 + decoration + } + + itemDef + { + name quitgame_current_button + group highlights + style WINDOW_STYLE_SHADER + rect 275 210 200 30 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + } + + // Quit current button + itemDef + { + name quitgame_current + group quitchoicegroup + text @MENUS3_ABANDON_GAME + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 210 200 30 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 100 + textaligny 1 + descText @MENUS3_QUIT_CURRENT_GAME_AND + forecolor 0.65 0.65 1 1 + visible 1 + action + { + play "sound/interface/button1.wav" ; + show abandongamegroup ; + hide quitchoicegroup ; + hide quitprogramgroup ; + hide highlights ; + } + mouseEnter + { + show quitgame_current_button + } + mouseExit + { + hide quitgame_current_button + } + } + + itemDef + { + name quitgame_program_button + group highlights + style WINDOW_STYLE_SHADER + rect 275 280 200 30 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + } + + // Quit program button + itemDef + { + name quitgame_program + group quitchoicegroup + text @MENUS2_QUIT_PROGRAM + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 280 200 30 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 100 + textaligny 1 + descText @MENUS3_LEAVE_THE_PROGRAM_ENTIRELY + forecolor 0.65 0.65 1 1 + visible 1 + action + { + play "sound/interface/button1.wav" ; + show quitprogramgroup ; + hide abandongamegroup ; + hide quitchoicegroup ; + hide highlights ; + } + mouseEnter + { + show quitgame_program_button + } + mouseExit + { + hide quitgame_program_button + } + } + + + //---------------------------------------------------------------------------------------------- + // + // Abandon game Confirmation + // + //---------------------------------------------------------------------------------------------- + // Quit current button + itemDef + { + name fakequitgame_current + group abandongamegroup + text @MENUS3_ABANDON_GAME + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 210 200 30 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textalignx 100 + textaligny 1 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name abandongame_cancel_button + group highlights + style WINDOW_STYLE_SHADER + rect 245 380 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + } + + // CANCEL button + itemDef + { + name abandongame_cancel + group abandongamegroup + text @MENUS0_NO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 245 380 130 24 + font 3 + textscale 1 + textalignx 65 + textaligny -1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + descText @MENUS3_DO_NOT_ABANDON + forecolor 0.65 0.65 1 1 + visible 1 + action + { + play "sound/interface/button1.wav" ; + hide abandongamegroup ; + hide quitprogramgroup ; + hide highlights ; + show quitchoicegroup ; + } + mouseEnter + { + show abandongame_cancel_button + } + mouseExit + { + hide abandongame_cancel_button + } + } + + itemDef + { + name abandongame_yes_button + group highlights + style WINDOW_STYLE_SHADER + rect 375 380 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + } + + // YES button + itemDef + { + name abandongame_yes + group abandongamegroup + text @MENUS0_YES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 375 380 130 24 + font 3 + textscale 1 + textalignx 65 + textaligny -1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + descText @MENUS3_ABANDON + forecolor 0.65 0.65 1 1 + visible 1 + action + { + play "sound/interface/button1.wav" ; + hide abandongamegroup ; + hide quitprogramgroup ; + hide highlights ; + show quitchoicegroup ; + uiScript Leave //disconnect and start over + } + mouseEnter + { + show abandongame_yes_button + } + mouseExit + { + hide abandongame_yes_button + } + } + + + //---------------------------------------------------------------------------------------------- + // + // Leave game Confirmation + // + //---------------------------------------------------------------------------------------------- + // Quit program button + itemDef + { + name fakequitgame_program + group quitprogramgroup + text @MENUS2_QUIT_PROGRAM + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 280 200 30 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textalignx 100 + textaligny 1 + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name quitprogram_cancel_button + group highlights + style WINDOW_STYLE_SHADER + rect 245 380 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + } + + // CANCEL button + itemDef + { + name quitprogram_cancel + group quitprogramgroup + text @MENUS0_NO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 245 380 130 24 + font 3 + textscale 1 + textalignx 65 + textaligny -1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + descText @MENUS3_DO_NOT_LEAVE + forecolor 0.65 0.65 1 1 + visible 1 + action + { + play "sound/interface/button1.wav" ; + hide quitprogramgroup ; + hide abandongamegroup ; + hide highlights ; + show quitchoicegroup ; + } + mouseEnter + { + show quitprogram_cancel_button + } + mouseExit + { + hide quitprogram_cancel_button + } + } + + itemDef + { + name quitprogram_yes_button + group highlights + style WINDOW_STYLE_SHADER + rect 375 380 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + } + + // YES button + itemDef + { + name quitprogram_yes + group quitprogramgroup + text @MENUS0_YES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 375 380 130 24 + font 3 + textscale 1 + textalignx 65 + textaligny -1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + descText @MENUS3_LEAVE_PROGRAM + forecolor 0.65 0.65 1 1 + visible 1 + action + { + play "sound/interface/button1.wav" ; + uiScript Quit // Quit the game + } + mouseEnter + { + show quitprogram_yes_button + } + mouseExit + { + hide quitprogram_yes_button + } + } + + + } +} \ No newline at end of file diff --git a/assets/ui/ingamerandomizer.menu b/assets/ui/ingamerandomizer.menu new file mode 100644 index 00000000..86d89660 --- /dev/null +++ b/assets/ui/ingamerandomizer.menu @@ -0,0 +1,1769 @@ +//-------------------------------------------------------------- +// +// RANDOMIZER MENU +// +// New menu for Randomizer to show randomizer options. +// +//-------------------------------------------------------------- +{ + menuDef + { + name "ingamerandomizerMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + background "gfx/menus/mainback" // Frame + appearanceIncrement 75 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onOpen + { + show randomizer_background ; + show basic ; + hide enhancements_cosmetics ; + hide enhancements_force ; + hide enhancements_evil ; + hide assists ; + setfocus basic; + setitemcolor basicmenubutton forecolor 1 1 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assistsmenubutton forecolor 0.65 0.65 1 1; + } + + onESC + { + play "sound/interface/button1.wav" ; + + hide highlights ; + close all ; + open ingameMainMenu ; + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + // Big button "SAVE" + itemDef + { + name savegamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name savegamebutton + group toprow + text @MENUS1_SAVE + descText @MENUS1_SAVE_CURRENT_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show savegamebutton_glow + } + mouseExit + { + hide savegamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamesaveMenu + } + } + + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameloadMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameControlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameSetupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamerandomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // EXIT button in lower left corner + itemDef + { + name exitgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamequitMenu + } + } + + // RESUME button in the lower right corner + itemDef + { + name resumebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resume + group none + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 495 444 130 24 + text @MENUS1_RESUME + descText @MENUS1_RESUME_CURRENT_GAME + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + mouseEnter + { + show resumebutton_glow + } + mouseExit + { + hide resumebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + uiScript closeingame // Close menu + } + } + + //---------------------------------------------------------------------------------------------- + // + // SECOND ROW MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Randomizer Options title + itemDef + { + name randomizer_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text RANDOMIZER + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 2 + decoration + } + + + // Basic button + itemDef + { + name basic_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 173 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name basicmenubutton + group none + text BASIC + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 173 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Basic Randomizer Settings - Speedrun compliant" + + mouseEnter + { + show basic_glow + } + mouseExit + { + hide basic_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + show basic ; + hide enhancements_cosmetics ; + hide enhancements_force ; + hide enhancements_evil ; + hide assists ; + setfocus basic ; + setitemcolor basicmenubutton forecolor 1 1 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assists_menubutton forecolor 0.65 0.65 1 1; + } + } + + // Enhancements1 button + itemDef + { + name enhancements_cosmetics_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 233 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name enhancements_cosmetics_menubutton + group none + text "Cosmetics" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 233 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Randomizer Enhancements - Cosmetics" + + mouseEnter + { + show enhancements_cosmetics_glow + } + mouseExit + { + hide enhancements_cosmetics_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + hide basic ; + show enhancements_cosmetics ; + hide enhancements_force ; + hide enhancements_evil ; + hide assists ; + setfocus enhancements_cosmetics ; + setitemcolor basicmenubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 1 1 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assists_menubutton forecolor 0.65 0.65 1 1; + } + } + + // Enhancements2 button + itemDef + { + name enhancements_force_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 263 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name enhancements_force_menubutton + group none + text "Force" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 263 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Randomizer Enhancements - Force" + + mouseEnter + { + show enhancements_force_glow + } + mouseExit + { + hide enhancements_force_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + hide basic ; + hide enhancements_cosmetics ; + show enhancements_force ; + hide enhancements_evil ; + hide assists ; + setfocus enhancements_force ; + setitemcolor basicmenubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 1 1 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assists_menubutton forecolor 0.65 0.65 1 1; + } + } + + // Enhancements2 button + itemDef + { + name enhancements_evil_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 293 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + // Enhancements3 button + itemDef + { + name enhancements_evil_menubutton + group none + text "Evil / Chaos" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 293 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Randomizer Enhancements - Evil and Chaos" + + mouseEnter + { + show enhancements_evil_glow + } + mouseExit + { + hide enhancements_evil_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + hide basic ; + hide enhancements_cosmetics ; + hide enhancements_force ; + show enhancements_evil ; + hide assists ; + setfocus enhancements_evil ; + setitemcolor basicmenubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 1 1 1 1; + setitemcolor assists_menubutton forecolor 0.65 0.65 1 1; + } + } + + // Assists button + itemDef + { + name assists_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 323 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name assists_menubutton + group none + text "Assists" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 323 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Randomizer Enhancements - Assists" + + mouseEnter + { + show assists_glow + } + mouseExit + { + hide assists_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + hide basic ; + hide enhancements_cosmetics ; + hide enhancements_force ; + hide enhancements_evil ; + show assists ; + setfocus assists ; + setitemcolor basicmenubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assists_menubutton forecolor 1 1 1 1; + } + } + + itemDef + { + name randomizer_background + group none + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_box1" // Frame + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // HIGHLIGHT BARS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name highlight1 + group highlights + style WINDOW_STYLE_SHADER + rect 305 171 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight2 + group highlights + style WINDOW_STYLE_SHADER + rect 305 191 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight3 + group highlights + style WINDOW_STYLE_SHADER + rect 305 211 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight4 + group highlights + style WINDOW_STYLE_SHADER + rect 305 231 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight5 + group highlights + style WINDOW_STYLE_SHADER + rect 305 251 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight6 + group highlights + style WINDOW_STYLE_SHADER + rect 305 271 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight7 + group highlights + style WINDOW_STYLE_SHADER + rect 305 291 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight8 + group highlights + style WINDOW_STYLE_SHADER + rect 305 311 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight9 + group highlights + style WINDOW_STYLE_SHADER + rect 305 331 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight10 + group highlights + style WINDOW_STYLE_SHADER + rect 305 351 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight11 + group highlights + style WINDOW_STYLE_SHADER + rect 305 371 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight12 + group highlights + style WINDOW_STYLE_SHADER + rect 305 391 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // BASIC FIELDS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name enable_randomizer + group basic + type ITEM_TYPE_MULTI + text "Enable Randomizer:" + cvar "cg_enableRandomizer" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable the randomizer." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name draw_seed + group basic + type ITEM_TYPE_MULTI + text "Show Seed:" + cvar "cg_drawSeed" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Toggle to show the randomizer seed on screen." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + itemDef + { + name use_set_seed + group basic + type ITEM_TYPE_MULTI + text "Use Set Seed:" + cvar "cg_useSetSeed" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to use the set seed below, or OFF to use a random seed." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name set_seed + group basic + type ITEM_TYPE_EDITFIELD + text "Set Seed:" + cvar "cg_setSeed" + cvarFloatList { } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set the seed for the randomizer when Use Set Seed is set to ON." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name randomizer_basic_info1 + group basic + text "Base randomizer have the following :" + font 2 + textscale 0.8 + rect 305 351 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + textaligny -2 + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 11 + decoration + } + + itemDef + { + name randomizer_basic_info2 + group basic + text "RNG on items, NPC types." + font 2 + textscale 0.8 + rect 305 371 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + textaligny -2 + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 11 + decoration + } + + itemDef + { + name randomizer_basic_info3 + group basic + text "-" + font 2 + textscale 0.8 + rect 305 391 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + textaligny -2 + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 11 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // ENHANCEMENTS FIELDS GROUP 1 + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name enable_randomizerEnhancements + group enhancements_cosmetics + type ITEM_TYPE_MULTI + text "Enable Enhancements:" + cvar "cg_enableRandomizerEnhancements" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable listed enhancements" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name random_saber_color + group enhancements_cosmetics + type ITEM_TYPE_MULTI + text "Random Saber Color:" + cvar "cg_enableRandSaberColor" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random saber color every time the saber is chosen" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name random_language_voice_lines + group enhancements_cosmetics + type ITEM_TYPE_MULTI + text "Random Language Voices:" + cvar "cg_enableRandLanguageVoices" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Use a random language version of each line (chosen per level)" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + //---------------------------------------------------------------------------------------------- + // + // ENHANCEMENTS FIELDS GROUP 2 + // + //---------------------------------------------------------------------------------------------- + + itemDef + { + name enable_randomizerEnhancements + group enhancements_force + type ITEM_TYPE_MULTI + text "Enable Enhancements:" + cvar "cg_enableRandomizerEnhancements" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable listed enhancements" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name random_saber_style + group enhancements_force + type ITEM_TYPE_MULTI + text "Random Saber Style:" + cvar "cg_enableRandSaberStyle" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random saber style at pickup" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name random_saber_length + group enhancements_force + type ITEM_TYPE_MULTI + text "Random Saber Length:" + cvar "cg_enableRandSaberLength" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random saber length every time the saber is chosen" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name random_jump_height + group enhancements_force + type ITEM_TYPE_MULTI + text "Random Jump Height:" + cvar "cg_enableRandJumpHeight" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random jump height every jump" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name random_jump_strength + group enhancements_force + type ITEM_TYPE_MULTI + text "Random Jump Strength:" + cvar "cg_enableRandJumpStrength" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random jump strength (vertical speed) every jump" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + + itemDef + { + name random_npc_speed + group enhancements_force + type ITEM_TYPE_MULTI + text "Random NPC Speed:" + cvar "cg_enableRandNPCSpeed" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Between 33% and 300%." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } + + + //---------------------------------------------------------------------------------------------- + // + // ENHANCEMENTS FIELDS GROUP 3 + // + //---------------------------------------------------------------------------------------------- + + itemDef + { + name enable_randomizerEnhancements + group enhancements_evil + type ITEM_TYPE_MULTI + text "Enable Enhancements:" + cvar "cg_enableRandomizerEnhancements" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable listed enhancements" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name random_weapon_projectiles + group enhancements_evil + type ITEM_TYPE_MULTI + text "Random Weapon Projectile:" + cvar "cg_enableRandWeaponProjectile" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random weapon projectiles, check below for details" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name random_weapon_projectiles_mode + group enhancements_evil + type ITEM_TYPE_MULTI + text "Random Projectile CHAOS:" + cvar "cg_enableRandWeaponProjectileMode" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Off : per map, per weapon, per npc | On : CHAOS." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name random_textures + group enhancements_evil + type ITEM_TYPE_MULTI + text "Random Textures:" + cvar "cg_enableRandTextures" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random textures assigned per surface" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name random_npc_health + group enhancements_evil + type ITEM_TYPE_MULTI + text "Random NPC health :" + cvar "cg_enableRandNpcHealth" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Between 25% and 400%." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + + + //---------------------------------------------------------------------------------------------- + // + // ASSISTS FIELDS + // + //---------------------------------------------------------------------------------------------- + + itemDef + { + name enable_randomizerEnhancements + group assists + type ITEM_TYPE_MULTI + text "Enable Enhancements:" + cvar "cg_enableRandomizerEnhancements" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable listed enhancements" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name enable_safeStart + group assists + type ITEM_TYPE_MULTI + text "Enable Safe Start:" + cvar "cg_enableSafeStart" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Prevents first two enemies from attacking unprovoked" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name startWithPush + group assists + type ITEM_TYPE_MULTI + text "Start With Force Push" + cvar "cg_startWithPush" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Start with force push 1" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name bonusJanHealth + group assists + type ITEM_TYPE_MULTI + text "Bonus Jan Health:" + cvar "cg_bonusJanHealth" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Starts Jan with +50 bonus health on kejim_post" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name random_kyle_health + group assists + type ITEM_TYPE_MULTI + text "Random Kyle/Player health :" + cvar "cg_enableRandKyleHealth" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Between 33% and 300%." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + } + } +} diff --git a/assets/ui/ingamesave.menu b/assets/ui/ingamesave.menu new file mode 100644 index 00000000..4058ac60 --- /dev/null +++ b/assets/ui/ingamesave.menu @@ -0,0 +1,678 @@ +// INGAME MAIN MENU +{ + menuDef + { + name "ingamesaveMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + appearanceIncrement 10 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + disablecolor .5 .5 .5 1 + + onOpen + { + uiScript ReadSaveDirectory + } + + onESC + { + uiScript closeingame // Close menu + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + + // Big button "SAVE" + itemDef + { + name savegamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name savegamebutton + group toprow + text @MENUS1_SAVE + descText @MENUS1_SAVE_CURRENT_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show savegamebutton_glow + } + mouseExit + { + hide savegamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamesaveMenu + } + } + + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameloadMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameControlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameSetupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamerandomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // EXIT button in lower left corner + itemDef + { + name exitgamebutton_glow + group none + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamequitMenu + } + } + + // RESUME button in the lower right corner + itemDef + { + name resumebutton_glow + group none + style WINDOW_STYLE_SHADER + rect 495 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resume + group none + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 495 444 130 24 + text @MENUS1_RESUME + descText @MENUS1_RESUME_CURRENT_GAME + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + mouseEnter + { + show resumebutton_glow + } + mouseExit + { + hide resumebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + uiScript closeingame // Close menu + } + } + + //---------------------------------------------------------------------------------------------- + // + // SAVE GAME FIELDS + // + //---------------------------------------------------------------------------------------------- + // Save Game title + itemDef + { + name savegame_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text @MENUS1_SAVE_GAME + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + decoration + } + + + itemDef + { + name savegamedesc + group savegame + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + text @MENUS1_DESC + cvar ui_gameDesc + maxChars 60 + rect 150 165 450 16 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny -4 + font 2 + textscale .8 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + + itemDef + { + name savegamelist + group loadscreen + rect 145 190 285 230 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + font 2 + textaligny 2 + textscale 0.7 + border 1 + bordersize 1 + bordercolor .5 .5 .5 .5 + forecolor 0.65 0.65 1 1 + backcolor 0 0 .5 .25 + outlinecolor .5 .5 .5 .5 + elementtype LISTBOX_TEXT + feeder FEEDER_SAVEGAMES + notselectable + visible 1 + columns 2 2 35 150 155 25 100 + mouseEnter + { + setitemcolor savegamelist bordercolor .265 .824 .886 1 + } + mouseExit + { + setitemcolor savegamelist bordercolor .5 .5 .5 .5 + } + } + + itemDef + { + name savegamepic + group loadscreen + style WINDOW_STYLE_EMPTY + ownerdraw 236 //UI_ALLMAPS_SELECTION + font 2 + textscale .8 + forecolor 1 1 1 1 + rect 435 190 180 135 + border 1 + bordercolor .265 .824 .886 .25 + visible 1 + decoration + } + + itemDef + { + name savegameaction_glow + group glow + style WINDOW_STYLE_SHADER + rect 440 350 175 25 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name savegamebutton + group toprow + text @MENUS1_SAVE_GAME + descText @MENUS1_SAVE_GAME + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 440 350 175 25 + font 3 + textscale 0.8 + textalignx 175 + textaligny 1 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + mouseEnter + { + show savegameaction_glow + } + mouseExit + { + hide savegameaction_glow + } + action + { + play sound/interface/button1.wav ; + uiScript savegame + } + } + + // deletegame button + itemDef + { + name deletegameaction_glow + group glow + style WINDOW_STYLE_SHADER + rect 440 375 175 25 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name deletegamebutton + group toprow + text @MENUS1_DELETE_GAME + descText @MENUS1_DELETE_CHOSEN_GAME + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 440 375 175 25 + font 3 + textscale 0.8 + textalignx 175 + textaligny 1 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + cvarTest "ui_SelectionOK" + enableCvar { "1" } + mouseEnter + { + show deletegameaction_glow + } + mouseExit + { + hide deletegameaction_glow + } + action + { + play sound/interface/button1.wav ; + hide glow ; + uiScript deletegame + } + } + } +} + + + + + + + + + + + + + + + + + + + diff --git a/base/ui/ingamesetup.menu b/assets/ui/ingamesetup.menu similarity index 94% rename from base/ui/ingamesetup.menu rename to assets/ui/ingamesetup.menu index d54994cd..bdbfeff8 100644 --- a/base/ui/ingamesetup.menu +++ b/assets/ui/ingamesetup.menu @@ -1,2994 +1,3036 @@ -//-------------------------------------------------------------- -// -// INGAME SETUP MENU -// -// Edited for Speed-Outcast to show speedrun options. -// -//-------------------------------------------------------------- -{ - menuDef - { - name "ingameSetupMenu" - fullScreen 1 // MENU_TRUE - rect 0 0 640 480 // Size and position of the menu - visible 1 // Visible on open - focusColor 1 1 1 1 // Focus color for text and items - appearanceIncrement 10 // In miliseconds - descX 375 - descY 425 - descScale .8 - descColor .235 .882 .847 1 // Focus color for text and items - descAlignment ITEM_ALIGN_CENTER - - onOpen - { - uiScript getvideosetup ; // Get video settings - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide defaults - hide speedrun ; - show setup_background ; - show video ; - setitemcolor video1menubutton forecolor 1 1 1 1 ; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1 ; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - - onESC - { - play "sound/interface/button1.wav" - - defer VideoSetup videowarningMenu ; - - hide highlights ; - close all ; - open ingameMainMenu ; - } - - //---------------------------------------------------------------------------------------------- - // - // MENU BACKGROUND - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name frame_pic - group none - style WINDOW_STYLE_SHADER - rect 0 0 640 480 - background "gfx/menus/menu1" // Frame - forecolor 1 1 1 1 - visible 1 - decoration - } - - // The saber glow on the left - itemDef - { - name saberglow - group none - style WINDOW_STYLE_SHADER - rect 30 0 90 480 - background "gfx/menus/menu3" // Frame - forecolor 0.8 0.8 0.8 1 - visible 1 - decoration - } - - - // The starwars logo on the top - itemDef - { - name starwars - group none - style WINDOW_STYLE_SHADER - rect 143 12 470 93 - background "gfx/menus/menu4" // Frame - forecolor 1 1 1 1 - visible 1 - decoration - } - - // The saber halo on the left - itemDef - { - name saberhalo - group none - style WINDOW_STYLE_SHADER - rect -425 -185 1000 1000 - background "gfx/menus/menu2" // Frame - forecolor 0.5 0.5 0.5 1 - visible 1 - decoration - } - - itemDef - { - name logomodel - group none - type ITEM_TYPE_MODEL - rect -123 48 400 400 - model_angle 90 - model_rotation 3.5 - asset_model "models/map_objects/bespin/jk2logo.md3" -// model_fovx 37 -// model_fovy 34 -// model_origin 100 100 100 - visible 1 - decoration - } - - // The saber halo on the left - itemDef - { - name saberhalo2 - group none - style WINDOW_STYLE_SHADER - rect -225 15 600 600 - background "gfx/menus/menu2b" // Frame - forecolor 0.25 0.25 0.25 1 - visible 1 - decoration - } - - //---------------------------------------------------------------------------------------------- - // - // TOP MENU BUTTONS - // - //---------------------------------------------------------------------------------------------- - - - // Big button "SAVE" - itemDef - { - name savegamebutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 115 115 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name savegamebutton - group toprow - text @MENUS1_SAVE - descText @MENUS1_SAVE_CURRENT_GAME - style WINDOW_STYLE_EMPTY - type ITEM_TYPE_BUTTON - rect 115 115 130 24 - textaligny 0 - font 3 - textscale 0.9 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 65 - forecolor 0.65 0.65 1 1 - visible 1 - - mouseEnter - { - show savegamebutton_glow - } - mouseExit - { - hide savegamebutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - close all ; - open ingamesaveMenu - } - } - - - // Big button "LOAD" - itemDef - { - name loadgamebutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 245 115 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name loadgamebutton - group toprow - text @MENUS1_LOAD - descText @MENUS1_LOAD_A_SAVED_GAME - rect 245 115 130 24 - style WINDOW_STYLE_EMPTY - type ITEM_TYPE_BUTTON - textstyle 3 - font 3 - textscale 0.9 - textaligny 0 - textalign ITEM_ALIGN_CENTER - textalignx 65 - forecolor 0.65 0.65 1 1 - visible 1 - - mouseEnter - { - show loadgamebutton_glow - } - mouseExit - { - hide loadgamebutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - close all ; - open ingameloadMenu - } - } - - - // Big button "CONTROLS" - itemDef - { - name controlsbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 375 115 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef { - name controlsbutton - group toprow - text @MENUS0_CONTROLS2 - descText @MENUS0_CONFIGURE_GAME_CONTROLS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 375 115 130 24 - font 3 - textscale 0.9 - textaligny 0 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 65 - backcolor 0 0 0 0 - forecolor 0.65 0.65 1 1 - visible 1 - - mouseEnter - { - show controlsbutton_glow - } - mouseExit - { - hide controlsbutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - close all ; - open ingameControlsMenu ; - } - } - - // Big button "SETUP" - itemDef - { - name setupbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 505 115 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef { - name setupbutton - group toprow - text @MENUS0_SETUP - descText @MENUS0_CONFIGURE_GAME_SETTINGS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 505 115 130 24 - font 3 - textscale 0.9 - textaligny 0 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 65 - backcolor 0 0 0 0 - forecolor 1 1 1 1 - visible 1 - decoration - action - { - play "sound/interface/button1.wav" ; - } - - mouseEnter - { - show setupbutton_glow - } - mouseExit - { - hide setupbutton_glow - } - } - - itemDef - { - name header_line - group toprow - style WINDOW_STYLE_SHADER - rect 125 136 500 4 - background "gfx/menus/menu_line" // Frame - forecolor 1 1 1 1 - visible 1 - decoration - } - - //---------------------------------------------------------------------------------------------- - // - // OTHER MAIN MENU BUTTONS - // - //---------------------------------------------------------------------------------------------- - // EXIT button in lower left corner - itemDef - { - name exitgamebutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 115 444 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name exitgamebutton - group othermain - text @MENUS0_EXIT - descText @MENUS1_JEDI_KNIGHT_II - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 115 444 130 24 - font 3 - textscale 1 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 65 - textaligny -1 - forecolor 0.65 0.65 1 1 - visible 1 - - mouseEnter - { - show exitgamebutton_glow - } - mouseExit - { - hide exitgamebutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - close all ; - open ingamequitMenu - } - } - - // RESUME button in the lower right corner - itemDef - { - name resumebutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 495 444 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name resume - group none - style WINDOW_STYLE_EMPTY - type ITEM_TYPE_BUTTON - rect 495 444 130 24 - text @MENUS1_RESUME - descText @MENUS1_RESUME_CURRENT_GAME - font 3 - textscale 1 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 65 - textaligny -1 - forecolor 0.65 0.65 1 1 - visible 1 - mouseEnter - { - show resumebutton_glow - } - mouseExit - { - hide resumebutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - uiScript closeingame // Close menu - } - } - - //---------------------------------------------------------------------------------------------- - // - // SECOND ROW MENU BUTTONS - // - //---------------------------------------------------------------------------------------------- - // Setup Options title - itemDef - { - name setup_title - group none - style WINDOW_STYLE_SHADER - background "gfx/menus/menu_blendbox" - text @MENUS2_SETUP_OPTIONS - rect 150 145 450 16 - font 3 - textscale 0.7 - textalign ITEM_ALIGN_CENTER - textalignx 225 - textaligny -2 - forecolor 1 1 1 1 - visible 1 - // appearance_slot 2 - decoration - } - - - // video1 button - itemDef - { - name video1button_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 173 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name video1menubutton - group none - text @MENUS1_VIDEO - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 173 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textstyle 3 - textalign ITEM_ALIGN_RIGHT - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGURE_VIDEO_SETTINGS - - mouseEnter - { - show video1button_glow - } - mouseExit - { - hide video1button_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - uiScript getvideosetup ; // Get video settings - - show setup_background ; - show video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide defaults ; - hide speedrun ; - setfocus graphics ; - setitemcolor video1menubutton forecolor 1 1 1 1 ; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1 ; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // video2 button - itemDef - { - name video2button_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 203 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name video2menubutton - group none - text @MENUS1_MORE_VIDEO - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 203 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGUE_MORE_VIDEO_SETTINGS - - mouseEnter - { - show video2button_glow - } - mouseExit - { - hide video2button_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - show video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1 ; - setitemcolor video2menubutton forecolor 1 1 1 1 ; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1 ; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1 ; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // sound button - itemDef - { - name soundbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 233 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name soundmenubutton - group none - text @MENUS1_SOUND - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 233 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGURE_SOUND_SETTINGS - - mouseEnter - { - show soundbutton_glow - } - mouseExit - { - hide soundbutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - show sound ; - hide options ; - hide defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 1 1 1 1 ; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // gameoptions button - itemDef - { - name gameoptionsbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 263 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name gameoptionmenubutton - group none - text @MENUS1_GAME_OPTIONS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 263 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGURE_GAME_OPTIONS - - mouseEnter - { - show gameoptionsbutton_glow - } - mouseExit - { - hide gameoptionsbutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - show options ; - hide defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 1 1 1 1 ; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - - // gamedefaults button - itemDef - { - name gamedefaultsbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 323 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name gamedefaultsmenubutton - group none - text @MENUS1_DEFAULTS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 323 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_RESTORE_DEFAULT_SETTINGS - - mouseEnter - { - show gamedefaultsbutton_glow - } - mouseExit - { - hide gamedefaultsbutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - show defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 1 1 1 1 ; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // speedrun button - itemDef - { - name speedrunmenubutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 368 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name speedrunmenubutton - group none - text Speedrun - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 368 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText "Speedrun Settings" - - mouseEnter - { - show speedrunmenubutton_glow - } - mouseExit - { - hide speedrunmenubutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide defaults ; - show speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 1 1 1 1 ; - } - } - - itemDef - { - name setup_background - group none - style WINDOW_STYLE_SHADER - rect 300 171 300 250 - background "gfx/menus/menu_box1" // Frame - forecolor 1 1 1 1 - visible 0 - decoration - } - - //---------------------------------------------------------------------------------------------- - // - // HIGHLIGHT BARS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name highlight1 - group highlights - style WINDOW_STYLE_SHADER - rect 305 171 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight2 - group highlights - style WINDOW_STYLE_SHADER - rect 305 191 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight3 - group highlights - style WINDOW_STYLE_SHADER - rect 305 211 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight4 - group highlights - style WINDOW_STYLE_SHADER - rect 305 231 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight5 - group highlights - style WINDOW_STYLE_SHADER - rect 305 251 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight6 - group highlights - style WINDOW_STYLE_SHADER - rect 305 271 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight7 - group highlights - style WINDOW_STYLE_SHADER - rect 305 291 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight8 - group highlights - style WINDOW_STYLE_SHADER - rect 305 311 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight9 - group highlights - style WINDOW_STYLE_SHADER - rect 305 331 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight10 - group highlights - style WINDOW_STYLE_SHADER - rect 305 351 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight11 - group highlights - style WINDOW_STYLE_SHADER - rect 305 371 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight12 - group highlights - style WINDOW_STYLE_SHADER - rect 305 391 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - //---------------------------------------------------------------------------------------------- - // - // VIDEO 1 MENU BUTTONS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name graphics - group video - text @MENUS0_VIDEO_QUALITY - type ITEM_TYPE_MULTI - rect 305 171 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - style WINDOW_STYLE_FILLED - forecolor 1 1 1 1 - descText @MENUS1_SELECT_PRESET_GRAPHIC - - visible 0 - - cvar "ui_r_glCustom" - cvarFloatList - { - @MENUS1_HIGH_QUALITY 0 - @MENUS1_NORMAL 1 - @MENUS1_FAST 2 - @MENUS1_FASTEST 3 - @MENUS1_CUSTOM 4 - } - - mouseenter - { - show highlight1 - } - mouseexit - { - hide highlight1 - } - action - { - play "sound/interface/button1.wav" ; - uiScript update "ui_r_glCustom" ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - - itemDef - { - name video_mode - group video - type ITEM_TYPE_MULTI - text @MENUS0_VIDEO_MODE - cvarFloatList { @MENUS1_640_X_480 3 @MENUS1_800_X_600 4 @MENUS1_960_X_720 5 @MENUS1_1024_X_768 6 @MENUS1_1152_X_864 7 @MENUS1_1280_X_1024 8 @MENUS1_1600_X_1200 9 @MENUS1_2048_X_1536 10 } - cvar "ui_r_mode" - - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - descText @MENUS1_CHANGE_THE_DISPLAY_RESOLUTION - - visible 0 - - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name color_depth - group video - type ITEM_TYPE_MULTI - text @MENUS0_COLOR_DEPTH - rect 305 231 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - - cvarFloatList { @MENUS0_DEFAULT 0 @MENUS0_16_BIT 16 @MENUS0_32_BIT 32 } - descText @MENUS1_CHANGE_THE_NUMBER_OF - cvar "ui_r_colorbits" - - visible 0 - - mouseenter - { - show highlight4 - } - mouseexit - { - hide highlight4 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - uiScript update "ui_r_colorbits" ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name fullscreen - group video - type ITEM_TYPE_MULTI - text @MENUS0_FULL_SCREEN - rect 305 251 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - descText @MENUS1_TOGGLE_BETWEEN_FULL_SCREEN - cvar "ui_r_fullscreen" - - visible 0 - - mouseenter - { - show highlight5 - } - mouseexit - { - hide highlight5 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name geometric_detail - group video - type ITEM_TYPE_MULTI - text @MENUS0_GEOMETRIC_DETAIL - rect 305 271 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_LOW 2 @MENUS0_MEDIUM 1 @MENUS0_HIGH 0 } - descText @MENUS1_ADJUST_THE_NUMBER_OF - cvar "ui_r_lodbias" - - visible 0 - - mouseenter - { - show highlight6 - } - mouseexit - { - hide highlight6 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - uiScript update "ui_r_lodbias" ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name texture_detail - group video - type ITEM_TYPE_MULTI - text @MENUS0_TEXTURE_DETAIL - rect 305 291 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_LOW 3 @MENUS0_MEDIUM 2 @MENUS0_HIGH 1 @MENUS0_VERY_HIGH 0 } - descText @MENUS1_SELECT_THE_RESOLUTION - cvar "ui_r_picmip" - - visible 0 - - mouseenter - { - show highlight7 - } - mouseexit - { - hide highlight7 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name texture_quality - group video - type ITEM_TYPE_MULTI - text @MENUS0_TEXTURE_QUALITY - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_DEFAULT 0 @MENUS0_16_BIT 16 @MENUS0_32_BIT 32 } - descText @MENUS1_SELECT_THE_NUMBER_OF - cvar "ui_r_texturebits" - - visible 0 - - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name texture_filter - group video - type ITEM_TYPE_MULTI - text @MENUS0_TEXTURE_FILTER - rect 305 331 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarStrList { @MENUS1_BILINEAR , "GL_LINEAR_MIPMAP_NEAREST" , @MENUS1_TRILINEAR , "GL_LINEAR_MIPMAP_LINEAR" } - descText @MENUS1_ADJUST_HOW_WELL_THE_TEXTURES - cvar "ui_r_texturemode" - - visible 0 - - mouseenter - { - show highlight9 - } - mouseexit - { - hide highlight9 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name simple_shaders - group video - type ITEM_TYPE_MULTI - text @MENUS0_DETAILED_SHADERS - rect 305 351 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - descText @MENUS1_HIDE_OR_UNHIDE_TEXTURES - cvar "ui_r_detailtextures" - - visible 0 - - mouseenter - { - show highlight10 - } - mouseexit - { - hide highlight10 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name compress_textures - group video_obsolete - type ITEM_TYPE_MULTI - text @MENUS0_COMPRESSED_TEXTURES - rect 305 371 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - descText @MENUS1_TAKE_ADVANTAGE_OF_3D - cvar "ui_r_ext_compress_textures" - - visible 0 - - mouseenter - { - show highlight11 - } - mouseexit - { - hide highlight11 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - // APPLY CHANGES BUTTON - itemDef - { - name applybutton_glow - group none - style WINDOW_STYLE_SHADER - rect 120 383 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 0.5 0.5 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name applyChanges - group none - text @MENUS0_APPLY_CHANGES - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 383 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 1 0 0 1 - backcolor 0 0 1 0 - visible 0 - - mouseEnter - { - show applybutton_glow - } - mouseExit - { - hide applybutton_glow - } - action - { - play "sound/interface/button1.wav" ; - show setup_background ; - show vidrestart ; - setfocus vidrestart_no ; - hide video ; - hide video2 ; - hide applybutton_glow ; - } - } - - -// This button doesn't get shown anymore. - itemDef - { - name gl_extensions - group video - type ITEM_TYPE_MULTI - text @MENUS1_GL_EXTENSIONS - rect 305 191 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - cvar ui_r_allowExtensions - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - // appearance_slot 3 - descText @MENUS2_TOGGLE_GL_EXTENSIONS - - mouseenter - { - show highlight2 - } - mouseexit - { - hide highlight2 - } - action - { - play "sound/interface/button1.wav" - setcvar ui_r_modified 1 - show applyChanges - } - } - - - //---------------------------------------------------------------------------------------------- - // - // VIDEO RESTART - // - //---------------------------------------------------------------------------------------------- - // Faint red box - itemDef - { - name vidrestart_background - group vidrestart - style WINDOW_STYLE_SHADER - rect 300 171 300 250 - background "gfx/menus/menu_boxred" // Frame - forecolor 1 1 1 0.5 - visible 0 - decoration - } - - itemDef - { - name vidrestart_text1 - group vidrestart - text @MENUS3_INGAME_DEFAULT - text2 @MENUS3_INGAME_DEFAULT2 - rect 305 230 290 20 - textalign ITEM_ALIGN_CENTER - text2aligny 18 - textalignx 145 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - decoration - } - - itemDef - { - name vidrestart_text2 - group vidrestart - text @MENUS0_VID_RESTART3 - rect 305 300 290 20 - textalign ITEM_ALIGN_CENTER - textalignx 145 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - } - - - - itemDef - { - name vidrestart_yes_button - group none - style WINDOW_STYLE_SHADER - rect 467 386 120 32 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - decoration - visible 0 - // appearance_slot 4 - } - - // YES button - itemDef - { - name vidrestart_yes - group vidrestart - text @MENUS0_YES - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 467 386 120 32 - font 2 - textscale 1 - textalign ITEM_ALIGN_CENTER - textalignx 60 - textaligny 0 - descText @MENUS0_APPLY_CHANGES_AND_THEN - forecolor 0.65 0.65 1 1 - visible -1 - // appearance_slot 5 - - action - { - play "sound/interface/button1.wav" ; - close all ; - uiScript updatevideosetup ; - } - mouseEnter - { - show vidrestart_yes_button - } - mouseExit - { - hide vidrestart_yes_button - } - - } - - itemDef - { - name vidrestart_no_button - group none - style WINDOW_STYLE_SHADER - rect 305 386 120 32 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - decoration - visible 0 - // appearance_slot 3 - } - - // CANCEL button - itemDef - { - name vidrestart_no - group vidrestart - text @MENUS0_NO - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 305 386 120 32 - font 2 - textscale 1 - textalign ITEM_ALIGN_CENTER - textalignx 60 - textaligny -1 - descText @MENUS0_DO_NOT_APPLY_CHANGES - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 6 - action - { - play "sound/interface/button1.wav" ; - setfocus video1menubutton ; - show setup_background ; - hide vidrestart ; - show video ; - hide video2 ; - show applyChanges ; - hide vidrestart_yes_button ; - hide vidrestart_no_button ; - } - mouseEnter - { - show vidrestart_no_button - } - mouseExit - { - hide vidrestart_no_button - } - - } - - //---------------------------------------------------------------------------------------------- - // - // VIDEO 2 - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name gamma_text - group video2 - style WINDOW_STYLE_SHADER - rect 310 171 280 36 - background "gfx/menus/greyscale" // greyscale - forecolor 1 1 1 1 - visible 0 - decoration - // appearance_slot 1 - } - - - - itemDef - { - name bright_text - group video2 - text @MENUS0_ADJUST_BRIGHTNESS_SLIDER - text2 @MENUS0_THE_NUMBER_6_CAN_BARELY - text2aligny 14 - textalignx 128 - font 2 - textscale 0.8 - rect 305 211 256 20 - textalign ITEM_ALIGN_CENTER - forecolor 0.7 0.7 0.7 1 - visible 0 - // appearance_slot 2 - decoration - } - - itemDef - { - name brightness - group video2 - type ITEM_TYPE_SLIDER - text @MENUS0_VIDEO_BRIGHTNESS - cvarfloat "r_gamma" 1 .5 3 - rect 305 251 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 120 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 3 - descText @MENUS1_ADJUST_THE_BRIGHTNESS - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight5 - } - mouseexit - { - hide highlight5 - } - } - - itemDef - { - name video_sync - group video2 - type ITEM_TYPE_MULTI - text @MENUS3_VIDEO_SYNC - cvar "r_swapInterval" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 271 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS3_VIDEO_SYNC_DESC - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight6 - } - mouseexit - { - hide highlight6 - } - } - - - - itemDef - { - name dynamic_light - group video2 - type ITEM_TYPE_MULTI - text @MENUS0_DYNAMIC_LIGHTS - cvar "r_dynamiclight" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 291 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS1_TOGGLE_TO_TURN_ON_MOVING - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight7 - } - mouseexit - { - hide highlight7 - } - } - - itemDef - { - name shadows - group video2 - type ITEM_TYPE_MULTI - text @MENUS3_SHADOWS - descText @MENUS3_SHADOWS_DESC - cvar "cg_shadows" - cvarFloatList - { - "None" 0 - "Simple" 1 - "Volumetric" 2 -// "Projected" 3 - } - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - } - - itemDef - { - name wall_marks - group video2 - type ITEM_TYPE_MULTI - text @MENUS0_WALL_MARKS - cvar "cg_marks" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 331 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS1_TOGGLE_TO_DISPLAY_SCORCH - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight9 - } - mouseexit - { - hide highlight9 - } - } - - itemDef - { - name video_mode - group video2 - type ITEM_TYPE_MULTI - text @MENUS0_ANISOTROPIC_FILTERING - cvarTest r_ext_texture_filter_anisotropic_avail - hideCvar { 0 } - cvar r_ext_texture_filter_anisotropic - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 351 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 5 - - descText @MENUS1_TOGGLE_ADVANCED_TEXTURE - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight10 - } - mouseexit - { - hide highlight10 - } - } - - itemDef - { - name light_flares - group video2_obsolete - type ITEM_TYPE_MULTI - text @MENUS0_LIGHT_FLARES - cvar "r_flares" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 371 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS1_TOGGLE_TO_SHOW_HALOS - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight11 - } - mouseexit - { - hide highlight11 - } - } - - itemDef - { - name advancedvideobutton_glow - group none - style WINDOW_STYLE_SHADER - rect 355 391 200 20 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name advancedvideo - group video2 - type ITEM_TYPE_BUTTON - text @MENUS2_SHOW_DRIVER_INFO - rect 355 391 200 20 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 100 - font 2 - textscale 0.8 - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 5 - descText @MENUS2_SHOW_ADVANCED_INFORMATION - - mouseenter - { - show advancedvideobutton_glow - } - mouseexit - { - hide advancedvideobutton_glow - } - action - { - play "sound/interface/button1.wav" ; - hide advancedvideobutton_glow ; - open videodriverMenu - } - } - - //---------------------------------------------------------------------------------------------- - // - // SOUND FIELDS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name effects_volume - group sound - type ITEM_TYPE_SLIDER - text @MENUS0_EFFECTS_VOLUME - cvarfloat "s_volume" 0 0 1 - rect 305 191 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 120 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS1_ADJUST_VOLUME_FOR_SOUND - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight2 - } - mouseexit - { - hide highlight2 - } - } - - itemDef - { - name music_volume - group sound - type ITEM_TYPE_SLIDER - text @MENUS0_MUSIC_VOLUME - cvarfloat "s_musicvolume" 0 0 1 - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 120 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 2 - descText @MENUS1_ADJUST_VOLUME_FOR_MUSIC - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - } - - itemDef - { - name voice_volume - group sound - type ITEM_TYPE_SLIDER - text @MENUS1_VOICE_VOLUME - cvarfloat "s_volumevoice" 0 0 1 - rect 305 231 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 120 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 2 - descText @MENUS2_ADJUST_VOLUME_FOR_SPEECH - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight4 - } - mouseexit - { - hide highlight4 - } - } - - itemDef - { - name sound_quality - group sound - type ITEM_TYPE_MULTI - text @MENUS0_SOUND_QUALITY - cvar "s_khz" - cvarFloatList { @MENUS0_LOW 11 @MENUS0_HIGH 22 } - rect 305 271 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 3 - descText @MENUS2_TRADE_CLARITY_OF_SOUND - - mouseenter - { - show highlight6 - } - mouseexit - { - hide highlight6 - } - action - { - play "sound/interface/button1.wav" - uiScript update s_khz - } - } - - //---------------------------------------------------------------------------------------------- - // - // OPTION FIELDS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name draw_crosshair - group options - type ITEM_TYPE_MULTI - text @MENUS2_DRAW_CROSSHAIR - cvar "cg_drawcrosshair" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 171 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_TOGGLE_TO_SHOW_OR_HIDE - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight1 - } - mouseexit - { - hide highlight1 - } - } - - - itemDef - { - name identifytarget - group options - type ITEM_TYPE_MULTI - text @MENUS0_IDENTIFY_TARGET - cvar "cg_crosshairIdentifyTarget" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 191 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_TOGGLE_TO_HAVE_THE_CROSSHAIR - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight2 - } - mouseexit - { - hide highlight2 - } - } - - - itemDef - { - name slowmo - group options - type ITEM_TYPE_MULTI - text @MENUS2_SLOW_MOTION_DEATH - cvar "d_slowmodeath" - cvarFloatList - { - @MENUS2_NEVER 0 - @MENUS2_ON_DEATH 1 - @MENUS2_RARELY 2 - @MENUS1_NORMAL 3 - @MENUS2_OFTEN 4 - @MENUS2_FREQUENTLY 5 - @MENUS2_EXCESSIVELY 6 - } - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_SELECT_THE_FREQUENCY - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - } - - - itemDef - { - name force3rd - group options - type ITEM_TYPE_MULTI - text @MENUS2_3RD_PERSON_LIGHTSABER - cvar "cg_saberAutoThird" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 231 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_WHEN_READYING_LIGHTSABER - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight4 - } - mouseexit - { - hide highlight4 - } - } - - - itemDef - { - name force1st - group options - type ITEM_TYPE_MULTI - text @MENUS2_1ST_PERSON_GUNS - cvar "cg_gunAutoFirst" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 251 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_WHEN_PUTTING_AWAY_SABER - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight5 - } - mouseexit - { - hide highlight5 - } - } - - - itemDef - { - name dismemberment - group options - type ITEM_TYPE_MULTI - text @MENUS2_DISMEMBERMENT - cvar "g_dismemberment" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 3 - } - cvarTest ui_iscensored - hideCvar { 1 } - rect 305 291 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_SELECT_WHAT_LIGHTSABER - action - { - play "sound/interface/button1.wav" ; - } - mouseenter - { - show highlight7 - } - mouseexit - { - hide highlight7 - } - } - - -// Weapon Sway. Yes, this is nutty. Two cvars here, one removes weapon sway, the other adds it. - itemDef - { - name weaponswayon - group options - type ITEM_TYPE_MULTI - text @MENUS3_VIEW_SWAYING - descText @MENUS3_VIEW_SWAYING_DESC - cvar "ui_disableWeaponSway" - cvarFloatList - { - @MENUS0_ON 0 - @MENUS0_OFF 1 - } - cvarTest "ui_disableWeaponSway" - showCvar - { - "0" - } - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - - action - { - play "sound/interface/button1.wav" ; - exec "exec noMotion.cfg" ; - show weaponswayoff ; - setfocus weaponswayoff - } - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - } - - itemDef - { - name weaponswayoff - group options - type ITEM_TYPE_MULTI - text @MENUS3_VIEW_SWAYING - descText @MENUS3_VIEW_SWAYING_DESC - cvar "ui_disableWeaponSway" - cvarFloatList - { - @MENUS0_ON 0 - @MENUS0_OFF 1 - } - cvarTest "ui_disableWeaponSway" - hideCvar - { - "0" - } - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - - action - { - play "sound/interface/button1.wav" ; - exec "exec restoreMotion.cfg" ; - show weaponswayon ; - setfocus weaponswayon - } - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - } - -/* - itemDef - { - name dismembermentprob - group options_obsolete - type ITEM_TYPE_MULTI - text @MENUS2_DISMEMBER_PROBABILITY - cvar "g_dismemberProbabilities" - cvarFloatList - { - @MENUS2_RARE 2 - @MENUS1_NORMAL 1 - @MENUS2_EXCESSIVE 0 - } - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_SELECT_FREQUENCY_OF_DISMEMBERMENT - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - } -*/ - - itemDef - { - name text - group options - type ITEM_TYPE_MULTI - text @MENUS0_TEXT - cvar "sp_language" - cvarFloatList - { - "English" 0 - "Francais" 1 - "Deutsch" 2 - } - rect 305 351 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_CHOOSE_THE_LANGUAGE_FOR - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight10 - } - mouseexit - { - hide highlight10 - } - } - - itemDef - { - name voice - group options - type ITEM_TYPE_MULTI - text @MENUS1_VOICE - cvar "s_language" - cvarStrList - { - "English", "english" - "Francais" "francais" - "Deutsch" "deutsch" - } - rect 305 371 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS3_CHOOSE_THE_LANGUAGE_TO - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight11 - } - mouseexit - { - hide highlight11 - } - } - - itemDef - { - name voice - group options - type ITEM_TYPE_MULTI - text @MENUS1_SUBTITLES - cvar "g_subtitles" - cvarFloatList - { - @MENUS3_NONE 0 - @MENUS3_IN_CINEMATICS 2 -// @MENUS3_ALL_VOICEOVERS 1 - } - rect 305 391 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS3_TOGGLE_WHETHER_SUBTITLES - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight12 - } - mouseexit - { - hide highlight12 - } - } - - - -// This menu option is no longer used. - itemDef - { - name sync_frame - group options_obsolete - type ITEM_TYPE_MULTI - text @MENUS1_SYNC_EVERY_FRAME - cvar "r_finish" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 1 - } - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS3_TOGGLE_TO_PREVENT_VIDEO - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - } - - - //---------------------------------------------------------------------------------------------- - // - // RESET DEFAULTS - // - //---------------------------------------------------------------------------------------------- - // Faint red box - itemDef - { - name vidrestart_background - group defaults - style WINDOW_STYLE_SHADER - rect 300 171 300 250 - background "gfx/menus/menu_boxred" // Frame - forecolor 1 1 1 0.5 - visible 0 - decoration - } - - itemDef - { - name options - group defaults - text @MENUS0_WARNING - rect 305 191 300 20 - textalign ITEM_ALIGN_CENTER - textalignx 150 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - decoration - } - - itemDef - { - name options - group defaults - text @MENUS3_INGAME_DEFAULT - text2 @MENUS3_INGAME_DEFAULT2 - rect 305 231 300 20 - textalign ITEM_ALIGN_CENTER - textalignx 150 - text2aligny 20 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - decoration - } - - itemDef - { - name options - group defaults - text @MENUS0_VID_RESTART3 - rect 305 291 300 20 - textalign ITEM_ALIGN_CENTER - textalignx 150 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - decoration - } - - - itemDef - { - name default_yes_button - group highlights - style WINDOW_STYLE_SHADER - rect 467 386 120 32 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - decoration - visible 0 - // appearance_slot 4 - } - - // YES button - lose reset defaults - itemDef - { - name default_yes - group defaults - text @MENUS0_YES - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 467 386 120 32 - font 2 - textscale 1 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 60 - textaligny 0 - descText @MENUS1_RESET_DEFAULT_VALUES - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 5 - - action - { - play "sound/interface/button1.wav" ; - hide highlights ; - close all ; - uiscript resetdefaults - } - mouseEnter - { - show default_yes_button - } - mouseExit - { - hide default_yes_button - } - - } - - itemDef - { - name default_no_button - group highlights - style WINDOW_STYLE_SHADER - rect 305 386 120 32 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - decoration - visible 0 - // appearance_slot 3 - } - - // NO button - return to Main Menu - itemDef - { - name default_no - group defaults - text @MENUS0_NO - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 305 386 120 32 - font 2 - textscale 1 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 60 - textaligny 0 - descText @MENUS1_NOT_RESET_DEFAULT_VALUES - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 6 - action - { - play "sound/interface/button1.wav" ; - hide highlights ; - close all ; - open ingameMainMenu ; - } - mouseEnter - { - show default_no_button - } - mouseExit - { - hide default_no_button - } - } - - //---------------------------------------------------------------------------------------------- - // - // SPEEDRUN FIELDS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name draw_secrets - group speedrun - type ITEM_TYPE_MULTI - text "Show Secret Count:" - cvar "cg_drawSecrets" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 191 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - descText "Toggle to show number of found and total secrets." - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight2 - } - mouseexit - { - hide highlight2 - } - } - - - itemDef - { - name draw_overbounceinfo - group speedrun - type ITEM_TYPE_MULTI - text "Show Overbounce Info:" - cvar "cg_drawOverbounceInfo" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - descText "Toggle to show or hide overbounce information." - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - } - - - itemDef - { - name draw_speed - group speedrun - type ITEM_TYPE_MULTI - text "Show Speed:" - cvar "cg_drawSpeed" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 231 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText "Toggle to show or hide speed display." - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight4 - } - mouseexit - { - hide highlight4 - } - } - - - itemDef - { - name draw_strafehelper - group speedrun - type ITEM_TYPE_MULTI - text "Strafe Helper:" - cvar "cg_drawStrafeHelper" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 271 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText "Toggle to show or hide the strafe helper." - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight6 - } - mouseexit - { - hide highlight6 - } - } - - - itemDef - { - name draw_jumphelper - group speedrun - type ITEM_TYPE_MULTI - text "Jump Height Helper:" - cvar "cg_drawJumpHelper" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 291 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText "Toggle to show or hide the jump height helper." - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight7 - } - mouseexit - { - hide highlight7 - } - } - } -} +//-------------------------------------------------------------- +// +// INGAME SETUP MENU +// +// Edited for Speed-Outcast to show speedrun options. +// +//-------------------------------------------------------------- +{ + menuDef + { + name "ingameSetupMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + appearanceIncrement 10 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onOpen + { + uiScript getvideosetup ; // Get video settings + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide defaults + hide speedrun ; + show setup_background ; + show video ; + setitemcolor video1menubutton forecolor 1 1 1 1 ; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1 ; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + + onESC + { + play "sound/interface/button1.wav" + + defer VideoSetup videowarningMenu ; + + hide highlights ; + close all ; + open ingameMainMenu ; + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + + // Big button "SAVE" + itemDef + { + name savegamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name savegamebutton + group toprow + text @MENUS1_SAVE + descText @MENUS1_SAVE_CURRENT_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show savegamebutton_glow + } + mouseExit + { + hide savegamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamesaveMenu + } + } + + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameloadMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameControlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingameSetupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open ingamerandomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // EXIT button in lower left corner + itemDef + { + name exitgamebutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + close all ; + open ingamequitMenu + } + } + + // RESUME button in the lower right corner + itemDef + { + name resumebutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 495 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resume + group none + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 495 444 130 24 + text @MENUS1_RESUME + descText @MENUS1_RESUME_CURRENT_GAME + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + mouseEnter + { + show resumebutton_glow + } + mouseExit + { + hide resumebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + uiScript closeingame // Close menu + } + } + + //---------------------------------------------------------------------------------------------- + // + // SECOND ROW MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Setup Options title + itemDef + { + name setup_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text @MENUS2_SETUP_OPTIONS + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 2 + decoration + } + + + // video1 button + itemDef + { + name video1button_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 173 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name video1menubutton + group none + text @MENUS1_VIDEO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 173 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_VIDEO_SETTINGS + + mouseEnter + { + show video1button_glow + } + mouseExit + { + hide video1button_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + uiScript getvideosetup ; // Get video settings + + show setup_background ; + show video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide defaults ; + hide speedrun ; + setfocus graphics ; + setitemcolor video1menubutton forecolor 1 1 1 1 ; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1 ; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // video2 button + itemDef + { + name video2button_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 203 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name video2menubutton + group none + text @MENUS1_MORE_VIDEO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 203 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGUE_MORE_VIDEO_SETTINGS + + mouseEnter + { + show video2button_glow + } + mouseExit + { + hide video2button_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + show video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1 ; + setitemcolor video2menubutton forecolor 1 1 1 1 ; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1 ; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1 ; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // sound button + itemDef + { + name soundbutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 233 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name soundmenubutton + group none + text @MENUS1_SOUND + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 233 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_SOUND_SETTINGS + + mouseEnter + { + show soundbutton_glow + } + mouseExit + { + hide soundbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + show sound ; + hide options ; + hide defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 1 1 1 1 ; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // gameoptions button + itemDef + { + name gameoptionsbutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 263 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name gameoptionmenubutton + group none + text @MENUS1_GAME_OPTIONS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 263 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_GAME_OPTIONS + + mouseEnter + { + show gameoptionsbutton_glow + } + mouseExit + { + hide gameoptionsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + show options ; + hide defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 1 1 1 1 ; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + + // gamedefaults button + itemDef + { + name gamedefaultsbutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 323 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name gamedefaultsmenubutton + group none + text @MENUS1_DEFAULTS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 323 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_RESTORE_DEFAULT_SETTINGS + + mouseEnter + { + show gamedefaultsbutton_glow + } + mouseExit + { + hide gamedefaultsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + show defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 1 1 1 1 ; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // speedrun button + itemDef + { + name speedrunmenubutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 368 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name speedrunmenubutton + group none + text Speedrun + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 368 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText "Speedrun Settings" + + mouseEnter + { + show speedrunmenubutton_glow + } + mouseExit + { + hide speedrunmenubutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide defaults ; + show speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 1 1 1 1 ; + } + } + + itemDef + { + name setup_background + group none + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_box1" // Frame + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // HIGHLIGHT BARS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name highlight1 + group highlights + style WINDOW_STYLE_SHADER + rect 305 171 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight2 + group highlights + style WINDOW_STYLE_SHADER + rect 305 191 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight3 + group highlights + style WINDOW_STYLE_SHADER + rect 305 211 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight4 + group highlights + style WINDOW_STYLE_SHADER + rect 305 231 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight5 + group highlights + style WINDOW_STYLE_SHADER + rect 305 251 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight6 + group highlights + style WINDOW_STYLE_SHADER + rect 305 271 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight7 + group highlights + style WINDOW_STYLE_SHADER + rect 305 291 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight8 + group highlights + style WINDOW_STYLE_SHADER + rect 305 311 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight9 + group highlights + style WINDOW_STYLE_SHADER + rect 305 331 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight10 + group highlights + style WINDOW_STYLE_SHADER + rect 305 351 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight11 + group highlights + style WINDOW_STYLE_SHADER + rect 305 371 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight12 + group highlights + style WINDOW_STYLE_SHADER + rect 305 391 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // VIDEO 1 MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name graphics + group video + text @MENUS0_VIDEO_QUALITY + type ITEM_TYPE_MULTI + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + style WINDOW_STYLE_FILLED + forecolor 1 1 1 1 + descText @MENUS1_SELECT_PRESET_GRAPHIC + + visible 0 + + cvar "ui_r_glCustom" + cvarFloatList + { + @MENUS1_HIGH_QUALITY 0 + @MENUS1_NORMAL 1 + @MENUS1_FAST 2 + @MENUS1_FASTEST 3 + @MENUS1_CUSTOM 4 + } + + mouseenter + { + show highlight1 + } + mouseexit + { + hide highlight1 + } + action + { + play "sound/interface/button1.wav" ; + uiScript update "ui_r_glCustom" ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + + itemDef + { + name video_mode + group video + type ITEM_TYPE_MULTI + text @MENUS0_VIDEO_MODE + cvarFloatList { @MENUS1_640_X_480 3 @MENUS1_800_X_600 4 @MENUS1_960_X_720 5 @MENUS1_1024_X_768 6 @MENUS1_1152_X_864 7 @MENUS1_1280_X_1024 8 @MENUS1_1600_X_1200 9 @MENUS1_2048_X_1536 10 } + cvar "ui_r_mode" + + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + descText @MENUS1_CHANGE_THE_DISPLAY_RESOLUTION + + visible 0 + + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name color_depth + group video + type ITEM_TYPE_MULTI + text @MENUS0_COLOR_DEPTH + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + + cvarFloatList { @MENUS0_DEFAULT 0 @MENUS0_16_BIT 16 @MENUS0_32_BIT 32 } + descText @MENUS1_CHANGE_THE_NUMBER_OF + cvar "ui_r_colorbits" + + visible 0 + + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + uiScript update "ui_r_colorbits" ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name fullscreen + group video + type ITEM_TYPE_MULTI + text @MENUS0_FULL_SCREEN + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + descText @MENUS1_TOGGLE_BETWEEN_FULL_SCREEN + cvar "ui_r_fullscreen" + + visible 0 + + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name geometric_detail + group video + type ITEM_TYPE_MULTI + text @MENUS0_GEOMETRIC_DETAIL + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_LOW 2 @MENUS0_MEDIUM 1 @MENUS0_HIGH 0 } + descText @MENUS1_ADJUST_THE_NUMBER_OF + cvar "ui_r_lodbias" + + visible 0 + + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + uiScript update "ui_r_lodbias" ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name texture_detail + group video + type ITEM_TYPE_MULTI + text @MENUS0_TEXTURE_DETAIL + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_LOW 3 @MENUS0_MEDIUM 2 @MENUS0_HIGH 1 @MENUS0_VERY_HIGH 0 } + descText @MENUS1_SELECT_THE_RESOLUTION + cvar "ui_r_picmip" + + visible 0 + + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name texture_quality + group video + type ITEM_TYPE_MULTI + text @MENUS0_TEXTURE_QUALITY + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_DEFAULT 0 @MENUS0_16_BIT 16 @MENUS0_32_BIT 32 } + descText @MENUS1_SELECT_THE_NUMBER_OF + cvar "ui_r_texturebits" + + visible 0 + + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name texture_filter + group video + type ITEM_TYPE_MULTI + text @MENUS0_TEXTURE_FILTER + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarStrList { @MENUS1_BILINEAR , "GL_LINEAR_MIPMAP_NEAREST" , @MENUS1_TRILINEAR , "GL_LINEAR_MIPMAP_LINEAR" } + descText @MENUS1_ADJUST_HOW_WELL_THE_TEXTURES + cvar "ui_r_texturemode" + + visible 0 + + mouseenter + { + show highlight9 + } + mouseexit + { + hide highlight9 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name simple_shaders + group video + type ITEM_TYPE_MULTI + text @MENUS0_DETAILED_SHADERS + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + descText @MENUS1_HIDE_OR_UNHIDE_TEXTURES + cvar "ui_r_detailtextures" + + visible 0 + + mouseenter + { + show highlight10 + } + mouseexit + { + hide highlight10 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name compress_textures + group video_obsolete + type ITEM_TYPE_MULTI + text @MENUS0_COMPRESSED_TEXTURES + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + descText @MENUS1_TAKE_ADVANTAGE_OF_3D + cvar "ui_r_ext_compress_textures" + + visible 0 + + mouseenter + { + show highlight11 + } + mouseexit + { + hide highlight11 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + // APPLY CHANGES BUTTON + itemDef + { + name applybutton_glow + group none + style WINDOW_STYLE_SHADER + rect 120 383 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 0.5 0.5 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name applyChanges + group none + text @MENUS0_APPLY_CHANGES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 383 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 1 0 0 1 + backcolor 0 0 1 0 + visible 0 + + mouseEnter + { + show applybutton_glow + } + mouseExit + { + hide applybutton_glow + } + action + { + play "sound/interface/button1.wav" ; + show setup_background ; + show vidrestart ; + setfocus vidrestart_no ; + hide video ; + hide video2 ; + hide applybutton_glow ; + } + } + + +// This button doesn't get shown anymore. + itemDef + { + name gl_extensions + group video + type ITEM_TYPE_MULTI + text @MENUS1_GL_EXTENSIONS + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + cvar ui_r_allowExtensions + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + // appearance_slot 3 + descText @MENUS2_TOGGLE_GL_EXTENSIONS + + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + action + { + play "sound/interface/button1.wav" + setcvar ui_r_modified 1 + show applyChanges + } + } + + + //---------------------------------------------------------------------------------------------- + // + // VIDEO RESTART + // + //---------------------------------------------------------------------------------------------- + // Faint red box + itemDef + { + name vidrestart_background + group vidrestart + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_boxred" // Frame + forecolor 1 1 1 0.5 + visible 0 + decoration + } + + itemDef + { + name vidrestart_text1 + group vidrestart + text @MENUS3_INGAME_DEFAULT + text2 @MENUS3_INGAME_DEFAULT2 + rect 305 230 290 20 + textalign ITEM_ALIGN_CENTER + text2aligny 18 + textalignx 145 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + decoration + } + + itemDef + { + name vidrestart_text2 + group vidrestart + text @MENUS0_VID_RESTART3 + rect 305 300 290 20 + textalign ITEM_ALIGN_CENTER + textalignx 145 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + } + + + + itemDef + { + name vidrestart_yes_button + group none + style WINDOW_STYLE_SHADER + rect 467 386 120 32 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 4 + } + + // YES button + itemDef + { + name vidrestart_yes + group vidrestart + text @MENUS0_YES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 467 386 120 32 + font 2 + textscale 1 + textalign ITEM_ALIGN_CENTER + textalignx 60 + textaligny 0 + descText @MENUS0_APPLY_CHANGES_AND_THEN + forecolor 0.65 0.65 1 1 + visible -1 + // appearance_slot 5 + + action + { + play "sound/interface/button1.wav" ; + close all ; + uiScript updatevideosetup ; + } + mouseEnter + { + show vidrestart_yes_button + } + mouseExit + { + hide vidrestart_yes_button + } + + } + + itemDef + { + name vidrestart_no_button + group none + style WINDOW_STYLE_SHADER + rect 305 386 120 32 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 3 + } + + // CANCEL button + itemDef + { + name vidrestart_no + group vidrestart + text @MENUS0_NO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 305 386 120 32 + font 2 + textscale 1 + textalign ITEM_ALIGN_CENTER + textalignx 60 + textaligny -1 + descText @MENUS0_DO_NOT_APPLY_CHANGES + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 6 + action + { + play "sound/interface/button1.wav" ; + setfocus video1menubutton ; + show setup_background ; + hide vidrestart ; + show video ; + hide video2 ; + show applyChanges ; + hide vidrestart_yes_button ; + hide vidrestart_no_button ; + } + mouseEnter + { + show vidrestart_no_button + } + mouseExit + { + hide vidrestart_no_button + } + + } + + //---------------------------------------------------------------------------------------------- + // + // VIDEO 2 + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name gamma_text + group video2 + style WINDOW_STYLE_SHADER + rect 310 171 280 36 + background "gfx/menus/greyscale" // greyscale + forecolor 1 1 1 1 + visible 0 + decoration + // appearance_slot 1 + } + + + + itemDef + { + name bright_text + group video2 + text @MENUS0_ADJUST_BRIGHTNESS_SLIDER + text2 @MENUS0_THE_NUMBER_6_CAN_BARELY + text2aligny 14 + textalignx 128 + font 2 + textscale 0.8 + rect 305 211 256 20 + textalign ITEM_ALIGN_CENTER + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 2 + decoration + } + + itemDef + { + name brightness + group video2 + type ITEM_TYPE_SLIDER + text @MENUS0_VIDEO_BRIGHTNESS + cvarfloat "r_gamma" 1 .5 3 + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 120 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_ADJUST_THE_BRIGHTNESS + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name video_sync + group video2 + type ITEM_TYPE_MULTI + text @MENUS3_VIDEO_SYNC + cvar "r_swapInterval" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS3_VIDEO_SYNC_DESC + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + + + itemDef + { + name dynamic_light + group video2 + type ITEM_TYPE_MULTI + text @MENUS0_DYNAMIC_LIGHTS + cvar "r_dynamiclight" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_TOGGLE_TO_TURN_ON_MOVING + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + + itemDef + { + name shadows + group video2 + type ITEM_TYPE_MULTI + text @MENUS3_SHADOWS + descText @MENUS3_SHADOWS_DESC + cvar "cg_shadows" + cvarFloatList + { + "None" 0 + "Simple" 1 + "Volumetric" 2 +// "Projected" 3 + } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } + + itemDef + { + name wall_marks + group video2 + type ITEM_TYPE_MULTI + text @MENUS0_WALL_MARKS + cvar "cg_marks" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_TOGGLE_TO_DISPLAY_SCORCH + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight9 + } + mouseexit + { + hide highlight9 + } + } + + itemDef + { + name video_mode + group video2 + type ITEM_TYPE_MULTI + text @MENUS0_ANISOTROPIC_FILTERING + cvarTest r_ext_texture_filter_anisotropic_avail + hideCvar { 0 } + cvar r_ext_texture_filter_anisotropic + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + + descText @MENUS1_TOGGLE_ADVANCED_TEXTURE + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight10 + } + mouseexit + { + hide highlight10 + } + } + + itemDef + { + name light_flares + group video2_obsolete + type ITEM_TYPE_MULTI + text @MENUS0_LIGHT_FLARES + cvar "r_flares" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_TOGGLE_TO_SHOW_HALOS + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight11 + } + mouseexit + { + hide highlight11 + } + } + + itemDef + { + name advancedvideobutton_glow + group none + style WINDOW_STYLE_SHADER + rect 355 391 200 20 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name advancedvideo + group video2 + type ITEM_TYPE_BUTTON + text @MENUS2_SHOW_DRIVER_INFO + rect 355 391 200 20 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 100 + font 2 + textscale 0.8 + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS2_SHOW_ADVANCED_INFORMATION + + mouseenter + { + show advancedvideobutton_glow + } + mouseexit + { + hide advancedvideobutton_glow + } + action + { + play "sound/interface/button1.wav" ; + hide advancedvideobutton_glow ; + open videodriverMenu + } + } + + //---------------------------------------------------------------------------------------------- + // + // SOUND FIELDS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name effects_volume + group sound + type ITEM_TYPE_SLIDER + text @MENUS0_EFFECTS_VOLUME + cvarfloat "s_volume" 0 0 1 + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 120 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_ADJUST_VOLUME_FOR_SOUND + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name music_volume + group sound + type ITEM_TYPE_SLIDER + text @MENUS0_MUSIC_VOLUME + cvarfloat "s_musicvolume" 0 0 1 + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 120 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_ADJUST_VOLUME_FOR_MUSIC + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + itemDef + { + name voice_volume + group sound + type ITEM_TYPE_SLIDER + text @MENUS1_VOICE_VOLUME + cvarfloat "s_volumevoice" 0 0 1 + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 120 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS2_ADJUST_VOLUME_FOR_SPEECH + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name sound_quality + group sound + type ITEM_TYPE_MULTI + text @MENUS0_SOUND_QUALITY + cvar "s_khz" + cvarFloatList { @MENUS0_LOW 11 @MENUS0_HIGH 22 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS2_TRADE_CLARITY_OF_SOUND + + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + action + { + play "sound/interface/button1.wav" + uiScript update s_khz + } + } + + //---------------------------------------------------------------------------------------------- + // + // OPTION FIELDS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name draw_crosshair + group options + type ITEM_TYPE_MULTI + text @MENUS2_DRAW_CROSSHAIR + cvar "cg_drawcrosshair" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_TOGGLE_TO_SHOW_OR_HIDE + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight1 + } + mouseexit + { + hide highlight1 + } + } + + + itemDef + { + name identifytarget + group options + type ITEM_TYPE_MULTI + text @MENUS0_IDENTIFY_TARGET + cvar "cg_crosshairIdentifyTarget" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_TOGGLE_TO_HAVE_THE_CROSSHAIR + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + + itemDef + { + name slowmo + group options + type ITEM_TYPE_MULTI + text @MENUS2_SLOW_MOTION_DEATH + cvar "d_slowmodeath" + cvarFloatList + { + @MENUS2_NEVER 0 + @MENUS2_ON_DEATH 1 + @MENUS2_RARELY 2 + @MENUS1_NORMAL 3 + @MENUS2_OFTEN 4 + @MENUS2_FREQUENTLY 5 + @MENUS2_EXCESSIVELY 6 + } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_SELECT_THE_FREQUENCY + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + + itemDef + { + name force3rd + group options + type ITEM_TYPE_MULTI + text @MENUS2_3RD_PERSON_LIGHTSABER + cvar "cg_saberAutoThird" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_WHEN_READYING_LIGHTSABER + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + + itemDef + { + name force1st + group options + type ITEM_TYPE_MULTI + text @MENUS2_1ST_PERSON_GUNS + cvar "cg_gunAutoFirst" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_WHEN_PUTTING_AWAY_SABER + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + + itemDef + { + name dismemberment + group options + type ITEM_TYPE_MULTI + text @MENUS2_DISMEMBERMENT + cvar "g_dismemberment" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 3 + } + cvarTest ui_iscensored + hideCvar { 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_SELECT_WHAT_LIGHTSABER + action + { + play "sound/interface/button1.wav" ; + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + + +// Weapon Sway. Yes, this is nutty. Two cvars here, one removes weapon sway, the other adds it. + itemDef + { + name weaponswayon + group options + type ITEM_TYPE_MULTI + text @MENUS3_VIEW_SWAYING + descText @MENUS3_VIEW_SWAYING_DESC + cvar "ui_disableWeaponSway" + cvarFloatList + { + @MENUS0_ON 0 + @MENUS0_OFF 1 + } + cvarTest "ui_disableWeaponSway" + showCvar + { + "0" + } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + + action + { + play "sound/interface/button1.wav" ; + exec "exec noMotion.cfg" ; + show weaponswayoff ; + setfocus weaponswayoff + } + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } + + itemDef + { + name weaponswayoff + group options + type ITEM_TYPE_MULTI + text @MENUS3_VIEW_SWAYING + descText @MENUS3_VIEW_SWAYING_DESC + cvar "ui_disableWeaponSway" + cvarFloatList + { + @MENUS0_ON 0 + @MENUS0_OFF 1 + } + cvarTest "ui_disableWeaponSway" + hideCvar + { + "0" + } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + + action + { + play "sound/interface/button1.wav" ; + exec "exec restoreMotion.cfg" ; + show weaponswayon ; + setfocus weaponswayon + } + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } + +/* + itemDef + { + name dismembermentprob + group options_obsolete + type ITEM_TYPE_MULTI + text @MENUS2_DISMEMBER_PROBABILITY + cvar "g_dismemberProbabilities" + cvarFloatList + { + @MENUS2_RARE 2 + @MENUS1_NORMAL 1 + @MENUS2_EXCESSIVE 0 + } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_SELECT_FREQUENCY_OF_DISMEMBERMENT + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } +*/ + + itemDef + { + name text + group options + type ITEM_TYPE_MULTI + text @MENUS0_TEXT + cvar "sp_language" + cvarFloatList + { + "English" 0 + "Francais" 1 + "Deutsch" 2 + } + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_CHOOSE_THE_LANGUAGE_FOR + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight10 + } + mouseexit + { + hide highlight10 + } + } + + itemDef + { + name voice + group options + type ITEM_TYPE_MULTI + text @MENUS1_VOICE + cvar "s_language" + cvarStrList + { + "English", "english" + "Francais" "francais" + "Deutsch" "deutsch" + } + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS3_CHOOSE_THE_LANGUAGE_TO + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight11 + } + mouseexit + { + hide highlight11 + } + } + + itemDef + { + name voice + group options + type ITEM_TYPE_MULTI + text @MENUS1_SUBTITLES + cvar "g_subtitles" + cvarFloatList + { + @MENUS3_NONE 0 + @MENUS3_IN_CINEMATICS 2 +// @MENUS3_ALL_VOICEOVERS 1 + } + rect 305 391 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS3_TOGGLE_WHETHER_SUBTITLES + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight12 + } + mouseexit + { + hide highlight12 + } + } + + + +// This menu option is no longer used. + itemDef + { + name sync_frame + group options_obsolete + type ITEM_TYPE_MULTI + text @MENUS1_SYNC_EVERY_FRAME + cvar "r_finish" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 1 + } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS3_TOGGLE_TO_PREVENT_VIDEO + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + + //---------------------------------------------------------------------------------------------- + // + // RESET DEFAULTS + // + //---------------------------------------------------------------------------------------------- + // Faint red box + itemDef + { + name vidrestart_background + group defaults + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_boxred" // Frame + forecolor 1 1 1 0.5 + visible 0 + decoration + } + + itemDef + { + name options + group defaults + text @MENUS0_WARNING + rect 305 191 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + decoration + } + + itemDef + { + name options + group defaults + text @MENUS3_INGAME_DEFAULT + text2 @MENUS3_INGAME_DEFAULT2 + rect 305 231 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + text2aligny 20 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + decoration + } + + itemDef + { + name options + group defaults + text @MENUS0_VID_RESTART3 + rect 305 291 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + decoration + } + + + itemDef + { + name default_yes_button + group highlights + style WINDOW_STYLE_SHADER + rect 467 386 120 32 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 4 + } + + // YES button - lose reset defaults + itemDef + { + name default_yes + group defaults + text @MENUS0_YES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 467 386 120 32 + font 2 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 60 + textaligny 0 + descText @MENUS1_RESET_DEFAULT_VALUES + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 5 + + action + { + play "sound/interface/button1.wav" ; + hide highlights ; + close all ; + uiscript resetdefaults + } + mouseEnter + { + show default_yes_button + } + mouseExit + { + hide default_yes_button + } + + } + + itemDef + { + name default_no_button + group highlights + style WINDOW_STYLE_SHADER + rect 305 386 120 32 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 3 + } + + // NO button - return to Main Menu + itemDef + { + name default_no + group defaults + text @MENUS0_NO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 305 386 120 32 + font 2 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 60 + textaligny 0 + descText @MENUS1_NOT_RESET_DEFAULT_VALUES + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 6 + action + { + play "sound/interface/button1.wav" ; + hide highlights ; + close all ; + open ingameMainMenu ; + } + mouseEnter + { + show default_no_button + } + mouseExit + { + hide default_no_button + } + } + + //---------------------------------------------------------------------------------------------- + // + // SPEEDRUN FIELDS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name draw_secrets + group speedrun + type ITEM_TYPE_MULTI + text "Show Secret Count:" + cvar "cg_drawSecrets" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Toggle to show number of found and total secrets." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + + itemDef + { + name draw_overbounceinfo + group speedrun + type ITEM_TYPE_MULTI + text "Show Overbounce Info:" + cvar "cg_drawOverbounceInfo" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Toggle to show or hide overbounce information." + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + + itemDef + { + name draw_speed + group speedrun + type ITEM_TYPE_MULTI + text "Show Speed:" + cvar "cg_drawSpeed" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText "Toggle to show or hide speed display." + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + + itemDef + { + name draw_strafehelper + group speedrun + type ITEM_TYPE_MULTI + text "Strafe Helper:" + cvar "cg_drawStrafeHelper" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText "Toggle to show or hide the strafe helper." + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + + itemDef + { + name draw_jumphelper + group speedrun + type ITEM_TYPE_MULTI + text "Jump Height Helper:" + cvar "cg_drawJumpHelper" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText "Toggle to show or hide the jump height helper." + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + } +} diff --git a/assets/ui/loadgame.menu b/assets/ui/loadgame.menu new file mode 100644 index 00000000..27b253bd --- /dev/null +++ b/assets/ui/loadgame.menu @@ -0,0 +1,738 @@ +// LOADGAME MENU +{ + menuDef + { + name "loadgameMenu" + visible 0 + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + focusColor 1 1 1 1 // Focus color for text and items + appearanceIncrement 75 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + disablecolor .5 .5 .5 1 + + onESC + { + play sound/interface/button1.wav + close all + open mainMenu + } + onOpen + { + uiScript ReadSaveDirectory ; + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + // Big button "NEW" + itemDef + { + name newgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name newgamebutton + group toprow + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + text @MENUS1_NEW + descText @MENUS1_START_A_NEW_GAME + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show newgamebutton_glow + } + mouseExit + { + hide newgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open newgameMenu + } + } + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open loadgameMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open controlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open setupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open randomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Credits hidden button + itemDef + { + name creditsbutton + group othermain +// text @CREDITS + descText @MENUS0_SHOW_GAME_CREDITS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 51 284 52 60 + font 2 + textscale 1 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textalignx 46 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 0 + + mouseEnter + { + setitemcolor saberhalo2 forecolor 0.7 0.7 0.7 1 + } + mouseExit + { + setitemcolor saberhalo2 forecolor 0.25 0.25 0.25 1 + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open creditsMenu + } + } + + // EXIT button in lower left corner + // Big button "SETUP" + itemDef + { + name exitgamebutton_glow + group glow + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/weapons/saber/saberoff.mp3" ; + close all ; + open quitMenu + } + } + + //---------------------------------------------------------------------------------------------- + // + // LOAD GAME MENU specific stuff + // + //---------------------------------------------------------------------------------------------- + // Load Game title + itemDef + { + name loadgame_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text @MENUS1_LOAD_GAME + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 2 + decoration + } + + + itemDef + { + name loadgamedesc + group loadgame + type ITEM_TYPE_EDITFIELD + style WINDOW_STYLE_EMPTY + flag WINDOW_INACTIVE + text @MENUS1_DESC + cvar ui_gameDesc + maxChars 60 + rect 150 165 450 16 + textalign ITEM_ALIGN_LEFT + textalignx 0 + textaligny -4 + font 2 + textscale .8 + outlinecolor 1 .5 .5 .5 + backcolor 0 0 0 0 + forecolor 1 1 1 1 + border 0 + bordercolor 0 0 0 0 + visible 1 + } + + itemDef + { + name loadgamelist + group loadscreen + rect 145 190 285 230 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + font 2 + textaligny 2 + textscale 0.7 + border 1 + bordersize 1 + bordercolor .5 .5 .5 .5 + forecolor 0.65 0.65 1 1 + backcolor 0 0 .5 .25 + outlinecolor .5 .5 .5 .5 + elementtype LISTBOX_TEXT + feeder FEEDER_SAVEGAMES + notselectable + visible 1 + columns 2 2 35 150 155 25 100 + mouseEnter + { + setitemcolor loadgamelist bordercolor .265 .824 .886 1 + } + mouseExit + { + setitemcolor loadgamelist bordercolor .5 .5 .5 .5 + } + doubleclick + { + play sound/interface/button1.wav + uiScript loadgame + } + } + + itemDef + { + name loadgamepic + group loadscreen + style WINDOW_STYLE_EMPTY + ownerdraw 236 //UI_ALLMAPS_SELECTION + font 2 + textscale .8 + forecolor 1 1 1 1 + rect 435 190 180 135 + border 1 + bordercolor .265 .824 .886 .25 + visible 1 + } + + // loadgame button + itemDef + { + name loadgameaction_glow + group glow + style WINDOW_STYLE_SHADER + rect 440 350 175 25 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgameaction + group actionbutton + text @MENUS1_LOAD_GAME + descText @MENUS1_LOAD_CHOSEN_GAME + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 440 350 175 25 + font 3 + textscale 0.8 + textalignx 175 + textaligny 1 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + cvarTest ui_SelectionOK + enableCvar { "1" } + + mouseEnter + { + show loadgameaction_glow + } + mouseExit + { + hide loadgameaction_glow + } + action + { + play sound/interface/button1.wav ; + hide glow ; + uiScript loadgame + } + } + + // deletegame button + itemDef + { + name deletegameaction_glow + group glow + style WINDOW_STYLE_SHADER + rect 440 375 175 25 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name deletegamebutton + group actionbutton + text @MENUS1_DELETE_GAME + descText @MENUS1_DELETE_CHOSEN_GAME + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 440 375 175 25 + font 3 + textscale 0.8 + textalignx 175 + textaligny 1 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + cvarTest ui_SelectionOK + enableCvar { "1" } + + mouseEnter + { + show deletegameaction_glow + } + mouseExit + { + hide deletegameaction_glow + } + action + { + play sound/interface/button1.wav ; + hide glow ; + uiScript deletegame + } + } + + + // resumegame button + itemDef + { + name resumegameaction_glow + group glow + style WINDOW_STYLE_SHADER + rect 440 400 175 25 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name resumeautobutton + group actionbutton + text @MENUS2_RESUME_MISSION + descText @MENUS2_RESUME_LAST_MISSION_ENTERED + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 440 400 175 25 + font 3 + textscale 0.8 + textalignx 175 + textaligny 1 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 // This button isn't used when not in game. + cvarTest ui_ResumeOK + enableCvar { "1" } + + mouseEnter + { + show resumegameaction_glow + } + mouseExit + { + hide resumegameaction_glow + } + action + { + play "sound/interface/button1.wav" ; + hide glow ; + uiScript loadAuto + } + } + + } +} + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/ui/main.menu b/assets/ui/main.menu new file mode 100644 index 00000000..d7453fd7 --- /dev/null +++ b/assets/ui/main.menu @@ -0,0 +1,490 @@ +// MAIN MENU +{ + assetGlobalDef + { + smallFont "ocr_a" 18 // font + mediumFont "ergoec" 18 // font + bigFont "anewhope" 20 // font + + cursor "cursor" // cursor + itemFocusSound "sound/interface/menuroam.wav" // sound for item getting focus (via keyboard or mouse ) + + fadeClamp 1.0 // sets the fadeup alpha + fadeCycle 1 // how often fade happens in milliseconds + fadeAmount 0.1 // amount to adjust alpha per cycle + shadowColor 0.1 0.1 0.1 0.25 // shadow color + focuscolor 0 0 1 1 + } + + + menuDef + { + name "mainMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onOpen + { + exec "music music/cairn_bay/impbasee_explore" ; + setfocus newgamebutton + } + + onESC + { + play "sound/interface/menuroam.wav" ; + close mainMenu ; + open quitMenu ; + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.7 0.7 0.7 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left, over the model + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.3 0.3 0.3 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // TOP MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + // Big button "NEW" + itemDef + { + name newgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name newgamebutton + group toprow + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + text @MENUS1_NEW + descText @MENUS1_START_A_NEW_GAME + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show newgamebutton_glow + } + mouseExit + { + hide newgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open newgameMenu + } + } + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open loadgameMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open controlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open setupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open randomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Credits hidden button + itemDef + { + name creditsbutton + group othermain +// text @CREDITS + descText @MENUS0_SHOW_GAME_CREDITS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 51 284 52 60 + font 2 + textscale 1 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textalignx 46 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 0 + + mouseEnter + { + setitemcolor saberhalo2 forecolor 0.7 0.7 0.7 1 + } + mouseExit + { + setitemcolor saberhalo2 forecolor 0.3 0.3 0.3 1 + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open creditsMenu + } + } + + // EXIT button in lower left corner + itemDef + { + name exitgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/weapons/saber/saberoff.mp3"; + close all ; + open quitMenu + } + } + } +} + + + + + + + + + + diff --git a/assets/ui/menus.txt b/assets/ui/menus.txt new file mode 100644 index 00000000..6d90f7a1 --- /dev/null +++ b/assets/ui/menus.txt @@ -0,0 +1,31 @@ +// menu defs +// +{ + loadMenu { "ui/main.menu" } + loadMenu { "ui/newgame.menu" } + loadMenu { "ui/loadgame.menu" } + loadMenu { "ui/controls.menu" } + loadMenu { "ui/setup.menu" } + loadMenu { "ui/randomizer.menu" } + loadMenu { "ui/credits.menu" } + loadMenu { "ui/quit.menu" } + + loadMenu { "ui/ingame.menu" } + loadMenu { "ui/ingamesave.menu" } + loadMenu { "ui/ingameload.menu" } + loadMenu { "ui/ingamecontrols.menu" } + loadMenu { "ui/ingamesetup.menu" } + loadMenu { "ui/ingamerandomizer.menu" } + loadMenu { "ui/ingamequit.menu" } + + loadMenu { "ui/datapadforcepowers.menu" } + loadMenu { "ui/datapadinventory.menu" } + loadMenu { "ui/datapadmission.menu" } + loadMenu { "ui/datapadweapons.menu" } + + loadMenu { "ui/error.menu" } + loadMenu { "ui/vid_warning.menu" } + loadMenu { "ui/ingamevid_warning.menu" } + loadMenu { "ui/videodriver.menu" } + +} diff --git a/assets/ui/newgame.menu b/assets/ui/newgame.menu new file mode 100644 index 00000000..cd035559 --- /dev/null +++ b/assets/ui/newgame.menu @@ -0,0 +1,771 @@ +// NEWGAME MENU +{ + menuDef + { + name "newgameMenu" + visible 0 + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + focusColor 1 1 1 1 // Focus color for text and items + appearanceIncrement 75 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onESC + { + play "sound/weapons/saber/saberoff.mp3" ; + close newgameMenu ; + open mainMenu ; + } + + onOpen + { + setcvar g_spskill 1 ; + setcvar cg_crosshairForceHint 1 ; + setcvar handicap 100 + hide diff1_frame + show diff2_frame + hide diff3_frame + hide diff4_frame + setitemcolor easygame_button forecolor 0.64 0.65 1 1 + setitemcolor mediumgame_button forecolor 1 1 1 1 + setitemcolor hardgame_button forecolor 0.64 0.65 1 1 + setitemcolor veryhardgame_button forecolor 0.64 0.65 1 1 + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + // Big button "NEW" + itemDef + { + name newgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name newgamebutton + group toprow + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + text @MENUS1_NEW + descText @MENUS1_START_A_NEW_GAME + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show newgamebutton_glow + } + mouseExit + { + hide newgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open newgameMenu + } + } + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open loadgameMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open controlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open setupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open randomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Credits hidden button + itemDef + { + name creditsbutton + group othermain +// text @CREDITS + descText @MENUS0_SHOW_GAME_CREDITS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 51 284 52 60 + font 2 + textscale 1 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textalignx 46 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 0 + + mouseEnter + { + setitemcolor saberhalo2 forecolor 0.7 0.7 0.7 1 + } + mouseExit + { + setitemcolor saberhalo2 forecolor 0.25 0.25 0.25 1 + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open creditsMenu + } + } + + // EXIT button in lower left corner + itemDef + { + name exitgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/weapons/saber/saberoff.mp3"; + close all ; + open quitMenu + } + } + + //---------------------------------------------------------------------------------------------- + // + // NEW GAME MENU specific stuff + // + //---------------------------------------------------------------------------------------------- + // New Game title + itemDef + { + name newgame_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text @MENUS2_NEW_GAME + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -1 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 2 + decoration + } + + itemDef + { + name diff1_frame + group none + style WINDOW_STYLE_SHADER + rect 250 200 250 40 + background "gfx/menus/menu_buttonback" // Box around difficulty 1 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + decoration + } + + // EASY difficulty button + itemDef + { + name easygame_button + group none + text @MENUS1_APPRENTICE + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + rect 250 200 250 40 + textalignx 125 + textaligny 8 + forecolor 0.64 0.65 1 1 + visible 1 + // appearance_slot 3 + descText @MENUS1_EASY_GAME_SETTINGS + + action + { + play "sound/interface/button1.wav" + setcvar g_spskill 0 + setcvar cg_crosshairForceHint 1 + setcvar handicap 100 + show diff1_frame + hide diff2_frame + hide diff3_frame + hide diff4_frame + setitemcolor easygame_button forecolor 1 1 1 1 + setitemcolor mediumgame_button forecolor 0.64 0.65 1 1 + setitemcolor hardgame_button forecolor 0.64 0.65 1 1 + setitemcolor veryhardgame_button forecolor 0.64 0.65 1 1 + } + + } + + itemDef + { + name diff2_frame + group none + style WINDOW_STYLE_SHADER + rect 250 240 250 40 + background "gfx/menus/menu_buttonback" // Box around difficulty 2 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 10 + decoration + } + + // MEDIUM difficulty button + itemDef + { + name mediumgame_button + group none + text @MENUS1_JEDI + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + font 3 + textscale 1 + rect 250 240 250 40 + textalignx 125 + textaligny 8 + textalign ITEM_ALIGN_CENTER + textstyle 3 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 4 + descText @MENUS1_NORMAL_GAME_SETTINGS + + action + { + play "sound/interface/button1.wav" + setcvar g_spskill 1 + setcvar cg_crosshairForceHint 1 + setcvar handicap 100 + hide diff1_frame ; + show diff2_frame ; + hide diff3_frame ; + hide diff4_frame ; + setitemcolor easygame_button forecolor 0.64 0.65 1 1 + setitemcolor mediumgame_button forecolor 1 1 1 1 + setitemcolor hardgame_button forecolor 0.64 0.65 1 1 + setitemcolor veryhardgame_button forecolor 0.64 0.65 1 1 + } + + } + + itemDef + { + name diff3_frame + group none + style WINDOW_STYLE_SHADER + rect 250 280 250 40 + background "gfx/menus/menu_buttonback" // Box around difficulty 3 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + decoration + } + + // HARD difficulty button + itemDef + { + name hardgame_button + group none + text @MENUS2_JEDI_KNIGHT + font 3 + textscale 1 + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 250 280 250 40 + textalignx 125 + textaligny 8 + textalign ITEM_ALIGN_CENTER + textstyle 3 + forecolor 0.64 0.65 1 1 + visible 1 + // appearance_slot 5 + descText @MENUS1_DIFFICULT_GAME_SETTINGS + + action + { + play "sound/interface/button1.wav" ; + setcvar g_spskill 2 ; + setcvar cg_crosshairForceHint 0 ; + setcvar handicap 100 + hide diff1_frame ; + hide diff2_frame ; + show diff3_frame ; + hide diff4_frame ; + setitemcolor easygame_button forecolor 0.64 0.65 1 1 + setitemcolor mediumgame_button forecolor 0.64 0.65 1 1 + setitemcolor hardgame_button forecolor 1 1 1 1 + setitemcolor veryhardgame_button forecolor 0.64 0.65 1 1 + } + + } + + itemDef + { + name diff4_frame + group none + style WINDOW_STYLE_SHADER + rect 250 320 250 40 + background "gfx/menus/menu_buttonback" // Box around difficulty 4 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 10 + decoration + } + + // VERY HARD difficulty button + itemDef + { + name veryhardgame_button + group none + text @MENUS1_JEDI_MASTER + font 3 + textscale 1 + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 250 320 250 40 + textalignx 125 + textaligny 8 + textalign ITEM_ALIGN_CENTER + textstyle 3 + forecolor 0.64 0.65 1 1 + visible 1 + // appearance_slot 6 + descText @MENUS1_EXTREMELY_DIFFICULT_GAME + + action + { + play "sound/interface/button1.wav" + setcvar g_spskill 2 + setcvar cg_crosshairForceHint 0 + setcvar handicap 50 + hide diff1_frame ; + hide diff2_frame ; + hide diff3_frame ; + show diff4_frame ; + setitemcolor easygame_button forecolor 0.64 0.65 1 1 + setitemcolor mediumgame_button forecolor 0.64 0.65 1 1 + setitemcolor hardgame_button forecolor 0.64 0.65 1 1 + setitemcolor veryhardgame_button forecolor 1 1 1 1 + } + + } + + // BEGIN button + itemDef + { + name begingamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 435 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name newgame_begin + group none + text @MENUS2_BEGIN_GAME + descText @MENUS1_START_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 435 444 130 24 + font 3 + textscale 1 + textalignx 65 + textaligny -1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + // appearance_slot 9 + action + { + uiScript startgame // Start the new game + } + mouseEnter + { + show begingamebutton_glow + } + mouseExit + { + hide begingamebutton_glow + } + } + } +} + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/assets/ui/quit.menu b/assets/ui/quit.menu new file mode 100644 index 00000000..c4a9c227 --- /dev/null +++ b/assets/ui/quit.menu @@ -0,0 +1,575 @@ + //---------------------------------------------------------------------------------------------- + // + // QUIT MENU + // + //---------------------------------------------------------------------------------------------- +{ + menuDef + { + name "quitMenu" + visible 0 + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + focusColor 1 1 1 1 // Focus color for text and items + appearanceIncrement 100 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + appearanceIncrement 100 // In miliseconds + + onESC + { + play "sound/interface/button1.wav" ; + close quitMenu ; + open mainMenu ; + } + + onOpen + { + setfocus quitgame_cancel + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + // Big button "NEW" + itemDef + { + name newgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name newgamebutton + group toprow + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + text @MENUS1_NEW + descText @MENUS1_START_A_NEW_GAME + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show newgamebutton_glow + } + mouseExit + { + hide newgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open newgameMenu + } + } + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open loadgameMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open controlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open setupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open randomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Credits hidden button + itemDef + { + name creditsbutton + group othermain +// text @CREDITS + descText @MENUS0_SHOW_GAME_CREDITS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 51 284 52 60 + font 2 + textscale 1 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textalignx 46 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 0 + + mouseEnter + { + setitemcolor saberhalo2 forecolor 0.7 0.7 0.7 1 + } + mouseExit + { + setitemcolor saberhalo2 forecolor 0.25 0.25 0.25 1 + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open creditsMenu + } + } + + //---------------------------------------------------------------------------------------------- + // + // QUIT MENU specific stuff + // + //---------------------------------------------------------------------------------------------- + // Quitting title + itemDef + { + name quit_title + group none + text @MENUS2_LEAVING_JEDI_KNIGHT_2 + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -1 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 2 + decoration + } + + itemDef + { + name confirm + group none + text @MENUS1_QUIT_JEDI_KNIGHT_II + font 2 + textscale 1 + textstyle 3 + rect 150 270 450 20 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny 0 + decoration + forecolor .433 .703 .722 1 + visible 1 + // appearance_slot 2 + } + + + itemDef + { + name quitgame_cancel_button + group none + style WINDOW_STYLE_SHADER + rect 245 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + } + + // CANCEL button + itemDef + { + name quitgame_cancel + group none + text @MENUS0_NO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 245 444 130 24 + font 3 + textscale 1 + textalignx 65 + textaligny -1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + descText @MENUS1_DO_NOT_LEAVE_JEDI_KNIGHT + forecolor 0.65 0.65 1 1 + visible 1 + // appearance_slot 6 + action + { + play "sound/interface/button1.wav" ; + close quitMenu ; + open mainMenu ; + } + mouseEnter + { + show quitgame_cancel_button + } + mouseExit + { + hide quitgame_cancel_button + } + } + + itemDef + { + name quitgame_yes_button + group none + style WINDOW_STYLE_SHADER + rect 375 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 3 + } + + // YES button + itemDef + { + name quitgame_yes + group none + text @MENUS0_YES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 375 444 130 24 + font 3 + textscale 1 + textalignx 65 + textaligny -1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + descText @MENUS1_JEDI_KNIGHT_II + forecolor 0.65 0.65 1 1 + visible 1 + // appearance_slot 5 + action + { + play "sound/interface/button1.wav" ; + uiScript Quit // Quit the game + } + mouseEnter + { + show quitgame_yes_button + } + mouseExit + { + hide quitgame_yes_button + } + } + + } +} + + + + + + + + + + + + + + + + + diff --git a/assets/ui/randomizer.menu b/assets/ui/randomizer.menu new file mode 100644 index 00000000..51ff1621 --- /dev/null +++ b/assets/ui/randomizer.menu @@ -0,0 +1,1760 @@ +//-------------------------------------------------------------- +// +// RANDOMIZER MENU +// +// New menu for Randomizer to show randomizer options. +// +//-------------------------------------------------------------- +{ + menuDef + { + name "randomizerMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + background "gfx/menus/mainback" // Frame + appearanceIncrement 75 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onOpen + { + show randomizer_background ; + show basic ; + hide enhancements1 ; + hide enhancements2 ; + hide assists ; + setfocus basic; + setitemcolor basicmenubutton forecolor 1 1 1 1; + setitemcolor enhancements1menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements2menubutton forecolor 0.65 0.65 1 1; + setitemcolor assistsmenubutton forecolor 0.65 0.65 1 1; + } + + onESC + { + play "sound/interface/button1.wav" ; + + close all ; + open mainMenu ; + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + // Big button "NEW" + itemDef + { + name newgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name newgamebutton + group toprow + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + text @MENUS1_NEW + descText @MENUS1_START_A_NEW_GAME + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show newgamebutton_glow + } + mouseExit + { + hide newgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open newgameMenu + } + } + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open loadgameMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open controlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open setupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open randomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Credits hidden button + itemDef + { + name creditsbutton + group othermain +// text @CREDITS + descText @MENUS0_SHOW_GAME_CREDITS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 51 284 52 60 + font 2 + textscale 1 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textalignx 46 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 0 + + mouseEnter + { + setitemcolor saberhalo2 forecolor 0.7 0.7 0.7 1 + } + mouseExit + { + setitemcolor saberhalo2 forecolor 0.25 0.25 0.25 1 + } + action + { + play "sound/interface/button1.wav" ; + + close all ; + open creditsMenu ; + } + } + + // EXIT button in lower left corner + // Big button "SETUP" + itemDef + { + name exitgamebutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/weapons/saber/saberoff.mp3"; + + close all ; + open quitMenu ; + } + } + + //---------------------------------------------------------------------------------------------- + // + // SECOND ROW MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Randomizer Options title + itemDef + { + name randomizer_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text RANDOMIZER + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 2 + decoration + } + + + // Basic button + itemDef + { + name basic_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 173 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name basicmenubutton + group none + text BASIC + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 173 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Basic Randomizer Settings - Speedrun compliant" + + mouseEnter + { + show basic_glow + } + mouseExit + { + hide basic_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + show basic ; + hide enhancements_cosmetics ; + hide enhancements_force ; + hide enhancements_evil ; + hide assists ; + setfocus basic ; + setitemcolor basicmenubutton forecolor 1 1 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assists_menubutton forecolor 0.65 0.65 1 1; + } + } + + // Enhancements1 button + itemDef + { + name enhancements_cosmetics_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 233 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name enhancements_cosmetics_menubutton + group none + text "Cosmetics" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 233 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Randomizer Enhancements - Cosmetics" + + mouseEnter + { + show enhancements_cosmetics_glow + } + mouseExit + { + hide enhancements_cosmetics_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + hide basic ; + show enhancements_cosmetics ; + hide enhancements_force ; + hide enhancements_evil ; + hide assists ; + setfocus enhancements_cosmetics ; + setitemcolor basicmenubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 1 1 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assists_menubutton forecolor 0.65 0.65 1 1; + } + } + + // Enhancements2 button + itemDef + { + name enhancements_force_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 263 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name enhancements_force_menubutton + group none + text "Force" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 263 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Randomizer Enhancements - Force" + + mouseEnter + { + show enhancements_force_glow + } + mouseExit + { + hide enhancements_force_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + hide basic ; + hide enhancements_cosmetics ; + show enhancements_force ; + hide enhancements_evil ; + hide assists ; + setfocus enhancements_force ; + setitemcolor basicmenubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 1 1 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assists_menubutton forecolor 0.65 0.65 1 1; + } + } + + // Enhancements2 button + itemDef + { + name enhancements_evil_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 293 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + // Enhancements3 button + itemDef + { + name enhancements_evil_menubutton + group none + text "Evil / Chaos" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 293 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Randomizer Enhancements - Evil and Chaos" + + mouseEnter + { + show enhancements_evil_glow + } + mouseExit + { + hide enhancements_evil_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + hide basic ; + hide enhancements_cosmetics ; + hide enhancements_force ; + show enhancements_evil ; + hide assists ; + setfocus enhancements_evil ; + setitemcolor basicmenubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 1 1 1 1; + setitemcolor assists_menubutton forecolor 0.65 0.65 1 1; + } + } + + // Assists button + itemDef + { + name assists_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 323 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name assists_menubutton + group none + text "Assists" + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 323 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText "Randomizer Enhancements - Assists" + + mouseEnter + { + show assists_glow + } + mouseExit + { + hide assists_glow + } + action + { + play "sound/interface/button1.wav" ; + + show randomizer_background ; + hide basic ; + hide enhancements_cosmetics ; + hide enhancements_force ; + hide enhancements_evil ; + show assists ; + setfocus assists ; + setitemcolor basicmenubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_cosmetics_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_force_menubutton forecolor 0.65 0.65 1 1; + setitemcolor enhancements_evil_menubutton forecolor 0.65 0.65 1 1; + setitemcolor assists_menubutton forecolor 1 1 1 1; + } + } + + itemDef + { + name randomizer_background + group none + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_box1" // Frame + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // HIGHLIGHT BARS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name highlight1 + group highlights + style WINDOW_STYLE_SHADER + rect 305 171 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight2 + group highlights + style WINDOW_STYLE_SHADER + rect 305 191 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight3 + group highlights + style WINDOW_STYLE_SHADER + rect 305 211 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight4 + group highlights + style WINDOW_STYLE_SHADER + rect 305 231 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight5 + group highlights + style WINDOW_STYLE_SHADER + rect 305 251 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight6 + group highlights + style WINDOW_STYLE_SHADER + rect 305 271 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight7 + group highlights + style WINDOW_STYLE_SHADER + rect 305 291 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight8 + group highlights + style WINDOW_STYLE_SHADER + rect 305 311 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight9 + group highlights + style WINDOW_STYLE_SHADER + rect 305 331 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight10 + group highlights + style WINDOW_STYLE_SHADER + rect 305 351 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight11 + group highlights + style WINDOW_STYLE_SHADER + rect 305 371 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight12 + group highlights + style WINDOW_STYLE_SHADER + rect 305 391 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // BASIC FIELDS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name enable_randomizer + group basic + type ITEM_TYPE_MULTI + text "Enable Randomizer:" + cvar "cg_enableRandomizer" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable the randomizer." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name draw_seed + group basic + type ITEM_TYPE_MULTI + text "Show Seed:" + cvar "cg_drawSeed" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Toggle to show the randomizer seed on screen." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + itemDef + { + name use_set_seed + group basic + type ITEM_TYPE_MULTI + text "Use Set Seed:" + cvar "cg_useSetSeed" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to use the set seed below, or OFF to use a random seed." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name set_seed + group basic + type ITEM_TYPE_EDITFIELD + text "Set Seed:" + cvar "cg_setSeed" + cvarFloatList { } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set the seed for the randomizer when Use Set Seed is set to ON." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name randomizer_basic_info1 + group basic + text "Base randomizer have the following :" + font 2 + textscale 0.8 + rect 305 351 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + textaligny -2 + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 11 + decoration + } + + itemDef + { + name randomizer_basic_info2 + group basic + text "RNG on items, NPC types." + font 2 + textscale 0.8 + rect 305 371 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + textaligny -2 + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 11 + decoration + } + + itemDef + { + name randomizer_basic_info3 + group basic + text "-" + font 2 + textscale 0.8 + rect 305 391 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + textaligny -2 + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 11 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // ENHANCEMENTS FIELDS GROUP 1 + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name enable_randomizerEnhancements + group enhancements_cosmetics + type ITEM_TYPE_MULTI + text "Enable Enhancements:" + cvar "cg_enableRandomizerEnhancements" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable listed enhancements" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name random_saber_color + group enhancements_cosmetics + type ITEM_TYPE_MULTI + text "Random Saber Color:" + cvar "cg_enableRandSaberColor" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random saber color every time the saber is chosen" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name random_language_voice_lines + group enhancements_cosmetics + type ITEM_TYPE_MULTI + text "Random Language Voices:" + cvar "cg_enableRandLanguageVoices" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Use a random language version of each line (chosen per level)" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + //---------------------------------------------------------------------------------------------- + // + // ENHANCEMENTS FIELDS GROUP 2 + // + //---------------------------------------------------------------------------------------------- + + itemDef + { + name enable_randomizerEnhancements + group enhancements_force + type ITEM_TYPE_MULTI + text "Enable Enhancements:" + cvar "cg_enableRandomizerEnhancements" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable listed enhancements" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name random_saber_style + group enhancements_force + type ITEM_TYPE_MULTI + text "Random Saber Style:" + cvar "cg_enableRandSaberStyle" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random saber style at pickup" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name random_saber_length + group enhancements_force + type ITEM_TYPE_MULTI + text "Random Saber Length:" + cvar "cg_enableRandSaberLength" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random saber length every time the saber is chosen" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name random_jump_height + group enhancements_force + type ITEM_TYPE_MULTI + text "Random Jump Height:" + cvar "cg_enableRandJumpHeight" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random jump height every jump" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name random_jump_strength + group enhancements_force + type ITEM_TYPE_MULTI + text "Random Jump Strength:" + cvar "cg_enableRandJumpStrength" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random jump strength (vertical speed) every jump" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + + itemDef + { + name random_npc_speed + group enhancements_force + type ITEM_TYPE_MULTI + text "Random NPC Speed:" + cvar "cg_enableRandNPCSpeed" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Between 33% and 300%." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } + + + //---------------------------------------------------------------------------------------------- + // + // ENHANCEMENTS FIELDS GROUP 3 + // + //---------------------------------------------------------------------------------------------- + + itemDef + { + name enable_randomizerEnhancements + group enhancements_evil + type ITEM_TYPE_MULTI + text "Enable Enhancements:" + cvar "cg_enableRandomizerEnhancements" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable listed enhancements" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name random_weapon_projectiles + group enhancements_evil + type ITEM_TYPE_MULTI + text "Random Weapon Projectile:" + cvar "cg_enableRandWeaponProjectile" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random weapon projectiles, check below for details" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name random_weapon_projectiles_mode + group enhancements_evil + type ITEM_TYPE_MULTI + text "Random Projectile CHAOS:" + cvar "cg_enableRandWeaponProjectileMode" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Off : per map, per weapon, per npc | On : CHAOS." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name random_textures + group enhancements_evil + type ITEM_TYPE_MULTI + text "Random Textures:" + cvar "cg_enableRandTextures" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Random textures assigned per surface" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name random_npc_health + group enhancements_evil + type ITEM_TYPE_MULTI + text "Random NPC health :" + cvar "cg_enableRandNpcHealth" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Between 25% and 400%." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + + + //---------------------------------------------------------------------------------------------- + // + // ASSISTS FIELDS + // + //---------------------------------------------------------------------------------------------- + + itemDef + { + name enable_randomizerEnhancements + group assists + type ITEM_TYPE_MULTI + text "Enable Enhancements:" + cvar "cg_enableRandomizerEnhancements" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Set to ON to enable listed enhancements" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name enable_safeStart + group assists + type ITEM_TYPE_MULTI + text "Enable Safe Start:" + cvar "cg_enableSafeStart" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Prevents first two enemies from attacking unprovoked" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name startWithPush + group assists + type ITEM_TYPE_MULTI + text "Start With Force Push" + cvar "cg_startWithPush" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Start with force push 1" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name bonusJanHealth + group assists + type ITEM_TYPE_MULTI + text "Bonus Jan Health:" + cvar "cg_bonusJanHealth" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Starts Jan with +50 bonus health on kejim_post" + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + itemDef + { + name random_kyle_health + group assists + type ITEM_TYPE_MULTI + text "Random Kyle/Player health :" + cvar "cg_enableRandKyleHealth" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Between 33% and 300%." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + } + } +} diff --git a/base/ui/setup.menu b/assets/ui/setup.menu similarity index 94% rename from base/ui/setup.menu rename to assets/ui/setup.menu index fac73c08..700335e8 100644 --- a/base/ui/setup.menu +++ b/assets/ui/setup.menu @@ -1,3105 +1,3144 @@ -//-------------------------------------------------------------- -// -// SETUP MENU -// -// Edited for Speed-Outcast to show speedrun options. -// -//-------------------------------------------------------------- -{ - menuDef - { - name "setupMenu" - fullScreen 1 // MENU_TRUE - rect 0 0 640 480 // Size and position of the menu - visible 1 // Visible on open - focusColor 1 1 1 1 // Focus color for text and items - background "gfx/menus/mainback" // Frame - appearanceIncrement 75 // In miliseconds - descX 375 - descY 425 - descScale .8 - descColor .235 .882 .847 1 // Focus color for text and items - descAlignment ITEM_ALIGN_CENTER - - onOpen - { - uiScript getvideosetup ; // Get video settings - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide mods ; - hide defaults ; - hide speedrun ; - show video ; - show setup_background ; - hide highlights ; - setitemcolor video1menubutton forecolor 1 1 1 1 ; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1 ; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - - onESC - { - play "sound/interface/button1.wav" - - defer VideoSetup videowarningMenu ; - - close all ; - open mainMenu - } - - //---------------------------------------------------------------------------------------------- - // - // MENU BACKGROUND - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name frame_pic - group none - style WINDOW_STYLE_SHADER - rect 0 0 640 480 - background "gfx/menus/menu1" // Frame - forecolor 1 1 1 1 - visible 1 - decoration - } - - // The saber glow on the left - itemDef - { - name saberglow - group none - style WINDOW_STYLE_SHADER - rect 30 0 90 480 - background "gfx/menus/menu3" // Frame - forecolor 0.8 0.8 0.8 1 - visible 1 - decoration - } - - - // The starwars logo on the top - itemDef - { - name starwars - group none - style WINDOW_STYLE_SHADER - rect 143 12 470 93 - background "gfx/menus/menu4" // Frame - forecolor 1 1 1 1 - visible 1 - decoration - } - - // The saber halo on the left - itemDef - { - name saberhalo - group none - style WINDOW_STYLE_SHADER - rect -425 -185 1000 1000 - background "gfx/menus/menu2" // Frame - forecolor 0.5 0.5 0.5 1 - visible 1 - decoration - } - - itemDef - { - name logomodel - group none - type ITEM_TYPE_MODEL - rect -123 48 400 400 - model_angle 90 - model_rotation 3.5 - asset_model "models/map_objects/bespin/jk2logo.md3" -// model_fovx 37 -// model_fovy 34 -// model_origin 100 100 100 - visible 1 - decoration - } - - // The saber halo on the left - itemDef - { - name saberhalo2 - group none - style WINDOW_STYLE_SHADER - rect -225 15 600 600 - background "gfx/menus/menu2b" // Frame - forecolor 0.25 0.25 0.25 1 - visible 1 - decoration - } - - //---------------------------------------------------------------------------------------------- - // - // TOP MAIN MENU BUTTONS - // - //---------------------------------------------------------------------------------------------- - - // Big button "NEW" - itemDef - { - name newgamebutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 115 115 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name newgamebutton - group toprow - style WINDOW_STYLE_EMPTY - type ITEM_TYPE_BUTTON - rect 115 115 130 24 - text @MENUS1_NEW - descText @MENUS1_START_A_NEW_GAME - font 3 - textscale 0.9 - textaligny 0 - textalign ITEM_ALIGN_CENTER - textalignx 65 - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - - mouseEnter - { - show newgamebutton_glow - } - mouseExit - { - hide newgamebutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - close all ; - open newgameMenu - } - } - - // Big button "LOAD" - itemDef - { - name loadgamebutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 245 115 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name loadgamebutton - group toprow - text @MENUS1_LOAD - descText @MENUS1_LOAD_A_SAVED_GAME - style WINDOW_STYLE_EMPTY - type ITEM_TYPE_BUTTON - rect 245 115 130 24 - textaligny 0 - font 3 - textscale 0.9 - textalign ITEM_ALIGN_CENTER - textalignx 65 - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - - mouseEnter - { - show loadgamebutton_glow - } - mouseExit - { - hide loadgamebutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - close all ; - open loadgameMenu - } - } - - // Big button "CONTROLS" - itemDef - { - name controlsbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 375 115 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef { - name controlsbutton - group toprow - text @MENUS0_CONTROLS2 - descText @MENUS0_CONFIGURE_GAME_CONTROLS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 375 115 130 24 - font 3 - textscale 0.9 - textaligny 0 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 65 - backcolor 0 0 0 0 - forecolor 0.65 0.65 1 1 - visible 1 - - mouseEnter - { - show controlsbutton_glow - } - mouseExit - { - hide controlsbutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - close all ; - open controlsMenu ; - } - - } - - // Big button "SETUP" - itemDef - { - name setupbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 505 115 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef { - name setupbutton - group toprow - text @MENUS0_SETUP - descText @MENUS0_CONFIGURE_GAME_SETTINGS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 505 115 130 24 - font 3 - textscale 0.9 - textaligny 0 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 65 - backcolor 0 0 0 0 - forecolor 1 1 1 1 - visible 1 - decoration - action - { - play "sound/interface/button1.wav" ; - } - - - mouseEnter - { - show setupbutton_glow - } - mouseExit - { - hide setupbutton_glow - } - } - - itemDef - { - name header_line - group toprow - style WINDOW_STYLE_SHADER - rect 125 136 500 4 - background "gfx/menus/menu_line" // Frame - forecolor 1 1 1 1 - visible 1 - decoration - } - - - //---------------------------------------------------------------------------------------------- - // - // OTHER MAIN MENU BUTTONS - // - //---------------------------------------------------------------------------------------------- - // Credits hidden button - itemDef - { - name creditsbutton - group othermain -// text @CREDITS - descText @MENUS0_SHOW_GAME_CREDITS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 51 284 52 60 - font 2 - textscale 1 - textaligny 0 - textalign ITEM_ALIGN_CENTER - textalignx 46 - backcolor 0 0 0 0 - forecolor 0.65 0.65 1 1 - visible 0 - - mouseEnter - { - setitemcolor saberhalo2 forecolor 0.7 0.7 0.7 1 - } - mouseExit - { - setitemcolor saberhalo2 forecolor 0.25 0.25 0.25 1 - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - close all ; - open creditsMenu - } - } - - // EXIT button in lower left corner - // Big button "SETUP" - itemDef - { - name exitgamebutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 115 444 130 24 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name exitgamebutton - group othermain - text @MENUS0_EXIT - descText @MENUS1_JEDI_KNIGHT_II - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 115 444 130 24 - font 3 - textscale 1 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 65 - textaligny -1 - forecolor 0.65 0.65 1 1 - visible 1 - - mouseEnter - { - show exitgamebutton_glow - } - mouseExit - { - hide exitgamebutton_glow - } - action - { - play "sound/weapons/saber/saberoff.mp3"; - - defer VideoSetup videowarningMenu ; - - close all ; - open quitMenu - } - } - - //---------------------------------------------------------------------------------------------- - // - // SECOND ROW MENU BUTTONS - // - //---------------------------------------------------------------------------------------------- - // Setup Options title - itemDef - { - name setup_title - group none - style WINDOW_STYLE_SHADER - background "gfx/menus/menu_blendbox" - text @MENUS2_SETUP_OPTIONS - rect 150 145 450 16 - font 3 - textscale 0.7 - textalign ITEM_ALIGN_CENTER - textalignx 225 - textaligny -2 - forecolor 1 1 1 1 - visible 1 - // appearance_slot 2 - decoration - } - - - // video1 button - itemDef - { - name video1button_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 173 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name video1menubutton - group none - text @MENUS1_VIDEO - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 173 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textstyle 3 - textalign ITEM_ALIGN_RIGHT - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGURE_VIDEO_SETTINGS - - mouseEnter - { - show video1button_glow - } - mouseExit - { - hide video1button_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - uiScript getvideosetup ; // Get video settings - - show setup_background ; - show video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide mods ; - hide defaults ; - hide speedrun ; - setfocus graphics ; - setitemcolor video1menubutton forecolor 1 1 1 1 ; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1 ; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // video2 button - itemDef - { - name video2button_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 203 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name video2menubutton - group none - text @MENUS1_MORE_VIDEO - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 203 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGUE_MORE_VIDEO_SETTINGS - - mouseEnter - { - show video2button_glow - } - mouseExit - { - hide video2button_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - show video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide mods ; - hide defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1 ; - setitemcolor video2menubutton forecolor 1 1 1 1 ; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1 ; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1 ; - setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // sound button - itemDef - { - name soundbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 233 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name soundmenubutton - group none - text @MENUS1_SOUND - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 233 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGURE_SOUND_SETTINGS - - mouseEnter - { - show soundbutton_glow - } - mouseExit - { - hide soundbutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - show sound ; - hide options ; - hide mods ; - hide defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 1 1 1 1 ; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // gameoptions button - itemDef - { - name gameoptionsbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 263 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name gameoptionmenubutton - group none - text @MENUS1_GAME_OPTIONS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 263 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGURE_GAME_OPTIONS - - mouseEnter - { - show gameoptionsbutton_glow - } - mouseExit - { - hide gameoptionsbutton_glow - } - action - { - defer VideoSetup videowarningMenu ; - - play "sound/interface/button1.wav" ; - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - show options ; - hide mods ; - hide defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 1 1 1 1 ; - setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // mods button - itemDef - { - name modsbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 293 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name modsmenubutton - group none - text @MENUS1_MODS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 293 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_CONFIGURE_GAME_OPTIONS - - mouseEnter - { - show modsbutton_glow - } - mouseExit - { - hide modsbutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - show mods ; - hide defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor modsmenubutton forecolor 1 1 1 1 ; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // gamedefaults button - itemDef - { - name gamedefaultsbutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 323 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name gamedefaultsmenubutton - group none - text @MENUS1_DEFAULTS - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 323 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText @MENUS0_RESTORE_DEFAULT_SETTINGS - - mouseEnter - { - show gamedefaultsbutton_glow - } - mouseExit - { - hide gamedefaultsbutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide mods ; - show defaults ; - hide speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 1 1 1 1 ; - setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; - } - } - - // speedrun button - itemDef - { - name speedrunmenubutton_glow - group highlights - style WINDOW_STYLE_SHADER - rect 120 368 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name speedrunmenubutton - group none - text Speedrun - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 368 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 0.65 0.65 1 1 - visible 1 - descText "Speedrun Settings" - - mouseEnter - { - show speedrunmenubutton_glow - } - mouseExit - { - hide speedrunmenubutton_glow - } - action - { - play "sound/interface/button1.wav" ; - - defer VideoSetup videowarningMenu ; - - show setup_background ; - hide video ; - hide applyChanges ; - hide video2 ; - hide vidrestart ; - hide sound ; - hide options ; - hide mods ; - hide defaults ; - show speedrun ; - setitemcolor video1menubutton forecolor 0.65 0.65 1 1; - setitemcolor video2menubutton forecolor 0.65 0.65 1 1; - setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; - setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; - setitemcolor speedrunmenubutton forecolor 1 1 1 1 ; - } - } - - itemDef - { - name setup_background - group none - style WINDOW_STYLE_SHADER - rect 300 171 300 250 - background "gfx/menus/menu_box1" // Frame - forecolor 1 1 1 1 - visible 0 - decoration - } - - //---------------------------------------------------------------------------------------------- - // - // HIGHLIGHT BARS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name highlight1 - group highlights - style WINDOW_STYLE_SHADER - rect 305 171 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight2 - group highlights - style WINDOW_STYLE_SHADER - rect 305 191 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight3 - group highlights - style WINDOW_STYLE_SHADER - rect 305 211 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight4 - group highlights - style WINDOW_STYLE_SHADER - rect 305 231 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight5 - group highlights - style WINDOW_STYLE_SHADER - rect 305 251 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight6 - group highlights - style WINDOW_STYLE_SHADER - rect 305 271 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight7 - group highlights - style WINDOW_STYLE_SHADER - rect 305 291 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight8 - group highlights - style WINDOW_STYLE_SHADER - rect 305 311 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight9 - group highlights - style WINDOW_STYLE_SHADER - rect 305 331 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight10 - group highlights - style WINDOW_STYLE_SHADER - rect 305 351 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight11 - group highlights - style WINDOW_STYLE_SHADER - rect 305 371 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - itemDef - { - name highlight12 - group highlights - style WINDOW_STYLE_SHADER - rect 305 391 300 20 - background "gfx/menus/menu_blendbox" - forecolor 1 1 1 1 - visible 0 - decoration - } - - //---------------------------------------------------------------------------------------------- - // - // VIDEO 1 MENU BUTTONS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name graphics - group video - text @MENUS0_VIDEO_QUALITY - type ITEM_TYPE_MULTI - rect 305 171 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - style WINDOW_STYLE_FILLED - forecolor 1 1 1 1 - descText @MENUS1_SELECT_PRESET_GRAPHIC - - visible 0 - - cvar "ui_r_glCustom" - cvarFloatList - { - @MENUS1_HIGH_QUALITY 0 - @MENUS1_NORMAL 1 - @MENUS1_FAST 2 - @MENUS1_FASTEST 3 - @MENUS1_CUSTOM 4 - } - - mouseenter - { - show highlight1 - } - mouseexit - { - hide highlight1 - } - action - { - play "sound/interface/button1.wav" ; - uiScript update "ui_r_glCustom" ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - - itemDef - { - name video_mode - group video - type ITEM_TYPE_MULTI - text @MENUS0_VIDEO_MODE - cvarFloatList { @MENUS1_640_X_480 3 @MENUS1_800_X_600 4 @MENUS1_960_X_720 5 @MENUS1_1024_X_768 6 @MENUS1_1152_X_864 7 @MENUS1_1280_X_1024 8 @MENUS1_1600_X_1200 9 @MENUS1_2048_X_1536 10 } - cvar "ui_r_mode" - - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - descText @MENUS1_CHANGE_THE_DISPLAY_RESOLUTION - - visible 0 - - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name color_depth - group video - type ITEM_TYPE_MULTI - text @MENUS0_COLOR_DEPTH - rect 305 231 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - - cvarFloatList { @MENUS0_DEFAULT 0 @MENUS0_16_BIT 16 @MENUS0_32_BIT 32 } - descText @MENUS1_CHANGE_THE_NUMBER_OF - cvar "ui_r_colorbits" - - visible 0 - - mouseenter - { - show highlight4 - } - mouseexit - { - hide highlight4 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - uiScript update "ui_r_colorbits" ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name fullscreen - group video - type ITEM_TYPE_MULTI - text @MENUS0_FULL_SCREEN - rect 305 251 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - descText @MENUS1_TOGGLE_BETWEEN_FULL_SCREEN - cvar "ui_r_fullscreen" - - visible 0 - - mouseenter - { - show highlight5 - } - mouseexit - { - hide highlight5 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name geometric_detail - group video - type ITEM_TYPE_MULTI - text @MENUS0_GEOMETRIC_DETAIL - rect 305 271 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_LOW 2 @MENUS0_MEDIUM 1 @MENUS0_HIGH 0 } - descText @MENUS1_ADJUST_THE_NUMBER_OF - cvar "ui_r_lodbias" - - visible 0 - - mouseenter - { - show highlight6 - } - mouseexit - { - hide highlight6 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - uiScript update "ui_r_lodbias" ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name texture_detail - group video - type ITEM_TYPE_MULTI - text @MENUS0_TEXTURE_DETAIL - rect 305 291 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_LOW 3 @MENUS0_MEDIUM 2 @MENUS0_HIGH 1 @MENUS0_VERY_HIGH 0 } - descText @MENUS1_SELECT_THE_RESOLUTION - cvar "ui_r_picmip" - - visible 0 - - mouseenter - { - show highlight7 - } - mouseexit - { - hide highlight7 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name texture_quality - group video - type ITEM_TYPE_MULTI - text @MENUS0_TEXTURE_QUALITY - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_DEFAULT 0 @MENUS0_16_BIT 16 @MENUS0_32_BIT 32 } - descText @MENUS1_SELECT_THE_NUMBER_OF - cvar "ui_r_texturebits" - - visible 0 - - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name texture_filter - group video - type ITEM_TYPE_MULTI - text @MENUS0_TEXTURE_FILTER - rect 305 331 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarStrList { @MENUS1_BILINEAR , "GL_LINEAR_MIPMAP_NEAREST" , @MENUS1_TRILINEAR , "GL_LINEAR_MIPMAP_LINEAR" } - descText @MENUS1_ADJUST_HOW_WELL_THE_TEXTURES - cvar "ui_r_texturemode" - - visible 0 - - mouseenter - { - show highlight9 - } - mouseexit - { - hide highlight9 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name simple_shaders - group video - type ITEM_TYPE_MULTI - text @MENUS0_DETAILED_SHADERS - rect 305 351 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - descText @MENUS1_HIDE_OR_UNHIDE_TEXTURES - cvar "ui_r_detailtextures" - - visible 0 - - mouseenter - { - show highlight10 - } - mouseexit - { - hide highlight10 - } - action - { - play "sound/interface/button1.wav" ; - uiScript glCustom ; - setcvar ui_r_modified 1 ; - show applyChanges - } - } - - itemDef - { - name compress_textures - group video_obsolete - type ITEM_TYPE_MULTI - text @MENUS0_COMPRESSED_TEXTURES - rect 305 371 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - descText @MENUS1_TAKE_ADVANTAGE_OF_3D - cvar "ui_r_ext_compress_textures" - - visible 0 - - mouseenter - { - show highlight11 - } - mouseexit - { - hide highlight11 - } - action - { - play "sound/interface/button1.wav" - uiScript glCustom - setcvar ui_r_modified 1 - show applyChanges - } - } - - // APPLY CHANGES BUTTON - itemDef - { - name applybutton_glow - group none - style WINDOW_STYLE_SHADER - rect 120 383 170 30 - background "gfx/menus/menu_blendbox2" // Frame around button - forecolor 1 0.5 0.5 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name applyChanges - group none - text @MENUS0_APPLY_CHANGES - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 120 383 170 30 - font 3 - textscale 0.9 - textalignx 170 - textaligny 5 - textalign ITEM_ALIGN_RIGHT - textstyle 3 - forecolor 1 0 0 1 - backcolor 0 0 1 0 - visible 0 - - mouseEnter - { - show applybutton_glow - } - mouseExit - { - hide applybutton_glow - } - action - { - play "sound/interface/button1.wav" ; - show setup_background ; - show vidrestart ; - setfocus vidrestart_no ; - hide video ; - hide video2 ; - hide applybutton_glow ; - } - } - - itemDef - { - name gl_extensions - group video - type ITEM_TYPE_MULTI - text @MENUS1_GL_EXTENSIONS - rect 305 191 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - cvar ui_r_allowExtensions - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - // appearance_slot 3 - descText @MENUS2_TOGGLE_GL_EXTENSIONS - - mouseenter - { - show highlight2 - } - mouseexit - { - hide highlight2 - } - action - { - play "sound/interface/button1.wav" - setcvar ui_r_modified 1 - show applyChanges - } - } - - - //---------------------------------------------------------------------------------------------- - // - // VIDEO RESTART - // - //---------------------------------------------------------------------------------------------- - // Faint red box - itemDef - { - name vidrestart_background - group vidrestart - style WINDOW_STYLE_SHADER - rect 300 171 300 250 - background "gfx/menus/menu_boxred" // Frame - forecolor 1 1 1 0.5 - visible 0 - decoration - } - - itemDef - { - name vidrestart_text1 - group vidrestart - text @MENUS0_THIS_WILL_APPLY_VIDEO - text2 @MENUS0_AND_RETURN_TO_THE_MAIN - rect 305 230 290 20 - textalign ITEM_ALIGN_CENTER - text2aligny 18 - textalignx 145 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - decoration - } - - itemDef - { - name vidrestart_text2 - group vidrestart - text @MENUS0_VID_RESTART3 - rect 305 300 290 20 - textalign ITEM_ALIGN_CENTER - textalignx 145 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - } - - - - itemDef - { - name vidrestart_yes_button - group none - style WINDOW_STYLE_SHADER - rect 467 386 120 32 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - decoration - visible 0 - // appearance_slot 4 - } - - // YES button - itemDef - { - name vidrestart_yes - group vidrestart - text @MENUS0_YES - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 467 386 120 32 - font 2 - textscale 1 - textalign ITEM_ALIGN_CENTER - textalignx 60 - textaligny 0 - descText @MENUS0_APPLY_CHANGES_AND_THEN - forecolor 0.65 0.65 1 1 - visible -1 - // appearance_slot 5 - - action - { - play "sound/interface/button1.wav" ; - close all ; - uiScript updatevideosetup ; - } - mouseEnter - { - show vidrestart_yes_button - } - mouseExit - { - hide vidrestart_yes_button - } - - } - - itemDef - { - name vidrestart_no_button - group none - style WINDOW_STYLE_SHADER - rect 305 386 120 32 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - decoration - visible 0 - // appearance_slot 3 - } - - // CANCEL button - itemDef - { - name vidrestart_no - group vidrestart - text @MENUS0_NO - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 305 386 120 32 - font 2 - textscale 1 - textalign ITEM_ALIGN_CENTER - textalignx 60 - textaligny -1 - descText @MENUS0_DO_NOT_APPLY_CHANGES - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 6 - action - { - play "sound/interface/button1.wav" ; - setfocus video1menubutton ; - show setup_background ; - hide vidrestart ; - show video ; - hide video2 ; - show applyChanges ; - hide vidrestart_yes_button ; - hide vidrestart_no_button ; - } - mouseEnter - { - show vidrestart_no_button - } - mouseExit - { - hide vidrestart_no_button - } - - } - - //---------------------------------------------------------------------------------------------- - // - // VIDEO 2 - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name gamma_text - group video2 - style WINDOW_STYLE_SHADER - rect 310 171 280 36 - background "gfx/menus/greyscale" // greyscale - forecolor 1 1 1 1 - visible 0 - decoration - // appearance_slot 1 - } - - - - itemDef - { - name bright_text - group video2 - text @MENUS0_ADJUST_BRIGHTNESS_SLIDER - text2 @MENUS0_THE_NUMBER_6_CAN_BARELY - text2aligny 14 - textalignx 128 - font 2 - textscale 0.8 - rect 305 211 256 20 - textalign ITEM_ALIGN_CENTER - forecolor 0.7 0.7 0.7 1 - visible 0 - // appearance_slot 2 - decoration - } - - itemDef - { - name brightness - group video2 - type ITEM_TYPE_SLIDER - text @MENUS0_VIDEO_BRIGHTNESS - cvarfloat "r_gamma" 1 .5 3 - rect 305 251 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 120 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 3 - descText @MENUS1_ADJUST_THE_BRIGHTNESS - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight5 - } - mouseexit - { - hide highlight5 - } - } - - itemDef - { - name shadows - group video2 - type ITEM_TYPE_MULTI - text @MENUS3_SHADOWS - descText @MENUS3_SHADOWS_DESC - cvar "cg_shadows" - cvarFloatList - { - @MENUS3_NONE 0 - @MENUS3_SHADOWS_SIMPLE 1 - @MENUS3_SHADOWS_VOLUMETRIC 2 -// "Projected" 3 - } - rect 305 271 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - action - { - play "sound/interface/button1.wav" ; - } - mouseenter - { - show highlight6 - } - mouseexit - { - hide highlight6 - } - - } - - - itemDef - { - name video_sync - group video2 - type ITEM_TYPE_MULTI - text @MENUS3_VIDEO_SYNC - cvar "r_swapInterval" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 291 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS3_VIDEO_SYNC_DESC - - mouseenter - { - show highlight7 - } - mouseexit - { - hide highlight7 - } - action - { - play "sound/interface/button1.wav" ; - - } - } - - - itemDef - { - name dynamic_light - group video2 - type ITEM_TYPE_MULTI - text @MENUS0_DYNAMIC_LIGHTS - cvar "r_dynamiclight" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS1_TOGGLE_TO_TURN_ON_MOVING - - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - action - { - play "sound/interface/button1.wav" ; - - } - } - - itemDef - { - name wall_marks - group video2 - type ITEM_TYPE_MULTI - text @MENUS0_WALL_MARKS - cvar "cg_marks" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 331 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS1_TOGGLE_TO_DISPLAY_SCORCH - - mouseenter - { - show highlight9 - } - mouseexit - { - hide highlight9 - } - action - { - play "sound/interface/button1.wav" - } - } - - itemDef - { - name video_mode - group video2 - type ITEM_TYPE_MULTI - text @MENUS0_ANISOTROPIC_FILTERING - cvarTest r_ext_texture_filter_anisotropic_avail - hideCvar { 0 } - cvar r_ext_texture_filter_anisotropic - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 351 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 5 - - descText @MENUS1_TOGGLE_ADVANCED_TEXTURE - - mouseenter - { - show highlight10 - } - mouseexit - { - hide highlight10 - } - action - { - play "sound/interface/button1.wav" - } - } - - itemDef - { - name light_flares - group video2-obsolete - type ITEM_TYPE_MULTI - text @MENUS0_LIGHT_FLARES - cvar "r_flares" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 371 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS1_TOGGLE_TO_SHOW_HALOS - - mouseenter - { - show highlight11 - } - mouseexit - { - hide highlight11 - } - action - { - play "sound/interface/button1.wav" - } - } - - itemDef - { - name advancedvideobutton_glow - group none - style WINDOW_STYLE_SHADER - rect 355 391 200 20 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name advancedvideo - group video2 - type ITEM_TYPE_BUTTON - text @MENUS2_SHOW_DRIVER_INFO - rect 355 391 200 20 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 100 - font 2 - textscale 0.8 - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 5 - descText @MENUS2_SHOW_ADVANCED_INFORMATION - - mouseenter - { - show advancedvideobutton_glow - } - mouseexit - { - hide advancedvideobutton_glow - } - action - { - play "sound/interface/button1.wav" - setfocus video2menubutton - hide advancedvideobutton_glow - open videodriverMenu - } - } - - //---------------------------------------------------------------------------------------------- - // - // SOUND FIELDS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name effects_volume - group sound - type ITEM_TYPE_SLIDER - text @MENUS0_EFFECTS_VOLUME - cvarfloat "s_volume" 0 0 1 - rect 305 191 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 120 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS1_ADJUST_VOLUME_FOR_SOUND - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight2 - } - mouseexit - { - hide highlight2 - } - } - - itemDef - { - name music_volume - group sound - type ITEM_TYPE_SLIDER - text @MENUS0_MUSIC_VOLUME - cvarfloat "s_musicvolume" 0 0 1 - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 120 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 2 - descText @MENUS1_ADJUST_VOLUME_FOR_MUSIC - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - } - - itemDef - { - name voice_volume - group sound - type ITEM_TYPE_SLIDER - text @MENUS1_VOICE_VOLUME - cvarfloat "s_volumevoice" 0 0 1 - rect 305 231 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 120 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 2 - descText @MENUS2_ADJUST_VOLUME_FOR_SPEECH - action - { - play "sound/interface/button1.wav" ; - } - - mouseenter - { - show highlight4 - } - mouseexit - { - hide highlight4 - } - } - - itemDef - { - name sound_quality - group sound - type ITEM_TYPE_MULTI - text @MENUS0_SOUND_QUALITY - cvar "s_khz" - cvarFloatList { @MENUS0_LOW 11 @MENUS0_HIGH 22 } - rect 305 271 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 3 - descText @MENUS2_TRADE_CLARITY_OF_SOUND - - mouseenter - { - show highlight6 - } - mouseexit - { - hide highlight6 - } - action - { - play "sound/interface/button1.wav" - uiScript update s_khz - } - } - - //---------------------------------------------------------------------------------------------- - // - // OPTION FIELDS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name draw_crosshair - group options - type ITEM_TYPE_MULTI - text @MENUS2_DRAW_CROSSHAIR - cvar "cg_drawcrosshair" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 171 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - descText @MENUS2_TOGGLE_TO_SHOW_OR_HIDE - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight1 - } - mouseexit - { - hide highlight1 - } - } - - - itemDef - { - name identifytarget - group options - type ITEM_TYPE_MULTI - text @MENUS0_IDENTIFY_TARGET - cvar "cg_crosshairIdentifyTarget" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 191 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - descText @MENUS2_TOGGLE_TO_HAVE_THE_CROSSHAIR - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight2 - } - mouseexit - { - hide highlight2 - } - } - - - itemDef - { - name slowmo - group options - type ITEM_TYPE_MULTI - text @MENUS2_SLOW_MOTION_DEATH - cvar "d_slowmodeath" - cvarFloatList - { - @MENUS2_NEVER 0 - @MENUS2_ON_DEATH 1 - @MENUS2_RARELY 2 - @MENUS1_NORMAL 3 - @MENUS2_OFTEN 4 - @MENUS2_FREQUENTLY 5 - @MENUS2_EXCESSIVELY 6 - } - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_SELECT_THE_FREQUENCY - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - } - - - itemDef - { - name force3rd - group options - type ITEM_TYPE_MULTI - text @MENUS2_3RD_PERSON_LIGHTSABER - cvar "cg_saberAutoThird" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 231 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_WHEN_READYING_LIGHTSABER - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight4 - } - mouseexit - { - hide highlight4 - } - } - - - itemDef - { - name force1st - group options - type ITEM_TYPE_MULTI - text @MENUS2_1ST_PERSON_GUNS - cvar "cg_gunAutoFirst" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 251 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_WHEN_PUTTING_AWAY_SABER - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight5 - } - mouseexit - { - hide highlight5 - } - } - - - itemDef - { - name dismemberment - group options - type ITEM_TYPE_MULTI - text @MENUS2_DISMEMBERMENT - cvar "g_dismemberment" - cvarFloatList - { - @MENUS0_OFF 0 - @MENUS0_ON 3 - } - cvarTest ui_iscensored - hideCvar { 1 } - rect 305 291 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_SELECT_WHAT_LIGHTSABER - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight7 - } - mouseexit - { - hide highlight7 - } - } - -// Weapon Sway. Yes, this is nutty. Two cvars here, one removes weapon sway, the other adds it. - itemDef - { - name weaponswayon - group options - type ITEM_TYPE_MULTI - text @MENUS3_VIEW_SWAYING - descText @MENUS3_VIEW_SWAYING_DESC - cvar "ui_disableWeaponSway" - cvarFloatList - { - @MENUS0_ON 0 - @MENUS0_OFF 1 - } - cvarTest "ui_disableWeaponSway" - showCvar - { - "0" - } - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - - action - { - play "sound/interface/button1.wav" - exec "exec noMotion.cfg" ; - show weaponswayoff ; - setfocus weaponswayoff - } - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - } - - itemDef - { - name weaponswayoff - group options - type ITEM_TYPE_MULTI - text @MENUS3_VIEW_SWAYING - descText @MENUS3_VIEW_SWAYING_DESC - cvar "ui_disableWeaponSway" - cvarFloatList - { - @MENUS0_ON 0 - @MENUS0_OFF 1 - } - cvarTest "ui_disableWeaponSway" - hideCvar - { - "0" - } - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - - action - { - play "sound/interface/button1.wav" - exec "exec restoreMotion.cfg" ; - show weaponswayon ; - setfocus weaponswayon - } - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - } - - - -/* - itemDef - { - name dismembermentprob - group options_obsolete - type ITEM_TYPE_MULTI - text @MENUS2_DISMEMBER_PROBABILITY - cvar "g_dismemberProbabilities" - cvarFloatList - { - @MENUS2_RARE 2 - @MENUS1_NORMAL 1 - @MENUS2_EXCESSIVE 0 - } - rect 305 311 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_SELECT_FREQUENCY_OF_DISMEMBERMENT - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight8 - } - mouseexit - { - hide highlight8 - } - } -*/ - - itemDef - { - name text - group options - type ITEM_TYPE_MULTI - text @MENUS0_TEXT - cvar "sp_language" - cvarFloatList - { - "English" 0 - "Francais" 1 - "Deutsch" 2 - } - rect 305 351 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS2_CHOOSE_THE_LANGUAGE_FOR - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight10 - } - mouseexit - { - hide highlight10 - } - } - - itemDef - { - name voice - group options - type ITEM_TYPE_MULTI - text @MENUS1_VOICE - cvar "s_language" - cvarStrList - { - "English", "english" - "Francais" "francais" - "Deutsch" "deutsch" - } - rect 305 371 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS3_CHOOSE_THE_LANGUAGE_TO - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight11 - } - mouseexit - { - hide highlight11 - } - } - - itemDef - { - name voice - group options - type ITEM_TYPE_MULTI - text @MENUS1_SUBTITLES - cvar "g_subtitles" - cvarFloatList - { - @MENUS3_NONE 0 - @MENUS3_IN_CINEMATICS 2 -// @MENUS3_ALL_VOICEOVERS 1 - } - rect 305 391 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS3_TOGGLE_WHETHER_SUBTITLES - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight12 - } - mouseexit - { - hide highlight12 - } - } - - - -// This menu option is no longer used. - itemDef - { - name sync_frame - group options_obsolete - type ITEM_TYPE_MULTI - text @MENUS1_SYNC_EVERY_FRAME - cvar "r_finish" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText @MENUS3_TOGGLE_TO_PREVENT_VIDEO - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - } - - //---------------------------------------------------------------------------------------------- - // - // MOD GAME MENU specific stuff - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name serverinfo - group mods - rect 302 184 300 200 - type ITEM_TYPE_LISTBOX - style WINDOW_STYLE_FILLED - elementwidth 120 - elementheight 16 - font 2 - textscale 1 - border 1 - bordersize 1 - bordercolor .5 .5 .5 .5 - forecolor 0.65 0.65 1 1 - backcolor 0 0 .5 .25 - outlinecolor .5 .5 .5 .5 - elementtype LISTBOX_TEXT - feeder 9 - notselectable - visible 0 - columns 2 2 40 20 200 80 30 - } - - itemDef - { - name loadmod_button - group none - style WINDOW_STYLE_SHADER - rect 305 391 300 20 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - decoration - } - - itemDef - { - name loadmod - group mods - text @MENUS1_LOAD_MOD - descText @MENUS1_LOAD_CHOSEN_MOD - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 305 391 300 20 - textalign ITEM_ALIGN_CENTER - textalignx 150 - font 2 - textscale 0.8 - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 2 - action - { - play "sound/interface/button1.wav" -// uiScript loadgame - } - - mouseEnter - { - show loadmod_button - } - mouseExit - { - hide loadmod_button - } - } - - //---------------------------------------------------------------------------------------------- - // - // RESET DEFAULTS - // - //---------------------------------------------------------------------------------------------- - // Faint red box - itemDef - { - name vidrestart_background - group defaults - style WINDOW_STYLE_SHADER - rect 300 171 300 250 - background "gfx/menus/menu_boxred" // Frame - forecolor 1 1 1 0.5 - visible 0 - decoration - } - - itemDef - { - name options - group defaults - text @MENUS0_WARNING - rect 305 191 300 20 - textalign ITEM_ALIGN_CENTER - textalignx 150 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - decoration - } - - itemDef - { - name options - group defaults - text @MENUS2_THIS_WILL_SET_ALL_GAME - text2 @MENUS2_TO_THEIR_FACTORY_SETTINGS - rect 305 231 300 20 - textalign ITEM_ALIGN_CENTER - textalignx 150 - text2aligny 20 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - decoration - } - - itemDef - { - name options - group defaults - text @MENUS0_VID_RESTART3 - rect 305 291 300 20 - textalign ITEM_ALIGN_CENTER - textalignx 150 - font 2 - textscale 1 - forecolor 1 1 0 1 - visible 0 - decoration - } - - - itemDef - { - name default_yes_button - group highlights - style WINDOW_STYLE_SHADER - rect 467 386 120 32 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - decoration - visible 0 - // appearance_slot 4 - } - - // YES button - lose reset defaults - itemDef - { - name default_yes - group defaults - text @MENUS0_YES - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 467 386 120 32 - font 2 - textscale 1 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 60 - textaligny 0 - descText @MENUS0_USE_DEFAULT_SETTINGS - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 5 - - action - { - play "sound/interface/button1.wav" ; - hide highlights ; - close all ; - uiscript resetdefaults - } - mouseEnter - { - show default_yes_button - } - mouseExit - { - hide default_yes_button - } - - } - - itemDef - { - name default_no_button - group highlights - style WINDOW_STYLE_SHADER - rect 305 386 120 32 - background "gfx/menus/menu_buttonback" // Frame around button - forecolor 1 1 1 1 - decoration - visible 0 - // appearance_slot 3 - } - - // NO button - return to Main Menu - itemDef - { - name default_no - group defaults - text @MENUS0_NO - type ITEM_TYPE_BUTTON - style WINDOW_STYLE_EMPTY - rect 305 386 120 32 - font 2 - textscale 1 - textalign ITEM_ALIGN_CENTER - textstyle 3 - textalignx 60 - textaligny 0 - descText @MENUS0_DO_NOT_RESET_DEFAULT - forecolor 0.65 0.65 1 1 - visible 0 - // appearance_slot 6 - action - { - play "sound/interface/button1.wav" - hide highlights ; - hide default_no_button - close all ; - open mainMenu ; - } - mouseEnter - { - show default_no_button - } - mouseExit - { - hide default_no_button - } - } - - //---------------------------------------------------------------------------------------------- - // - // SPEEDRUN FIELDS - // - //---------------------------------------------------------------------------------------------- - itemDef - { - name draw_secrets - group speedrun - type ITEM_TYPE_MULTI - text "Show Secret Count:" - cvar "cg_drawSecrets" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 191 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - descText "Toggle to show number of found and total secrets." - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight2 - } - mouseexit - { - hide highlight2 - } - } - - - itemDef - { - name draw_overbounceinfo - group speedrun - type ITEM_TYPE_MULTI - text "Show Overbounce Info:" - cvar "cg_drawOverbounceInfo" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 211 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - descText "Toggle to show or hide overbounce information." - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight3 - } - mouseexit - { - hide highlight3 - } - } - - - itemDef - { - name draw_speed - group speedrun - type ITEM_TYPE_MULTI - text "Show Speed:" - cvar "cg_drawSpeed" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 231 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText "Toggle to show or hide speed display." - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight4 - } - mouseexit - { - hide highlight4 - } - } - - - itemDef - { - name draw_strafehelper - group speedrun - type ITEM_TYPE_MULTI - text "Strafe Helper:" - cvar "cg_drawStrafeHelper" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 271 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText "Toggle to show or hide the strafe helper." - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight6 - } - mouseexit - { - hide highlight6 - } - } - - - itemDef - { - name draw_jumphelper - group speedrun - type ITEM_TYPE_MULTI - text "Jump Height Helper:" - cvar "cg_drawJumpHelper" - cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } - rect 305 291 300 20 - textalign ITEM_ALIGN_RIGHT - textalignx 165 - textaligny -2 - font 2 - textscale 0.8 - forecolor 1 1 1 1 - visible 0 - // appearance_slot 1 - descText "Toggle to show or hide the jump height helper." - - action - { - play "sound/interface/button1.wav" - } - mouseenter - { - show highlight7 - } - mouseexit - { - hide highlight7 - } - } - } -} +//-------------------------------------------------------------- +// +// SETUP MENU +// +// Edited for Speed-Outcast to show speedrun options. +// +//-------------------------------------------------------------- +{ + menuDef + { + name "setupMenu" + fullScreen 1 // MENU_TRUE + rect 0 0 640 480 // Size and position of the menu + visible 1 // Visible on open + focusColor 1 1 1 1 // Focus color for text and items + background "gfx/menus/mainback" // Frame + appearanceIncrement 75 // In miliseconds + descX 375 + descY 425 + descScale .8 + descColor .235 .882 .847 1 // Focus color for text and items + descAlignment ITEM_ALIGN_CENTER + + onOpen + { + uiScript getvideosetup ; // Get video settings + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide mods ; + hide defaults ; + hide speedrun ; + show video ; + show setup_background ; + hide highlights ; + setitemcolor video1menubutton forecolor 1 1 1 1 ; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1 ; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + + onESC + { + play "sound/interface/button1.wav" + + defer VideoSetup videowarningMenu ; + + close all ; + open mainMenu + } + + //---------------------------------------------------------------------------------------------- + // + // MENU BACKGROUND + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name frame_pic + group none + style WINDOW_STYLE_SHADER + rect 0 0 640 480 + background "gfx/menus/menu1" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber glow on the left + itemDef + { + name saberglow + group none + style WINDOW_STYLE_SHADER + rect 30 0 90 480 + background "gfx/menus/menu3" // Frame + forecolor 0.8 0.8 0.8 1 + visible 1 + decoration + } + + + // The starwars logo on the top + itemDef + { + name starwars + group none + style WINDOW_STYLE_SHADER + rect 143 12 470 93 + background "gfx/menus/menu4" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo + group none + style WINDOW_STYLE_SHADER + rect -425 -185 1000 1000 + background "gfx/menus/menu2" // Frame + forecolor 0.5 0.5 0.5 1 + visible 1 + decoration + } + + itemDef + { + name logomodel + group none + type ITEM_TYPE_MODEL + rect -123 48 400 400 + model_angle 90 + model_rotation 3.5 + asset_model "models/map_objects/bespin/jk2logo.md3" +// model_fovx 37 +// model_fovy 34 +// model_origin 100 100 100 + visible 1 + decoration + } + + // The saber halo on the left + itemDef + { + name saberhalo2 + group none + style WINDOW_STYLE_SHADER + rect -225 15 600 600 + background "gfx/menus/menu2b" // Frame + forecolor 0.25 0.25 0.25 1 + visible 1 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // TOP MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + + // Big button "NEW" + itemDef + { + name newgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 115 115 80 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name newgamebutton + group toprow + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 90 115 80 24 + text @MENUS1_NEW + descText @MENUS1_START_A_NEW_GAME + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show newgamebutton_glow + } + mouseExit + { + hide newgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open newgameMenu + } + } + + // Big button "LOAD" + itemDef + { + name loadgamebutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 195 115 90 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadgamebutton + group toprow + text @MENUS1_LOAD + descText @MENUS1_LOAD_A_SAVED_GAME + style WINDOW_STYLE_EMPTY + type ITEM_TYPE_BUTTON + rect 175 115 90 24 + textaligny 0 + font 3 + textscale 0.9 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show loadgamebutton_glow + } + mouseExit + { + hide loadgamebutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open loadgameMenu + } + } + + // Big button "CONTROLS" + itemDef + { + name controlsbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 275 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name controlsbutton + group toprow + text @MENUS0_CONTROLS2 + descText @MENUS0_CONFIGURE_GAME_CONTROLS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 275 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show controlsbutton_glow + } + mouseExit + { + hide controlsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open controlsMenu ; + } + } + + // Big button "SETUP" + itemDef + { + name setupbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 395 115 100 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name setupbutton + group toprow + text @MENUS0_SETUP + descText @MENUS0_CONFIGURE_GAME_SETTINGS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 380 115 100 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show setupbutton_glow + } + mouseExit + { + hide setupbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open setupMenu ; + } + } + + // Big button "RANDOMIZER" + itemDef + { + name randomizerbutton_glow + group mods + style WINDOW_STYLE_SHADER + rect 495 115 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef { + name randomizerbutton + group toprow + text RANDOMIZER + descText Configure randomizer settings + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 495 115 130 24 + font 3 + textscale 0.9 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show randomizerbutton_glow + } + mouseExit + { + hide randomizerbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + close all ; + open randomizerMenu ; + } + } + + itemDef + { + name header_line + group toprow + style WINDOW_STYLE_SHADER + rect 125 136 500 4 + background "gfx/menus/menu_line" // Frame + forecolor 1 1 1 1 + visible 1 + decoration + } + + + //---------------------------------------------------------------------------------------------- + // + // OTHER MAIN MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Credits hidden button + itemDef + { + name creditsbutton + group othermain +// text @CREDITS + descText @MENUS0_SHOW_GAME_CREDITS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 51 284 52 60 + font 2 + textscale 1 + textaligny 0 + textalign ITEM_ALIGN_CENTER + textalignx 46 + backcolor 0 0 0 0 + forecolor 0.65 0.65 1 1 + visible 0 + + mouseEnter + { + setitemcolor saberhalo2 forecolor 0.7 0.7 0.7 1 + } + mouseExit + { + setitemcolor saberhalo2 forecolor 0.25 0.25 0.25 1 + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + close all ; + open creditsMenu + } + } + + // EXIT button in lower left corner + // Big button "SETUP" + itemDef + { + name exitgamebutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 115 444 130 24 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name exitgamebutton + group othermain + text @MENUS0_EXIT + descText @MENUS1_JEDI_KNIGHT_II + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 115 444 130 24 + font 3 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 65 + textaligny -1 + forecolor 0.65 0.65 1 1 + visible 1 + + mouseEnter + { + show exitgamebutton_glow + } + mouseExit + { + hide exitgamebutton_glow + } + action + { + play "sound/weapons/saber/saberoff.mp3"; + + defer VideoSetup videowarningMenu ; + + close all ; + open quitMenu + } + } + + //---------------------------------------------------------------------------------------------- + // + // SECOND ROW MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + // Setup Options title + itemDef + { + name setup_title + group none + style WINDOW_STYLE_SHADER + background "gfx/menus/menu_blendbox" + text @MENUS2_SETUP_OPTIONS + rect 150 145 450 16 + font 3 + textscale 0.7 + textalign ITEM_ALIGN_CENTER + textalignx 225 + textaligny -2 + forecolor 1 1 1 1 + visible 1 + // appearance_slot 2 + decoration + } + + + // video1 button + itemDef + { + name video1button_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 173 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name video1menubutton + group none + text @MENUS1_VIDEO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 173 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textstyle 3 + textalign ITEM_ALIGN_RIGHT + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_VIDEO_SETTINGS + + mouseEnter + { + show video1button_glow + } + mouseExit + { + hide video1button_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + uiScript getvideosetup ; // Get video settings + + show setup_background ; + show video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide mods ; + hide defaults ; + hide speedrun ; + setfocus graphics ; + setitemcolor video1menubutton forecolor 1 1 1 1 ; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1 ; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // video2 button + itemDef + { + name video2button_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 203 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name video2menubutton + group none + text @MENUS1_MORE_VIDEO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 203 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGUE_MORE_VIDEO_SETTINGS + + mouseEnter + { + show video2button_glow + } + mouseExit + { + hide video2button_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + show video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide mods ; + hide defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1 ; + setitemcolor video2menubutton forecolor 1 1 1 1 ; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1 ; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1 ; + setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // sound button + itemDef + { + name soundbutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 233 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name soundmenubutton + group none + text @MENUS1_SOUND + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 233 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_SOUND_SETTINGS + + mouseEnter + { + show soundbutton_glow + } + mouseExit + { + hide soundbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + show sound ; + hide options ; + hide mods ; + hide defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 1 1 1 1 ; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // gameoptions button + itemDef + { + name gameoptionsbutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 263 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name gameoptionmenubutton + group none + text @MENUS1_GAME_OPTIONS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 263 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_GAME_OPTIONS + + mouseEnter + { + show gameoptionsbutton_glow + } + mouseExit + { + hide gameoptionsbutton_glow + } + action + { + defer VideoSetup videowarningMenu ; + + play "sound/interface/button1.wav" ; + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + show options ; + hide mods ; + hide defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 1 1 1 1 ; + setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // mods button + itemDef + { + name modsbutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 293 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name modsmenubutton + group none + text @MENUS1_MODS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 293 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_CONFIGURE_GAME_OPTIONS + + mouseEnter + { + show modsbutton_glow + } + mouseExit + { + hide modsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + show mods ; + hide defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor modsmenubutton forecolor 1 1 1 1 ; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // gamedefaults button + itemDef + { + name gamedefaultsbutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 323 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name gamedefaultsmenubutton + group none + text @MENUS1_DEFAULTS + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 323 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText @MENUS0_RESTORE_DEFAULT_SETTINGS + + mouseEnter + { + show gamedefaultsbutton_glow + } + mouseExit + { + hide gamedefaultsbutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide mods ; + show defaults ; + hide speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 1 1 1 1 ; + setitemcolor speedrunmenubutton forecolor 0.65 0.65 1 1; + } + } + + // speedrun button + itemDef + { + name speedrunmenubutton_glow + group highlights + style WINDOW_STYLE_SHADER + rect 120 368 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name speedrunmenubutton + group none + text Speedrun + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 368 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 0.65 0.65 1 1 + visible 1 + descText "Speedrun Settings" + + mouseEnter + { + show speedrunmenubutton_glow + } + mouseExit + { + hide speedrunmenubutton_glow + } + action + { + play "sound/interface/button1.wav" ; + + defer VideoSetup videowarningMenu ; + + show setup_background ; + hide video ; + hide applyChanges ; + hide video2 ; + hide vidrestart ; + hide sound ; + hide options ; + hide mods ; + hide defaults ; + show speedrun ; + setitemcolor video1menubutton forecolor 0.65 0.65 1 1; + setitemcolor video2menubutton forecolor 0.65 0.65 1 1; + setitemcolor soundmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gameoptionmenubutton forecolor 0.65 0.65 1 1; + setitemcolor modsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor gamedefaultsmenubutton forecolor 0.65 0.65 1 1; + setitemcolor speedrunmenubutton forecolor 1 1 1 1 ; + } + } + + itemDef + { + name setup_background + group none + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_box1" // Frame + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // HIGHLIGHT BARS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name highlight1 + group highlights + style WINDOW_STYLE_SHADER + rect 305 171 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight2 + group highlights + style WINDOW_STYLE_SHADER + rect 305 191 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight3 + group highlights + style WINDOW_STYLE_SHADER + rect 305 211 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight4 + group highlights + style WINDOW_STYLE_SHADER + rect 305 231 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight5 + group highlights + style WINDOW_STYLE_SHADER + rect 305 251 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight6 + group highlights + style WINDOW_STYLE_SHADER + rect 305 271 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight7 + group highlights + style WINDOW_STYLE_SHADER + rect 305 291 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight8 + group highlights + style WINDOW_STYLE_SHADER + rect 305 311 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight9 + group highlights + style WINDOW_STYLE_SHADER + rect 305 331 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight10 + group highlights + style WINDOW_STYLE_SHADER + rect 305 351 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight11 + group highlights + style WINDOW_STYLE_SHADER + rect 305 371 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + itemDef + { + name highlight12 + group highlights + style WINDOW_STYLE_SHADER + rect 305 391 300 20 + background "gfx/menus/menu_blendbox" + forecolor 1 1 1 1 + visible 0 + decoration + } + + //---------------------------------------------------------------------------------------------- + // + // VIDEO 1 MENU BUTTONS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name graphics + group video + text @MENUS0_VIDEO_QUALITY + type ITEM_TYPE_MULTI + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + style WINDOW_STYLE_FILLED + forecolor 1 1 1 1 + descText @MENUS1_SELECT_PRESET_GRAPHIC + + visible 0 + + cvar "ui_r_glCustom" + cvarFloatList + { + @MENUS1_HIGH_QUALITY 0 + @MENUS1_NORMAL 1 + @MENUS1_FAST 2 + @MENUS1_FASTEST 3 + @MENUS1_CUSTOM 4 + } + + mouseenter + { + show highlight1 + } + mouseexit + { + hide highlight1 + } + action + { + play "sound/interface/button1.wav" ; + uiScript update "ui_r_glCustom" ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + + itemDef + { + name video_mode + group video + type ITEM_TYPE_MULTI + text @MENUS0_VIDEO_MODE + cvarFloatList { @MENUS1_640_X_480 3 @MENUS1_800_X_600 4 @MENUS1_960_X_720 5 @MENUS1_1024_X_768 6 @MENUS1_1152_X_864 7 @MENUS1_1280_X_1024 8 @MENUS1_1600_X_1200 9 @MENUS1_2048_X_1536 10 } + cvar "ui_r_mode" + + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + descText @MENUS1_CHANGE_THE_DISPLAY_RESOLUTION + + visible 0 + + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name color_depth + group video + type ITEM_TYPE_MULTI + text @MENUS0_COLOR_DEPTH + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + + cvarFloatList { @MENUS0_DEFAULT 0 @MENUS0_16_BIT 16 @MENUS0_32_BIT 32 } + descText @MENUS1_CHANGE_THE_NUMBER_OF + cvar "ui_r_colorbits" + + visible 0 + + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + uiScript update "ui_r_colorbits" ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name fullscreen + group video + type ITEM_TYPE_MULTI + text @MENUS0_FULL_SCREEN + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + descText @MENUS1_TOGGLE_BETWEEN_FULL_SCREEN + cvar "ui_r_fullscreen" + + visible 0 + + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name geometric_detail + group video + type ITEM_TYPE_MULTI + text @MENUS0_GEOMETRIC_DETAIL + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_LOW 2 @MENUS0_MEDIUM 1 @MENUS0_HIGH 0 } + descText @MENUS1_ADJUST_THE_NUMBER_OF + cvar "ui_r_lodbias" + + visible 0 + + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + uiScript update "ui_r_lodbias" ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name texture_detail + group video + type ITEM_TYPE_MULTI + text @MENUS0_TEXTURE_DETAIL + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_LOW 3 @MENUS0_MEDIUM 2 @MENUS0_HIGH 1 @MENUS0_VERY_HIGH 0 } + descText @MENUS1_SELECT_THE_RESOLUTION + cvar "ui_r_picmip" + + visible 0 + + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name texture_quality + group video + type ITEM_TYPE_MULTI + text @MENUS0_TEXTURE_QUALITY + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_DEFAULT 0 @MENUS0_16_BIT 16 @MENUS0_32_BIT 32 } + descText @MENUS1_SELECT_THE_NUMBER_OF + cvar "ui_r_texturebits" + + visible 0 + + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name texture_filter + group video + type ITEM_TYPE_MULTI + text @MENUS0_TEXTURE_FILTER + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarStrList { @MENUS1_BILINEAR , "GL_LINEAR_MIPMAP_NEAREST" , @MENUS1_TRILINEAR , "GL_LINEAR_MIPMAP_LINEAR" } + descText @MENUS1_ADJUST_HOW_WELL_THE_TEXTURES + cvar "ui_r_texturemode" + + visible 0 + + mouseenter + { + show highlight9 + } + mouseexit + { + hide highlight9 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name simple_shaders + group video + type ITEM_TYPE_MULTI + text @MENUS0_DETAILED_SHADERS + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + descText @MENUS1_HIDE_OR_UNHIDE_TEXTURES + cvar "ui_r_detailtextures" + + visible 0 + + mouseenter + { + show highlight10 + } + mouseexit + { + hide highlight10 + } + action + { + play "sound/interface/button1.wav" ; + uiScript glCustom ; + setcvar ui_r_modified 1 ; + show applyChanges + } + } + + itemDef + { + name compress_textures + group video_obsolete + type ITEM_TYPE_MULTI + text @MENUS0_COMPRESSED_TEXTURES + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + descText @MENUS1_TAKE_ADVANTAGE_OF_3D + cvar "ui_r_ext_compress_textures" + + visible 0 + + mouseenter + { + show highlight11 + } + mouseexit + { + hide highlight11 + } + action + { + play "sound/interface/button1.wav" + uiScript glCustom + setcvar ui_r_modified 1 + show applyChanges + } + } + + // APPLY CHANGES BUTTON + itemDef + { + name applybutton_glow + group none + style WINDOW_STYLE_SHADER + rect 120 383 170 30 + background "gfx/menus/menu_blendbox2" // Frame around button + forecolor 1 0.5 0.5 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name applyChanges + group none + text @MENUS0_APPLY_CHANGES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 120 383 170 30 + font 3 + textscale 0.9 + textalignx 170 + textaligny 5 + textalign ITEM_ALIGN_RIGHT + textstyle 3 + forecolor 1 0 0 1 + backcolor 0 0 1 0 + visible 0 + + mouseEnter + { + show applybutton_glow + } + mouseExit + { + hide applybutton_glow + } + action + { + play "sound/interface/button1.wav" ; + show setup_background ; + show vidrestart ; + setfocus vidrestart_no ; + hide video ; + hide video2 ; + hide applybutton_glow ; + } + } + + itemDef + { + name gl_extensions + group video + type ITEM_TYPE_MULTI + text @MENUS1_GL_EXTENSIONS + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + cvar ui_r_allowExtensions + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + // appearance_slot 3 + descText @MENUS2_TOGGLE_GL_EXTENSIONS + + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + action + { + play "sound/interface/button1.wav" + setcvar ui_r_modified 1 + show applyChanges + } + } + + + //---------------------------------------------------------------------------------------------- + // + // VIDEO RESTART + // + //---------------------------------------------------------------------------------------------- + // Faint red box + itemDef + { + name vidrestart_background + group vidrestart + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_boxred" // Frame + forecolor 1 1 1 0.5 + visible 0 + decoration + } + + itemDef + { + name vidrestart_text1 + group vidrestart + text @MENUS0_THIS_WILL_APPLY_VIDEO + text2 @MENUS0_AND_RETURN_TO_THE_MAIN + rect 305 230 290 20 + textalign ITEM_ALIGN_CENTER + text2aligny 18 + textalignx 145 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + decoration + } + + itemDef + { + name vidrestart_text2 + group vidrestart + text @MENUS0_VID_RESTART3 + rect 305 300 290 20 + textalign ITEM_ALIGN_CENTER + textalignx 145 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + } + + + + itemDef + { + name vidrestart_yes_button + group none + style WINDOW_STYLE_SHADER + rect 467 386 120 32 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 4 + } + + // YES button + itemDef + { + name vidrestart_yes + group vidrestart + text @MENUS0_YES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 467 386 120 32 + font 2 + textscale 1 + textalign ITEM_ALIGN_CENTER + textalignx 60 + textaligny 0 + descText @MENUS0_APPLY_CHANGES_AND_THEN + forecolor 0.65 0.65 1 1 + visible -1 + // appearance_slot 5 + + action + { + play "sound/interface/button1.wav" ; + close all ; + uiScript updatevideosetup ; + } + mouseEnter + { + show vidrestart_yes_button + } + mouseExit + { + hide vidrestart_yes_button + } + + } + + itemDef + { + name vidrestart_no_button + group none + style WINDOW_STYLE_SHADER + rect 305 386 120 32 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 3 + } + + // CANCEL button + itemDef + { + name vidrestart_no + group vidrestart + text @MENUS0_NO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 305 386 120 32 + font 2 + textscale 1 + textalign ITEM_ALIGN_CENTER + textalignx 60 + textaligny -1 + descText @MENUS0_DO_NOT_APPLY_CHANGES + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 6 + action + { + play "sound/interface/button1.wav" ; + setfocus video1menubutton ; + show setup_background ; + hide vidrestart ; + show video ; + hide video2 ; + show applyChanges ; + hide vidrestart_yes_button ; + hide vidrestart_no_button ; + } + mouseEnter + { + show vidrestart_no_button + } + mouseExit + { + hide vidrestart_no_button + } + + } + + //---------------------------------------------------------------------------------------------- + // + // VIDEO 2 + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name gamma_text + group video2 + style WINDOW_STYLE_SHADER + rect 310 171 280 36 + background "gfx/menus/greyscale" // greyscale + forecolor 1 1 1 1 + visible 0 + decoration + // appearance_slot 1 + } + + + + itemDef + { + name bright_text + group video2 + text @MENUS0_ADJUST_BRIGHTNESS_SLIDER + text2 @MENUS0_THE_NUMBER_6_CAN_BARELY + text2aligny 14 + textalignx 128 + font 2 + textscale 0.8 + rect 305 211 256 20 + textalign ITEM_ALIGN_CENTER + forecolor 0.7 0.7 0.7 1 + visible 0 + // appearance_slot 2 + decoration + } + + itemDef + { + name brightness + group video2 + type ITEM_TYPE_SLIDER + text @MENUS0_VIDEO_BRIGHTNESS + cvarfloat "r_gamma" 1 .5 3 + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 120 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS1_ADJUST_THE_BRIGHTNESS + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + itemDef + { + name shadows + group video2 + type ITEM_TYPE_MULTI + text @MENUS3_SHADOWS + descText @MENUS3_SHADOWS_DESC + cvar "cg_shadows" + cvarFloatList + { + @MENUS3_NONE 0 + @MENUS3_SHADOWS_SIMPLE 1 + @MENUS3_SHADOWS_VOLUMETRIC 2 +// "Projected" 3 + } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + action + { + play "sound/interface/button1.wav" ; + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + + } + + + itemDef + { + name video_sync + group video2 + type ITEM_TYPE_MULTI + text @MENUS3_VIDEO_SYNC + cvar "r_swapInterval" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS3_VIDEO_SYNC_DESC + + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + action + { + play "sound/interface/button1.wav" ; + + } + } + + + itemDef + { + name dynamic_light + group video2 + type ITEM_TYPE_MULTI + text @MENUS0_DYNAMIC_LIGHTS + cvar "r_dynamiclight" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_TOGGLE_TO_TURN_ON_MOVING + + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + action + { + play "sound/interface/button1.wav" ; + + } + } + + itemDef + { + name wall_marks + group video2 + type ITEM_TYPE_MULTI + text @MENUS0_WALL_MARKS + cvar "cg_marks" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 331 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_TOGGLE_TO_DISPLAY_SCORCH + + mouseenter + { + show highlight9 + } + mouseexit + { + hide highlight9 + } + action + { + play "sound/interface/button1.wav" + } + } + + itemDef + { + name video_mode + group video2 + type ITEM_TYPE_MULTI + text @MENUS0_ANISOTROPIC_FILTERING + cvarTest r_ext_texture_filter_anisotropic_avail + hideCvar { 0 } + cvar r_ext_texture_filter_anisotropic + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 5 + + descText @MENUS1_TOGGLE_ADVANCED_TEXTURE + + mouseenter + { + show highlight10 + } + mouseexit + { + hide highlight10 + } + action + { + play "sound/interface/button1.wav" + } + } + + itemDef + { + name light_flares + group video2-obsolete + type ITEM_TYPE_MULTI + text @MENUS0_LIGHT_FLARES + cvar "r_flares" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_TOGGLE_TO_SHOW_HALOS + + mouseenter + { + show highlight11 + } + mouseexit + { + hide highlight11 + } + action + { + play "sound/interface/button1.wav" + } + } + + itemDef + { + name advancedvideobutton_glow + group none + style WINDOW_STYLE_SHADER + rect 355 391 200 20 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name advancedvideo + group video2 + type ITEM_TYPE_BUTTON + text @MENUS2_SHOW_DRIVER_INFO + rect 355 391 200 20 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 100 + font 2 + textscale 0.8 + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 5 + descText @MENUS2_SHOW_ADVANCED_INFORMATION + + mouseenter + { + show advancedvideobutton_glow + } + mouseexit + { + hide advancedvideobutton_glow + } + action + { + play "sound/interface/button1.wav" + setfocus video2menubutton + hide advancedvideobutton_glow + open videodriverMenu + } + } + + //---------------------------------------------------------------------------------------------- + // + // SOUND FIELDS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name effects_volume + group sound + type ITEM_TYPE_SLIDER + text @MENUS0_EFFECTS_VOLUME + cvarfloat "s_volume" 0 0 1 + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 120 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS1_ADJUST_VOLUME_FOR_SOUND + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + itemDef + { + name music_volume + group sound + type ITEM_TYPE_SLIDER + text @MENUS0_MUSIC_VOLUME + cvarfloat "s_musicvolume" 0 0 1 + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 120 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS1_ADJUST_VOLUME_FOR_MUSIC + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + itemDef + { + name voice_volume + group sound + type ITEM_TYPE_SLIDER + text @MENUS1_VOICE_VOLUME + cvarfloat "s_volumevoice" 0 0 1 + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 120 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 2 + descText @MENUS2_ADJUST_VOLUME_FOR_SPEECH + action + { + play "sound/interface/button1.wav" ; + } + + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + itemDef + { + name sound_quality + group sound + type ITEM_TYPE_MULTI + text @MENUS0_SOUND_QUALITY + cvar "s_khz" + cvarFloatList { @MENUS0_LOW 11 @MENUS0_HIGH 22 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 3 + descText @MENUS2_TRADE_CLARITY_OF_SOUND + + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + action + { + play "sound/interface/button1.wav" + uiScript update s_khz + } + } + + //---------------------------------------------------------------------------------------------- + // + // OPTION FIELDS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name draw_crosshair + group options + type ITEM_TYPE_MULTI + text @MENUS2_DRAW_CROSSHAIR + cvar "cg_drawcrosshair" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 171 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS2_TOGGLE_TO_SHOW_OR_HIDE + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight1 + } + mouseexit + { + hide highlight1 + } + } + + + itemDef + { + name identifytarget + group options + type ITEM_TYPE_MULTI + text @MENUS0_IDENTIFY_TARGET + cvar "cg_crosshairIdentifyTarget" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText @MENUS2_TOGGLE_TO_HAVE_THE_CROSSHAIR + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + + itemDef + { + name slowmo + group options + type ITEM_TYPE_MULTI + text @MENUS2_SLOW_MOTION_DEATH + cvar "d_slowmodeath" + cvarFloatList + { + @MENUS2_NEVER 0 + @MENUS2_ON_DEATH 1 + @MENUS2_RARELY 2 + @MENUS1_NORMAL 3 + @MENUS2_OFTEN 4 + @MENUS2_FREQUENTLY 5 + @MENUS2_EXCESSIVELY 6 + } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_SELECT_THE_FREQUENCY + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + + itemDef + { + name force3rd + group options + type ITEM_TYPE_MULTI + text @MENUS2_3RD_PERSON_LIGHTSABER + cvar "cg_saberAutoThird" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_WHEN_READYING_LIGHTSABER + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + + itemDef + { + name force1st + group options + type ITEM_TYPE_MULTI + text @MENUS2_1ST_PERSON_GUNS + cvar "cg_gunAutoFirst" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 251 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_WHEN_PUTTING_AWAY_SABER + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight5 + } + mouseexit + { + hide highlight5 + } + } + + + itemDef + { + name dismemberment + group options + type ITEM_TYPE_MULTI + text @MENUS2_DISMEMBERMENT + cvar "g_dismemberment" + cvarFloatList + { + @MENUS0_OFF 0 + @MENUS0_ON 3 + } + cvarTest ui_iscensored + hideCvar { 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_SELECT_WHAT_LIGHTSABER + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + +// Weapon Sway. Yes, this is nutty. Two cvars here, one removes weapon sway, the other adds it. + itemDef + { + name weaponswayon + group options + type ITEM_TYPE_MULTI + text @MENUS3_VIEW_SWAYING + descText @MENUS3_VIEW_SWAYING_DESC + cvar "ui_disableWeaponSway" + cvarFloatList + { + @MENUS0_ON 0 + @MENUS0_OFF 1 + } + cvarTest "ui_disableWeaponSway" + showCvar + { + "0" + } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + + action + { + play "sound/interface/button1.wav" + exec "exec noMotion.cfg" ; + show weaponswayoff ; + setfocus weaponswayoff + } + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } + + itemDef + { + name weaponswayoff + group options + type ITEM_TYPE_MULTI + text @MENUS3_VIEW_SWAYING + descText @MENUS3_VIEW_SWAYING_DESC + cvar "ui_disableWeaponSway" + cvarFloatList + { + @MENUS0_ON 0 + @MENUS0_OFF 1 + } + cvarTest "ui_disableWeaponSway" + hideCvar + { + "0" + } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + + action + { + play "sound/interface/button1.wav" + exec "exec restoreMotion.cfg" ; + show weaponswayon ; + setfocus weaponswayon + } + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } + + + +/* + itemDef + { + name dismembermentprob + group options_obsolete + type ITEM_TYPE_MULTI + text @MENUS2_DISMEMBER_PROBABILITY + cvar "g_dismemberProbabilities" + cvarFloatList + { + @MENUS2_RARE 2 + @MENUS1_NORMAL 1 + @MENUS2_EXCESSIVE 0 + } + rect 305 311 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_SELECT_FREQUENCY_OF_DISMEMBERMENT + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight8 + } + mouseexit + { + hide highlight8 + } + } +*/ + + itemDef + { + name text + group options + type ITEM_TYPE_MULTI + text @MENUS0_TEXT + cvar "sp_language" + cvarFloatList + { + "English" 0 + "Francais" 1 + "Deutsch" 2 + } + rect 305 351 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS2_CHOOSE_THE_LANGUAGE_FOR + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight10 + } + mouseexit + { + hide highlight10 + } + } + + itemDef + { + name voice + group options + type ITEM_TYPE_MULTI + text @MENUS1_VOICE + cvar "s_language" + cvarStrList + { + "English", "english" + "Francais" "francais" + "Deutsch" "deutsch" + } + rect 305 371 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS3_CHOOSE_THE_LANGUAGE_TO + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight11 + } + mouseexit + { + hide highlight11 + } + } + + itemDef + { + name voice + group options + type ITEM_TYPE_MULTI + text @MENUS1_SUBTITLES + cvar "g_subtitles" + cvarFloatList + { + @MENUS3_NONE 0 + @MENUS3_IN_CINEMATICS 2 +// @MENUS3_ALL_VOICEOVERS 1 + } + rect 305 391 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS3_TOGGLE_WHETHER_SUBTITLES + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight12 + } + mouseexit + { + hide highlight12 + } + } + + + +// This menu option is no longer used. + itemDef + { + name sync_frame + group options_obsolete + type ITEM_TYPE_MULTI + text @MENUS1_SYNC_EVERY_FRAME + cvar "r_finish" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText @MENUS3_TOGGLE_TO_PREVENT_VIDEO + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + //---------------------------------------------------------------------------------------------- + // + // MOD GAME MENU specific stuff + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name serverinfo + group mods + rect 302 184 300 200 + type ITEM_TYPE_LISTBOX + style WINDOW_STYLE_FILLED + elementwidth 120 + elementheight 16 + font 2 + textscale 1 + border 1 + bordersize 1 + bordercolor .5 .5 .5 .5 + forecolor 0.65 0.65 1 1 + backcolor 0 0 .5 .25 + outlinecolor .5 .5 .5 .5 + elementtype LISTBOX_TEXT + feeder 9 + notselectable + visible 0 + columns 2 2 40 20 200 80 30 + } + + itemDef + { + name loadmod_button + group none + style WINDOW_STYLE_SHADER + rect 305 391 300 20 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + decoration + } + + itemDef + { + name loadmod + group mods + text @MENUS1_LOAD_MOD + descText @MENUS1_LOAD_CHOSEN_MOD + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 305 391 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + font 2 + textscale 0.8 + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 2 + action + { + play "sound/interface/button1.wav" +// uiScript loadgame + } + + mouseEnter + { + show loadmod_button + } + mouseExit + { + hide loadmod_button + } + } + + //---------------------------------------------------------------------------------------------- + // + // RESET DEFAULTS + // + //---------------------------------------------------------------------------------------------- + // Faint red box + itemDef + { + name vidrestart_background + group defaults + style WINDOW_STYLE_SHADER + rect 300 171 300 250 + background "gfx/menus/menu_boxred" // Frame + forecolor 1 1 1 0.5 + visible 0 + decoration + } + + itemDef + { + name options + group defaults + text @MENUS0_WARNING + rect 305 191 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + decoration + } + + itemDef + { + name options + group defaults + text @MENUS2_THIS_WILL_SET_ALL_GAME + text2 @MENUS2_TO_THEIR_FACTORY_SETTINGS + rect 305 231 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + text2aligny 20 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + decoration + } + + itemDef + { + name options + group defaults + text @MENUS0_VID_RESTART3 + rect 305 291 300 20 + textalign ITEM_ALIGN_CENTER + textalignx 150 + font 2 + textscale 1 + forecolor 1 1 0 1 + visible 0 + decoration + } + + + itemDef + { + name default_yes_button + group highlights + style WINDOW_STYLE_SHADER + rect 467 386 120 32 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 4 + } + + // YES button - lose reset defaults + itemDef + { + name default_yes + group defaults + text @MENUS0_YES + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 467 386 120 32 + font 2 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 60 + textaligny 0 + descText @MENUS0_USE_DEFAULT_SETTINGS + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 5 + + action + { + play "sound/interface/button1.wav" ; + hide highlights ; + close all ; + uiscript resetdefaults + } + mouseEnter + { + show default_yes_button + } + mouseExit + { + hide default_yes_button + } + + } + + itemDef + { + name default_no_button + group highlights + style WINDOW_STYLE_SHADER + rect 305 386 120 32 + background "gfx/menus/menu_buttonback" // Frame around button + forecolor 1 1 1 1 + decoration + visible 0 + // appearance_slot 3 + } + + // NO button - return to Main Menu + itemDef + { + name default_no + group defaults + text @MENUS0_NO + type ITEM_TYPE_BUTTON + style WINDOW_STYLE_EMPTY + rect 305 386 120 32 + font 2 + textscale 1 + textalign ITEM_ALIGN_CENTER + textstyle 3 + textalignx 60 + textaligny 0 + descText @MENUS0_DO_NOT_RESET_DEFAULT + forecolor 0.65 0.65 1 1 + visible 0 + // appearance_slot 6 + action + { + play "sound/interface/button1.wav" + hide highlights ; + hide default_no_button + close all ; + open mainMenu ; + } + mouseEnter + { + show default_no_button + } + mouseExit + { + hide default_no_button + } + } + + //---------------------------------------------------------------------------------------------- + // + // SPEEDRUN FIELDS + // + //---------------------------------------------------------------------------------------------- + itemDef + { + name draw_secrets + group speedrun + type ITEM_TYPE_MULTI + text "Show Secret Count:" + cvar "cg_drawSecrets" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 191 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Toggle to show number of found and total secrets." + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight2 + } + mouseexit + { + hide highlight2 + } + } + + + itemDef + { + name draw_overbounceinfo + group speedrun + type ITEM_TYPE_MULTI + text "Show Overbounce Info:" + cvar "cg_drawOverbounceInfo" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 211 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + descText "Toggle to show or hide overbounce information." + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight3 + } + mouseexit + { + hide highlight3 + } + } + + + itemDef + { + name draw_speed + group speedrun + type ITEM_TYPE_MULTI + text "Show Speed:" + cvar "cg_drawSpeed" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 231 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText "Toggle to show or hide speed display." + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight4 + } + mouseexit + { + hide highlight4 + } + } + + + itemDef + { + name draw_strafehelper + group speedrun + type ITEM_TYPE_MULTI + text "Strafe Helper:" + cvar "cg_drawStrafeHelper" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 271 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText "Toggle to show or hide the strafe helper." + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight6 + } + mouseexit + { + hide highlight6 + } + } + + + itemDef + { + name draw_jumphelper + group speedrun + type ITEM_TYPE_MULTI + text "Jump Height Helper:" + cvar "cg_drawJumpHelper" + cvarFloatList { @MENUS0_OFF 0 @MENUS0_ON 1 } + rect 305 291 300 20 + textalign ITEM_ALIGN_RIGHT + textalignx 165 + textaligny -2 + font 2 + textscale 0.8 + forecolor 1 1 1 1 + visible 0 + // appearance_slot 1 + descText "Toggle to show or hide the jump height helper." + + action + { + play "sound/interface/button1.wav" + } + mouseenter + { + show highlight7 + } + mouseexit + { + hide highlight7 + } + } + } +} diff --git a/code/base/ext_data/NPCs.cfg b/code/base/ext_data/NPCs.cfg deleted file mode 100644 index 68a07192..00000000 --- a/code/base/ext_data/NPCs.cfg +++ /dev/null @@ -1,2315 +0,0 @@ -//Star Wars -/* -defaults and explanations of fields: - aggression 3 How likely they are to attack (from 1 (least) to 5 (most)) - aim 3 How good their aim is (from 1 (worst) to 5 (best)) - earshot 1024 How far in map units they can hear, in map units - evasion 3 How likely they are to take cover or defensive maneuvers (from 1 (least) to 5 (most)) - hfov 45 Horizontal field of view, in angles - intelligence 3 How smart they are, in general (from 1 (least) to 5 (most)) - move 3 How complex their moves are when evading or in combat (from 1 (least) to 5 (most)) - reactions 3 How quickly they react (from 1 (worst) to 5 (best)) - shootDistance 0 Overrides current weapon's max range - vfov 34 Vertical field of view, in angles - vigilance 0.1 How likely they are to notice something (from 0 (never) to 1 (always)) - visrange 2048 How far away they can see something, in map units - race none human, borg, parasite, klingon, malon, hirogen, stasis, species8472, dreadnought, harvester, reaver, avatar, vulcan - playerTeam none player, enemy, neutral - enemyTeam none player, enemy, neutral - - health 100 Health of entity (if not supplied by designer) - - moveType "runjump" Which movetype they can be (other choices are "static", "walk" and "flyswim" - yawSpeed 50 How quickly they can turn - walkSpeed 150 How fast they walk - runSpeed 300 How fast they run - acceleration 15 Acceleration (accel x 20fps = speed up per second, so accel of 15 means they can go from 0 to 300 in one second) - Accel of 0 means don't accel/decel - just start/stop (good if you're a slow mover anyway and/or robotic - like a Borg) - - scaleX 100 X (horiz) scale, 100 is normal 100% scale - scaleY 100 Y (horiz) scale, 100 is normal 100% scale - scaleZ 100 Z (vert) scale, 100 is normal 100% scale - scale 100 Sets all above 3 to what you specify - headModel "hazard" model directory/skin name - torsoModel "hazard" model directory/skin name - legsModel "hazard" model directory/skin name - headYawRangeLeft 70 How far left you can turn your head (angles) - headYawRangeRight 70 How far right you can turn your head (angles) - headPitchRangeUp 60 How far up you can tilt your head (angles) - headPitchRangeDown 60 How far down you can tilt your head (angles) - torsoYawRangeLeft 60 How far left you can turn your torso (angles) - torsoYawRangeRight 60 How far right you can turn your torso (angles) - torsoPitchRangeUp 30 How far up you can tilt your torso (angles) - torsoPitchRangeDown 70 How far down you can tilt your torso (angles) - - snd "munro" subdirectory of sound/player from which to get custom sounds (pain, death, jump, etc.) - dismemberProbHead 0 probability of head being dismembered ( from 0 (never) to 100 (always) ) - dismemberProbArms 0 probability of arms being dismembered ( from 0 (never) to 100 (always) ) - dismemberProbHands 0 probability of hands being dismembered ( from 0 (never) to 100 (always) ) - dismemberProbLegs 0 probability of legs being dismembered ( from 0 (never) to 100 (always) ) - dismemberProbWaist 0 probability of waist being dismembered ( from 0 (never) to 100 (always) ) -*/ - -//Characters -munro -{ - fullName "Katarn, Kyle" - playerModel kyle - saberColor blue - reactions 4 - aim 5 - move 3 - aggression 5 - evasion 5 - intelligence 5 - playerTeam player -// race human - class kyle - snd munro -} - -Kyle -{ - fullName "Katarn, Kyle" - playerModel kyle - saberColor blue - reactions 4 - aim 5 - move 3 - aggression 5 - evasion 5 - intelligence 5 - playerTeam player -// race human - class kyle - snd kyle - sndcombat kyle - sndjedi kyle - dismemberProbHead 1 - dismemberProbArms 1 - dismemberProbHands 20 - dismemberProbLegs 1 - dismemberProbWaist 1 -} - -Tavion -{ - playerModel tavion - rank commander - saberColor red - reactions 3 - aim 3 - move 5 - aggression 3 - evasion 4 - intelligence 5 - hfov 160 - vfov 160 - playerTeam enemy - enemyTeam player -// race human - class tavion - snd tavion - sndcombat tavion - sndjedi tavion - yawSpeed 120 - walkSpeed 55 - runSpeed 200 - health 300 - dismemberProbHead 10 - dismemberProbArms 35 - dismemberProbLegs 10 - dismemberProbHands 50 - dismemberProbWaist 10 -} - -Lando -{ - fullName "Calrissian, Lando" - playerModel lando - snd lando - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam player - enemyTeam enemy -// race human - class lando - snd lando - sndcombat lando - sndextra lando - sndjedi lando - walkSpeed 55 - runSpeed 200 - yawspeed 120 - dismemberProbHead 0 - dismemberProbArms 0 - dismemberProbHands 0 - dismemberProbLegs 0 - dismemberProbWaist 0 -} - -Reelo -{ - fullName "Baruk, Reelo" - playerModel reelo - snd reelo - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class reelo - snd reelo - sndcombat reelo - sndextra reelo - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 5 - dismemberProbArms 1 - dismemberProbHands 20 - dismemberProbLegs 1 - dismemberProbWaist 0 -} - -Jan -{ - fullName "Ors, Jan" - playerModel jan - rank lt - reactions 3 - aim 5 - move 3 - aggression 3 - evasion 3 - intelligence 3 - playerTeam player - enemyTeam enemy - class jan - snd jan - sndcombat jan - sndextra jan - yawSpeed 140 - walkSpeed 55 - runSpeed 200 -// race human - snd jan - dismemberProbHead 0 - dismemberProbArms 0 - dismemberProbHands 1 - dismemberProbLegs 0 - dismemberProbWaist 0 -} - -Galak -{ - fullName "Fyyar, Galak" - playerModel galak - snd galak - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank captain - playerTeam enemy - enemyTeam player -// race klingon - class imperial - yawspeed 90 - walkSpeed 55 - runSpeed 200 -} - -Galak_Mech -{ - fullName "Fyyar, Galak" - playerModel galak_mech - health 1000 - width 20 - height 88 - crouchheight 88 - snd galak_mech - reactions 3 - aim 5 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class galak_mech - snd galak - sndcombat galak - sndextra galak - yawSpeed 50 - walkSpeed 45 - runSpeed 150 - dismemberProbHead 0 - dismemberProbArms 0 - dismemberProbHands 0 - dismemberProbLegs 0 - dismemberProbWaist 0 - headPitchRangeUp 60 - headPitchRangeDown 60 - torsoPitchRangeUp 60 - torsoPitchRangeDown 60 -} - - -Desann -{ - fullName "Desann" - playerModel desann - saberColor red - rank captain - reactions 3 - aim 3 - move 5 - aggression 3 - evasion 5 - intelligence 5 - hfov 160 - vfov 160 - scale 135 - height 78 - crouchheight 42 - width 18 - playerTeam enemy - enemyTeam player -// race human - class desann - yawSpeed 120 - walkSpeed 55 - runSpeed 200 - snd desann - sndcombat desann - sndjedi desann - health 500 - dismemberProbHead 10 - dismemberProbArms 35 - dismemberProbLegs 10 - dismemberProbHands 50 - dismemberProbWaist 10 -} - -Luke -{ - fullName "Skywalker, Luke" - playerModel luke - saberColor green - rank captain - reactions 3 - aim 3 - move 3 - aggression 3 - evasion 5 - intelligence 3 - playerTeam player - enemyTeam enemy - class luke - yawSpeed 140 - walkSpeed 55 - runSpeed 200 -// race human - snd luke - sndcombat luke - sndjedi luke - health 200 - dismemberProbHead 0 - dismemberProbArms 0 - dismemberProbLegs 0 - dismemberProbHands 0 - dismemberProbWaist 0 -} - -MonMothma -{ - fullName "Mon Mothma" - playerModel monmothma - snd monmothma - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam player - enemyTeam enemy -// race human - class monmotha - walkSpeed 55 - runSpeed 200 - yawspeed 90 - dismemberProbHead 0 - dismemberProbArms 0 - dismemberProbLegs 0 - dismemberProbHands 0 - dismemberProbWaist 0 -} - -Bartender -{ - fullName "Bartender" - playerModel chiss - snd bartender - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam neutral - enemyTeam neutral -// race human - class bartender - walkSpeed 55 - runSpeed 200 - yawspeed 90 - dismemberProbHead 0 - dismemberProbArms 0 - dismemberProbLegs 0 - dismemberProbHands 0 - dismemberProbWaist 0 -} - -MorganKatarn -{ - fullName "MorganKatarn" - playerModel morgan - snd morgan - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam neutral - enemyTeam neutral -// race human - class morgan - walkSpeed 55 - runSpeed 200 - yawspeed 90 - dismemberProbHead 0 - dismemberProbArms 0 - dismemberProbLegs 0 - dismemberProbHands 0 - dismemberProbWaist 0 -} - -Prisoner -{ - playerModel prisoner - snd prisoner - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam player - enemyTeam enemy - class prisoner - snd prisoner1 - sndcombat prisoner1 - sndextra prisoner1 - walkSpeed 55 - runSpeed 200 - yawspeed 110 - dismemberProbHead 0 - dismemberProbArms 5 - dismemberProbLegs 0 - dismemberProbHands 10 - dismemberProbWaist 0 -} - -Prisoner2 -{ - playerModel prisoner - snd prisoner - surfOff "head head_face" - surfOn "head_off head_face_off" - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam player - enemyTeam enemy - class prisoner - snd prisoner2 - sndcombat prisoner2 - sndextra prisoner2 - walkSpeed 55 - runSpeed 200 - yawspeed 110 - dismemberProbHead 0 - dismemberProbArms 5 - dismemberProbLegs 0 - dismemberProbHands 10 - dismemberProbWaist 0 -} - -//NPC Humanoids -Jedi -{ - playerModel jedi - saberColor yellow - rank lt - reactions 3 - aim 3 - move 3 - aggression 3 - evasion 2 - intelligence 3 - playerTeam player - enemyTeam enemy - class jedi - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - snd jedi1 - sndcombat jedi1 - sndjedi jedi1 - health 200 - dismemberProbHead 0 - dismemberProbArms 5 - dismemberProbLegs 0 - dismemberProbHands 10 - dismemberProbWaist 0 -} - -Jedi2 -{ - playerModel jedi - saberColor orange - rank lt - customSkin j2 - surfOff "head head_face" - surfOn "head_off head_face_off" - reactions 3 - aim 3 - move 3 - aggression 3 - evasion 2 - intelligence 3 - playerTeam player - enemyTeam enemy - class jedi - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - snd jedi2 - sndcombat jedi2 - sndjedi jedi2 - health 200 - dismemberProbHead 0 - dismemberProbArms 5 - dismemberProbLegs 0 - dismemberProbHands 10 - dismemberProbWaist 0 -} - -JediF -{ - playerModel jan - surfOff "torso_vest hips_chaps torso_computer head_goggles torso_comp hips_belt" - surfOn "torso_augment_off hips_augment_off hips_torso_off" - saberColor random - rank lt - reactions 3 - aim 3 - move 3 - aggression 3 - evasion 2 - intelligence 3 - playerTeam player - enemyTeam enemy - class jedi - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - snd jan - sndcombat jan - sndjedi jan - health 200 - dismemberProbHead 0 - dismemberProbArms 5 - dismemberProbLegs 0 - dismemberProbHands 10 - dismemberProbWaist 0 -} - -JediTrainer -{ - playerModel jeditrainer - saberColor purple - rank commander - reactions 5 - aim 5 - move 5 - aggression 5 - evasion 5 - intelligence 5 - playerTeam player - enemyTeam enemy - class jedi - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - snd jedi1 - sndcombat jedi1 - sndjedi jedi1 - health 400 - dismemberProbHead 0 - dismemberProbArms 5 - dismemberProbLegs 0 - dismemberProbHands 10 - dismemberProbWaist 0 -} - -Rebel -{ - playerModel rebel - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam player - enemyTeam enemy -// race human - class rebel - snd rebel1 - sndcombat rebel1 - sndextra rebel1 - yawspeed 120 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Rebel2 -{ - playerModel rebel - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam player - enemyTeam enemy -// race human - class rebel - snd rebel2 - sndcombat rebel2 - sndextra rebel2 - yawspeed 120 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -BespinCop -{ - playerModel bespin_cop - health 40 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam player - enemyTeam enemy - walkSpeed 55 - runSpeed 200 - yawspeed 120 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -// race bespincop - class bespin_cop - snd bespincop1 - sndcombat bespincop1 - sndextra bespincop1 -} - -BespinCop2 -{ - playerModel bespin_cop - health 40 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam player - enemyTeam enemy - walkSpeed 55 - runSpeed 200 - yawspeed 120 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -// race bespincop - class bespin_cop - snd bespincop2 - sndcombat bespincop2 - sndextra bespincop2 -} - -Ugnaught -{ - playerModel ugnaught - scale 75 - health 10 - snd ugnaught - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam neutral - enemyTeam player -// race klingon - class ugnaught - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Ugnaught2 -{ - playerModel ugnaught - surfOff "l_hand_purse" - surfOn "r_hand_tool_off" - scale 75 - health 10 - snd ugnaught - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam neutral - enemyTeam player -// race klingon - class ugnaught - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Gran -{ - playerModel gran - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - health 30 - playerTeam enemy - enemyTeam player -// race klingon - class gran - snd gran1 - sndcombat gran1 - sndextra gran1 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Gran2 -{ - playerModel gran - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - health 30 - playerTeam enemy - enemyTeam player -// race klingon - class gran - snd gran2 - sndcombat gran2 - sndextra gran2 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -GranShooter -{ - playerModel gran - surfOff "l_leg_kneeguard" - reactions 3 - aim 5 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 40 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class gran - snd gran1 - sndcombat gran1 - sndextra gran1 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -GranBoxer -{ - playerModel gran - surfOff "l_leg_kneeguard r_leg_kneeguard" - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 50 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class gran - snd gran2 - sndcombat gran2 - sndextra gran2 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Rodian -{ - playerModel rodian - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 25 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class rodian - snd rodian1 - sndcombat rodian1 - sndextra rodian1 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - visrange 8192 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Rodian2 -{ - playerModel rodian - surfOff "hips_belt torso_vest" - surfOn "torso_augment_off" - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 20 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class rodian - snd rodian2 - sndcombat rodian2 - sndextra rodian2 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Weequay -{ - playerModel weequay -//FIXME: randomize these somehow, also belt... - surfOff "hips_lowerarmor" - surfOn "hips_torso_augment_off" - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 30 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class weequay - snd weequay - sndcombat weequay - sndextra weequay - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Weequay2 -{ - playerModel weequay - surfOff "head_l_hairback hips_r_strap hips_r_packsmall" - surfOn "head_r_hairshoulder_off hips_l_packsmall_off hips_l_strap_off" - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 30 - rank crewman - playerTeam enemy - enemyTeam player - class weequay - snd weequay - sndcombat weequay - sndextra weequay - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Weequay3 -{ - playerModel weequay - surfOff "head_l_hairback hips_l_packlarge hips_l_packwide hips_r_strap hips_r_packsmall" - surfOn "head_r_hairback_off hips_l_packsmall_off hips_l_strap_off hips_r_packlarge_off hips_r_packwide_off" - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 30 - rank crewman - playerTeam enemy - enemyTeam player - class weequay - snd weequay - sndcombat weequay - sndextra weequay - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Weequay4 -{ - playerModel weequay - surfOff "head_l_hairback hips_l_packlarge hips_l_packwide" - surfOn "head_l_hairshoulder_off hips_r_packlarge_off hips_r_packwide_off" - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 30 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class weequay - snd weequay - sndcombat weequay - sndextra weequay - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Trandoshan -{ - playerModel trandoshan - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - health 40 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class trandoshan - snd trandoshan1 - sndcombat trandoshan1 - sndextra trandoshan1 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 1 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -StormTrooper -{ - playerModel stormtrooper - surfOff torso_pauldron_off - surfOn "torso_armor_neck_augment torso_body_neck_augment" - health 30 - headPitchRangeDown 30 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class stormtrooper - height 64 - crouchheight 48 - walkSpeed 51 - runSpeed 200 - snd st1 - sndcombat st1 - sndextra st1 - yawspeed 70 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -StormTrooper2 -{ - playerModel stormtrooper - surfOff torso_pauldron_off - surfOn "torso_armor_neck_augment torso_body_neck_augment" - health 30 - headPitchRangeDown 30 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam enemy - enemyTeam player -// race klingon - class stormtrooper - height 64 - crouchheight 48 - walkSpeed 51 - runSpeed 200 - snd st2 - sndcombat st2 - sndextra st2 - yawspeed 70 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -STOfficer -{ - playerModel stormtrooper - surfOn torso_pauldron_off - surfOff "torso_armor_neck_augment torso_body_neck_augment" - health 60 - headPitchRangeDown 30 - reactions 5 - aim 5 - move 5 - aggression 5 - evasion 5 - intelligence 5 - rank ensign - scale 105 - playerTeam enemy - enemyTeam player -// race klingon - class stormtrooper - height 68 - crouchheight 52 - walkSpeed 51 - runSpeed 200 - snd stofficer1 - sndcombat stofficer1 - sndextra stofficer1 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -StormPilot -{ - playerModel stormpilot - health 30 - headPitchRangeDown 30 - reactions 3 - aim 5 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam enemy - enemyTeam player - class stormtrooper - height 64 - crouchheight 48 - walkSpeed 51 - runSpeed 200 - snd st3 - sndcombat st3 - sndextra st3 - yawspeed 80 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -STOfficerAlt -{ - playerModel stormtrooper - surfOn torso_pauldron_off - surfOff "torso_armor_neck_augment torso_body_neck_augment" - health 60 - headPitchRangeDown 30 - reactions 5 - aim 5 - move 5 - aggression 5 - evasion 5 - intelligence 5 - rank ensign - scale 105 - playerTeam enemy - enemyTeam player -// race klingon - class stormtrooper - height 68 - crouchheight 52 - walkSpeed 51 - runSpeed 200 - snd stofficer2 - sndcombat stofficer2 - sndextra stofficer2 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -STCommander -{ - playerModel stormtrooper - surfOn torso_pauldron_off - surfOff "torso_armor_neck_augment torso_body_neck_augment" - health 60 - headPitchRangeDown 30 - reactions 5 - aim 5 - move 5 - aggression 5 - evasion 5 - intelligence 5 - rank ensign - scale 105 - playerTeam enemy - enemyTeam player -// race klingon - class stormtrooper - height 68 - crouchheight 52 - walkSpeed 51 - runSpeed 200 - snd stofficer2 - sndcombat stofficer2 - sndextra stofficer2 - yawspeed 110 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -SwampTrooper -{ - playerModel swamptrooper - headPitchRangeDown 30 - health 70 - reactions 3 - aim 3 - move 3 - aggression 3 - evasion 3 - intelligence 3 - scale 110 - playerTeam enemy - enemyTeam player -// race klingon - class swamptrooper - height 68 - crouchheight 52 - snd swamp1 - sndcombat swamp1 - sndextra swamp1 - yawspeed 100 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -SwampTrooper2 -{ - playerModel swamptrooper - headPitchRangeDown 30 - health 70 - reactions 3 - aim 3 - move 3 - aggression 3 - evasion 3 - intelligence 3 - scale 110 - playerTeam enemy - enemyTeam player -// race klingon - class swamptrooper - height 68 - crouchheight 52 - snd swamp2 - sndcombat swamp2 - sndextra swamp2 - yawspeed 100 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -RocketTrooper -{ - playerModel stormtrooper - surfOn torso_pauldron_off - surfOff "torso_armor_neck_augment torso_body_neck_augment" - health 60 - headPitchRangeDown 30 - reactions 5 - aim 5 - move 5 - aggression 5 - evasion 5 - intelligence 5 - rank ensign - scale 110 - playerTeam enemy - enemyTeam player -// race klingon - class stormtrooper - height 68 - crouchheight 52 - walkSpeed 51 - runSpeed 200 - snd st3 - sndcombat st3 - sndextra st3 - yawspeed 100 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -Imperial -{ - playerModel imperial - surfOff l_arm_key - health 20 - reactions 2 - aim 2 - move 2 - aggression 2 - evasion 2 - intelligence 2 - rank lt - playerTeam enemy - enemyTeam player -// race klingon - class imperial - snd io2 - sndcombat io2 - sndextra io2 - yawspeed 110 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -ImpOfficer -{ - playerModel imperial - surfOff l_arm_key - customSkin officer - health 40 - reactions 3 - aim 3 - move 3 - aggression 3 - evasion 3 - intelligence 3 - rank ltcomm - playerTeam enemy - enemyTeam player -// race klingon - class imperial - snd io1 - sndcombat io1 - sndextra io1 - yawspeed 110 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -ImpCommander -{ - playerModel imperial - surfOff l_arm_key - customSkin commander - health 80 - reactions 4 - aim 4 - move 4 - aggression 4 - evasion 4 - intelligence 4 - rank commander - playerTeam enemy - enemyTeam player -// race klingon - class imperial -// snd io3 -// sndcombat io3 -// sndextra io3 - snd io1 - sndcombat io1 - sndextra io1 - yawspeed 110 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -ImpWorker -{ - playerModel imperial_worker - headPitchRangeDown 30 - health 30 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam enemy - enemyTeam player -// race imperial - class impworker - height 64 - crouchheight 48 - walkSpeed 51 - runSpeed 200 - snd worker1 - sndcombat worker1 - sndextra worker1 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -ImpWorker2 -{ - playerModel imperial_worker - headPitchRangeDown 30 - health 30 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam enemy - enemyTeam player -// race imperial - class impworker - height 64 - crouchheight 48 - walkSpeed 51 - runSpeed 200 - snd worker2 - sndcombat worker2 - sndextra worker2 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -ImpWorker3 -{ - playerModel imperial_worker - headPitchRangeDown 30 - health 30 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - rank crewman - playerTeam enemy - enemyTeam player -// race imperial - class impworker - height 64 - crouchheight 48 - walkSpeed 51 - runSpeed 200 - snd worker3 - sndcombat worker3 - sndextra worker3 - yawspeed 90 - walkSpeed 55 - runSpeed 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 0 -} - -RebornAcrobat -{ - playerModel reborn - customSkin acrobat - saberColor red - rank crewman - reactions 3 - aim 3 - move 5 - aggression 3 - evasion 3 - intelligence 5 - hfov 160 - vfov 160 - scale 96 - playerTeam enemy - enemyTeam player -// race human - class reborn - snd reborn1 - sndcombat reborn1 - sndjedi reborn1 - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - health 100 - dismemberProbHead 0 - dismemberProbArms 20 - dismemberProbLegs 0 - dismemberProbHands 30 - dismemberProbWaist 0 -} - -Reborn -{ - playerModel reborn - saberColor red - reactions 1 - aim 1 - move 1 - aggression 1 - evasion 1 - intelligence 1 - hfov 120 - vfov 120 - scale 94 - playerTeam enemy - enemyTeam player -// race human - class reborn - snd reborn1 - sndcombat reborn1 - sndjedi reborn1 - yawSpeed 60 - walkSpeed 45 - runSpeed 180 - health 40 - dismemberProbHead 0 - dismemberProbArms 20 - dismemberProbLegs 0 - dismemberProbHands 30 - dismemberProbWaist 0 -} - -RebornForceUser -{ - playerModel reborn - customSkin forceuser - saberColor red - rank ensign - reactions 3 - aim 3 - move 5 - aggression 2 - evasion 2 - intelligence 5 - hfov 160 - vfov 160 - scale 96 - playerTeam enemy - enemyTeam player -// race human - class reborn - snd reborn2 - sndcombat reborn2 - sndjedi reborn2 - yawSpeed 80 - walkSpeed 55 - runSpeed 200 - health 100 - dismemberProbHead 0 - dismemberProbArms 20 - dismemberProbLegs 0 - dismemberProbHands 30 - dismemberProbWaist 0 -} - -RebornFencer -{ - playerModel reborn - customSkin fencer - saberColor red - rank ltjg - reactions 3 - aim 3 - move 5 - aggression 4 - evasion 2 - intelligence 5 - hfov 160 - vfov 160 - scale 96 - playerTeam enemy - enemyTeam player -// race human - class reborn - snd reborn2 - sndcombat reborn2 - sndjedi reborn2 - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - health 100 - dismemberProbHead 0 - dismemberProbArms 20 - dismemberProbLegs 0 - dismemberProbHands 30 - dismemberProbWaist 0 -} - -RebornBoss -{ - playerModel reborn - customSkin boss - saberColor red - rank lt - reactions 3 - aim 3 - move 5 - aggression 4 - evasion 3 - intelligence 5 - hfov 160 - vfov 160 - playerTeam enemy - enemyTeam player -// race human - class reborn - snd reborn3 - sndcombat reborn3 - sndjedi reborn3 - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - health 150 - dismemberProbHead 0 - dismemberProbArms 20 - dismemberProbLegs 0 - dismemberProbHands 30 - dismemberProbWaist 0 -} - -ShadowTrooper -{ - playerModel shadowtrooper - saberColor red - rank ltcomm - reactions 5 - aim 5 - move 5 - aggression 5 - evasion 4 - intelligence 5 - hfov 160 - vfov 160 - playerTeam enemy - enemyTeam player -// race human - class shadowtrooper - snd shadow1 - sndcombat shadow1 - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - health 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 1 -} - -ShadowTrooper2 -{ - playerModel shadowtrooper - saberColor red - rank lt - reactions 5 - aim 5 - move 5 - aggression 5 - evasion 4 - intelligence 5 - hfov 160 - vfov 160 - playerTeam enemy - enemyTeam player -// race human - class shadowtrooper - snd shadow2 - sndcombat shadow2 - yawSpeed 140 - walkSpeed 55 - runSpeed 200 - health 200 - dismemberProbHead 0 - dismemberProbArms 10 - dismemberProbLegs 0 - dismemberProbHands 20 - dismemberProbWaist 1 -} -//NPC Monsters -Howler -{ - playerModel howler - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam enemy - enemyTeam player - class howler - yawSpeed 60 - runSpeed 150 - walkSpeed 50 - hFOV 120 - vfov 45 - snd howler - health 60 -} - -Minemonster -{ - playerModel minemonster - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam enemy - enemyTeam player - class minemonster - snd mine - yawSpeed 160 - runSpeed 210 - walkSpeed 50 - hFOV 120 - vfov 45 - height 30 - width 9 - snd mine - health 40 -} - - -Glider -{ - playerModel glider - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race harvester - class glider - yawSpeed 60 - runSpeed 150 - walkSpeed 50 - hFOV 120 - vfov 45 - snd glider -} - - -//NPC Droids -protocol -{ - playerModel protocol - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race bot - class protocol - snd protocol - yawSpeed 60 - runSpeed 150 - walkSpeed 50 - height 48 - width 12 - hFOV 120 - vfov 45 - snd protocol -} - -protocol_imp -{ - playerModel protocol - surfOn head_off - surfOff head - customSkin imp - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race bot - class protocol - snd protocol - yawSpeed 60 - runSpeed 150 - walkSpeed 50 - height 48 - width 12 - hFOV 120 - vfov 45 - snd protocol -} - -r2d2 -{ - playermodel r2d2 - headYawRangeLeft 180 - headYawRangeRight 180 - headPitchRangeUp 0 - headPitchRangeDown 0 - torsoYawRangeLeft 0 - torsoYawRangeRight 0 - torsoPitchRangeUp 10 - torsoPitchRangeDown 10 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race bot - class r2d2 - yawSpeed 120 - runSpeed 150 - walkSpeed 50 - height 40 - width 12 - hFOV 120 - vfov 45 - snd r2d2 -} - -r2d2_imp -{ - playermodel r2d2 - customSkin imp - headYawRangeLeft 180 - headYawRangeRight 180 - headPitchRangeUp 0 - headPitchRangeDown 0 - torsoYawRangeLeft 0 - torsoYawRangeRight 0 - torsoPitchRangeUp 10 - torsoPitchRangeDown 10 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race bot - class r2d2 - yawSpeed 120 - runSpeed 150 - walkSpeed 50 - height 40 - width 12 - hFOV 120 - vfov 45 - snd r2d2 -} - -r5d2 -{ - playerModel r5d2 - headYawRangeLeft 180 - headYawRangeRight 180 - headPitchRangeUp 0 - headPitchRangeDown 0 - torsoYawRangeLeft 0 - torsoYawRangeRight 0 - torsoPitchRangeUp 10 - torsoPitchRangeDown 10 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race bot - class r5d2 - yawSpeed 60 - runSpeed 150 - walkSpeed 50 - height 40 - width 12 - hFOV 120 - vfov 45 - snd r5d2 -} - -r5d2_imp -{ - playerModel r5d2 - customSkin imp - headYawRangeLeft 180 - headYawRangeRight 180 - headPitchRangeUp 0 - headPitchRangeDown 0 - torsoYawRangeLeft 0 - torsoYawRangeRight 0 - torsoPitchRangeUp 10 - torsoPitchRangeDown 10 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race bot - class r5d2 - yawSpeed 60 - runSpeed 150 - walkSpeed 50 - height 40 - width 12 - hFOV 120 - vfov 45 - snd r5d2 -} - -gonk -{ - playerModel gonk - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race bot - class gonk - yawSpeed 60 - runSpeed 40 - walkSpeed 30 - height 32 - width 12 - hFOV 120 - vfov 45 - snd gonk -} - - -mouse -{ - headmodel none - torsomodel none - legsmodel mouse - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam neutral - enemyTeam neutral -// race bot - class mouse - yawSpeed 120 - runSpeed 500 - walkSpeed 150 - height 16 - width 8 - hFOV 120 - vfov 45 - snd mouse -} - - -seeker -{ - headmodel none - torsomodel none - legsmodel remote - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 3 - intelligence 5 - playerTeam player - enemyTeam enemy -// race bot - class seeker - yawSpeed 120 - runSpeed 500 - walkSpeed 150 - height 32 - width 8 - hFOV 160 - vfov 45 - snd remote - moveType "flyswim" -} - -remote -{ - headmodel none - torsomodel none - legsmodel remote - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 3 - intelligence 5 - playerTeam enemy - enemyTeam player -// race bot - class remote - yawSpeed 120 - runSpeed 500 - walkSpeed 150 - height 32 - width 8 - hFOV 160 - vfov 45 - snd remote - moveType "flyswim" -} - -sentry -{ - playermodel sentry - health 100 - reactions 3 - aim 3 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam enemy - enemyTeam player -// race bot - class sentry - health 150 - yawSpeed 120 - runSpeed 400 - walkSpeed 250 - height 48 - width 24 - hFOV 120 - vfov 160 - snd sentry -} - -interrogator -{ - playermodel interrogator - health 100 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam enemy - enemyTeam player -// race bot - class interrogator - yawSpeed 120 - runSpeed 150 - walkSpeed 50 - height 24 - width 12 - hFOV 120 - vfov 45 - snd interrogator -} - - -probe -{ - playerModel probe - health 200 - headYawRangeLeft 180 - headYawRangeRight 180 - headPitchRangeUp 0 - headPitchRangeDown 0 - torsoYawRangeLeft 0 - torsoYawRangeRight 0 - torsoPitchRangeUp 10 - torsoPitchRangeDown 10 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam enemy - enemyTeam player -// race bot - class probe - yawSpeed 60 - runSpeed 150 - walkSpeed 50 - height 110 - width 24 - hFOV 120 - vfov 45 - snd probe - moveType "flyswim" -} - -mark1 -{ - playerModel mark1 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - height 120 - width 36 - playerTeam enemy - enemyTeam player - health 300 -// race bot - class mark1 - yawSpeed 60 - runSpeed 150 - walkSpeed 70 - hFOV 120 - vfov 45 - snd mark1 -} - -mark2 -{ - playerModel mark2 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam enemy - enemyTeam player -// race bot - class mark2 - yawSpeed 60 - runSpeed 150 - walkSpeed 75 - hFOV 120 - vfov 45 - snd mark2 -} - -atst -{ - playerModel atst -// headModel atst - //torsoModel atst - //legsModel atst - headYawRangeLeft 80 - headYawRangeRight 80 - headPitchRangeUp 30 - headPitchRangeDown 30 - torsoYawRangeLeft 0 - torsoYawRangeRight 0 - torsoPitchRangeUp 0 - torsoPitchRangeDown 0 - health 200 - reactions 3 - aim 1 - move 3 - aggression 3 - evasion 1 - intelligence 5 - playerTeam enemy - enemyTeam player - height 272 - width 80 -// race bot - class atst - yawSpeed 60 - runSpeed 150 - walkSpeed 150 - hFOV 120 - vfov 45 - snd atst -} - -test -{ - playerModel test - playerTeam player - enemyTeam neutral - class kyle -} diff --git a/code/base/ext_data/dms.dat b/code/base/ext_data/dms.dat deleted file mode 100644 index 2aeb1797..00000000 --- a/code/base/ext_data/dms.dat +++ /dev/null @@ -1,1238 +0,0 @@ -musicfiles -{ - kejimbase_explore - { - entry - { - marker0 0.000 - marker1 22.070 - marker2 53.723 - marker3 90.926 - } - exit - { - nextfile kejimbase_etr00 - time00 3.337 - time01 5.668 - time02 22.040 - time03 29.889 - time04 50.124 - time05 37.168 - time06 53.473 - time07 65.923 - time08 90.478 - time09 143.233 - time10 156.166 - time11 176.608 - time12 193.505 - } - exit - { - nextfile kejimbase_etr01 - time00 45.555 - time01 81.525 - time02 106.406 - time03 128.648 - time04 185.168 - time05 209.309 - } - } - kejimbase_action - { - entry - { - marker0 0.00 - marker1 42.585 - marker2 87.664 - } - exit - { - nextfile kejimbase_atr00 - nextmark marker0 - time00 69.347 - time01 72.142 - time02 80.444 - time03 87.608 - time04 90.185 - } - exit - { - nextfile kejimbase_atr01 - nextmark marker1 - time00 2.434 - time01 5.667 - time02 20.281 - } - exit - { - nextfile kejimbase_atr02 - nextmark marker2 - time00 62.894 - } - exit - { - nextfile kejimbase_atr03 - nextmark marker3 - time00 12.397 - time01 28.679 - time02 35.492 - time03 45.328 - } - } - ImpBaseB_Explore - { - entry - { - marker0 0 - marker1 37 - marker2 69.81 - marker3 119.97 - } - exit - { - nextfile ImpBaseB_Etr00 - time0 37 - time1 54.0 - time2 62.35 - time3 69.81 - time4 79.85 - time5 119.97 - time6 132.75 - time7 146.88 - } - exit - { - nextfile ImpBaseB_Etr01 - time0 13.67 - time1 26.96 - time2 89.42 - time3 96.92 - time4 107.77 - } - - } - ImpBaseB_Action - { - entry - { - marker0 0 - marker1 30.23 - marker2 45.45 - marker3 104.48 - } - exit - { - nextfile ImpBaseB_Atr00 - nextmark marker3 - time0 38.22 - time1 50.31 - time2 59.23 - time3 64.47 - time4 80.41 - time5 87.69 - time6 92.01 - time7 98.07 - time8 104.48 - } - exit - { - nextfile ImpBaseB_Atr01 - nextmark marker2 - time0 8.91 - time1 20.89 - } - exit - { - nextfile ImpBaseB_Atr02 - nextmark marker1 - time0 25.45 - time1 30.23 - } - exit - { - nextfile ImpBaseB_Atr03 - nextmark marker0 - time0 4.97 - time1 11.33 - time2 16.11 - time3 45.45 - time4 70.61 - time5 74.66 - } - } - ImpBaseC_explore - { - entry - { - marker0 0.000 - marker1 55.831 - marker2 11.160 - marker3 11.160 - - } - exit - { - nextfile ImpBaseC_etr00 - time00 42.904 - time01 71.172 - time02 127.721 - time03 150.290 - time04 171.618 - - } - exit - { - nextfile ImpBaseC_etr01 - time00 19.096 - time01 26.412 - time02 88.211 - time03 101.169 - - } - } - ImpBaseC_action - { - entry - { - marker0 0.00 - marker1 19.468 - marker2 33.480 - } - exit - { - nextfile ImpBaseC_atr00 - nextmark marker0 - time00 2.542 - time01 5.440 - time02 9.470 - time03 19.366 - } - exit - { - nextfile ImpBaseC_atr01 - nextmark marker1 - time00 25.544 - time01 29.140 - } - exit - { - nextfile ImpBaseC_atr02 - nextmark marker2 - time00 44.888 - } - exit - { - nextfile ImpBaseC_atr03 - nextmark marker3 - time00 34.272 - time01 65.224 - } - } - BespinA_Explore - { - entry - { - marker0 6.74 - marker1 17.51 - marker2 95.95 - marker3 149.87 - } - exit - { - nextfile BespinA_Etr00 - time00 42.01 - } - exit - { - nextfile BespinA_Etr01 - time00 165.65 - } - exit - { - nextfile BespinA_Etr02 - time00 17.51 - time01 29.50 - time02 54.80 - time03 70.21 - time04 90.25 - time05 106.40 - time06 120.53 - time07 149.87 - time08 178.36 - } - } - BespinA_Action - { - entry - { - marker0 0.00 - marker1 42.585 - marker2 87.664 - } - exit - { - nextfile BespinA_Atr00 - nextmark marker0 - time00 3.08 - time01 6.19 - time02 35.26 - } - exit - { - nextfile BespinA_Atr01 - nextmark marker1 - time00 8.98 - time01 14.76 - time02 20.65 - time03 44.34 - time04 47.28 - } - exit - { - nextfile BespinA_Atr02 - nextmark marker2 - time00 51.82 - time01 58.00 - } - exit - { - nextfile BespinA_Atr03 - nextmark marker3 - time00 28.90 - time01 64.78 - } - } - - besplat_explore - { - entry - { - marker0 46.78 - marker1 69.05 - marker2 85.85 - } - exit - { - nextfile besplat_etr00 - time0 6.89 - time1 21.26 - time3 55.52 - time4 69.75 - time5 85.87 - time6 98.12 - time7 119.44 - time8 131.95 - time9 157.58 - } - exit - { - nextfile besplat_etr01 - time0 34.15 - time1 141.84 - time2 174.72 - time3 183.05 - } - } - - besplat_action - { - entry - { - marker0 0 - marker1 16.56 - marker2 24.86 - marker3 62.37 - } - exit - { - nextfile besplat_atr00 - nextmark marker1 - time0 2.82 - time1 68.46 - } - exit - { - nextfile besplat_atr01 - nextmark marker2 - time0 41.23 - time1 54.20 - time2 59.31 - time3 76.51 - } - exit - { - nextfile besplat_atr02 - nextmark marker0 - time0 13.47 - time1 21.19 - time2 24.65 - time3 28.82 - time4 83.53 - } - } - - besplat_boss - { - } - - yavtrial_explore - { - entry - { - marker0 124.126 - marker1 102.326 - marker2 24.853 - marker3 0.00 - } - exit - { - nextfile yavtrial_etr00 - time00 3.095 - time01 23.931 - time02 24.937 - time03 46.905 - time04 61.268 - time05 79.042 - time06 101.750 - time07 118.136 - time08 147.951 - } - exit - { - nextfile yavtrial_etr01 - time00 161.783 - } - } - yavtrial_action - { - entry - { - marker0 0.00 - marker1 60.145 - marker2 85.922 - } - exit - { - nextfile yavtrial_atr00 - nextmark marker0 - time00 3.553 - time01 6.118 - time02 8.718 - time03 41.152 - time04 103.559 - } - exit - { - nextfile yavtrial_atr01 - nextmark marker1 - time00 9.307 - time01 12.310 - time02 16.719 - time03 20.045 - time04 26.229 - time05 35.160 - } - exit - { - nextfile yavtrial_atr02 - nextmark marker2 - time00 59.302 - time01 65.837 - time02 74.429 - } - exit - { - nextfile yavtrial_atr03 - nextmark marker3 - time00 38.325 - time01 49.857 - } - } - alienha_explore - { - entry - { - marker0 0 - marker1 65.84 - marker2 93.63 - } - exit - { - nextfile alienha_etr00 - time0 5.80 - time1 33.04 - time3 67.61 - } - exit - { - nextfile alienha_etr01 - time0 94.47 - time1 103.06 - time2 115.75 - time3 127.32 - time4 138.36 - time5 152.10 - time6 166.11 - time7 180.29 - } - } - alienha_action - { - entry - { - marker0 0 - marker1 40.96 - marker2 63.33 - } - exit - { - nextfile alienha_atr00 - nextmark marker2 - time0 3.35 - time1 6.85 - time3 15.70 - time4 22.61 - } - exit - { - nextfile alienha_atr01 - nextmark marker0 - time0 31.85 - time1 41.42 - time2 47.06 - } - exit - { - nextfile alienha_atr03 - nextmark marker1 - time0 53.01 - time1 58.57 - time2 62.87 - time3 72.03 - time4 89.64 - time5 96.94 - } - } - tunnels_explore - { - entry - { - marker0 0 - marker1 64.20 - marker2 96.47 - } - exit - { - nextfile tunnels_etr00 - time0 6.06 - time1 18.26 - time3 35.01 - time4 42.98 - time5 69.73 - time6 84.16 - } - exit - { - nextfile tunnels_etr01 - time0 94.81 - time1 111.25 - time2 121.77 - time3 134.68 - } - } - tunnels_action - { - entry - { - marker0 0 - marker1 22.39 - } - exit - { - nextfile tunnels_atr00 - nextmark marker0 - time0 0.29 - } - exit - { - nextfile tunnels_atr01 - nextmark marker2 - time0 15.62 - time1 22.94 - } - exit - { - nextfile tunnels_atr02 - nextmark marker2 - time0 29.14 - time1 35.63 - time2 45.33 - time3 51.78 - time4 58.67 - } - exit - { - nextfile tunnels_atr03 - nextmark marker1 - time0 64.81 - time1 68.53 - time2 72.28 - time3 75.89 - } - } - IMPBaseD_explore - { - entry - { - marker0 0.000 - marker1 66.790 - marker2 102.874 - marker3 150.554 - } - exit - { - nextfile IMPBaseD_etr00 - time00 7.997 - time01 16.678 - time02 44.664 - time03 70.836 - - } - exit - { - nextfile IMPBaseD_etr01 - time00 89.986 - time01 111.971 - time02 130.629 - time03 166.389 - time04 172.530 - } - } - IMPBaseD_action - { - entry - { - marker0 6.607 - marker1 60.118 - marker2 140.053 - } - exit - { - nextfile IMPBaseD_atr00 - nextmark marker0 - time00 6.457 - time01 13.265 - time02 18.757 - time03 25.194 - time04 152.772 - } - exit - { - nextfile IMPBaseD_atr01 - nextmark marker1 - time00 30.336 - time01 37.883 - time02 46.802 - time03 61.122 - } - exit - { - nextfile IMPBaseD_atr02 - nextmark marker2 - time00 78.257 - time01 85.312 - time02 92.170 - time03 140.866 - time04 149.597 - } - exit - { - nextfile IMPBaseD_atr03 - nextmark marker3 - time00 105.982 - time01 115.569 - time02 128.476 - } - } - swamp_explore - { - entry - { - marker0 0.000 - marker1 16.916 - marker2 80.714 - marker3 31.761 - - } - exit - { - nextfile swamp_etr00 - time00 11.185 - time01 20.989 - time02 51.408 - time03 63.196 - time04 71.293 - - } - exit - { - nextfile swamp_etr01 - time00 42.044 - time01 78.362 - time02 95.485 - time03 113.023 - - } - } - swamp_action - { - entry - { - marker0 0.00 - marker1 36.318 - marker2 45.982 - } - exit - { - nextfile swamp_atr00 - nextmark marker0 - time00 1.035 - } - exit - { - nextfile swamp_atr01 - nextmark marker1 - time00 6.835 - time01 11.323 - time02 18.592 - time03 36.230 - time04 59.793 - } - exit - { - nextfile swamp_atr02 - nextmark marker2 - time00 34.108 - time01 79.955 - time02 89.847 - time03 126.994 - - } - exit - { - nextfile swamp_atr03 - nextmark marker3 - time00 102.414 - time01 115.382 - time02 120.039 - } - } - yavtemp2_explore - { - entry - { - marker0 88.28 - marker1 48.10 - marker2 117.47 - marker3 0 - } - exit - { - nextfile yavtemp2_etr00 - time0 46.23 - time1 53.44 - time2 62.08 - time3 69.09 - time4 77.08 - time5 87.03 - time6 96.49 - } - exit - { - nextfile yavtemp2_etr01 - time0 15.24 - time1 31.79 - time2 42.78 - time3 114.18 - time4 134.25 - time5 144.89 - time6 160.03 - time7 168.03 - } - } - yavtemp2_action - { - entry - { - marker0 0 - marker1 17.35 - marker2 43.31 - marker3 60.39 - } - exit - { - nextfile yavtemp2_atr00 - nextmark marker0 - time0 0 - time1 8.78 - time2 13.47 - } - exit - { - nextfile yavtemp2_atr01 - nextmark marker1 - time0 23.89 - time1 28.62 - time2 41.11 - time3 46.73 - } - exit - { - nextfile yavtemp2_atr02 - nextmark marker2 - time0 48.95 - time1 60.59 - time2 69.13 - time3 97.63 - } - exit - { - nextfile yavtemp2_atr03 - nextmark marker3 - time0 91.11 - } - } - ImpBaseE_explore - { - entry - { - marker0 0.000 - marker1 13.805 - marker2 29.265 - marker3 137.915 - - } - exit - { - nextfile ImpBaseE_etr00 - time00 13.712 - time01 37.872 - time02 52.541 - time03 131.875 - time04 232.256 - - } - exit - { - nextfile ImpBaseE_etr01 - time00 120.057 - time01 157.080 - time02 176.388 - - } - } - ImpBaseE_action - { - entry - { - marker0 0.00 - marker1 18.336 - marker2 52.491 - } - exit - { - nextfile ImpBaseE_atr00 - nextmark marker0 - time00 22.012 - time01 32.861 - time02 73.853 - time03 77.808 - } - exit - { - nextfile ImpBaseE_atr01 - nextmark marker1 - time00 5.824 - time01 18.457 - time02 81.088 - time03 114.805 - } - exit - { - nextfile ImpBaseE_atr02 - nextmark marker2 - time00 1.923 - time01 26.892 - time02 30.703 - time03 59.294 - time04 65.331 - time05 88.803 - time06 91.876 - - } - exit - { - nextfile ImpBaseE_atr03 - nextmark marker3 - time00 11.958 - time01 43.027 - time02 48.014 - time04 96.757 - time05 107.858 - time06 130.437 - } - } - alienhb_explore - { - entry - { - marker0 127.71 - marker1 36.56 - marker2 89.94 - } - exit - { - nextfile alienhb_etr00 - time0 13.60 - time1 22.58 - time3 31.69 - time4 41.08 - time5 53.08 - time6 67.91 - time7 89.29 - time8 181.41 - } - exit - { - nextfile alienhb_etr01 - time0 109.08 - time1 123.18 - time2 134.76 - time3 149.54 - time4 160.53 - time5 174.10 - } - } - alienhb_action - { - entry - { - marker0 0 - marker1 6.85 - marker2 31.84 - marker3 66.77 - } - exit - { - nextfile alienhb_atr00 - nextmark marker0 - time0 5.29 - time1 21.54 - time3 26.21 - time4 120.30 - } - exit - { - nextfile alienhb_atr01 - nextmark marker1 - time0 10.35 - time1 17.03 - } - exit - { - nextfile alienhb_atr02 - nextmark marker2 - time0 60.27 - time1 70.21 - time2 80.36 - time3 93.55 - time4 100.47 - time5 111.75 - } - } - yavfinal_explore - { - entry - { - marker0 0.000 - marker1 18.664 - marker2 53.390 - marker3 97.161 - - } - exit - { - nextfile yavfinal_etr00 - time00 53.434 - time01 83.935 - - } - exit - { - nextfile yavfinal_etr01 - time00 9.852 - time01 94.171 - time02 104.106 - - } - } - yavfinal_action - { - entry - { - marker0 0.00 - marker1 43.094 - marker2 73.785 - } - exit - { - nextfile yavfinal_atr00 - nextmark marker0 - time00 53.502 - time01 61.386 - } - exit - { - nextfile yavfinal_atr01 - nextmark marker1 - time00 3.623 - time01 96.341 - } - exit - { - nextfile yavfinal_atr02 - nextmark marker2 - time00 9.019 - time01 11.707 - time02 15.535 - time03 29.107 - time04 35.847 - time05 75.327 - time06 101.992 - - } - exit - { - nextfile yavfinal_atr03 - nextmark marker3 - time00 21.257 - time01 25.167 - time02 43.800 - time03 106.249 - time04 113.638 - - } - } - yavfinal_boss - { - } - narshaada_explore - { - entry - { - marker0 123.18 - marker1 0 - marker2 43.30 - marker3 12.27 - } - exit - { - nextfile narshaada_etr00 - time0 55.86 - time1 70.17 - time2 78.63 - time3 88.61 - time4 106.57 - - } - exit - { - nextfile narshaada_etr01 - time0 13.75 - time1 31.29 - time2 43.84 - time4 123.91 - time5 134.92 - time6 149.29 - time7 168.16 - time8 184.19 - } - } - narshaada_action - { - entry - { - marker0 0 - marker1 15.65 - marker2 47.07 - } - exit - { - nextfile narshaada_atr00 - nextmark marker0 - time0 2.72 - time1 59.84 - time2 63.90 - time3 74.16 - time4 82.37 - } - exit - { - nextfile narshaada_atr01 - nextmark marker1 - time0 10.89 - time1 20.59 - time2 28.15 - time3 39.65 - time4 46.35 - } - exit - { - nextfile narshaada_atr02 - nextmark marker2 - time0 48.98 - time1 69.05 - } - exit - { - nextfile narshaada_atr03 - nextmark marker3 - time0 86.14 - time1 90.73 - time2 96.40 - time3 101.09 - } - } - -} -levelmusic -{ - kejim_post - { - explore ImpBaseB_Explore - action ImpBaseB_Action - } - kejim_base - { - explore kejimbase_explore - action kejimbase_action - } - artus_mine - { - explore tunnels_explore - action tunnels_action - } - artus_detention - { - explore ImpBaseC_explore - action ImpBaseC_action - useboss bespin_platform - } - artus_topside - { - explore ImpBaseD_explore - action ImpBaseD_action - } - ns_streets - { - explore narshaada_explore - action narshaada_action - } - ns_hideout - { - explore alienha_explore - action alienha_action - } - ns_starpad - { - explore alienhb_explore - action alienhb_action - } - bespin_undercity - { - uses artus_mine - } - bespin_streets - { - explore BespinA_Explore - action BespinA_Action - } - bespin_platform - { - explore besplat_explore - action besplat_action - boss besplat_boss - } - cairn_bay - { - explore ImpBaseE_explore - action ImpBaseE_action - } - cairn_dock1 - { - uses kejim_base - } - cairn_assembly - { - uses kejim_post - } - cairn_stockpile - { - uses artus_detention - } - cairn_reactor - { - uses artus_topside - } - cairn_dock2 - { - uses cairn_bay - } - demo - { - uses kejim_post - useboss bespin_platform - } - doom_comm - { - uses kejim_base - } - doom_detention - { - uses kejim_post - } - doom_shields - { - uses artus_detention - } - yavin_swamp - { - explore swamp_explore - action swamp_action - } - yavin_canyon - { - uses ns_hideout - } - yavin_courtyard - { - explore yavtemp2_explore - action yavtemp2_action - } - yavin_final - { - explore yavfinal_explore - action yavfinal_action - boss yavfinal_boss - } - yavin_temple - { - explore placeholder - action placeholder - } - yavin_trial - { - explore yavtrial_explore - action yavtrial_action - } -} diff --git a/code/base/ext_data/items.dat b/code/base/ext_data/items.dat deleted file mode 100644 index 41d9e7c5..00000000 --- a/code/base/ext_data/items.dat +++ /dev/null @@ -1,712 +0,0 @@ -// EXTERNAL ITEM DATA -// - -//Fields -//pickupsound STRING; DEFAULT = sound/weapons/w_pkup.wav -//itemname STRING; -//classname STRING; -//count INT; ammount of ammo or health given with item -//icon STRING; -//min VECTOR; item bounds min, DEFAULT = -16 -16 -2 -//max VECTOR; item bounds max, DEFAULT = 16 16 16 -//pickupname STRING; name to show in inventory -//tag ENUM; WP_, or AMMO_ -//type ENUM; IT_WEAPON, IT_AMMO, IT_ARMOR, IT_HEALTH -//worldmodel STRING; model to show on ground or in hand - -{ -itemname ITM_SABER_PICKUP - -classname weapon_saber -worldmodel models/weapons2/saber/saber_w.md3 -icon gfx/hud/w_icon_lightsaber -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_SABER -min -16 -16 -8 -max 16 16 16 -} - - -{ -itemname ITM_BRYAR_PISTOL_PICKUP - -classname weapon_bryar_pistol -worldmodel models/weapons2/briar_pistol/briar_pistol_w.glm -icon gfx/hud/w_icon_briar -// Amount of ammo given with weapon -count 10 -type IT_WEAPON -tag WP_BRYAR_PISTOL -min -10 -10 -2 -max 10 10 12 -} - - -{ -itemname ITM_BLASTER_PICKUP - -classname weapon_blaster -worldmodel models/weapons2/blaster_r/blaster_w.glm -icon gfx/hud/w_icon_blaster -// Amount of ammo given with weapon -count 10 -type IT_WEAPON -tag WP_BLASTER -min -10 -10 -2 -max 10 10 12 -} - -{ -itemname ITM_DISRUPTOR_PICKUP - -classname weapon_disruptor -worldmodel models/weapons2/disruptor/disruptor_w.glm -icon gfx/hud/w_icon_disruptor -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_DISRUPTOR -min -10 -10 -2 -max 10 10 12 -} - -{ -itemname ITM_BOWCASTER_PICKUP - -classname weapon_bowcaster -worldmodel models/weapons2/bowcaster/bowcaster_w.glm -icon gfx/hud/w_icon_bowcaster -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_BOWCASTER -min -10 -10 -2 -max 10 10 12 -} - -{ -itemname ITM_REPEATER_PICKUP - -classname weapon_repeater -worldmodel models/weapons2/heavy_repeater/heavy_repeater_w.glm -icon gfx/hud/w_icon_repeater -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_REPEATER -min -10 -10 -2 -max 10 10 12 -} - -{ -itemname ITM_DEMP2_PICKUP - -classname weapon_demp2 -worldmodel models/weapons2/demp2/demp2_w.glm -icon gfx/hud/w_icon_demp2 -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_DEMP2 -min -10 -10 -2 -max 10 10 12 -} - - -{ -itemname ITM_FLECHETTE_PICKUP - -classname weapon_flechette -worldmodel models/weapons2/golan_arms/golan_arms_w.glm -icon gfx/hud/w_icon_flechette -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_FLECHETTE -min -10 -10 -2 -max 10 10 12 -} - - -{ -itemname ITM_ROCKET_LAUNCHER_PICKUP - -classname weapon_rocket_launcher -worldmodel models/weapons2/merr_sonn/merr_sonn_w.glm -icon gfx/hud/w_icon_merrsonn -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_ROCKET_LAUNCHER -min -10 -10 -2 -max 10 10 12 -} - - -{ -itemname ITM_THERMAL_DET_PICKUP - -classname weapon_thermal -worldmodel models/weapons2/thermal/thermal_pu.md3 -icon gfx/hud/w_icon_thermal -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_THERMAL -min -10 -10 -2 -max 10 10 12 -} - -{ -itemname ITM_TRIP_MINE_PICKUP - -classname weapon_trip_mine -worldmodel models/weapons2/laser_trap/laser_trap_pu.md3 -icon gfx/hud/w_icon_tripmine -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_TRIP_MINE -min -10 -10 -2 -max 10 10 12 -} - -{ -itemname ITM_DET_PACK_PICKUP - -classname weapon_det_pack -worldmodel models/weapons2/detpack/det_pack_pu.md3 -icon gfx/hud/w_icon_detpack -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_DET_PACK -min -10 -10 -2 -max 10 10 12 -} - -{ -itemname ITM_STUN_BATON_PICKUP - -classname weapon_stun_baton -worldmodel models/weapons2/stun_baton/stunbaton_w.glm -icon gfx/hud/w_icon_stunbaton -// Amount of ammo given with weapon -count 50 -type IT_WEAPON -tag WP_STUN_BATON -} - - -{ -itemname ITM_BOT_LASER_PICKUP - -classname weapon_botwelder -worldmodel models/weapons2/noweap/noweap.md3 -// Amount of ammo given with weapon -count 400 -type IT_WEAPON -tag WP_BOT_LASER -} - -{ -itemname ITM_MELEE - -classname weapon_melee -worldmodel models/weapons2/noweap/noweap.md3 -// Amount of ammo given with weapon -count 400 -type IT_WEAPON -tag WP_MELEE -min -16 -16 -2 -max 16 16 16 -} - -{ -itemname ITM_EMPLACED_GUN_PICKUP - -classname weapon_emplaced_gun -worldmodel models/weapons2/noweap/noweap.md3 -// Amount of ammo given with weapon -count 800 -type IT_WEAPON -tag WP_EMPLACED_GUN -} - -{ -itemname ITM_TURRET_PICKUP - -classname weapon_turret -worldmodel models/weapons2/noweap/noweap.md3 -// Amount of ammo given with weapon -count 400 -type IT_WEAPON -tag WP_TURRET -} - -{ -itemname ITM_ATST_MAIN_PICKUP - -classname weapon_atst_main -worldmodel models/weapons2/noweap/noweap.md3 -icon gfx/hud/w_icon_atst -// Amount of ammo given with weapon -count 400 -type IT_WEAPON -tag WP_ATST_MAIN -} - -{ -itemname ITM_ATST_SIDE_PICKUP - -classname weapon_atst_side -worldmodel models/weapons2/noweap/noweap.md3 -icon gfx/hud/w_icon_atstside -// Amount of ammo given with weapon -count 400 -type IT_WEAPON -tag WP_ATST_SIDE -} - -{ -itemname ITM_TIE_FIGHTER_PICKUP - -classname weapon_tie_fighter -worldmodel models/weapons2/noweap/noweap.md3 -// Amount of ammo given with weapon -count 400 -type IT_WEAPON -tag WP_TIE_FIGHTER -} - -{ -itemname ITM_RAPID_FIRE_CONC_PICKUP - -classname weapon_rapid_concussion -worldmodel models/weapons2/noweap/noweap.md3 -// Amount of ammo given with weapon -count 400 -type IT_WEAPON -tag WP_RAPID_FIRE_CONC -} - -{ -itemname ITM_BLASTER_PISTOL_PICKUP - -classname weapon_blaster_pistol -worldmodel models/weapons2/imp_pistol/pistol_w.md3 -// Amount of ammo given with weapon -count 400 -type IT_WEAPON -tag WP_BLASTER_PISTOL -} - -// -//Items -// - -// AMMO Items -//------------- -{ -itemname ITM_AMMO_FORCE_PICKUP - -classname ammo_force -worldmodel models/items/forcegem.md3 -pickupsound sound/player/enlightenment.wav -icon gfx/hud/forcegem_icon2 -count 100 -type IT_AMMO -tag AMMO_FORCE -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_AMMO_BLASTER_PICKUP - -classname ammo_blaster -worldmodel models/items/energy_cell.md3 -icon gfx/hud/energy_cell -count 25 -type IT_AMMO -tag AMMO_BLASTER -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_AMMO_POWERCELL_PICKUP - -classname ammo_powercell -worldmodel models/items/power_cell.md3 -icon gfx/hud/power_cell -count 100 -type IT_AMMO -tag AMMO_POWERCELL -max 8 8 16 -min -8 -8 -0 -} - - -{ -itemname ITM_AMMO_METAL_BOLTS_PICKUP - -classname ammo_metallic_bolts -worldmodel models/items/metallic_bolts.md3 -icon gfx/hud/metallic_bolts -count 100 -type IT_AMMO -tag AMMO_METAL_BOLTS -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_AMMO_ROCKETS_PICKUP - -classname ammo_rockets -worldmodel models/items/rockets.md3 -icon gfx/hud/rockets -count 3 -type IT_AMMO -tag AMMO_ROCKETS -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_AMMO_EMPLACED_PICKUP - -classname ammo_emplaced -worldmodel models/weapons2/noweap/noweap.md3 -count 100 -type IT_AMMO -tag AMMO_EMPLACED -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_AMMO_THERMAL_PICKUP - -classname ammo_thermal -worldmodel models/weapons2/thermal/thermal_pu.md3 -icon gfx/hud/w_icon_thermal -count 4 -type IT_AMMO -tag AMMO_THERMAL -max 16 16 16 -min -16 -16 -0 -} - -{ -itemname ITM_AMMO_TRIPMINE_PICKUP - -classname ammo_tripmine -worldmodel models/weapons2/laser_trap/laser_trap_pu.md3 -icon gfx/hud/w_icon_tripmine -count 3 -type IT_AMMO -tag AMMO_TRIPMINE -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_AMMO_DETPACK_PICKUP - -classname ammo_detpack -worldmodel models/weapons2/detpack/det_pack_pu.md3 -icon gfx/hud/w_icon_detpack -count 3 -type IT_AMMO -tag AMMO_DETPACK -max 8 8 16 -min -8 -8 -0 -} - - - -{ -itemname ITM_BATTERY_PICKUP - -classname item_battery -worldmodel models/items/battery.md3 -icon gfx/hud/battery -count 1000 -type IT_BATTERY -tag ITM_BATTERY_PICKUP -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_SEEKER_PICKUP -classname item_seeker -worldmodel models/items/remote.md3 -icon gfx/hud/i_icon_seeker -count 120 -type IT_HOLDABLE -tag INV_SEEKER -max 8 8 16 -min -8 -8 -4 -} - -{ -itemname ITM_SHIELD_PICKUP -classname item_enviro -worldmodel models/items/shield.md3 -icon gfx/hud/i_icon_shieldwall -count 100 -type IT_HOLDABLE -tag ITM_SHIELD_PICKUP -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_BACTA_PICKUP -classname item_bacta -worldmodel models/items/bacta.md3 -icon gfx/hud/i_icon_bacta -count 25 -type IT_HOLDABLE -tag INV_BACTA_CANISTER -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_DATAPAD_PICKUP -classname item_datapad -worldmodel models/items/datapad.md3 -count 1 -type IT_HOLDABLE -tag ITM_DATAPAD_PICKUP -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_BINOCULARS_PICKUP -classname item_binoculars -worldmodel models/items/binoculars.md3 -icon gfx/hud/i_icon_zoom -count 1 -type IT_HOLDABLE -tag INV_ELECTROBINOCULARS -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_SENTRY_GUN_PICKUP -classname item_sentry_gun -worldmodel models/items/psgun.glm -icon gfx/hud/i_icon_sentrygun -count 120 -type IT_HOLDABLE -tag INV_SENTRY -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_LA_GOGGLES_PICKUP -classname item_la_goggles -worldmodel models/items/binoculars.md3 -icon gfx/hud/i_icon_goggles -count 30 -type IT_HOLDABLE -tag INV_LIGHTAMP_GOGGLES -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_MEDPAK_PICKUP -classname item_medpak_instant -worldmodel models/items/medpac.md3 -icon gfx/hud/i_icon_medkit -count 20 -type IT_HEALTH -tag ITM_MEDPAK_PICKUP -max 8 8 16 -min -8 -8 -4 -} - -{ -itemname ITM_SHIELD_SM_PICKUP -classname item_shield_sm_instant -worldmodel models/items/psd_sm.md3 -icon gfx/hud/psd_small -count 25 -type IT_ARMOR -tag ITM_SHIELD_SM_PICKUP -max 8 8 16 -min -8 -8 -4 -} - -{ -itemname ITM_SHIELD_LRG_PICKUP -classname item_shield_lrg_instant -worldmodel models/items/psd.md3 -icon gfx/hud/psd_medium -count 50 -type IT_ARMOR -tag ITM_SHIELD_LRG_PICKUP -max 8 8 16 -min -8 -8 -4 -} - - -{ -itemname ITM_GOODIE_KEY_PICKUP -classname item_goodie_key -worldmodel models/items/key.md3 -icon gfx/hud/i_icon_goodie_key -type IT_HOLDABLE -tag INV_GOODIE_KEY -max 8 8 16 -min -8 -8 -0 -} - - -{ -itemname ITM_SECURITY_KEY_PICKUP -classname item_security_key -worldmodel models/items/key.md3 -icon gfx/hud/i_icon_security_key -type IT_HOLDABLE -tag INV_SECURITY_KEY -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_HEAL_PICKUP - -classname holocron_force_heal -worldmodel models/map_objects/force_holocrons/heal.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_heal -count 1 -type IT_HOLOCRON -tag FP_HEAL -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_LEVITATION_PICKUP - -classname holocron_force_levitation -worldmodel models/map_objects/force_holocrons/jump.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_levitation -count 1 -type IT_HOLOCRON -tag FP_LEVITATION -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_SPEED_PICKUP - -classname holocron_force_speed -worldmodel models/map_objects/force_holocrons/speed.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_speed -count 1 -type IT_HOLOCRON -tag FP_SPEED -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_PUSH_PICKUP - -classname holocron_force_push -worldmodel models/map_objects/force_holocrons/push.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_push -count 1 -type IT_HOLOCRON -tag FP_PUSH -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_PULL_PICKUP - -classname holocron_force_pull -worldmodel models/map_objects/force_holocrons/pull.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_pull -count 1 -type IT_HOLOCRON -tag FP_PULL -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_TELEPATHY_PICKUP - -classname holocron_force_telepathy -worldmodel models/map_objects/force_holocrons/telepathy.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_telepathy -count 1 -type IT_HOLOCRON -tag FP_TELEPATHY -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_GRIP_PICKUP - -classname holocron_force_grip -worldmodel models/map_objects/force_holocrons/grip.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_grip -count 1 -type IT_HOLOCRON -tag FP_GRIP -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_LIGHTNING_PICKUP - -classname holocron_force_lightning -worldmodel models/map_objects/force_holocrons/lightning.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_lightning -count 1 -type IT_HOLOCRON -tag FP_LIGHTNING -max 8 8 16 -min -8 -8 -0 -} - -{ -itemname ITM_FORCE_SABERTHROW_PICKUP - -classname holocron_force_saberthrow -worldmodel models/map_objects/force_holocrons/saberthrow.md3 -pickupsound sound/player/holocron.wav -icon gfx/hud/f_icon_saberthrow -count 1 -type IT_HOLOCRON -tag FP_SABERTHROW -max 8 8 16 -min -8 -8 -0 -} diff --git a/code/base/ext_data/weapons.dat b/code/base/ext_data/weapons.dat deleted file mode 100644 index 79537995..00000000 --- a/code/base/ext_data/weapons.dat +++ /dev/null @@ -1,629 +0,0 @@ -// EXTERNAL WEAPON & AMMO DATA -// -// NOTE!!!!!!!!! Weapontype must start the block of weapon data. -// NOTE!!!!!!!!! Ammo must start the block of ammo data. -// -// Weapontype - weapon data is associated with which weapon (must be first) -// WP_NONE -// WP_PHASER -// WP_COMPRESSION_RIFLE -// WP_IMOD -// WP_SCAVENGER_RIFLE -// WP_STASIS -// WP_GRENADE_LAUNCHER, -// WP_TETRION_DISRUPTOR, -// WP_DREADNOUGHT, -// WP_QUANTUM_BURST, -// WP_BORG_WEAPON -// WP_BORG_TASER -// WP_BORG_ASSIMILATOR -// WP_BORG_DRILL -// WP_TRICORDER -// -// Weaponclass - weapon name -// Weaponmodel - weapon model used in game -// weaponicon - interface image -// Ammotype - type of power weapon needs to fire -// 0 - No power -// 1 - Star Fleet power -// 2 - Alien Crystal power -// 3 - Phaser power -// Ammolowcount - amount when "Low ammo" warning appears on screen -// Flashcolor - color generate by weapon flash (R,G,B) -// Firingsound - sound file used when firing -// altfiringsound - sound file used when alt-firing -// flashsound - sound file used by flash -// altflashsound - sound file used by an alt-fire flash -// stopsound - sound file used when a firing sound stops -// Firetime - amount of time between firings -// altfireTime - for alt fire -// Range - range of weapon -// energyPerShot - amount of energy used per shot -// altenergypershot- for alt fire -// barrelcount - number of barrels the model has (weaponname_b?.md3) -// missileModel - missile .md3 -// altmissileModel - alternate missile .md3 -// missileSound - played while flying -// altmissileSound - alternate missile launch sound -// missileLight - intensity of lightsource for missile - if 0.0 then none (float) -// altmissileLight - alternate missile light -// missileLightColor - color in three float style R, G, B (0.0 to 1.0) - NOTE - if you have a light, you MUST HAVE THESE -// altmissileLightColor - alternate color in three float style R, G, B (0.0 to 1.0) -// missileHitSound - played on impact -// altmissileHitSound - for alt fire -// missileFuncName - missile fly function -// altmissileFuncName - for alt fire -// -// FUNCTION NAMES -// borgfunc -// scavengerfunc -// altscavengerfunc -// stasisfunc -// grenadefunc -// altgrenadefunc -// tetrionfunc -// dreadnoughtfunc -// quantumfunc -// quantumaltfunc -// botrocketfunc -// forgeprojfunc -// forgeprojfunc2 -// forgepsychfunc -// parasiteacidfunc -// stasisattackfunc -// loaderlaserfunc -// botprojfunc - -// -// For AMMO Types -// ammoicon - STRING -// ammomax - INT - - -// WP_NULL -{ -WEAPONTYPE WP_NONE -} - -// WP_STUN_BATON -{ -weapontype WP_STUN_BATON -weaponclass weapon_stun_baton -weaponmodel models/weapons2/stun_baton/baton.md3 -weaponIcon gfx/hud/w_icon_stunbaton -firingsound sound/weapons/baton/idle.wav -firingforce fffx/weapons/baton/idle -barrelcount 3 -ammotype 1 -ammolowcount 5 -energypershot 0 -firetime 400 -range 8192 -altenergypershot 0 -altfiretime 400 -altrange 8192 -} - -// WP_SABER -{ -weapontype WP_SABER -weaponclass weapon_saber -weaponmodel models/weapons2/saber/saber_w.md3 -weaponIcon gfx/hud/w_icon_lightsaber -firingsound sound/weapons/saber/saberhum1.wav -ammotype 1 -ammolowcount 5 -energypershot 1 -firetime 100 -range 8192 -altenergypershot 3 -altfiretime 100 -altrange 8192 -missilemodel models/weapons2/saber/saber_w.md3 -} - - -// WP_BRYAR_PISTOL -{ -weapontype WP_BRYAR_PISTOL -weaponclass weapon_bryar_pistol -weaponmodel models/weapons2/briar_pistol/briar_pistol.md3 -weaponIcon gfx/hud/w_icon_briar -missileFuncName bryar_func -altmissileFuncName bryar_alt_func -ammotype 2 -ammolowcount 15 -energypershot 1 -firetime 400 -range 8192 -altenergypershot 1 -altfiretime 400 -altrange 8192 -muzzleEffect bryar/muzzle_flash -altmuzzleEffect bryar/altmuzzle_flash -altchargesound sound/weapons/bryar/altcharge.wav -altchargeforce fffx/weapons/bryar/altcharge -selectSound sound/weapons/bryar/select.wav -selectforce fffx/weapons/bryar/select -} - -// WP_BLASTER -{ -weapontype WP_BLASTER -weaponclass weapon_blaster -weaponmodel models/weapons2/blaster_r/blaster.md3 -weaponIcon gfx/hud/w_icon_blaster -ammotype 2 -ammolowcount 15 -energypershot 1 -firetime 350 -range 8192 -altenergypershot 2 -altfiretime 150 -altrange 8192 -missileFuncName blaster_func -altmissileFuncName blaster_alt_func -muzzleEffect blaster/muzzle_flash -altmuzzleEffect blaster/altmuzzle_flash -selectSound sound/weapons/blaster/select.wav -selectforce fffx/weapons/blaster/select -} - -// WP_DISRUPTOR -{ -weapontype WP_DISRUPTOR -weaponclass weapon_disruptor -weaponmodel models/weapons2/disruptor/disruptor.md3 -weaponIcon gfx/hud/w_icon_disruptor -ammotype 3 -ammolowcount 15 -energypershot 3 -barrelcount 1 -firetime 600 -range 8192 -altenergypershot 3 -altfiretime 1300 -altrange 8192 -muzzleEffect disruptor/muzzle_flash -altmuzzleEffect disruptor/altmuzzle_flash -selectSound sound/weapons/disruptor/select.wav -selectforce fffx/weapons/disruptor/select -altchargesound sound/weapons/disruptor/altCharge.wav -altchargeforce fffx/weapons/disruptor/altcharge -} - -// WP_BOWCASTER -{ -weapontype WP_BOWCASTER -weaponclass weapon_bowcaster -weaponmodel models/weapons2/bowcaster/bowcaster.md3 -weaponIcon gfx/hud/w_icon_bowcaster -altchargesound sound/weapons/bowcaster/altcharge.wav -altchargeforce fffx/weapons/bowcaster/altcharge -ammotype 3 -ammolowcount 15 -energypershot 5 -firetime 750 -range 8192 -altenergypershot 5 -altfiretime 400 -altrange 8192 -missileFuncName bowcaster_func -altmissileFuncName bowcaster_func -muzzleEffect bowcaster/muzzle_flash -altmuzzleEffect bowcaster/altmuzzle_flash -selectSound sound/weapons/bowcaster/select.wav -selectforce fffx/weapons/bowcaster/select -chargesound sound/weapons/bowcaster/altcharge.wav -chargeforce fffx/weapons/bowcaster/altcharge -} - -// WP_REPEATER -{ -weapontype WP_REPEATER -weaponclass weapon_repeater -weaponmodel models/weapons2/heavy_repeater/heavy_repeater.md3 -weaponIcon gfx/hud/w_icon_repeater -ammotype 4 -ammolowcount 25 -energypershot 1 -firetime 50 -range 8192 -altenergypershot 8 -altfiretime 800 -altrange 8192 -barrelcount 1 -missileFuncName repeater_func -altmissileFuncName repeater_alt_func -muzzleEffect repeater/muzzle_flash -altmuzzleEffect repeater/altmuzzle_flash -selectSound sound/weapons/repeater/select.wav -selectforce fffx/weapons/repeater/select -} - -// WP_DEMP2 -{ -weapontype WP_DEMP2 -weaponclass weapon_demp2 -weaponmodel models/weapons2/demp2/demp2.md3 -weaponIcon gfx/hud/w_icon_demp2 -ammotype 3 -ammolowcount 15 -energypershot 8 -firetime 450 -range 8192 -altenergypershot 10 -altfiretime 1200 -altrange 8192 -missileFuncName demp2_func -muzzleEffect demp2/muzzle_flash -altmissileFuncName demp2_alt_func -altmuzzleEffect demp2/altmuzzle_flash -selectSound sound/weapons/demp2/select.wav -selectforce fffx/weapons/demp2/select -altchargesound sound/weapons/demp2/altCharge.wav -altchargeforce fffx/weapons/demp2/altcharge -} - - -// WP_FLECHETTE -{ -weapontype WP_FLECHETTE -weaponclass weapon_flechette -weaponmodel models/weapons2/golan_arms/golan_arms.md3 -barrelcount 1 -ammotype 4 -ammolowcount 15 -firetime 550 -energypershot 8 -range 8192 -weaponIcon gfx/hud/w_icon_flechette -altenergypershot 8 -altfiretime 400 -altrange 8192 -missileFuncName flechette_func -missileModel models/weapons2/golan_arms/projectileMain.md3 -altmissileFuncName flechette_alt_func -muzzleEffect flechette/muzzle_flash -altmuzzleEffect flechette/altmuzzle_flash -altmissileModel models/weapons2/golan_arms/projectile.md3 -selectSound sound/weapons/flechette/select.wav -selectforce fffx/weapons/flechette/select -} - -// WP_ROCKET_LAUNCHER -{ -weapontype WP_ROCKET_LAUNCHER -weaponclass weapon_rocket_launcher -weaponmodel models/weapons2/merr_sonn/merr_sonn.md3 -ammotype 5 -ammolowcount 1 -firetime 600 -energypershot 1 -range 8192 -weaponIcon gfx/hud/w_icon_merrsonn -barrelcount 1 -altenergypershot 1 -altfiretime 1000 -altrange 8192 -missileLight 125 -missileLightColor 1.0 1.0 0.5 -altmissileLight 125 -altmissileLightColor 1.0 1.0 0.5 -missileFuncName rocket_func -altmissileFuncName rocket_alt_func -muzzleEffect rocket/muzzle_flash2 -altmuzzleEffect rocket/altmuzzle_flash -missileModel models/weapons2/merr_sonn/projectile.md3 -altmissileModel models/weapons2/merr_sonn/projectile.md3 -missilesound sound/weapons/rocket/missleloop.wav -altmissilesound sound/weapons/rocket/missleloop.wav -selectSound sound/weapons/rocket/select.wav -selectforce fffx/weapons/rocket/select -} - - -// WP_THERMAL -{ -weapontype WP_THERMAL -weaponclass weapon_thermal -weaponmodel models/weapons2/thermal/thermal.md3 -weaponIcon gfx/hud/w_icon_thermal -ammotype 7 -ammolowcount 1 -energypershot 1 -firetime 800 -range 8192 -altenergypershot 1 -altfiretime 400 -altrange 8192 -missileModel models/weapons2/thermal/thermal_proj.md3 -altmissileModel models/weapons2/thermal/thermal_proj.md3 -barrelcount 0 -chargesound sound/weapons/thermal/charge.wav -chargeforce fffx/weapons/thermal/charge -altchargesound sound/weapons/thermal/charge.wav -altchargeforce fffx/weapons/thermal/charge -selectSound sound/weapons/thermal/select.wav -selectforce fffx/weapons/thermal/select -muzzleEffect thermal/muzzle_flash -} - -// WP_TRIP_MINE -{ -weapontype WP_TRIP_MINE -weaponclass weapon_trip_mine -weaponmodel models/weapons2/laser_trap/laser_trap.md3 -weaponIcon gfx/hud/w_icon_tripmine -ammotype 8 -ammolowcount 1 -energypershot 1 -firetime 800 -range 8192 -altenergypershot 1 -altfiretime 400 -altrange 8192 -missileModel models/weapons2/laser_trap/laser_trap_w.glm -altmissileModel models/weapons2/laser_trap/laser_trap_w.glm -selectSound sound/weapons/detpack/select.wav -selectforce fffx/weapons/detpack/select -muzzleEffect tripmine/muzzle_flash - -} - -// WP_DET_PACK -{ -weapontype WP_DET_PACK -weaponclass weapon_det_pack -weaponmodel models/weapons2/detpack/det_pack.md3 -weaponIcon gfx/hud/w_icon_detpack -ammotype 9 -ammolowcount 1 -energypershot 1 -firetime 800 -range 8192 -altenergypershot 0 -altfiretime 400 -altrange 8192 -missileModel models/weapons2/detpack/det_pack_proj.glm -selectSound sound/weapons/detpack/select.wav -selectforce fffx/weapons/detpack/select -muzzleEffect detpack/muzzle_flash -} - -// WP_EMPLACED_GUN -{ -weapontype WP_EMPLACED_GUN -weaponclass weapon_emplaced_gun -weaponmodel models/weapons2/noweap/noweap.md3 - -altenergypershot 1 -altrange 8192 -missileFuncName emplaced_func -altmissileFuncName emplaced_func -ammotype 6 -ammolowcount 15 -energypershot 1 -firetime 150 -altfiretime 150 -range 8192 -muzzleEffect emplaced/muzzle_flash -} - -// WP_BOT_LASER -{ -weapontype WP_BOT_LASER -weaponclass weapon_bryar_pistol -weaponmodel models/weapons2/noweap/noweap.md3 - -//flashsound sound/weapons/probe/fire.wav -//altflashsound sound/weapons/probe/alt_fire.wav -altenergypershot 0 -altrange 8192 -missileFuncName bryar_func -ammotype 1 -ammolowcount 15 -energypershot 2 -firetime 1600 -range 8192 -} - -// WP_MELEE -{ -weapontype WP_MELEE -weaponclass weapon_melee -weaponmodel models/weapons2/noweap/noweap.md3 - -ammotype 3 -ammolowcount 5 -energypershot 0 -firetime 1000 -range 1024 -} - -// WP_ATST_MAIN -{ -weapontype WP_ATST_MAIN -weaponclass weapon_atst_main -weaponmodel models/weapons2/noweap/noweap.md3 -weaponIcon gfx/hud/w_icon_atst -//flashsound sound/weapons/atst/ATSTfire1.wav -//altflashsound sound/weapons/atst/ATSTfire2.wav -altenergypershot 1 -altrange 8192 -missileFuncName atstmain_func -altmissileFuncName atstmain_func -ammotype 6 -ammolowcount 15 -energypershot 1 -firetime 200 -altfiretime 150 -range 8192 -muzzleEffect emplaced/muzzle_flash -} - -// WP_ATST_SIDE -{ -weapontype WP_ATST_SIDE -weaponclass weapon_atst_side -weaponmodel models/weapons2/noweap/noweap.md3 -weaponIcon gfx/hud/w_icon_atstside -//flashsound sound/weapons/atst/ATSTfire3.wav -//altflashsound sound/weapons/atst/ATSTfire4.wav -altenergypershot 1 -altrange 8192 - -altmissileModel models/weapons2/merr_sonn/projectile.md3 - -missileFuncName atst_side_main_func -altmissileFuncName atst_side_alt_func -muzzleEffect emplaced/muzzle_flash -altmuzzleEffect emplaced/muzzle_flash - -ammotype 6 -ammolowcount 15 -energypershot 1 -firetime 400 -altfiretime 1000 -range 8192 -} - -// WP_TIE_FIGHTER -{ -weapontype WP_TIE_FIGHTER -weaponclass weapon_tie_fighter -weaponmodel models/weapons2/noweap/noweap.md3 -weaponIcon icons/w_icon_tie -//flashsound sound/weapons/tie_fighter/tie_fire.wav -//altflashsound sound/weapons/tie_fighter/tie_fire2.wav -altenergypershot 1 -altrange 8192 -missileFuncName emplaced_func -altmissileFuncName emplaced_func -ammotype 6 -ammolowcount 15 -energypershot 1 -firetime 400 -altfiretime 400 -range 8192 -muzzleEffect emplaced/muzzle_flash -} - -// WP_RAPID_FIRE_CONC -{ -weapontype WP_RAPID_FIRE_CONC -weaponclass weapon_radid_concussion -weaponmodel models/weapons2/noweap/noweap.md3 -weaponIcon icons/w_icon_tie -//flashsound sound/weapons/rapid_conc/fire.wav -//altflashsound sound/weapons/rapid_conc/alt_fire.wav -altenergypershot 1 -altrange 8192 -missileFuncName emplaced_func -altmissileFuncName repeater_alt_func -ammotype 6 -ammolowcount 15 -energypershot 1 -firetime 400 -altfiretime 1000 -range 8192 -muzzleEffect emplaced/muzzle_flash -} - -// WP_BLASTER_PISTOL -{ -weapontype WP_BLASTER_PISTOL -weaponclass weapon_blaster_pistol -weaponmodel models/weapons2/imp_pistol/pistol.md3 - -//flashsound sound/weapons/npc_blaster/fire.wav -//altflashsound sound/weapons/npc_blaster/alt_fire.wav -missileFuncName bryar_func -altmissileFuncName bryar_alt_func -ammotype 2 -ammolowcount 15 -energypershot 2 -firetime 400 -range 8192 -altenergypershot 2 -altfiretime 400 -altrange 8192 -muzzleEffect bryar/muzzle_flash -} - -// WP_TURRET -{ -weapontype WP_TURRET -weaponclass weapon_turret -weaponmodel models/weapons2/noweap/noweap.md3 -weaponIcon icons/w_icon_turret -altenergypershot 1 -altrange 8192 -missileFuncName turret_func -ammotype 6 -ammolowcount 15 -energypershot 1 -firetime 400 -altfiretime 400 -range 8192 -muzzleEffect turret/muzzle_flash -} - -// AMMO_NONE -{ -AMMOTYPE AMMO_NONE -} - -// AMMO_FORCE -{ -AMMO AMMO_FORCE -AMMOMAX 100 -} - -// AMMO_BLASTER -{ -AMMO AMMO_BLASTER -AMMOMAX 300 -} - -// AMMO_POWERCELL -{ -AMMO AMMO_POWERCELL -AMMOMAX 300 -} - -// AMMO_METAL_BOLTS -{ -AMMO AMMO_METAL_BOLTS -AMMOMAX 400 -} - -// AMMO_ROCKETS -{ -AMMO AMMO_ROCKETS -AMMOMAX 10 -} - -// AMMO_EMPLACED -{ -AMMO AMMO_EMPLACED -AMMOMAX 999 -} - -// AMMO_THERMAL -{ -AMMO AMMO_THERMAL -AMMOMAX 10 -} - -// AMMO_TRIPMINE -{ -AMMO AMMO_TRIPMINE -AMMOMAX 5 -} - -// AMMO_DETPACK -{ -AMMO AMMO_DETPACK -AMMOMAX 5 -} \ No newline at end of file diff --git a/code/base/jk2config.cfg b/code/base/jk2config.cfg deleted file mode 100644 index b8a8a752..00000000 --- a/code/base/jk2config.cfg +++ /dev/null @@ -1,220 +0,0 @@ -// generated by Star Wars Jedi Outcast, do not modify -unbindall -bind SHIFT "+speed" -bind CTRL "+use" -bind ALT "+altattack" -bind TAB "datapad" -bind ENTER "invuse" -bind KP_PGDN "use_seeker" -bind KP_LEFTARROW "use_lightamp_goggles" -bind KP_5 "use_sentry" -bind F1 "force_throw" -bind F2 "force_pull" -bind F3 "force_speed" -bind F4 "force_distract" -bind SPACE "+moveup" -bind , "+moveleft" -bind - "weapon 0" -bind . "+moveright" -bind / "+mlook" -bind 0 "weapon 10" -bind 1 "weapon 1" -bind 2 "weapon 2" -bind 3 "weapon 3" -bind 4 "weapon 4" -bind 5 "weapon 5" -bind 6 "weapon 6" -bind 7 "weapon 7" -bind 8 "weapon 8" -bind 9 "weapon 9" -bind = "screenshot silent" -bind A "+moveleft" -bind B "use_bacta" -bind C "+movedown" -bind D "+moveright" -bind E "+use" -bind F "+useforce" -bind G "zoom" -bind L "saberAttackCycle" -bind M "datapad" -bind P "cg_thirdperson !" -bind Q "weapprev" -bind R "weapnext" -bind S "+back" -bind V "+strafe" -bind W "+forward" -bind X "forcenext" -bind Z "forceprev" -bind [ "invprev" -bind \ "weapongrabbed" -bind ] "invnext" -bind ` "toggleconsole" -bind ~ "toggleconsole" -bind F5 "force_heal" -bind F6 "+force_grip" -bind F7 "+force_lightning" -bind MWHEELUP "weapprev" -bind MWHEELDOWN "weapnext" -bind MOUSE1 "+attack" -bind MOUSE2 "+altattack" -bind PGUP "+lookup" -bind F9 "load quik" -bind F10 "uimenu ingameloadmenu" -bind F11 "uimenu ingamesavemenu" -bind F12 "save quik*" -bind END "centerview" -bind PGDN "+lookdown" -bind MOUSE3 "zoom" -bind UPARROW "+forward" -bind DOWNARROW "+back" -bind LEFTARROW "+left" -bind RIGHTARROW "+right" -bind JOY0 "+attack" -bind JOY1 "+attack" -seta cg_missionInfoCentered "1" -seta ui_r_glCustom "4" -seta r_overBrightBits "1" -seta com_maxfps "85" -seta sp_language "0" -seta in_midi "0" -seta in_midiport "1" -seta in_midichannel "1" -seta in_mididevice "0" -seta in_mouse "-1" -seta in_joystick "1" -seta in_joyBallScale "0.02" -seta joy_threshold "0.15" -seta js_ffmult "3.0" -seta joy_xbutton "1" -seta joy_ybutton "0" -seta k_language "american" -seta use_ff "1" -seta ff_defaultTension "1" -seta conAlpha "1.6" -seta panoNumShots "10" -seta cl_yawspeed "140" -seta cl_pitchspeed "140" -seta cl_anglespeedkey "1.5" -seta cl_maxpackets "30" -seta cl_packetdup "1" -seta cl_run "1" -seta sensitivity "5" -seta cl_mouseAccel "0" -seta cl_freelook "1" -seta cl_ingameVideo "1" -seta cl_VideoQuality "0" -seta cg_autoswitch "1" -seta m_pitch "0.022" -seta m_yaw "0.022" -seta m_forward "0.25" -seta m_side "0.25" -seta m_filter "0" -seta name "Kyle" -seta snaps "20" -seta sex "male" -seta handicap "100" -seta r_allowExtensions "1" -seta r_ext_compress_textures "1" -seta r_ext_compress_lightmaps "0" -seta r_ext_preferred_tc_method "0" -seta r_ext_gamma_control "1" -seta r_ext_multitexture "1" -seta r_ext_compiled_vertex_array "1" -seta r_ext_texture_env_add "1" -seta r_ext_texture_filter_anisotropic "1" -seta r_picmip "1" -seta r_detailtextures "1" -seta r_texturebits "0" -seta r_texturebitslm "0" -seta r_colorbits "0" -seta r_stereo "0" -seta r_stencilbits "8" -seta r_depthbits "0" -seta r_ignorehwgamma "0" -seta r_mode "3" -seta r_customwidth "1600" -seta r_customheight "768" -seta r_customaspect "2" -seta r_simpleMipMaps "1" -seta r_vertexLight "0" -seta r_subdivisions "4" -seta r_ignoreFastPath "1" -seta r_intensity "1" -seta r_lodCurveError "250" -seta r_lodbias "0" -seta r_flares "1" -seta r_lodscale "10" -seta r_ignoreGLErrors "1" -seta r_fastsky "0" -seta r_drawSun "0" -seta r_dynamiclight "1" -seta r_dlightBacks "1" -seta r_finish "0" -seta r_textureMode "GL_LINEAR_MIPMAP_LINEAR" -seta r_swapInterval "0" -seta r_gamma "1" -seta r_facePlaneCull "1" -seta r_primitives "0" -seta r_showtriscolor "0" -seta cg_shadows "1" -seta r_modelpoolmegs "20" -seta r_lastValidRenderer "GeForce2 MX/AGP/SSE2" -seta vid_xpos "7" -seta vid_ypos "1" -seta s_volume "0.546875" -seta s_volumeVoice "1.0" -seta s_musicvolume "0.460938" -seta s_separation "0.5" -seta s_khz "22" -seta s_allowDynamicMusic "1" -seta s_mixahead "0.2" -seta s_mixPreStep "0.05" -seta s_mp3overhead "31760" -seta s_UseOpenAL "1" -seta s_soundpoolmegs "25" -seta cg_drawCrosshair "1" -seta cg_marks "1" -seta ui_menuFiles "ui/menus.txt" -seta ui_smallFont "0.25" -seta ui_bigFont "0.4" -seta cg_hudFiles "ui/jk2hud.txt" -seta cm_playerCurveClip "1" -seta cg_drawGun "1" -seta cg_stereoSeparation "0.4" -seta cg_draw2D "1" -seta cg_drawStatus "1" -seta cg_drawTimer "0" -seta cg_drawFPS "0" -seta cg_drawSnapshot "0" -seta cg_drawAmmoWarning "1" -seta cg_dynamicCrosshair "1" -seta cg_crosshairIdentifyTarget "1" -seta cg_crosshairForceHint "1" -seta cg_crosshairSize "24" -seta cg_crosshairX "0" -seta cg_crosshairY "0" -seta cg_simpleItems "0" -seta cg_runpitch "0.002" -seta cg_runroll "0.005" -seta cg_bobup "0.005" -seta cg_bobpitch "0.002" -seta cg_bobroll "0.002" -seta cg_saberAutoThird "1" -seta cg_gunAutoFirst "1" -seta cg_reliableAnimSounds "1" -seta g_spskill "1" -seta g_dismemberment "3" -seta g_dismemberProbabilities "0" -seta g_subtitles "2" -seta g_saberAutoBlocking "1" -seta g_saberRealisticCombat "0" -seta g_saberMoveSpeed "1" -seta g_saberAnimSpeed "1" -seta g_saberAutoAim "1" -seta ui_iscensored "0" -seta d_slowmodeath "3" -seta s_language "espanoles" -seta r_weatherScale "1" -seta ff_channels "0,0;1,0;2,0;3,0;4,0;5,0" -seta ff_delay "40" -seta r_fullscreen "0" diff --git a/code/cgame/cg_draw.cpp b/code/cgame/cg_draw.cpp index 8d4eb1e6..e27aafc1 100644 --- a/code/cgame/cg_draw.cpp +++ b/code/cgame/cg_draw.cpp @@ -2336,6 +2336,36 @@ static float CG_DrawSecrets( float y ) { return y + BIGCHAR_HEIGHT + 10; } +/* +=============== +CG_DrawSeed +=============== +*/ +static float CG_DrawSeed(float y) { + if (cg_enableRandomizer.integer) + { + char* seed_string; + if (cg_enableRandomizerEnhancements.integer) + { + seed_string = va("Seed (X): %s", cg_setSeed.string); + } + else + { + seed_string = va("Seed : %s", cg_setSeed.string); + } + const int width = cgi_R_Font_StrLenPixels(seed_string, cgs.media.qhFontMedium, 1.0f); + cgi_R_Font_DrawString(635 - width, y + 2, seed_string, colorTable[CT_LTGOLD1], cgs.media.qhFontMedium, -1, 1.0f); + return y + BIGCHAR_HEIGHT + 10; + } + else + { + const char* seed_string = va("No Rand"); + const int width = cgi_R_Font_StrLenPixels(seed_string, cgs.media.qhFontMedium, 1.0f); + cgi_R_Font_DrawString(635 - width, y + 2, seed_string, colorTable[CT_DKORANGE], cgs.media.qhFontMedium, -1, 1.0f); + return y + BIGCHAR_HEIGHT + 10; + } +} + static float jumpHelperGetRangeExtendingLength(const int force_jump_level) { // TODO: This actually depends on FPS (or rather frametime in pmove)... extern float forceJumpHeight[]; @@ -2692,6 +2722,11 @@ static void CG_Draw2D( void ) { CG_DrawOverbounceInfo(); } + + if (cg_enableRandomizer.integer && cg_drawSeed.integer) + { + CG_DrawSeed(y); + } // don't draw center string if scoreboard is up if ( !CG_DrawScoreboard() ) { diff --git a/code/cgame/cg_local.h b/code/cgame/cg_local.h index cfa26a32..c383e85e 100644 --- a/code/cgame/cg_local.h +++ b/code/cgame/cg_local.h @@ -693,6 +693,33 @@ extern vmCvar_t cg_strafeHelperColorSpeedG; extern vmCvar_t cg_strafeHelperColorSpeedB; extern vmCvar_t cg_strafeHelperColorSpeedA; +// Additions for Randomizer +extern vmCvar_t cg_enableRandomizer; +extern vmCvar_t cg_enableRandomizerEnhancements; +extern vmCvar_t cg_drawSeed; +extern vmCvar_t cg_setSeed; +// Better rng for randomizer : uniform distribution. +#include +extern mt19937 rngRandoBase; +extern mt19937 rngRandoEnhancements; +extern uniform_int_distribution distItems; +extern uniform_int_distribution distNPC; +extern uniform_int_distribution distNPC_H; +// Randomizer - evil mode +extern vmCvar_t cg_enableRandSaberStyle; +extern vmCvar_t cg_enableRandSaberLength; +extern vmCvar_t cg_enableRandSaberColor; +extern vmCvar_t cg_enableRandJumpHeight; +extern vmCvar_t cg_enableRandJumpStrength; +extern vmCvar_t cg_enableRandLanguageVoices; +extern vmCvar_t cg_enableRandTextures; +extern vmCvar_t cg_enableRandWeaponProjectile; +extern vmCvar_t cg_enableSafeStart; +extern vmCvar_t cg_startWithPush; +extern vmCvar_t cg_bonusJanHealth; +// Additions for Base Game fixes (ex : artus_mine crates to get all pickups) +extern vmCvar_t cg_baseGameFixes; + void CG_NewClientinfo( int clientNum ); // // cg_main.c diff --git a/code/cgame/cg_main.cpp b/code/cgame/cg_main.cpp index 37b2e7f6..b076052d 100644 --- a/code/cgame/cg_main.cpp +++ b/code/cgame/cg_main.cpp @@ -390,6 +390,36 @@ vmCvar_t cg_strafeHelperColorSpeedG; vmCvar_t cg_strafeHelperColorSpeedB; vmCvar_t cg_strafeHelperColorSpeedA; +// Additions for Randomizer +vmCvar_t cg_enableRandomizer; +vmCvar_t cg_enableRandomizerEnhancements; +vmCvar_t cg_drawSeed; +vmCvar_t cg_useSetSeed; +vmCvar_t cg_setSeed; +// Better rng for randomizer : uniform distribution. +#include +mt19937 rngRandoBase; +mt19937 rngRandoEnhancements; +// Randomizer - evil mode +vmCvar_t cg_enableRandSaberStyle; +vmCvar_t cg_enableRandSaberLength; +vmCvar_t cg_enableRandSaberColor; +vmCvar_t cg_enableRandJumpHeight; +vmCvar_t cg_enableRandJumpStrength; +vmCvar_t cg_enableRandLanguageVoices; +vmCvar_t cg_enableRandTextures; +vmCvar_t cg_enableRandWeaponProjectile; +vmCvar_t cg_enableRandWeaponProjectileMode; +vmCvar_t cg_enableRandNPCSpeed; +vmCvar_t cg_enableSafeStart; +vmCvar_t cg_startWithPush; +vmCvar_t cg_bonusJanHealth; +vmCvar_t cg_enableRandNpcHealth; +vmCvar_t cg_enableRandKyleHealth; +vmCvar_t memorized_kyle_health; +// Additions for Base Game fixes (ex : artus_mine crates to get all pickups) +vmCvar_t cg_baseGameFixes; + typedef struct { vmCvar_t *vmCvar; char *cvarName; @@ -573,6 +603,34 @@ Ghoul2 Insert End { &cg_strafeHelperColorSpeedG, "cg_strafeHelperColorSpeedG", "1.0", CVAR_ARCHIVE }, { &cg_strafeHelperColorSpeedB, "cg_strafeHelperColorSpeedB", "1.0", CVAR_ARCHIVE }, { &cg_strafeHelperColorSpeedA, "cg_strafeHelperColorSpeedA", "0.9", CVAR_ARCHIVE }, + + // Additions for Randomizer + { &cg_enableRandomizer, "cg_enableRandomizer", "0", CVAR_ARCHIVE }, // By default, it's disabled + { &cg_enableRandomizerEnhancements, "cg_enableRandomizerEnhancements", "0", CVAR_ARCHIVE }, // By default, it's disabled + { &cg_drawSeed, "cg_drawSeed", "0", CVAR_ARCHIVE }, + { &cg_useSetSeed, "cg_useSetSeed", "0", CVAR_ARCHIVE }, + { &cg_setSeed, "cg_setSeed", "", CVAR_ARCHIVE }, + // Randomizer - evil mode + { &cg_enableRandSaberStyle, "cg_enableRandSaberStyle", "0", CVAR_ARCHIVE }, + { &cg_enableRandSaberLength, "cg_enableRandSaberLength", "0", CVAR_ARCHIVE }, + { &cg_enableRandSaberColor, "cg_enableRandSaberColor", "0", CVAR_ARCHIVE }, + { &cg_enableRandJumpHeight, "cg_enableRandJumpHeight", "0", CVAR_ARCHIVE }, + { &cg_enableRandJumpStrength, "cg_enableRandJumpStrength", "0", CVAR_ARCHIVE }, + { &cg_enableRandLanguageVoices, "cg_enableRandLanguageVoices", "0", CVAR_ARCHIVE }, + { &cg_enableRandTextures, "cg_enableRandTextures", "0", CVAR_ARCHIVE }, + { &cg_enableRandWeaponProjectile, "cg_enableRandWeaponProjectile", "0", CVAR_ARCHIVE }, + { &cg_enableRandWeaponProjectileMode, "cg_enableRandWeaponProjectileMode", "0", CVAR_ARCHIVE }, + { &cg_enableRandNPCSpeed, "cg_enableRandNPCSpeed", "0", CVAR_ARCHIVE }, + { &cg_enableSafeStart, "cg_enableSafeStart", "0", CVAR_ARCHIVE }, + { &cg_startWithPush, "cg_startWithPush", "0", CVAR_ARCHIVE }, + { &cg_bonusJanHealth, "cg_bonusJanHealth", "0", CVAR_ARCHIVE }, + { &cg_enableRandKyleHealth, "cg_enableRandKyleHealth", "0", CVAR_ARCHIVE }, + { &cg_enableRandNpcHealth, "cg_enableRandNpcHealth", "0", CVAR_ARCHIVE }, + // Randomizer : information holder + { &memorized_kyle_health, "memorized_kyle_health", "0", CVAR_ARCHIVE }, + + // Additions for BaseGame fixes + { &cg_baseGameFixes, "cg_baseGameFixes", "0", CVAR_ARCHIVE } }; int cvarTableSize = sizeof( cvarTable ) / sizeof( cvarTable[0] ); @@ -1483,7 +1541,7 @@ static void CG_RegisterGraphics( void ) { CG_LoadingString( cgs.mapname ); cgi_R_LoadWorldMap( cgs.mapname ); - + cg.loadLCARSStage = 4; CG_LoadingString( "game media shaders" ); @@ -1599,6 +1657,16 @@ static void CG_RegisterGraphics( void ) { // only register the items that the server says we need strcpy( items, CG_ConfigString( CS_ITEMS) ); + //if in randomizer, register all the holocrons + if (cg_enableRandomizer.integer) { + for (i = 1; i < bg_numItems; i++) { + if (bg_itemlist[i].giType == IT_HOLOCRON) { + CG_LoadingString(bg_itemlist[i].classname); + CG_RegisterItemVisuals(i); + } + } + } + for ( i = 1 ; i < bg_numItems ; i++ ) { if ( items[ i ] == '1' ) { @@ -2034,6 +2102,8 @@ void CG_Init( int serverCommandSequence ) { cgi_AddCommand ("kill"); cgi_AddCommand ("give"); cgi_AddCommand ("god"); + // Posto : This is added when a map is loaded, not accessible before starting a game. + if (cg_enableRandomizer.integer) cgi_AddCommand ("randomizer_info"); cgi_AddCommand ("notarget"); cgi_AddCommand ("noclip"); cgi_AddCommand ("undying"); diff --git a/code/client/cl_cgame.cpp b/code/client/cl_cgame.cpp index 9d6042e4..80155cff 100644 --- a/code/client/cl_cgame.cpp +++ b/code/client/cl_cgame.cpp @@ -38,6 +38,7 @@ extern sfxHandle_t AS_GetBModelSound( const char *name, int stage ); extern void AS_AddPrecacheEntry( const char *name ); extern menuDef_t *Menus_FindByName(const char *p); +extern void S_ReloadAllUsedSounds(); /* ==================== CL_GetGameState @@ -861,6 +862,23 @@ void CL_InitCGame( void ) { const char *mapname; int t1, t2; + /* + * Some sound effects stay loaded between levels e.g. Kyles jump noise + * To re-randomise on level change we need to clear the sound set here + */ + if (Cvar_VariableIntegerValue("cg_enableRandomizer") && + Cvar_VariableIntegerValue("cg_enableRandomizerEnhancements") && + Cvar_VariableIntegerValue("cg_enableRandLanguageVoices")) { + // Careful for memory leaks + S_Shutdown(); // This release the memory we were holding + S_Init(); + extern qboolean s_soundMuted; + s_soundMuted = qfalse; + S_RestartMusic(); + S_ReloadAllUsedSounds(); + AS_ParseSets(); + } + t1 = Sys_Milliseconds(); // put away the console diff --git a/code/client/snd_dma.cpp b/code/client/snd_dma.cpp index 65fd47c7..d8271b6d 100644 --- a/code/client/snd_dma.cpp +++ b/code/client/snd_dma.cpp @@ -550,9 +550,18 @@ void S_ReloadAllUsedSounds(void) { sfx_t *sfx = &s_knownSfx[i]; - if (!sfx->bInMemory && !sfx->bDefaultSound && sfx->iLastLevelUsedOn == RE_RegisterMedia_GetLevel()){ + //Reload ALL sounds + if (Cvar_VariableIntegerValue("cg_enableRandomizer") && + Cvar_VariableIntegerValue("cg_enableRandomizerEnhancements") && + Cvar_VariableIntegerValue("cg_enableRandLanguageVoices")) { S_memoryLoad(sfx); } + else { + //Vanilla + if (!sfx->bInMemory && !sfx->bDefaultSound && sfx->iLastLevelUsedOn == RE_RegisterMedia_GetLevel()) { + S_memoryLoad(sfx); + } + } } } } diff --git a/code/client/snd_mem.cpp b/code/client/snd_mem.cpp index 4332d74a..135027ad 100644 --- a/code/client/snd_mem.cpp +++ b/code/client/snd_mem.cpp @@ -616,24 +616,47 @@ static qboolean S_LoadSound_FileLoadAndNameAdjuster(char *psFilename, byte **pDa strncpy(psVoice,"chars",5); //put it back to chars } - // account for foreign voices... - // - extern cvar_t* s_language; - if (s_language && stricmp("DEUTSCH",s_language->string)==0) - { - strncpy(psVoice,"chr_d",5); // same number of letters as "chars" - } - else if (s_language && stricmp("FRANCAIS",s_language->string)==0) - { - strncpy(psVoice,"chr_f",5); // same number of letters as "chars" - } - else if (s_language && stricmp("ESPANOL",s_language->string)==0) - { - strncpy(psVoice,"chr_e",5); // same number of letters as "chars" - } - else - { - psVoice = NULL; // use this ptr as a flag as to whether or not we substituted with a foreign version + //When loading voice lines, select a random language version for each line + if (Cvar_VariableIntegerValue("cg_enableRandomizer") && + Cvar_VariableIntegerValue("cg_enableRandomizerEnhancements") && + Cvar_VariableIntegerValue("cg_enableRandLanguageVoices")) { + int rng = rand() % 4; + switch (rng) + { + case 0: + strncpy(psVoice, "chr_d", 5); // same number of letters as "chars" + break; + case 1: + strncpy(psVoice, "chr_f", 5); // same number of letters as "chars" + break; + case 2: + strncpy(psVoice, "chr_e", 5); // same number of letters as "chars" + break; + default: + psVoice = NULL; // use this ptr as a flag as to whether or not we substituted with a foreign version + break; + } + } else { + //Vanilla + // account for foreign voices... +// + extern cvar_t* s_language; + if (s_language && stricmp("DEUTSCH",s_language->string)==0) + { + strncpy(psVoice,"chr_d",5); // same number of letters as "chars" + } + else if (s_language && stricmp("FRANCAIS",s_language->string)==0) + { + strncpy(psVoice,"chr_f",5); // same number of letters as "chars" + } + else if (s_language && stricmp("ESPANOL",s_language->string)==0) + { + strncpy(psVoice,"chr_e",5); // same number of letters as "chars" + } + else + { + psVoice = NULL; // use this ptr as a flag as to whether or not we substituted with a foreign version + } } } diff --git a/code/game/AI_Interrogator.cpp b/code/game/AI_Interrogator.cpp index 1751a36d..4085f112 100644 --- a/code/game/AI_Interrogator.cpp +++ b/code/game/AI_Interrogator.cpp @@ -8,6 +8,7 @@ void Interrogator_Idle( void ); void DeathFX( gentity_t *ent ); extern void G_SoundOnEnt( gentity_t *ent, soundChannel_t channel, const char *soundPath ); +extern vmCvar_t cg_enableRandomizer; enum { @@ -428,7 +429,10 @@ void Interrogator_Idle( void ) { G_SoundOnEnt( NPC, CHAN_AUTO, "sound/chars/mark1/misc/anger.wav" ); NPC_UpdateAngles( qtrue, qtrue ); - return; + if (!cg_enableRandomizer.integer) + { + return; + } } Interrogator_MaintainHeight(); diff --git a/code/game/AI_Jedi.cpp b/code/game/AI_Jedi.cpp index c683ef39..14f9b825 100644 --- a/code/game/AI_Jedi.cpp +++ b/code/game/AI_Jedi.cpp @@ -13,6 +13,7 @@ extern qboolean InFront( vec3_t spot, vec3_t from, vec3_t fromAngles, float thre extern void G_StartMatrixEffect( gentity_t *ent, qboolean falling = qfalse, int length = 1000 ); extern cvar_t *g_saberRealisticCombat; extern cvar_t *d_slowmodeath; +extern vmCvar_t cg_enableRandomizer; #define MAX_VIEW_DIST 2048 #define MAX_VIEW_SPEED 100 @@ -3290,6 +3291,10 @@ static void Jedi_CombatTimersUpdate( int enemy_dist ) NPC->client->ps.forcePowerDebounce[FP_SABER_DEFENSE] = level.time + 500; } */ + // targeting an invalid enemy + if (cg_enableRandomizer.integer && (!NPC->enemy || !NPC->enemy->client)) { + return; + } if ( NPC->enemy && PM_SaberInKnockaway( NPC->enemy->client->ps.saberMove ) ) {//advance! Jedi_Aggression( NPC, 1 );//get closer diff --git a/code/game/NPC.cpp b/code/game/NPC.cpp index 097ed428..c6efb664 100644 --- a/code/game/NPC.cpp +++ b/code/game/NPC.cpp @@ -36,6 +36,7 @@ extern void NPC_CheckCharmed( void ); extern cvar_t *g_dismemberment; extern cvar_t *g_saberRealisticCombat; +extern vmCvar_t cg_enableRandomizer; //Local Variables // ai debug cvars @@ -1789,6 +1790,40 @@ void NPC_RunBehavior( int team, int bState ) break; default: + if (cg_enableRandomizer.integer) + { + //For some reason a lot of droid behaviours are triggered by team so just copy them here if they're missed + switch (NPC->client->NPC_class) + { + case CLASS_PROBE: + NPC_BehaviorSet_ImperialProbe(bState); + return; + case CLASS_REMOTE: + NPC_BehaviorSet_Remote(bState); + return; + case CLASS_SENTRY: + NPC_BehaviorSet_Sentry(bState); + return; + case CLASS_INTERROGATOR: + NPC_BehaviorSet_Interrogator(bState); + return; + case CLASS_MINEMONSTER: + NPC_BehaviorSet_MineMonster(bState); + return; + case CLASS_HOWLER: + NPC_BehaviorSet_Howler(bState); + return; + case CLASS_MARK1: + NPC_BehaviorSet_Mark1(bState); + return; + case CLASS_MARK2: + NPC_BehaviorSet_Mark2(bState); + return; + case CLASS_GALAKMECH: + NPC_BSGM_Default(); + return; + } + } if ( NPC->client->NPC_class == CLASS_SEEKER ) { NPC_BehaviorSet_Seeker(bState); diff --git a/code/game/NPC_behavior.cpp b/code/game/NPC_behavior.cpp index c90a25c5..31163482 100644 --- a/code/game/NPC_behavior.cpp +++ b/code/game/NPC_behavior.cpp @@ -12,6 +12,7 @@ we need it... #include "Q3_Interface.h" extern cvar_t *g_AIsurrender; +extern vmCvar_t cg_enableRandomizer; extern CNavigator navigator; extern qboolean showBBoxes; static vec3_t NPCDEBUG_BLUE = {0.0, 0.0, 1.0}; @@ -519,6 +520,213 @@ void NPC_BSSleep( void ) } extern qboolean NPC_MoveDirClear( int forwardmove, int rightmove, qboolean reset ); +//Fixes incorrect flag checks for SVF_IGNORE_ENEMIES which prevent stormtroopers from correctly aggroing +void NPC_BSFollowLeaderRandomizer(void) +{ + vec3_t vec; + float leaderDist; + visibility_t leaderVis; + int curAnim; + + if (!NPC->client->leader) + {//ok, stand guard until we find an enemy + if (NPCInfo->tempBehavior == BS_HUNT_AND_KILL) + { + NPCInfo->tempBehavior = BS_DEFAULT; + } + else + { + NPCInfo->tempBehavior = BS_STAND_GUARD; + NPC_BSStandGuard(); + } + return; + } + + if (!NPC->enemy && ~NPCInfo->scriptFlags & SVF_IGNORE_ENEMIES) //Only look for an enemy if ignore enemies is not set + {//no enemy, find one + NPC_CheckEnemy(NPCInfo->confusionTime < level.time, qfalse);//don't find new enemy if this is tempbehav + if (NPC->enemy) + {//just found one + NPCInfo->enemyCheckDebounceTime = level.time + Q_irand(3000, 10000); + } + else + { + if (!(NPCInfo->scriptFlags & SCF_IGNORE_ALERTS)) + { + int eventID = NPC_CheckAlertEvents(qtrue, qtrue); + if (level.alertEvents[eventID].level >= AEL_SUSPICIOUS && (NPCInfo->scriptFlags & SCF_LOOK_FOR_ENEMIES)) + { + NPCInfo->lastAlertID = level.alertEvents[eventID].ID; + if (!level.alertEvents[eventID].owner || + !level.alertEvents[eventID].owner->client || + level.alertEvents[eventID].owner->health <= 0 || + level.alertEvents[eventID].owner->client->playerTeam != NPC->client->enemyTeam) + {//not an enemy + } + else + { + //FIXME: what if can't actually see enemy, don't know where he is... should we make them just become very alert and start looking for him? Or just let combat AI handle this... (act as if you lost him) + G_SetEnemy(NPC, level.alertEvents[eventID].owner); + NPCInfo->enemyCheckDebounceTime = level.time + Q_irand(3000, 10000); + NPCInfo->enemyLastSeenTime = level.time; + TIMER_Set(NPC, "attackDelay", Q_irand(500, 1000)); + } + } + + } + } + if (!NPC->enemy) + { + if (NPC->client->leader + && NPC->client->leader->enemy + && NPC->client->leader->enemy != NPC + && ((NPC->client->leader->enemy->client && NPC->client->leader->enemy->client->playerTeam == NPC->client->enemyTeam) + || (NPC->client->leader->enemy->svFlags & SVF_NONNPC_ENEMY && NPC->client->leader->enemy->noDamageTeam == NPC->client->enemyTeam)) + && NPC->client->leader->enemy->health > 0) + { + G_SetEnemy(NPC, NPC->client->leader->enemy); + NPCInfo->enemyCheckDebounceTime = level.time + Q_irand(3000, 10000); + NPCInfo->enemyLastSeenTime = level.time; + } + } + } + else if (~NPCInfo->scriptFlags & SVF_IGNORE_ENEMIES) + { + if (NPC->enemy->health <= 0 || (NPC->enemy->flags & FL_NOTARGET)) + { + G_ClearEnemy(NPC); + if (NPCInfo->enemyCheckDebounceTime > level.time + 1000) + { + NPCInfo->enemyCheckDebounceTime = level.time + Q_irand(1000, 2000); + } + } + else if (NPC->client->ps.weapon && NPCInfo->enemyCheckDebounceTime < level.time) + { + NPC_CheckEnemy((NPCInfo->confusionTime < level.time || NPCInfo->tempBehavior != BS_FOLLOW_LEADER), qfalse);//don't find new enemy if this is tempbehav + } + } + + if (NPC->enemy && NPC->client->ps.weapon) + {//If have an enemy, face him and fire + if (NPC->client->ps.weapon == WP_SABER)//|| NPCInfo->confusionTime>level.time ) + {//lightsaber user or charmed enemy + if (NPCInfo->tempBehavior != BS_FOLLOW_LEADER) + {//not already in a temp bState + //go after the guy + NPCInfo->tempBehavior = BS_HUNT_AND_KILL; + NPC_UpdateAngles(qtrue, qtrue); + return; + } + } + + enemyVisibility = NPC_CheckVisibility(NPC->enemy, CHECK_FOV | CHECK_SHOOT);//CHECK_360|CHECK_PVS| + if (enemyVisibility > VIS_PVS) + {//face + vec3_t enemy_org, muzzle, delta, angleToEnemy; + float distanceToEnemy; + + CalcEntitySpot(NPC->enemy, SPOT_HEAD, enemy_org); + NPC_AimWiggle(enemy_org); + + CalcEntitySpot(NPC, SPOT_WEAPON, muzzle); + + VectorSubtract(enemy_org, muzzle, delta); + vectoangles(delta, angleToEnemy); + distanceToEnemy = VectorNormalize(delta); + + NPCInfo->desiredYaw = angleToEnemy[YAW]; + NPCInfo->desiredPitch = angleToEnemy[PITCH]; + NPC_UpdateFiringAngles(qtrue, qtrue); + + if (enemyVisibility >= VIS_SHOOT) + {//shoot + NPC_AimAdjust(2); + if (NPC_GetHFOVPercentage(NPC->enemy->currentOrigin, NPC->currentOrigin, NPC->client->ps.viewangles, NPCInfo->stats.hfov) > 0.6f + && NPC_GetHFOVPercentage(NPC->enemy->currentOrigin, NPC->currentOrigin, NPC->client->ps.viewangles, NPCInfo->stats.vfov) > 0.5f) + {//actually withing our front cone + WeaponThink(qtrue); + } + } + else + { + NPC_AimAdjust(1); + } + + //NPC_CheckCanAttack(1.0, qfalse); + } + else + { + NPC_AimAdjust(-1); + } + } + else + {//FIXME: combine with vector calc below + vec3_t head, leaderHead, delta, angleToLeader; + + CalcEntitySpot(NPC->client->leader, SPOT_HEAD, leaderHead); + CalcEntitySpot(NPC, SPOT_HEAD, head); + VectorSubtract(leaderHead, head, delta); + vectoangles(delta, angleToLeader); + VectorNormalize(delta); + NPC->NPC->desiredYaw = angleToLeader[YAW]; + NPC->NPC->desiredPitch = angleToLeader[PITCH]; + + NPC_UpdateAngles(qtrue, qtrue); + } + + //leader visible? + leaderVis = NPC_CheckVisibility(NPC->client->leader, CHECK_PVS | CHECK_360 | CHECK_SHOOT);// ent->e_UseFunc = useF_NULL; + + + //Follow leader, stay within visibility and a certain distance, maintain a distance from. + curAnim = NPC->client->ps.legsAnim; + if (curAnim != BOTH_ATTACK1 && curAnim != BOTH_ATTACK2 && curAnim != BOTH_ATTACK3 && curAnim != BOTH_MELEE1 && curAnim != BOTH_MELEE2) + {//Don't move toward leader if we're in a full-body attack anim + //FIXME, use IdealDistance to determine if we need to close distance + float followDist = 96.0f;//FIXME: If there are enmies, make this larger? + float backupdist, walkdist, minrundist; + + if (NPCInfo->followDist) + { + followDist = NPCInfo->followDist; + } + backupdist = followDist / 2.0f; + walkdist = followDist * 0.83; + minrundist = followDist * 1.33; + + VectorSubtract(NPC->client->leader->currentOrigin, NPC->currentOrigin, vec); + leaderDist = VectorLength(vec);//FIXME: make this just nav distance? + //never get within their radius horizontally + vec[2] = 0; + float leaderHDist = VectorLength(vec); + if (leaderHDist > backupdist && (leaderVis != VIS_SHOOT || leaderDist > walkdist)) + {//We should close in? + NPCInfo->goalEntity = NPC->client->leader; + + NPC_SlideMoveToGoal(); + if (leaderVis == VIS_SHOOT && leaderDist < minrundist) + { + ucmd.buttons |= BUTTON_WALKING; + } + } + else if (leaderDist < backupdist) + {//We should back off? + NPCInfo->goalEntity = NPC->client->leader; + NPC_SlideMoveToGoal(); + + //reversing direction + ucmd.forwardmove = -ucmd.forwardmove; + ucmd.rightmove = -ucmd.rightmove; + VectorScale(NPC->client->ps.moveDir, -1, NPC->client->ps.moveDir); + }//otherwise, stay where we are + //check for do not enter and stop if there's one there... + if (ucmd.forwardmove || ucmd.rightmove || VectorCompare(vec3_origin, NPC->client->ps.moveDir)) + { + NPC_MoveDirClear(ucmd.forwardmove, ucmd.rightmove, qtrue); + } + } +} + void NPC_BSFollowLeader (void) { vec3_t vec; @@ -526,6 +734,12 @@ void NPC_BSFollowLeader (void) visibility_t leaderVis; int curAnim; + if (cg_enableRandomizer.integer) + { + NPC_BSFollowLeaderRandomizer(); + return; + } + if ( !NPC->client->leader ) {//ok, stand guard until we find an enemy if( NPCInfo->tempBehavior == BS_HUNT_AND_KILL ) @@ -540,7 +754,7 @@ void NPC_BSFollowLeader (void) return; } - if ( !NPC->enemy ) + if ( !NPC->enemy && !NPCInfo->scriptFlags&SVF_IGNORE_ENEMIES) //Only look for an enemy if ignore enemies is not set {//no enemy, find one NPC_CheckEnemy( NPCInfo->confusionTimeenemy ) @@ -588,7 +802,7 @@ void NPC_BSFollowLeader (void) } } } - else + else if (!NPCInfo->scriptFlags & SVF_IGNORE_ENEMIES) { if ( NPC->enemy->health <= 0 || (NPC->enemy->flags&FL_NOTARGET) ) { diff --git a/code/game/NPC_combat.cpp b/code/game/NPC_combat.cpp index f11033df..f70b9289 100644 --- a/code/game/NPC_combat.cpp +++ b/code/game/NPC_combat.cpp @@ -18,6 +18,7 @@ extern int NAV_FindClosestWaypointForPoint( vec3_t point ); extern int NAV_GetNearestNode( gentity_t *self, int lastNode ); extern void G_CreateG2AttachedWeaponModel( gentity_t *ent, const char *weaponModel ); extern qboolean PM_DroidMelee( int npc_class ); +extern vmCvar_t cg_enableRandomizer; extern CNavigator navigator; @@ -353,6 +354,10 @@ void G_SetEnemy( gentity_t *self, gentity_t *enemy ) #ifdef _DEBUG if ( self->s.number ) { + //Debug convenience, this doesn't change anything in FinalBuild but prevents popups when debugging + if (cg_enableRandomizer.integer && enemy == self) { + return; + } assert( enemy != self ); } #endif// _DEBUG @@ -1827,7 +1832,12 @@ gentity_t *NPC_CheckEnemy( qboolean findNew, qboolean tooFarOk, qboolean setEnem if ( NPC->enemy ) { - if ( !NPC->enemy->inuse )//|| NPC->enemy == NPC )//wtf? NPCs should never get mad at themselves! + //If we're targeting a neutral character (e.g. player during artus_detention officer escort) - don't + //Amber TODO: We still get aggro'd to here, annoying + if (cg_enableRandomizer.integer && NPC->enemy->client && NPC->enemy->client->playerTeam == TEAM_NEUTRAL) + { + G_ClearEnemy(NPC); + } else if ( !NPC->enemy->inuse )//|| NPC->enemy == NPC )//wtf? NPCs should never get mad at themselves! { if ( setEnemy ) { diff --git a/code/game/NPC_reactions.cpp b/code/game/NPC_reactions.cpp index c1da586a..27faafcc 100644 --- a/code/game/NPC_reactions.cpp +++ b/code/game/NPC_reactions.cpp @@ -34,6 +34,7 @@ extern qboolean PM_RollingAnim( int anim ); extern qboolean PM_InCartwheel( int anim ); extern cvar_t *g_spskill; +extern vmCvar_t cg_enableRandomizer; extern int teamLastEnemyTime[]; extern qboolean stop_icarus; extern int killPlayerTimer; @@ -545,11 +546,18 @@ void NPC_Touch(gentity_t *self, gentity_t *other, trace_t *trace) } if ( keyTaken ) {//remove my key - gi.G2API_SetSurfaceOnOff( &self->ghoul2[self->playerModel], "l_arm_key", 0x00000002 ); - self->message = NULL; - //FIXME: temp pickup sound - G_Sound( player, G_SoundIndex( "sound/weapons/key_pkup.wav" ) ); - //FIXME: need some event to pass to cgame for sound/graphic/message? + if (cg_enableRandomizer.integer && self->playerModel == -1) { + //Some NPCs do not leave a model behind after death - so don't try to remove it + self->message = NULL; + G_Sound(player, G_SoundIndex("sound/weapons/key_pkup.wav")); + } + else { + gi.G2API_SetSurfaceOnOff(&self->ghoul2[self->playerModel], "l_arm_key", 0x00000002); + self->message = NULL; + //FIXME: temp pickup sound + G_Sound(player, G_SoundIndex("sound/weapons/key_pkup.wav")); + //FIXME: need some event to pass to cgame for sound/graphic/message? + } } //FIXME: temp message gi.SendServerCommand( NULL, text ); diff --git a/code/game/NPC_spawn.cpp b/code/game/NPC_spawn.cpp index e24ff1ec..d27384aa 100644 --- a/code/game/NPC_spawn.cpp +++ b/code/game/NPC_spawn.cpp @@ -13,6 +13,7 @@ #include "g_functions.h" #include "g_icarus.h" #include "wp_saber.h" +#include "..\randomizer\RandomizerUtils.h" extern cvar_t *g_sex; @@ -59,6 +60,18 @@ extern void NPC_GalakMech_Init( gentity_t *ent ); extern void NPC_Protocol_Precache( void ); extern int WP_SetSaberModel( gclient_t *client, class_t npcClass ); +// Randomizer +extern vmCvar_t cg_enableRandomizer; +extern vmCvar_t cg_enableRandomizerEnhancements; +extern vmCvar_t cg_useSetSeed; +extern vmCvar_t cg_setSeed; +extern mt19937 rngRandoBase; +extern mt19937 rngRandoEnhancements; +extern vmCvar_t cg_enableRandNPCSpeed; +extern vmCvar_t cg_enableSafeStart; +extern vmCvar_t cg_bonusJanHealth; +extern vmCvar_t cg_enableRandNpcHealth; + #define NSF_DROP_TO_FLOOR 16 @@ -164,15 +177,220 @@ touchFunc_t NPC_TouchFunc( gentity_t *ent ) return touchF_NPC_Touch; } +extern void G_CreateG2AttachedWeaponModel(gentity_t* ent, const char* weaponModel); +//Easier to break this into another function as I refactored a bit to make it cleaner +void NPC_SetMiscDefaultDataRandomizer(gentity_t* ent) +{ + //Set sleep behaviour state for two starting stormtroopers so other enemies spawned in their place don't instantly aggro + if (cg_enableRandomizerEnhancements.integer && cg_enableSafeStart.integer && !Q_stricmp(level.mapname, "kejim_post") && ent->targetname && !Q_strncmp(ent->targetname, "st_guard", 8)) { + ent->NPC->behaviorState = BS_SLEEP; + } + + if (ent->spawnflags & SFB_CINEMATIC) + {//if a cinematic guy, default us to wait bState + ent->NPC->behaviorState = BS_CINEMATIC; + } + switch (ent->client->playerTeam) { + case TEAM_PLAYER: + ent->client->enemyTeam = TEAM_ENEMY; + break; + case TEAM_ENEMY: + ent->client->enemyTeam = TEAM_PLAYER; + break; + default: //TODO: AMBER Figure out how to handle this properly + ent->client->enemyTeam = TEAM_FREE; + } + //***I'm not sure whether I should leave this as a TEAM_ switch, I think NPC_class may be more appropriate - dmv + //Amber - whoever dmv is they're right, this should be based on class + switch (ent->client->NPC_class) { + case CLASS_SEEKER: + ent->NPC->defaultBehavior = BS_DEFAULT; + ent->client->ps.gravity = 0; + ent->svFlags |= SVF_CUSTOM_GRAVITY; + ent->NPC->stats.moveType = MT_FLYSWIM; + ent->count = 30; // SEEKER shot ammo count + return; + case CLASS_PROBE: + case CLASS_REMOTE: + case CLASS_INTERROGATOR: + case CLASS_SENTRY: + ent->NPC->defaultBehavior = BS_DEFAULT; + ent->client->ps.gravity = 0; + ent->svFlags |= SVF_CUSTOM_GRAVITY; + ent->NPC->stats.moveType = MT_FLYSWIM; + break; + case CLASS_JEDI: + case CLASS_LUKE: + case CLASS_TAVION: + case CLASS_REBORN: + case CLASS_DESANN: + case CLASS_SHADOWTROOPER: + //All saber wielders + ent->client->ps.saberActive = qfalse; + ent->client->ps.saberLength = 0; + WP_SaberInitBladeData(ent); + G_CreateG2AttachedWeaponModel(ent, ent->client->ps.saberModel); + //ent->client->enemyTeam = TEAM_ENEMY; + WP_InitForcePowers(ent); + Jedi_ClearTimers(ent); + if (ent->spawnflags & JSF_AMBUSH) + {//ambusher + ent->NPC->scriptFlags |= SCF_IGNORE_ALERTS; + ent->client->noclip = qtrue;//hang + } + break; + case CLASS_GONK: + // I guess we generically make them player usable + ent->svFlags |= SVF_PLAYER_USABLE; + + // Not even sure if we want to give different levels of batteries? ...Or even that these are the values we'd want to use. + switch (g_spskill->integer) + { + case 0: // EASY + ent->client->ps.batteryCharge = MAX_BATTERIES * 0.8f; + break; + case 1: // MEDIUM + ent->client->ps.batteryCharge = MAX_BATTERIES * 0.75f; + break; + default: + case 2: // HARD + ent->client->ps.batteryCharge = MAX_BATTERIES * 0.5f; + break; + } + break; + case CLASS_R2D2: // No weapons for astromech droids please + case CLASS_R5D2: + break; + default: + if (ent->client->ps.weapon != WP_NONE) + { + G_CreateG2AttachedWeaponModel(ent, weaponData[ent->client->ps.weapon].weaponMdl); + } + if (RandomizerUtils::GetClassTeamByClass(ent->client->NPC_class) == TEAM_PLAYER) //Any other NPCs which would normally be friendsly + { + switch (ent->client->ps.weapon) + { + case WP_BRYAR_PISTOL://FIXME: new weapon: imp blaster pistol + case WP_BLASTER_PISTOL: + case WP_DISRUPTOR: + case WP_BOWCASTER: + case WP_REPEATER: + case WP_DEMP2: + case WP_FLECHETTE: + case WP_ROCKET_LAUNCHER: + default: + break; + case WP_THERMAL: + case WP_BLASTER: + //FIXME: health in NPCs.cfg, and not all blaster users are stormtroopers + //ent->health = 25; + //FIXME: not necc. a ST + ST_ClearTimers(ent); + if (ent->NPC->rank >= RANK_LT || ent->client->ps.weapon == WP_THERMAL) + {//officers, grenade-throwers use alt-fire + //ent->health = 50; + ent->NPC->scriptFlags |= SCF_ALT_FIRE; + } + break; + } + } + else if (RandomizerUtils::GetClassTeamByClass(ent->client->NPC_class) == TEAM_ENEMY) { //Any other NPCs which would normally be enemies + { + ent->NPC->defaultBehavior = BS_DEFAULT; + if (ent->client->NPC_class == CLASS_SHADOWTROOPER) + {//FIXME: a spawnflag? + Jedi_Cloak(ent); + } + + G_CreateG2AttachedWeaponModel(ent, weaponData[ent->client->ps.weapon].weaponMdl); + switch (ent->client->ps.weapon) + { + case WP_BRYAR_PISTOL: + break; + case WP_BLASTER_PISTOL: + break; + case WP_DISRUPTOR: + //Sniper + ent->NPC->scriptFlags |= SCF_ALT_FIRE;//FIXME: use primary fire sometimes? Up close? Different class of NPC? + break; + case WP_BOWCASTER: + break; + case WP_REPEATER: + //machine-gunner + break; + case WP_DEMP2: + break; + case WP_FLECHETTE: + //shotgunner + if (!Q_stricmp("stofficeralt", ent->NPC_type)) + { + ent->NPC->scriptFlags |= SCF_ALT_FIRE; + } + break; + case WP_ROCKET_LAUNCHER: + break; + case WP_THERMAL: + //Gran, use main, bouncy fire +// ent->NPC->scriptFlags |= SCF_ALT_FIRE; + break; + case WP_MELEE: + break; + default: + case WP_BLASTER: + //FIXME: health in NPCs.cfg, and not all blaster users are stormtroopers + //FIXME: not necc. a ST + ST_ClearTimers(ent); + if (ent->NPC->rank >= RANK_COMMANDER) + {//commanders use alt-fire + ent->NPC->scriptFlags |= SCF_ALT_FIRE; + } + if (!Q_stricmp("rodian2", ent->NPC_type)) + { + ent->NPC->scriptFlags |= SCF_ALT_FIRE; + } + break; + } + if (!Q_stricmp("galak_mech", ent->NPC_type)) + {//starts with armor + NPC_GalakMech_Init(ent); + } + } + + } + + //Extra stuff for cinematic chars and behaviour set for friendly NPCS + if (ent->client->NPC_class == CLASS_KYLE || (ent->spawnflags & SFB_CINEMATIC)) + { + ent->NPC->defaultBehavior = BS_CINEMATIC; + } + else if (ent->client->playerTeam == TEAM_PLAYER) + { + ent->NPC->defaultBehavior = BS_FOLLOW_LEADER; + ent->client->leader = &g_entities[0]; + } + + //Shields for ATSTs/Mark1s + if (ent->client->NPC_class == CLASS_ATST || ent->client->NPC_class == CLASS_MARK1) // chris/steve/kevin requested that the mark1 be shielded also + { + ent->flags |= (FL_SHIELDED | FL_NO_KNOCKBACK); + } + } +} + /* ------------------------- NPC_SetMiscDefaultData ------------------------- */ -extern void G_CreateG2AttachedWeaponModel( gentity_t *ent, const char *weaponModel ); -void NPC_SetMiscDefaultData( gentity_t *ent ) +void NPC_SetMiscDefaultData(gentity_t* ent) { + if (cg_enableRandomizer.integer) + { + NPC_SetMiscDefaultDataRandomizer(ent); + return; + } + if ( ent->spawnflags & SFB_CINEMATIC ) {//if a cinematic guy, default us to wait bState ent->NPC->behaviorState = BS_CINEMATIC; @@ -274,104 +492,104 @@ void NPC_SetMiscDefaultData( gentity_t *ent ) break; case TEAM_ENEMY: + { + ent->NPC->defaultBehavior = BS_DEFAULT; + if (ent->client->NPC_class == CLASS_SHADOWTROOPER) + {//FIXME: a spawnflag? + Jedi_Cloak(ent); + } + if (ent->client->NPC_class == CLASS_TAVION || + ent->client->NPC_class == CLASS_REBORN || + ent->client->NPC_class == CLASS_DESANN || + ent->client->NPC_class == CLASS_SHADOWTROOPER) { - ent->NPC->defaultBehavior = BS_DEFAULT; - if ( ent->client->NPC_class == CLASS_SHADOWTROOPER ) - {//FIXME: a spawnflag? - Jedi_Cloak( ent ); - } - if( ent->client->NPC_class == CLASS_TAVION || - ent->client->NPC_class == CLASS_REBORN || - ent->client->NPC_class == CLASS_DESANN || - ent->client->NPC_class == CLASS_SHADOWTROOPER ) - { - ent->client->ps.saberActive = qfalse; - ent->client->ps.saberLength = 0; - WP_SaberInitBladeData( ent ); - G_CreateG2AttachedWeaponModel( ent, ent->client->ps.saberModel ); - WP_InitForcePowers( ent ); - ent->client->enemyTeam = TEAM_PLAYER; - Jedi_ClearTimers( ent ); - if ( ent->spawnflags & JSF_AMBUSH ) - {//ambusher - ent->NPC->scriptFlags |= SCF_IGNORE_ALERTS; - ent->client->noclip = qtrue;//hang - } - } - else if( ent->client->NPC_class == CLASS_PROBE || ent->client->NPC_class == CLASS_REMOTE || - ent->client->NPC_class == CLASS_INTERROGATOR || ent->client->NPC_class == CLASS_SENTRY) - { - ent->NPC->defaultBehavior = BS_DEFAULT; - ent->client->ps.gravity = 0; - ent->svFlags |= SVF_CUSTOM_GRAVITY; - ent->NPC->stats.moveType = MT_FLYSWIM; + ent->client->ps.saberActive = qfalse; + ent->client->ps.saberLength = 0; + WP_SaberInitBladeData(ent); + G_CreateG2AttachedWeaponModel(ent, ent->client->ps.saberModel); + WP_InitForcePowers(ent); + ent->client->enemyTeam = TEAM_PLAYER; + Jedi_ClearTimers(ent); + if (ent->spawnflags & JSF_AMBUSH) + {//ambusher + ent->NPC->scriptFlags |= SCF_IGNORE_ALERTS; + ent->client->noclip = qtrue;//hang } - else + } + else if (ent->client->NPC_class == CLASS_PROBE || ent->client->NPC_class == CLASS_REMOTE || + ent->client->NPC_class == CLASS_INTERROGATOR || ent->client->NPC_class == CLASS_SENTRY) + { + ent->NPC->defaultBehavior = BS_DEFAULT; + ent->client->ps.gravity = 0; + ent->svFlags |= SVF_CUSTOM_GRAVITY; + ent->NPC->stats.moveType = MT_FLYSWIM; + } + else + { + G_CreateG2AttachedWeaponModel(ent, weaponData[ent->client->ps.weapon].weaponMdl); + switch (ent->client->ps.weapon) { - G_CreateG2AttachedWeaponModel( ent, weaponData[ent->client->ps.weapon].weaponMdl ); - switch ( ent->client->ps.weapon ) + case WP_BRYAR_PISTOL: + break; + case WP_BLASTER_PISTOL: + break; + case WP_DISRUPTOR: + //Sniper + ent->NPC->scriptFlags |= SCF_ALT_FIRE;//FIXME: use primary fire sometimes? Up close? Different class of NPC? + break; + case WP_BOWCASTER: + break; + case WP_REPEATER: + //machine-gunner + break; + case WP_DEMP2: + break; + case WP_FLECHETTE: + //shotgunner + if (!Q_stricmp("stofficeralt", ent->NPC_type)) { - case WP_BRYAR_PISTOL: - break; - case WP_BLASTER_PISTOL: - break; - case WP_DISRUPTOR: - //Sniper - ent->NPC->scriptFlags |= SCF_ALT_FIRE;//FIXME: use primary fire sometimes? Up close? Different class of NPC? - break; - case WP_BOWCASTER: - break; - case WP_REPEATER: - //machine-gunner - break; - case WP_DEMP2: - break; - case WP_FLECHETTE: - //shotgunner - if ( !Q_stricmp( "stofficeralt", ent->NPC_type ) ) - { - ent->NPC->scriptFlags |= SCF_ALT_FIRE; - } - break; - case WP_ROCKET_LAUNCHER: - break; - case WP_THERMAL: - //Gran, use main, bouncy fire + ent->NPC->scriptFlags |= SCF_ALT_FIRE; + } + break; + case WP_ROCKET_LAUNCHER: + break; + case WP_THERMAL: + //Gran, use main, bouncy fire // ent->NPC->scriptFlags |= SCF_ALT_FIRE; - break; - case WP_MELEE: - break; - default: - case WP_BLASTER: - //FIXME: health in NPCs.cfg, and not all blaster users are stormtroopers - //FIXME: not necc. a ST - ST_ClearTimers( ent ); - if ( ent->NPC->rank >= RANK_COMMANDER ) - {//commanders use alt-fire - ent->NPC->scriptFlags |= SCF_ALT_FIRE; - } - if ( !Q_stricmp( "rodian2", ent->NPC_type ) ) - { - ent->NPC->scriptFlags |= SCF_ALT_FIRE; - } - break; + break; + case WP_MELEE: + break; + default: + case WP_BLASTER: + //FIXME: health in NPCs.cfg, and not all blaster users are stormtroopers + //FIXME: not necc. a ST + ST_ClearTimers(ent); + if (ent->NPC->rank >= RANK_COMMANDER) + {//commanders use alt-fire + ent->NPC->scriptFlags |= SCF_ALT_FIRE; } - if ( !Q_stricmp( "galak_mech", ent->NPC_type ) ) - {//starts with armor - NPC_GalakMech_Init( ent ); + if (!Q_stricmp("rodian2", ent->NPC_type)) + { + ent->NPC->scriptFlags |= SCF_ALT_FIRE; } + break; + } + if (!Q_stricmp("galak_mech", ent->NPC_type)) + {//starts with armor + NPC_GalakMech_Init(ent); } } - break; + } + break; default: break; } - if ( ent->client->NPC_class == CLASS_ATST || ent->client->NPC_class == CLASS_MARK1 ) // chris/steve/kevin requested that the mark1 be shielded also + if (ent->client->NPC_class == CLASS_ATST || ent->client->NPC_class == CLASS_MARK1) // chris/steve/kevin requested that the mark1 be shielded also { - ent->flags |= (FL_SHIELDED|FL_NO_KNOCKBACK); + ent->flags |= (FL_SHIELDED | FL_NO_KNOCKBACK); } } @@ -380,47 +598,236 @@ void NPC_SetMiscDefaultData( gentity_t *ent ) NPC_WeaponsForTeam ------------------------- */ - -int NPC_WeaponsForTeam( team_t team, int spawnflags, const char *NPC_type ) +int NPC_WeaponsForTeamRandomizer(team_t team, int spawnflags, const char* NPC_type) { //*** not sure how to handle this, should I pass in class instead of team and go from there? - dmv - switch(team) - { - // no longer exists -// case TEAM_BORG: -// break; - -// case TEAM_HIROGEN: -// if( Q_stricmp( "hirogenalpha", NPC_type ) == 0 ) -// return ( 1 << WP_BLASTER); - //Falls through - -// case TEAM_KLINGON: - - //NOTENOTE: Falls through - -// case TEAM_IMPERIAL: - case TEAM_ENEMY: - if ( Q_stricmp( "tavion", NPC_type ) == 0 || - Q_strncmp( "reborn", NPC_type, 6 ) == 0 || - Q_stricmp( "desann", NPC_type ) == 0 || - Q_strncmp( "shadowtrooper", NPC_type, 13 ) == 0 ) - return ( 1 << WP_SABER); -// return ( 1 << WP_IMPERIAL_BLADE); - //NOTENOTE: Falls through if not a knife user + //Amber - damn this dmv person was onto things -// case TEAM_SCAVENGERS: -// case TEAM_MALON: - //FIXME: default weapon in npc config? - if ( Q_strncmp( "stofficer", NPC_type, 9 ) == 0 ) + //TODO: Game has these exceptions built in for when certain NPCs are neutral - how to handle? Preserved for now + if (team == TEAM_NEUTRAL) + { + if (Q_stricmp("mark1", NPC_type) == 0) { - return ( 1 << WP_FLECHETTE); + return WP_NONE; } - if ( Q_stricmp( "stcommander", NPC_type ) == 0 ) + if (Q_stricmp("mark2", NPC_type) == 0) { - return ( 1 << WP_REPEATER); + return WP_NONE; } - if ( Q_stricmp( "swamptrooper", NPC_type ) == 0 ) + if (Q_strncmp("ugnaught", NPC_type, 8) == 0) + { + return WP_NONE; + } + if (Q_stricmp("bartender", NPC_type) == 0) + { + return WP_NONE; + } + if (Q_stricmp("morgankatarn", NPC_type) == 0) + { + return WP_NONE; + } + } + + //All Saber Wielders + if (Q_stricmp("tavion", NPC_type) == 0 || + Q_strncmp("reborn", NPC_type, 6) == 0 || + Q_stricmp("desann", NPC_type) == 0 || + Q_strncmp("shadowtrooper", NPC_type, 13) == 0 || + Q_strncmp("jedi", NPC_type, 4) == 0 || + Q_stricmp("luke", NPC_type) == 0) + return (1 << WP_SABER); + + /* + * Okay decision time here. If we ever spawn a non-neutral NPC with no weapon, it will try to set up a saber for them and the game will crash. + * For now, commented out all blocks here with WP_NONE so they fall into the default blaster block. We can have it just not try to set up + * a weapon for NPCs with weapon none if we want to give up being shot at by ugnaughts, droids etc. We could also assign random weapons + * (personally I wanna see someone get shotgunned down by C3PO) + */ + if (Q_strncmp("stofficer", NPC_type, 9) == 0) + { + return (1 << WP_FLECHETTE); + } + if (Q_stricmp("stcommander", NPC_type) == 0) + { + return (1 << WP_REPEATER); + } + if (Q_stricmp("swamptrooper", NPC_type) == 0) + { + return (1 << WP_FLECHETTE); + } + if (Q_stricmp("swamptrooper2", NPC_type) == 0) + { + return (1 << WP_REPEATER); + } + if (Q_stricmp("rockettrooper", NPC_type) == 0) + { + return (1 << WP_ROCKET_LAUNCHER); + } + if (Q_strncmp("shadowtrooper", NPC_type, 13) == 0) + { + return (1 << WP_SABER);//|( 1 << WP_RAPID_CONCUSSION)? + } + if (Q_stricmp("imperial", NPC_type) == 0) + { + return (1 << WP_BLASTER_PISTOL); + } + if (Q_strncmp("impworker", NPC_type, 9) == 0) + { + return (1 << WP_BLASTER_PISTOL); + } + if (Q_stricmp("stormpilot", NPC_type) == 0) + { + return (1 << WP_BLASTER_PISTOL); + } + if (Q_stricmp("galak", NPC_type) == 0) + { + return (1 << WP_BLASTER); + } + if (Q_stricmp("galak_mech", NPC_type) == 0) + { + return (1 << WP_REPEATER); + } + //if (Q_strncmp("ugnaught", NPC_type, 8) == 0) + //{ + // return WP_NONE; + //} + if (Q_stricmp("granshooter", NPC_type) == 0) + { + return (1 << WP_BLASTER); + } + if (Q_stricmp("granboxer", NPC_type) == 0) + { + return (1 << WP_MELEE); + } + if (Q_strncmp("gran", NPC_type, 4) == 0) + { + return ((1 << WP_THERMAL) | (1 << WP_MELEE)); + } + if (Q_stricmp("rodian", NPC_type) == 0) + { + return (1 << WP_DISRUPTOR); + } + if (Q_stricmp("rodian2", NPC_type) == 0) + { + return (1 << WP_BLASTER); + } + if ((Q_stricmp("interrogator", NPC_type) == 0) || (Q_stricmp("sentry", NPC_type) == 0)) + { + return WP_NONE; + } + if (Q_strncmp("weequay", NPC_type, 7) == 0) + { + return (1 << WP_BOWCASTER);//|( 1 << WP_STAFF )(FIXME: new weap?) + } + if (Q_stricmp("impofficer", NPC_type) == 0) + { + return (1 << WP_BLASTER); + } + if (Q_stricmp("impcommander", NPC_type) == 0) + { + return (1 << WP_BLASTER); + } + if ((Q_stricmp("probe", NPC_type) == 0) || (Q_stricmp("seeker", NPC_type) == 0)) + { + return (1 << WP_BOT_LASER); + } + if (Q_stricmp("remote", NPC_type) == 0) + { + return (1 << WP_BOT_LASER); + } + if (Q_stricmp("trandoshan", NPC_type) == 0) + { + return (1 << WP_REPEATER); + } + if (Q_stricmp("atst", NPC_type) == 0) + { + return ((1 << WP_ATST_MAIN) | (1 << WP_ATST_SIDE)); + } + if (Q_stricmp("mark1", NPC_type) == 0) + { + return (1 << WP_BOT_LASER); + } + if (Q_stricmp("mark2", NPC_type) == 0) + { + return (1 << WP_BOT_LASER); + } + if (Q_stricmp("minemonster", NPC_type) == 0) + { + return ((1 << WP_MELEE)); + } + if (Q_stricmp("howler", NPC_type) == 0) + { + return ((1 << WP_MELEE)); + } + //if (Q_strncmp("prisoner", NPC_type, 8) == 0) + //{ + // return WP_NONE; + //} + if (Q_strncmp("bespincop", NPC_type, 9) == 0) + { + return (1 << WP_BLASTER_PISTOL); + } + //if (Q_stricmp("MonMothma", NPC_type) == 0) + //{ + // return WP_NONE; + //} + if (!Q_stricmp("protocol", NPC_type)) { + return 1 << WP_STUN_BATON; + } + if (spawnflags & SFB_RIFLEMAN) + return (1 << WP_REPEATER); + + if (spawnflags & SFB_PHASER) + return (1 << WP_BLASTER_PISTOL); + + //Still default to blaster if we're not explicitly set (Stormtroopers, rebels) + return (1 << WP_BLASTER); //We might be giving droids (R2, R4, Protocol) blasters here, should we keep? +} + +int NPC_WeaponsForTeam( team_t team, int spawnflags, const char *NPC_type ) +{ + if (cg_enableRandomizer.integer) + { + return NPC_WeaponsForTeamRandomizer(team, spawnflags, NPC_type); + } + //*** not sure how to handle this, should I pass in class instead of team and go from there? - dmv + switch(team) + { + // no longer exists +// case TEAM_BORG: +// break; + +// case TEAM_HIROGEN: +// if( Q_stricmp( "hirogenalpha", NPC_type ) == 0 ) +// return ( 1 << WP_BLASTER); + //Falls through + +// case TEAM_KLINGON: + + //NOTENOTE: Falls through + +// case TEAM_IMPERIAL: + case TEAM_ENEMY: + if ( Q_stricmp( "tavion", NPC_type ) == 0 || + Q_strncmp( "reborn", NPC_type, 6 ) == 0 || + Q_stricmp( "desann", NPC_type ) == 0 || + Q_strncmp( "shadowtrooper", NPC_type, 13 ) == 0 ) + return ( 1 << WP_SABER); +// return ( 1 << WP_IMPERIAL_BLADE); + //NOTENOTE: Falls through if not a knife user + +// case TEAM_SCAVENGERS: +// case TEAM_MALON: + //FIXME: default weapon in npc config? + if ( Q_strncmp( "stofficer", NPC_type, 9 ) == 0 ) + { + return ( 1 << WP_FLECHETTE); + } + if ( Q_stricmp( "stcommander", NPC_type ) == 0 ) + { + return ( 1 << WP_REPEATER); + } + if ( Q_stricmp( "swamptrooper", NPC_type ) == 0 ) { return ( 1 << WP_FLECHETTE); } @@ -1014,6 +1421,26 @@ void NPC_Begin (gentity_t *ent) ent->nextthink = level.time + FRAMETIME + Q_irand(0, 100); NPC_SetMiscDefaultData( ent ); + // Bump up Jan's max health a little - give her random health for her too, with higher base pool it will be more leniant + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer && cg_bonusJanHealth.integer && !Q_stricmp(level.mapname, "kejim_post") && ent->targetname && !Q_stricmp(ent->targetname, "jan")) { + ent->max_health += 50; + } + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer && cg_enableRandNpcHealth.integer) // Encapsulate max hp changes + { + if (ent->max_health) { + uniform_real_distribution NPC_HP_Dist(25, 400); + float rng = NPC_HP_Dist(rngRandoEnhancements) / 100; //Get a multiplier value between 0.25 and 4 + ent->max_health = (int)((float)ent->max_health * rng); //Result gets rounded when converted back to int so nothing explodes + } + } + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer && cg_enableRandNPCSpeed.integer) + { + uniform_real_distribution NPC_Speed_Dist(33, 300); + float rng = NPC_Speed_Dist(rngRandoEnhancements) / 100; //Get a multiplier value between 0.33 and 3 + ent->NPC->stats.runSpeed = (int)((float)ent->NPC->stats.runSpeed * rng); + ent->NPC->stats.walkSpeed = (int)((float)ent->NPC->stats.walkSpeed * rng); + ent->NPC->stats.yawSpeed = (int)((float)ent->NPC->stats.yawSpeed * rng); + } if ( ent->health <= 0 ) { //ORIGINAL ID: health will count down towards max_health @@ -1293,6 +1720,14 @@ void NPC_Spawn_Go( gentity_t *ent ) newent->classname = "NPC"; // newent->svFlags |= SVF_NOPUSH; } + else if (cg_enableRandomizer.integer) { + if (!Q_stricmp("protocol_imp", ent->NPC_type)) { + //Imperial protocol droids share a class with C3PO but should be enemy team + newent->client->playerTeam = TEAM_ENEMY; + } else { + newent->client->playerTeam = RandomizerUtils::GetClassTeamByClassname(ent->classname); + } + } } //===================================================================== //set the info we want @@ -2636,9 +3071,15 @@ Seeker Droid - floating round droids that shadow troopers spawn */ void SP_NPC_Droid_Seeker( gentity_t *self) { + //Just spawn the other kind if it should be an enemy + if (cg_enableRandomizer.integer && RandomizerUtils::GetClassTeamByClassname(self->classname) == TEAM_ENEMY) { + SP_NPC_Droid_Remote(self); + return; + } + self->NPC_type = "seeker"; - SP_NPC_spawner( self ); + SP_NPC_spawner(self); NPC_Seeker_Precache(); } @@ -2783,6 +3224,1101 @@ void SP_NPC_Droid_Protocol( gentity_t *self) NPC_Protocol_Precache(); } +// Randomizer +// The 'Posto' is for faster search so I know what I edited +const short tabSize = 50; +short tabLockedInNPC[tabSize] = { -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1 }; +short currentTabPosition = 0; +char lastKnownMap[32] = "first_iteration"; + +void MapChanged() +{ + //Reset NPCs when changing maps + for (int i = 0; i < tabSize; i++) + { + tabLockedInNPC[i] = -1; + } + currentTabPosition = 0; +} + +void CheckIfMapChanged() +{ + if (strcmp(lastKnownMap, level.mapname) != 0) + { + strcpy(lastKnownMap, level.mapname); + MapChanged(); + } +} +bool IsRNGInTab(int source) +{ + for (int i = 0; i < tabSize; i++) + { + if (tabLockedInNPC[i] == source) return 1; + } + return 0; +} +bool IsThereDuplicateInTab(int source) +{ + for (int i = 0; i < tabSize; i++) + { + if (tabLockedInNPC[i] == source) return 1; + } + return 0; +} +void PopulateNPCTab(int source) +{ + if (!IsThereDuplicateInTab(source)) // Safe measure to not corrupt lastKnownMap + { + tabLockedInNPC[currentTabPosition] = source; + currentTabPosition++; + } +} +char* GetNPCNames(int source) +{ + switch (source) + { + case 0: + return "Kyle"; + case 1: + return "Lando"; + case 2: + return "Jan"; + case 3: + return "Luke"; + case 4: + return "MonMothma"; + case 5: + return "Tavion"; + case 6: + return "Reelo"; + case 7: + return "Galak"; + case 8: + return "Desann"; + case 9: + return "Bartender"; + case 10: + return "Morgan"; + case 11: + return "Jedi"; + case 12: + return "Prisoner"; + case 13: + return "Rebel"; + case 14: + return "StormTrooper"; + case 15: + return "StormTrooperOfficier"; + case 16: + return "TiePilot"; + case 17: + return "Ugnaught"; + case 18: + return "Gran"; + case 19: + return "Rodian"; + case 20: + return "Weequay"; + case 21: + return "Trandoshan"; + case 22: + return "SwampTrooper"; + case 23: + return "Imperial"; + case 24: + return "ImpWorker"; + case 25: + return "BespinCop"; + case 26: + return "Reborn"; + case 27: + return "ShadowTrooper"; + case 28: // This entity doesn't work, retry + return "UNKNOWN"; + case 29: // This entity doesn't work, retry + return "UNKNOWN"; + case 30: // This entity doesn't work, retry + return "UNKNOWN"; + case 31: + return "MineMonster"; + case 32: // This entity doesn't work, retry + return "UNKNOWN"; + case 33: // This entity doesn't work, retry + return "UNKNOWN"; + case 34: // This entity doesn't work, retry + return "UNKNOWN"; + case 35: // This entity doesn't work, retry + return "UNKNOWN"; + case 36: // This entity doesn't work, retry + return "UNKNOWN"; + case 37: + return "DroidInterrogator"; + case 38: + return "DroidProbe"; + case 39: + return "DroidMark1"; // Chicken Robot + case 40: + return "DroidMark2"; // Small bot (found in comms) + case 41: // Attention + return "ATST"; + case 42: + return "DroidSeeker"; + case 43: + return "DroidRemote"; + case 44: + return "DroidSentry"; + case 45: + return "DroidGonk"; + case 46: + return "DroidMouse"; + case 47: + return "DroidR2D2"; + case 48: + return "DroidR5D2"; + case 49: + return "DroidProtocol"; + break; + default: // Secours + return "UNKONWN"; + } +} + +void SP_NPC_Spawn_Random(gentity_t* self) +{ + // Pas besoin de srand puisqu'il est call déjà sur g_main.cpp (???????) + uniform_int_distribution NPCDist(0, 49); + int rng = NPCDist(rngRandoBase); + //int rng = rand() % 50 ; + + // Idée d'Amber : limiter le nombre de NPC plutôt que de modifier d'autres valeurs in game qui peuvent potentiellement faire crash le jeu. + // Du coup, tableau de 10 emplacements déclaré plus haut afin de faire mes tests. + + //string messageToWrite = "Random NPC Spawn, number generated is : "+std::to_string(rng)+"\n"; + //gi.Printf(S_COLOR_YELLOW,messageToWrite.c_str()); // We can't catch that, too much logging between that and the moment we have access to the console. + + // Case : We have a duplicate in our locking NPC array, and we want to have different NPCs + // This can be commented if in the future we find a way to have any kind of NPC to spawn without restiction + while (IsThereDuplicateInTab(rng) && currentTabPosition!=tabSize && tabSize!=50) + { + int rng = NPCDist(rngRandoBase); + } + + // Let's suppose we find a way to have any kind of NPC, we can authorize anything in our big array, so that we don't have to change "much" of the code. + if (tabSize == 50) + { + for (int i = 0; i < tabSize; i++) tabLockedInNPC[i] = i; + } + + + // Case : We already have 10 NPC loaded, so we want to roll one of them. This can take time, but only during a map load. + while ((currentTabPosition == tabSize && !IsRNGInTab(rng))) + { + int rng = NPCDist(rngRandoBase); + } + + switch (rng) + { + case 0: + SP_NPC_Kyle(self); + PopulateNPCTab(rng); + break; + case 1: + SP_NPC_Lando(self); + PopulateNPCTab(rng); + break; + case 2: + SP_NPC_Jan(self); + PopulateNPCTab(rng); + break; + case 3: + SP_NPC_Luke(self); + PopulateNPCTab(rng); + break; + case 4: // Elle a une IA au moins ? + SP_NPC_MonMothma(self); + PopulateNPCTab(rng); + break; + case 5: // Desann and Tavion are too hard to handle, but they should behave now + SP_NPC_Tavion(self); + PopulateNPCTab(rng); + //SP_NPC_Spawn_Random(self); + break; + case 6: // Il a une IA au moins ? + SP_NPC_Reelo(self); + PopulateNPCTab(rng); + break; + case 7: + SP_NPC_Galak(self); + PopulateNPCTab(rng); + break; + case 8: // Desann and Tavion are too hard to handle, but they should behave now + SP_NPC_Desann(self); + PopulateNPCTab(rng); + //SP_NPC_Spawn_Random(self); + break; + case 9: // Il a une IA au moins ? + SP_NPC_Bartender(self); + PopulateNPCTab(rng); + break; + case 10: + SP_NPC_MorganKatarn(self); + PopulateNPCTab(rng); + break; + case 11: + SP_NPC_Jedi(self); + PopulateNPCTab(rng); + break; + case 12: + SP_NPC_Prisoner(self); + PopulateNPCTab(rng); + break; + case 13: + SP_NPC_Rebel(self); + PopulateNPCTab(rng); + break; + case 14: // Le classique + SP_NPC_Stormtrooper(self); + PopulateNPCTab(rng); + break; + case 15: + SP_NPC_StormtrooperOfficer(self); + PopulateNPCTab(rng); + break; + case 16: + SP_NPC_Tie_Pilot(self); + PopulateNPCTab(rng); + break; + case 17: // C'est qui ? + SP_NPC_Ugnaught(self); + PopulateNPCTab(rng); + break; + case 18: // C'est qui ? + SP_NPC_Gran(self); + PopulateNPCTab(rng); + break; + case 19: + SP_NPC_Rodian(self); + PopulateNPCTab(rng); + break; + case 20: + SP_NPC_Weequay(self); + PopulateNPCTab(rng); + break; + case 21: + SP_NPC_Trandoshan(self); + PopulateNPCTab(rng); + break; + case 22: + SP_NPC_SwampTrooper(self); + PopulateNPCTab(rng); + break; + case 23: + SP_NPC_Imperial(self); + PopulateNPCTab(rng); + break; + case 24: + SP_NPC_ImpWorker(self); + PopulateNPCTab(rng); + break; + case 25: + SP_NPC_BespinCop(self); + PopulateNPCTab(rng); + break; + case 26: + SP_NPC_Reborn(self); + PopulateNPCTab(rng); + break; + case 27: + SP_NPC_ShadowTrooper(self); + PopulateNPCTab(rng); + break; + case 28: // This entity doesn't work, retry + //SP_NPC_Monster_Murjj(self); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 29: // This entity doesn't work, retry + //SP_NPC_Monster_Swamp(self); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 30: // This entity doesn't work, retry + //SP_NPC_Monster_Howler(self); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 31: + SP_NPC_MineMonster(self); + PopulateNPCTab(rng); + break; + case 32: // This entity doesn't work, retry + //SP_NPC_Monster_Claw(self); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 33: // This entity doesn't work, retry + //SP_NPC_Monster_Glider(self); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 34: // This entity doesn't work, retry + //SP_NPC_Monster_Flier2(self); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 35: // This entity doesn't work, retry + //SP_NPC_Monster_Lizard(self); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 36: // This entity doesn't work, retry + //SP_NPC_Monster_Fish(self); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 37: + SP_NPC_Droid_Interrogator(self); + PopulateNPCTab(rng); + break; + case 38: + SP_NPC_Droid_Probe(self); + PopulateNPCTab(rng); + break; + case 39: // Chicken robot are way too big, let's keep them out + //SP_NPC_Droid_Mark1(self); + //PopulateNPCTab(rng); + SP_NPC_Spawn_Random(self); + break; + case 40: // Chicken robot are way too big, let's keep them out + //SP_NPC_Droid_Mark2(self); + //PopulateNPCTab(rng); + SP_NPC_Spawn_Random(self); + break; + case 41: // ATST are very buggy, let's keep them out for the moment + //SP_NPC_Droid_ATST(self); + //PopulateNPCTab(rng); + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + case 42: + SP_NPC_Droid_Seeker(self); + PopulateNPCTab(rng); + break; + case 43: + SP_NPC_Droid_Remote(self); + PopulateNPCTab(rng); + break; + case 44: + SP_NPC_Droid_Sentry(self); + PopulateNPCTab(rng); + break; + case 45: + SP_NPC_Droid_Gonk(self); + PopulateNPCTab(rng); + break; + case 46: + SP_NPC_Droid_Mouse(self); + PopulateNPCTab(rng); + break; + case 47: + SP_NPC_Droid_R2D2(self); + PopulateNPCTab(rng); + break; + case 48: // Spawning this droid on kejim_base is making the game crash ???? + SP_NPC_Droid_R5D2(self); + PopulateNPCTab(rng); + break; + case 49: + SP_NPC_Droid_Protocol(self); + PopulateNPCTab(rng); + break; + default: // Secours + //SP_NPC_Stormtrooper(self); + SP_NPC_Spawn_Random(self); + break; + } +} + +// Used for Lando, Jan, and other NPCs that have to be humanoid due to their size (door in artus_detention is too small for Desann for example) +void SP_NPC_Spawn_Random_Humanoid(gentity_t* self) +{ + //int numberOfHumanoid = 25; + uniform_int_distribution NPC_H_Dist(0, 24); + int rng = NPC_H_Dist(rngRandoBase); + + // Amber found a way to have any kind of NPC. + if (tabSize == 50) + { + for (int i = 0; i < tabSize; i++) tabLockedInNPC[i] = i; + } + + switch (rng) + { + case 0: + SP_NPC_Lando(self); + break; + case 1: + SP_NPC_Jan(self); + break; + case 2: + SP_NPC_Luke(self); + break; + case 3: + SP_NPC_MonMothma(self); + break; + case 4: + SP_NPC_Tavion(self); + break; + case 5: + SP_NPC_Reelo(self); + break; + case 6: + SP_NPC_Bartender(self); + break; + case 7: + SP_NPC_MorganKatarn(self); + break; + case 8: + SP_NPC_Jedi(self); + break; + case 9: + SP_NPC_Prisoner(self); + break; + case 10: + SP_NPC_Rebel(self); + break; + case 11: + SP_NPC_Stormtrooper(self); + break; + case 12: + SP_NPC_StormtrooperOfficer(self); + break; + case 13: + SP_NPC_Tie_Pilot(self); + break; + case 14: + SP_NPC_Ugnaught(self); + break; + case 15: + SP_NPC_Gran(self); + break; + case 16: + SP_NPC_Rodian(self); + break; + case 17: + SP_NPC_Weequay(self); + break; + case 18: + SP_NPC_Trandoshan(self); + break; + case 19: + SP_NPC_SwampTrooper(self); + break; + case 20: + SP_NPC_Imperial(self); + break; + case 21: + SP_NPC_ImpWorker(self); + break; + case 22: + SP_NPC_BespinCop(self); + break; + case 23: + SP_NPC_Reborn(self); + break; + case 24: + SP_NPC_ShadowTrooper(self); + break; + default: // Secours + SP_NPC_Stormtrooper(self); + //SP_NPC_Spawn_Random(self); + break; + } +} + +// If the Randomizer is disabled, just a bit of process time is added at every check, but at least it should be comptable with the standard SpeedOutcast since time is paused during load +void SP_NPC_Kyle_Random(gentity_t* self) // Kyle should always spawn as Kyle +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Kyle(self); + } + else SP_NPC_Kyle(self); +} +void SP_NPC_Lando_Random(gentity_t* self) // Lando should always spawn as Lando +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + //SP_NPC_Spawn_Random(self); + //SP_NPC_Lando(self); + SP_NPC_Spawn_Random_Humanoid(self); + } + else SP_NPC_Lando(self); +} +void SP_NPC_Jan_Random(gentity_t* self) // Jan should always spawn as Jan +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + //SP_NPC_Spawn_Random(self); + SP_NPC_Spawn_Random_Humanoid(self); + } + else SP_NPC_Jan(self); +} +void SP_NPC_Luke_Random(gentity_t* self) // Luke should always spawn as Luke +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + //SP_NPC_Spawn_Random(self); + SP_NPC_Spawn_Random_Humanoid(self); + } + else SP_NPC_Luke(self); +} +void SP_NPC_MonMothma_Random(gentity_t* self) // MonMothma should always spawn as MonMothma +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + //SP_NPC_Spawn_Random(self); + SP_NPC_Spawn_Random_Humanoid(self); + } + else SP_NPC_MonMothma(self); +} +void SP_NPC_Tavion_Random(gentity_t* self) // Tavion should always spawn as Tavion +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + //SP_NPC_Tavion(self); + } + else SP_NPC_Tavion(self); +} +void SP_NPC_Reelo_Random(gentity_t* self) // Reelo should always spawn as Reelo +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + //SP_NPC_Spawn_Random(self); + SP_NPC_Spawn_Random_Humanoid(self); + } + else SP_NPC_Reelo(self); +} +void SP_NPC_Galak_Random(gentity_t* self) // Galak should always spawn as Galak +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Galak(self); +} +void SP_NPC_Desann_Random(gentity_t* self) // Desann should always spawn as Desann +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + //SP_NPC_Spawn_Random(self); + SP_NPC_Spawn_Random_Humanoid(self); // As a droid, the cutscene before the final 'fight' might be infinite + } + else SP_NPC_Desann(self); +} +void SP_NPC_Bartender_Random(gentity_t* self) // Bartender should always spawn as Bartender +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Bartender(self); +} +void SP_NPC_MorganKatarn_Random(gentity_t* self) // Morgarn should always spawn as Morgarn +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_MorganKatarn(self); +} +void SP_NPC_Jedi_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Jedi(self); +} +void SP_NPC_Prisoner_Random(gentity_t* self) // Prisoners should spawn as themselves +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Prisoner(self); +} +void SP_NPC_Rebel_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Rebel(self); +} +void SP_NPC_Stormtrooper_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + // In case of "normal" gameplay ie not doing the turret skip, you need to be able to kill them (and not get stuck in doors) + if (strcmp(lastKnownMap, "artus_topside") == 0) + { + if (self->behaviorSet[0]) // Check for NULL + { + if (strcmp(self->behaviorSet[0], "artus_topside/shoot_prisoners") == 0) + { + SP_NPC_Spawn_Random_Humanoid(self); + return; + } + if (strcmp(self->behaviorSet[0], "artus_topside/shoot_prisoners_crouch") == 0) + { + SP_NPC_Spawn_Random_Humanoid(self); + return; + } + } + } + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Stormtrooper(self); +} +void SP_NPC_StormtrooperOfficer_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_StormtrooperOfficer(self); +} +void SP_NPC_Tie_Pilot_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Tie_Pilot(self); +} +void SP_NPC_Ugnaught_Random(gentity_t* self) // Ugnaught should spawn as Ugnaught +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + //SP_NPC_Spawn_Random(self); + // For size, they may not hit triggers otherwise + SP_NPC_Spawn_Random_Humanoid(self); + } + else SP_NPC_Ugnaught(self); +} +void SP_NPC_Gran_Random(gentity_t* self) // Who is that ? It's the TD guys +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + if (strcmp(lastKnownMap, "ns_starpad") == 0) + { + if (self->targetname) + { + if (!strcmp(self->targetname, "back_squad1") + || !strcmp(self->targetname, "back_squad2") + || !strcmp(self->targetname, "back_squad3") + || !strcmp(self->targetname, "back_squad4") + || !strcmp(self->targetname, "front_squad1") + || !strcmp(self->targetname, "front_squad2") + || !strcmp(self->targetname, "front_squad3") + || !strcmp(self->targetname, "front_squad4") + || !strcmp(self->targetname, "reelo_thug") + || !strcmp(self->targetname, "end_thug") + || !strcmp(self->targetname, "bea")) + { + SP_NPC_Spawn_Random_Humanoid(self); + return; + } + } + } + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Gran(self); +} +void SP_NPC_Rodian_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + if (strcmp(lastKnownMap, "ns_starpad") == 0) + { + if (self->targetname) + { + if (!strcmp(self->targetname, "back_squad1") + || !strcmp(self->targetname, "back_squad2") + || !strcmp(self->targetname, "back_squad3") + || !strcmp(self->targetname, "back_squad4") + || !strcmp(self->targetname, "front_squad1") + || !strcmp(self->targetname, "front_squad2") + || !strcmp(self->targetname, "front_squad3") + || !strcmp(self->targetname, "front_squad4") + || !strcmp(self->targetname, "reelo_thug") + || !strcmp(self->targetname, "end_thug") + || !strcmp(self->targetname, "bea")) + { + SP_NPC_Spawn_Random_Humanoid(self); + return; + } + } + } + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Rodian(self); +} +void SP_NPC_Weequay_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + if (strcmp(lastKnownMap, "ns_starpad") == 0) + { + if (self->targetname) + { + if (!strcmp(self->targetname, "back_squad1") + || !strcmp(self->targetname, "back_squad2") + || !strcmp(self->targetname, "back_squad3") + || !strcmp(self->targetname, "back_squad4") + || !strcmp(self->targetname, "front_squad1") + || !strcmp(self->targetname, "front_squad2") + || !strcmp(self->targetname, "front_squad3") + || !strcmp(self->targetname, "front_squad4") + || !strcmp(self->targetname, "reelo_thug") + || !strcmp(self->targetname, "end_thug") + || !strcmp(self->targetname, "bea")) + { + SP_NPC_Spawn_Random_Humanoid(self); + return; + } + } + } + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Weequay(self); +} +void SP_NPC_Trandoshan_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Trandoshan(self); +} +void SP_NPC_SwampTrooper_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_SwampTrooper(self); +} +void SP_NPC_Imperial_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + if (strcmp(lastKnownMap, "artus_detention") == 0) // The warden that we have hostage + { + if (self->NPC_targetname) + { + if (!strcmp(self->NPC_targetname, "warden")) + { + SP_NPC_Spawn_Random_Humanoid(self); + return; + } + } + } + if (strcmp(lastKnownMap, "cairn_assembly") == 0) // The officer we have to mindtrick + { + if (self->behaviorSet[0]) // Check for NULL + { + if (strcmp(self->behaviorSet[0], "cairn_assembly/silent_stand") == 0) + { + SP_NPC_Spawn_Random_Humanoid(self); + return; + } + } + } + if (strcmp(lastKnownMap, "doom_detention") == 0) // The jailer of Jan + { + if (self->NPC_targetname) + { + if (!strcmp(self->NPC_targetname, "jailer")) + { + SP_NPC_Spawn_Random_Humanoid(self); + return; + } + } + } + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Imperial(self); +} +void SP_NPC_ImpWorker_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_ImpWorker(self); +} +void SP_NPC_BespinCop_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_BespinCop(self); +} +void SP_NPC_Reborn_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Reborn(self); +} +void SP_NPC_ShadowTrooper_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_ShadowTrooper(self); +} +void SP_NPC_Monster_Murjj_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Monster_Murjj(self); +} +void SP_NPC_Monster_Swamp_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Monster_Swamp(self); +} +void SP_NPC_Monster_Howler_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Monster_Howler(self); +} +void SP_NPC_Monster_Claw_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Monster_Claw(self); +} +void SP_NPC_Monster_Glider_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Monster_Glider(self); +} +void SP_NPC_Monster_Flier2_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Monster_Flier2(self); +} +void SP_NPC_Monster_Lizard_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Monster_Lizard(self); +} +void SP_NPC_Monster_Fish_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Monster_Fish(self); +} +void SP_NPC_MineMonster_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_MineMonster(self); +} +void SP_NPC_Droid_Interrogator_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Droid_Interrogator(self); +} +void SP_NPC_Droid_Probe_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Droid_Probe(self); +} +void SP_NPC_Droid_Mark1_Random(gentity_t* self) // Chicken robot, make then static and not in the random pool (they are big). Wait, two chicken robot entities ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Droid_Mark1(self); + } + else SP_NPC_Droid_Mark1(self); +} +void SP_NPC_Droid_Mark2_Random(gentity_t* self) // Chicken robot, make then static and not in the random pool (they are big). Wait, two chicken robot entities ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Droid_Mark2(self); + } + else SP_NPC_Droid_Mark2(self); +} +void SP_NPC_Droid_ATST_Random(gentity_t* self) // Since they are buggy, let's keep the one existing intact. +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Droid_ATST(self); + } + else SP_NPC_Droid_ATST(self); +} +void SP_NPC_Droid_Seeker_Random(gentity_t* self) // Seekers should always be seekers, at least in speedruns +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Droid_Seeker(self); + } + else SP_NPC_Droid_Seeker(self); +} +void SP_NPC_Droid_Remote_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Droid_Remote(self); +} +void SP_NPC_Droid_Sentry_Random(gentity_t* self) // Who is that ? +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Droid_Sentry(self); +} +void SP_NPC_Droid_Gonk_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Droid_Gonk(self); +} +void SP_NPC_Droid_Mouse_Random(gentity_t* self) // Mouse should spawn as Mouse because of size in kejim +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Droid_Mouse(self); + } + else SP_NPC_Droid_Mouse(self); +} +void SP_NPC_Droid_R2D2_Random(gentity_t* self) // R2D2 should spawn as self +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Droid_R2D2(self); +} +void SP_NPC_Droid_R5D2_Random(gentity_t* self) // R5D2 should spawn as self, because of size in bespin +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + //SP_NPC_Spawn_Random(self); + SP_NPC_Droid_R5D2(self); + } + else SP_NPC_Droid_R5D2(self); +} +void SP_NPC_Droid_Protocol_Random(gentity_t* self) +{ + if (cg_enableRandomizer.integer) + { + CheckIfMapChanged(); + SP_NPC_Spawn_Random(self); + } + else SP_NPC_Droid_Protocol(self); +} + + + + //NPC console commands /* diff --git a/code/game/Q3_Interface.cpp b/code/game/Q3_Interface.cpp index 566595af..92b450c0 100644 --- a/code/game/Q3_Interface.cpp +++ b/code/game/Q3_Interface.cpp @@ -39,6 +39,7 @@ extern void InitMoverTrData( gentity_t *ent ); extern qboolean SpotWouldTelefrag2( gentity_t *mover, vec3_t dest ); extern cvar_t *g_sex; extern cvar_t *g_timescale; +extern vmCvar_t cg_enableRandomizer; extern void G_SetEnemy( gentity_t *self, gentity_t *enemy ); //extern void FX_BorgTeleport( vec3_t org ); static void Q3_SetWeapon (int entID, const char *wp_name); @@ -3341,7 +3342,8 @@ static void Q3_SetWeapon (int entID, const char *wp_name) if(wp == WP_NONE) {//no weapon self->client->ps.weapon = WP_NONE; - if ( self->weaponModel >= 0 ) + //For some reason we're trying to remove weapons that don't exist + if ( self->weaponModel >= 0 && self->ghoul2.size()>0 && self->weaponModel) { gi.G2API_RemoveGhoul2Model( self->ghoul2, self->weaponModel ); self->weaponModel = -1; @@ -4057,6 +4059,11 @@ static void Q3_SetForcePowerLevel ( int entID, int forcePower, int forceLevel ) return; } + //Early exit unless we're increasing a power + if (gi.Cvar_VariableIntegerValue("cg_enableRandomizer") && forceLevel <= self->client->ps.forcePowerLevel[forcePower]) { + return; + } + if ((forceLevel > self->client->ps.forcePowerLevel[forcePower]) && (entID==0) && (forceLevel > 0)) { if (!cg_updatedDataPadForcePower1.integer) @@ -6625,7 +6632,7 @@ static void Q3_Set( int taskID, int entID, const char *type_name, const char *da } else { - Q3_DebugPrint( WL_ERROR, "Q3_SetAnimUpper: %s does not have anim %s!\n", ent->targetname, (char *)data ); + Q3_DebugPrint(WL_ERROR, "Q3_SetAnimUpper: %s does not have anim %s!\n", ent->targetname, (char*)data); } if ( Q3_SetAnimLower( entID, (char *) data ) ) { @@ -6636,6 +6643,15 @@ static void Q3_Set( int taskID, int entID, const char *type_name, const char *da { Q3_DebugPrint( WL_ERROR, "Q3_SetAnimLower: %s does not have anim %s!\n", ent->targetname, (char *)data ); } + if (both == 0 && cg_enableRandomizer.integer) { + int instantTimer = 1; + Q3_TaskIDSet(ent, TID_ANIM_UPPER, taskID); + Q3_TaskIDSet(ent, TID_ANIM_LOWER, taskID); + Q3_TaskIDSet(ent, TID_ANIM_BOTH, taskID); + PM_SetTorsoAnimTimer(ent, &instantTimer, 0); + PM_SetLegsAnimTimer(ent, &instantTimer, 0); + return; + } if ( both >= 2 ) { Q3_TaskIDSet( ent, TID_ANIM_BOTH, taskID ); diff --git a/code/game/bg_misc.cpp b/code/game/bg_misc.cpp index 0012b295..7af28575 100644 --- a/code/game/bg_misc.cpp +++ b/code/game/bg_misc.cpp @@ -183,6 +183,8 @@ FindItemForWeapon =============== */ gitem_t *FindItemForWeapon( weapon_t weapon ) { + // Posto : this is called during map load, to know what kind of weapon is on the ground (ex : cairn_dock1). + int i; for ( i = 1 ; i < bg_numItems ; i++ ) { @@ -198,6 +200,7 @@ gitem_t *FindItemForWeapon( weapon_t weapon ) { //---------------------------------------------- gitem_t *FindItemForInventory( int inv ) { + // Posto : when called in kejim_post, only bacta and binocular is returned; while on cairndock_1, a lot of things is returned (sentry, seeker). int i; gitem_t *it; @@ -252,7 +255,9 @@ gitem_t *FindItem( const char *className ) { for ( i = 1 ; i < bg_numItems ; i++ ) { if ( !Q_stricmp( bg_itemlist[i].classname, className ) ) + { return &bg_itemlist[i]; + } } return NULL; diff --git a/code/game/bg_pmove.cpp b/code/game/bg_pmove.cpp index 4ecd036c..ab33d505 100644 --- a/code/game/bg_pmove.cpp +++ b/code/game/bg_pmove.cpp @@ -620,7 +620,41 @@ static qboolean PM_CheckJump( void ) pm->ps->forceJumpZStart = pm->ps->origin[2]; } */ + + // Randomizer extreme : Here is when a FORCE jump is done. Normal jump is not touched. + // curHeight is zero when we start a jump, so if it is zero and we start a force jump float curHeight = pm->ps->origin[2] - pm->ps->forceJumpZStart; + + if (curHeight == 0 && cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer) + { + if (cg_enableRandJumpHeight.integer) + { + // Need to change the rng calls later + // Change the values for the force jumps, not the normal one (but since this is called when you have force power, that don't change much) + for (int i = 1; i < 4; i++) + { + uniform_int_distribution localDist(1, 768); + int newHeight = localDist(rngRandoEnhancements) + 10; // 10 as the minimum, 768 as the maximum, which is double force jump 3 + forceJumpHeight[i] = newHeight; + // forceJumpHeightMax is not declared in this score, maybe it's not needed ? + // forceJumpHeightMax[i] = newHeight + 34; + + } + } + if (cg_enableRandJumpStrength.integer) + { + // Need to change the rng calls later + // Change the values for the force jumps, not the normal one (but since this is called when you have force power, that don't change much) + for (int i = 1; i < 4; i++) + { + //int newStrength = rand() % 1568 + 112; // 112 as the minimum, 225 is the normal value for no force, 1680 as the maximum, which is double force jump 3 + uniform_int_distribution localDist(1, 3775); + int newStrength = localDist(rngRandoEnhancements) + 225; // Base Velocity is guaranted, but now every jump can be extremely fast + forceJumpStrength[i] = newStrength; + } + } + } + //check for max force jump level and cap off & cut z vel if ( ( curHeight<=forceJumpHeight[0] ||//still below minimum jump height (pm->ps->forcePower&&pm->cmd.upmove>=10) ) &&////still have force power available and still trying to jump up @@ -2191,6 +2225,13 @@ static void PM_CrashLandDamage( int damage ) { if ( pm->gent->NPC && pm->gent->NPC->aiFlags & NPCAI_DIE_ON_IMPACT ) { + if (cg_enableRandomizer.integer) + { + if (pm->gent->targetname) + { + if (!strcmp(pm->gent->targetname, "cinematic23_tavion")) return; // Please don't die MR NPC replacing Tavion + } + } damage = 1000; } else @@ -7267,6 +7308,17 @@ void PM_WeaponLightsaber(void) // Check for WEAPON ATTACK // ********************************************************* + //We don't have an enemy, don't try to attack + //How the fuck did that get into release? It's checked everywhere else + if (cg_enableRandomizer.integer) + { + if (strcmp(pm->gent->classname, "player") == 0) // Fix : Kyle couldn't attack + { + // Nothing + } + else if (!pm->gent->enemy) return; + } + weapon = &cg_weapons[pm->ps->weapon]; if(!delayed_fire) diff --git a/code/game/bg_slidemove.cpp b/code/game/bg_slidemove.cpp index 0e5bb47d..df060316 100644 --- a/code/game/bg_slidemove.cpp +++ b/code/game/bg_slidemove.cpp @@ -5,6 +5,8 @@ #include "bg_public.h" #include "bg_local.h" +extern vmCvar_t cg_enableRandomizer; + extern qboolean PM_ClientImpact( int otherEntityNum, qboolean damageSelf ); /* @@ -90,6 +92,11 @@ qboolean PM_SlideMove( float gravMod ) { // calculate position we are trying to move to VectorMA( pm->ps->origin, time_left, pm->ps->velocity, end ); + //safety check here + if (cg_enableRandomizer.integer && (_isnan(end[0]) || isnan(end[1]) || _isnan(end[2]))) { + continue; + } + // see if we can make it there pm->trace ( &trace, pm->ps->origin, pm->mins, pm->maxs, end, pm->ps->clientNum, pm->tracemask, (EG2_Collision)0, 0); diff --git a/code/game/g_breakable.cpp b/code/game/g_breakable.cpp index 4494d9e6..586f58f7 100644 --- a/code/game/g_breakable.cpp +++ b/code/game/g_breakable.cpp @@ -864,6 +864,9 @@ set size better? multiple damage models? custom explosion effect/sound? */ +//Additions for Base Game fixes (ex : artus_mine crates to get all pickups) +extern vmCvar_t cg_baseGameFixes; + void SP_misc_model_breakable( gentity_t *ent ) { char damageModel[MAX_QPATH]; @@ -883,6 +886,44 @@ void SP_misc_model_breakable( gentity_t *ent ) damageModel[len] = 0; //chop extension strncpy( chunkModel, damageModel, sizeof(chunkModel)); strncpy( useModel, damageModel, sizeof(useModel)); + + // Posto : Small 'fix' to make these breakable , models/map_objects/imp_mine/crate.md3 + if (cg_baseGameFixes.integer) + { + if (strcmp(ent->model, "models/map_objects/imp_mine/crate.md3") == 0) + { + G_SpawnInt("health", "80", &ent->health); + G_SpawnInt("splashRadius", "80", &ent->splashRadius); + G_SpawnInt("splashDamage", "40", &ent->splashDamage); + //ent->s.modelindex = G_ModelIndex("models/map_objects/imp_mine/crate_open.md3"); + ent->fxID = G_EffectIndex("thermal/explosion"); // FIXME: temp + G_EffectIndex("env/crystal_crate"); + G_SoundIndex("sound/weapons/explosions/cargoexplode.wav"); + VectorSet(ent->mins, -34, -34, 0); + VectorSet(ent->maxs, 34, 34, 44); + //Blocks movement + ent->contents = CONTENTS_SOLID | CONTENTS_OPAQUE | CONTENTS_BODY | CONTENTS_MONSTERCLIP | CONTENTS_BOTCLIP;//Was CONTENTS_SOLID, but only architecture should be this + /* + if (ent->spawnflags & 1) // non-solid + { // Override earlier contents flag... + //Can only be shot + ent->contents = CONTENTS_SHOTCLIP; + } + */ + ent->takedamage = qtrue; + G_SetOrigin(ent, ent->s.origin); + VectorCopy(ent->s.angles, ent->s.apos.trBase); + gi.linkentity(ent); + ent->e_PainFunc = painF_CrystalCratePain; + if (ent->targetname) + { + ent->e_UseFunc = useF_misc_use; + } + ent->material = MAT_CRATE2; + ent->e_DieFunc = dieF_misc_model_breakable_die; + return; // We don't want to do anything else + } + } if (ent->takedamage) { //Dead/damaged model diff --git a/code/game/g_client.cpp b/code/game/g_client.cpp index 9cc43af7..cb9ff436 100644 --- a/code/game/g_client.cpp +++ b/code/game/g_client.cpp @@ -14,6 +14,17 @@ extern void G_CreateG2AttachedWeaponModel( gentity_t *ent, const char *weaponMod extern qboolean CheatsOk( gentity_t *ent ); extern vmCvar_t cg_thirdPersonAlpha; +// Randomizer +#include +extern int GetRandomizedWeapon(); +extern vmCvar_t cg_enableRandomizer; +extern vmCvar_t cg_enableRandomizerEnhancements; +extern vmCvar_t cg_startWithPush; +extern vmCvar_t cg_enableRandKyleHealth; +extern mt19937 rngRandoEnhancements; +extern SavedGameJustLoaded_e g_eSavedGameJustLoaded; +extern vmCvar_t memorized_kyle_health; + // g_client.c -- client functions that don't happen every frame float DEFAULT_MINS_0 = -16; @@ -433,11 +444,43 @@ void ClientUserinfoChanged( int clientNum ) { } } - // set max health - client->pers.maxHealth = atoi( Info_ValueForKey( userinfo, "handicap" ) ); - if ( client->pers.maxHealth < 1 || client->pers.maxHealth > 100 ) { - client->pers.maxHealth = 100; + // Randomizer : max health changes for Kyle / player + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer && cg_enableRandKyleHealth.integer) + { + // Set it only during kejim_post, eNo and eReset are valid + if (!strcmp(level.mapname, "kejim_post") && (g_eSavedGameJustLoaded == eNO || g_eSavedGameJustLoaded == eRESET)) + { + int base_health = 100; + uniform_real_distribution NPC_Speed_Dist(33, 300); + float rng = NPC_Speed_Dist(rngRandoEnhancements) / 100; //Get a multiplier value between 0.33 and 3 + client->pers.maxHealth = (int)((float)base_health * rng); + ent->max_health = client->pers.maxHealth; + memorized_kyle_health.integer = client->pers.maxHealth; + memorized_kyle_health.value = client->pers.maxHealth; + string buffer = to_string(client->pers.maxHealth); + for (int i = 0 ; i < buffer.size() ; i++) + { + memorized_kyle_health.string[i] = buffer[i]; + } + memorized_kyle_health.string[buffer.size()] = '\0'; + memorized_kyle_health.modificationCount++; + extern void cgi_Cvar_Set(const char* var_name, const char* value); + cgi_Cvar_Set("memorized_kyle_health", memorized_kyle_health.string); + } + else + { + client->pers.maxHealth = memorized_kyle_health.integer; + } + } + else // Normal game, non randomizer + { + // set max health + client->pers.maxHealth = atoi(Info_ValueForKey(userinfo, "handicap")); + if (client->pers.maxHealth < 1 || client->pers.maxHealth > 100) { + client->pers.maxHealth = 100; + } } + client->ps.stats[STAT_MAX_HEALTH] = client->pers.maxHealth; // sounds @@ -646,7 +689,7 @@ Player_RestoreFromPrevLevel Argument : gentity_t *ent ============ */ -void Player_RestoreFromPrevLevel(gentity_t *ent) +void Player_RestoreFromPrevLevel(gentity_t *ent, SavedGameJustLoaded_e eSaveGameJustLoaded) { gclient_t *client = ent->client; int i; @@ -679,7 +722,27 @@ void Player_RestoreFromPrevLevel(gentity_t *ent) &client->ps.saberLockEnemy, &client->ps.saberLockTime ); - ent->health = client->ps.stats[STAT_HEALTH]; + // Randomizer : max health changes for Kyle / player + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer && cg_enableRandKyleHealth.integer) + { + // Set it only during kejim_post, eNo and eReset are valid + // If you do a eReset during post, for some reason maxhealth is not cleared properly + if (!strcmp(level.mapname, "kejim_post") && (g_eSavedGameJustLoaded == eNO || g_eSavedGameJustLoaded == eRESET)) + { + ent->max_health = client->ps.stats[STAT_MAX_HEALTH]; + client->pers.maxHealth = client->ps.stats[STAT_MAX_HEALTH]; + } + else // We good, it's not a reset in kejim_post + { + ent->health = client->ps.stats[STAT_HEALTH]; + } + + } // Base game + else + { + ent->health = client->ps.stats[STAT_HEALTH]; + } + // slight issue with ths for the moment in that although it'll correctly restore angles it doesn't take into account // the overall map orientation, so (eg) exiting east to enter south will be out by 90 degrees, best keep spawn angles for now @@ -729,6 +792,25 @@ void Player_RestoreFromPrevLevel(gentity_t *ent) } assert (i==NUM_FORCE_POWERS); + //On resetting by loading auto_kejim_post + if (cg_enableRandomizer.integer && eSaveGameJustLoaded == eRESET) { + //If start with push enabled then apply - have to handle it here so it applies without having to go to menu + if (cg_enableRandomizerEnhancements.integer && cg_startWithPush.integer) { + client->ps.forcePowerLevel[FP_PUSH] = 1; + client->ps.forcePowersKnown = (0 << FP_HEAL) | (0 << FP_LEVITATION) | (0 << FP_SPEED) | (1 << FP_PUSH) | (0 << FP_PULL) | (0 << FP_TELEPATHY) | (0 << FP_GRIP) | (0 << FP_LIGHTNING) | (0 << FP_SABERTHROW) | (0 << FP_SABER_DEFENSE) | (0 << FP_SABER_OFFENSE); + client->ps.forcePower = FORCE_POWER_MAX; + } + else if (client->ps.forcePowerLevel[FP_PUSH] > 0) + { + //Clear all force powers - necessary because the initial apply for startWithPush sets it on auto_kejim_post so we have to handle it here + for (int i = 0; i < NUM_FORCE_POWERS; i++) { + ent->client->ps.forcePowerLevel[i] = 0; + } + client->ps.forcePowersKnown = (0 << FP_HEAL) | (0 << FP_LEVITATION) | (0 << FP_SPEED) | (0 << FP_PUSH) | (0 << FP_PULL) | (0 << FP_TELEPATHY) | (0 << FP_GRIP) | (0 << FP_LIGHTNING) | (0 << FP_SABERTHROW) | (0 << FP_SABER_DEFENSE) | (0 << FP_SABER_OFFENSE); + } + } + + client->ps.forcePowerMax = FORCE_POWER_MAX; client->ps.forceGripEntityNum = ENTITYNUM_NONE; } @@ -1519,6 +1601,7 @@ qboolean ClientSpawn(gentity_t *ent, SavedGameJustLoaded_e eSavedGameJustLoaded else { G_LoadAnimFileSet( ent, "kyle" ); + // Posto : maybe it's here that we can 'randomize' how we look like ? Not being Kyle could be funny G_SetSkin( ent, "kyle", NULL ); } } @@ -1597,7 +1680,17 @@ qboolean ClientSpawn(gentity_t *ent, SavedGameJustLoaded_e eSavedGameJustLoaded // give default weapons client->ps.stats[STAT_WEAPONS] = ( 1 << WP_NONE ); - client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_BRYAR_PISTOL ); //these are precached in g_items, ClearRegisteredItems() + // Posto : Hey, we can randomize our first weapon ! + if (cg_enableRandomizer.integer) + { + // Inconsistent seed with that + // client->ps.stats[STAT_WEAPONS] |= (1 << (weapon_t)(GetRandomizedWeapon())); + client->ps.stats[STAT_WEAPONS] |= (1 << WP_BRYAR_PISTOL); //these are precached in g_items, ClearRegisteredItems() + } + else + { + client->ps.stats[STAT_WEAPONS] |= (1 << WP_BRYAR_PISTOL); //these are precached in g_items, ClearRegisteredItems() + } client->ps.inventory[INV_ELECTROBINOCULARS] = 1; // always give the bryar pistol, but we have to give EITHER the saber or the stun baton..never both @@ -1645,6 +1738,7 @@ qboolean ClientSpawn(gentity_t *ent, SavedGameJustLoaded_e eSavedGameJustLoaded G_KillBox( ent ); gi.linkentity (ent); // force the base weapon up + // Posto : here's why we are loading kejim_base with the Bryal Pistol, might want to work on that client->ps.weapon = WP_BRYAR_PISTOL; client->ps.weaponstate = WEAPON_READY; } @@ -1667,7 +1761,7 @@ qboolean ClientSpawn(gentity_t *ent, SavedGameJustLoaded_e eSavedGameJustLoaded (spawnPoint->spawnflags&1) || // KEEP_PREV g_qbLoadTransition == qtrue ) { - Player_RestoreFromPrevLevel(ent); + Player_RestoreFromPrevLevel(ent, eSavedGameJustLoaded); } @@ -1678,6 +1772,7 @@ qboolean ClientSpawn(gentity_t *ent, SavedGameJustLoaded_e eSavedGameJustLoaded if (eSavedGameJustLoaded == eNO) { ent->weaponModel = -1; + // Posto : maybe it's here that we can 'randomize' how we look like ? Not being Kyle could be funny G_SetG2PlayerModel( ent, "kyle", NULL, NULL, NULL ); } else @@ -1690,7 +1785,10 @@ qboolean ClientSpawn(gentity_t *ent, SavedGameJustLoaded_e eSavedGameJustLoaded else { G_LoadAnimFileSet( ent, "kyle" ); + //G_LoadAnimFileSet(ent, "jan"); + // Posto : maybe it's here that we can 'randomize' how we look like ? Not being Kyle could be funny G_SetSkin( ent, "kyle", NULL ); + //G_SetSkin(ent, "jan", NULL); } } /* @@ -1717,7 +1815,7 @@ qboolean ClientSpawn(gentity_t *ent, SavedGameJustLoaded_e eSavedGameJustLoaded ICARUS_FreeEnt( ent ); //FIXME: This shouldn't need to be done...? ICARUS_InitEnt( ent ); - if ( spawnPoint->spawnflags & 64 ) + if ( spawnPoint->spawnflags & 64 ) // Posto : this is the case in yavin_temple {//player starts with absolutely no weapons ent->client->ps.stats[STAT_WEAPONS] = ( 1 << WP_NONE ); ent->client->ps.ammo[weaponData[WP_NONE].ammoIndex] = 32000; // checkme diff --git a/code/game/g_cmds.cpp b/code/game/g_cmds.cpp index e4b4890c..8775aa47 100644 --- a/code/game/g_cmds.cpp +++ b/code/game/g_cmds.cpp @@ -1030,8 +1030,10 @@ void ClientCommand( int clientNum ) { return; } - if (Q_stricmp (cmd, "give") == 0) - Cmd_Give_f (ent); + // Posto : maybe adding a command is here ? No, this is called later + if (Q_stricmp(cmd, "give") == 0) + Cmd_Give_f(ent); + else if (Q_stricmp (cmd, "god") == 0) Cmd_God_f (ent); else if (Q_stricmp (cmd, "undying") == 0) diff --git a/code/game/g_combat.cpp b/code/game/g_combat.cpp index 491f1be4..71e5a687 100644 --- a/code/game/g_combat.cpp +++ b/code/game/g_combat.cpp @@ -3431,8 +3431,27 @@ void player_die( gentity_t *self, gentity_t *inflictor, gentity_t *attacker, int if ( self->NPC->tempGoal ) { - if ( self->client->NPC_class == CLASS_DESANN && !strcmp(level.mapname, "yavin_final") ) + if ( (self->client->NPC_class == CLASS_DESANN || + (cg_enableRandomizer.integer && self->script_targetname && !Q_stricmp("real_desann", self->script_targetname))) + && !strcmp(level.mapname, "yavin_final")) { + // Randomizer + if (cg_enableRandomizer.integer) + { + if (cg_enableRandomizerEnhancements.integer) // Another proof of the use of 'enhancements' + { + gi.Printf(S_COLOR_RED "=========================\n"); + Com_Printf(S_COLOR_GREEN "Seed used (X): " S_COLOR_WHITE "%s\n", cg_setSeed.string); + gi.Printf(S_COLOR_RED "=========================\n"); + } + else + { + gi.Printf(S_COLOR_RED "=========================\n"); + Com_Printf(S_COLOR_GREEN "Seed used: " S_COLOR_WHITE "%s\n", cg_setSeed.string); + gi.Printf(S_COLOR_RED "=========================\n"); + } + } + // final boss (desann) on final map is dead, speedrun is over cgi_SpeedrunRunFinished(); } diff --git a/code/game/g_inventory.cpp b/code/game/g_inventory.cpp index d5e4c5b0..dfcffd60 100644 --- a/code/game/g_inventory.cpp +++ b/code/game/g_inventory.cpp @@ -5,6 +5,9 @@ #include "g_local.h" +// Randomizer +extern vmCvar_t cg_enableRandomizer; + /* ================ Goodie Keys @@ -62,18 +65,54 @@ Security Keys */ qboolean INV_SecurityKeyGive( gentity_t *target, const char *keyname ) { - if ( target == NULL || keyname == NULL || target->client == NULL ) + if (!cg_enableRandomizer.integer) { + if (target == NULL || keyname == NULL || target->client == NULL) + { + return qfalse; + } + + for (int i = 0; i <= 4; i++) + { + if (target->client->ps.security_key_message[i][0] == NULL) + {//fill in the first empty slot we find with this key + target->client->ps.inventory[INV_SECURITY_KEY]++; // He got the key + Q_strncpyz(target->client->ps.security_key_message[i], keyname, MAX_SECURITY_KEY_MESSSAGE, qtrue); + return qtrue; + } + } + //couldn't find an empty slot return qfalse; } - - for ( int i = 0; i <= 4; i++ ) + else // Randomizer, make a random taken key universally usable { - if ( target->client->ps.security_key_message[i][0] == NULL ) - {//fill in the first empty slot we find with this key - target->client->ps.inventory[INV_SECURITY_KEY]++; // He got the key - Q_strncpyz( target->client->ps.security_key_message[i], keyname, MAX_SECURITY_KEY_MESSSAGE, qtrue ); - return qtrue; + if (keyname != NULL) // Normal key, normal behavior + { + for (int i = 0; i <= 4; i++) + { + if (target->client->ps.security_key_message[i][0] == NULL) + {//fill in the first empty slot we find with this key + target->client->ps.inventory[INV_SECURITY_KEY]++; // He got the key + Q_strncpyz(target->client->ps.security_key_message[i], keyname, MAX_SECURITY_KEY_MESSSAGE, qtrue); + return qtrue; + } + } + //couldn't find an empty slot + return qfalse; + } + else // Randomly spawned key + { + for (int i = 0; i <= 4; i++) + { + if (target->client->ps.security_key_message[i][0] == NULL) + {//fill in the first empty slot we find with this key + target->client->ps.inventory[INV_SECURITY_KEY]++; // He got the key + Q_strncpyz(target->client->ps.security_key_message[i], "rando_key", MAX_SECURITY_KEY_MESSSAGE, qtrue); + return qtrue; + } + } + //couldn't find an empty slot + return qfalse; } } //couldn't find an empty slot @@ -82,56 +121,111 @@ qboolean INV_SecurityKeyGive( gentity_t *target, const char *keyname ) void INV_SecurityKeyTake( gentity_t *target, char *keyname ) { - if ( !target || !keyname || !target->client ) + if (!cg_enableRandomizer.integer) { - return; + if (!target || !keyname || !target->client) + { + return; + } + for (int i = 0; i <= 4; i++) + { + if (target->client->ps.security_key_message[i]) + { + if (!Q_stricmp(keyname, target->client->ps.security_key_message[i])) + { + target->client->ps.inventory[INV_SECURITY_KEY]--; // Take the key + target->client->ps.security_key_message[i][0] = NULL; + return; + } + } + /* + //don't do this because we could have removed one that's between 2 valid ones + else + { + break; + } + */ + } } - - for ( int i = 0; i <= 4; i++ ) + else // Randomizer, make a random taken key universally usable { - if ( target->client->ps.security_key_message[i] ) + for (int i = 0; i <= 4; i++) // Check for normal key first { - if ( !Q_stricmp( keyname, target->client->ps.security_key_message[i] ) ) + if (target->client->ps.security_key_message[i]) { - target->client->ps.inventory[INV_SECURITY_KEY]--; // Take the key - target->client->ps.security_key_message[i][0] = NULL; - return; + if (!Q_stricmp(keyname, target->client->ps.security_key_message[i])) + { + target->client->ps.inventory[INV_SECURITY_KEY]--; // Take the key + target->client->ps.security_key_message[i][0] = NULL; + return; + } } } - /* - //don't do this because we could have removed one that's between 2 valid ones - else + for (int i = 0; i <= 4; i++) // Check for rando_key { - break; + if (target->client->ps.security_key_message[i]) + { + if (!Q_stricmp("rando_key", target->client->ps.security_key_message[i])) + { + target->client->ps.inventory[INV_SECURITY_KEY]--; // Take the key + target->client->ps.security_key_message[i][0] = NULL; + return; + } + } } - */ } + } qboolean INV_SecurityKeyCheck( gentity_t *target, char *keyname ) { - if ( !target || !keyname || !target->client ) + if (!cg_enableRandomizer.integer) { - return (qfalse); + if (!target || !keyname || !target->client) + { + return (qfalse); + } + for (int i = 0; i <= 4; i++) + { + if (target->client->ps.inventory[INV_SECURITY_KEY] && target->client->ps.security_key_message[i]) + { + if (!Q_stricmp(keyname, target->client->ps.security_key_message[i])) + { + return (qtrue); + } + } + /* + //don't do this because we could have removed one that's between 2 valid ones + else + { + break; + } + */ + } } - - for ( int i = 0; i <= 4; i++ ) + else // Randomizer, make a random taken key universally usable { - if ( target->client->ps.inventory[INV_SECURITY_KEY] && target->client->ps.security_key_message[i] ) + for (int i = 0; i <= 4; i++) // Check for normal key first { - if ( !Q_stricmp( keyname, target->client->ps.security_key_message[i] ) ) + if (target->client->ps.inventory[INV_SECURITY_KEY] && target->client->ps.security_key_message[i]) { - return (qtrue); + if (!Q_stricmp(keyname, target->client->ps.security_key_message[i])) + { + return (qtrue); + } } } - /* - //don't do this because we could have removed one that's between 2 valid ones - else + for (int i = 0; i <= 4; i++) // Check for rando_key { - break; + if (target->client->ps.inventory[INV_SECURITY_KEY] && target->client->ps.security_key_message[i]) + { + if (!Q_stricmp("rando_key", target->client->ps.security_key_message[i])) + { + return (qtrue); + } + } } - */ - } + } return (qfalse); } diff --git a/code/game/g_itemLoad.cpp b/code/game/g_itemLoad.cpp index 94f6a76f..da009576 100644 --- a/code/game/g_itemLoad.cpp +++ b/code/game/g_itemLoad.cpp @@ -103,7 +103,7 @@ static void IT_Name(const char **holdBuf) return; } - + // Posto : hello, why not randomizing weapons and item drops ? Posto again : that's true brother, need to work on that if (!Q_stricmp(tokenStr,"ITM_NONE")) itemNum = ITM_NONE; else if (!Q_stricmp(tokenStr,"ITM_STUN_BATON_PICKUP")) @@ -206,6 +206,7 @@ static void IT_Name(const char **holdBuf) { itemNum = ITM_BATTERY_PICKUP; } + // Posto : hey, I was already here else if (!Q_stricmp(tokenStr,"ITM_SEEKER_PICKUP")) itemNum = ITM_SEEKER_PICKUP; else if (!Q_stricmp(tokenStr,"ITM_SHIELD_PICKUP")) @@ -683,12 +684,15 @@ static void IT_ParseParms(const char *buffer) } - -void IT_LoadItemParms (void) +// Posto : wait what ? items.dat don't exist in the 'release' version of the game. How can it know which items are which then ? +void IT_LoadItemParms (void) { char *buffer; int len; + // This function is called at every map load, meaning we can shuffle the content using our seed ! + // But ! I think we should keep items 'types' together (ammo roll for an other kind of ammo, weapon for a weapon etc...) IF it cause problem. + // If changing what kind of item it is doesn't provoke any kind of problem, I don't see why we shouldn't do a general shuffle len = gi.FS_ReadFile("ext_data/items.dat",(void **) &buffer); IT_ParseParms(buffer); diff --git a/code/game/g_items.cpp b/code/game/g_items.cpp index 3469a55c..d6633a38 100644 --- a/code/game/g_items.cpp +++ b/code/game/g_items.cpp @@ -8,6 +8,10 @@ #include "g_items.h" #include "wp_saber.h" +// Randomizer : proper uniform numbers +#include +extern mt19937 rngRandoBase; + extern qboolean missionInfo_Updated; extern void CrystalAmmoSettings(gentity_t *ent); @@ -21,6 +25,11 @@ extern cvar_t *g_spskill; #define MAX_BACTA_HEAL_AMOUNT 25 +// Randomizer +extern vmCvar_t cg_enableRandomizer; +// Base game fixes +extern vmCvar_t cg_baseGameFixes; + /* Items are any object that a player can touch to gain some effect. @@ -264,6 +273,38 @@ int Pickup_Weapon (gentity_t *ent, gentity_t *other) if ( ent->item->giTag == WP_SABER && !hadWeapon ) { WP_SaberInitBladeData( other ); + if (cg_enableRandomizer.integer) // In case we get a saber before trial, get defense 1 and offense 1 so that the saber won't have bugged behavior. + { + if ((strcmp(level.mapname,"yavin_trial") != 0 )) + { + // We are getting a saber before trial, but by doing that we lock on medium style + // The only way to bypass this is to act like get_saber script : actually getting the saber THEN giving the force power + other->client->ps.forcePowerLevel[FP_SABER_OFFENSE] = 1; + other->client->ps.forcePowerLevel[FP_SABER_DEFENSE] = 1; + + other->client->ps.forcePowersKnown |= (1 << FP_SABER_OFFENSE); + other->client->ps.forcePowersKnown |= (1 << FP_SABER_DEFENSE); + + missionInfo_Updated = qtrue; // Activate flashing text + + gi.cvar_set("cg_updatedDataPadForcePower1", va("%d", FP_SABER_OFFENSE + 1)); // The +1 is offset in the print routine. + cg_updatedDataPadForcePower1.integer = FP_SABER_OFFENSE + 1; + gi.cvar_set("cg_updatedDataPadForcePower2", "0"); // The +1 is offset in the print routine. + cg_updatedDataPadForcePower2.integer = 0; + gi.cvar_set("cg_updatedDataPadForcePower3", "0"); // The +1 is offset in the print routine. + cg_updatedDataPadForcePower3.integer = 0; + + gi.cvar_set("cg_updatedDataPadForcePower1", va("%d", FP_SABER_DEFENSE + 1)); // The +1 is offset in the print routine. + cg_updatedDataPadForcePower1.integer = FP_SABER_DEFENSE + 1; + gi.cvar_set("cg_updatedDataPadForcePower2", "0"); // The +1 is offset in the print routine. + cg_updatedDataPadForcePower2.integer = 0; + gi.cvar_set("cg_updatedDataPadForcePower3", "0"); // The +1 is offset in the print routine. + cg_updatedDataPadForcePower3.integer = 0; + + + + } + } } if ( other->s.number ) @@ -376,6 +417,11 @@ int Pickup_Holocron( gentity_t *ent, gentity_t *other ) { int forcePower = ent->item->giTag; int forceLevel = ent->count; + //Always increment + if (cg_enableRandomizer.integer) { + if (other->client->ps.forcePowerLevel[forcePower] < 3) + forceLevel = other->client->ps.forcePowerLevel[forcePower] + 1; + } // check if out of range if( forceLevel < 0 || forceLevel >= NUM_FORCE_POWER_LEVELS ) { @@ -766,6 +812,15 @@ void Use_Item( gentity_t *ent, gentity_t *other, gentity_t *activator ) //====================================================================== +void updateItemMinsMaxs(gitem_t *item) { + item->mins[0] = item->mins[0] * 1.2; + item->mins[1] = item->mins[1] * 1.2; + item->mins[2] = item->mins[2] * 1.2; + item->maxs[0] = item->maxs[0] * 1.2; + item->maxs[1] = item->maxs[1] * 1.2; + item->maxs[2] = item->maxs[2] * 1.2; +} + /* ================ FinishSpawningItem @@ -777,6 +832,7 @@ free fall from their spawn points #ifndef FINAL_BUILD extern int delayedShutDown; #endif +// Posto / Randomizer : might want to check when this is called, to randomize even items on the ground (shield and bacta are going here) void FinishSpawningItem( gentity_t *ent ) { trace_t tr; vec3_t dest; @@ -792,6 +848,149 @@ void FinishSpawningItem( gentity_t *ent ) { } } + // Base game fixe : in order to get all pickups in ns_starpad, we have to change the two metallic ammo to something else + if (cg_baseGameFixes.integer) + { + if ((strcmp(level.mapname, "ns_starpad")) == 0) + { + if (item->giTag == 4 && item->giType == 2) // Metal ammo + { + item = bg_itemlist + ITM_AMMO_POWERCELL_PICKUP; + //item = bg_itemlist + ITM_BRYAR_PISTOL_PICKUP; + ent->classname == item->classname; + ent->item = item; + } + } + } + + + // Randomizer : after getting the item from bg_itemlist, we can finally randomize it here, because every items goes into this function and not only "gun rack" + gitem_t* itemNew; + gitem_t* itemOld; // So that we have a copy of this, for debugging purpose + if (cg_enableRandomizer.integer) + { + itemOld = item; + uniform_int_distribution itemDist(1,53); + int rng = itemDist(rngRandoBase); + itemNew = bg_itemlist + rng; + // No baton, no strange items. + if ((strcmp(level.mapname, "yavin_trial"))) + { + // No strange weapon, 'shield' and 'datapad' + while ((itemNew->giTag >= 13 && itemNew->giTag <= 22) || (itemNew->giTag == 43) || (itemNew->giTag == 45)) + { + rng = itemDist(rngRandoBase); + itemNew = bg_itemlist + rng; + } + if (itemNew->giType == IT_HOLOCRON || (itemNew->giTag == WP_SABER && itemNew->giType == IT_WEAPON)) // In case we roll a saber or an holocron, we shall roll a 33/66 to keep the item or not + { + uniform_int_distribution holocronDist(0, 2); + rng = holocronDist(rngRandoBase); + if (!rng) // We rolled a 0, reroll once + { + rng = itemDist(rngRandoBase); + // No strange weapon, 'shield' and 'datapad' + while ((itemNew->giTag >= 13 && itemNew->giTag <= 22) || (itemNew->giTag == 43) || (itemNew->giTag == 45)) + { + rng = itemDist(rngRandoBase); + itemNew = bg_itemlist + rng; + } + } + // else, we rolled a >=1, we keep the saber/holocron + + if (itemNew->giType == IT_HOLOCRON) ent->count = 0; + updateItemMinsMaxs(itemNew); + } + else + { + //Expand 'hitbox' of randomly spawned items a little so they can be picked up while partially clipped into geometry + //not for holocrons as their pickup range is pretty large already + // Posto Edit : I encountered holocron that were inside walls, so might as well update their hitbox too + updateItemMinsMaxs(itemNew); + } + item = itemNew; + ent->classname == item->classname; + ent->item = item; + } + else // Don't do anything if we are in trial (or other exceptions), we CAN'T not get these force powers + { + + } + + /* + IT_BAD, + IT_WEAPON, + IT_AMMO, + IT_ARMOR, + IT_HEALTH, + IT_HOLDABLE, + IT_BATTERY, + IT_HOLOCRON, + */ + /*ITM_NONE, // 0 + ITM_SABER_PICKUP, + ITM_BRYAR_PISTOL_PICKUP, + ITM_BLASTER_PICKUP, + ITM_DISRUPTOR_PICKUP, + ITM_BOWCASTER_PICKUP, + ITM_REPEATER_PICKUP, + ITM_DEMP2_PICKUP, + ITM_FLECHETTE_PICKUP, + ITM_ROCKET_LAUNCHER_PICKUP, + ITM_THERMAL_DET_PICKUP, + ITM_TRIP_MINE_PICKUP, + ITM_DET_PACK_PICKUP, + ITM_STUN_BATON_PICKUP, // 13 + + ITM_BOT_LASER_PICKUP, + ITM_EMPLACED_GUN_PICKUP, + ITM_TURRET_PICKUP, + ITM_MELEE, + ITM_ATST_MAIN_PICKUP, + ITM_ATST_SIDE_PICKUP, + ITM_TIE_FIGHTER_PICKUP, + ITM_RAPID_FIRE_CONC_PICKUP, + ITM_BLASTER_PISTOL_PICKUP, // 22 + + ITM_AMMO_FORCE_PICKUP, + ITM_AMMO_BLASTER_PICKUP, + ITM_AMMO_POWERCELL_PICKUP, + ITM_AMMO_METAL_BOLTS_PICKUP, + ITM_AMMO_ROCKETS_PICKUP, + ITM_AMMO_EMPLACED_PICKUP, + ITM_AMMO_THERMAL_PICKUP, + ITM_AMMO_TRIPMINE_PICKUP, + ITM_AMMO_DETPACK_PICKUP, // 31 + + ITM_FORCE_HEAL_PICKUP, + ITM_FORCE_LEVITATION_PICKUP, + ITM_FORCE_SPEED_PICKUP, + ITM_FORCE_PUSH_PICKUP, + ITM_FORCE_PULL_PICKUP, + ITM_FORCE_TELEPATHY_PICKUP, + ITM_FORCE_GRIP_PICKUP, + ITM_FORCE_LIGHTNING_PICKUP, + ITM_FORCE_SABERTHROW_PICKUP, // 40 + + ITM_BATTERY_PICKUP, + ITM_SEEKER_PICKUP, + ITM_SHIELD_PICKUP, + ITM_BACTA_PICKUP, + ITM_DATAPAD_PICKUP, + ITM_BINOCULARS_PICKUP, + ITM_SENTRY_GUN_PICKUP, + ITM_LA_GOGGLES_PICKUP, // 48 + + ITM_MEDPAK_PICKUP, + ITM_SHIELD_SM_PICKUP, + ITM_SHIELD_LRG_PICKUP, + ITM_GOODIE_KEY_PICKUP, + ITM_SECURITY_KEY_PICKUP, // 53 + + ITM_NUM_ITEMS // 54 + */ + } + // Set bounding box for item VectorSet( ent->mins, item->mins[0],item->mins[1] ,item->mins[2]); VectorSet( ent->maxs, item->maxs[0],item->maxs[1] ,item->maxs[2]); @@ -853,24 +1052,27 @@ void FinishSpawningItem( gentity_t *ent ) { // drop to floor VectorSet( dest, ent->s.origin[0], ent->s.origin[1], MIN_WORLD_COORD ); gi.trace( &tr, ent->s.origin, ent->mins, ent->maxs, dest, ent->s.number, MASK_SOLID|CONTENTS_PLAYERCLIP, (EG2_Collision)0, 0 ); - if ( tr.startsolid ) + if (!cg_enableRandomizer.integer) // During normal gameplay, we have to keep this code to be as faithful to the base game { - if ( &g_entities[tr.entityNum] != NULL ) + if (tr.startsolid) { - gi.Printf (S_COLOR_RED"FinishSpawningItem: removing %s startsolid at %s (in a %s)\n", ent->classname, vtos(ent->s.origin), g_entities[tr.entityNum].classname ); - } - else - { - gi.Printf (S_COLOR_RED"FinishSpawningItem: removing %s startsolid at %s (in a %s)\n", ent->classname, vtos(ent->s.origin) ); - } - assert( 0 && "item starting in solid"); + if (&g_entities[tr.entityNum] != NULL) + { + gi.Printf(S_COLOR_RED"FinishSpawningItem: removing %s startsolid at %s (in a %s)\n", ent->classname, vtos(ent->s.origin), g_entities[tr.entityNum].classname); + } + else + { + gi.Printf(S_COLOR_RED"FinishSpawningItem: removing %s startsolid at %s (in a %s)\n", ent->classname, vtos(ent->s.origin)); + } + assert( 0 && "item starting in solid"); #ifndef FINAL_BUILD if (!g_entities[ENTITYNUM_WORLD].s.radius){ //not a region delayedShutDown = level.time + 100; } #endif - G_FreeEntity( ent ); - return; + G_FreeEntity(ent); + return; + } } // allow to ride movers diff --git a/code/game/g_items.h b/code/game/g_items.h index 57c8d3fe..df1b786f 100644 --- a/code/game/g_items.h +++ b/code/game/g_items.h @@ -6,7 +6,7 @@ // Items enums typedef enum { -ITM_NONE, +ITM_NONE, // 0 ITM_SABER_PICKUP, ITM_BRYAR_PISTOL_PICKUP, @@ -20,7 +20,7 @@ ITM_ROCKET_LAUNCHER_PICKUP, ITM_THERMAL_DET_PICKUP, ITM_TRIP_MINE_PICKUP, ITM_DET_PACK_PICKUP, -ITM_STUN_BATON_PICKUP, +ITM_STUN_BATON_PICKUP, // 13 ITM_BOT_LASER_PICKUP, ITM_EMPLACED_GUN_PICKUP, @@ -30,7 +30,7 @@ ITM_ATST_MAIN_PICKUP, ITM_ATST_SIDE_PICKUP, ITM_TIE_FIGHTER_PICKUP, ITM_RAPID_FIRE_CONC_PICKUP, -ITM_BLASTER_PISTOL_PICKUP, +ITM_BLASTER_PISTOL_PICKUP, // 22 ITM_AMMO_FORCE_PICKUP, ITM_AMMO_BLASTER_PICKUP, @@ -40,7 +40,7 @@ ITM_AMMO_ROCKETS_PICKUP, ITM_AMMO_EMPLACED_PICKUP, ITM_AMMO_THERMAL_PICKUP, ITM_AMMO_TRIPMINE_PICKUP, -ITM_AMMO_DETPACK_PICKUP, +ITM_AMMO_DETPACK_PICKUP, // 31 ITM_FORCE_HEAL_PICKUP, ITM_FORCE_LEVITATION_PICKUP, @@ -50,7 +50,7 @@ ITM_FORCE_PULL_PICKUP, ITM_FORCE_TELEPATHY_PICKUP, ITM_FORCE_GRIP_PICKUP, ITM_FORCE_LIGHTNING_PICKUP, -ITM_FORCE_SABERTHROW_PICKUP, +ITM_FORCE_SABERTHROW_PICKUP, // 40 ITM_BATTERY_PICKUP, ITM_SEEKER_PICKUP, @@ -59,15 +59,15 @@ ITM_BACTA_PICKUP, ITM_DATAPAD_PICKUP, ITM_BINOCULARS_PICKUP, ITM_SENTRY_GUN_PICKUP, -ITM_LA_GOGGLES_PICKUP, +ITM_LA_GOGGLES_PICKUP, // 48 ITM_MEDPAK_PICKUP, ITM_SHIELD_SM_PICKUP, ITM_SHIELD_LRG_PICKUP, ITM_GOODIE_KEY_PICKUP, -ITM_SECURITY_KEY_PICKUP, +ITM_SECURITY_KEY_PICKUP, // 53 -ITM_NUM_ITEMS +ITM_NUM_ITEMS // 54 }; // Inventory item enums diff --git a/code/game/g_main.cpp b/code/game/g_main.cpp index 5651c762..0d9a8eef 100644 --- a/code/game/g_main.cpp +++ b/code/game/g_main.cpp @@ -15,6 +15,9 @@ #include "objectives.h" #include "../cgame/cg_local.h" // yeah I know this is naughty, but we're shipping soon... +#include +#include "../randomizer/RandomizerUtils.h" + extern CNavigator navigator; static int navCalcPathTime = 0; int eventClearTime = 0; @@ -476,6 +479,8 @@ void G_FindTeams( void ) { continue; if (e->flags & FL_TEAMSLAVE) continue; + if (e->spawnflags & SFB_CINEMATIC) //Ignore cinematic NPCs + continue; e->teammaster = e; c++; c2++; @@ -567,6 +572,7 @@ void G_InitCvars( void ) { g_iscensored = gi.cvar( "ui_iscensored", "0", CVAR_ARCHIVE|CVAR_ROM|CVAR_INIT|CVAR_CHEAT|CVAR_NORESTART ); } + /* ============ InitGame @@ -587,6 +593,18 @@ void InitGame( const char *mapname, const char *spawntarget, int checkSum, cons { int i; + //Reset randomiser seed on new load of kejim_post + + if (cg_enableRandomizer.integer) + { + if ( (!Q_stricmp(mapname, "kejim_post") && eSavedGameJustLoaded == eNO) || eSavedGameJustLoaded == eRESET) { + RandomizerUtils::RegenerateSeed(); + } + char seed[MAX_STRING_CHARS]; + gi.Cvar_VariableStringBuffer("cg_setSeed", seed, sizeof(seed)); + RandomizerUtils::seedRandomizer(seed, mapname); + } + giMapChecksum = checkSum; g_eSavedGameJustLoaded = eSavedGameJustLoaded; g_qbLoadTransition = qbLoadTransition; @@ -595,7 +613,8 @@ void InitGame( const char *mapname, const char *spawntarget, int checkSum, cons gi.Printf ("gamename: %s\n", GAMEVERSION); gi.Printf ("gamedate: %s\n", __DATE__); - srand( randomSeed ); + // Randomizer should control seeding, in normal game it's the same code + if(!cg_enableRandomizer.integer) srand( randomSeed ); G_InitCvars(); @@ -670,12 +689,16 @@ void InitGame( const char *mapname, const char *spawntarget, int checkSum, cons gi.Printf ("-----------------------------------\n"); + //Removed below so as not to interfere with consistent randomizer results //randomize the rand functions - byte num_calls = (byte)timeGetTime(); - - for(i = 0; i < (int)num_calls; i++) + if (!cg_enableRandomizer.integer) { - rand(); + byte num_calls = (byte)timeGetTime(); + + for (i = 0; i < (int)num_calls; i++) + { + rand(); + } } if ( navCalculatePaths ) @@ -962,7 +985,7 @@ void G_RunThink (gentity_t *ent) { goto runicarus; } - + ent->nextthink = 0; if ( ent->e_ThinkFunc == thinkF_NULL ) // actually you don't need this if I check for it in the next function -slc { @@ -1272,7 +1295,7 @@ void G_RunFrame( int levelTime ) { continue; ent = &g_entities[i]; - + if ( ent->waypoint != WAYPOINT_NONE && ent->noWaypointTime < level.time ) { diff --git a/code/game/g_misc_model.cpp b/code/game/g_misc_model.cpp index 43171bd0..661fb35a 100644 --- a/code/game/g_misc_model.cpp +++ b/code/game/g_misc_model.cpp @@ -8,6 +8,11 @@ extern cvar_t *g_spskill; +// Randomizer / Posto : funcitons +extern int GetRandomizedWeapon(); +extern int GetRandomizedAmmo(); +extern vmCvar_t cg_enableRandomizer; + // // Helper functions // @@ -627,6 +632,11 @@ void spawn_rack_goods( gentity_t *ent ) // the gun so we don't put the pack on the same spot..so pick either the left or right side pos = ( random() > .5 ) ? -1 : 1; + // Posto : Randomize the weapon here + if (cg_enableRandomizer.integer) + { + //it = FindItemForWeapon((weapon_t)GetRandomizedWeapon()); + } GunRackAddItem( it, ent->s.origin, ent->s.angles, crandom() * 2, ( random() * 6 + 4 ) * pos, v_off ); } } @@ -645,6 +655,7 @@ void spawn_rack_goods( gentity_t *ent ) pos *= -1; } + // Posto : we should leave health as is, it would make the game too hard without any garanted health GunRackAddItem( health, ent->s.origin, ent->s.angles, crandom() * 0.5f, ( random() * 4 + 4 ) * pos, 24 ); } diff --git a/code/game/g_missile.cpp b/code/game/g_missile.cpp index eccb6e2e..48987995 100644 --- a/code/game/g_missile.cpp +++ b/code/game/g_missile.cpp @@ -16,6 +16,7 @@ extern qboolean PM_SaberInIdle( int move ); extern qboolean PM_SaberInAttack( int move ); extern qboolean PM_SaberInTransitionAny( int move ); extern qboolean PM_SaberInSpecialAttack( int anim ); +extern vmCvar_t cg_enableRandomizer; //------------------------------------------------------------------------- #ifdef _IMMERSION @@ -42,6 +43,22 @@ void G_MissileBounceEffect( gentity_t *ent, vec3_t org, vec3_t dir ) G_PlayEffect( "blaster/deflect", ent->currentOrigin, dir ); #endif // _IMMERSION break; + //Amber this should be a temp fix, we really need to figure out how to up GENTITYNUM_BITS value safely + case WP_REPEATER: //Reduce missile spam created by repeaters to reduce risk of going over entity limit + // Sure, we can keep rand for this, don't want an rng engine just for this. + if (rand() % 2 == 0) { + gentity_t* tent = G_TempEntity(org, EV_GRENADE_BOUNCE); + VectorCopy(dir, tent->pos1); + tent->s.weapon = ent->s.weapon; +#ifdef _IMMERSION + if (hitEntNum != -1) + { + tent->s.saberActive = 1; + tent->s.otherEntityNum = hitEntNum; + } + } + break; +#endif // _IMMERSION default: { gentity_t *tent = G_TempEntity( org, EV_GRENADE_BOUNCE ); @@ -562,6 +579,10 @@ void G_MissileImpact( gentity_t *ent, trace_t *trace, int hitLoc=HL_NONE ) other = &g_entities[trace->entityNum]; if ( other == ent ) { + //Debug convenience, this doesn't change anything in FinalBuild but prevents popups when debugging + if (cg_enableRandomizer.integer) { + return; + } assert(0&&"missile hit itself!!!"); return; } diff --git a/code/game/g_public.h b/code/game/g_public.h index 90c92b5e..44f67a53 100644 --- a/code/game/g_public.h +++ b/code/game/g_public.h @@ -51,6 +51,7 @@ typedef enum eNO = 0, eFULL, eAUTO, + eRESET //Used when loading auto_kejim_post to reset } SavedGameJustLoaded_e; diff --git a/code/game/g_spawn.cpp b/code/game/g_spawn.cpp index 70143d7c..406cf966 100644 --- a/code/game/g_spawn.cpp +++ b/code/game/g_spawn.cpp @@ -465,6 +465,59 @@ void SP_NPC_Droid_R2D2( gentity_t *self ); void SP_NPC_Droid_R5D2( gentity_t *self ); void SP_NPC_Droid_Protocol( gentity_t *self ); +// Posto : Ajouter toutes les fonctions qui permettent de faire spawn en random ou non +void SP_NPC_Spawn_Random(gentity_t* self); +void SP_NPC_Kyle_Random(gentity_t* self); +void SP_NPC_Lando_Random(gentity_t* self); +void SP_NPC_Jan_Random(gentity_t* self); +void SP_NPC_Luke_Random(gentity_t* self); +void SP_NPC_MonMothma_Random(gentity_t* self); +void SP_NPC_Tavion_Random(gentity_t* self); +void SP_NPC_Reelo_Random(gentity_t* self); +void SP_NPC_Galak_Random(gentity_t* self); +void SP_NPC_Desann_Random(gentity_t* self); +void SP_NPC_Bartender_Random(gentity_t* self); +void SP_NPC_MorganKatarn_Random(gentity_t* self); +void SP_NPC_Jedi_Random(gentity_t* self); +void SP_NPC_Prisoner_Random(gentity_t* self); +void SP_NPC_Rebel_Random(gentity_t* self); +void SP_NPC_Stormtrooper_Random(gentity_t* self); +void SP_NPC_StormtrooperOfficer_Random(gentity_t* self); +void SP_NPC_Tie_Pilot_Random(gentity_t* self); +void SP_NPC_Ugnaught_Random(gentity_t* self); +void SP_NPC_Gran_Random(gentity_t* self); +void SP_NPC_Rodian_Random(gentity_t* self); +void SP_NPC_Weequay_Random(gentity_t* self); +void SP_NPC_Trandoshan_Random(gentity_t* self); +void SP_NPC_SwampTrooper_Random(gentity_t* self); +void SP_NPC_Imperial_Random(gentity_t* self); +void SP_NPC_ImpWorker_Random(gentity_t* self); +void SP_NPC_BespinCop_Random(gentity_t* self); +void SP_NPC_Reborn_Random(gentity_t* self); +void SP_NPC_ShadowTrooper_Random(gentity_t* self); +void SP_NPC_Monster_Murjj_Random(gentity_t* self); +void SP_NPC_Monster_Swamp_Random(gentity_t* self); +void SP_NPC_Monster_Howler_Random(gentity_t* self); +void SP_NPC_Monster_Claw_Random(gentity_t* self); +void SP_NPC_Monster_Glider_Random(gentity_t* self); +void SP_NPC_Monster_Flier2_Random(gentity_t* self); +void SP_NPC_Monster_Lizard_Random(gentity_t* self); +void SP_NPC_Monster_Fish_Random(gentity_t* self); +void SP_NPC_MineMonster_Random(gentity_t* self); +void SP_NPC_Droid_Interrogator_Random(gentity_t* self); +void SP_NPC_Droid_Probe_Random(gentity_t* self); +void SP_NPC_Droid_Mark1_Random(gentity_t* self); +void SP_NPC_Droid_Mark2_Random(gentity_t* self); +void SP_NPC_Droid_ATST_Random(gentity_t* self); +void SP_NPC_Droid_Seeker_Random(gentity_t* self); +void SP_NPC_Droid_Remote_Random(gentity_t* self); +void SP_NPC_Droid_Sentry_Random(gentity_t* self); +void SP_NPC_Droid_Gonk_Random(gentity_t* self); +void SP_NPC_Droid_Mouse_Random(gentity_t* self); +void SP_NPC_Droid_R2D2_Random(gentity_t* self); +void SP_NPC_Droid_R5D2_Random(gentity_t* self); +void SP_NPC_Droid_Protocol_Random(gentity_t* self); + void SP_waypoint (gentity_t *ent); void SP_waypoint_small (gentity_t *ent); void SP_waypoint_navgoal (gentity_t *ent); @@ -596,6 +649,7 @@ spawn_t spawns[] = { //new NPC ents {"NPC_spawner", SP_NPC_spawner}, + /* {"NPC_Kyle", SP_NPC_Kyle }, {"NPC_Lando", SP_NPC_Lando }, {"NPC_Jan", SP_NPC_Jan }, @@ -646,6 +700,59 @@ spawn_t spawns[] = { {"NPC_Droid_R2D2", SP_NPC_Droid_R2D2 }, {"NPC_Droid_R5D2", SP_NPC_Droid_R5D2 }, {"NPC_Droid_Protocol", SP_NPC_Droid_Protocol }, + */ + + // Posto + { "NPC_Kyle", SP_NPC_Kyle_Random }, + { "NPC_Lando", SP_NPC_Lando_Random }, + { "NPC_Jan", SP_NPC_Jan_Random }, + { "NPC_Luke", SP_NPC_Luke_Random }, + { "NPC_MonMothma", SP_NPC_MonMothma_Random }, + { "NPC_Tavion", SP_NPC_Tavion_Random }, + { "NPC_Reelo", SP_NPC_Reelo_Random }, + { "NPC_Galak", SP_NPC_Galak_Random }, + { "NPC_Desann", SP_NPC_Desann_Random }, + { "NPC_Bartender", SP_NPC_Bartender_Random }, + { "NPC_MorganKatarn", SP_NPC_MorganKatarn_Random }, + { "NPC_Jedi", SP_NPC_Jedi_Random }, + { "NPC_Prisoner", SP_NPC_Prisoner_Random }, + { "NPC_Rebel", SP_NPC_Rebel_Random }, + { "NPC_Stormtrooper", SP_NPC_Stormtrooper_Random }, + { "NPC_StormtrooperOfficer", SP_NPC_StormtrooperOfficer_Random }, + { "NPC_Tie_Pilot", SP_NPC_Tie_Pilot_Random }, + { "NPC_Ugnaught", SP_NPC_Ugnaught_Random }, + { "NPC_Gran", SP_NPC_Gran_Random }, + { "NPC_Rodian", SP_NPC_Rodian_Random }, + { "NPC_Weequay", SP_NPC_Weequay_Random }, + { "NPC_Trandoshan", SP_NPC_Trandoshan_Random }, + { "NPC_SwampTrooper", SP_NPC_SwampTrooper_Random }, + { "NPC_Imperial", SP_NPC_Imperial_Random }, + { "NPC_ImpWorker", SP_NPC_ImpWorker_Random }, + { "NPC_BespinCop", SP_NPC_BespinCop_Random }, + { "NPC_Reborn", SP_NPC_Reborn_Random }, + { "NPC_ShadowTrooper", SP_NPC_ShadowTrooper_Random }, + { "NPC_Monster_Murjj", SP_NPC_Monster_Murjj_Random }, + { "NPC_Monster_Swamp", SP_NPC_Monster_Swamp_Random }, + { "NPC_Monster_Howler", SP_NPC_Monster_Howler_Random }, + { "NPC_MineMonster", SP_NPC_MineMonster_Random }, + { "NPC_Monster_Claw", SP_NPC_Monster_Claw_Random }, + { "NPC_Monster_Glider", SP_NPC_Monster_Glider_Random }, + { "NPC_Monster_Flier2", SP_NPC_Monster_Flier2_Random }, + { "NPC_Monster_Lizard", SP_NPC_Monster_Lizard_Random }, + { "NPC_Monster_Fish", SP_NPC_Monster_Fish_Random }, + { "NPC_Droid_Interrogator", SP_NPC_Droid_Interrogator_Random }, + { "NPC_Droid_Probe", SP_NPC_Droid_Probe_Random }, + { "NPC_Droid_Mark1", SP_NPC_Droid_Mark1_Random }, + { "NPC_Droid_Mark2", SP_NPC_Droid_Mark2_Random }, + { "NPC_Droid_ATST", SP_NPC_Droid_ATST_Random }, + { "NPC_Droid_Seeker", SP_NPC_Droid_Seeker_Random }, + { "NPC_Droid_Remote", SP_NPC_Droid_Remote_Random }, + { "NPC_Droid_Sentry", SP_NPC_Droid_Sentry_Random }, + { "NPC_Droid_Gonk", SP_NPC_Droid_Gonk_Random }, + { "NPC_Droid_Mouse", SP_NPC_Droid_Mouse_Random }, + { "NPC_Droid_R2D2", SP_NPC_Droid_R2D2_Random }, + { "NPC_Droid_R5D2", SP_NPC_Droid_R5D2_Random }, + { "NPC_Droid_Protocol", SP_NPC_Droid_Protocol_Random }, {"waypoint", SP_waypoint}, {"waypoint_small", SP_waypoint_small}, diff --git a/code/game/g_svcmds.cpp b/code/game/g_svcmds.cpp index bd0d003c..a881adec 100644 --- a/code/game/g_svcmds.cpp +++ b/code/game/g_svcmds.cpp @@ -7,6 +7,9 @@ #include "g_icarus.h" #include "wp_saber.h" +//#include <..\game\NPC_spawn.cpp> +extern void RandomizerInfoCommandCatcher(int page); // It's declared in NPC_spawn.cpp + extern void Q3_SetViewEntity(int entID, const char *name); extern qboolean G_ClearViewEntity( gentity_t *ent ); @@ -923,6 +926,16 @@ qboolean ConsoleCommand( void ) { { Svcmd_ExitView_f(); } + + // Posto : This is caught first + if (Q_stricmp(cmd, "randomizer_info") == 0) + { + // After randomizer_info, we want to catch the first arg. If not set (page is a 0 size char array), send page -1 (equivalent to a help page) + // Does that mean that a page 0 exist ? No, if a page is not referenced, we print the help page. + char* page = gi.argv(1); + if (strlen(page)==0) RandomizerInfoCommandCatcher(-1); // Show the 'help page' + else RandomizerInfoCommandCatcher(atoi(page)); + } return qfalse; } diff --git a/code/game/g_weapon.cpp b/code/game/g_weapon.cpp index cfbdb2b3..6d68cec6 100644 --- a/code/game/g_weapon.cpp +++ b/code/game/g_weapon.cpp @@ -23,6 +23,20 @@ extern qboolean PM_DroidMelee( int npc_class ); static gentity_t *ent_list[MAX_GENTITIES]; +// Randomizer +#include +extern vmCvar_t cg_enableRandomizer; +extern vmCvar_t cg_enableRandomizerEnhancements; +extern vmCvar_t cg_enableRandWeaponProjectile; +extern vmCvar_t cg_enableRandWeaponProjectileMode; +extern mt19937 rngRandoEnhancements; +char lastCheckedMap[32] = "first_iteration"; +vector arrayNpcTracker; // Keep the pointers, if they match during a check with 'ent', we know it's the same +vector arrayWeaponProjectiles; // Keep the projectile type for the N-th entity on npcTracker +vector arrayKyleWP; + + + // Bryar Pistol //-------- #define BRYAR_PISTOL_VEL 1800 @@ -3487,6 +3501,84 @@ void FireWeapon( gentity_t *ent, qboolean alt_fire ) ent->alt_fire = alt_fire; CalcMuzzlePoint ( ent, forwardVec, vright, up, muzzle , 0); + // Randomizer + uniform_int_distribution Weapon_Type_Dist(WP_BRYAR_PISTOL, WP_ROCKET_LAUNCHER); + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer && cg_enableRandWeaponProjectile.integer) + { + // Precache the weapons + RegisterItem(FindItemForWeapon(WP_BRYAR_PISTOL)); + RegisterItem(FindItemForWeapon(WP_BLASTER)); + RegisterItem(FindItemForWeapon(WP_DISRUPTOR)); + RegisterItem(FindItemForWeapon(WP_BOWCASTER)); + RegisterItem(FindItemForWeapon(WP_REPEATER)); + RegisterItem(FindItemForWeapon(WP_DEMP2)); + RegisterItem(FindItemForWeapon(WP_FLECHETTE)); + RegisterItem(FindItemForWeapon(WP_ROCKET_LAUNCHER)); + + if (cg_enableRandWeaponProjectileMode.integer) // Chaos mode + { + // If the weapon we are using is like a blaster or something, I don't want to randomize mines and others + if (ent->s.weapon >= WP_BRYAR_PISTOL && ent->s.weapon <= WP_ROCKET_LAUNCHER) + { + int rng = Weapon_Type_Dist(rngRandoEnhancements); + ent->s.weapon = rng; + } + } + else + { + // We need to be smart here + int rng; + // 1. Check if the map changed + if (strcmp(lastCheckedMap, level.mapname)) // If different, will output 1 or -1, which are both valid for a if staement + { + // Reset our tabs, keep the first 10 places for Kyle + //randomNumbers.push_back(dist(rng)); + strcpy(lastCheckedMap, level.mapname); + arrayKyleWP.clear(); + arrayWeaponProjectiles.clear(); + arrayNpcTracker.clear(); + for (int i = 0; i < 16; i++) // 8 possible weapons between bryar and rocket, *2 because of altfire + { + rng = Weapon_Type_Dist(rngRandoEnhancements); + arrayKyleWP.push_back(rng); + } + + } + // 2. If the weapon we are using is like a blaster or something, I don't want to randomize mines and others + if (ent->s.weapon >= WP_BRYAR_PISTOL && ent->s.weapon <= WP_ROCKET_LAUNCHER) + { + if (strcmp(ent->classname, "player") == 0) + { + // 3.1. Check if it's the player + ent->s.weapon = arrayKyleWP[ent->s.weapon - 2 + alt_fire] ; // -2 because Bryar is 2 and my array starts at 0 duh. +1 alt fire is needed + } + else + { + // 3.2 Check if this NPC is already present in our array, of not we must declare if. + // Since they have only one weapon each, I will do only one entry per NPC (non Kyle) + // If it's Kyle/the player, we need one entry per weapon of course and the alt fire + bool flagNpcExists = false; + for (int i = 0; i < arrayNpcTracker.size(); i++) + { + if (ent == arrayNpcTracker[i]) flagNpcExists = true; + } + if (!flagNpcExists) // NPC doesn't exist in my array, add the pointer to it and generate a new projectile for the guy + { + rng = Weapon_Type_Dist(rngRandoEnhancements); + arrayNpcTracker.push_back(ent); + arrayWeaponProjectiles.push_back(rng); + } + // 3 Find the correct projectile the NPC can shoot + for (int i = 0; i < arrayNpcTracker.size(); i++) + { + if (ent == arrayNpcTracker[i]) ent->s.weapon = arrayWeaponProjectiles[i]; + } + } + } + + } + } + // fire the specific weapon switch( ent->s.weapon ) { diff --git a/code/game/g_weaponLoad.cpp b/code/game/g_weaponLoad.cpp index 5faa59bb..31fcb828 100644 --- a/code/game/g_weaponLoad.cpp +++ b/code/game/g_weaponLoad.cpp @@ -142,6 +142,13 @@ void WPN_AltChargeFrc(const char **holdBuf); void WPN_StopFrc(const char **holdBuf); void WPN_SelectFrc(const char **holdBuf); //#endif // _IMMERSION +//#ifdef _RANDOMIZER +// Posto : Get randomized weapons and ammo in the map +int GetRandomizedAmmo(); +int GetRandomizedWeapon(); +//#endif _RANDOMIZER + + typedef struct { @@ -1322,6 +1329,8 @@ void WP_LoadWeaponParms (void) char *buffer; int len; + // Posto : this function is called at every map load, meaning we can shuffle the content using our seed ! + // Also, we can reshuffle the content of wepaon/ammo rack on g_misc_model to have even more len = gi.FS_ReadFile("ext_data/weapons.dat",(void **) &buffer); // initialise the data area @@ -1330,4 +1339,70 @@ void WP_LoadWeaponParms (void) WP_ParseParms(buffer); gi.FS_FreeFile( buffer ); //let go of the buffer +} + +// Posto : Functions called when getting a new kind of ammo / weapon (exemple : g_misc_model for ammo racks) +int GetRandomizedAmmo() +{ + // 8 kind of ammo, and we skip "none" and "force" + int rng = rand() % 8 + 2; + while (rng == 6) rng = rand() % 8 + 2; // In case we get a 6 (ammo_emplaced), reroll + + switch (rng) + { + case 2: + return AMMO_BLASTER; + case 3: + return AMMO_POWERCELL; + case 4: + return AMMO_METAL_BOLTS; + case 5: + return AMMO_ROCKETS; + case 7: + return AMMO_THERMAL; + case 8: + return AMMO_TRIPMINE; + case 9: + return AMMO_DETPACK; + default: // Secours + return AMMO_BLASTER; + } +} + +int GetRandomizedWeapon() +{ + // 13 kind of weapons, and we skip "none", the lightsaber, explosives and the stun baton + int rng = rand() % 8 + 2; + + switch (rng) + { + case 1: + return WP_SABER; // Impossible for now, it's rather buggy, let's just get it naturally at yavin_trial + case 2: + return WP_BRYAR_PISTOL; + case 3: + return WP_BLASTER; + case 4: + return WP_DISRUPTOR; + case 5: + return WP_BOWCASTER; + case 6: + return WP_REPEATER; + case 7: + return WP_DEMP2; + case 8: + return WP_FLECHETTE; + case 9: + return WP_ROCKET_LAUNCHER; + case 10: + return WP_THERMAL; // Something wrong is happening, they have no ammo when picked up + case 11: + return WP_TRIP_MINE; // Something wrong is happening, they have no ammo when picked up + case 12: + return WP_DET_PACK; // Something wrong is happening, they have no ammo when picked up + case 13: + return WP_STUN_BATON; + default: // Secours + return WP_BLASTER; + } } \ No newline at end of file diff --git a/code/game/game.vcxproj b/code/game/game.vcxproj index 14ac6f91..6ebfefd6 100644 --- a/code/game/game.vcxproj +++ b/code/game/game.vcxproj @@ -25,22 +25,22 @@ DynamicLibrary - v142 + v143 false DynamicLibrary - v142 + v143 false DynamicLibrary - v142 + v143 false DynamicLibrary - v142 + v143 false @@ -718,6 +718,11 @@ Use common_headers.h + + false + NotUsing + NotUsing + true true @@ -1477,6 +1482,7 @@ + diff --git a/code/game/game.vcxproj.filters b/code/game/game.vcxproj.filters index 20c3b76d..2c32f253 100644 --- a/code/game/game.vcxproj.filters +++ b/code/game/game.vcxproj.filters @@ -41,6 +41,9 @@ {52e1452b-6841-4ef6-8053-b87ef213c431} + + {ab905c46-58e7-4180-adf0-c696239b47ad} + @@ -442,6 +445,9 @@ speedrun\speedrun_timer_q3 + + randomizer + @@ -678,6 +684,9 @@ speedrun\speedrun_timer_q3 + + randomizer + diff --git a/code/game/q_shared.h b/code/game/q_shared.h index 7867ef7e..71d7cb4c 100644 --- a/code/game/q_shared.h +++ b/code/game/q_shared.h @@ -1155,7 +1155,8 @@ typedef struct { #define MAX_CLIENTS 1 // 128 // absolute limit #define MAX_LOCATIONS 64 -#define GENTITYNUM_BITS 10 // don't need to send any more +//#define #define GENTITYNUM_BITS 10 // Old value +#define GENTITYNUM_BITS 12 // don't need to send any more #define MAX_GENTITIES (1< MAX_CONFIGSTRINGS #endif -#define MAX_GAMESTATE_CHARS 16000 +// #define MAX_GAMESTATE_CHARS 16000 // Old value +#define MAX_GAMESTATE_CHARS 32000 // Posto : might need to increase that typedef struct { int stringOffsets[MAX_CONFIGSTRINGS]; char stringData[MAX_GAMESTATE_CHARS]; diff --git a/code/game/wp_saber.cpp b/code/game/wp_saber.cpp index 5d925f6a..f11d5be7 100644 --- a/code/game/wp_saber.cpp +++ b/code/game/wp_saber.cpp @@ -27,6 +27,9 @@ static int numVictims = 0; #define SABER_PITCH_HACK 90 +// Randomizer : proper uniform numbers +#include +extern mt19937 rngRandoEnhancements; extern cvar_t *g_timescale; extern cvar_t *g_dismemberment; @@ -98,6 +101,12 @@ void WP_ForcePowerDrain( gentity_t *self, forcePowers_t forcePower, int override extern cvar_t *g_saberAutoBlocking; extern cvar_t *g_saberRealisticCombat; +extern vmCvar_t cg_enableRandomizer; +extern vmCvar_t cg_enableRandomizerEnhancements; +extern vmCvar_t cg_enableRandSaberStyle; +extern vmCvar_t cg_enableRandSaberLength; +extern vmCvar_t cg_enableRandSaberColor; +extern vmCvar_t cg_startWithPush; extern int g_crosshairEntNum; int g_saberFlashTime = 0; @@ -271,16 +280,39 @@ void G_CreateG2AttachedWeaponModel( gentity_t *ent, const char *psWeaponModel ) { return; } - // give us a sabre model - ent->weaponModel = gi.G2API_InitGhoul2Model(ent->ghoul2, weaponModel, G_ModelIndex( weaponModel ), NULL, NULL, 0, 0); - if ( ent->weaponModel != -1 ) - { - // attach it to the hand - gi.G2API_AttachG2Model(&ent->ghoul2[ent->weaponModel], &ent->ghoul2[ent->playerModel], + // give us a sabre model + ent->weaponModel = gi.G2API_InitGhoul2Model(ent->ghoul2, weaponModel, G_ModelIndex(weaponModel), NULL, NULL, 0, 0); + + if (cg_enableRandomizer.integer && Q_stricmp(ent->classname, "player")) + {//Randomizer safe version + //We have a weapon and a model to attach it to and a bolt point on the model + if (weaponModel && ent->playerModel != -1 && ent->ghoul2[ent->playerModel].mBltlist.size() > 0) + { + //We have a hand to bolt it to + if (ent->handRBolt != -1) + { + // attach it to the hand + gi.G2API_AttachG2Model(&ent->ghoul2[ent->weaponModel], &ent->ghoul2[ent->playerModel], ent->handRBolt, ent->playerModel); + } + else + { + //If not just put it wherever lol + gi.G2API_AttachG2Model(&ent->ghoul2[ent->weaponModel], &ent->ghoul2[ent->playerModel], + 1, ent->playerModel); + } + // set up a bolt on the end so we can get where the sabre muzzle is - we can assume this is always bolt 0 + gi.G2API_AddBolt(&ent->ghoul2[ent->weaponModel], "*flash"); + } + } + else + {//Vanilla version & Kyle + // attach it to the hand + gi.G2API_AttachG2Model(&ent->ghoul2[ent->weaponModel], &ent->ghoul2[ent->playerModel], + ent->handRBolt, ent->playerModel); // set up a bolt on the end so we can get where the sabre muzzle is - we can assume this is always bolt 0 gi.G2API_AddBolt(&ent->ghoul2[ent->weaponModel], "*flash"); - //gi.G2API_SetLodBias( &ent->ghoul2[ent->weaponModel], 0 ); + //gi.G2API_SetLodBias( &ent->ghoul2[ent->weaponModel], 0 ); } } @@ -437,7 +469,15 @@ void WP_SaberInitBladeData( gentity_t *ent ) { if ( !ent->client->ps.saberAnimLevel ) {//initialize, but don't reset - ent->client->ps.saberAnimLevel = FORCE_LEVEL_2; + // Random saber style at pickup, but I need to NOT call rand() to keep NPC spawn consistent. + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer && cg_enableRandSaberStyle.integer) + { + ent->client->ps.saberAnimLevel = (level.framenum) % 3 + 1; + } + else // Normal gameplay (and yes, there is a glitch to get fast style in trial) + { + ent->client->ps.saberAnimLevel = FORCE_LEVEL_2; + } } cg.saberAnimLevelPending = ent->client->ps.saberAnimLevel; if ( ent->client->sess.missionStats.weaponUsed[WP_SABER] <= 0 ) @@ -449,14 +489,75 @@ void WP_SaberInitBladeData( gentity_t *ent ) if ( ent->client->NPC_class == CLASS_DESANN ) {//longer saber ent->client->ps.saberLengthMax = 48; + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer) + { + if (cg_enableRandSaberLength.integer) + { + uniform_int_distribution lengthDist(1, 180); + int rng = lengthDist(rngRandoEnhancements); + ent->client->ps.saberLengthMax = rng + 12; // Range of 25% to 400% of initial value + } + + if (cg_enableRandSaberColor.integer) + { + uniform_int_distribution colorDist(0, 5); + int rng = colorDist(rngRandoEnhancements); + ent->client->ps.saberColor = (saber_colors_t)rng; + } + } } else if ( ent->client->NPC_class == CLASS_REBORN ) {//shorter saber ent->client->ps.saberLengthMax = 32; + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer) + { + if (cg_enableRandSaberLength.integer) + { + uniform_int_distribution lengthDist(1, 120); + int rng = lengthDist(rngRandoEnhancements); + ent->client->ps.saberLengthMax = rng + 8; // Range of 25% to 400% of initial value + } + + if (cg_enableRandSaberColor.integer) + { + uniform_int_distribution colorDist(0, 5); + int rng = colorDist(rngRandoEnhancements); + ent->client->ps.saberColor = (saber_colors_t)rng; + } + } } else {//standard saber length - ent->client->ps.saberLengthMax = 40; + ent->client->ps.saberLengthMax = 40; // Default + if (cg_enableRandomizer.integer && cg_enableRandomizerEnhancements.integer) + { + if (ent->client->NPC_class != CLASS_KYLE) // Since it's at map load, and all npc are generated here, we may use rand() + { + if (cg_enableRandSaberLength.integer) + { + uniform_int_distribution lengthDist(1, 150); + int rng = lengthDist(rngRandoEnhancements); + ent->client->ps.saberLengthMax = rng + 10; // Range of 25% to 400% of initial value + } + + if (cg_enableRandSaberColor.integer) + { + uniform_int_distribution colorDist(0, 5); + int rng = colorDist(rngRandoEnhancements); + ent->client->ps.saberColor = (saber_colors_t)rng; + } + } + else // That's Kyle, when drawing the saber might as well use the current time for the saber lenght + { + if (cg_enableRandSaberLength.integer) ent->client->ps.saberLengthMax = level.framenum % 151 + 10; // Range of 25% to 400% of initial value + if (cg_enableRandSaberColor.integer) + { + uniform_int_distribution colorDist(0, 5); + int rng = colorDist(rngRandoEnhancements); + ent->client->ps.saberColor = (saber_colors_t)rng; + } + } + } } if ( ent->client->ps.saberEntityNum <= 0 || ent->client->ps.saberEntityNum >= ENTITYNUM_WORLD ) @@ -4866,6 +4967,24 @@ void WP_SaberStartMissileBlockCheck( gentity_t *self, usercmd_t *ucmd ) trace_t trace; vec3_t traceTo, entDir; + //I am one of the end guys on ns_starpad and have to be killed with a turret, so if I block the game is softlocked + if (cg_enableRandomizer.integer && !Q_stricmp(level.mapname, "ns_starpad") + && self->targetname && !Q_strncmp(self->targetname, "end_thug", 8) + || cg_enableRandomizer.integer && !Q_stricmp(level.mapname, "ns_starpad") + && self->targetname && !Q_strncmp(self->targetname, "reelo_thug", 10) + || cg_enableRandomizer.integer && !Q_stricmp(level.mapname, "ns_starpad") + && self->targetname && !Q_strncmp(self->targetname, "bea", 3)) { + // Excessive, but disable saber defense at each check + self->client->ps.forcePowersKnown &= ~(1 << FP_SABER_DEFENSE); // Remove the bit + self->client->ps.forcePowerLevel[FP_SABER_DEFENSE] = FORCE_LEVEL_0; + return; + } + if (cg_enableRandomizer.integer && !Q_stricmp(level.mapname, "artus_topside") && self->targetname && !Q_strncmp(self->targetname, "cinematic9_desann", 17)) + { + // Excessive, but give this NPC saber defense 3 at each check + self->client->ps.forcePowersKnown |= (1 << FP_SABER_DEFENSE); + self->client->ps.forcePowerLevel[FP_SABER_DEFENSE] = FORCE_LEVEL_3; + } if ( self->client->ps.weapon != WP_SABER ) { @@ -8598,27 +8717,48 @@ void WP_InitForcePowers( gentity_t *ent ) } else {//player - ent->client->ps.forcePowersKnown = ( 1 << FP_HEAL )|( 1 << FP_LEVITATION )|( 1 << FP_SPEED )|( 1 << FP_PUSH )|( 1 << FP_PULL )|( 1 << FP_TELEPATHY )|( 1 << FP_GRIP )|( 1 << FP_LIGHTNING)|( 1 << FP_SABERTHROW)|( 1 << FP_SABER_DEFENSE )|( 1 << FP_SABER_OFFENSE ); - ent->client->ps.forcePower = ent->client->ps.forcePowerMax = FORCE_POWER_MAX; - ent->client->ps.forcePowerRegenDebounceTime = 0; - ent->client->ps.forcePowerLevel[FP_HEAL] = FORCE_LEVEL_2; - ent->client->ps.forcePowerLevel[FP_LEVITATION] = FORCE_LEVEL_2; - ent->client->ps.forcePowerLevel[FP_PUSH] = FORCE_LEVEL_1; - ent->client->ps.forcePowerLevel[FP_PULL] = FORCE_LEVEL_1; - ent->client->ps.forcePowerLevel[FP_SABERTHROW] = FORCE_LEVEL_2; - ent->client->ps.forcePowerLevel[FP_SPEED] = FORCE_LEVEL_2; - ent->client->ps.forcePowerLevel[FP_LIGHTNING] = FORCE_LEVEL_1; - ent->client->ps.forcePowerLevel[FP_TELEPATHY] = FORCE_LEVEL_2; - ent->client->ps.forcePowerLevel[FP_SABER_DEFENSE] = FORCE_LEVEL_3; - ent->client->ps.forcePowerLevel[FP_SABER_OFFENSE] = FORCE_LEVEL_3; + //Don't initialise us with a random set of force powers please + if (cg_enableRandomizer.integer) { + //Clear all force powers + for (int i = 0; i < NUM_FORCE_POWERS; i++) { + ent->client->ps.forcePowerLevel[i] = 0; + } + //If using easy start, apply force push + if (cg_enableRandomizerEnhancements.integer && cg_startWithPush.integer && !Q_stricmp(level.mapname, "kejim_post")) { + ent->client->ps.forcePowersKnown = (0 << FP_HEAL) | (0 << FP_LEVITATION) | (0 << FP_SPEED) | (1 << FP_PUSH) | (0 << FP_PULL) | (0 << FP_TELEPATHY) | (0 << FP_GRIP) | (0 << FP_LIGHTNING) | (0 << FP_SABERTHROW) | (0 << FP_SABER_DEFENSE) | (0 << FP_SABER_OFFENSE); + ent->client->ps.forcePowerLevel[FP_PUSH] = 1; + ent->client->ps.forcePower = FORCE_POWER_MAX; + } + else { + //Don't need to worry about overwriting force powers from save here as they are applied later + ent->client->ps.forcePowersKnown = (0 << FP_HEAL) | (0 << FP_LEVITATION) | (0 << FP_SPEED) | (0 << FP_PUSH) | (0 << FP_PULL) | (0 << FP_TELEPATHY) | (0 << FP_GRIP) | (0 << FP_LIGHTNING) | (0 << FP_SABERTHROW) | (0 << FP_SABER_DEFENSE) | (0 << FP_SABER_OFFENSE); + } + ent->client->ps.forcePowerMax = FORCE_POWER_MAX; + ent->client->ps.forcePowerRegenDebounceTime = 0; + } + else { + ent->client->ps.forcePowersKnown = (1 << FP_HEAL) | (1 << FP_LEVITATION) | (1 << FP_SPEED) | (1 << FP_PUSH) | (1 << FP_PULL) | (1 << FP_TELEPATHY) | (1 << FP_GRIP) | (1 << FP_LIGHTNING) | (1 << FP_SABERTHROW) | (1 << FP_SABER_DEFENSE) | (1 << FP_SABER_OFFENSE); + ent->client->ps.forcePower = ent->client->ps.forcePowerMax = FORCE_POWER_MAX; + ent->client->ps.forcePowerRegenDebounceTime = 0; + ent->client->ps.forcePowerLevel[FP_HEAL] = FORCE_LEVEL_2; + ent->client->ps.forcePowerLevel[FP_LEVITATION] = FORCE_LEVEL_2; + ent->client->ps.forcePowerLevel[FP_PUSH] = FORCE_LEVEL_1; + ent->client->ps.forcePowerLevel[FP_PULL] = FORCE_LEVEL_1; + ent->client->ps.forcePowerLevel[FP_SABERTHROW] = FORCE_LEVEL_2; + ent->client->ps.forcePowerLevel[FP_SPEED] = FORCE_LEVEL_2; + ent->client->ps.forcePowerLevel[FP_LIGHTNING] = FORCE_LEVEL_1; + ent->client->ps.forcePowerLevel[FP_TELEPATHY] = FORCE_LEVEL_2; + ent->client->ps.forcePowerLevel[FP_SABER_DEFENSE] = FORCE_LEVEL_3; + ent->client->ps.forcePowerLevel[FP_SABER_OFFENSE] = FORCE_LEVEL_3; + } if ( ent->NPC ) {//??? ent->client->ps.forcePowerLevel[FP_GRIP] = FORCE_LEVEL_3; } - else + else if (!cg_enableRandomizer.integer) { ent->client->ps.forcePowerLevel[FP_GRIP] = FORCE_LEVEL_2; } ent->client->ps.forceGripEntityNum = ENTITYNUM_NONE; } -} \ No newline at end of file +} diff --git a/code/qcommon/stv_version.h b/code/qcommon/stv_version.h index 46bc2a62..8521f35c 100644 --- a/code/qcommon/stv_version.h +++ b/code/qcommon/stv_version.h @@ -2,11 +2,11 @@ #include "../win32/autoversion.h" #ifdef _DEBUG - #define Q3_VERSION "(debug) Speed Outcast: v"VERSION_STRING_DOTTED + #define Q3_VERSION "(debug) Speed Outcast (Randomizer): v"VERSION_STRING_DOTTED #elif defined FINAL_BUILD - #define Q3_VERSION "Speed Outcast: v"VERSION_STRING_DOTTED + #define Q3_VERSION "Speed Outcast (Randomizer): v"VERSION_STRING_DOTTED #else - #define Q3_VERSION "(internal) Speed Outcast: v"VERSION_STRING_DOTTED + #define Q3_VERSION "(internal) Speed Outcast (Randomizer): v"VERSION_STRING_DOTTED #endif // end diff --git a/code/randomizer/RandomizerUtils.cpp b/code/randomizer/RandomizerUtils.cpp new file mode 100644 index 00000000..398bbdc5 --- /dev/null +++ b/code/randomizer/RandomizerUtils.cpp @@ -0,0 +1,253 @@ +// leave this line at the top for all g_xxxx.cpp files... +#include "../game/g_headers.h" + +#include +#include +#include "../game/q_shared.h" +#include +#include "../game/g_local.h" +//#include "../game/g_headers.h" +#include "RandomizerUtils.h" + +using namespace std::chrono; + +// Randomizer +extern vmCvar_t cg_enableRandomizer; +extern vmCvar_t cg_enableRandomizerEnhancements; +extern vmCvar_t cg_useSetSeed; +extern vmCvar_t cg_setSeed; +// Randomizer - correct rng engines for the base randomizer (items and NPC spawn) and enhancements (all the rest) +// Given the seed, I can predict every items, every NPC with a 100% accuracy. +extern mt19937 rngRandoBase; +extern mt19937 rngRandoEnhancements; +// Randomizer - evil mode +extern vmCvar_t cg_enableRandSaberLength; +extern vmCvar_t cg_enableRandSaberColor; +extern vmCvar_t cg_enableRandJumpHeight; +extern vmCvar_t cg_enableRandJumpStrenght; +// To access the game +extern game_import_t gi; + +static std::map teamsByName; +static std::map teamsByClass; + +static void AddCharArrayToInt(string seedString, int* value) +{ + for (int i = 0; i < seedString.size(); i++) { + *value += seedString[i]; + } +} + +void RandomizerUtils::seedRandomizer(std::string seedString, std::string levelName) +{ + // We want to ensure seed consistenty per level + // i.e. for a given seed a player will always get the same enemy spawn for that level + // regardless of any other uses of rand() in the game. Thus we should set the seed + // on level change, and use the level string as a part of the seed to get + // unique enemy sets per level + if (seedString != "") { //If we have no set seed just use random seed -- should we warn user? + int seed = 0; + AddCharArrayToInt(seedString, &seed); + AddCharArrayToInt(levelName, &seed); + //srand(seed); + // New method ! Using the more recent way to use the library. + rngRandoBase.seed(seed); + rngRandoEnhancements.seed(seed); + } +} + +void RandomizerUtils::RegenerateSeed() +{ + //Reinitialise randomizer seed value if we're not using setSeed + if (cg_enableRandomizer.integer && !cg_useSetSeed.integer) + { + //Get System Epoch Time + auto duration = system_clock::now().time_since_epoch(); + + //Convert duration to milliseconds + long milliseconds + = chrono::duration_cast( + duration) + .count(); + + //Hash the time to get a consistent length seed + hash hasher; + string s = to_string(milliseconds); + size_t hash = hasher(s); + + //Convert to string + string hashString = to_string(hash); + + //Update seed value + gi.cvar_set("cg_setSeed", hashString.c_str()); + //Cvar_Set("cg_setSeed", hashString.c_str()); + + } +} + +void initialiseNameMap() { + teamsByName["NPC_Kyle"] = TEAM_PLAYER; + teamsByName["NPC_Lando"] = TEAM_PLAYER; + teamsByName["NPC_Jan"] = TEAM_PLAYER; + teamsByName["NPC_MonMothma"] = TEAM_PLAYER; + teamsByName["NPC_Tavion"] = TEAM_ENEMY; + teamsByName["NPC_Reelo"] = TEAM_ENEMY; + teamsByName["NPC_Galak"] = TEAM_ENEMY; + teamsByName["NPC_Desann"] = TEAM_ENEMY; + teamsByName["NPC_Bartender"] = TEAM_ENEMY; + teamsByName["NPC_MorganKatarn"] = TEAM_PLAYER; + teamsByName["NPC_Jedi"] = TEAM_PLAYER; + teamsByName["NPC_Prisoner"] = TEAM_PLAYER; + teamsByName["NPC_Rebel"] = TEAM_PLAYER; + teamsByName["NPC_Stormtrooper"] = TEAM_ENEMY; + teamsByName["NPC_StormtrooperOfficer"] = TEAM_ENEMY; + teamsByName["NPC_Tie_Pilot"] = TEAM_ENEMY; + teamsByName["NPC_Ugnaught"] = TEAM_ENEMY; + teamsByName["NPC_Gran"] = TEAM_ENEMY; + teamsByName["NPC_Rodian"] = TEAM_ENEMY; + teamsByName["NPC_Weequay"] = TEAM_ENEMY; + teamsByName["NPC_Trandoshan"] = TEAM_ENEMY; + teamsByName["NPC_Imperial"] = TEAM_ENEMY; + teamsByName["NPC_ImpWorker"] = TEAM_ENEMY; + teamsByName["NPC_BespinCop"] = TEAM_PLAYER; + teamsByName["NPC_Reborn"] = TEAM_ENEMY; + teamsByName["NPC_ShadowTrooper"] = TEAM_ENEMY; + //teamsByName["NPC_MineMonster"] = TEAM_NEUTRAL; // Breaks their AI + teamsByName["NPC_MineMonster"] = TEAM_ENEMY; + teamsByName["NPC_Droid_Interrogator"] = TEAM_ENEMY; + teamsByName["NPC_Droid_Probe"] = TEAM_ENEMY; + teamsByName["NPC_Droid_Seeker"] = TEAM_PLAYER; + teamsByName["NPC_Droid_Remote"] = TEAM_ENEMY; + teamsByName["NPC_Droid_Sentry"] = TEAM_ENEMY; + teamsByName["NPC_Droid_Gonk"] = TEAM_NEUTRAL; + teamsByName["NPC_Droid_Mouse"] = TEAM_ENEMY; + teamsByName["NPC_Droid_R2D2"] = TEAM_PLAYER; + teamsByName["NPC_Droid_R5D2"] = TEAM_PLAYER; + teamsByName["NPC_Droid_Protocol"] = TEAM_PLAYER; + teamsByName["NPC_Galak_Mech"] = TEAM_ENEMY; + teamsByName["NPC_Droid_ATST"] = TEAM_ENEMY; + teamsByName["NPC_SwampTrooper"] = TEAM_ENEMY; +} + +void initialiseMapByClass() { + teamsByClass[CLASS_KYLE] = TEAM_PLAYER; + teamsByClass[CLASS_LANDO] = TEAM_PLAYER; + teamsByClass[CLASS_JAN] = TEAM_PLAYER; + teamsByClass[CLASS_MONMOTHA] = TEAM_PLAYER; + teamsByClass[CLASS_TAVION] = TEAM_ENEMY; + teamsByClass[CLASS_REELO] = TEAM_ENEMY; + teamsByClass[CLASS_GALAK] = TEAM_ENEMY; + teamsByClass[CLASS_DESANN] = TEAM_ENEMY; + teamsByClass[CLASS_BARTENDER] = TEAM_ENEMY; + teamsByClass[CLASS_MORGANKATARN] = TEAM_PLAYER; + teamsByClass[CLASS_JEDI] = TEAM_PLAYER; + teamsByClass[CLASS_PRISONER] = TEAM_PLAYER; + teamsByClass[CLASS_REBEL] = TEAM_PLAYER; + teamsByClass[CLASS_STORMTROOPER] = TEAM_ENEMY; + teamsByClass[CLASS_UGNAUGHT] = TEAM_ENEMY; + teamsByClass[CLASS_GRAN] = TEAM_ENEMY; + teamsByClass[CLASS_RODIAN] = TEAM_ENEMY; + teamsByClass[CLASS_WEEQUAY] = TEAM_ENEMY; + teamsByClass[CLASS_TRANDOSHAN] = TEAM_ENEMY; + teamsByClass[CLASS_IMPERIAL] = TEAM_ENEMY; + teamsByClass[CLASS_IMPWORKER] = TEAM_ENEMY; + teamsByClass[CLASS_BESPIN_COP] = TEAM_PLAYER; + teamsByClass[CLASS_REBORN] = TEAM_ENEMY; + teamsByClass[CLASS_SHADOWTROOPER] = TEAM_ENEMY; + //teamsByClass[CLASS_MINEMONSTER] = TEAM_NEUTRAL; + teamsByClass[CLASS_MINEMONSTER] = TEAM_ENEMY; + teamsByClass[CLASS_INTERROGATOR] = TEAM_ENEMY; + teamsByClass[CLASS_PROBE] = TEAM_ENEMY; + teamsByClass[CLASS_SEEKER] = TEAM_PLAYER; + teamsByClass[CLASS_REMOTE] = TEAM_ENEMY; + teamsByClass[CLASS_SENTRY] = TEAM_ENEMY; + teamsByClass[CLASS_GONK] = TEAM_NEUTRAL; + teamsByClass[CLASS_MOUSE] = TEAM_ENEMY; + teamsByClass[CLASS_R2D2] = TEAM_PLAYER; + teamsByClass[CLASS_R5D2] = TEAM_PLAYER; + teamsByClass[CLASS_PROTOCOL] = TEAM_PLAYER; + teamsByClass[CLASS_SWAMPTROOPER] = TEAM_ENEMY; + teamsByClass[CLASS_GALAKMECH] = TEAM_ENEMY; + teamsByClass[CLASS_ATST] = TEAM_ENEMY; + teamsByClass[CLASS_NONE] = TEAM_PLAYER; +} + +team_t RandomizerUtils::GetClassTeamByClassname(char *npcClassname) +{ + if (!teamsByName["NPC_Kyle"]) { + initialiseNameMap(); + } + team_t valFromMap = teamsByName[npcClassname]; + return !valFromMap ? TEAM_FREE : valFromMap; +} + +team_t RandomizerUtils::GetClassTeamByClass(class_t npcClass) +{ + if (!teamsByClass[CLASS_KYLE]) { + initialiseMapByClass(); + } + team_t valFromMap = teamsByClass[npcClass]; + return !valFromMap ? TEAM_FREE : valFromMap; +} + +void RandomizerInfoCommandCatcher(int page) +{ + // List of colors + //S_COLOR_BLACK, S_COLOR_BLUE, S_COLOR_CYAN, S_COLOR_GREEN, S_COLOR_MAGENTA, S_COLOR_RED, S_COLOR_WHITE, S_COLOR_YELLOW + + //gi.Printf(S_COLOR_GREEN"We are getting to this function, we can log things here !\n"); + //gi.Printf(S_COLOR_GREEN"Page number received : %d\n",page); + + // Just for information : the console is 30 lines long, + // Even if the Randomizer is disabled, randomizer_debug (maybe renamed to randomizer_info) will still print this page. + if (page <= 0 || page >= 6) // The help page, when we reach an undefined number. + { + gi.Printf(S_COLOR_RED"Oops, it seems that you didn't provide a valid page number.\n"); + gi.Printf(S_COLOR_RED"Welcome to the default page.\n"); + gi.Printf(S_COLOR_RED"IT'S STILL IN CONSTRUCTION !\n"); + gi.Printf(S_COLOR_MAGENTA"Here is the correct syntax : randomizer_debug .\n"); + gi.Printf(S_COLOR_WHITE"Page 1 : General information.\n"); + gi.Printf(S_COLOR_WHITE"Page 2 : Currently generated NPCs on this map (%s).\n", level.mapname); + gi.Printf(S_COLOR_WHITE"Page 3 : Rules for NPCs.\n"); + gi.Printf(S_COLOR_WHITE"Page 4 : Rules for maps.\n"); + gi.Printf(S_COLOR_WHITE"Page 5 : Rules for weapons / ammo\n"); + gi.Printf(S_COLOR_WHITE"Page 6 : Todo\n"); + return; // So that we won't go to the switch bellow + } + switch (page) + { + case 1: // General informations + gi.Printf(S_COLOR_MAGENTA"NPC spawns are determined during the first load of a map. Meaning that if youn load a map, quicksave and quickload, the NPCs will always be the sames.\n"); + gi.Printf(S_COLOR_MAGENTA"But, if you reload the map using the save files that the game generate, a new set of random NPCs will be generated.\n"); + gi.Printf(S_COLOR_MAGENTA"All random NPCs remplacing ones carrying keys to open doors (eg : kejim_base), will also carry said keys. So kill them to get keys (even if they are friendly or neutral) !\n"); + break; + case 2: // Informations about tabLockedInNPC + gi.Printf(S_COLOR_MAGENTA"The maximum number of unique NPCs authorized is currently all !\n"); + gi.Printf(S_COLOR_MAGENTA"The map is : %s.\n", level.mapname); + gi.Printf(S_COLOR_CYAN"ALL NPC can spawn (except the ones banned due to them being unstable / broken / run-killers (Desann)).\n"); + + break; + case 3: // Which NPC are forced no matter which map (Jan for exemple, not having her breaks the first map and yavin_swamp cutscene as far as I know). Update this if needed + gi.Printf(S_COLOR_MAGENTA"Some spawn have been forced. It might not be necessarry, but for now that's how it is.\n"); + gi.Printf(S_COLOR_MAGENTA"Here is the list of characters that will ALWAYS spawn as themselves, no matter which map you are on :\n"); + gi.Printf(S_COLOR_CYAN"Kyle, Jan, Luke, Lando, Tavion, Desann, MonMothma, Reelo, Galak, Bartender, Prisoner, Morgan, Ugnaught, MouseDroid, ATST, Mark1, Mark2 (Chicken robot), R2D2, R5D2 and SeekerDrones.\n"); + gi.Printf(S_COLOR_MAGENTA"Here is the list of characters that will NEVER randomly spawn, no matter which map you are on :\n"); + gi.Printf(S_COLOR_CYAN"Tavion, Desann, ATST, Chicken Robot (Mark2) and bugged monsters (Glider...)\n"); + break; + case 4: // Map specific locked NPCs (thinking about the officer in assembly to open the first door)(maybe other NPCs can do it, but idk). Update this if needed. + gi.Printf(S_COLOR_MAGENTA"Some spawn on specific maps are forced, so that we don't softlock the game.\n"); + gi.Printf(S_COLOR_MAGENTA"Unfortunatly, it means that every iteration of the same NPC on this map will spawn normally.\n"); + gi.Printf(S_COLOR_MAGENTA"Here is the list of maps that have specific NPC locked :\n"); + gi.Printf(S_COLOR_CYAN"Todo.\n"); + break; + case 5: // This ISN'T true anymore, everykind of item can because any kind of items ! (Except keys and stuff on yavin_trial) + gi.Printf(S_COLOR_MAGENTA"Here are the general rules for how weapons will work :\n"); + gi.Printf(S_COLOR_CYAN"Weapons are replaced by other weapons (a E-11 blaster can become a bowcaster).\n"); + gi.Printf(S_COLOR_CYAN"Ammo are replaced with another king of ammo. Explosives are considered ammo, so you can find them here and not in weapons slots.\n"); + gi.Printf(S_COLOR_CYAN"Items on the ground (like the bowcaster on artus_mines or bactas in general) remain unchanged.\n"); + gi.Printf(S_COLOR_CYAN"Health pack on weapon/ammo rack are constants too.\n"); + break; + default: + return; + } +} \ No newline at end of file diff --git a/code/randomizer/RandomizerUtils.h b/code/randomizer/RandomizerUtils.h new file mode 100644 index 00000000..ab7f273b --- /dev/null +++ b/code/randomizer/RandomizerUtils.h @@ -0,0 +1,16 @@ +#pragma once +#include +#include +#include + +class RandomizerUtils +{ + private: + + public: + static void seedRandomizer(std::string seedString, std::string levelName); + static void RegenerateSeed(); + static team_t GetClassTeamByClassname(char *npcType); + static team_t GetClassTeamByClass(class_t npcClass); +}; + diff --git a/code/renderer/tr_local.h b/code/renderer/tr_local.h index a3390563..a52015d2 100644 --- a/code/renderer/tr_local.h +++ b/code/renderer/tr_local.h @@ -849,13 +849,14 @@ compared quickly during the qsorting process the bits are allocated as follows: 22 - 31 : sorted shader index -12 - 21 : entity index +10 - 21 : entity index 3 - 7 : fog index 2 : used to be clipped flag 0 - 1 : dlightmap index */ #define QSORT_SHADERNUM_SHIFT 22 -#define QSORT_ENTITYNUM_SHIFT 12 +//#define QSORT_ENTITYNUM_SHIFT 12 // Old value +#define QSORT_ENTITYNUM_SHIFT 10 //More room for entities #define QSORT_FOGNUM_SHIFT 3 #ifdef _NPATCH diff --git a/code/renderer/tr_main.cpp b/code/renderer/tr_main.cpp index aeaba2b2..d00be852 100644 --- a/code/renderer/tr_main.cpp +++ b/code/renderer/tr_main.cpp @@ -10,6 +10,7 @@ #if !defined(G2_H_INC) #include "../ghoul2/G2.h" #endif +#include trGlobals_t tr; @@ -1303,6 +1304,40 @@ void R_AddDrawSurf( const surfaceType_t *surface, const shader_t *shader, tr.refdef.numDrawSurfs++; } +std::map shaderMap; +string lastKownMap = "."; + +int GetRandomValidShader(int sort) { + int rng = rand() % 200; + int skippedCount = 0; + while (1) { //due to not knowing how many shaders we have of a given type we may have to iterate over the array multiple times + for (int i = 0; i < MAX_SHADERS - 1; i++) { + if (tr.shaders[i]) { //Safety first + //if the first 3 chars match so we're looking at the same type e.g. gfx/ or models/ + if (Q_strncmp(tr.shaders[i]->name, tr.shaders[(sort >> QSORT_SHADERNUM_SHIFT) & (MAX_SHADERS - 1)]->name, 3)) { + if (skippedCount == rng) { //skip valid shaders until we hit the rng value + //We have our shader + return i; + } + else { + skippedCount++; + } + } + } + } + } +} + +void InitShaderMap() { + shaderMap.clear(); + lastKownMap = cl.mapname; + for (int i = 0; i < MAX_SHADERS - 1; i++) { + if (tr.shaders[i]) { + shaderMap[i] = GetRandomValidShader(i); + } + } +} + /* ================= R_DecomposeSort @@ -1311,8 +1346,22 @@ R_DecomposeSort void R_DecomposeSort( unsigned sort, int *entityNum, shader_t **shader, int *fogNum, int *dlightMap ) { *fogNum = ( sort >> QSORT_FOGNUM_SHIFT ) & 31; - *shader = tr.sortedShaders[ ( sort >> QSORT_SHADERNUM_SHIFT ) & (MAX_SHADERS-1) ]; - *entityNum = ( sort >> QSORT_ENTITYNUM_SHIFT ) & 1023; + if (Cvar_VariableIntegerValue("cg_enableRandomizer") && + Cvar_VariableIntegerValue("cg_enableRandomizerEnhancements") && + Cvar_VariableIntegerValue("cg_enableRandTextures")) { + if (lastKownMap == "." || cl.mapname != lastKownMap) { + //Map has changed, re-init shader map + InitShaderMap(); + } + //Pluck a randomized texture from the map + *shader = tr.sortedShaders[shaderMap[(sort >> QSORT_SHADERNUM_SHIFT) & (MAX_SHADERS - 1)]]; + } + else { + //Vanilla + *shader = tr.sortedShaders[(sort >> QSORT_SHADERNUM_SHIFT) & (MAX_SHADERS - 1)]; + } + //*entityNum = (sort >> QSORT_ENTITYNUM_SHIFT) & 1023); + *entityNum = (sort >> QSORT_ENTITYNUM_SHIFT) & (MAX_GENTITIES - 1); //Higher entity limit *dlightMap = sort & 3; } diff --git a/code/renderer/tr_types.h b/code/renderer/tr_types.h index 6d4f4ccb..cd89acc0 100644 --- a/code/renderer/tr_types.h +++ b/code/renderer/tr_types.h @@ -4,7 +4,8 @@ #include "..\game\ghoul2_shared.h" #define MAX_DLIGHTS 32 // can't be increased, because bit flags are used on surfaces -#define MAX_ENTITIES 1023 // can't be increased without changing drawsurf bit packing +//#define MAX_ENTITIES 1023 // Old value +#define MAX_ENTITIES (MAX_GENTITIES - 1) // can't be increased without changing drawsurf bit packing //Raise ent limit // renderfx flags #define RF_MORELIGHT 0x00001 // allways have some light (viewmodel, some items) diff --git a/code/server/sv_savegame.cpp b/code/server/sv_savegame.cpp index 793607eb..e843c9b0 100644 --- a/code/server/sv_savegame.cpp +++ b/code/server/sv_savegame.cpp @@ -1034,7 +1034,16 @@ qboolean SG_ReadSavegame(const char *psPathlessBaseName) // read game state qbAutosave = ReadGame(); - eSavedGameJustLoaded = (qbAutosave)?eAUTO:eFULL; + + //When resetting using the auto_kejim_post save + if (Cvar_VariableIntegerValue("cg_enableRandomizer") && !strcmp("auto_kejim_post", psPathlessBaseName) ) + { + eSavedGameJustLoaded = eRESET; + } + else { + eSavedGameJustLoaded = (qbAutosave) ? eAUTO : eFULL; + } + SV_SpawnServer(sMapCmd, eForceReload_NOTHING, (eSavedGameJustLoaded != eFULL) ); // note that this also trashes the whole G_Alloc pool as well (of course) diff --git a/code/starwars.vcxproj b/code/starwars.vcxproj index 321f484f..70ee0baa 100644 --- a/code/starwars.vcxproj +++ b/code/starwars.vcxproj @@ -29,26 +29,26 @@ Application - v142 + v143 Application - v142 + v143 false Application - v142 + v143 false Application - v142 + v143 false Application - v142 + v143 false diff --git a/code/ui/ui_main.cpp b/code/ui/ui_main.cpp index de4a2450..a74838a8 100644 --- a/code/ui/ui_main.cpp +++ b/code/ui/ui_main.cpp @@ -618,7 +618,7 @@ extern void FS_Restart( void ); } else if (Q_stricmp(name, "startgame") == 0) { - Menus_CloseAll(); + Menus_CloseAll(); if ( Cvar_VariableIntegerValue("com_demo") ) { #ifdef FINAL_BUILD diff --git a/code/win32/AutoVersion.h b/code/win32/AutoVersion.h index 4569e3dd..c1a6abc8 100644 --- a/code/win32/AutoVersion.h +++ b/code/win32/AutoVersion.h @@ -2,11 +2,11 @@ #define __AUTO_VERSION_HEADER #define VERSION_MAJOR_RELEASE 1 -#define VERSION_MINOR_RELEASE 0 +#define VERSION_MINOR_RELEASE 3 #define VERSION_EXTERNAL_BUILD 0 #define VERSION_INTERNAL_BUILD 0 -#define VERSION_STRING "1, 0, 0, 0" -#define VERSION_STRING_DOTTED "1.0.0.0" +#define VERSION_STRING "1, 3, 0, 0" +#define VERSION_STRING_DOTTED "1.3.0.0" #endif // __AUTO_VERSION_HEADER diff --git a/code/win32/winquake.res b/code/win32/winquake.res index 9ef83656..39cc7562 100644 Binary files a/code/win32/winquake.res and b/code/win32/winquake.res differ