diff options
43 files changed, 17400 insertions, 0 deletions
diff --git a/tremulous-manual/manual.lyx b/tremulous-manual/manual.lyx new file mode 100644 index 00000000..30cf4830 --- /dev/null +++ b/tremulous-manual/manual.lyx @@ -0,0 +1,7086 @@ +#LyX 1.3 created this file. For more info see http://www.lyx.org/ +\lyxformat 221 +\textclass article +\language english +\inputencoding auto +\fontscheme pslatex +\graphics default +\paperfontsize default +\spacing single +\papersize a4paper +\paperpackage a4 +\use_geometry 1 +\use_amsmath 0 +\use_natbib 0 +\use_numerical_citations 0 +\paperorientation portrait +\leftmargin 2cm +\topmargin 2cm +\rightmargin 2cm +\bottommargin 2cm +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation skip +\defskip medskip +\quotes_language english +\quotes_times 2 +\papercolumns 1 +\papersides 1 +\paperpagestyle empty + +\layout Title + +TREMULOUS 1.0.2 +\layout Standard + + +\begin_inset LatexCommand \tableofcontents{} + +\end_inset + + +\layout Section + +Introduction +\layout Standard + +Tremulous is a first person shooter featuring two opposing teams, humans + and aliens. + Both teams are able to build structures such as spawn points, which are + vital to their victory. + The goal of Tremulous is to eliminate the opposing team and all of their + spawn points. +\layout Standard + +Each team in Tremulous differs fundamentally from the other. + The aliens are class based, with two classes initially available: the alien + team's builder, known as the Granger, and the Dretch, the weakest offensive + alien. + The aliens are awarded frags for killing their foes which may be used to + evolve into stronger classes, capable of greater and more varied maneuvers. + In contrast the human team is upgrade based, receiving credits for kills + that may be exchanged at an Armoury structure for new weapons, armour and + equipment. + Two such upgrades are available for free: a rifle and a construction kit, + used for building structures. +\layout Standard + +During a game of Tremulous, each team occupies one of three stages of developmen +t. + These stages are reached by accruing more than a specific total number + of kills by the whole team. + Each new stage unlocks new classes, upgrades and buildable structures. + If one team reaches a stage significantly earlier than the other team it + stands a better chance of defeating the opposing team. +\layout Standard + +Section +\begin_inset LatexCommand \ref{sec:Game} + +\end_inset + + details the content of the game including the various controls that are + used to play. + Section +\begin_inset LatexCommand \ref{sec:Technical} + +\end_inset + + describes some technical aspects of how Tremulous works. + It is not necessary to read this section in order to play the game. +\layout Section + + +\begin_inset LatexCommand \label{sec:Game} + +\end_inset + +Game +\layout Subsection + +Aliens +\layout Standard + +Two classes are available upon joining the alien team: the Dretch and the + Granger. + As you gain kills, you may use your earned frags to evolve into higher + classes with the +\noun on +Use Structure/Evolve +\noun default + button. + The alien team is mostly limited to melee attacks and must use stealth + and speed to defeat the longer range humans. + All aliens automatically regenerate health at a slow rate. +\layout Subsubsection + +Classes +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Granger +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename granger.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="3"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell multicolumn="1" alignment="left" valignment="top" bottomline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +<cell multicolumn="2" alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Build +\end_inset +</cell> +<cell multicolumn="1" alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +<cell multicolumn="2" alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Destroy Structure +\end_inset +</cell> +<cell multicolumn="1" alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Deconstruct Structure +\noun default + on an alien structure +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Granger +\emph default + is the alien team's builder class. + +\noun on +Primary Attack +\noun default + will bring up a menu of structures available for building. + After selecting a structure a glowing outline of it will appear. + When this outline is green you can use the +\noun on +Primary Attack +\noun default + button to place it. + The outline changes to red when the structure cannot be placed in its current + location. + To cancel placing the structure press the +\noun on +Secondary Attack +\noun default + button. + To remove a placed structure use the +\noun on +Deconstruct Structure +\noun default + button. + After building or deconstructing a structure a timer will appear in the + lower right corner of the screen. + Until this timer expires you cannot create or destroy another building. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Advanced Granger +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename agranger.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="6" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Build +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Slash +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Secondary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Lob Projectile +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Activate Upgrade +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Destroy Structure +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Deconstruct Structure +\noun default +on an alien structure +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Wallwalk +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Crouch +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Advanced Granger +\emph default + becomes available at no cost when the alien team reaches stage two. + In addition to the +\emph on +Granger's +\emph default + abilities, the +\emph on +Advanced Granger +\emph default + can move faster, jump higher, walk on walls and attack with a slash or + by lobbing small projectiles with the +\noun on +Activate Upgrade +\noun default + button. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Dretch +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename dretch.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Bite +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Touch a human +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Wallwalk +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Crouch +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Dretch +\emph default + is the alien team's weakest offensive class. + Its only attack is to make forward contact with a human player or human + defensive structure. + The amount of damage dealt to a human depends on what armour they were + wearing and where they were hit, with headshots resulting in the most damage. + +\emph on +Dretches +\emph default + can also wallwalk; toggle it by pressing the +\noun on +Crouch +\noun default + button. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Basilisk +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename basilisk.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 1 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="4" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Slash +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Grab +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Touch a human +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Wallwalk +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Crouch +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Basilisk +\emph default + attacks by using the +\noun on +Primary Attack +\noun default + button. + It can also grab human players by making contact with them at close range. + This freezes humans in place and, if they're not wearing a +\emph on +Battlesuit +\emph default +, restricts their ability to turn. + The +\emph on +Basilisk +\emph default + can also wallwalk; toggle it by pressing the +\noun on +Crouch +\noun default + button. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Advanced Basilisk +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename abasilisk.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 2 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="5" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Slash +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Gas +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Secondary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Grab +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Touch a human +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Wallwalk +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Crouch +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +In addition to the +\emph on +Basilisk's +\emph default + abilities, the +\emph on +Advanced Basilisk +\emph default + can spray a cloud of noxious gas that will disorient and poison affected + human players. + Humans equipped with a +\emph on +Battlesuit +\emph default + are immune to gas. + Use this ability with the +\noun on +Secondary Attack +\noun default + button. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Marauder +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename marauder.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 2 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Bite +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Wall Jump +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Jump into a wall while holding down +\noun on +Jump +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Marauder +\emph default + attacks with the +\noun on +Primary Attack +\noun default + button and has the ability to rebound off walls. + To use this ability jump towards a wall and hold down the +\noun on +Jump +\noun default + button. + When you hit the wall you will be propelled upward and in the direction + opposite of the wall. + As long as you continue hitting walls you will continue wall jumping. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Advanced Marauder +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename amarauder.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 3 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="4" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Bite +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Zap +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Secondary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Wall Jump +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Jump into a wall while holding down +\noun on +Jump +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +In addition to the +\emph on +Marauder's +\emph default + abilities, the +\emph on +Advanced Marauder +\emph default + can use a chain lightning attack. + To use this, press the +\noun on +Secondary Attack +\noun default + button while aiming at a nearby human or human structure. + If it connects the electric shock will jump to up to two other nearby targets + doing full damage to the first, half damage to the second and one third + damage to the third over a period of one second provided the attacker stays + within range. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Dragoon +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename dragoon.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 3 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Bite +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Pounce +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Hold down +\noun on +Secondary Attack +\noun default + briefly then release +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Dragoon +\emph default + attacks by either biting with the +\noun on +Primary Attack +\noun default + button or pouncing with +\noun on +Secondary Attack +\noun default +. + To pounce, first hold down the +\noun on +Secondary Attack +\noun default + button to charge up, then release to leap forward and damage anything that + gets in the way. + While charging you will be unable to jump normally and will move at a reduced + rate. + Aim up a little to fly further when pouncing. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Advanced Dragoon +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename adragoon.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 4 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 3 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="4" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Bite +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Pounce +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Hold down +\noun on +Secondary Attack +\noun default + briefly then release +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Shoot Barb +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Activate Upgrade +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +In addition to the +\emph on +Dragoon's +\emph default + abilities, the +\emph on +Advanced Dragoon +\emph default + can fire long ranged spiked barbs with the +\noun on +Activate Upgrade +\noun default + button. + Up to three of these barbs may be held in reserve and they regenerate automatic +ally over time. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Tyrant +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename tyrant.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 5 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 3 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="4" columns="2"> +<features> +<column alignment="left" valignment="top" rightline="true" width="0"> +<column alignment="left" valignment="top" width="0"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Ability +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Control +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Slash +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Trample +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Hold down +\noun on +Secondary Attack +\noun default + briefly then release +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Healing Aura +\end_inset +</cell> +<cell alignment="left" valignment="top" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stand close to teammates to increase their regeneration rate +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Tyrant +\emph default + attacks by either slashing with the +\noun on +Primary Attack +\noun default + button or trampling with +\noun on +Secondary Attack +\noun default +. + To trample, first hold down the +\noun on +Secondary Attack +\noun default + button while moving forward to charge up, then release to run at high speed + for a short time, damaging anything in your path. + The +\emph on +Tyrant +\emph default + also has a healing aura that will double the regeneration rate of lower + class aliens within range. +\layout Subsubsection + +Structures +\layout Standard + +All alien structures must be built in proximity to an +\emph on +Egg +\emph default + or an +\emph on +Overmind +\emph default +. + All alien structures require the presence of an +\emph on + Overmind +\emph default + to function. + All alien structures create `creep' around their bases that slows human + movement. + When destroyed, alien structures explode in a shower of acid harmful to + humans. + All structures may be built on level floors and when +\emph on +Advanced Grangers +\emph default + become available some structures may also be built on walls and ceilings. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Overmind +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename overmind.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Sentience: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Overmind +\emph default + is the collective consciousness that controls all the alien structures + in a map and enables aliens to evolve into higher forms. + There can only be one +\emph on +Overmind +\emph default + and it must be alive before any other structures can be built. + If the +\emph on +Overmind +\emph default + is destroyed then all structures besides +\emph on +Eggs +\emph default + cease to function and every alien loses the ability to upgrade their class + until a new +\emph on +Overmind +\emph default + is built. + The +\emph on +Overmind +\emph default + has a limited amount of `sentience' which is distributed amongst every + other structure built, each having its own cost. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Egg +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename egg.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Sentience: 10 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Egg +\emph default + is the most basic and important alien structure; it is from these that + aliens spawn into the game. + They are also the only structure that continues to function in the absence + of an +\emph on +Overmind +\emph default +. + +\emph on +Eggs +\emph default + may be built on ceilings. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Acid Tube +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename acidtube.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Sentience: 8 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Acid Tubes +\emph default + are the primary defensive structure for the alien team. + When approached by a human they eject lethal acid in all directions, even + over other structures. + +\emph on + Acid Tubes +\emph default + may be built on walls and ceilings. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + +Barricade +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename barricade.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Sentience: 10 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Barricades +\emph default + are used to obstruct corridors and doorways, hindering human movement and + line-of-sight. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Trapper +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename trapper.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Sentience: 10 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Trappers +\emph default + fire a blob of adhesive spit at any human in their line of sight, freezing + them in place and, if they're not wearing a +\emph on +Battlesuit +\emph default +, restricts their ability to turn. + +\emph on + Trappers +\emph default + may be built on walls and ceilings, and are rarely effective when built + on floors. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + +Booster +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename booster.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Sentience: 12 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +Any alien that touches a +\emph on +Booster +\emph default + is provided with a poison enhancement on all their melee attacks for a + limited time. + Poison causes victims to lose health steadily over time unless they use + a +\emph on + Medkit +\emph default + or visit a +\emph on +Medistation +\emph default +. + Poison does not work against humans equipped with a +\emph on +Battlesuit +\emph default +. + The +\emph on +Booster +\emph default + will also double the regeneration rate of any nearby aliens with the exception + of +\emph on + Tyrants +\emph default +. + The healing aura of a +\emph on + Tyrant +\emph off + +\emph default +i +\emph off +s not +\emph default +cumulative +\emph off + with the healing effect of boosters. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Hovel +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename hovel.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Sentience: 8 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 3 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Hovels +\emph default + are armored shells that +\emph on +Grangers +\emph default + may hide in should the need arise. + They may be entered and exited with the +\noun on +Use Structure/Evolve +\noun default + button. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Hive +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename hive.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Sentience: 12 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 3 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Hives +\emph default + house millions of tiny insectoid aliens. + When a human approaches the structure the insects attack. + +\emph on +Hives +\emph default + may be built on ceilings. +\layout Subsection + +Humans +\layout Subsubsection + +Weapons +\layout Standard + +Humans may spawn with either the +\emph on +Construction Kit +\emph default + or the +\emph on +Rifle +\emph default +. + As credits are earned, humans may sell their old upgrades and purchase + new ones at an +\emph on +Armoury +\emph default + structure. + Ammo may be refilled for normal weapons at +\emph on +Armouries +\emph default +, or at +\emph on +Reactors +\emph default + and +\emph on +Repeaters +\emph default + for energy weapons, all at no cost. + Players may only carry one weapon at a time, excluding the +\emph on +Blaster +\emph default +. + In general the humans rely on long range weapons to make up for their lack + of mobility relative to the alien team. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Construction Kit +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename ckit.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Construction Kit +\emph default + is the humans' method of building structures. + The +\noun on +Primary +\noun default + +\noun on +Attack +\noun default + button will bring up a menu of structures available for building. + After selecting a structure, a glowing outline of it will appear. + When this outline is green, pressing the +\noun on +Primary Attack +\noun default + button will place it. + When the outline is red, the structure cannot be placed in its current + location. + To cancel placing the structure, press the +\noun on +Secondary Attack +\noun default + button. + To remove a placed structure, use the +\noun on +Deconstruct Structure +\noun default + button. + After building or deconstructing a structure, a timer will show up in the + lower right corner of the screen. + Until this timer expires, you cannot create, destroy or repair any structures. + Damaged structures may otherwise be repaired with the +\noun on +Secondary Attack +\noun default + button. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Advanced Construction Kit +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename ackit.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +At stage two an upgraded +\emph on +Construction Kit +\emph default + becomes available that allows the building of more advanced structures. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Blaster +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename blaster.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Blaster +\emph default + is the human team's standard issue backup weapon. + All players spawn with one automatically and may not exchange it for another + weapon. + The +\emph on +Blaster +\emph default + fires a weak projectile and uses no ammo. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Rifle +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename rifle.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Rifle +\emph default + is the human team's most basic weapon and is available from spawning. + It rapidly fires moderately accurate shots with clip sizes of 30. + Up to 6 extra clips may be carried at a time. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Pain Saw +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename psaw.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 100 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Pain Saw +\emph default + is a powerful melee weapon that emits a steady electric hum when in use. + It uses no ammunition. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Shotgun +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename shotgun.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 150 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Shotgun +\emph default + fires 8 pellets at a wide angle and is thus best used in close quarters. + It holds 8 shots per clip and 3 extra clips may be carried at a time. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Las Gun +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename lasgun.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 250 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Las Gun +\emph default + is similar to the +\emph on +Rifle +\emph default + but is more powerful, accurate, slower to fire and uses no clips. + It is an energy weapon and so must be refilled at a +\emph on +Reactor +\emph default + or +\emph on +Repeater +\emph default +. + It can hold up to 200 cells at a time, or 300 with a +\emph on +Battery Pack +\emph default +. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Mass Driver +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename mdriver.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 350 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Mass Driver +\emph default + fires powerful, accurate shots at a slow rate of fire. + It is an energy weapon and holds 5 shots per clip, or 7 with a +\emph on +Battery Pack +\emph default +. + Up to 4 extra clips may be carried at a time. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Chaingun +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename chaingun.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 400 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Chaingun +\emph default + is a powerful, wildly inaccurate rapid-fire weapon. + It holds up to 300 bullets at a time and is best used when crouching to + reduce its kickback. + Humans equipped with a +\emph on +Battlesuit +\emph default +do not experience this kickback. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Pulse Rifle +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename prifle.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 400 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Pulse Rifle +\emph default + is an energy weapon that fires projectiles at high speeds. + It holds up to 50 cells per clip, or 75 with a +\emph on +Battery Pack +\emph default +. + Up to 4 extra clips may be carried at a time. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Grenade +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename grenade.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 200 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Grenade +\emph default + is a hand held explosive device. + It is thrown for a short distance by using the +\noun on +Activate Upgrade +\noun default + button. + After a brief delay it will explode and cause tremendous damage to anything + in its area of effect. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Flamethrower +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename flamer.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 450 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 3 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Flamethrower +\emph default + is a short range incendiary weapon. + It holds up to 150 shots at a time and can easily damage the careless wielder. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Lucifer Cannon +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename lcannon.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 600 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 3 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Lucifer Cannon +\emph default + is the human team's most devastating weapon. + It is an energy weapon that can hold up to 90 cells at a time, or 135 with + a +\emph on +Battery Pack +\emph default +. + By holding down the +\noun on +Primary Attack +\noun default + button, a player may charge up a powerful, slow moving projectile with + splash damage. + The longer the attack is charged the more powerful the projectile and the + more ammo used. + If the attack is charged for too long the weapon will explode, damaging + the player. + The +\noun on +Secondary Attack +\noun default +button fires a smaller projectile that requires no charging. +\layout Subsubsection + +Upgrades +\layout Standard + +Human players may equip themselves with any number of the following upgrades, + with a few exceptions: the +\emph on +Jet Pack +\emph default + and +\emph on +Battery Pack +\emph default + may not be used together and the +\emph on +Battlesuit +\emph default + may not be used with the +\emph on +Jet Pack +\emph default +, +\emph on +Battery Pack +\emph default +, +\emph on +Light Armour +\emph default +, or +\emph on +Helmet +\emph default +. + Only one of any type of upgrade may be carried at a time. + Upgrades that do not grant an intrinsic effect must be selected in the + player's inventory with the +\noun on +Next Upgrade +\noun default + and +\noun on +Previous Upgrade +\noun default + buttons and then activated with the +\noun on +Activate Upgrade +\noun default + button. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Light Armour +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename larmour.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 70 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Light Armour +\emph default + grants the wearer improved defense to the torso and leg areas. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Helmet +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename helmet.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 90 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Helmet +\emph default + improves the defense of the wearer's head and also displays a radar that + shows the relative positions of nearby enemies and enemy structures. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="2" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Medkit +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Medkits +\emph default + are a free holdable given to every human upon spawning and refilled at +\emph on + Medistations +\emph default + to players with full health. + They may not be refilled or exchanged at +\emph on + Armouries +\emph default +. + When used with the +\noun on + Activate Upgrade +\noun default + button, +\emph on + Medkits +\emph default + immediately begin restoring health at a slow rate, gradually speeding up + until all damage incurred before the +\emph on + Medkit +\emph default + was activated is healed. + Additionally, if a human is poisoned, using a +\emph on + Medkit +\emph default + will cure the poison and confer a 30 second immunity to poison. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Battery Pack +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename battpack.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 100 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Battery Pack +\emph default + increases the maximum ammo capacity of energy weapons by 50%. + It may not be used in conjunction with the +\emph on +Jet Pack +\emph default +. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Jet Pack +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename jetpack.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 120 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Jet Pack +\emph default + grants the wearer the power of slow but unlimited flight. + When activated with the +\noun on +Activate Upgrade +\noun default + button, a player may ascend or descend using the +\noun on +Jump +\noun default + or +\noun on +Crouch +\noun default + buttons, respectively. + The +\emph on +Jet Pack +\emph default + ceases to function if there is no operational +\emph on +Reactor +\emph default +present. + Additionally it temporarily cuts out if the player receives any damage. + The +\emph on +Jet Pack +\emph default + may not be used in conjunction with the +\emph on +Battery Pack +\emph default +. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Battlesuit +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename bsuit.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Cost: 400 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 3 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Battlesuit +\emph default + provides a significant defensive boost to the wearer's entire body. + Due to this coverage, the +\emph on +Battlesuit +\emph default + may not be used in conjunction with any other wearable upgrade ( +\emph on +Light Armour +\emph default +, +\emph on +Helmet +\emph default +, +\emph on +Battery Pack +\emph default +, and +\emph on +Jet Pack +\emph default +). + Players are also prevented from crouching while wearing Battlesuits. +\layout Subsubsection + +Structures +\layout Standard + +All human structures must be built in proximity to a +\emph on +Reactor +\emph default + or a +\emph on +Repeater +\emph default +. + With +\emph on +Telenodes +\emph default + as the only exception, all structures require the presence of a working + +\emph on +Reactor +\emph default + to function. + All human structures explode in a powerful blast harmful to anything within + their radius when destroyed. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Reactor +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename reactor.jpg + scale 75 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Power: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Reactor +\emph default + is the power source for all human structures in a map. + There may only be one +\emph on +Reactor +\emph default +, and it must be present before any structures other than +\emph on + Repeaters +\emph default + can be built. + If the +\emph on +Reactor +\emph default + is destroyed then all structures besides +\emph on +Telenodes +\emph default + cease to function. + The +\emph on +Reactor +\emph default + has a limited amount of power which is distributed among every other structure + built, each having its own cost. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Telenode +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename telenode.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Power: 10 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Telenode +\emph default + is the most basic and fundamental human structure; it is from these that + humans spawn into the game. + They are also the only structure that continues to function in the absence + of a +\emph on + Reactor +\emph default +. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Machine Gun Turret +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename turret.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Power: 8 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Machine Gun Turret +\emph default + is the primary defensive structure for the human team. + While they have a clear line of sight to an alien within their range, they + will track and fire at the alien until it is dead. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Tesla Generator +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename tesla.jpg + scale 80 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Power: 10 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 3 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Tesla Generators +\emph default + are a defensive structure that will unconditionally hit any target within + their range and line of sight with an electrical surge. + To be built and function, a +\emph on +Tesla Generator +\emph default + requires the presence of a +\emph on +Defense Computer +\emph default + somewhere in the map. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Armoury +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename armoury.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Power: 10 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Armoury +\emph default + is an essential part of every human base, allowing upgrades beyond the + basic spawning equipment to be bought and exchanged. + It is the sole means of human advancement. + To use an +\emph on +Armoury +\emph default +, approach it and press the +\noun on +Use Structure/Evolve +\noun default + button. + Ammo for non-energy weapons may also be acquired at no cost from an +\emph on +Armoury +\emph default + by using the +\noun on +Buy Ammo +\noun default + button. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Defense Computer +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename dcc.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Power: 8 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Defense Computers +\emph default + coordinate the attacks of +\emph on +Machine Gun Turrets +\emph default +, preventing them from firing at a single target when multiple targets are + available. + They are also required for the production of +\emph on +Tesla Generators +\emph default +. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Medistation +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename medistat.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Power: 8 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 1 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + +The +\emph on +Medistation +\emph default + provides the only means for humans to heal themselves. + By standing on one, a human will quickly regenerate health up to their + maximum of 100. + +\emph on + Medistations +\emph default + will also refill +\emph on + Medkits +\emph default + to humans with full health. + Only one person may use a +\emph on +Medistation +\emph default + at a time. +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="3" columns="2"> +<features> +<column alignment="left" valignment="top" width="0"> +<column alignment="right" valignment="top" width="0"> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\emph on +Repeater +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell multicolumn="1" alignment="center" valignment="top" usebox="none"> +\begin_inset Text + +\layout Standard + + +\begin_inset Graphics + filename repeater.jpg + scale 85 + +\end_inset + + +\end_inset +</cell> +<cell multicolumn="2" alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Power: 0 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Stage: 2 +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\emph on +Repeaters +\emph default + serve as power distributors that may be built anywhere not already powered, + even when no +\emph on +Reactor +\emph default + is present. + Any other structure may be built in proximity to a working +\emph on +Repeater +\emph default + as if it were a +\emph on +Reactor +\emph default +. + If a +\emph on +Repeater +\emph default + powers nothing for 90 seconds, it will automatically self destruct. +\layout Section + + +\begin_inset LatexCommand \label{sec:Technical} + +\end_inset + +Technical +\layout Subsection + +Bindings +\layout Standard +\align center + +\begin_inset Tabular +<lyxtabular version="3" rows="22" columns="3"> +<features islongtable="true"> +<column alignment="block" valignment="top" rightline="true" width="4cm"> +<column alignment="block" valignment="top" rightline="true" width="4cm"> +<column alignment="block" valignment="top" width="5.5cm"> +<row bottomline="true"> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Name in menu +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Binding +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Function +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Primary Attack +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold ++attack +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Use primary attack function. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Secondary Attack +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold ++button5 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Use secondary attack function. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Previous Upgrade +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +weapprev +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As human, preselect the previous upgrade in your inventory. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Next Upgrade +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +weapnext +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As human, preselect the next upgrade in your inventory. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Activate Upgrade +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold ++button2 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As human, activate the current preselected inventory item. + Also used for some alien abilities. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Reload +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +reload +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As human, reload the selected weapon. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Buy Ammo +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +buy ammo +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As human, buy ammo from an +\emph on +armoury +\emph default +, +\emph on +repeater +\emph default + or +\emph on +reactor +\emph default +. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Use Medkit +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +itemact medkit +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As human, activate your +\emph on +Medkit +\emph default +. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Use Structure/Evolve +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold ++button7 +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As human, use the structure in front of the player. + As alien, evolve into a different class. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Deconstruct Structure +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +deconstruct +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As a builder class, deconstruct the structure in front of the player cleanly. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\noun on +Sprint +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +boost +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Run faster. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +destroy +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As a builder class, destroy the structure in front of the player. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +itemact <item> +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +If held, activate the specified item. + For weapons this will select them. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +itemdeact <item> +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +If held, deactivate the specified item. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +itemtoggle <item> +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +If held, toggle the state of the specified item. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +sell <item> +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +If held and within range of an +\emph on +armoury +\emph default +, sell the specified item. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +sell weapons +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +If within range of an +\emph on +armoury +\emph default +, sell all weapons. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +sell upgrades +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +If within range of an +\emph on +armoury +\emph default +, sell all upgrades. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +buy <item> +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +If within range of an +\emph on +armoury +\emph default + and sufficiently wealthy, buy the specified item. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +class <class> +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +Given sufficient kills, evolve to the specified class. +\end_inset +</cell> +</row> +<row> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +-- +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" usebox="none"> +\begin_inset Text + +\layout Standard + + +\series bold +build <structure> +\end_inset +</cell> +<cell alignment="center" valignment="top" topline="true" leftline="true" rightline="true" usebox="none"> +\begin_inset Text + +\layout Standard + +As a builder class, build the specified structure. +\end_inset +</cell> +</row> +</lyxtabular> + +\end_inset + + +\layout Standard + + +\series bold +<item> +\series default + -- +\emph on +blaster, rifle, ckit, ackit, shotgun, lgun, prifle, mdriver, flamer, chaingun, + lcannon, psaw, gren, medkit, jetpack +\layout Standard + + +\series bold +<class> +\series default + -- +\emph on +builder, builderupg, level0, level1, level1upg, level2, level2upg, level3, + level3upg, level4 +\layout Standard + + +\series bold +<structure> +\series default + -- +\emph on +eggpod, barricade, booster, acid_tube, hive, trapper, overmind, hovel, telenode, + medistat, mgturret, tesla, dcc, arm, reactor, repeater +\layout Subsection + +Particle System +\layout Standard + +Files matching the pattern scripts/*.particle are loaded as particle system + description files. + Each .particle file can contain an arbitrary number of discrete particle + systems, much like a .shader file can house many shaders. + A particle system is declared by a name followed by curly braces within + which the functionality of the particle system is defined. + For example: +\layout LyX-Code + +aShinyNewParticleSystem { } +\layout Standard + +Inside the particle system declaration are placed up to four particle ejectors. + Ejectors are identified by the keyword ejector and curly braces: +\layout LyX-Code + +aShinyNewParticleSystem +\layout LyX-Code + +{ +\layout LyX-Code + + ejector { } +\layout LyX-Code + + ejector { } +\layout LyX-Code + +} +\layout Standard + +The role of the particle ejector is to create some number of new particles + at a defined rate. + These attributes are controlled by the following parameters: +\layout Itemize + + +\emph on +count <number>|infinite +\emph default + - the number of particles this ejector will spawn. +\layout Itemize + + +\emph on +delay <msec> +\emph default + - the delay in msec before the ejector starts spawning. +\layout Itemize + + +\emph on +period <initial> <final> <variance> +\emph default + - the period between particle ejections. +\layout Standard + +It is perfectly acceptable to have an initial period of zero. + In this case the number of particles specified by the count keyword will + be ejected at once. + It is not permissible to have count infinite and a period of zero for obvious + reasons. +\layout Standard + +At ejection time each ejector creates up to four new particles based on + templates. + These are specified in the ejector section using the particle keyword: +\layout LyX-Code + +aShinyNewParticleSystem +\layout LyX-Code + +{ +\layout LyX-Code + + ejector +\layout LyX-Code + + { +\layout LyX-Code + + particle { } +\layout LyX-Code + + particle { } +\layout LyX-Code + + count 50 +\layout LyX-Code + + delay 0 +\layout LyX-Code + + period 0 - 0 +\layout LyX-Code + + } +\layout LyX-Code + +} +\layout Standard + +Each particle template has a number of attributes: +\layout Itemize + + +\emph on +shader <fps>|sync <shader1> <shader2> ... + <shaderN> +\emph default + - this specifies the shaders to use for the particle. + The frame rate can be set to a static rate or the +\emph on +sync +\emph default + parameter can be used in which case the frame rate will be synchronised + to the lifetime of the particle such that the first frame is displayed + on birth and the last frame is displayed immediately before death. +\layout Itemize + + +\emph on +displacement <x> <y> <z> <variance> +\emph default + - a static displacement about the attachment point. + The +\emph on +variance +\emph default + parameter specifies a random displacement in all axes. +\layout Itemize + + +\emph on +normalDisplacement <displacement> +\emph default + - for particle systems that have their normal set (impact particle systems + for example) this specifies the magnitude of a displacement along the normal. +\layout Itemize + + +\emph on +velocityType static|tag|cent|normal +\emph default + - this specifies how the particle will compute its initial velocity. + +\emph on +static +\emph default + means it is specified statically in the .particle file, +\emph on +tag +\emph default + means the velocity is in the direction of the tag it is attached to, +\emph on +cent +\emph default + means the velocity is in the direction of the cent it is attached to and + +\emph on +normal +\emph default + means the velocity is in the direction of the particle system normal. +\layout Itemize + + +\emph on +velocityDir linear|point +\emph default + - this specifies whether the initial velocity is computed as a simple direction + or as the direction towards a secondary point (defined by +\emph on +velocityPoint +\emph default + or dynamically through +\emph on +velocityType cent +\emph default +). +\layout Itemize + + +\emph on +velocity <x> <y> <z> <variance> +\emph default + - for when +\emph on +velocityType +\emph default + +\emph on +static +\emph default + is present this specifies the direction. + The +\emph on +variance +\emph default + here is specified in degrees e.g. + "~5" - up to 5 degrees deviation. +\layout Itemize + + +\emph on +velocityMagnitude <magnitude> +\emph default + - the magnitude of the velocity. +\layout Itemize + + +\emph on +velocityPoint <x> <y> <z> <variance> +\emph default + - for when +\emph on +velocityType static +\emph default + and +\emph on +velocityDir point +\emph default + are present this specifies the point to move towards. +\layout Itemize + + +\emph on +parentVelocityFraction <fraction> +\emph default + - for when the particle system is attached to a cent this specifies the + fraction of the cent's velocity that is added to the particle's velocity. +\layout Itemize + + +\emph on +accelerationType static|tag|cent|normal +\emph default + - this specifies how the particle will compute its acceleration. + +\emph on +static +\emph default + means it is specified statically in the .particle file, +\emph on +tag +\emph default + means the acceleration is in the direction of the tag it is attached to, + +\emph on +cent +\emph default + means the acceleration is in the direction of the cent it is attached to + and +\emph on +normal +\emph default + means the acceleration is in the direction of the particle system normal. +\layout Itemize + + +\emph on +accelerationDir linear|point +\emph default + - this specifies whether the acceleration is computed as a simple direction + or as the direction towards a secondary point (defined by +\emph on +accelerationPoint +\emph default + or dynamically through +\emph on +accelerationType cent +\emph default +). +\layout Itemize + + +\emph on +acceleration <x> <y> <z> <variance> +\emph default + - for when +\emph on +accelerationType +\emph default + static is present this specifies the direction. + The +\emph on +variance +\emph default + here is specified in degrees e.g. + "~5" - up to 5 degrees deviation. +\layout Itemize + + +\emph on +accelerationMagnitude <magnitude> +\emph default + - the magnitude of the acceleration. +\layout Itemize + + +\emph on +accelerationPoint <x> <y> <z> <variance> +\emph default + - for when +\emph on +accelerationType static +\emph default + and +\emph on +accelerationDir point +\emph default + are present this specifies the point to move towards. +\layout Itemize + + +\emph on +bounce <fraction>|cull +\emph default + - the fraction of velocity that is reflected when a particle collides. + If this is set to 0.0 the particle won't collide. + When +\emph on +cull +\emph default + is used particles are culled as soon as they collide with objects. +\layout Itemize + + +\emph on +overdrawProtection +\emph default + - cull particles that occupy a large amount of screen space. +\layout Itemize + + +\emph on +realLight +\emph default + - light particles using the lightgrid instead of fullbright. +\layout Itemize + + +\emph on +cullOnStartSolid +\emph default + - cull particles that are spawned inside brushes. +\layout Itemize + + +\emph on +radius <delay> <initial> <final> +\emph default + - the radius of the particle throughout its lifetime. + The +\emph on +delay +\emph default + parameter specifies the time in msec before radius scaling begins. + The +\emph on +initial +\emph default + and +\emph on +final +\emph default + parameters specify the radii of the particle in quake units. +\layout Itemize + + +\emph on +alpha <delay> <initial> <final> +\emph default + - the alpha of the particle throughout its lifetime. + The +\emph on +delay +\emph default + parameter specifies the time in msec before alpha scaling begins. + The +\emph on +initial +\emph default + and +\emph on +final +\emph default + parameters specify the alpha of the particle where 1.0 is totally opaque + and 0.0 is totally transparent. +\layout Itemize + + +\emph on +rotation <delay> <initial> <final> +\emph default + - the rotation of the particle throughout its lifetime. + The +\emph on +delay +\emph default + parameter specifies the time in msec before the rotation begins. + The +\emph on +initial +\emph default + and +\emph on +final +\emph default + parameters specify the rotation of the particle in degrees. +\layout Itemize + + +\emph on +lifeTime <time> +\emph default + - the lifetime of the particle. +\layout Itemize + + +\emph on +childSystem <particle system> +\emph default + - specifies a particle system to attach to this particle. +\layout Itemize + + +\emph on +onDeathSystem <particle system> +\emph default + - specifies a particle system to spawn at the point where this particle + died. +\layout Standard + +Except for vector components, +\emph on +shader fps ... + +\emph default + and +\emph on +period <initial <final> <variance> +\emph default +, every value can be specified with a random variance. + The syntax for this is as follows: +\layout LyX-Code + +[value][~variance[%]] +\layout Standard + +So the following forms are possible, where random is a random number between + 0.0 and 1.0 inclusive: +\layout LyX-Code + +5.0 // 5.0 +\layout LyX-Code + +5.0~8.0 // 5.0 + ( random * 8.0 ) +\layout LyX-Code + +5.0~200% // 5.0 + ( random * 5.0 * 200% ) +\layout LyX-Code + +~7.0 // random * 7.0 +\layout Standard + +This allows for relatively flexible randomisation of most of the particle's + parameters. + For parameters taking an initial and final value, specifying the final + value as '-' will result in a final value the same as the initial value. +\layout Standard + +For the purposes of map based particle systems using +\emph on +misc_particle_system +\emph default + it is safe to ignore +\emph on +velocityType +\emph default + and +\emph on +accelerationType tag|cent|normal +\emph default +, +\emph on +normalDisplacement +\emph default + and +\emph on +parentVelocityFraction +\emph default + altogether. +\layout Standard + +Of course, it is not necessary to specify every parameter documented here + for every particle system. + If a parameter is not included it will usually default to zero. + C/C++ style comments can be used throughout. + There are an enormous number of possible combinations of particle systems + parameters and as such it is impractical to test them all. + For this reason it is possible that certain permutations do not behave + as expected or wrongly. + In this case you may have discovered a bug - let us know. + Having said this when you're having problems with a particle system make + sure you scroll up the console and check that it compiled OK, I've written + the parser to be very intolerant of error. +\layout Standard + +Here is an example particle system: +\layout LyX-Code + +aShinyNewParticleSystem +\layout LyX-Code + +{ +\layout LyX-Code + + ejector +\layout LyX-Code + + { +\layout LyX-Code + + particle +\layout LyX-Code + + { +\layout LyX-Code + + shader sync shader1 shader2 +\layout LyX-Code + + +\layout LyX-Code + + velocityType static +\layout LyX-Code + + velocityDir linear +\layout LyX-Code + + velocityMagnitude 200 +\layout LyX-Code + + velocity 0 0 1 ~30 +\layout LyX-Code + +\layout LyX-Code + + accelerationType static +\layout LyX-Code + + accelerationDir linear +\layout LyX-Code + + accelerationMagnitude 50 +\layout LyX-Code + + acceleration 0 0 1 ~0 +\layout LyX-Code + +\layout LyX-Code + + radius 0 10.0 50.0 +\layout LyX-Code + + alpha 0 1.0 1.0 +\layout LyX-Code + + rotation 0 ~360 - +\layout LyX-Code + + bounce 0.4 +\layout LyX-Code + + lifeTime 1500 +\layout LyX-Code + + } +\layout LyX-Code + +\layout LyX-Code + + count 50 +\layout LyX-Code + + delay 0 +\layout LyX-Code + + period 0 - 0 +\layout LyX-Code + + } +\layout LyX-Code + +} +\layout Subsection + +Map Rotation System +\layout Standard + +The file +\emph on +maprotation.cfg +\emph default + is used to describe up to 16 map rotations which may be used by a Tremulous + server. + In its most simple form, the syntax is as follows: +\layout LyX-Code + +mapRotation1 +\layout LyX-Code + +{ +\layout LyX-Code + + map1 +\layout LyX-Code + + map2 +\layout LyX-Code + + map3 +\layout LyX-Code + +} +\layout LyX-Code + +\layout LyX-Code + +mapRotation2 +\layout LyX-Code + +{ +\layout LyX-Code + + map6 +\layout LyX-Code + + map3 +\layout LyX-Code + + map9 +\layout LyX-Code + +} +\layout Standard + +This specifies two rotations, each consisting of three maps. + The contents of the cvar +\emph on +g_initialMapRotation +\emph default + specifies the map rotation to start after the map the server was started + with has finished. + It is possible to specify a list of server commands to be run after a map + has finished: +\layout LyX-Code + +mapRotation3 +\layout LyX-Code + +{ +\layout LyX-Code + + map1 +\layout LyX-Code + + { +\layout LyX-Code + + set sv_hostname +\begin_inset Quotes eld +\end_inset + +Just finished map1! +\begin_inset Quotes erd +\end_inset + + +\layout LyX-Code + + set g_teamForceBalance 0 +\layout LyX-Code + + } +\layout LyX-Code + + +\layout LyX-Code + + map2 +\layout LyX-Code + + { +\layout LyX-Code + + set g_teamForceBalance 1 +\layout LyX-Code + + } +\layout LyX-Code + +\layout LyX-Code + + map3 +\layout LyX-Code + +} +\layout Standard + +Primitive logic is also available: +\layout LyX-Code + +mapRotation4 +\layout LyX-Code + +{ +\layout LyX-Code + + map1 +\layout LyX-Code + + goto map3 +\layout LyX-Code + +\layout LyX-Code + + map2 +\layout LyX-Code + + if numClients > 8 +\layout LyX-Code + + mapRotation3 +\layout LyX-Code + +\layout LyX-Code + + map3 +\layout LyX-Code + + if lastWin aliens +\layout LyX-Code + + mapRotation2 +\layout LyX-Code + + +\layout LyX-Code + + if random +\layout LyX-Code + + mapRotation1 +\layout LyX-Code + +} +\layout LyX-Code + +\layout LyX-Code + +mapRotation5 +\layout LyX-Code + +{ +\layout LyX-Code + + map1 +\layout LyX-Code + + if lastWin humans +\layout LyX-Code + + map4 +\layout LyX-Code + + map2 +\layout LyX-Code + + map3 +\layout LyX-Code + + goto map1 +\layout LyX-Code + + map4 +\layout LyX-Code + + map5 +\layout LyX-Code + +} +\layout Standard + +The +\series bold +goto +\series default + keyword is used to unconditionally branch to either another map +\emph on +in the current rotation +\emph default + or another map rotation entirely. + The +\series bold +if +\series default +keyword is used in conjunction with a condition to decide whether or not + to branch to the specified map or rotation (as with the +\series bold +goto +\series default + keyword). + The condition itself can be one of +\series bold +numClients <op> <number> +\series default +, +\series bold +lastWin <team> +\series default +or +\series bold +random +\series default +, where +\series bold +<op> +\series default + is +\series bold +< +\series default +, +\series bold +> +\series default + or +\series bold += +\series default + and +\series bold +<team> +\series default + is +\series bold +aliens +\series default + or +\series bold +humans +\series default +. + The +\series bold +random +\series default + condition simply chooses whether or not to execute the change randomly, + with each outcome equally likely. +\layout Section + +Credits +\layout Standard + +Tim +\emph on +'Timbo' +\emph default + Angus -- Programming and Direction +\layout Standard + +Nick +\emph on +'jex' +\emph default + Jansens -- Mapping, texturing and 2D artwork +\layout Standard + +Robin +\emph on +'OverFlow' +\emph default + Marshall -- Modelling, animation and mapping +\layout Standard + +Jan +\emph on +'Stannum' +\emph default + van der Weg -- Texturing and mapping +\layout Standard + +Mike +\emph on +'Veda' +\emph default + Mcinnerney -- Modelling, animation and texturing +\layout Standard + +Gordon +\emph on +'Godmil' +\emph default + Miller -- Mapping +\layout Standard + +'Who-[Soup]' -- Mapping +\layout Standard + +Tristan +\emph on +'jhrx' +\emph default + Blease -- Mapping +\layout Standard + +Paul +\emph on +'MoP' +\emph default + Greveson -- Modelling and texturing +\layout Standard + +Chris +\emph on +'Dolby' +\emph default + McCarthy -- Sound +\layout Subsection* + +Special thanks +\layout Standard + +Asa +\emph on +'Norfenstein' +\emph default + Kravets -- Manual content, QA, design and balance suggestions +\layout Standard + +'Crylar' -- Concept art +\layout Standard + +Richard +\emph on +'R1CH' +\emph default + Stanway -- Test server hosting +\layout Standard + +Stéphane +\emph on +'MEGASTeP' +\emph default + Peter -- Early test server hosting +\layout Standard + +Sourceforge and TARDIS -- Web hosting +\layout Standard + +Arsonide, Bajoran, Bt, Chamooze, Crylar, Cybernetsam, dzjepp, ectox, Edo, + evil poop, Excalibur, FroggyQuim, Idle Wild, juice, Kai, kingping, Lava + Croft, MajorPain, MiDiaN, Molog, Mutemode, Norfenstein, Orc, R1CH, Ratti, + Ravyn, Salteh, Sandy, SharkDog, slux, Suddien, Supa, Survivor, Swie, sysrq, + TerrorEast, Tyler, Vitae, Woo -- Beta testers +\layout Subsection* + +Also thanks +\layout Standard + +babyomen, Carc, djbob, Grim, Grytviken, Gumby, heimdall, Hellbringer, Hentai, + Mighty_Pea, Psylo, Reaper-1, RR2D02, Saig, Smack, T-bone, The GtkRadiant + people, The inhabitants of Quake3World, ThePyro, TTimo, ValouR, ydnar, + Yves 'evillair' Allaire +\layout Standard +\align center + +\noun on +Tremulous is copyright darklegion development 2005 +\the_end diff --git a/tremulous_ui/connect.menu b/tremulous_ui/connect.menu new file mode 100644 index 00000000..835326e9 --- /dev/null +++ b/tremulous_ui/connect.menu @@ -0,0 +1,13 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "Connect"
+ background "gfx/2d/load_screen"
+ rect 0 0 640 480
+ fullScreen MENU_FALSE
+ visible MENU_FALSE
+ style WINDOW_STYLE_SHADER
+ }
+}
diff --git a/tremulous_ui/createfavorite.menu b/tremulous_ui/createfavorite.menu new file mode 100644 index 00000000..859e358d --- /dev/null +++ b/tremulous_ui/createfavorite.menu @@ -0,0 +1,129 @@ +#include "ui/menudef.h"
+
+{
+\\ CREATE FAVORITE POPUP MENU \\
+
+ menuDef
+ {
+ name "createfavorite_popmenu"
+ visible 0
+ fullscreen 0
+ rect 204 122 235 235
+ focusColor 1 .75 0 1
+ style 1
+ border 1
+ popup
+ onESC
+ {
+ close createfavorite_popmenu;
+ open joinserver
+ }
+
+ itemDef
+ {
+ name window
+ rect 47 47 144 144
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ // ENTER NAME AND ADDRESS //
+
+ itemDef
+ {
+ name name
+ text "Name"
+ style 0
+ decoration
+ textscale .3
+ rect 0 61 110 20
+ textalign 1
+ textalignx 117
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name nameEntry
+ style 1
+ maxchars 15
+ text ""
+ textscale .25
+ TYPE 4
+ cvar "ui_favoriteName"
+ rect 60 81 120 20
+ textalign 0
+ textalignx 10
+ textaligny 16
+ forecolor 1 1 1 1
+ backcolor .2 .2 .2 .5
+ visible 1
+ }
+
+ itemDef
+ {
+ name address
+ text "IP Address"
+ style 0
+ decoration
+ textscale .3
+ rect 0 111 110 20
+ textalign 1
+ textalignx 117
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name addressEntry
+ style 1
+ maxchars 20
+ maxPaintChars 12
+ text ""
+ textscale .25
+ TYPE 4
+ maxchars 21
+ cvar "ui_favoriteAddress"
+ rect 60 131 120 20
+ textalign 0
+ textalignx 10
+ textaligny 16
+ forecolor 1 1 1 1
+ backcolor .2 .2 .2 .5
+ visible 1
+ }
+
+ itemDef
+ {
+ name yes
+ text "Ok"
+ type 1
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 103 158 30 26
+ textalign 1
+ textalignx 15
+ textaligny 20
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript CreateFavorite;
+ close createfavorite_popmenu;
+ open joinserver
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/createserver.menu b/tremulous_ui/createserver.menu new file mode 100644 index 00000000..170cd294 --- /dev/null +++ b/tremulous_ui/createserver.menu @@ -0,0 +1,547 @@ +#include "ui/menudef.h"
+
+{
+ \\ Server Creation \\
+
+ menuDef
+ {
+ name "createserver"
+ visible 0
+ fullscreen 1
+ rect 0 0 640 480
+ focusColor 1 .75 0 1
+ outOfBoundsClick
+ style 0
+
+ onOpen
+ {
+ uiScript loadArenas;
+ hide accept_alt;
+ show accept;
+ hide back_alt;
+ show back;
+ hide grpmessage
+ }
+
+ onEsc
+ {
+ close createserver;
+ open joinserver
+ }
+
+ itemDef
+ {
+ name background
+ rect 0 0 640 480
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ rect 2 2 330 418
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor 1 1 1 .25
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .25
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ rect 334 2 302 418
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor 1 1 1 .25
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .25
+ visible 1
+ decoration
+ }
+
+ // map selection
+
+ itemDef
+ {
+ name mappreview
+ style 0
+ ownerdraw UI_STARTMAPCINEMATIC
+ rect 7 7 320 240
+ border 1
+ bordercolor .5 .5 .5 .5
+ visible 1
+ }
+
+ itemDef
+ {
+ name mappreview
+ style WINDOW_STYLE_FILLED
+ rect 6 6 322 242
+ border 1
+ bordercolor .5 .5 .5 .5
+ visible 1
+ }
+
+ itemDef
+ {
+ name maplist
+ rect 6 252 322 164
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_ALLMAPS
+ textalign 3
+ textaligny 14
+ border 1
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ columns 1
+ 2 190 25 ITEM_ALIGN_LEFT
+ }
+
+
+ // SETTINGS //
+
+ // NORMAL //
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_EDITFIELD
+ text "Host Name:"
+ cvar "sv_hostname"
+ maxChars 32
+ maxPaintChars 20
+ rect 420 20 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name normal
+ group grpsettings
+ type ITEM_TYPE_NUMERICFIELD
+ text "Time Limit:"
+ cvar "timelimit"
+ rect 420 40 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ maxchars 4
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_NUMERICFIELD
+ text "Maximum Players:"
+ cvar "sv_maxclients"
+ rect 420 60 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ maxchars 4
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_YESNO
+ text "Require Password:"
+ cvar "g_needpassword"
+ rect 420 80 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type 4
+ text "Password:"
+ cvar "g_password"
+ rect 420 100 128 20
+ maxchars 10
+ maxPaintChars 10
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+
+
+
+
+
+
+ itemDef
+ {
+ name normal
+ group grpsettings
+ type ITEM_TYPE_MULTI
+ text "Punkbuster:"
+ cvar "sv_punkbuster"
+ cvarFloatList { "No" 0 "Yes" 1 }
+ rect 420 150 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name normal
+ group grpsettings
+ type ITEM_TYPE_YESNO
+ text "Pure Server:"
+ cvar "sv_pure"
+ rect 420 170 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name normal
+ group grpsettings
+ type ITEM_TYPE_MULTI
+ text "Dedicated:"
+ // dedicated is a special cvar in that as soon as it is set,
+ // the game goes to console only so the ui catches this one specifically
+ cvar "ui_dedicated"
+ cvarFloatList { "No" 0 "LAN" 1 "Internet" 2 }
+ rect 420 190 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_YESNO
+ text "Auto Download:"
+ cvar "sv_allowdownload"
+ rect 420 210 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_YESNO
+ text "Enable Voting:"
+ cvar "g_allowvote"
+ rect 420 230 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+
+
+
+
+
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_NUMERICFIELD
+ text "Minimum Ping:"
+ cvar "sv_minping"
+ rect 420 280 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ maxchars 4
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_NUMERICFIELD
+ text "Maximum Ping:"
+ cvar "sv_maxping"
+ rect 420 300 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ maxchars 4
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_YESNO
+ text "Synchronous Client:"
+ cvar "g_synchronousclients"
+ rect 420 320 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_NUMERICFIELD
+ text "Max Rate:"
+ cvar "sv_maxrate"
+ rect 420 340 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ maxchars 4
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_NUMERICFIELD
+ text "Zombie Time:"
+ cvar "sv_zombietime"
+ rect 420 360 128 20
+ maxchars 4
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name expert
+ group grpsettings
+ type ITEM_TYPE_NUMERICFIELD
+ text "Reconnect Limit:"
+ cvar "sv_reconnectlimit"
+ maxchars 4
+ rect 420 380 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 65
+ textaligny 12
+ textscale .36
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+
+
+
+
+
+ // BACK BAR //
+
+ itemDef
+ {
+ name back
+ style 3
+ background "ui/assets/backarrow.tga"
+ rect 16 424 50 50
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close createserver;
+ open joinserver
+ }
+
+ mouseEnter
+ {
+ hide back;
+ show back_alt
+ }
+ }
+
+ itemDef
+ {
+ name back_alt
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/backarrow_alt.tga"
+ rect 16 424 50 50
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible 0
+ type ITEM_TYPE_BUTTON
+
+ text "Back"
+ textalign ITEM_ALIGN_LEFT
+ textaligny 36
+ textalignx 60
+ textscale .6
+
+ mouseExit
+ {
+ hide back_alt;
+ show back
+ }
+
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close createserver;
+ open joinserver
+ }
+ }
+
+
+
+
+ itemDef
+ {
+ name accept
+ style 3
+ rect 574 424 50 50
+ background "ui/assets/forwardarrow.tga"
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible 1
+ mouseEnter
+ {
+ hide accept;
+ show accept_alt
+ }
+
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close fight; //TA: no i don't know
+ uiScript StartServer
+ }
+ }
+
+ itemDef
+ {
+ name accept_alt
+ style WINDOW_STYLE_SHADER
+ rect 574 424 50 50
+ background "ui/assets/forwardarrow_alt.tga"
+ backcolor 0 0 0 0
+ type ITEM_TYPE_BUTTON
+ forecolor 1 1 1 1
+ visible 0
+ type ITEM_TYPE_BUTTON
+
+ text "Create"
+ textalign ITEM_ALIGN_LEFT
+ textaligny 36
+ textalignx -70
+ textscale .6
+
+ mouseExit
+ {
+ hide accept_alt;
+ show accept
+ }
+
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close fight; //TA: no i don't know
+ uiScript StartServer
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/error.menu b/tremulous_ui/error.menu new file mode 100644 index 00000000..3674a91e --- /dev/null +++ b/tremulous_ui/error.menu @@ -0,0 +1,103 @@ +#include "ui/menudef.h"
+
+{
+ \\ ERROR \\
+
+ menuDef
+ {
+ name "error_popmenu"
+ visible 0
+ fullscreen 0
+ rect 158 80 320 320
+ focusColor 1 .75 0 1
+ style 1
+ border 1
+ popup
+ onClose { uiScript clearError }
+ onOpen { }
+ onESC
+ {
+ play "sound/misc/menu1.wav";
+ close error_popmenu;
+ open main
+ }
+
+
+ itemDef
+ {
+ name window
+ rect 10 15 300 320
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name errorinfo
+ rect 0 50 320 20
+ text "Error:"
+ textalign 1
+ textstyle 6
+ textscale .333
+ textalignx 160
+ textaligny 23
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name errorinfo
+ rect 60 80 200 270
+ type ITEM_TYPE_TEXT
+ style 1
+ textstyle 3
+ autowrapped
+ cvar "com_errorMessage"
+ textalign ITEM_ALIGN_CENTER
+ textalignx 100
+ textaligny 23
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+
+ // BUTTON //
+
+
+ itemDef
+ {
+ name exit
+ text "Exit"
+ type 1
+ textscale .25
+ group grpControlbutton
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 138 295 45 26
+ textalign 1
+ textalignx 22
+ textaligny 20
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close error_popmenu;
+ open main
+ }
+ }
+ }
+}
+
+
diff --git a/tremulous_ui/findplayer.menu b/tremulous_ui/findplayer.menu new file mode 100644 index 00000000..df25f02c --- /dev/null +++ b/tremulous_ui/findplayer.menu @@ -0,0 +1,245 @@ +#include "ui/menudef.h"
+
+{
+ \\ FIND PLAYER POPUP MENU \\
+
+ menuDef
+ {
+ name "findplayer_popmenu"
+ visible 0
+ fullscreen 0
+ rect 158 80 320 340
+ focusColor 1 .75 0 1
+ style 1
+ border 1
+ popup
+ onClose { }
+ onOpen
+ {
+ uiScript FindPlayer;
+ setfocus namefield
+ }
+
+ onESC
+ {
+ close findplayer_popmenu;
+ open joinserver
+ }
+
+ itemDef
+ {
+ name window
+ rect 10 15 320 340
+ style 1
+ backcolor 0 0 0 .25
+ forecolor 0 0 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ rect 10 15 300 320
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name findplayer
+ rect 0 20 320 20
+ text "Find a Friend"
+ textalign 1
+ textstyle 3
+ textscale .333
+ textalignx 155
+ textaligny 23
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ rect 55 53 245 20
+ style WINDOW_STYLE_FILLED
+ backcolor .2 .2 .2 .5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name namefield
+ group "playersettinggroup"
+ type ITEM_TYPE_EDITFIELD
+ style 0
+ text "Name:"
+ cvar "ui_findplayer"
+ maxChars 20
+ rect 20 48 215 32
+ textalign ITEM_ALIGN_LEFT
+ textalignx 5
+ textaligny 21
+ textscale .3
+ outlinecolor .2 .2 .2 .5
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ border 0
+ bordercolor 0 0 0 0
+ action { ui_script FindPlayer }
+ visible 1
+ }
+
+
+ itemDef
+ {
+ name serverNameList //LIST OF SERVER NAMES//
+ rect 20 75 280 80
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_FILLED
+ elementwidth 120
+ elementheight 16
+ textscale .225
+ backcolor 0 0 0 1
+ outlinecolor .2 .2 .2 .5
+ border 1
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_FINDPLAYER
+ visible 1
+ }
+
+ itemDef
+ {
+ name serverNamewindow
+ rect 20 75 264 80
+ style 1
+ backcolor 0 0 0 0
+ forecolor 0 0 0 0
+ border 1
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name serverInfoList //LIST OF SERVER STATUS INFORMATION//
+ rect 20 175 280 110
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_FILLED
+ elementwidth 120
+ elementheight 16
+ textscale .225
+ backcolor 0 0 0 1
+ border 1
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_SERVERSTATUS
+ notselectable
+ visible 1
+ columns 4
+ 2 40 20 ITEM_ALIGN_LEFT
+ 40 40 10 ITEM_ALIGN_LEFT
+ 90 40 10 ITEM_ALIGN_LEFT
+ 135 40 20 ITEM_ALIGN_LEFT
+ }
+
+ itemDef
+ {
+ name serverInfowindow
+ rect 20 175 264 110
+ style 1
+ backcolor 0 0 0 0
+ forecolor 0 0 0 0
+ border 1
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+
+ // BUTTON //
+
+ itemDef
+ {
+ name exit
+ text "Exit"
+ type 1
+ textscale .25
+ group grpControlbutton
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 38 295 45 26
+ textalign 1
+ textalignx 22
+ textaligny 20
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close findplayer_popmenu;
+ open joinserver
+ }
+ }
+
+ itemDef
+ {
+ name search
+ text "Search"
+ type 1
+ textscale .25
+ group grpControlbutton
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 131 295 60 26
+ textalign 1
+ textalignx 30
+ textaligny 20
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ ui_script FindPlayer
+ }
+ }
+
+ itemDef
+ {
+ name join
+ text "Join"
+ type 1
+ textscale .25
+ group grpControlbutton
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 238 295 45 26
+ textalign 1
+ textalignx 22
+ textaligny 20
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible 1
+ action { ui_script FoundPlayerJoinServer }
+ }
+ }
+}
+
+
diff --git a/tremulous_ui/hud.txt b/tremulous_ui/hud.txt new file mode 100644 index 00000000..c99bead1 --- /dev/null +++ b/tremulous_ui/hud.txt @@ -0,0 +1,11 @@ +// hud menu defs
+//
+{
+ loadMenu { "ui/tremulous_human_hud.menu" }
+ loadMenu { "ui/tremulous_alien_builder_hud.menu" }
+ loadMenu { "ui/tremulous_alien_general_hud.menu" }
+ loadMenu { "ui/tremulous_default_hud.menu" }
+
+ loadMenu { "ui/teamscore.menu" }
+ loadMenu { "ui/loading.menu" }
+}
diff --git a/tremulous_ui/infopanes.def b/tremulous_ui/infopanes.def new file mode 100644 index 00000000..fb99e245 --- /dev/null +++ b/tremulous_ui/infopanes.def @@ -0,0 +1,350 @@ +{ + name alienteam + text "The Alien Team\n\n" + text "The Aliens' strengths are in movement " + text "and the ability to quickly construct new bases quickly. They possess a " + text "range of abilities including basic melee attacks, movement-" + text "crippling poisons and more." + align left +} +{ + name humanteam + text "The Human Team\n\n" + text "The humans are the masters of technology. Although their bases take " + text "long to construct, their automated defense ensures they stay built. " + text "A wide range of upgrades and weapons are available to the humans, each " + text "contributing to eradicate the alien threat." + align left +} +{ + name spectateteam + text "Watch the game without playing." +} +{ + name autoteam + text "Join the team with the least players." +} +{ + name rifleitem + text "Rifle\n\n" + text "Basic weapon. Cased projectile weapon, with a slow clip based " + text "reload system.\n\n" + text "Credits: Free" +} +{ + name ckititem + text "Construction kit\n\n" + text "Used for building all basic structures. This includes " + text "spawns, power and basic defense.\n\n" + text "Credits: Free" +} +{ + name ackititem + text "Advanced Construction kit\n\n" + text "Used for building advanced structures. This includes " + text "combat computers and advanced defense.\n\n" + text "Credits: Free" +} +{ + name shotgunitem + text "Shotgun\n\n" + text "Close range weapon that is useful against larger foes. " + text "It has a slow repeat rate, but can be devastatingly " + text "effective.\n\n" + text "Credits: " text 150 +} +{ + name chaingunitem + text "Chain Gun\n\n" + text "Belt drive, cased projectile weapon. It has a high " + text "repeat rate but a wide firing angle and is therefore relatively " + text "inaccurate.\n\n" + text "Credits: " text 400 +} +{ + name flameritem + text "Flamethrower\n\n" + text "Sprays fire at its target. It is powered by compressed " + text "gas. The relatively low rate of fire means this weapon is most " + text "effective against static targets.\n\n" + text "Credits: " text 450 +} +{ + name mdriveritem + text "Mass Driver\n\n" + text "A portable particle accelerator which causes minor " + text "nuclear reactions at the point of impact. It has a very large " + text "payload, but fires slowly.\n\n" + text "Credits: " text 350 +} +{ + name prifleitem + text "Pulse Rifle\n\n" + text "An energy weapon that fires pulses of concentrated energy at a fast " + text "rate. It requires re-energising every 50 pulses.\n\n" + text "Credits: " text 400 +} +{ + name lcannonitem + text "Lucifer Cannon\n\n" + text "Similar to the pulse rifle, but more powerful. " + text "Additionally, it has a secondary attack where energy can be charged " + text "up to shoot a devastating ball of energy.\n\n" + text "Credits: " text 600 +} +{ + name lgunitem + text "Las Gun\n\n" + text "Slightly more powerful than the basic rifle, but " + text "instead of bullets it fires small packets of energy.\n\n" + text "Credits: " text 250 +} +{ + name psawitem + text "Pain Saw\n\n" + text "Similar to a chainsaw, but instead of a chain " + text "it has an electric arc capable of dealing a great deal of damage at " + text "close range.\n\n" + text "Credits: " text 100 +} +{ + name grenitem + text "Grenade\n\n" + text "A small incendinary device ideal for damaging tightly packed " + text "alien structures. Has a five second timer.\n\n" + text "Credits: " text 200 +} +{ + name larmouritem + text "Light Armour\n\n" + text "Protective armour that helps to defend against light alien melee " + text "attacks.\n\n" + text "Credits: " text 70 +} +{ + name helmetitem + text "Helmet\n\n" + text "In addition to protecting your head, the helmet provides a " + text "scanner indicating the presence of any non-human lifeforms in your " + text "immediate vicinity.\n\n" + text "Credits: " text 90 +} +{ + name battpackitem + text "Battery Pack\n\n" + text "Back-mounted battery pack that permits storage of one and a half " + text "times the normal energy capacity for energy weapons.\n\n" + text "Credits: " text 100 +} +{ + name jetpackitem + text "Jet Pack\n\n" + text "Back-mounted jet pack that enables the user to fly to remote " + text "locations. It is very useful against alien spawns in hard to reach " + text "spots.\n\n" + text "Credits: " text 120 +} +{ + name bsuititem + text "Battle Suit\n\n" + text "A full body armour that is highly effective at repelling alien attacks. " + text "It allows the user to enter hostile situations with a greater degree " + text "of confidence.\n\n" + text "Credits: " text 400 +} +{ + name ammoitem + text "Ammunition\n\n" + text "Ammunition for the currently held weapon.\n\n" + text "Credits: Free" +} +{ + name telenodebuild + text "Telenode\n\n" + text "The most basic human structure. It provides a means for " + text "humans to enter the battle arena. Without any of these the humans " + text "cannot spawn and defeat is imminent.\n\n" + text "Power: " text 10 +} +{ + name mgturretbuild + text "Machine Gun Turret\n\n" + text "Automated base defense that is effective against fast moving targets, but " + text "does not cause much damage on its own and should " + text "always be backed up by physical support.\n\n" + text "Power: " text 8 +} +{ + name armbuild + text "Armoury\n\n" + text "An essential part of the human base, providing a means " + text "to upgrade the basic human. A range of upgrades and weapons are " + text "available from the armoury, each with a price.\n\n" + text "Power: " text 10 +} +{ + name medistatbuild + text "Medistation\n\n" + text "A structure providing an automated healing energy that restores " + text "the health of any human that stands inside it. It may only be used " + text "by one person at a time.\n\n" + text "Power: " text 8 +} +{ + name reactorbuild + text "Reactor\n\n" + text "All structures except the telenode rely on a reactor to operate." + text "The reactor provides power for all the human structures either " + text "directly or via repeaters. There can only be a single reactor.\n\n" +} +{ + name dccbuild + text "Defense Computer\n\n" + text "A structure coordinating the action of base defense so that " + text "defense is distributed evenly among the enemy. " + text "This structure is required for building the Tesla Generator.\n\n" + text "Power: " text 8 +} +{ + name teslabuild + text "Tesla Generator\n\n" + text "A structure equipped with a strong electrical attack that always " + text "hits its target. It is useful against larger aliens " + text "and for consolidating basic defense.\n\n" + text "Power: " text 10 +} +{ + name repeaterbuild + text "Repeater\n\n" + text "A power distributor that transmits power from the reactor " + text "to remote locations, so that bases may be built far from the reactor.\n\n" +} +{ + name eggpodbuild + text "Egg\n\n" + text "The most basic alien structure. It allows aliens to spawn " + text "and protect the Overmind. Without any of these, the Overmind is left " + text "nearly defenseless and defeat is imminent.\n\n" + text "Sentience: " text 10 +} +{ + name overmindbuild + text "Overmind\n\n" + text "A collective consciousness that controls all the " + text "alien structures in its vicinity. It must be protected at all costs, " + text "since its death will render alien structures defenseless." +} +{ + name barricadebuild + text "Barricade\n\n" + text "Used to obstruct corridors and doorways, " + text "hindering humans from threatening the spawns and Overmind.\n\n" + text "Sentience: " text 10 +} +{ + name acid_tubebuild + text "Acid Tube\n\n" + text "Ejects lethal poisonous " + text "acid at an approaching human. These are highly effective when used in " + text "conjunction with a trapper to hold the victim in place.\n\n" + text "Sentience: " text 8 +} +{ + name hivebuild + text "Hive\n\n" + text "Houses millions of tiny " + text "insectoid aliens. When a human approaches this structure, the " + text "insectoids attack.\n\n" + text "Sentience: " text 12 +} +{ + name trapperbuild + text "Trapper\n\n" + text "Fires a blob of adhesive spit at any non-alien in its " + text "line of sight. This hinders their movement, making them an easy target " + text "for other defensive structures or aliens.\n\n" + text "Sentience: " text 10 +} +{ + name boosterbuild + text "Booster\n\n" + text "Provides any alien with a poison ability on all its " + text "attacks. In addition to the default attack damage, the victim loses " + text "health over time unless they heal themselves with anti-toxin." + text "The booster also increases the rate of health regeneration for " + text "any nearby aliens.\n\n" + text "Sentience: " text 12 +} +{ + name hovelbuild + text "Hovel\n\n" + text "An armoured shell used by the builder class to " + text "hide in, if the alien base is under attack. It may be entered or " + text "left at any time.\n\n" + text "Sentience: " text 8 +} +{ + name builderclass + text "Granger\n\n" + text "Responsible for building and maintaining all " + text "the alien structures." +} +{ + name builderupgclass + text "Advanced Granger\n\n" + text "Similar to the base Granger, " + text "except that in addition to being able to build structures it has a " + text "melee attack and the ability to crawl on walls." +} +{ + name level0class + text "Dretch\n\n" + text "Has a lethal bite and the ability to crawl " + text "on walls and ceilings." +} +{ + name level1class + text "Basilisk\n\n" + text "Able to crawl on walls and ceilings. " + text "Its melee attack is most effective when combined with the ability to " + text "grab its foe." +} +{ + name level1upgclass + text "Advanced Basilisk\n\n" + text "In addition to the basic Basilisk abilities, the Advanced " + text "Basilisk sprays a poisonous gas which disorientaits any " + text "nearby humans." +} +{ + name level2class + text "Marauder\n\n" + text "Has a melee attack and the ability to jump off walls." + text "This allows the Marauder to gather great speed in enclosed areas." +} +{ + name level2upgclass + text "Advanced Marauder\n\n" + text "The Advanced Marauder has all the abilities of the base Marauder " + text "including an area effect electric shock attack." +} +{ + name level3class + text "Dragoon\n\n" + text "Possesses a melee attack and the pounce ability, which may " + text "be used as an attack, or a means to reach a remote location inaccessible " + text "from the ground." +} +{ + name level3upgclass + text "Advanced Dragoon\n\n" + text "In addition to the basic Dragoon abilities, the Dragoon Upgrade has " + text "3 barbs which may be used to attack humans from a distance." +} +{ + name level4class + text "Tyrant\n\n" + text "Provides a healing aura in which nearby aliens regenerate health " + text "faster than usual. As well as a melee attack, this class can charge " + text "at enemy humans and structures, inflicting great damage." +} diff --git a/tremulous_ui/infopanes.def.h b/tremulous_ui/infopanes.def.h new file mode 100644 index 00000000..37a259b1 --- /dev/null +++ b/tremulous_ui/infopanes.def.h @@ -0,0 +1,418 @@ +#include "/home/tma/tremulous/src/game/tremulous.h" + +#define CREDITS(X) text "Credits: " text X +#define HUMAN_BCOST(X) text "Power: " text X +#define ALIEN_BCOST(X) text "Sentience: " text X + +//team menu + +{ + name alienteam + text "The Alien Team\n\n" + text "The Aliens' strengths are in movement " + text "and the ability to quickly construct new bases quickly. They possess a " + text "range of abilities including basic melee attacks, movement-" + text "crippling poisons and more." + align left +} + +{ + name humanteam + text "The Human Team\n\n" + text "The humans are the masters of technology. Although their bases take " + text "long to construct, their automated defense ensures they stay built. " + text "A wide range of upgrades and weapons are available to the humans, each " + text "contributing to eradicate the alien threat." + align left +} + +{ + name spectateteam + text "Watch the game without playing." +} + +{ + name autoteam + text "Join the team with the least players." +} + + +//human items + +{ + name rifleitem + text "Rifle\n\n" + text "Basic weapon. Cased projectile weapon, with a slow clip based " + text "reload system.\n\n" + text "Credits: Free" +} + +{ + name ckititem + text "Construction kit\n\n" + text "Used for building all basic structures. This includes " + text "spawns, power and basic defense.\n\n" + text "Credits: Free" +} + +{ + name ackititem + text "Advanced Construction kit\n\n" + text "Used for building advanced structures. This includes " + text "combat computers and advanced defense.\n\n" + text "Credits: Free" +} + +{ + name shotgunitem + text "Shotgun\n\n" + text "Close range weapon that is useful against larger foes. " + text "It has a slow repeat rate, but can be devastatingly " + text "effective.\n\n" + CREDITS( SHOTGUN_PRICE ) +} + +{ + name chaingunitem + text "Chain Gun\n\n" + text "Belt drive, cased projectile weapon. It has a high " + text "repeat rate but a wide firing angle and is therefore relatively " + text "inaccurate.\n\n" + CREDITS( CHAINGUN_PRICE ) +} + +{ + name flameritem + text "Flamethrower\n\n" + text "Sprays fire at its target. It is powered by compressed " + text "gas. The relatively low rate of fire means this weapon is most " + text "effective against static targets.\n\n" + CREDITS( FLAMER_PRICE ) +} + +{ + name mdriveritem + text "Mass Driver\n\n" + text "A portable particle accelerator which causes minor " + text "nuclear reactions at the point of impact. It has a very large " + text "payload, but fires slowly.\n\n" + CREDITS( MDRIVER_PRICE ) +} + +{ + name prifleitem + text "Pulse Rifle\n\n" + text "An energy weapon that fires pulses of concentrated energy at a fast " + text "rate. It requires re-energising every 50 pulses.\n\n" + CREDITS( PRIFLE_PRICE ) +} + +{ + name lcannonitem + text "Lucifer Cannon\n\n" + text "Similar to the pulse rifle, but more powerful. " + text "Additionally, it has a secondary attack where energy can be charged " + text "up to shoot a devastating ball of energy.\n\n" + CREDITS( LCANNON_PRICE ) +} + +{ + name lgunitem + text "Las Gun\n\n" + text "Slightly more powerful than the basic rifle, but " + text "instead of bullets it fires small packets of energy.\n\n" + CREDITS( LASGUN_PRICE ) +} + +{ + name psawitem + text "Pain Saw\n\n" + text "Similar to a chainsaw, but instead of a chain " + text "it has an electric arc capable of dealing a great deal of damage at " + text "close range.\n\n" + CREDITS( PAINSAW_PRICE ) +} + +{ + name grenitem + text "Grenade\n\n" + text "A small incendinary device ideal for damaging tightly packed " + text "alien structures. Has a five second timer.\n\n" + CREDITS( GRENADE_PRICE ) +} + +{ + name larmouritem + text "Light Armour\n\n" + text "Protective armour that helps to defend against light alien melee " + text "attacks.\n\n" + CREDITS( LIGHTARMOUR_PRICE ) +} + +{ + name helmetitem + text "Helmet\n\n" + text "In addition to protecting your head, the helmet provides a " + text "scanner indicating the presence of any non-human lifeforms in your " + text "immediate vicinity.\n\n" + CREDITS( HELMET_PRICE ) +} + +{ + name battpackitem + text "Battery Pack\n\n" + text "Back-mounted battery pack that permits storage of one and a half " + text "times the normal energy capacity for energy weapons.\n\n" + CREDITS( BATTPACK_PRICE ) +} + +{ + name jetpackitem + text "Jet Pack\n\n" + text "Back-mounted jet pack that enables the user to fly to remote " + text "locations. It is very useful against alien spawns in hard to reach " + text "spots.\n\n" + CREDITS( JETPACK_PRICE ) +} + +{ + name bsuititem + text "Battle Suit\n\n" + text "A full body armour that is highly effective at repelling alien attacks. " + text "It allows the user to enter hostile situations with a greater degree " + text "of confidence.\n\n" + CREDITS( BSUIT_PRICE ) +} + +{ + name ammoitem + text "Ammunition\n\n" + text "Ammunition for the currently held weapon.\n\n" + text "Credits: Free" +} + + +//human structures + +{ + name telenodebuild + text "Telenode\n\n" + text "The most basic human structure. It provides a means for " + text "humans to enter the battle arena. Without any of these the humans " + text "cannot spawn and defeat is imminent.\n\n" + HUMAN_BCOST( HSPAWN_BP ) +} + +{ + name mgturretbuild + text "Machine Gun Turret\n\n" + text "Automated base defense that is effective against fast moving targets, but " + text "does not cause much damage on its own and should " + text "always be backed up by physical support.\n\n" + HUMAN_BCOST( MGTURRET_BP ) +} + +{ + name armbuild + text "Armoury\n\n" + text "An essential part of the human base, providing a means " + text "to upgrade the basic human. A range of upgrades and weapons are " + text "available from the armoury, each with a price.\n\n" + HUMAN_BCOST( ARMOURY_BP ) +} + +{ + name medistatbuild + text "Medistation\n\n" + text "A structure providing an automated healing energy that restores " + text "the health of any human that stands inside it. It may only be used " + text "by one person at a time.\n\n" + HUMAN_BCOST( MEDISTAT_BP ) +} + +{ + name reactorbuild + text "Reactor\n\n" + text "All structures except the telenode rely on a reactor to operate." + text "The reactor provides power for all the human structures either " + text "directly or via repeaters. There can only be a single reactor.\n\n" +} + +{ + name dccbuild + text "Defense Computer\n\n" + text "A structure coordinating the action of base defense so that " + text "defense is distributed evenly among the enemy. " + text "This structure is required for building the Tesla Generator.\n\n" + HUMAN_BCOST( DC_BP ) +} + +{ + name teslabuild + text "Tesla Generator\n\n" + text "A structure equipped with a strong electrical attack that always " + text "hits its target. It is useful against larger aliens " + text "and for consolidating basic defense.\n\n" + HUMAN_BCOST( TESLAGEN_BP ) +} + +{ + name repeaterbuild + text "Repeater\n\n" + text "A power distributor that transmits power from the reactor " + text "to remote locations, so that bases may be built far from the reactor.\n\n" +} + +//alien structures + +{ + name eggpodbuild + text "Egg\n\n" + text "The most basic alien structure. It allows aliens to spawn " + text "and protect the Overmind. Without any of these, the Overmind is left " + text "nearly defenseless and defeat is imminent.\n\n" + ALIEN_BCOST( ASPAWN_BP ) +} + +{ + name overmindbuild + text "Overmind\n\n" + text "A collective consciousness that controls all the " + text "alien structures in its vicinity. It must be protected at all costs, " + text "since its death will render alien structures defenseless." +} + +{ + name barricadebuild + text "Barricade\n\n" + text "Used to obstruct corridors and doorways, " + text "hindering humans from threatening the spawns and Overmind.\n\n" + ALIEN_BCOST( BARRICADE_BP ) +} + +{ + name acid_tubebuild + text "Acid Tube\n\n" + text "Ejects lethal poisonous " + text "acid at an approaching human. These are highly effective when used in " + text "conjunction with a trapper to hold the victim in place.\n\n" + ALIEN_BCOST( ACIDTUBE_BP ) +} + +{ + name hivebuild + text "Hive\n\n" + text "Houses millions of tiny " + text "insectoid aliens. When a human approaches this structure, the " + text "insectoids attack.\n\n" + ALIEN_BCOST( HIVE_BP ) +} + +{ + name trapperbuild + text "Trapper\n\n" + text "Fires a blob of adhesive spit at any non-alien in its " + text "line of sight. This hinders their movement, making them an easy target " + text "for other defensive structures or aliens.\n\n" + ALIEN_BCOST( TRAPPER_BP ) +} + +{ + name boosterbuild + text "Booster\n\n" + text "Provides any alien with a poison ability on all its " + text "attacks. In addition to the default attack damage, the victim loses " + text "health over time unless they heal themselves with anti-toxin." + text "The booster also increases the rate of health regeneration for " + text "any nearby aliens.\n\n" + ALIEN_BCOST( BOOSTER_BP ) +} + +{ + name hovelbuild + text "Hovel\n\n" + text "An armoured shell used by the builder class to " + text "hide in, if the alien base is under attack. It may be entered or " + text "left at any time.\n\n" + ALIEN_BCOST( HOVEL_BP ) +} + +//alien classes + +{ + name builderclass + text "Granger\n\n" + text "Responsible for building and maintaining all " + text "the alien structures." +} + +{ + name builderupgclass + text "Advanced Granger\n\n" + text "Similar to the base Granger, " + text "except that in addition to being able to build structures it has a " + text "melee attack and the ability to crawl on walls." +} + +{ + name level0class + text "Dretch\n\n" + text "Has a lethal bite and the ability to crawl " + text "on walls and ceilings." +} + +{ + name level1class + text "Basilisk\n\n" + text "Able to crawl on walls and ceilings. " + text "Its melee attack is most effective when combined with the ability to " + text "grab its foe." +} + +{ + name level1upgclass + text "Advanced Basilisk\n\n" + text "In addition to the basic Basilisk abilities, the Advanced " + text "Basilisk sprays a poisonous gas which disorientaits any " + text "nearby humans." +} + +{ + name level2class + text "Marauder\n\n" + text "Has a melee attack and the ability to jump off walls." + text "This allows the Marauder to gather great speed in enclosed areas." +} + +{ + name level2upgclass + text "Advanced Marauder\n\n" + text "The Advanced Marauder has all the abilities of the base Marauder " + text "including an area effect electric shock attack." +} + +{ + name level3class + text "Dragoon\n\n" + text "Possesses a melee attack and the pounce ability, which may " + text "be used as an attack, or a means to reach a remote location inaccessible " + text "from the ground." +} + +{ + name level3upgclass + text "Advanced Dragoon\n\n" + text "In addition to the basic Dragoon abilities, the Dragoon Upgrade has " + text "3 barbs which may be used to attack humans from a distance." +} + +{ + name level4class + text "Tyrant\n\n" + text "Provides a healing aura in which nearby aliens regenerate health " + text "faster than usual. As well as a melee attack, this class can charge " + text "at enemy humans and structures, inflicting great damage." +} + +// graphic <top|bottom|left|right> <center|some numerical offset> <shadername> <width> <height> +// graphic left center "gfx/blah" 64 128 diff --git a/tremulous_ui/ingame.menu b/tremulous_ui/ingame.menu new file mode 100644 index 00000000..ae4833fd --- /dev/null +++ b/tremulous_ui/ingame.menu @@ -0,0 +1,135 @@ +#include "ui/menudef.h"
+{
+ assetGlobalDef
+ {
+ font "fonts/font" 26 // font
+ smallFont "fonts/smallfont" 20 // font
+ bigFont "fonts/bigfont" 34 // font
+ cursor "ui/assets/3_cursor3" // cursor
+ gradientBar "ui/assets/gradientbar2.tga" // gradient bar
+ itemFocusSound "sound/misc/menu2.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
+ }
+
+
+ \\ INGAME MENU \\
+
+ menuDef
+ {
+ name "ingame"
+ style WINDOW_STYLE_FILLED
+ visible 0
+ fullScreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect 0 0 640 48
+ focusColor 1 .75 0 1
+ disableColor .5 .5 .5 1
+ backColor 0 0 0 1
+
+ onEsc
+ {
+ close ingame;
+ }
+
+ itemDef
+ {
+ name splashmodel
+ rect 0 -10 640 66
+ type ITEM_TYPE_MODEL
+ style WINDOW_STYLE_FILLED
+ asset_model "models/splash/splash_screen.md3"
+ model_fovx 32.0
+ model_fovy 3.8
+ model_angle 180
+ visible 1
+ decoration
+ backcolor 0 0 0 1
+ }
+
+ itemdef
+ {
+ name about
+ text "About"
+ rect 35 6 65 40
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textalign ITEM_ALIGN_CENTER
+ textalignx 32
+ textaligny 28
+ textscale .4
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open ingame_about
+ }
+ }
+
+ itemDef
+ {
+ name options
+ text "Options"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 100 6 70 40
+ textalign ITEM_ALIGN_CENTER
+ textalignx 35
+ textaligny 28
+ textscale .4
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open ingame_options
+ }
+ }
+
+ itemDef
+ {
+ name vote
+ text "Vote"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ ownerdrawflag UI_SHOW_NOTSPECTATING
+ rect 170 6 50 40
+ textalign ITEM_ALIGN_CENTER
+ textalignx 25
+ textaligny 28
+ textscale .4
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open ingame_vote
+ }
+ }
+
+ itemDef
+ {
+ name leave
+ text "Exit"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 220 6 50 40
+ textalign ITEM_ALIGN_CENTER
+ textalignx 25
+ textaligny 28
+ textscale .4
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open ingame_leave
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/ingame.txt b/tremulous_ui/ingame.txt new file mode 100644 index 00000000..fd2a77f9 --- /dev/null +++ b/tremulous_ui/ingame.txt @@ -0,0 +1,11 @@ +// menu defs
+//
+{
+ loadMenu { "ui/ingame.menu" }
+ loadMenu { "ui/ingame_about.menu" }
+ loadMenu { "ui/ingame_options.menu" }
+ loadMenu { "ui/ingame_vote.menu" }
+ loadMenu { "ui/ingame_callvote.menu" }
+ loadMenu { "ui/ingame_callteamvote.menu" }
+ loadMenu { "ui/ingame_leave.menu" }
+}
diff --git a/tremulous_ui/ingame_about.menu b/tremulous_ui/ingame_about.menu new file mode 100644 index 00000000..b90cf480 --- /dev/null +++ b/tremulous_ui/ingame_about.menu @@ -0,0 +1,173 @@ +#include "ui/menudef.h"
+
+{
+ \\ INGAME ABOUT BOX \\
+
+ menuDef
+ {
+ name "ingame_about"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect 10 56 256 160
+ focusColor 1 .75 0 1
+
+ itemDef
+ {
+ name window
+ rect 10 5 256 150
+ style 1
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_KCGRADIENT
+ borderSize 2.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name about
+ rect 0 25 256 20
+ name gametypefield
+ type 4
+ style 0
+ text "Map Name:"
+ cvar mapname
+ maxPaintChars 12
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name about
+ rect 0 40 256 20
+ type 4
+ style 0
+ text "Time Limit:"
+ maxPaintChars 12
+ cvar timelimit
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name about
+ rect 0 55 256 20
+ type 4
+ style 0
+ text "Protocol:"
+ cvar protocol
+ maxPaintChars 12
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name about
+ rect 0 70 256 20
+ type 4
+ style 0
+ text "Max Clients:"
+ cvar sv_maxclients
+ maxPaintChars 12
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name about
+ rect 0 85 256 20
+ type 4
+ style 0
+ text "Host Name:"
+ cvar sv_hostname
+ maxPaintChars 12
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name about
+ rect 0 100 256 20
+ type 11
+ style 0
+ text "Password Required:"
+ cvar g_needpass
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name about
+ rect 0 115 256 20
+ type 11
+ style 0
+ text "DM Flags:"
+ cvar g_dmflags
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name about
+ rect 0 130 256 20
+ type 4
+ style 0
+ text "Version:"
+ cvar version
+ maxPaintChars 32
+ textalign ITEM_ALIGN_LEFT
+ textalignx 128
+ textaligny 12
+ textalign 1
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+ }
+}
diff --git a/tremulous_ui/ingame_callteamvote.menu b/tremulous_ui/ingame_callteamvote.menu new file mode 100644 index 00000000..1b944e00 --- /dev/null +++ b/tremulous_ui/ingame_callteamvote.menu @@ -0,0 +1,175 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "ingame_callteamvote"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect 37 56 250 157
+ focusColor 1 .75 0 1
+ onopen
+ {
+ hide grpCallVote;
+ show teamKick;
+
+ setitemcolor teamKickBtn forecolor 0.2 0.2 0.2 1.0;
+ }
+
+ itemDef
+ {
+ name window
+ rect 10 5 230 147
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_KCGRADIENT
+ borderSize 2.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name teamKickBtn
+ text "Team Kick"
+ textscale .25
+ group grpbutton
+ rect 20 40 45 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 22
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpCallVote;
+ show teamKick;
+
+ setitemcolor teamKickBtn forecolor 0.2 0.2 0.2 1.0;
+ }
+ }
+
+
+ // TEAM KICK PLAYER //
+
+ itemDef
+ {
+ name teamKick
+ group grpCallVote
+ text "Team Kick Player:"
+ textscale .25
+ rect 70 15 110 20
+ textalign 0
+ textalignx 0
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ }
+
+ itemDef
+ {
+ name teamKick
+ group grpCallVote
+ rect 70 35 150 85
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_LISTBOX
+ elementwidth 120
+ elementheight 15
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TEAM_LIST
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 0
+ }
+
+ itemDef
+ {
+ name teamKick
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpCallVote
+ rect 173 125 50 20
+ textalign 1
+ textalignx 25
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteTeamKick;
+ uiScript closeingame
+ }
+ }
+
+
+ // KICK PLAYER //
+
+ itemDef
+ {
+ name kick
+ group grpCallVote
+ text "Kick Player:"
+ textscale .25
+ rect 70 15 110 20
+ textalign 0
+ textalignx 0
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ }
+
+ itemDef
+ {
+ name kick
+ group grpCallVote
+ rect 70 35 150 85
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_LISTBOX
+ elementwidth 120
+ elementheight 15
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_PLAYER_LIST
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 0
+ }
+
+ itemDef
+ {
+ name kick
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpCallVote
+ rect 173 125 50 20
+ textalign 1
+ textalignx 25
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteKick;
+ uiScript closeingame
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/ingame_callvote.menu b/tremulous_ui/ingame_callvote.menu new file mode 100644 index 00000000..f1cf2c7a --- /dev/null +++ b/tremulous_ui/ingame_callvote.menu @@ -0,0 +1,276 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "ingame_callvote"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect 37 56 250 157
+ focusColor 1 .75 0 1
+ onopen
+ {
+ uiScript loadArenas;
+ hide grpCallVote;
+ show misc;
+
+ setitemcolor miscBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor kickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor mapBtn forecolor 1.0 1.0 1.0 1.0;
+ }
+
+ itemDef
+ {
+ name window
+ rect 10 5 230 147
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_KCGRADIENT
+ borderSize 2.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name miscBtn
+ text "Misc"
+ textscale .25
+ group grpbutton
+ rect 20 40 45 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 22
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpCallVote;
+ show misc;
+
+ setitemcolor miscBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor kickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor mapBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name kickBtn
+ text "Kick"
+ textscale .25
+ group grpbutton
+ rect 20 65 45 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 22
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpCallVote;
+ show kick;
+
+ setitemcolor miscBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor kickBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor mapBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name mapBtn
+ text "Map"
+ textscale .25
+ group grpbutton
+ rect 20 90 45 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 22
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpCallVote;
+ show map;
+
+ setitemcolor miscBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor kickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor mapBtn forecolor 0.2 0.2 0.2 1.0
+ }
+ }
+
+
+ // MISC //
+
+ itemDef
+ {
+ name misc
+ text "Restart Map"
+ group grpCallVote
+ textscale .25
+ rect 90 45 96 20
+ type 1
+ textalign 1
+ textalignx 50
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "cmd callvote map_restart";
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group grpCallVote
+ text "Next Map"
+ textscale .25
+ rect 90 75 96 20
+ type 1
+ textalign 1
+ textalignx 50
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "cmd callvote nextmap";
+ uiScript closeingame
+ }
+ }
+
+
+ // KICK PLAYER //
+
+ itemDef
+ {
+ name kick
+ group grpCallVote
+ text "Kick Player:"
+ textscale .25
+ rect 70 15 110 20
+ textalign 0
+ textalignx 0
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ }
+
+ itemDef
+ {
+ name kick
+ group grpCallVote
+ rect 70 35 150 85
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_LISTBOX
+ elementwidth 120
+ elementheight 15
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_PLAYER_LIST
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 0
+ }
+
+ itemDef
+ {
+ name kick
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpCallVote
+ rect 173 125 50 20
+ textalign 1
+ textalignx 25
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteKick;
+ uiScript closeingame
+ }
+ }
+
+
+ // NEW MAP //
+
+ itemDef
+ {
+ name map
+ group grpCallVote
+ text "New Map:"
+ ownerdraw UI_ALLMAPS_SELECTION
+ textscale .25
+ rect 70 15 110 20
+ textalign 0
+ textalignx 0
+ textaligny 16
+ forecolor 1 1 1 1
+ decoration
+ visible 0
+ }
+
+ itemDef
+ {
+ name map
+ group grpCallVote
+ rect 70 35 150 85
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 15
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_ALLMAPS
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 0
+ }
+
+ itemDef
+ {
+ name map
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpCallVote
+ rect 173 125 50 20
+ textalign 1
+ textalignx 25
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteMap;
+ uiScript closeingame
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/ingame_leave.menu b/tremulous_ui/ingame_leave.menu new file mode 100644 index 00000000..3e6071c3 --- /dev/null +++ b/tremulous_ui/ingame_leave.menu @@ -0,0 +1,331 @@ +#include "ui/menudef.h"
+
+{
+ \\ INGAME_LEAVE MENU \\
+
+ menuDef
+ {
+ name "ingame_leave"
+ visible 1
+ fullScreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect 160 56 128 125
+ focusColor 1 .75 0 1
+ onOpen
+ {
+ show grpMenu;
+ hide grpConfirm
+ }
+
+ itemDef
+ {
+ name leave
+ style WINDOW_STYLE_FILLED
+ rect 5 5 107 90
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_KCGRADIENT
+ borderSize 2.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name leave
+ text "Main Menu"
+ group grpMenu
+ style WINDOW_STYLE_EMPTY
+ rect 0 20 128 20
+ type 1
+ textalign 1
+ textalignx 64
+ textaligny 18
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpMenu;
+ show leaveConfirm
+ }
+ }
+
+ itemDef
+ {
+ name leave
+ group grpMenu
+ text "Restart"
+ style WINDOW_STYLE_EMPTY
+ type 1
+ rect 0 40 128 20
+ textalign 1
+ textalignx 65
+ textaligny 18
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpMenu;
+ show restartConfirm
+ }
+ }
+
+ itemDef
+ {
+ name leave
+ group grpMenu
+ type 1
+ text "Quit"
+ style WINDOW_STYLE_EMPTY
+ rect 0 60 128 20
+ textalign 1
+ textalignx 64
+ textaligny 18
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpMenu;
+ show quitConfirm
+ }
+ }
+
+
+ // CONFIRMS //
+
+
+ itemDef
+ {
+ name leaveConfirm
+ text "Exit to"
+ group grpConfirm
+ style WINDOW_STYLE_EMPTY
+ rect 0 23 128 20
+ textalign 1
+ textalignx 64
+ textaligny 18
+ textscale .25
+ decoration
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name leaveConfirm
+ text "Main Menu?"
+ group grpConfirm
+ style WINDOW_STYLE_EMPTY
+ rect 0 40 128 20
+ textalign 1
+ textalignx 64
+ textaligny 18
+ textscale .25
+ decoration
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name leaveConfirm
+ text "Yes"
+ group grpConfirm
+ type 1
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 18 70 40 20
+ textalign 1
+ textalignx 20
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript leave
+ }
+ }
+
+ itemDef
+ {
+ name leaveConfirm
+ text "No"
+ group grpConfirm
+ type 1
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 70 70 40 20
+ textalign 1
+ textalignx 20
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ hide grpConfirm;
+ show grpMenu
+ }
+ }
+
+ itemDef
+ {
+ name restartConfirm
+ text "Want to"
+ group grpConfirm
+ style WINDOW_STYLE_EMPTY
+ rect 0 23 128 20
+ textalign 1
+ textalignx 64
+ textaligny 18
+ textscale .25
+ decoration
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name restartConfirm
+ text "Restart Map?"
+ group grpConfirm
+ style WINDOW_STYLE_EMPTY
+ rect 0 40 128 20
+ textalign 1
+ textalignx 64
+ textaligny 18
+ textscale .25
+ decoration
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name restartConfirm
+ text "Yes"
+ group grpConfirm
+ type 1
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 18 70 40 20
+ textalign 1
+ textalignx 20
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "map_restart";
+ close ingame_leave;
+ close ingame
+ }
+ }
+
+ itemDef
+ {
+ name restartConfirm
+ text "No"
+ group grpConfirm
+ type 1
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 70 70 40 20
+ textalign 1
+ textalignx 20
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ hide grpConfirm;
+ show grpMenu
+ }
+ }
+
+ itemDef
+ {
+ name quitConfirm
+ text "Want to"
+ group grpConfirm
+ style WINDOW_STYLE_EMPTY
+ rect 0 23 128 20
+ textalign 1
+ textalignx 64
+ textaligny 18
+ textscale .25
+ forecolor 1 1 1 1
+ decoration
+ visible 1
+ }
+
+ itemDef
+ {
+ name quitConfirm
+ text "Quit Game?"
+ group grpConfirm
+ style WINDOW_STYLE_EMPTY
+ rect 0 40 128 20
+ textalign 1
+ textalignx 64
+ textaligny 18
+ textscale .25
+ forecolor 1 1 1 1
+ decoration
+ visible 1
+ }
+
+ itemDef
+ {
+ name quitConfirm
+ text "Yes"
+ group grpConfirm
+ type 1
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 18 70 40 20
+ textalign 1
+ textalignx 20
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript quit
+ }
+ }
+
+ itemDef
+ {
+ name quitConfirm
+ text "No"
+ group grpConfirm
+ type 1
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 70 70 40 20
+ textalign 1
+ textalignx 20
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ hide grpConfirm;
+ show grpMenu
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/ingame_options.menu b/tremulous_ui/ingame_options.menu new file mode 100644 index 00000000..210818c1 --- /dev/null +++ b/tremulous_ui/ingame_options.menu @@ -0,0 +1,1991 @@ +#include "ui/menudef.h"
+
+{
+ \\ INGAME OPTIONS BOX \\
+
+ menuDef
+ {
+ name "ingame_options"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect 10 56 292 280
+ focusColor 1 .75 0 1
+ onopen
+ {
+ hide optionsGrp;
+ show game;
+
+ setitemcolor gameBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0
+ }
+
+ itemDef
+ {
+ name window
+ rect 10 5 292 270
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_KCGRADIENT
+ borderSize 2.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ //Section menus
+ itemDef
+ {
+ name GameBtn
+ text "Game"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect 90 20 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 34
+ textaligny 18
+ textscale .35
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show game;
+
+ setitemcolor gameBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name controlsBtn
+ text "Controls"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect 160 20 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 34
+ textaligny 18
+ textscale .35
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show look;
+
+ setitemcolor gameBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor controlsBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor systemBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name systemBtn
+ text "System"
+ group menuGrp
+ style WINDOW_STYLE_EMPTY
+ rect 230 20 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 34
+ textaligny 18
+ textscale .35
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show ghardware;
+
+ setitemcolor gameBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor controlsBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor systemBtn forecolor 0.2 0.2 0.2 1.0
+ }
+ }
+
+//////// GAME
+
+ itemDef
+ {
+ name game
+ group optionsGrp
+ type ITEM_TYPE_EDITFIELD
+ style 0
+ text "Name:"
+ cvar "name"
+ maxchars 26
+ rect 90 85 192 15
+ textalign ITEM_ALIGN_LEFT
+ textalignx 64
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ }
+
+ itemDef
+ {
+ name game
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Auto Download:"
+ cvar "cl_allowDownload"
+ rect 90 120 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name game
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Taunts Off:"
+ cvar "cg_noTaunt"
+ rect 90 135 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name game
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Team Chats Only:"
+ cvar "cg_teamChatsOnly"
+ rect 90 150 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name game
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Auto Wallwalk Pitching:"
+ cvar "cg_wwFollow"
+ rect 90 165 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name game
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Wallwalking Speed:"
+ cvarfloat "cg_wwSmoothTime" 300 0 1000
+ cvarFloatList { "Medium" 300 "Fast" 150 "Instant" 0 "Slow" 600 }
+ rect 90 180 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name game
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Wallwalk Control Toggles:"
+ cvar "cg_wwToggle"
+ rect 90 195 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name game
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Disable Warning Dialogs:"
+ cvar "cg_disableWarningDialogs"
+ rect 90 210 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+
+//////// CONTROLS
+
+ //Controls menu
+ itemDef
+ {
+ name controls
+ text "Look"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 20 60 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 64
+ textaligny 16
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show look
+ }
+ }
+
+//////// LOOK
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Lookup:"
+ cvar "+lookup"
+ rect 96 85 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Look Down:"
+ cvar "+lookdown"
+ rect 96 100 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Mouse Look:"
+ cvar "+mlook"
+ rect 96 115 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Centerview:"
+ cvar "centerview"
+ rect 96 130 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "ZoomView:"
+ cvar "+zoom"
+ rect 96 145 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Free Look:"
+ cvar "cl_freelook"
+ rect 96 160 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Mouse Sensitivity:"
+ cvarfloat "sensitivity" 5 1 30
+ rect 96 175 192 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 15
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Invert Mouse:"
+ cvar "ui_mousePitch"
+ rect 96 195 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript update ui_mousePitch
+ }
+ }
+
+ itemDef
+ {
+ name look
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Smooth Mouse:"
+ cvar "m_filter"
+ rect 96 210 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// MOVE
+
+ itemDef
+ {
+ name controls
+ text "Move"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 20 80 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 64
+ textaligny 16
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show move
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Always Run:"
+ cvar "cl_run"
+ rect 96 65 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Run / Walk:"
+ cvar "+speed"
+ rect 96 80 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Sprint:"
+ cvar "boost"
+ rect 96 95 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Forward:"
+ cvar "+forward"
+ rect 96 110 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Backpedal:"
+ cvar "+back"
+ rect 96 125 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Move Left:"
+ cvar "+moveleft"
+ rect 96 140 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Move Right:"
+ cvar "+moveright"
+ rect 96 155 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Jump:"
+ cvar "+moveup"
+ rect 96 170 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Crouch:"
+ cvar "+movedown"
+ rect 96 185 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Turn Left:"
+ cvar "+left"
+ rect 96 200 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Turn Right:"
+ cvar "+right"
+ rect 96 215 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name move
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Strafe:"
+ cvar "+strafe"
+ rect 96 230 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+
+
+//////// UPGRADES
+
+ itemDef
+ {
+ name controls
+ text "Upgrades"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 20 100 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 64
+ textaligny 16
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show upgrades
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Primary Attack:"
+ cvar "+attack"
+ rect 96 90 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Secondary Attack:"
+ cvar "+button5"
+ rect 96 105 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Previous Upgrade:"
+ cvar "weapprev"
+ rect 96 120 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Next Upgrade:"
+ cvar "weapnext"
+ rect 96 135 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Activate Upgrade:"
+ cvar "+button2"
+ rect 96 150 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Reload:"
+ cvar "reload"
+ rect 96 165 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Buy Ammo:"
+ cvar "buy ammo"
+ rect 96 180 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name upgrades
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Use Medkit:"
+ cvar "itemact medkit"
+ rect 96 195 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// MISC
+
+ itemDef
+ {
+ name controls
+ text "Misc"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 20 120 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 64
+ textaligny 16
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show controls;
+ show misc
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Show Scores:"
+ cvar "+scores"
+ rect 96 80 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Scroll Scores Up:"
+ cvar "scoresUp"
+ rect 96 95 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Scroll Scores Down:"
+ cvar "scoresDown"
+ rect 96 110 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Use Structure/Evolve:"
+ cvar "+button7"
+ rect 96 125 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Deconstruct Structure:"
+ cvar "deconstruct"
+ rect 96 140 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Gesture:"
+ cvar "+button3"
+ rect 96 155 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Chat:"
+ cvar "messagemode"
+ rect 96 170 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Team Chat:"
+ cvar "messagemode2"
+ rect 96 185 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Target Chat:"
+ cvar "messagemode3"
+ rect 96 200 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group optionsGrp
+ type ITEM_TYPE_BIND
+ text "Attack Chat:"
+ cvar "messagemode4"
+ rect 96 215 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ maxPaintChars 20
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// SYSTEM
+
+ //System menu
+ itemDef
+ {
+ name system
+ text "GFX Hardware"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 20 60 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 64
+ textaligny 16
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show ghardware
+ }
+ }
+
+//////// GFX HARDWARE
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Quality:"
+ cvar "ui_glCustom"
+ cvarFloatList { "High Quality" 0 "Normal" 1 "Fast" 2 "Fastest" 3 "Custom" 4 }
+ rect 96 55 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript update "ui_glCustom"
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_EDITFIELD
+ text "GL Driver:"
+ cvar "r_gldriver"
+ //cvarFloatList { }
+ rect 96 70 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "GL Extensions:"
+ cvar "r_allowExtensions"
+ rect 96 85 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCuston
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Video Mode:"
+ cvar "r_mode"
+ cvarFloatList { "320x240" 0 "400x300" 1 "512x384" 2 "640x480" 3
+ "800x600" 4 "960x720" 5 "1024x768" 6 "1152x864" 7
+ "1280x1024" 8 "1600x1200" 9 "2048x1536" 10 "856x480 wide screen" 11 }
+ rect 96 100 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Color Depth:"
+ cvar "r_colorbits"
+ cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 }
+ rect 96 115 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom;
+ uiScript update "r_colorbits"
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Fullscreen:"
+ cvar "r_fullscreen"
+ rect 96 130 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Lighting:"
+ cvar "r_vertexlight"
+ cvarFloatList { "Light Map (high)" 0 "Vertex (low)" 1 }
+ rect 96 145 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Geometric Detail:"
+ cvar "r_lodbias"
+ cvarFloatList { "High" 0 "Medium" 1 "Low" 2 }
+ rect 96 160 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom;
+ uiScript update "r_lodbias"
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Texture Detail:"
+ cvar "r_picmip"
+ cvarFloatList { "Low" 2 "Normal" 1 "High" 0 }
+ rect 96 175 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Texture Quality:"
+ cvar "r_texturebits"
+ cvarFloatList { "Default" 0 "16 bit" 16 "32 bit" 32 }
+ rect 96 190 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Texture Filter:"
+ cvar "r_texturemode"
+ cvarStrList { "Bilinear", "GL_LINEAR_MIPMAP_NEAREST", "Trilinear", "GL_LINEAR_MIPMAP_LINEAR" }
+ rect 96 205 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Compress Textures:"
+ cvar "r_ext_compressed_textures "
+ rect 96 220 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript glCustom
+ }
+ }
+
+ itemDef
+ {
+ name ghardware
+ group optionsGrp
+ type ITEM_TYPE_BUTTON
+ text "APPLY"
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 144 240 75 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 37
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "vid_restart"
+ }
+ }
+
+//////// GFX SOFTWARE
+
+ itemDef
+ {
+ name system
+ text "GFX Software"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 20 80 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 64
+ textaligny 16
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show gsoftware
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Brightness:"
+ cvarfloat "r_gamma" 1 .5 2
+ rect 96 60 192 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 80
+ textaligny 17
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Screen Size:"
+ cvarfloat "cg_viewsize" 100 30 100
+ //cvarFloatList { }
+ rect 96 80 192 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 80
+ textaligny 17
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Simple Items:"
+ cvar "cg_simpleItems"
+ rect 96 100 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Marks On Walls:"
+ cvar "cg_marks"
+ rect 96 115 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Ejecting Brass:"
+ cvar "cg_brassTime"
+ cvarFloatList { "High" 2500 "Med" 1250 "Off" 0 }
+ rect 96 130 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Dynamic Lights:"
+ cvar "r_dynamiclight"
+ rect 96 145 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Draw Gun:"
+ cvar "cg_drawGun"
+ rect 96 160 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Low Quality Sky:"
+ cvar "r_fastsky"
+ rect 96 175 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Sync Every Frame:"
+ cvar "weapon 5"
+ rect 96 190 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Show Time:"
+ cvar "cg_drawTimer"
+ rect 96 205 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "In Game Videos:"
+ cvar "r_inGameVideo"
+ rect 96 220 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Depth Sort Particles:"
+ cvar "cg_depthSortParticles"
+ rect 96 235 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name gsoftware
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Light Flares:"
+ cvar "cg_lightFlare"
+ cvarFloatList { "Off" 0 "No Fade" 1 "Timed Fade" 2 "Real Fade" 3 }
+ rect 96 250 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+//////// GL INFO
+
+ itemDef
+ {
+ name system
+ text "GL Info"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 20 100 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 64
+ textaligny 16
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show glinfo
+ }
+ }
+
+ itemDef
+ {
+ name glinfo
+ group optionsGrp
+ rect 104 35 230 230
+ ownerdraw UI_GLINFO
+ textalign 1
+ textscale .15
+ textalignx 0
+ textaligny 17
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ }
+
+//////// NET & SOUND
+
+ itemDef
+ {
+ name system
+ text "Net & Sound"
+ group optionsGrp
+ style WINDOW_STYLE_EMPTY
+ rect 20 120 64 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 64
+ textaligny 16
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide optionsGrp;
+ show system;
+ show netsound
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ style 1
+ text "Sound"
+ rect 96 70 192 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 80
+ textaligny 17
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Effects Volume:"
+ cvarfloat "s_volume" 0.7 0 1
+ rect 96 90 192 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ textaligny 17
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_SLIDER
+ text "Music Volume:"
+ cvarfloat "s_musicvolume" 0.25 0 1
+ rect 96 110 192 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 90
+ textaligny 17
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Sound Quality:"
+ cvar "s_khz"
+ cvarFloatList { "22 khz (high)" 22 "11 khz (low)" 11 }
+ rect 96 130 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_YESNO
+ text "Doppler Sound:"
+ cvar "s_doppler"
+ rect 96 145 192 15
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 12
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ style 1
+ text "Network"
+ rect 96 190 192 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 80
+ textaligny 17
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+
+ itemDef
+ {
+ name netsound
+ group optionsGrp
+ type ITEM_TYPE_MULTI
+ text "Net Data Rate:"
+ cvar "rate"
+ cvarFloatList { "<=28.8k" 2500 "33.6k" 3000 "56k" 4000 "ISDN" 5000 "LAN/CABLE/xDSl" 25000 }
+ rect 96 210 192 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 100
+ textaligny 17
+ textscale .25
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/ingame_vote.menu b/tremulous_ui/ingame_vote.menu new file mode 100644 index 00000000..7db61f5f --- /dev/null +++ b/tremulous_ui/ingame_vote.menu @@ -0,0 +1,515 @@ +#include "ui/menudef.h"
+
+{
+ \\ VOTE MENU \\
+
+ menuDef
+ {
+ name "ingame_vote"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick // this closes the window if it gets a click out of the rectangle
+ rect 27 56 260 107
+ focusColor 1 .75 0 1
+
+ itemDef
+ {
+ name window
+ ownerdrawflag UI_SHOW_CANVOTE
+ ownerdrawflag UI_SHOW_CANTEAMVOTE
+ rect 10 5 240 47
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_KCGRADIENT
+ borderSize 2.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name window
+ ownerdrawflag UI_SHOW_VOTEACTIVE
+ ownerdrawflag UI_SHOW_CANTEAMVOTE
+ rect 10 5 240 72
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_KCGRADIENT
+ borderSize 2.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name window
+ ownerdrawflag UI_SHOW_TEAMVOTEACTIVE
+ rect 10 5 240 97
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_KCGRADIENT
+ borderSize 2.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name callvote
+ text "Call Vote"
+ type 1
+ ownerdrawflag UI_SHOW_CANVOTE
+ textscale .35
+ rect 30 20 100 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 50
+ textaligny 17
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close ingame_vote;
+ open ingame_callvote
+ }
+ }
+
+ itemDef
+ {
+ name callteamvote
+ text "Call Team Vote"
+ type 1
+ ownerdrawflag UI_SHOW_CANTEAMVOTE
+ textscale .35
+ rect 130 20 100 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 50
+ textaligny 17
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close ingame_vote;
+ open ingame_callteamvote
+ }
+ }
+
+ itemDef
+ {
+ name yes
+ text "Vote Yes"
+ type 1
+ ownerdrawflag UI_SHOW_VOTEACTIVE
+ textscale .35
+ rect 30 45 100 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 50
+ textaligny 17
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "vote yes";
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name no
+ text "Vote No"
+ type 1
+ ownerdrawflag UI_SHOW_VOTEACTIVE
+ textscale .35
+ rect 130 45 100 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 50
+ textaligny 17
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ exec "vote no";
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name teamyes
+ text "Team Vote Yes"
+ type 1
+ ownerdrawflag UI_SHOW_TEAMVOTEACTIVE
+ textscale .35
+ rect 30 70 100 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 50
+ textaligny 17
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "teamvote yes";
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name teamno
+ text "Team Vote No"
+ type 1
+ ownerdrawflag UI_SHOW_TEAMVOTEACTIVE
+ textscale .35
+ rect 130 70 100 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 50
+ textaligny 17
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ exec "teamvote no";
+ uiScript closeingame
+ }
+ }
+
+/* itemDef
+ {
+ name miscBtn
+ text "Misc"
+ textscale .25
+ group grpbutton
+ rect 20 75 45 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 22
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpCallVote;
+ show misc;
+
+ setitemcolor miscBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor kickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor teamKickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor mapBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name kickBtn
+ text "Kick"
+ textscale .25
+ group grpbutton
+ rect 20 100 45 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 22
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpCallVote;
+ show kick;
+
+ setitemcolor miscBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor kickBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor teamKickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor mapBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name teamKickBtn
+ text "Team Kick"
+ textscale .25
+ group grpbutton
+ rect 20 125 45 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 22
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpCallVote;
+ show teamKick;
+
+ setitemcolor miscBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor kickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor teamKickBtn forecolor 0.2 0.2 0.2 1.0;
+ setitemcolor mapBtn forecolor 1.0 1.0 1.0 1.0
+ }
+ }
+
+ itemDef
+ {
+ name mapBtn
+ text "Map"
+ textscale .25
+ group grpbutton
+ rect 20 150 45 20
+ type ITEM_TYPE_BUTTON
+ textalign ITEM_ALIGN_CENTER
+ textalignx 22
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ hide grpCallVote;
+ show map;
+
+ setitemcolor miscBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor kickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor teamKickBtn forecolor 1.0 1.0 1.0 1.0;
+ setitemcolor mapBtn forecolor 0.2 0.2 0.2 1.0
+ }
+ }
+
+
+ // MISC //
+
+ itemDef
+ {
+ name misc
+ text "Restart Map"
+ group grpCallVote
+ textscale .25
+ rect 100 105 96 20
+ type 1
+ textalign 1
+ textalignx 50
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "cmd callvote map_restart";
+ uiScript closeingame
+ }
+ }
+
+ itemDef
+ {
+ name misc
+ group grpCallVote
+ text "Next Map"
+ textscale .25
+ rect 100 135 96 20
+ type 1
+ textalign 1
+ textalignx 50
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ exec "cmd callvote nextmap";
+ uiScript closeingame
+ }
+ }
+
+
+ // KICK PLAYER //
+
+ itemDef
+ {
+ name kick
+ group grpCallVote
+ text "Kick Player:"
+ textscale .25
+ rect 80 75 110 20
+ textalign 0
+ textalignx 0
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ }
+
+ itemDef
+ {
+ name kick
+ group grpCallVote
+ rect 80 95 150 85
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_LISTBOX
+ elementwidth 120
+ elementheight 15
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_PLAYER_LIST
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 0
+ }
+
+ itemDef
+ {
+ name kick
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpCallVote
+ rect 183 185 50 20
+ textalign 1
+ textalignx 25
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteKick;
+ uiScript closeingame
+ }
+ }
+
+
+ // TEAM KICK PLAYER //
+
+ itemDef
+ {
+ name teamKick
+ group grpCallVote
+ text "Team Kick Player:"
+ textscale .25
+ rect 80 75 110 20
+ textalign 0
+ textalignx 0
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 0
+ decoration
+ }
+
+ itemDef
+ {
+ name teamKick
+ group grpCallVote
+ rect 80 95 150 85
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_LISTBOX
+ elementwidth 120
+ elementheight 15
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TEAM_LIST
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 0
+ }
+
+ itemDef
+ {
+ name teamKick
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpCallVote
+ rect 183 185 50 20
+ textalign 1
+ textalignx 25
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteTeamKick;
+ uiScript closeingame
+ }
+ }
+
+
+ // NEW MAP //
+
+ itemDef
+ {
+ name map
+ group grpCallVote
+ text "New Map:"
+ ownerdraw UI_ALLMAPS_SELECTION
+ textscale .25
+ rect 80 75 110 20
+ textalign 0
+ textalignx 0
+ textaligny 16
+ forecolor 1 1 1 1
+ decoration
+ visible 0
+ }
+
+ itemDef
+ {
+ name map
+ group grpCallVote
+ rect 80 95 150 85
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 15
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_ALLMAPS
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 0
+ }
+
+ itemDef
+ {
+ name map
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ textscale .25
+ group grpCallVote
+ rect 183 185 50 20
+ textalign 1
+ textalignx 25
+ textaligny 15
+ forecolor 1 1 1 1
+ visible 0
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript voteMap;
+ uiScript closeingame
+ }
+ }*/
+ }
+}
diff --git a/tremulous_ui/joinserver.menu b/tremulous_ui/joinserver.menu new file mode 100644 index 00000000..ace7a90a --- /dev/null +++ b/tremulous_ui/joinserver.menu @@ -0,0 +1,772 @@ +#include "ui/menudef.h"
+
+{
+
+ \\ Server Join \\
+
+ menuDef
+ {
+ name "joinserver"
+ visible 0
+ fullscreen 1
+ rect 0 0 640 480
+ focusColor 1 .75 0 1
+ outOfBoundsClick
+ style 0
+ onOpen
+ {
+ uiScript UpdateFilter;
+ hide accept_alt;
+ show accept;
+ hide back_alt;
+ show back;
+ hide grpmessage
+ }
+
+ onEsc { uiScript closeJoin }
+
+ itemDef
+ {
+ name background
+ rect 0 0 640 480
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+ }
+
+ // DATE AND MESSAGE OF THE DAY //
+
+ itemDef
+ {
+ name datewindow
+ rect 10 365 265 25
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ backcolor 0 0 0 .15
+ visible 1
+ }
+
+ itemDef
+ {
+ name messagewindow
+ rect 275 365 355 25
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ backcolor 0 0 0 .15
+ visible 1
+ }
+
+ itemDef
+ {
+ name refreshdate
+ ownerdraw UI_SERVERREFRESHDATE
+ textscale .33
+ rect 10 365 265 25
+ textalign 0
+ textalignx 10
+ textaligny 20
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name messageoftheday
+ ownerdraw UI_SERVERMOTD
+ textscale .33
+ rect 280 365 345 25
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+
+ // VIEW OPTIONS //
+
+ itemDef
+ {
+ name gametypefield
+ style WINDOW_STYLE_EMPTY
+ ownerdraw UI_NETSOURCE
+ rect 26 20 128 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 22
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 .5 .5 .5
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav"
+ }
+ }
+
+ // BUTTONS //
+
+ itemDef
+ {
+ name refreshSource
+ text "Get New List"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ rect 190 20 128 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 22
+ backcolor .5 .5 .5 .5
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RefreshServers
+ }
+ }
+
+ itemDef
+ {
+ name refreshFilter
+ text "Refresh List"
+ textscale .4
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_BUTTON
+ rect 354 20 128 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 22
+ backcolor .5 .5 .5 .5
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RefreshFilter
+ }
+ }
+
+ itemDef
+ {
+ name viewEmpty
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_YESNO
+ text "View Empty:"
+ cvar "ui_browserShowEmpty"
+ textscale .4
+ rect 26 50 128 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 22
+ forecolor 1 1 1 1
+ backcolor .5 .5 .5 .5
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RefreshFilter
+ }
+ }
+
+ itemDef
+ {
+ name viewFull
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_YESNO
+ text "View Full:"
+ cvar "ui_browserShowFull"
+ textscale .4
+ rect 190 50 128 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 22
+ forecolor 1 1 1 1
+ backcolor .5 .5 .5 .5
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RefreshFilter
+ }
+ }
+
+ itemDef
+ {
+ name PunkBusterInfo
+ group pbgrp
+ text "PunkBuster:"
+ type ITEM_TYPE_BUTTON
+ cvar "ui_browserShowEmpty"
+ textscale .4
+ style WINDOW_STYLE_FILLED
+ rect 354 50 128 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 22
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ conditionalopen cl_punkbuster pbdisable_popmenu pbenable_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name pbstatus
+ group pbgrp
+ type ITEM_TYPE_MULTI
+ text ""
+ cvar "cl_punkbuster"
+ cvarFloatList { "Off" 0 "On" 1 }
+ rect 438 50 64 26
+ textalign ITEM_ALIGN_CENTER
+ textalignx 10
+ textaligny 22
+ textscale .4
+ forecolor 1 1 1 1
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 0
+ visible 1
+ decoration
+ }
+
+
+ // map selection
+
+ itemDef
+ {
+ name mappreview
+ style 0
+ ownerdraw UI_NETMAPCINEMATIC
+ rect 502 5 128 96
+ border 1
+ bordercolor 0 .5 0 .5
+ visible 1
+ }
+
+ itemDef
+ {
+ name mappreview
+ style WINDOW_STYLE_FILLED
+ rect 502 5 128 96
+ border 1
+ bordercolor .5 .5 .5 .5
+ visible 1
+ }
+
+ // COLUMNS //
+
+ itemDef
+ {
+ name serverColumn
+ group grpColumn
+ rect 10 130 333 232
+ style WINDOW_STYLE_FILLED
+ border 1
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name mapColumn
+ group grpColumn
+ rect 343 130 125 232
+ style WINDOW_STYLE_FILLED
+ border 1
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name playerColumn
+ group grpColumn
+ rect 468 130 60 232
+ style WINDOW_STYLE_FILLED
+ border 1
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name pbColumn
+ group grpColumn
+ rect 528 130 32 232
+ style WINDOW_STYLE_FILLED
+ border 1
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name pingColumn
+ group grpColumn
+ rect 560 130 52 232
+ style WINDOW_STYLE_FILLED
+ border 1
+ backcolor 0 0 0 0
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name serverlist
+ rect 10 130 620 232
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_SERVERS
+ border 1
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ columns 5
+ 2 40 40 ITEM_ALIGN_LEFT
+ 343 40 20 ITEM_ALIGN_LEFT
+ 468 5 10 ITEM_ALIGN_LEFT
+ 528 5 10 ITEM_ALIGN_LEFT
+ 560 20 20 ITEM_ALIGN_LEFT
+
+ doubleClick { uiScript JoinServer }
+ }
+
+
+ // SORT TABS //
+
+ itemDef
+ {
+ name server
+ group grpTabs
+ text "Server Name"
+ type ITEM_TYPE_BUTTON
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect 10 103 333 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 18
+ border 1
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 0;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor serverColumn backcolor 0.3 1 1 0.5
+ }
+ }
+
+ itemDef
+ {
+ name map
+ group grpTabs
+ type ITEM_TYPE_BUTTON
+ text "Map Name"
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect 343 103 125 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 18
+ border 1
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 1;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor mapColumn backcolor 0.3 1 1 0.5
+ }
+ }
+
+ itemDef
+ {
+ name Players
+ group grpTabs
+ text "Players"
+ type ITEM_TYPE_BUTTON
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect 468 103 60 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 18
+ border 1
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 2;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor playerColumn backcolor 0.3 1 1 0.5
+ }
+ }
+
+ itemDef
+ {
+ name PB
+ group grpTabs
+ text "PB"
+ type ITEM_TYPE_BUTTON
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect 528 103 32 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 18
+ border 1
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 5;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor pbColumn backcolor 0.3 1 1 0.5
+ }
+ }
+
+
+ itemDef
+ {
+ name Ping
+ group grpTabs
+ text "Ping"
+ type ITEM_TYPE_BUTTON
+ textscale .33
+ style WINDOW_STYLE_EMPTY
+ rect 560 103 70 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 18
+ border 1
+ bordercolor 0.5 0.5 0.5 1
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerSort 4;
+
+ setitemcolor grpColumn backcolor 0 0 0 0;
+ setitemcolor pingColumn backcolor 0.3 1 1 0.5
+ }
+ }
+
+
+ itemDef
+ {
+ name password
+ text "Password"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_FILLED
+ rect 20 395 92 26
+ textalign 1
+ textalignx 46 // center
+ textaligny 22
+ backcolor 0 0 0 1
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open password_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name createFavorite
+ text "New Favorite"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_FILLED
+ rect 148 395 92 26
+ textalign 1
+ textalignx 46 // center
+ textaligny 22
+ backcolor 0 0 0 1
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open createfavorite_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name addFavorite
+ text "Add Favorite"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_FILLED
+ ownerdrawFlag UI_SHOW_NOTFAVORITESERVERS
+ rect 276 395 92 26
+ textalign 1
+ textalignx 46 // center
+ textaligny 22
+ backcolor 0 0 0 1
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript addFavorite
+ }
+ }
+
+ itemDef
+ {
+ name delfavorite
+ text "Del. Favorite"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_FILLED
+ ownerdrawFlag UI_SHOW_FAVORITESERVERS
+ rect 276 395 92 26
+ textalign 1
+ textalignx 46 // center
+ textaligny 22
+ backcolor 0 0 0 1
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript DeleteFavorite;
+ uiScript UpdateFilter
+ }
+ }
+
+ itemDef
+ {
+ name serverinfo
+ text "Server Info"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_FILLED
+ rect 404 395 92 26
+ textalign 1
+ textalignx 46 // center
+ textaligny 22
+ backcolor 0 0 0 1
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open serverinfo_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name findplayer
+ text "Find Friend"
+ type ITEM_TYPE_BUTTON
+ textscale .4
+ style WINDOW_STYLE_FILLED
+ rect 532 395 92 26
+ textalign 1
+ textalignx 46 // center
+ textaligny 22
+ backcolor 0 0 0 1
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open findplayer_popmenu
+ }
+ }
+
+
+
+ itemDef
+ {
+ name createServer
+ text "Create Server"
+ textscale .5
+ style WINDOW_STYLE_EMPTY
+ type ITEM_TYPE_BUTTON
+ rect 254 424 128 26
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 32
+ backcolor .5 .5 .5 .5
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close joinserver;
+ open createserver
+ }
+ }
+
+
+ // BACK BAR //
+
+ itemDef
+ {
+ name back
+ style 3
+ background "ui/assets/backarrow.tga"
+ rect 16 424 50 50
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close joinserver;
+ open main
+ }
+
+ mouseEnter
+ {
+ hide back;
+ show back_alt
+ }
+ }
+
+ itemDef
+ {
+ name back_alt
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/backarrow_alt.tga"
+ rect 16 424 50 50
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible 0
+ type ITEM_TYPE_BUTTON
+
+ text "Back"
+ textalign ITEM_ALIGN_LEFT
+ textaligny 36
+ textalignx 60
+ textscale .6
+
+ mouseExit
+ {
+ hide back_alt;
+ show back
+ }
+
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close joinserver;
+ open main
+ }
+ }
+
+
+
+
+ itemDef
+ {
+ name accept
+ style 3
+ rect 574 424 50 50
+ background "ui/assets/forwardarrow.tga"
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible 1
+ mouseEnter
+ {
+ hide accept;
+ show accept_alt
+ }
+
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript JoinServer
+ }
+ }
+
+ itemDef
+ {
+ name accept_alt
+ style WINDOW_STYLE_SHADER
+ rect 574 424 50 50
+ background "ui/assets/forwardarrow_alt.tga"
+ backcolor 0 0 0 0
+ type ITEM_TYPE_BUTTON
+ forecolor 1 1 1 1
+ visible 0
+ type ITEM_TYPE_BUTTON
+
+ text "Join"
+ textalign ITEM_ALIGN_LEFT
+ textaligny 36
+ textalignx -55
+ textscale .6
+
+ mouseExit
+ {
+ hide accept_alt;
+ show accept
+ }
+
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript JoinServer
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/loading.menu b/tremulous_ui/loading.menu new file mode 100644 index 00000000..744fa553 --- /dev/null +++ b/tremulous_ui/loading.menu @@ -0,0 +1,193 @@ +#include "ui/menudef.h"
+
+{
+ assetGlobalDef
+ {
+ cursor "ui/assets/3_cursor3" // cursor
+ gradientBar "ui/assets/gradientbar2.tga" // gradient bar
+ fadeClamp 1.0 // sets the fadeup alpha
+ fadeCycle 1 // how often fade happens in milliseconds
+ fadeAmount 0.1 // amount to adjust alpha per cycle
+
+ shadowX 5 // x amount for shadow offset
+ shadowY 5 // y amount for shadow offset
+ shadowColor 0.1 0.1 0.1 0.25 // shadow color
+
+ font "fonts/font" 26 // font
+ smallFont "fonts/smallfont" 20 // font
+ bigFont "fonts/bigfont" 34 // font
+ }
+
+ menuDef
+ {
+ name "Loading"
+ rect 0 0 640 480
+ fullScreen MENU_TRUE
+
+ itemDef
+ {
+ name background
+ rect 0 0 640 480
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "levelname"
+ rect 20 20 260 20
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_LEFT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale 0.4
+ textaligny 28
+ textalignx 0
+ ownerdraw CG_LOAD_LEVELNAME
+ }
+
+ itemDef
+ {
+ name "hostname"
+ rect 20 100 260 20
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_LEFT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale 0.4
+ textaligny 28
+ textalignx 0
+ ownerdraw CG_LOAD_HOSTNAME
+ }
+
+ itemDef
+ {
+ name "motd"
+ rect 20 180 260 20
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_LEFT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale 0.4
+ textaligny 28
+ textalignx 0
+ ownerdraw CG_LOAD_MOTD
+ }
+
+ itemDef
+ {
+ name "levelshot"
+ rect 300 20 320 240
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ ownerdraw CG_LOAD_LEVELSHOT
+ }
+
+ itemDef
+ {
+ name "media"
+ rect 20 300 380 30
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1 1
+ ownerdraw CG_LOAD_MEDIA
+ align ITEM_ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NEON
+ textscale 0.5
+ special 1.0
+ }
+
+ itemDef
+ {
+ name "medialabel"
+ style WINDOW_STYLE_EMPTY
+ textscale 0.6
+ rect 420 300 200 40
+ align ITEM_ALIGN_RIGHT
+ textaligny 28
+ textalignx 0
+ forecolor 0.0 0.8 1 1
+ visible 1
+ decoration
+ ownerdraw CG_LOAD_MEDIA_LABEL
+ }
+
+ itemDef
+ {
+ name "buildables"
+ rect 20 340 380 30
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1 1
+ ownerdraw CG_LOAD_BUILDABLES
+ align ITEM_ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NEON
+ textscale 0.5
+ special 1.0
+ }
+
+ itemDef
+ {
+ name "buildableslabel"
+ style WINDOW_STYLE_EMPTY
+ textscale 0.6
+ rect 420 340 200 40
+ align ITEM_ALIGN_RIGHT
+ textaligny 28
+ textalignx 0
+ forecolor 0.0 0.8 1 1
+ visible 1
+ decoration
+ ownerdraw CG_LOAD_BUILDABLES_LABEL
+ }
+
+ itemDef
+ {
+ name "charmodel"
+ rect 20 380 380 30
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1 1
+ ownerdraw CG_LOAD_CHARMODEL
+ align ITEM_ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NEON
+ textscale 0.5
+ special 1.0
+ }
+
+ itemDef
+ {
+ name "charmodellabel"
+ style WINDOW_STYLE_EMPTY
+ textscale 0.6
+ rect 420 380 200 40
+ align ITEM_ALIGN_RIGHT
+ textaligny 28
+ textalignx 0
+ forecolor 0.0 0.8 1 1
+ visible 1
+ decoration
+ ownerdraw CG_LOAD_CHARMODEL_LABEL
+ }
+
+ itemDef
+ {
+ name "overall"
+ rect 20 420 600 30
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1 1
+ ownerdraw CG_LOAD_OVERALL
+ align ITEM_ALIGN_CENTER
+ textstyle ITEM_TEXTSTYLE_NEON
+ textscale 0.5
+ special 1.0
+ }
+ }
+}
diff --git a/tremulous_ui/main.menu b/tremulous_ui/main.menu new file mode 100644 index 00000000..4103997d --- /dev/null +++ b/tremulous_ui/main.menu @@ -0,0 +1,141 @@ +#include "ui/menudef.h"
+
+{
+ assetGlobalDef
+ {
+ font "fonts/font" 26 // font
+ smallFont "fonts/smallfont" 20 // font
+ bigFont "fonts/bigfont" 34 // font
+ cursor "ui/assets/3_cursor3" // cursor
+ gradientBar "ui/assets/gradientbar2.tga" // gradient bar
+ itemFocusSound "sound/misc/menu2.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
+ }
+
+
+
+
+
+ menuDef
+ {
+ name main
+ fullScreen MENU_TRUE
+ rect 0 0 640 480 // Size and position of the menu
+ visible MENU_TRUE // Visible on open
+ focusColor 1 .75 0 1 // Menu focus color for text and items
+
+ onOpen { uiScript stopRefresh ; playlooped "sound/ui/heartbeat.wav" }
+ onESC { open quit_popmenu }
+
+ itemDef
+ {
+ name background
+ rect 0 0 640 480
+ style WINDOW_STYLE_SHADER
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+ background "ui/assets/mainmenu.jpg"
+ }
+
+ itemDef
+ {
+ name splashmodel
+ rect 0 0 640 480
+ type ITEM_TYPE_MODEL
+ style WINDOW_STYLE_EMPTY
+ asset_model "models/splash/splash_screen.md3"
+ model_fovx 32.0
+ model_fovy 24.0
+ model_angle 180
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name mainmenu
+ text "Play"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ rect 472 20 128 20
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 128
+ textaligny 20
+ textscale .416
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close main;
+ open joinserver
+ }
+ }
+
+ itemDef
+ {
+ name mainmenu
+ text "Mods"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .416
+ rect 472 40 128 20
+ textalignx 128
+ textaligny 20
+ textalign ITEM_ALIGN_RIGHT
+ backcolor 0 0 0 0
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open mod
+ }
+ }
+
+ itemDef
+ {
+ name mainmenu
+ text "Quit"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ rect 472 60 128 20
+ textalignx 128
+ textaligny 20
+ textscale .416
+ textalign ITEM_ALIGN_RIGHT
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ open quit_popmenu
+ }
+ }
+
+ itemDef
+ {
+ name copyright
+ text "Tremulous (C) 2005 darklegion development"
+ style WINDOW_STYLE_EMPTY
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ textscale .25
+ rect 0 440 640 40
+ textalign 1
+ textaligny 32
+ textalignx 320
+ forecolor .75 .75 .75 .75
+ visible 1
+ decoration
+ }
+ }
+}
diff --git a/tremulous_ui/menus.txt b/tremulous_ui/menus.txt new file mode 100644 index 00000000..cdd0721c --- /dev/null +++ b/tremulous_ui/menus.txt @@ -0,0 +1,19 @@ +// menu defs
+//
+{
+ loadMenu { "ui/main.menu" }
+ loadMenu { "ui/joinserver.menu" }
+ loadMenu { "ui/punkbuster.menu" }
+ loadMenu { "ui/createserver.menu" }
+ loadMenu { "ui/mod.menu" }
+ loadMenu { "ui/credit.menu" }
+ loadMenu { "ui/connect.menu" }
+ loadMenu { "ui/password.menu" }
+ loadMenu { "ui/quit.menu" }
+ loadMenu { "ui/addfilter.menu" }
+ loadMenu { "ui/error.menu" }
+ loadMenu { "ui/serverinfo.menu" }
+ loadMenu { "ui/findplayer.menu" }
+ loadMenu { "ui/quitcredit.menu" }
+ loadMenu { "ui/createfavorite.menu" }
+}
diff --git a/tremulous_ui/mod.menu b/tremulous_ui/mod.menu new file mode 100644 index 00000000..51c62314 --- /dev/null +++ b/tremulous_ui/mod.menu @@ -0,0 +1,106 @@ +#include "ui/menudef.h"
+
+{
+ \\ MOD \\
+
+ menuDef
+ {
+ name "mod"
+ visible 0
+ fullscreen 0
+ rect 160 120 320 240
+ focusColor 1 .75 0 1
+ style 1
+ border 1
+ popup
+ onEsc
+ {
+ close mod;
+ open main
+ }
+ onOpen
+ {
+ uiScript loadMods
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 320 240
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name modlist
+ rect 10 10 300 200
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_MODS
+ textalign 3
+ textaligny 14
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleClick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript RunMod
+ }
+ }
+
+ itemDef
+ {
+ name ok
+ text "OK"
+ type 1
+ textscale .25
+ rect 250 210 30 26
+ textalign 1
+ textalignx 15
+ textaligny 20
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close mod;
+ uiScript RunMod
+ }
+ }
+
+ itemDef
+ {
+ name cancel
+ text "Cancel"
+ type 1
+ textscale .25
+ rect 280 210 30 26
+ textalign 1
+ textalignx 15
+ textaligny 20
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close mod;
+ open main
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/password.menu b/tremulous_ui/password.menu new file mode 100644 index 00000000..e4b8b3ec --- /dev/null +++ b/tremulous_ui/password.menu @@ -0,0 +1,92 @@ +#include "ui/menudef.h"
+
+{
+ \\ PASSWORD POPUP MENU \\
+
+ menuDef
+ {
+ name "password_popmenu"
+ visible 0
+ fullscreen 0
+ rect 204 122 235 235
+ focusColor 1 .75 0 1
+ style 1
+ border 1
+ popup
+ onESC
+ {
+ close password_popmenu;
+ open joinserver
+ }
+
+ itemDef
+ {
+ name window
+ rect 47 47 144 144
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ // PASSWORD //
+
+ itemDef
+ {
+ name password
+ text "Password"
+ style 0
+ decoration
+ textscale .3
+ rect 0 86 110 20
+ textalign 1
+ textalignx 117
+ textaligny 16
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name passwordEntry
+ style 1
+ text ""
+ maxchars 15
+ textscale .25
+ TYPE 4
+ cvar "password"
+ rect 60 106 120 20
+ textalign ITEM_ALIGN_LEFT
+ textalignx 10
+ textaligny 16
+ forecolor 1 1 1 1
+ backcolor .2 .2 .2 .5
+ visible 1
+ }
+
+ itemDef
+ {
+ name yes
+ text "OK"
+ type 1
+ textscale .25
+ style WINDOW_STYLE_EMPTY
+ rect 103 140 30 26
+ textalign 1
+ textalignx 15
+ textaligny 20
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close password_popmenu;
+ open joinserver
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/ptrc.menu b/tremulous_ui/ptrc.menu new file mode 100644 index 00000000..d40e1972 --- /dev/null +++ b/tremulous_ui/ptrc.menu @@ -0,0 +1,111 @@ +#include "ui/menudef.h"
+
+{
+ // PTRC POPUP MENU //
+
+ menuDef
+ {
+ name "ptrc_popmenu"
+ visible 0
+ fullscreen 0
+ rect 140 170 360 140
+ focusColor 1 .75 0 1
+ style 1
+ border 1
+ popup
+ onESC
+ {
+ play "sound/misc/menu1.wav";
+ close ptrc_popmenu
+ }
+
+
+ itemDef
+ {
+ name window
+ rect 0 0 360 140
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+
+ // PTRC //
+
+ itemDef
+ {
+ name confirm
+ text "It seems that you disconnected during this game."
+ style 0
+ textscale .4
+ textstyle 3
+ rect 180 40 0 0
+ textalign ITEM_ALIGN_CENTER
+ decoration
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+ itemDef
+ {
+ name confirm
+ text "Would you like to be restored to your previous state?"
+ style 0
+ textscale .4
+ textstyle 3
+ rect 180 65 0 0
+ textalign ITEM_ALIGN_CENTER
+ decoration
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+
+ itemDef
+ {
+ name yes
+ text "YES"
+ type 1
+ textscale .25
+ rect 80 96 20 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 10
+ textaligny 14
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ uiScript PTRCRestore;
+ close ptrc_popmenu
+ }
+ }
+
+
+ itemDef
+ {
+ name no
+ text "NO"
+ type 1
+ textscale .25
+ rect 260 96 20 20
+ textalign ITEM_ALIGN_CENTER
+ textalignx 10
+ textaligny 14
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close ptrc_popmenu
+ }
+ }
+ }
+}
+
+
diff --git a/tremulous_ui/punkbuster.menu b/tremulous_ui/punkbuster.menu new file mode 100644 index 00000000..acd36949 --- /dev/null +++ b/tremulous_ui/punkbuster.menu @@ -0,0 +1,292 @@ +#include "ui/menudef.h" + +{ + + // PB enable ---------------- + + menuDef + { + name "pbenable_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC + { + close pbenable_popmenu; + open joinserver + } + + itemDef + { + name window + rect 47 47 144 144 + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible 1 + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name confirm + text "Enable Punkbuster?" + style 0 + textscale .25 + textstyle 3 + rect 0 85 110 20 + textalign 1 + textalignx 120 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } + + // yes/no button + + itemDef + { + name yes + text "YES" + type 1 + textscale .25 + rect 75 140 30 26 + textalign 1 + textalignx 18 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + action + { + play "sound/misc/menu1.wav"; + uiScript setPbClStatus 1; + close pbenable_popmenu; + open joinserver + } + } + + itemDef + { + name no + text "NO" + type 1 + textscale .25 + rect 128 140 30 26 + textalign 1 + textalignx 18 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + action + { + play "sound/misc/menu4.wav"; + close pbenable_popmenu; + open joinserver + } + } + } + + // PB disable --------------- + + menuDef + { + name "pbdisable_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC + { + close pbdisable_popmenu; + open joinserver + } + + itemDef + { + name window + rect 47 47 144 144 + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible 1 + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name confirm + text "Disable Punkbuster?" + style 0 + textscale .25 + textstyle 3 + rect 0 85 110 20 + textalign 1 + textalignx 120 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } + + // yes/no button + + itemDef + { + name yes + text "YES" + type 1 + textscale .25 + rect 75 140 30 26 + textalign 1 + textalignx 18 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + action + { + play "sound/misc/menu1.wav"; + close pbdisable_popmenu; + open pbmsg_popmenu + } + } + + itemDef + { + name no + text "NO" + type 1 + textscale .25 + rect 128 140 30 26 + textalign 1 + textalignx 18 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + action + { + play "sound/misc/menu4.wav"; + close pbdisable_popmenu; + open joinserver + } + } + } + + // disable msg -------------- + + menuDef + { + name "pbmsg_popmenu" + visible 0 + fullscreen 0 + rect 204 122 235 235 + focusColor 1 .75 0 1 + style 1 + border 1 + popup + onESC + { + play "sound/misc/menu4.wav"; + close pbmsg_popmenu; + open joinserver + } + + itemDef + { + name window + rect 47 47 144 144 + style WINDOW_STYLE_FILLED + backcolor 0 0 0 1 + visible 1 + decoration + + border WINDOW_BORDER_FULL + borderSize 1.0 + borderColor 0.5 0.5 0.5 1 + } + + itemDef + { + name confirm + text "PunkBuster will be disabled" + style 0 + textscale .25 + textstyle 3 + rect 0 85 110 20 + textalign 1 + textalignx 120 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } + + itemDef + { + name confirm + text "next time you start" + style 0 + textscale .25 + textstyle 3 + rect 0 100 110 20 + textalign 1 + textalignx 120 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } + + itemDef + { + name confirm + text "Tremulous" + style 0 + textscale .25 + textstyle 3 + rect 0 115 110 20 + textalign 1 + textalignx 120 + textaligny 15 + decoration + forecolor 1 1 1 1 + visible 1 + } + + // ok button + + itemDef + { + name yes + text "OK" + type 1 + textscale .25 + rect 103 158 30 26 + textalign 1 + textalignx 18 + textaligny 20 + forecolor 1 1 1 1 + visible 1 + action + { + play "sound/misc/menu1.wav"; + uiScript setPbClStatus 0; + close pbmsg_popmenu; + open joinserver + } + } + } +} diff --git a/tremulous_ui/quit.menu b/tremulous_ui/quit.menu new file mode 100644 index 00000000..dede2585 --- /dev/null +++ b/tremulous_ui/quit.menu @@ -0,0 +1,102 @@ +#include "ui/menudef.h"
+
+{
+ \\ QUIT POPUP MENU \\
+
+ menuDef
+ {
+ name "quit_popmenu"
+ visible 0
+ fullscreen 0
+ rect 204 122 235 235
+ focusColor 1 .75 0 1
+ style 1
+ border 1
+ popup
+ onESC
+ {
+ play "sound/misc/menu1.wav";
+ close quit_popmenu;
+ open main
+ }
+
+
+ itemDef
+ {
+ name window
+ rect 47 47 144 144
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+
+ // QUIT //
+
+ itemDef
+ {
+ name confirm
+ text "Quit Tremulous?"
+ style 0
+ textscale .3
+ textstyle 3
+ rect 0 90 110 20
+ textalign 1
+ textalignx 117
+ textaligny 16
+ decoration
+ forecolor 1 1 1 1
+ visible 1
+ }
+
+
+ itemDef
+ {
+ name yes
+ text "YES"
+ type 1
+ textscale .25
+ rect 75 120 30 26
+ textalign 1
+ textalignx 15
+ textaligny 20
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close main;
+ close quit_popmenu;
+ open quitCredit
+ }
+ }
+
+
+ itemDef
+ {
+ name no
+ text "NO"
+ type 1
+ textscale .25
+ rect 128 120 30 26
+ textalign 1
+ textalignx 15
+ textaligny 20
+ forecolor 1 1 1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close quit_popmenu;
+ open main
+ }
+ }
+ }
+}
+
+
diff --git a/tremulous_ui/quitcredit.menu b/tremulous_ui/quitcredit.menu new file mode 100644 index 00000000..390daa60 --- /dev/null +++ b/tremulous_ui/quitcredit.menu @@ -0,0 +1,431 @@ +#include "ui/menudef.h"
+
+{
+ \\ QUIT CREDIT \\
+
+ menuDef
+ {
+ name "quitCredit"
+ visible 0
+ fullscreen 1
+ rect 0 0 640 480
+ focusColor 1 .75 0 1
+ style 1
+ border 0
+ onEsc
+ {
+ uiScript "quit"
+ }
+
+ itemDef
+ {
+ name exitclickbox
+ style WINDOW_STYLE_SHADER
+ rect 0 0 640 480
+ type ITEM_TYPE_BUTTON
+ visible 1
+ backcolor 0 0 0 1
+ background "ui/assets/credits_splash.jpg"
+ action
+ {
+ play "sound/misc/nomenu.wav";
+ close quitCredit;
+ uiScript "quit"
+ }
+ }
+
+ itemDef
+ {
+ name topstripe
+ style WINDOW_STYLE_FILLED
+ rect -5 -5 645 64
+ visible 1
+ backcolor 0 0 0 1
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.5
+ borderColor 1 0 0 1
+ }
+
+ itemDef
+ {
+ name bottomstripe
+ style WINDOW_STYLE_FILLED
+ rect -5 416 645 485
+ visible 1
+ backcolor 0 0 0 1
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.5
+ borderColor 1 0 0 1
+ }
+
+ itemDef
+ {
+ name "creditstitle"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 320 48 1 1
+ textalign ITEM_ALIGN_CENTER
+ textalignx 0
+ textaligny 0
+ textscale 0.75
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "CREDITS"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit1left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 96 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Tim 'Timbo' Angus"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit1right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 96 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Programming and Direction"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit2left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 128 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Nick 'jex' Jansens"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit2right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 128 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mapping, texturing and 2D artwork"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit3left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 160 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Robin 'OverFlow' Marshall"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit3right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 160 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Modelling, animation and mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit4left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 192 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Jan 'Stannum' van der Weg"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit4right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 192 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Texturing and mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit5left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 224 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mike 'Veda' McInnerney"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit5right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 224 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Modelling, animation and texturing"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit6left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 256 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Gordon 'Godmil' Miller"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit6right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 256 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit7left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 288 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "'Who-[Soup]'"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit7right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 288 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit8left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 320 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Tristan 'jhrx' Blease"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit8right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 320 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Mapping"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit9left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 352 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Paul 'MoP' Greveson"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit9right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 352 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Modelling and texturing"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "credit10left"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 10 384 1 1
+ textalign ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Chris 'Dolby' McCarthy"
+ forecolor 1 1 1 1
+ backcolor 1 0 0 1
+ visible 1
+ decoration
+ }
+ itemDef
+ {
+ name "credit10right"
+ group grpidcredit
+ style WINDOW_STYLE_EMPTY
+ rect 630 384 1 1
+ textalign ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 10
+ textscale 0.50
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ text "Sound"
+ forecolor 1 1 1 1
+ backcolor 0 1 0 1
+ visible 1
+ decoration
+ }
+ }
+}
diff --git a/tremulous_ui/serverinfo.menu b/tremulous_ui/serverinfo.menu new file mode 100644 index 00000000..2282c888 --- /dev/null +++ b/tremulous_ui/serverinfo.menu @@ -0,0 +1,143 @@ +#include "ui/menudef.h"
+
+{
+ \\ SERVER INFO POPUP MENU \\
+
+ menuDef
+ {
+ name "serverinfo_popmenu"
+ visible 0
+ fullscreen 0
+ rect 158 80 320 340
+ focusColor 1 .75 0 1
+ style 1
+ border 1
+ popup
+ onClose { }
+ onOpen { uiScript ServerStatus }
+ onESC
+ {
+ close serverinfo_popmenu;
+ open joinserver
+ }
+
+ itemDef
+ {
+ name window
+ rect 10 15 300 320
+ style 1
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name serverinfo
+ rect 0 20 320 20
+ text "Server Information"
+ textstyle 3
+ textalign 1
+ textscale .333
+ textalignx 160
+ textaligny 20
+ forecolor 1 1 1 1
+ visible 1
+ decoration
+ }
+
+
+ itemDef
+ {
+ name serverinfo
+ rect 20 55 280 230
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_FILLED
+ elementwidth 120
+ elementheight 16
+ textscale .225
+ backcolor 0 0 0 1
+ border 1
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_SERVERSTATUS
+ notselectable
+ visible 1
+ columns 4
+ 2 40 20 ITEM_ALIGN_LEFT
+ 40 40 10 ITEM_ALIGN_LEFT
+ 90 40 10 ITEM_ALIGN_LEFT
+ 135 40 20 ITEM_ALIGN_LEFT
+ }
+
+ itemDef
+ {
+ name window
+ rect 20 55 264 230
+ style 1
+ backcolor 0 0 0 0
+ forecolor 0 0 0 0
+ border 1
+ bordersize 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+ // BUTTON //
+
+ itemDef
+ {
+ name exit
+ text "Exit"
+ type 1
+ textscale .23
+ group grpControlbutton
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 95 295 45 26
+ textalign 1
+ textalignx 23
+ textaligny 20
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close serverinfo_popmenu;
+ open joinserver
+ }
+ }
+
+ itemDef
+ {
+ name refresh
+ text "Refresh"
+ type 1
+ textscale .23
+ group grpControlbutton
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 180 295 45 26
+ textalign 1
+ textalignx 23
+ textaligny 20
+ forecolor 1 1 1 1
+ backcolor .37 .1 .1 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript ServerStatus
+ }
+ }
+ }
+}
+
+
diff --git a/tremulous_ui/teamscore.menu b/tremulous_ui/teamscore.menu new file mode 100644 index 00000000..9d98fe45 --- /dev/null +++ b/tremulous_ui/teamscore.menu @@ -0,0 +1,286 @@ +#include "ui/menudef.h"
+
+{
+ \\ score_menu \\
+
+ menuDef
+ {
+ name "teamscore_menu"
+ visible 0
+ fullscreen 0
+ rect 0 0 640 480
+ focusColor 1 .75 0 1
+ style 0
+ border 1
+
+
+ // GAMETYPE BAR //
+
+ // TEAM NAME //
+
+ itemDef
+ {
+ name teamNameWindow
+ rect 14 78 612 30
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name alienteamname
+ text "Aliens"
+ textalign ITEM_ALIGN_LEFT
+ textscale .5
+ textaligny 26
+ rect 20 78 306 23
+ forecolor 1 1 1 1
+ decoration
+ visible 1
+ }
+
+ itemDef
+ {
+ name stagereport
+ align ITEM_ALIGN_CENTER
+ textscale 0.4
+ textaligny 24
+ rect 14 78 612 23
+ forecolor 1 1 1 1
+ decoration
+ visible 1
+ ownerdraw CG_STAGE_REPORT_TEXT
+ }
+
+ itemDef
+ {
+ name humanteamname
+ text "Humans"
+ textalign ITEM_ALIGN_RIGHT
+ textscale .5
+ textaligny 26
+ rect 620 78 0 23
+ forecolor 1 1 1 1
+ decoration
+ visible 1
+ }
+
+ // TEAM BARS //
+
+ itemDef
+ {
+ name leftteambar
+ rect 14 112 307 25
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name rightteambar
+ rect 320 112 306 25
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .5
+ visible 1
+ decoration
+ }
+
+
+ // TEAM HEADINGS //
+
+ itemDef
+ {
+ name leftteamheadings
+ text "Status Name Kills Time Ping"
+ textscale .25
+ style 0
+ rect 25 112 128 30
+ textalign 0
+ textalignx 0 // x alignment point for text
+ // use it to offset left/right text from the edge
+ // or to center the text on a different point
+ textaligny 18
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible 1
+ }
+
+ itemDef
+ {
+ name rightteamheadings
+ text "Status Name Kills Time Ping"
+ textscale .25
+ style 0
+ rect 331 112 128 30
+ textalign 0
+ textalignx 0 // x alignment point for text
+ // use it to offset left/right text from the edge
+ // or to center the text on a different point
+ textaligny 18
+ backcolor 0 0 0 0
+ forecolor 1 .75 0 1
+ decoration
+ visible 1
+ }
+
+
+ // GRADIENT BACKGROUNDS //
+
+ itemDef
+ {
+ name window
+ rect 320 142 1 220
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ rect 300 142 1 220
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ rect 606 142 1 220
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ visible 1
+ decoration
+ }
+
+
+ // LIST //
+
+ itemDef
+ {
+ name leftlist
+ rect 14 142 306 222
+ forecolor .75 .75 .75 1
+ visible 1
+ type ITEM_TYPE_LISTBOX
+ elementwidth 135
+ elementheight 20
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_ALIENTEAM_LIST
+ notselectable
+ columns 7
+ 5 15 1 ITEM_ALIGN_LEFT
+ 21 15 1 ITEM_ALIGN_LEFT
+ 7 30 5 ITEM_ALIGN_LEFT
+ 45 100 24 ITEM_ALIGN_LEFT
+ 172 20 4 ITEM_ALIGN_RIGHT
+ 209 20 4 ITEM_ALIGN_RIGHT
+ 247 20 4 ITEM_ALIGN_RIGHT
+ }
+
+ itemDef
+ {
+ name rightlist
+ rect 320 142 306 222
+ forecolor 1 1 1 1
+ visible 1
+ type ITEM_TYPE_LISTBOX
+ elementwidth 135
+ elementheight 20
+ textscale .25
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_HUMANTEAM_LIST
+ notselectable
+ columns 7
+ 5 15 1 ITEM_ALIGN_LEFT
+ 21 15 1 ITEM_ALIGN_LEFT
+ 7 30 5 ITEM_ALIGN_LEFT
+ 45 100 24 ITEM_ALIGN_LEFT
+ 172 20 4 ITEM_ALIGN_RIGHT
+ 209 20 4 ITEM_ALIGN_RIGHT
+ 247 20 4 ITEM_ALIGN_RIGHT
+ }
+
+
+ // PLAYER LIST BORDER //
+
+ itemDef
+ {
+ name window
+ rect 14 141 612 221
+ style WINDOW_STYLE_EMPTY
+ border 1
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 1
+ backcolor 0 0 0 .5
+ visible 1
+ decoration
+ }
+
+
+ // spectators //
+
+ itemDef
+ {
+ name window
+ rect 14 366 612 24
+ style WINDOW_STYLE_FILLED
+ border 1
+ bordercolor .5 .5 .5 1
+ forecolor 1 1 1 .7
+ backcolor 0 0 0 .5
+ textscale .33
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ text "Spectating:"
+ textaligny 20
+ rect 19 366 82 24
+ style WINDOW_STYLE_FILLED
+ forecolor 1 1 1 1
+ textscale .33
+ textalignx 3
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name window
+ rect 100 366 520 24
+ style WINDOW_STYLE_FILLED
+ forecolor 1 1 1 1
+ textscale .33
+ visible 1
+ ownerdraw CG_SPECTATORS
+ decoration
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous.txt b/tremulous_ui/tremulous.txt new file mode 100644 index 00000000..ca23045a --- /dev/null +++ b/tremulous_ui/tremulous.txt @@ -0,0 +1,19 @@ +// menu defs
+//
+{
+ loadMenu { "ui/tremulous_teamselect.menu" }
+ loadMenu { "ui/tremulous_alienclass.menu" }
+ loadMenu { "ui/tremulous_humanitem.menu" }
+
+ loadMenu { "ui/tremulous_alienbuild.menu" }
+ loadMenu { "ui/tremulous_humanbuild.menu" }
+
+ loadMenu { "ui/tremulous_humanarmoury.menu" }
+
+ loadMenu { "ui/tremulous_humandialogs.menu" }
+ loadMenu { "ui/tremulous_aliendialogs.menu" }
+
+ loadMenu { "ui/tremulous_alienupgrade.menu" }
+
+ loadMenu { "ui/ptrc.menu" }
+}
diff --git a/tremulous_ui/tremulous_alien_builder_hud.menu b/tremulous_ui/tremulous_alien_builder_hud.menu new file mode 100644 index 00000000..8a5b5860 --- /dev/null +++ b/tremulous_ui/tremulous_alien_builder_hud.menu @@ -0,0 +1,307 @@ +#include "ui/menudef.h"
+
+// team menu
+//
+// defines from ui_shared.h
+
+{
+ menuDef
+ {
+ name "alien_builder_hud"
+ fullScreen MENU_FALSE
+ visible MENU_TRUE
+ rect 0 0 640 480
+
+ //CONSOLE
+ itemDef
+ {
+ name "console"
+ rect 8 8 560 180
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 18
+ textscale 0.4
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_CONSOLE
+ }
+
+ //LAGOMETER
+ itemDef
+ {
+ name "lagometer"
+ rect 596 68 32 20
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 0 0 1
+ textscale 0.3
+ textalignx 1
+ textaligny 0.5
+ ownerdraw CG_LAGOMETER
+ }
+
+ //SELECT
+ itemDef
+ {
+ name "select"
+ rect 240 435 160 32
+ visible 0
+ decoration
+ ownerdraw CG_PLAYER_SELECT
+ }
+
+ //////////////////
+ //STATIC OBJECTS//
+ //////////////////
+
+ //LEFT RING CIRCLE
+ itemDef
+ {
+ name "left-ring-circle"
+ rect 47.5 410 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //LEFT ARM
+ itemDef
+ {
+ name "left-arm"
+ rect 77 404.75 104 52.5
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/alien/left-arm.tga"
+ }
+
+ //LEFT ARM CIRCLE
+ itemDef
+ {
+ name "left-arm-circle"
+ rect 150 417.5 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //RIGHT RING CIRCLE
+ itemDef
+ {
+ name "right-ring-circle"
+ rect 567 410 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //RIGHT ARM
+ itemDef
+ {
+ name "right-arm"
+ rect 459 404.75 104 52.5
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/alien/right-arm.tga"
+ }
+
+ ///////////////////
+ //DYNAMIC OBJECTS//
+ ///////////////////
+
+ //BOLT
+ itemDef
+ {
+ name "bolt"
+ rect 52.5 412.5 15 20
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.5
+ background "ui/assets/alien/bolt.tga"
+ ownerdraw CG_PLAYER_BOOST_BOLT
+ }
+
+ //CROSS
+ itemDef
+ {
+ name "cross"
+ rect 155 422.5 15 15
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.5
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/cross.tga"
+ }
+
+ //LEFT RING
+ itemDef
+ {
+ name "left-ring"
+ rect 7.25 369.5 90.5 106
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.5
+ background "ui/assets/alien/left-ring.tga"
+ ownerdraw CG_PLAYER_BOOSTED
+ }
+
+ //LEFT SPIKES
+ itemDef
+ {
+ name "left-spikes"
+ rect 18.5 381 59 83
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 1.0
+ background "ui/assets/alien/left-spikes.tga"
+ ownerdraw CG_PLAYER_WALLCLIMBING
+ }
+
+ //RIGHT RING
+ itemDef
+ {
+ name "right-ring"
+ rect 542.25 369.5 90.5 106
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.5
+ background "ui/assets/alien/right-ring.tga"
+ ownerdraw CG_PLAYER_BOOSTED
+ }
+
+ //RIGHT SPIKES
+ itemDef
+ {
+ name "right-spikes"
+ rect 562.5 381 59 83
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 1.0
+ background "ui/assets/alien/right-spikes.tga"
+ ownerdraw CG_PLAYER_WALLCLIMBING
+ }
+
+ //HEALTH
+ itemDef
+ {
+ name "health"
+ rect 78.5 421.5 60 15
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 .5
+ ownerdraw CG_PLAYER_HEALTH
+ }
+
+ //ALIEN CLASS ICON
+ itemDef
+ {
+ name "alien-icon"
+ rect 465 417.5 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.6
+ ownerdraw CG_PLAYER_WEAPONICON
+ }
+
+ //ORGANS
+ itemDef
+ {
+ name "organs"
+ rect 570.5 415.95 15 15
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 .5
+ ownerdraw CG_PLAYER_CREDITS_VALUE_NOPAD
+ }
+
+ //BUILD TIMER
+ itemDef
+ {
+ name "buildtimer"
+ rect 567 410 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 .5
+ ownerdraw CG_PLAYER_BUILD_TIMER
+ }
+
+ //BUILD POINTS
+ itemDef
+ {
+ name "build-points"
+ rect 483.5 421.5 60 15
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 .5
+ ownerdraw CG_PLAYER_AMMO_VALUE
+ }
+
+ //FPS
+ itemDef
+ {
+ name "fps"
+ rect 572 8 56 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_FPS
+ }
+
+ //TIMER
+ itemDef
+ {
+ name "timer"
+ rect 572 38 56 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_TIMER
+ }
+
+ //ALIENSENSE
+ itemDef
+ {
+ name "aliensense"
+ rect 20 20 600 400
+ visible 1
+ decoration
+ ownerdraw CG_PLAYER_ALIEN_SENSE
+ }
+
+ //PLAYER NAME
+ itemDef
+ {
+ name "playername"
+ rect 200 275 240 25
+ visible 1
+ decoration
+ textScale .5
+ ownerdraw CG_PLAYER_CROSSHAIRNAMES
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_alien_general_hud.menu b/tremulous_ui/tremulous_alien_general_hud.menu new file mode 100644 index 00000000..078254fb --- /dev/null +++ b/tremulous_ui/tremulous_alien_general_hud.menu @@ -0,0 +1,296 @@ +#include "ui/menudef.h"
+
+// team menu
+//
+// defines from ui_shared.h
+
+{
+ menuDef
+ {
+ name "alien_general_hud"
+ fullScreen MENU_FALSE
+ visible MENU_TRUE
+ rect 0 0 640 480
+
+ //CONSOLE
+ itemDef
+ {
+ name "console"
+ rect 8 8 560 180
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 18
+ textscale 0.4
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_CONSOLE
+ }
+
+ //LAGOMETER
+ itemDef
+ {
+ name "lagometer"
+ rect 596 68 32 20
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 0 0 1
+ textscale 0.3
+ textalignx 1
+ textaligny 0.5
+ ownerdraw CG_LAGOMETER
+ }
+
+ //SELECT
+ itemDef
+ {
+ name "select"
+ rect 240 435 160 32
+ visible 0
+ decoration
+ ownerdraw CG_PLAYER_SELECT
+ }
+
+ //////////////////
+ //STATIC OBJECTS//
+ //////////////////
+
+ //LEFT RING CIRCLE
+ itemDef
+ {
+ name "left-ring-circle"
+ rect 47.5 410 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //LEFT ARM
+ itemDef
+ {
+ name "left-arm"
+ rect 77 404.75 104 52.5
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/alien/left-arm.tga"
+ }
+
+ //LEFT ARM CIRCLE
+ itemDef
+ {
+ name "left-arm-circle"
+ rect 150 417.5 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //RIGHT RING CIRCLE
+ itemDef
+ {
+ name "right-ring-circle"
+ rect 567 410 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //RIGHT ARM
+ itemDef
+ {
+ name "right-arm"
+ rect 459 404.75 104 52.5
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/alien/right-arm.tga"
+ }
+
+ ///////////////////
+ //DYNAMIC OBJECTS//
+ ///////////////////
+
+ //BLOB
+ itemDef
+ {
+ name "blob"
+ rect 479 419 57 18
+ visible 1
+ forecolor 1.0 0.0 0.0 0.5
+ background "ui/assets/alien/tremublob.tga"
+ ownerdraw CG_PLAYER_POISON_BARBS
+ }
+
+ //BOLT
+ itemDef
+ {
+ name "bolt"
+ rect 52.5 412.5 15 20
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.5
+ background "ui/assets/alien/bolt.tga"
+ ownerdraw CG_PLAYER_BOOST_BOLT
+ }
+
+ //CROSS
+ itemDef
+ {
+ name "cross"
+ rect 155 422.5 15 15
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.5
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/cross.tga"
+ }
+
+ //LEFT RING
+ itemDef
+ {
+ name "left-ring"
+ rect 7.25 369.5 90.5 106
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.5
+ background "ui/assets/alien/left-ring.tga"
+ ownerdraw CG_PLAYER_BOOSTED
+ }
+
+ //LEFT SPIKES
+ itemDef
+ {
+ name "left-spikes"
+ rect 18.5 381 59 83
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 1.0
+ background "ui/assets/alien/left-spikes.tga"
+ ownerdraw CG_PLAYER_WALLCLIMBING
+ }
+
+ //RIGHT RING
+ itemDef
+ {
+ name "right-ring"
+ rect 542.25 369.5 90.5 106
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.5
+ background "ui/assets/alien/right-ring.tga"
+ ownerdraw CG_PLAYER_BOOSTED
+ }
+
+ //RIGHT SPIKES
+ itemDef
+ {
+ name "right-spikes"
+ rect 562.5 381 59 83
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 1.0
+ background "ui/assets/alien/right-spikes.tga"
+ ownerdraw CG_PLAYER_WALLCLIMBING
+ }
+
+ //HEALTH
+ itemDef
+ {
+ name "health"
+ rect 78.5 421.5 60 15
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 .5
+ ownerdraw CG_PLAYER_HEALTH
+ }
+
+ //ALIEN CLASS ICON
+ itemDef
+ {
+ name "alien-icon"
+ rect 465 417.5 25 25
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 0.6
+ ownerdraw CG_PLAYER_WEAPONICON
+ }
+
+ //ORGANS
+ itemDef
+ {
+ name "organs"
+ rect 570.5 415.95 15 15
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 .5
+ ownerdraw CG_PLAYER_CREDITS_VALUE_NOPAD
+ }
+
+ //FPS
+ itemDef
+ {
+ name "fps"
+ rect 572 8 56 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_FPS
+ }
+
+ //TIMER
+ itemDef
+ {
+ name "timer"
+ rect 572 38 56 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1.0 0.0 0.0 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_TIMER
+ }
+
+ //ALIENSENSE
+ itemDef
+ {
+ name "aliensense"
+ rect 20 20 600 400
+ visible 1
+ decoration
+ ownerdraw CG_PLAYER_ALIEN_SENSE
+ }
+
+ //PLAYER NAME
+ itemDef
+ {
+ name "playername"
+ rect 200 275 240 25
+ visible 1
+ decoration
+ textScale .5
+ ownerdraw CG_PLAYER_CROSSHAIRNAMES
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_alienbuild.menu b/tremulous_ui/tremulous_alienbuild.menu new file mode 100644 index 00000000..9676a85f --- /dev/null +++ b/tremulous_ui/tremulous_alienbuild.menu @@ -0,0 +1,117 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_alienbuild"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick
+ rect 112 111 400 247
+ focusColor 1 .75 0 1
+ style 1
+ popup
+ onOpen { uiScript LoadAlienBuilds; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 400 247
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect 8 8 136 231
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMALIENBUILD
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuildAlienBuildable;
+ close tremulous_alienbuild
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_ABUILDINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 152 8 240 204
+ textscale .33
+ textalignx 6
+ textaligny 12
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 305 218 34 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 12.5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor 0 0 0 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuildAlienBuildable;
+ close tremulous_alienbuild
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 344 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3.8
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor 0 0 0 1
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_alienbuild
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_alienclass.menu b/tremulous_ui/tremulous_alienclass.menu new file mode 100644 index 00000000..a3e01c51 --- /dev/null +++ b/tremulous_ui/tremulous_alienclass.menu @@ -0,0 +1,139 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_alienclass"
+ visible 1
+ fullscreen 0
+ outOfBoundsClick
+ rect 112 111 400 247
+ focusColor 1 .75 0 1
+ style 1
+ popup
+ onOpen { uiScript LoadAlienClasses; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 400 247
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect 8 8 136 231
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMALIENCLASSES
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SpawnAsAlienClass;
+ close tremulous_alienclass
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_ACLASSINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 152 8 240 204
+ textscale .33
+ textalignx 6
+ textaligny 12
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "Back"
+ text "< Back"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 152 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close tremulous_alienclass;
+ open tremulous_teamselect
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 305 218 34 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 12.5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SpawnAsAlienClass;
+ close tremulous_alienclass
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 344 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3.8
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_alienclass
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_aliendialogs.menu b/tremulous_ui/tremulous_aliendialogs.menu new file mode 100644 index 00000000..bbea3989 --- /dev/null +++ b/tremulous_ui/tremulous_aliendialogs.menu @@ -0,0 +1,85 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_alien_dialog"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick
+ rect 185 140 280 190
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_EMPTY
+ popup
+
+ itemDef
+ {
+ name window
+ rect 0 0 280 190
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name alien_dialog
+ text "Error"
+ type ITEM_TYPE_TEXT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 115 10 50 20
+ textalign ITEM_ALIGN_LEFT
+ textalignx 5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name alien_dialog
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 10 50 250 80
+ cvar "ui_dialog"
+ autowrapped
+ textalignx 5
+ textaligny 18
+ textscale .33
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name alien_dialog
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 242 150 28 20
+ textalign ITEM_ALIGN_LEFT
+ textalignx 5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close tremulous_alien_dialog
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_alienupgrade.menu b/tremulous_ui/tremulous_alienupgrade.menu new file mode 100644 index 00000000..89278d06 --- /dev/null +++ b/tremulous_ui/tremulous_alienupgrade.menu @@ -0,0 +1,117 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_alienupgrade"
+ visible 1
+ fullscreen 0
+ outOfBoundsClick
+ rect 112 111 400 247
+ focusColor 1 .75 0 1
+ style 1
+ popup
+ onOpen { uiScript LoadAlienUpgrades; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 400 247
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect 8 8 136 231
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMALIENUPGRADE
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript UpgradeToNewClass;
+ close tremulous_alienupgrade
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_AUPGRADEINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 152 8 240 204
+ textscale .33
+ textalignx 6
+ textaligny 12
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 305 218 34 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 12.5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript UpgradeToNewClass;
+ close tremulous_alienupgrade
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 344 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3.8
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_alienupgrade
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_default_hud.menu b/tremulous_ui/tremulous_default_hud.menu new file mode 100644 index 00000000..732c4119 --- /dev/null +++ b/tremulous_ui/tremulous_default_hud.menu @@ -0,0 +1,103 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "default_hud"
+ fullScreen MENU_FALSE
+ visible MENU_TRUE
+ rect 0 0 640 480
+
+ //CONSOLE
+ itemDef
+ {
+ name "console"
+ rect 8 8 560 180
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 18
+ textscale 0.4
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_CONSOLE
+ }
+
+ //FPS
+ itemDef
+ {
+ name "fps"
+ rect 572 8 56 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_FPS
+ }
+ //TIMER
+ itemDef
+ {
+ name "timer"
+ rect 572 38 56 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_TIMER
+ }
+
+ //SNAPSHOT
+ itemDef
+ {
+ name "snapshot"
+ rect 8 196 200 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.4
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_SNAPSHOT
+ }
+ //LAGOMETER
+ itemDef
+ {
+ name "lagometer"
+ rect 596 68 32 20
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ textscale 0.3
+ textalignx 1
+ textaligny 0.5
+ ownerdraw CG_LAGOMETER
+ }
+
+ //PLAYER NAME
+ itemDef
+ {
+ name "playername"
+ rect 200 275 240 25
+ visible 1
+ decoration
+ textScale .5
+ ownerdraw CG_PLAYER_CROSSHAIRNAMES
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_human_hud.menu b/tremulous_ui/tremulous_human_hud.menu new file mode 100644 index 00000000..4a67c9cf --- /dev/null +++ b/tremulous_ui/tremulous_human_hud.menu @@ -0,0 +1,398 @@ +#include "ui/menudef.h"
+
+// team menu
+//
+// defines from ui_shared.h
+
+{
+ menuDef
+ {
+ name "human_hud"
+ fullScreen MENU_FALSE
+ visible MENU_TRUE
+ rect 0 0 640 480
+
+ //CONSOLE
+ itemDef
+ {
+ name "console"
+ rect 8 8 560 180
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_LEFT
+ textalignx 0
+ textaligny 18
+ textscale 0.4
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_CONSOLE
+ }
+
+ //LAGOMETER
+ itemDef
+ {
+ name "lagometer"
+ rect 596 68 32 20
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 0 0.8 1 1
+ textscale 0.3
+ textalignx 1
+ textaligny 0.5
+ ownerdraw CG_LAGOMETER
+ }
+
+ //FPS
+ itemDef
+ {
+ name "fps"
+ rect 572 8 56 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_FPS
+ }
+
+ //TIMER
+ itemDef
+ {
+ name "timer"
+ rect 572 38 56 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.3
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_TIMER
+ }
+
+ //SNAPSHOT
+ itemDef
+ {
+ name "snapshot"
+ rect 8 196 200 22
+ style WINDOW_STYLE_EMPTY
+ visible 1
+ decoration
+ forecolor 1 1 1 1
+ align ITEM_ALIGN_RIGHT
+ textalignx 0
+ textaligny 18
+ textscale 0.4
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ ownerdraw CG_SNAPSHOT
+ }
+
+ //////////////////
+ //STATIC OBJECTS//
+ //////////////////
+
+ //LEFT CIRCLE
+ itemDef
+ {
+ name "left-circle"
+ rect 35 417.5 25 25
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //LEFT ARM
+ itemDef
+ {
+ name "left-arm"
+ rect 68.25 420 94.5 35
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/human/left-arm.tga"
+ }
+
+ //CREDITS LABEL
+ itemDef
+ {
+ name "credits-label"
+ rect 508 403 7 7.5
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/human/credits.tga"
+ }
+
+ //RIGHT CIRCLE
+ itemDef
+ {
+ name "right-circle"
+ rect 580 417.5 25 25
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/circle.tga"
+ }
+
+ //RIGHT ARM
+ itemDef
+ {
+ name "right-arm"
+ rect 477.25 420 94.5 35
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/human/right-arm.tga"
+ }
+
+ //RIGHT CAP
+ itemDef
+ {
+ name "right-cap"
+ rect 500 400 80 15
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/human/right-cap.tga"
+ }
+
+ ///////////////////
+ //DYNAMIC OBJECTS//
+ ///////////////////
+
+ //BOLT
+ itemDef
+ {
+ name "bolt"
+ rect 40 420 15 20
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ background "ui/assets/human/bolt.tga"
+ ownerdraw CG_PLAYER_STAMINA_BOLT
+ }
+
+ //CROSS
+ itemDef
+ {
+ name "cross"
+ rect 137.5 430 15 15
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ background "ui/assets/neutral/cross.tga"
+ ownerdraw CG_PLAYER_HEALTH_CROSS
+ }
+
+ //STAMINA 1
+ itemDef
+ {
+ name "stamina1"
+ rect 34.5 403.5 9 11.5
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ background "ui/assets/human/stamina1.tga"
+ ownerdraw CG_PLAYER_STAMINA_1
+ }
+
+ //STAMINA 2
+ itemDef
+ {
+ name "stamina2"
+ rect 24 410.75 11.5 10.5
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ background "ui/assets/human/stamina2.tga"
+ ownerdraw CG_PLAYER_STAMINA_2
+ }
+
+ //STAMINA 3
+ itemDef
+ {
+ name "stamina3"
+ rect 20.75 423.5 10.5 7
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ background "ui/assets/human/stamina3.tga"
+ ownerdraw CG_PLAYER_STAMINA_3
+ }
+
+ //STAMINA 4
+ itemDef
+ {
+ name "stamina4"
+ rect 21 402.5 54 55
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ background "ui/assets/human/stamina4.tga"
+ ownerdraw CG_PLAYER_STAMINA_4
+ }
+
+ //RING
+ itemDef
+ {
+ name "ring"
+ // rect 20 402.5 55 55 // Guide for Stamina alignment
+ rect 565 402.5 55 55
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ background "ui/assets/human/ring.tga"
+ ownerdraw CG_PLAYER_CLIPS_RING
+ }
+
+ //CREDITS
+ itemDef
+ {
+ name "credits"
+ rect 515 402 45 11.25
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ ownerdraw CG_PLAYER_CREDITS_VALUE
+ }
+
+ //HEALTH
+ itemDef
+ {
+ name "health"
+ rect 67 430 60 15
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 .5
+ ownerdraw CG_PLAYER_HEALTH
+ }
+
+ //WEAPON ICON
+ itemDef
+ {
+ name "weapon"
+ rect 482.5 425 25 25
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ ownerdraw CG_PLAYER_WEAPONICON
+ }
+
+ //WEAPON SELECT TEXT
+ itemDef
+ {
+ name "selecttext"
+ rect 200 300 240 25
+ visible 1
+ decoration
+ textScale .5
+ ownerdraw CG_PLAYER_SELECTTEXT
+ }
+
+ //AMMO
+ itemDef
+ {
+ name "ammo"
+ rect 494 430 60 15
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 .5
+ ownerdraw CG_PLAYER_AMMO_VALUE
+ }
+
+ //CLIPS
+ itemDef
+ {
+ name "clips"
+ rect 538 423 60 15
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 .5
+ ownerdraw CG_PLAYER_CLIPS_VALUE
+ }
+
+ //BUILD TIMER
+ itemDef
+ {
+ name "buildtimer"
+ rect 580 417.5 25 25
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 .5
+ ownerdraw CG_PLAYER_BUILD_TIMER
+ }
+
+ //USABLE
+ itemDef
+ {
+ name "usable"
+ rect 307.5 380 25 25
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 .5
+ background "ui/assets/neutral/use.tga"
+ ownerdraw CG_PLAYER_USABLE_BUILDABLE
+ }
+
+ //SCANNER
+ itemDef
+ {
+ name "scanner"
+ rect 164 340 312 72
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 .5
+ background "ui/assets/human/scanner.tga"
+ ownerdraw CG_PLAYER_HUMAN_SCANNER
+ }
+
+ //INVENTORY
+ itemDef
+ {
+ name "inventory"
+ rect 232.5 425 175 25
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.5
+ ownerdraw CG_PLAYER_SELECT
+ }
+
+ //SELECTED
+ itemDef
+ {
+ name "selected"
+ rect 306 424 27 27
+ visible 1
+ decoration
+ forecolor 0.0 0.8 1.0 0.25
+ style WINDOW_STYLE_SHADER
+ background "ui/assets/neutral/selected.tga"
+ }
+
+ //PLAYER NAME
+ itemDef
+ {
+ name "playername"
+ rect 200 275 240 25
+ visible 1
+ decoration
+ textScale .5
+ ownerdraw CG_PLAYER_CROSSHAIRNAMES
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_humanarmoury.menu b/tremulous_ui/tremulous_humanarmoury.menu new file mode 100644 index 00000000..53b10037 --- /dev/null +++ b/tremulous_ui/tremulous_humanarmoury.menu @@ -0,0 +1,165 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_humanarmoury"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick
+ rect 44 111 544 247
+ focusColor 1 .75 0 1
+ style 1
+ popup
+ onOpen
+ {
+ uiScript LoadHumanArmouryBuys;
+ uiScript LoadHumanArmourySells;
+ setFocus list
+ }
+
+ itemDef
+ {
+ name window
+ rect 0 0 544 247
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "buylist"
+ rect 8 8 136 231
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMHUMANARMOURYBUY
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuyFromArmoury
+ }
+ }
+
+ itemDef
+ {
+ name "selllist"
+ rect 400 8 136 231
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMHUMANARMOURYSELL
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SellToArmoury
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_HBUYINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 152 8 240 204
+ textscale .33
+ textalignx 6
+ textaligny 12
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "Close"
+ text "Close"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 254 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close tremulous_humanarmoury
+ }
+ }
+
+ itemDef
+ {
+ name "Buy"
+ text "Buy >"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 152 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 12.5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuyFromArmoury
+ }
+ }
+
+ itemDef
+ {
+ name "Sell"
+ text "< Sell"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 344 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3.8
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SellToArmoury
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_humanbuild.menu b/tremulous_ui/tremulous_humanbuild.menu new file mode 100644 index 00000000..65a5a0e4 --- /dev/null +++ b/tremulous_ui/tremulous_humanbuild.menu @@ -0,0 +1,116 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_humanbuild"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick
+ rect 112 111 400 247
+ focusColor 1 .75 0 1
+ style 1
+ popup
+ onOpen { uiScript LoadHumanBuilds; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 400 247
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect 8 8 136 231
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMHUMANBUILD
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuildHumanBuildable;
+ close tremulous_humanbuild
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_HBUILDINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 152 8 240 204
+ textscale .33
+ textalignx 6
+ textaligny 12
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 305 218 34 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 12.5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript BuildHumanBuildable;
+ close tremulous_humanbuild
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 344 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3.8
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_humanbuild
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_humandialogs.menu b/tremulous_ui/tremulous_humandialogs.menu new file mode 100644 index 00000000..824d2cf0 --- /dev/null +++ b/tremulous_ui/tremulous_humandialogs.menu @@ -0,0 +1,85 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_human_dialog"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick
+ rect 185 140 280 190
+ focusColor 1 .75 0 1
+ style WINDOW_STYLE_EMPTY
+ popup
+
+ itemDef
+ {
+ name window
+ rect 0 0 280 190
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name human_dialog
+ text "Error"
+ type ITEM_TYPE_TEXT
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 115 10 50 20
+ textalign ITEM_ALIGN_LEFT
+ textalignx 5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name human_dialog
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 10 50 250 80
+ cvar "ui_dialog"
+ autowrapped
+ textalignx 5
+ textaligny 18
+ textscale .33
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name human_dialog
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 242 150 28 20
+ textalign ITEM_ALIGN_LEFT
+ textalignx 5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ close tremulous_human_dialog
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_humanitem.menu b/tremulous_ui/tremulous_humanitem.menu new file mode 100644 index 00000000..92e4dd0d --- /dev/null +++ b/tremulous_ui/tremulous_humanitem.menu @@ -0,0 +1,139 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_humanitem"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick
+ rect 112 111 400 247
+ focusColor 1 .75 0 1
+ style 1
+ popup
+ onOpen { uiScript LoadHumanItems; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 400 247
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect 8 8 136 231
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMHUMANITEMS
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SpawnWithHumanItem;
+ close tremulous_humanitem
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_HITEMINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 152 8 240 204
+ textscale .33
+ textalignx 6
+ textaligny 12
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "Back"
+ text "< Back"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 152 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu4.wav";
+ close tremulous_humanitem;
+ open tremulous_teamselect
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 305 218 34 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 12.5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript SpawnWithHumanItem;
+ close tremulous_humanitem
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 344 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3.8
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_humanitem
+ }
+ }
+ }
+}
diff --git a/tremulous_ui/tremulous_teamselect.menu b/tremulous_ui/tremulous_teamselect.menu new file mode 100644 index 00000000..9fb6b6ce --- /dev/null +++ b/tremulous_ui/tremulous_teamselect.menu @@ -0,0 +1,117 @@ +#include "ui/menudef.h"
+
+{
+ menuDef
+ {
+ name "tremulous_teamselect"
+ visible 0
+ fullscreen 0
+ outOfBoundsClick
+ rect 112 111 400 247
+ focusColor 1 .75 0 1
+ style 1
+ popup
+ onOpen { uiScript LoadTeams; setFocus list }
+
+ itemDef
+ {
+ name window
+ rect 0 0 400 247
+ style WINDOW_STYLE_FILLED
+ backcolor 0 0 0 1
+ visible 1
+ decoration
+
+ border WINDOW_BORDER_FULL
+ borderSize 1.0
+ borderColor 0.5 0.5 0.5 1
+ }
+
+ itemDef
+ {
+ name "list"
+ rect 8 8 136 231
+ type ITEM_TYPE_LISTBOX
+ style WINDOW_STYLE_EMPTY
+ elementwidth 120
+ elementheight 20
+ textscale .33
+ elementtype LISTBOX_TEXT
+ feeder FEEDER_TREMTEAMS
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ doubleclick
+ {
+ play "sound/misc/menu1.wav";
+ uiScript JoinTeam;
+ close tremulous_teamselect
+ }
+ }
+
+ itemDef
+ {
+ name infopane
+ ownerdraw UI_TEAMINFOPANE
+ textstyle ITEM_TEXTSTYLE_NORMAL
+ style WINDOW_STYLE_EMPTY
+ rect 152 8 240 204
+ textscale .33
+ textalignx 6
+ textaligny 12
+ border 1
+ bordercolor 0.5 0.5 0.5 0.5
+ forecolor 1 1 1 1
+ backcolor 0.2 0.2 0.2 1
+ outlinecolor 0.1 0.1 0.1 0.5
+ visible 1
+ decoration
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "OK"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 305 218 34 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 12.5
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu1.wav";
+ uiScript JoinTeam;
+ close tremulous_teamselect
+ }
+ }
+
+ itemDef
+ {
+ name "OKCancel"
+ text "Cancel"
+ type ITEM_TYPE_BUTTON
+ style WINDOW_STYLE_EMPTY
+ rect 344 218 50 21
+ textalign ITEM_ALIGN_LEFT
+ textalignx 3.8
+ textaligny 18
+ textscale .4
+ forecolor 1 1 1 1
+ backcolor .5 0 0 .25
+ visible 1
+ action
+ {
+ play "sound/misc/menu3.wav";
+ close tremulous_teamselect
+ }
+ }
+ }
+}
|