The HUD is complete (actually, I forgot to add key display, will do that later).

All weapon pickup models have been added in. Modeldef has been subdivided to make things easier for me.
This commit is contained in:
Marisa the Magician 2018-05-23 01:48:29 +02:00
commit 7e38cfddd8
81 changed files with 3060 additions and 2302 deletions

View file

@ -3,3 +3,7 @@ server bool flak_betaudamage = false;
server bool flak_pulsereload = false;
server bool flak_enforcerreload = false;
user bool flak_redeemerreadout = true;
user int flak_colorprefs = 0;
user color flak_colorcustom = "ff ff ff";
user float flak_opacity = 0.8;
user color flak_bgcolor = "00 00 00";

View file

@ -394,6 +394,10 @@ HardwareShader Texture "models/tloc1_.png"
{
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
}
HardwareShader Texture "models/tloc2_.png"
{
Shader "shaders/glsl/AmbientGlow_Brightmapped.fp"
}
HardwareShader Texture "invis00"
{
Shader "shaders/glsl/MeshEnviroMap.fp"

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.6 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 819 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 313 B

After

Width:  |  Height:  |  Size: 268 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 238 B

After

Width:  |  Height:  |  Size: 193 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

After

Width:  |  Height:  |  Size: 248 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 300 B

After

Width:  |  Height:  |  Size: 245 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 279 B

After

Width:  |  Height:  |  Size: 237 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 316 B

After

Width:  |  Height:  |  Size: 243 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 332 B

After

Width:  |  Height:  |  Size: 263 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

After

Width:  |  Height:  |  Size: 214 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 351 B

After

Width:  |  Height:  |  Size: 282 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 321 B

After

Width:  |  Height:  |  Size: 264 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 113 B

After

Width:  |  Height:  |  Size: 136 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 147 B

After

Width:  |  Height:  |  Size: 150 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.6 KiB

After

Width:  |  Height:  |  Size: 2.4 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 958 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

After

Width:  |  Height:  |  Size: 11 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.4 KiB

After

Width:  |  Height:  |  Size: 3.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

After

Width:  |  Height:  |  Size: 2.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

After

Width:  |  Height:  |  Size: 1.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

After

Width:  |  Height:  |  Size: 2.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 830 B

BIN
graphics/hud/Skul.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1,005 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.9 KiB

After

Width:  |  Height:  |  Size: 9.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.1 KiB

After

Width:  |  Height:  |  Size: 2 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.5 KiB

After

Width:  |  Height:  |  Size: 1.5 KiB

Before After
Before After

View file

@ -3,6 +3,12 @@ OptionValue "BetaToggle"
0, "Normal"
1, "Beta"
}
OptionValue "ColorPrefs"
{
0, "Team"
1, "Player"
2, "Custom"
}
OptionMenu "UTOptionMenu"
{
Title "UT Options"
@ -18,6 +24,12 @@ OptionMenu "UTOptionMenu"
Option "Enforcer Reloading", "flak_enforcerreload", "YesNo"
Option "Pulsegun Reloading", "flak_pulsereload", "YesNo"
Option "Redeemer Target Visuals", "flak_redeemerreadout", "YesNo"
StaticText " "
StaticText "HUD Options", "Gold"
Option "Color Choice", "flak_colorprefs", "ColorPrefs"
ColorPicker "Custom Color", "flak_colorcustom"
Slider "HUD Opacity", "flak_opacity", 0.5, 1, 0.05, 2
ColorPicker "Background Color", "flak_bgcolor"
}
AddOptionMenu "OptionsMenu"

24
modeldef.chainsaw Normal file
View file

@ -0,0 +1,24 @@
Model "UTChainsaw"
{
Path "models"
Model 1 "ChainSawPick_d.3d"
Skin 1 "JChainSawPick1.png"
Offset -1.68 -4 12
Scale -0.168 0.14 0.14
AngleOffset 180
ROTATING
FrameIndex CSWP A 1 0
}
Model "UTChainsaw"
{
Path "models"
Model 1 "ChainSawPick_d.3d"
Skin 1 "JChainSawPick1.png"
Offset -1.68 -4 6
Scale -0.168 0.14 0.14
AngleOffset 180
FrameIndex CSWP B 1 0
}

48
modeldef.eightball Normal file
View file

@ -0,0 +1,48 @@
Model "UTRocketAmmo"
{
Path "models"
Model 0 "RocketPackMesh_d.3d"
Skin 0 "JRocketPack1.png"
Scale 0.072 -0.0864 0.072
AngleOffset 270
ZOffset 6
FrameIndex RPAK A 0 0
}
Model "UTRocketAmmo2"
{
Path "models"
Model 0 "UTRocket_d.3d"
Skin 0 "JuRocket1_.png"
Scale -0.0822 0.0685 0.07
ZOffset 6
FrameIndex RCKT A 0 0
}
Model "UTRocketLauncher"
{
Path "models"
Model 1 "Eight2Pick_d.3d"
Skin 1 "Eight_t.png"
Offset 0 4 12
Scale -0.24 0.288 0.24
PitchOffset 90
AngleOffset 90
ROTATING
FrameIndex EBLP A 1 0
}
Model "UTRocketLauncher"
{
Path "models"
Model 1 "Eight2Pick_d.3d"
Skin 1 "Eight_t.png"
Offset 0 4 6
Scale -0.24 0.288 0.24
PitchOffset 90
AngleOffset 90
FrameIndex EBLP B 1 0
}

37
modeldef.enforcer Normal file
View file

@ -0,0 +1,37 @@
Model "EClip"
{
Path "models"
Model 0 "EClipM_d.3d"
Skin 0 "JEClip.png"
Scale -0.0864 0.072 0.072
PitchOffset 90
ZOffset 2.5
FrameIndex ECLP A 0 0
}
Model "Enforcer"
{
Path "models"
Model 1 "MagPick_d.3d"
Skin 1 "Jautot1.png"
Scale -0.1 0.12 0.1
PitchOffset 90
AngleOffset 270
ZOffset 12
ROTATING
FrameIndex ENFP A 1 0
}
Model "Enforcer"
{
Path "models"
Model 1 "MagPick_d.3d"
Skin 1 "Jautot1.png"
Scale -0.1 0.12 0.1
PitchOffset 90
AngleOffset 270
ZOffset 6
FrameIndex ENFP B 1 0
}

754
modeldef.flak Normal file
View file

@ -0,0 +1,754 @@
Model "FlakAmmo"
{
Path "models"
Model 0 "flakammom_d.3d"
Skin 0 "jfa1.png"
PitchOffset 90
Scale 0.12 0.1 0.1
ZOffset 4
FrameIndex FAMO A 0 0
}
Model "FlakAmmo2"
{
Path "models"
Model 0 "flakslugm_d.3d"
Skin 0 "jflakslugel1_.png"
PitchOffset 90
Scale 0.048 0.04 0.04
ZOffset 2
FrameIndex FSLG A 0 0
}
Model "FlakSlug"
{
Path "models"
Model 0 "flakslugm_d.3d"
Skin 0 "jflakslugel1.png"
RollOffset 90
Scale 0.048 0.04 0.04
PITCHFROMMOMENTUM
FrameIndex FSLG A 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a00.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 A 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a01.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 B 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a02.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 C 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a03.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 D 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a04.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 E 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a05.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 F 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a06.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 G 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a07.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 H 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a08.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 I 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a09.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 J 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a10.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 K 0 0
}
Model "FlakChunk"
{
Path "models"
Model 0 "chunkm_d.3d"
Skin 0 "chunk_a11.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH1 L 0 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a00.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 A 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a01.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 B 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a02.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 C 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a03.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 D 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a04.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 E 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a05.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 F 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a06.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 G 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a07.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 H 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a08.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 I 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a09.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 J 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a10.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 K 1 0
}
Model "FlakChunk"
{
Path "models"
Model 1 "chunk2m_d.3d"
Skin 1 "chunk_a11.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH2 L 1 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a00.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 A 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a01.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 B 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a02.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 C 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a03.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 D 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a04.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 E 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a05.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 F 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a06.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 G 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a07.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 H 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a08.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 I 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a09.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 J 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a10.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 K 2 0
}
Model "FlakChunk"
{
Path "models"
Model 2 "chunk3m_d.3d"
Skin 2 "chunk_a11.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH3 L 2 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a00.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 A 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a01.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 B 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a02.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 C 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a03.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 D 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a04.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 E 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a05.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 F 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a06.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 G 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a07.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 H 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a08.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 I 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a09.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 J 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a10.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 K 3 0
}
Model "FlakChunk"
{
Path "models"
Model 3 "chunk4m_d.3d"
Skin 3 "chunk_a11.png"
Scale 0.06 0.06 0.06
ZOffset 2
USEACTORPITCH
USEACTORROLL
FrameIndex FCH4 L 3 0
}
Model "FlakCannon"
{
Path "models"
Model 1 "flak2pick_d.3d"
Skin 1 "flak_t.png"
AngleOffset 90
PitchOffset 90
Scale 0.14 0.168 0.14
Offset 0 -18.9 0
ZOffset 12
ROTATING
FrameIndex FPCK A 1 0
}
Model "FlakCannon"
{
Path "models"
Model 1 "flak2pick_d.3d"
Skin 1 "flak_t.png"
AngleOffset 90
PitchOffset 90
Scale 0.14 0.168 0.14
Offset 0 -18.9 0
ZOffset 11
FrameIndex FPCK B 1 0
}
Model "FlakCannon"
{
Path "models"
Model 2 "Flat_d.3d"
Skin 2 "Flakmuz.png"
PitchOffset 90
Scale 0.08 0.08 0.08
Offset 4.0 -25.0 -7.5
FrameIndex FMUZ A 0 0
}
Model "FlakCannon"
{
Path "models"
Model 0 "flakm_d.3d"
SurfaceSkin 0 0 "flak_t1.png"
SurfaceSkin 0 1 "flak_t2.png"
SurfaceSkin 0 2 "flak_t3.png"
SurfaceSkin 0 3 "flak_t4.png"
SurfaceSkin 0 4 "flakammoledbase.png"
AngleOffset 180
PitchOffset 90
Scale 0.2 0.1 0.2
Offset 5.6 -7.6 -10.4
// select
FrameIndex FLKS A 0 0
FrameIndex FLKS B 0 1
FrameIndex FLKS C 0 2
FrameIndex FLKS D 0 3
FrameIndex FLKS E 0 4
FrameIndex FLKS F 0 5
FrameIndex FLKS G 0 6
FrameIndex FLKS H 0 7
FrameIndex FLKS I 0 8
FrameIndex FLKS J 0 9
FrameIndex FLKS K 0 10
FrameIndex FLKS L 0 11
FrameIndex FLKS M 0 12
FrameIndex FLKS N 0 13
FrameIndex FLKS O 0 14
FrameIndex FLKS P 0 15
FrameIndex FLKS Q 0 16
FrameIndex FLKS R 0 17
FrameIndex FLKS S 0 18
FrameIndex FLKS T 0 19
FrameIndex FLKS U 0 20
FrameIndex FLKS V 0 21
FrameIndex FLKS W 0 22
FrameIndex FLKS X 0 23
FrameIndex FLKS Y 0 24
FrameIndex FLKS Z 0 25
FrameIndex FKS2 A 0 26
FrameIndex FKS2 B 0 27
FrameIndex FKS2 C 0 28
FrameIndex FKS2 D 0 29
// loading
FrameIndex FLKL A 0 30
FrameIndex FLKL B 0 31
FrameIndex FLKL C 0 32
FrameIndex FLKL D 0 33
FrameIndex FLKL E 0 34
FrameIndex FLKL F 0 35
FrameIndex FLKL G 0 36
FrameIndex FLKL H 0 37
FrameIndex FLKL I 0 38
FrameIndex FLKL J 0 39
FrameIndex FLKL K 0 40
FrameIndex FLKL L 0 41
FrameIndex FLKL M 0 42
FrameIndex FLKL N 0 43
FrameIndex FLKL O 0 44
// fire
FrameIndex FLKF A 0 46
FrameIndex FLKF B 0 47
FrameIndex FLKF C 0 48
FrameIndex FLKF D 0 49
FrameIndex FLKF E 0 50
FrameIndex FLKF F 0 51
FrameIndex FLKF G 0 52
FrameIndex FLKF H 0 53
FrameIndex FLKF I 0 54
FrameIndex FLKF J 0 55
// altfire
FrameIndex FLKA A 0 57
FrameIndex FLKA B 0 58
FrameIndex FLKA C 0 59
FrameIndex FLKA D 0 60
FrameIndex FLKA E 0 61
FrameIndex FLKA F 0 62
FrameIndex FLKA G 0 63
FrameIndex FLKA H 0 64
FrameIndex FLKA I 0 65
FrameIndex FLKA J 0 66
FrameIndex FLKA K 0 67
// idle
FrameIndex FLKI A 0 80
// deselect
FrameIndex FLKD A 0 82
FrameIndex FLKD B 0 83
FrameIndex FLKD C 0 84
FrameIndex FLKD D 0 85
FrameIndex FLKD E 0 86
FrameIndex FLKD F 0 87
FrameIndex FLKD G 0 88
FrameIndex FLKD H 0 89
FrameIndex FLKD I 0 90
FrameIndex FLKD J 0 91
}

350
modeldef.ges Normal file
View file

@ -0,0 +1,350 @@
Model "BioAmmo"
{
Path "models"
Model 0 "BioAmmoM_d.3d"
Skin 0 "Jbammo1.png"
Scale -0.08 0.096 0.08
AngleOffset 270
ZOffset 4
FrameIndex BIOA A 0 0
}
Model "BioGel"
{
Path "models"
Model 0 "BioGelm_d.3d"
Skin 0 "Jgreen.png"
Scale 0.08 0.096 0.08
RollOffset 90
USEACTORPITCH
USEACTORROLL
// Flying
FrameIndex GELF A 0 0
FrameIndex GELF B 0 1
FrameIndex GELF C 0 2
FrameIndex GELF D 0 3
FrameIndex GELF E 0 4
FrameIndex GELF F 0 5
FrameIndex GELF G 0 6
FrameIndex GELF H 0 7
FrameIndex GELF I 0 8
FrameIndex GELF J 0 9
FrameIndex GELF K 0 10
FrameIndex GELF L 0 11
FrameIndex GELF M 0 12
// Hit
FrameIndex GELH A 0 14
FrameIndex GELH B 0 15
FrameIndex GELH C 0 16
FrameIndex GELH D 0 17
FrameIndex GELH E 0 18
FrameIndex GELH F 0 19
FrameIndex GELH G 0 20
FrameIndex GELH H 0 21
FrameIndex GELH I 0 22
FrameIndex GELH J 0 23
// Drip
FrameIndex GELD A 0 24
FrameIndex GELD B 0 25
FrameIndex GELD C 0 26
FrameIndex GELD D 0 27
FrameIndex GELD E 0 28
FrameIndex GELD F 0 29
FrameIndex GELD G 0 30
FrameIndex GELD H 0 31
FrameIndex GELD I 0 32
FrameIndex GELD J 0 33
FrameIndex GELD K 0 34
FrameIndex GELD L 0 35
FrameIndex GELD M 0 36
// Slide
FrameIndex GELS A 0 37
FrameIndex GELS B 0 38
FrameIndex GELS C 0 39
FrameIndex GELS D 0 40
FrameIndex GELS E 0 41
FrameIndex GELS F 0 42
FrameIndex GELS G 0 43
// Shrivel
FrameIndex GELX A 0 44
FrameIndex GELX B 0 45
FrameIndex GELX C 0 46
FrameIndex GELX D 0 47
FrameIndex GELX E 0 48
FrameIndex GELX F 0 49
FrameIndex GELX G 0 50
FrameIndex GELX H 0 51
FrameIndex GELX I 0 52
FrameIndex GELX J 0 53
FrameIndex GELX K 0 54
FrameIndex GELX L 0 55
}
Model "BioSplash"
{
Path "models"
Model 0 "BioGelm_d.3d"
Skin 0 "Jgreen.png"
Scale 0.08 0.096 0.08
RollOffset 90
USEACTORPITCH
USEACTORROLL
// Flying
FrameIndex GELF A 0 0
FrameIndex GELF B 0 1
FrameIndex GELF C 0 2
FrameIndex GELF D 0 3
FrameIndex GELF E 0 4
FrameIndex GELF F 0 5
FrameIndex GELF G 0 6
FrameIndex GELF H 0 7
FrameIndex GELF I 0 8
FrameIndex GELF J 0 9
FrameIndex GELF K 0 10
FrameIndex GELF L 0 11
FrameIndex GELF M 0 12
// Hit
FrameIndex GELH A 0 14
FrameIndex GELH B 0 15
FrameIndex GELH C 0 16
FrameIndex GELH D 0 17
FrameIndex GELH E 0 18
FrameIndex GELH F 0 19
FrameIndex GELH G 0 20
FrameIndex GELH H 0 21
FrameIndex GELH I 0 22
FrameIndex GELH J 0 23
// Drip
FrameIndex GELD A 0 24
FrameIndex GELD B 0 25
FrameIndex GELD C 0 26
FrameIndex GELD D 0 27
FrameIndex GELD E 0 28
FrameIndex GELD F 0 29
FrameIndex GELD G 0 30
FrameIndex GELD H 0 31
FrameIndex GELD I 0 32
FrameIndex GELD J 0 33
FrameIndex GELD K 0 34
FrameIndex GELD L 0 35
FrameIndex GELD M 0 36
// Slide
FrameIndex GELS A 0 37
FrameIndex GELS B 0 38
FrameIndex GELS C 0 39
FrameIndex GELS D 0 40
FrameIndex GELS E 0 41
FrameIndex GELS F 0 42
FrameIndex GELS G 0 43
// Shrivel
FrameIndex GELX A 0 44
FrameIndex GELX B 0 45
FrameIndex GELX C 0 46
FrameIndex GELX D 0 47
FrameIndex GELX E 0 48
FrameIndex GELX F 0 49
FrameIndex GELX G 0 50
FrameIndex GELX H 0 51
FrameIndex GELX I 0 52
FrameIndex GELX J 0 53
FrameIndex GELX K 0 54
FrameIndex GELX L 0 55
}
Model "BioGlob"
{
Path "models"
Model 0 "BioGelm_d.3d"
Skin 0 "Jgreen.png"
Scale 0.08 0.096 0.08
RollOffset 90
USEACTORPITCH
USEACTORROLL
// Flying
FrameIndex GELF A 0 0
FrameIndex GELF B 0 1
FrameIndex GELF C 0 2
FrameIndex GELF D 0 3
FrameIndex GELF E 0 4
FrameIndex GELF F 0 5
FrameIndex GELF G 0 6
FrameIndex GELF H 0 7
FrameIndex GELF I 0 8
FrameIndex GELF J 0 9
FrameIndex GELF K 0 10
FrameIndex GELF L 0 11
FrameIndex GELF M 0 12
// Hit
FrameIndex GELH A 0 14
FrameIndex GELH B 0 15
FrameIndex GELH C 0 16
FrameIndex GELH D 0 17
FrameIndex GELH E 0 18
FrameIndex GELH F 0 19
FrameIndex GELH G 0 20
FrameIndex GELH H 0 21
FrameIndex GELH I 0 22
FrameIndex GELH J 0 23
// Drip
FrameIndex GELD A 0 24
FrameIndex GELD B 0 25
FrameIndex GELD C 0 26
FrameIndex GELD D 0 27
FrameIndex GELD E 0 28
FrameIndex GELD F 0 29
FrameIndex GELD G 0 30
FrameIndex GELD H 0 31
FrameIndex GELD I 0 32
FrameIndex GELD J 0 33
FrameIndex GELD K 0 34
FrameIndex GELD L 0 35
FrameIndex GELD M 0 36
// Slide
FrameIndex GELS A 0 37
FrameIndex GELS B 0 38
FrameIndex GELS C 0 39
FrameIndex GELS D 0 40
FrameIndex GELS E 0 41
FrameIndex GELS F 0 42
FrameIndex GELS G 0 43
// Shrivel
FrameIndex GELX A 0 44
FrameIndex GELX B 0 45
FrameIndex GELX C 0 46
FrameIndex GELX D 0 47
FrameIndex GELX E 0 48
FrameIndex GELX F 0 49
FrameIndex GELX G 0 50
FrameIndex GELX H 0 51
FrameIndex GELX I 0 52
FrameIndex GELX J 0 53
FrameIndex GELX K 0 54
FrameIndex GELX L 0 55
}
Model "BioRifle"
{
Path "models"
Model 1 "BRifle2Pick_d.3d"
Skin 1 "JBRifle2.png"
Scale -0.1 0.12 0.1
PitchOffset 90
AngleOffset 270
ZOffset 12
ROTATING
FrameIndex BIOP A 1 0
}
Model "BioRifle"
{
Path "models"
Model 1 "BRifle2Pick_d.3d"
Skin 1 "JBRifle2.png"
Scale -0.1 0.12 0.1
PitchOffset 90
AngleOffset 270
ZOffset 10
FrameIndex BIOP B 1 0
}
Model "BioRifle"
{
Path "models"
Model 0 "BRifle2_d.3d"
SurfaceSkin 0 0 "JBRifle21.png"
SurfaceSkin 0 1 "JBRifle22.png"
SurfaceSkin 0 2 "JBRifle23.png"
SurfaceSkin 0 3 "JBRifle24.png"
RollOffset -8.4375
PitchOffset 94.21875
Scale 0.125 0.06 0.125
Offset 9.8 -17.6 -10.4
// select
FrameIndex BIOS A 0 0
FrameIndex BIOS B 0 1
FrameIndex BIOS C 0 2
FrameIndex BIOS D 0 3
FrameIndex BIOS E 0 4
FrameIndex BIOS F 0 5
FrameIndex BIOS G 0 6
FrameIndex BIOS H 0 7
FrameIndex BIOS I 0 8
FrameIndex BIOS J 0 9
FrameIndex BIOS K 0 10
FrameIndex BIOS L 0 11
FrameIndex BIOS M 0 12
FrameIndex BIOS N 0 13
FrameIndex BIOS O 0 14
FrameIndex BIOS P 0 15
FrameIndex BIOS Q 0 16
FrameIndex BIOS R 0 17
FrameIndex BIOS S 0 18
FrameIndex BIOS T 0 19
FrameIndex BIOS U 0 20
FrameIndex BIOS V 0 21
// idle
FrameIndex BIOI A 0 22
// charging
FrameIndex BIOC A 0 41
FrameIndex BIOC B 0 42
FrameIndex BIOC C 0 43
FrameIndex BIOC D 0 44
FrameIndex BIOC E 0 45
FrameIndex BIOC F 0 46
FrameIndex BIOC G 0 47
FrameIndex BIOC H 0 48
FrameIndex BIOC I 0 49
FrameIndex BIOC J 0 50
FrameIndex BIOC K 0 51
FrameIndex BIOC L 0 52
FrameIndex BIOC M 0 53
FrameIndex BIOC N 0 54
FrameIndex BIOC O 0 55
FrameIndex BIOC P 0 56
FrameIndex BIOC Q 0 57
FrameIndex BIOC R 0 58
FrameIndex BIOC S 0 59
FrameIndex BIOC T 0 60
FrameIndex BIOC U 0 61
FrameIndex BIOC V 0 62
FrameIndex BIOC W 0 63
FrameIndex BIOC X 0 64
FrameIndex BIOC Y 0 65
FrameIndex BIOC Z 0 66
FrameIndex BIC2 A 0 67
FrameIndex BIC2 B 0 68
FrameIndex BIC2 C 0 69
FrameIndex BIC2 D 0 70
FrameIndex BIC2 E 0 71
// full
FrameIndex BIOM A 0 70
// empty
FrameIndex BIOE A 0 71
// fire
FrameIndex BIOF A 0 72
FrameIndex BIOF B 0 73
FrameIndex BIOF C 0 74
FrameIndex BIOF D 0 75
FrameIndex BIOF E 0 76
FrameIndex BIOF F 0 77
FrameIndex BIOF G 0 78
FrameIndex BIOF H 0 79
FrameIndex BIOF I 0 80
// deselect
FrameIndex BIOD A 0 80
FrameIndex BIOD B 0 81
FrameIndex BIOD C 0 82
FrameIndex BIOD D 0 83
FrameIndex BIOD E 0 84
FrameIndex BIOD F 0 85
FrameIndex BIOD G 0 86
FrameIndex BIOD H 0 87
FrameIndex BIOD I 0 88
FrameIndex BIOD J 0 89
}

21
modeldef.impact Normal file
View file

@ -0,0 +1,21 @@
Model "ImpactHammer"
{
Path "models"
Model 1 "ImpPick_d.3d"
Skin 1 "JImpPick1.png"
Scale -0.24 0.2 0.2
ZOffset 12
ROTATING
FrameIndex IMPP A 1 0
}
Model "ImpactHammer"
{
Path "models"
Model 1 "ImpPick_d.3d"
Skin 1 "JImpPick1.png"
Scale -0.24 0.2 0.2
ZOffset 6
FrameIndex IMPP B 1 0
}

39
modeldef.minigun Normal file
View file

@ -0,0 +1,39 @@
Model "MiniAmmo"
{
Path "models"
Model 0 "MiniAmmom_d.3d"
Skin 0 "JM21.png"
Offset 2 0 8
PitchOffset 90
AngleOffset 90
Scale 0.12 -0.134 0.12
FrameIndex MAMO A 0 0
}
Model "Minigun"
{
Path "models"
Model 1 "MinigunPick_d.3d"
Skin 1 "Mini_t.png"
Scale -0.2 0.24 0.2
PitchOffset 90
AngleOffset 270
ZOffset 12
ROTATING
FrameIndex MGNP A 1 0
}
Model "Minigun"
{
Path "models"
Model 1 "MinigunPick_d.3d"
Skin 1 "Mini_t.png"
Scale -0.2 0.24 0.2
PitchOffset 90
AngleOffset 270
ZOffset 6
FrameIndex MGNP B 1 0
}

323
modeldef.misc Normal file
View file

@ -0,0 +1,323 @@
Model "UTTeleportFog"
{
Path "models"
Model 0 "Tele2_d.3d"
Skin 0 "JTele2_01.png"
Scale 0.24 0.2 0.2
PitchOffset 90
ZOffset 10
DONTCULLBACKFACES
FrameIndex TELE A 0 0
FrameIndex TELE B 0 2
FrameIndex TELE C 0 4
FrameIndex TELE D 0 6
FrameIndex TELE E 0 8
FrameIndex TELE F 0 10
FrameIndex TELE G 0 12
FrameIndex TELE H 0 14
FrameIndex TELE I 0 16
FrameIndex TELE J 0 18
FrameIndex TELE K 0 20
FrameIndex TELE L 0 22
FrameIndex TELE M 0 24
FrameIndex TELE N 0 26
FrameIndex TELE O 0 28
FrameIndex TELE P 0 30
FrameIndex TELE Q 0 32
FrameIndex TELE R 0 34
FrameIndex TELE S 0 36
FrameIndex TELE T 0 38
FrameIndex TELE U 0 40
FrameIndex TELE V 0 42
FrameIndex TELE W 0 44
FrameIndex TELE X 0 46
FrameIndex TELE Y 0 48
FrameIndex TELE Z 0 50
FrameIndex TEL2 A 0 52
FrameIndex TEL2 B 0 54
FrameIndex TEL2 C 0 56
FrameIndex TEL2 D 0 58
FrameIndex TEL2 E 0 60
FrameIndex TEL2 F 0 62
FrameIndex TEL2 G 0 64
FrameIndex TEL2 H 0 66
FrameIndex TEL2 I 0 68
}
Model "UTHealthPack"
{
Path "models"
Model 0 "hbox_d.3d"
SurfaceSkin 0 0 "jhbox1.png"
SurfaceSkin 0 1 "FIZZHP00"
Scale -0.2 0.2 0.2
AngleOffset 90
ZOffset 14
FrameIndex HBOX A 0 0
}
Model "UTHealthBox"
{
Path "models"
Model 0 "hboxbeta_d.3d"
SurfaceSkin 0 0 "jhboxbeta1.png"
SurfaceSkin 0 1 "FIZZHP10"
SurfaceSkin 0 2 "FIZZHP10"
Scale -0.096 0.08 0.08
PitchOffset 90
ZOffset 4
FrameIndex HBOX B 0 0
}
Model "UTMedBox"
{
Path "models"
Model 0 "MedBox_d.3d"
SurfaceSkin 0 0 "JMedBox1.png"
SurfaceSkin 0 1 "FIZZHP10"
Scale -0.072 0.06 0.06
PitchOffset 90
ZOffset 5
FrameIndex HBOX C 0 0
}
Model "UTHealthBonus"
{
Path "models"
Model 0 "Vial_d.3d"
SurfaceSkin 0 0 "JVial0.png"
SurfaceSkin 0 1 "FIZZHP20"
SurfaceSkin 0 2 "FIZZHP20"
Scale -0.048 0.04 0.04
PitchOffset 90
ZOffset 8
DONTCULLBACKFACES
FrameIndex VIAL A 0 0
}
Model "UTArmorBonus"
{
Path "models"
Model 0 "bossheadm_d.3d"
Skin 0 "bossheadT.png"
Scale -0.072 0.072 0.06
AngleOffset 180
PitchOffset 110
ZOffset 6
FrameIndex XANH A 0 0
}
Model "UTThighPads"
{
Path "models"
Model 0 "ThighPads_d.3d"
Skin 0 "JThighPads_01.png"
Scale -0.096 0.08 0.08
PitchOffset 90
ZOffset 12
ROTATING
FrameIndex THIG A 0 0
}
Model "UTBodyArmor"
{
Path "models"
Model 0 "Armor2M_d.3d"
Skin 0 "Jarmor2.png"
Scale -0.134 0.134 0.12
PitchOffset 90
ZOffset 12
FrameIndex UARM A 0 0
}
Model "UTShieldBelt"
{
Path "models"
Model 0 "ShieldBeltMeshM_d.3d"
Skin 0 "AUbelt1.png"
Scale -0.12 0.1 0.1
AngleOffset 180
PitchOffset 90
ZOffset 4
FrameIndex BELT A 0 0
}
Model "UDamage"
{
Path "models"
Model 0 "UDamage_d.3d"
Skin 0 "GoldSkin2.png"
Scale 0.192 0.16 0.16
PitchOffset 90
ZOffset 24
ROTATING
FrameIndex UDAM A 0 0
}
Model "UDamage"
{
Path "models"
Model 1 "UDamageB_d.3d"
Skin 1 "Judamage1.png"
Scale 0.192 0.16 0.16
PitchOffset 90
ZOffset 24
ROTATING
FrameIndex UDAM B 1 0
}
Model "UTRedSkull"
{
Path "models"
Model 0 "RelicSkull_d.3d"
Skin 0 "JRelicSkull_01r.png"
Scale 0.12 0.1 0.1
PitchOffset 90
ZOffset 12
ROTATING
FrameIndex USKL A 0 15
}
Model "UTGoldSkull"
{
Path "models"
Model 0 "RelicSkull_d.3d"
Skin 0 "JRelicSkull_01g.png"
Scale 0.12 0.1 0.1
PitchOffset 90
ZOffset 12
ROTATING
FrameIndex USKL B 0 15
}
Model "UTBlueSkull"
{
Path "models"
Model 0 "RelicSkull_d.3d"
Skin 0 "JRelicSkull_01b.png"
Scale 0.12 0.1 0.1
PitchOffset 90
ZOffset 12
ROTATING
FrameIndex USKL C 0 15
}
Model "UTRedKey"
{
Path "models"
Model 0 "DomR_d.3d"
Skin 0 "RedSkin2.png"
Scale 0.048 0.04 0.04
PitchOffset 90
ZOffset 16
ROTATING
FrameIndex UKEY A 0 0
}
Model "UTGoldKey"
{
Path "models"
Model 0 "MercSymbol_d.3d"
Skin 0 "GoldSkin2.png"
Scale 0.096 0.08 0.08
PitchOffset 90
ZOffset 16
ROTATING
FrameIndex UKEY B 0 0
}
Model "UTBlueKey"
{
Path "models"
Model 0 "DomB_d.3d"
Skin 0 "BlueSkin2.png"
Scale 0.048 0.04 0.04
PitchOffset 90
ZOffset 16
ROTATING
FrameIndex UKEY C 0 0
}
Model "UTBackpack"
{
Path "models"
Model 0 "Backpack2_d.3d" // cheaply edited out of SelectionMale1 (offsets weren't even readjusted)
Skin 0 "bpak.png"
Offset -20 12 -16
Scale -0.36 0.3 0.3
ROTATING
FrameIndex BPAK A 0 0
}
Model "UTInvisibility"
{
Path "models"
Model 0 "invis2M_d.3d"
SurfaceSkin 0 0 "jinvis.png"
Scale -0.12 0.1 0.1
PitchOffset 90
ZOffset 9
FrameIndex INVS A 0 0
}
Model "UTInvisibilityX"
{
Path "models"
Model 0 "invis2M_d.3d"
SurfaceSkin 0 1 "invis00"
Scale -0.12 0.1 0.1
PitchOffset 90
ZOffset 9
FrameIndex INVS A 0 0
}
Model "UTMapRevealer"
{
Path "models"
Model 0 "TranslatorMesh_d.3d"
Skin 0 "JTranslator1.png"
Scale -0.096 0.08 0.08
PitchOffset 90
ZOffset 4
FrameIndex TRNS A 0 0
}
Model "ShieldingSuit"
{
Path "models"
Model 0 "ToxSuit_d.3d"
Skin 0 "ShieldSuit.png"
Scale -0.12 0.12 0.134
PitchOffset 180
ZOffset 24
ROTATING
FrameIndex SSUT A 0 0
}
Model "Searchlight"
{
Path "models"
Model 0 "BigFlash_d.3d"
Skin 0 "JBigFlash1.png"
Scale -0.084 0.084 0.07
PitchOffset 90
AngleOffset 180
ZOffset 9
FrameIndex SLIT A 0 0
}

254
modeldef.pulse Normal file
View file

@ -0,0 +1,254 @@
Model "PulseAmmo"
{
Path "models"
Model 0 "PAmmo_d.3d"
Skin 0 "JPammo_01.png"
Scale -0.072 0.06 0.06
PitchOffset 90
ZOffset 6
FrameIndex PAMO A 0 0
}
Model "PulseGun"
{
Path "models"
Model 1 "PulsePickup_d.3d"
Skin 1 "JPulsePickup_01.png"
AngleOffset 270
PitchOffset 90
Scale -0.16 0.192 0.16
ZOffset 12
ROTATING
FrameIndex PGNP A 1 0
}
Model "PulseGun"
{
Path "models"
Model 1 "PulsePickup_d.3d"
Skin 1 "JPulsePickup_01.png"
AngleOffset 270
PitchOffset 90
Scale -0.16 0.192 0.16
ZOffset 8
FrameIndex PGNP B 1 0
}
Model "PulseGun"
{
Path "models"
Model 2 "Flat_d.3d"
Skin 2 "MuzzyPulse.png"
PitchOffset 90
Scale 0.08 0.08 0.08
Offset 8.5 -25.0 -4.5
FrameIndex PMUZ A 0 0
}
Model "PulseGun"
{
Path "models"
Model 0 "PulseGunR_d.3d"
SurfaceSkin 0 0 "AmmoLedBase.png"
SurfaceSkin 0 1 "JPulseGun_02.png"
SurfaceSkin 0 2 "JPulseGun_03.png"
PitchOffset 90
Scale 0.26 0.195 0.26
Offset 0.0 -7.5 -8.0
// Select
FrameIndex PGNS A 0 2
FrameIndex PGNS B 0 3
FrameIndex PGNS C 0 4
FrameIndex PGNS D 0 5
FrameIndex PGNS E 0 6
FrameIndex PGNS F 0 7
FrameIndex PGNS G 0 8
FrameIndex PGNS H 0 9
FrameIndex PGNS I 0 10
FrameIndex PGNS J 0 11
FrameIndex PGNS K 0 12
FrameIndex PGNS L 0 13
FrameIndex PGNS M 0 14
FrameIndex PGNS N 0 15
FrameIndex PGNS O 0 16
FrameIndex PGNS P 0 17
FrameIndex PGNS Q 0 18
FrameIndex PGNS R 0 19
FrameIndex PGNS S 0 20
FrameIndex PGNS T 0 21
FrameIndex PGNS U 0 22
FrameIndex PGNS V 0 23
FrameIndex PGNS W 0 24
// Cooldown
FrameIndex PGNC A 0 40
FrameIndex PGNC B 0 41
FrameIndex PGNC C 0 42
FrameIndex PGNC D 0 43
FrameIndex PGNC E 0 44
FrameIndex PGNC F 0 45
FrameIndex PGNC G 0 46
FrameIndex PGNC H 0 47
FrameIndex PGNC I 0 48
FrameIndex PGNC J 0 49
FrameIndex PGNC K 0 50
FrameIndex PGNC L 0 51
FrameIndex PGNC M 0 52
FrameIndex PGNC N 0 53
FrameIndex PGNC O 0 54
FrameIndex PGNC P 0 55
FrameIndex PGNC Q 0 56
FrameIndex PGNC R 0 57
FrameIndex PGNC S 0 58
FrameIndex PGNC T 0 59
FrameIndex PGNC U 0 60
FrameIndex PGNC V 0 61
FrameIndex PGNC W 0 62
FrameIndex PGNC X 0 63
FrameIndex PGNC Y 0 64
// Reload
FrameIndex PGNR A 0 65
FrameIndex PGNR B 0 66
FrameIndex PGNR C 0 67
FrameIndex PGNR D 0 68
FrameIndex PGNR E 0 69
FrameIndex PGNR F 0 70
FrameIndex PGNR G 0 71
FrameIndex PGNR H 0 72
FrameIndex PGNR I 0 73
FrameIndex PGNR J 0 74
FrameIndex PGNR K 0 75
FrameIndex PGNR L 0 76
FrameIndex PGNR M 0 77
FrameIndex PGNR N 0 78
FrameIndex PGNR O 0 79
FrameIndex PGNR P 0 80
FrameIndex PGNR Q 0 81
FrameIndex PGNR R 0 82
FrameIndex PGNR S 0 83
FrameIndex PGNR T 0 84
FrameIndex PGNR U 0 85
FrameIndex PGNR V 0 86
FrameIndex PGNR W 0 87
FrameIndex PGNR X 0 88
FrameIndex PGNR Y 0 89
FrameIndex PGNR Z 0 90
FrameIndex PGR2 A 0 91
FrameIndex PGR2 B 0 92
FrameIndex PGR2 C 0 93
FrameIndex PGR2 D 0 94
FrameIndex PGR2 E 0 95
FrameIndex PGR2 F 0 96
FrameIndex PGR2 G 0 97
FrameIndex PGR2 H 0 98
FrameIndex PGR2 I 0 99
FrameIndex PGR2 J 0 100
FrameIndex PGR2 K 0 101
FrameIndex PGR2 L 0 102
FrameIndex PGR2 M 0 103
FrameIndex PGR2 N 0 104
FrameIndex PGR2 O 0 105
FrameIndex PGR2 P 0 106
FrameIndex PGR2 Q 0 107
FrameIndex PGR2 R 0 108
FrameIndex PGR2 S 0 109
FrameIndex PGR2 T 0 110
FrameIndex PGR2 U 0 111
FrameIndex PGR2 V 0 112
FrameIndex PGR2 W 0 113
FrameIndex PGR2 X 0 114
// Bolt Start
FrameIndex PGBS A 0 115
FrameIndex PGBS B 0 116
FrameIndex PGBS C 0 117
FrameIndex PGBS D 0 118
FrameIndex PGBS E 0 119
// Bolt Loop
FrameIndex PGBL A 0 120
FrameIndex PGBL B 0 121
FrameIndex PGBL C 0 122
FrameIndex PGBL D 0 123
FrameIndex PGBL E 0 124
FrameIndex PGBL F 0 125
FrameIndex PGBL G 0 126
FrameIndex PGBL H 0 127
FrameIndex PGBL I 0 128
FrameIndex PGBL J 0 129
// Bolt End
FrameIndex PGBE A 0 130
FrameIndex PGBE B 0 131
FrameIndex PGBE C 0 132
FrameIndex PGBE D 0 133
FrameIndex PGBE E 0 134
// Idle
FrameIndex PGNI A 0 135
FrameIndex PGNI B 0 138
FrameIndex PGNI C 0 141
FrameIndex PGNI D 0 144
FrameIndex PGNI E 0 147
FrameIndex PGNI F 0 150
FrameIndex PGNI G 0 153
FrameIndex PGNI H 0 156
FrameIndex PGNI I 0 159
FrameIndex PGNI J 0 162
FrameIndex PGNI K 0 165
FrameIndex PGNI L 0 168
FrameIndex PGNI M 0 171
FrameIndex PGNI N 0 174
FrameIndex PGNI O 0 177
FrameIndex PGNI P 0 180
FrameIndex PGNI Q 0 183
FrameIndex PGNI R 0 186
FrameIndex PGNI S 0 189
FrameIndex PGNI T 0 192
FrameIndex PGNI U 0 195
FrameIndex PGNI V 0 198
FrameIndex PGNI W 0 201
FrameIndex PGNI X 0 204
FrameIndex PGNI Y 0 207
FrameIndex PGNI Z 0 210
// Fire Loop
FrameIndex PGNF A 0 215
FrameIndex PGNF B 0 216
FrameIndex PGNF C 0 217
FrameIndex PGNF D 0 218
FrameIndex PGNF E 0 219
FrameIndex PGNF F 0 220
FrameIndex PGNF G 0 221
FrameIndex PGNF H 0 222
FrameIndex PGNF I 0 223
FrameIndex PGNF J 0 224
FrameIndex PGNF K 0 225
FrameIndex PGNF L 0 226
FrameIndex PGNF M 0 227
FrameIndex PGNF N 0 228
FrameIndex PGNF O 0 229
FrameIndex PGNF P 0 230
FrameIndex PGNF Q 0 231
FrameIndex PGNF R 0 232
FrameIndex PGNF S 0 233
FrameIndex PGNF T 0 234
FrameIndex PGNF U 0 235
FrameIndex PGNF V 0 236
FrameIndex PGNF W 0 237
FrameIndex PGNF X 0 238
FrameIndex PGNF Y 0 239
FrameIndex PGNF Z 0 240
FrameIndex PGF2 A 0 241
FrameIndex PGF2 B 0 242
FrameIndex PGF2 C 0 243
FrameIndex PGF2 D 0 244
FrameIndex PGF2 E 0 245
FrameIndex PGF2 F 0 246
FrameIndex PGF2 G 0 247
FrameIndex PGF2 H 0 248
FrameIndex PGF2 I 0 249
FrameIndex PGF2 J 0 250
FrameIndex PGF2 K 0 251
FrameIndex PGF2 L 0 252
FrameIndex PGF2 M 0 253
FrameIndex PGF2 N 0 254
}

50
modeldef.rifle Normal file
View file

@ -0,0 +1,50 @@
Model "RifleAmmo"
{
Path "models"
Model 0 "BulletBoxM_d.3d"
Skin 0 "BulletBoxT.png"
Scale -0.084 0.07 0.07
PitchOffset 90
AngleOffset 180
ZOffset 3
FrameIndex SBOX A 0 0
}
Model "RifleAmmo2"
{
Path "models"
Model 0 "RifleRoundM_d.3d"
Skin 0 "RifleR1.png"
Scale -0.024 0.02 0.02
PitchOffset 90
ZOffset 4
FrameIndex SRND A 0 0
}
Model "SniperRifle"
{
Path "models"
Model 1 "RiflePick_d.3d"
Skin 1 "JRifle2.png"
Scale -0.2 0.24 0.2
PitchOffset 90
AngleOffset 270
ZOffset 12
ROTATING
FrameIndex SRFP A 1 0
}
Model "SniperRifle"
{
Path "models"
Model 1 "RiflePick_d.3d"
Skin 1 "JRifle2.png"
Scale -0.2 0.24 0.2
PitchOffset 90
AngleOffset 270
ZOffset 6
FrameIndex SRFP B 1 0
}

35
modeldef.ripper Normal file
View file

@ -0,0 +1,35 @@
Model "RipperAmmo"
{
Path "models"
Model 0 "BladeHopperM_d.3d"
Skin 0 "BladeHopperT.png"
PitchOffset 90
Scale -0.12 0.1 0.1
ZOffset 10
FrameIndex BHOP A 0 0
}
Model "Ripper2"
{
Path "models"
Model 1 "RazPick2_d.3d"
Skin 1 "JRazorw.png"
Scale -0.24 0.2 0.2
PitchOffset 90
ZOffset 12
ROTATING
FrameIndex RZRP A 1 0
}
Model "Ripper2"
{
Path "models"
Model 1 "RazPick2_d.3d"
Skin 1 "JRazorw.png"
Scale -0.24 0.2 0.2
PitchOffset 90
ZOffset 6
FrameIndex RZRP B 1 0
}

305
modeldef.shock Normal file
View file

@ -0,0 +1,305 @@
Model "ShockAmmo"
{
Path "models"
Model 0 "ShockCoreM_d.3d"
Skin 0 "JShockCore.png"
PitchOffset 90
Scale -0.132 0.11 0.11
ZOffset 12
FrameIndex SHOA A 0 0
}
Model "EnhancedShockAmmo"
{
Path "models"
Model 0 "ShockCoreM_d.3d"
Skin 0 "JSShockCore.png"
PitchOffset 90
Scale -0.132 0.11 0.11
ZOffset 12
FrameIndex SHOA A 0 0
}
Model "ShockRifleWave"
{
Path "models"
Model 0 "shockrwm_d.3d"
Skin 0 "shocktt1.png"
FrameIndex SWAV A 0 0
FrameIndex SWAV B 0 1
}
Model "SuperShockRifleWave"
{
Path "models"
Model 0 "shockrwm_d.3d"
Skin 0 "sshocktt1.png"
FrameIndex SWAV A 0 0
FrameIndex SWAV B 0 1
}
Model "ShockBeamRing"
{
Path "models"
Model 0 "utringex_d.3d"
Skin 0 "asaring.png"
DONTCULLBACKFACES
USEACTORPITCH
USEACTORROLL
Scale 1.2 1.0 1.0
FrameIndex SRNG A 0 0
FrameIndex SRNG B 0 1
FrameIndex SRNG C 0 2
FrameIndex SRNG D 0 3
FrameIndex SRNG E 0 4
FrameIndex SRNG F 0 5
FrameIndex SRNG G 0 6
FrameIndex SRNG H 0 7
FrameIndex SRNG I 0 8
}
Model "SuperShockBeamRing"
{
Path "models"
Model 0 "utringex_d.3d"
Skin 0 "ASasRing.png"
DONTCULLBACKFACES
USEACTORPITCH
USEACTORROLL
Scale 1.2 1.0 1.0
FrameIndex SRNG A 0 0
FrameIndex SRNG B 0 1
FrameIndex SRNG C 0 2
FrameIndex SRNG D 0 3
FrameIndex SRNG E 0 4
FrameIndex SRNG F 0 5
FrameIndex SRNG G 0 6
FrameIndex SRNG H 0 7
FrameIndex SRNG I 0 8
}
Model "ShockBlastRing"
{
Path "models"
Model 0 "utringex_d.3d"
Skin 0 "ppurplering.png"
DONTCULLBACKFACES
USEACTORPITCH
USEACTORROLL
Scale 1.2 1.0 1.0
FrameIndex SRNG A 0 0
FrameIndex SRNG B 0 1
FrameIndex SRNG C 0 2
FrameIndex SRNG D 0 3
FrameIndex SRNG E 0 4
FrameIndex SRNG F 0 5
FrameIndex SRNG G 0 6
FrameIndex SRNG H 0 7
FrameIndex SRNG I 0 8
}
Model "SuperShockBlastRing"
{
Path "models"
Model 0 "utringex_d.3d"
Skin 0 "ASasRing.png"
DONTCULLBACKFACES
USEACTORPITCH
USEACTORROLL
Scale 1.2 1.0 1.0
FrameIndex SRNG A 0 0
FrameIndex SRNG B 0 1
FrameIndex SRNG C 0 2
FrameIndex SRNG D 0 3
FrameIndex SRNG E 0 4
FrameIndex SRNG F 0 5
FrameIndex SRNG G 0 6
FrameIndex SRNG H 0 7
FrameIndex SRNG I 0 8
}
Model "ShockRifle"
{
Path "models"
Model 1 "asmd2pick_d.3d"
Skin 1 "asmd_t.png"
AngleOffset 270
PitchOffset 90
Scale -0.14 0.18 0.14
ZOffset 12
ROTATING
FrameIndex ASMP A 1 0
}
Model "ShockRifle"
{
Path "models"
Model 1 "asmd2pick_d.3d"
Skin 1 "asmd_t.png"
AngleOffset 270
PitchOffset 90
Scale -0.14 0.18 0.14
ZOffset 4
FrameIndex ASMP B 1 0
}
Model "ShockRifle"
{
Path "models"
Model 0 "asmd2m_d.3d"
SurfaceSkin 0 0 "asmd_t1.png"
SurfaceSkin 0 1 "asmd_t2.png"
SurfaceSkin 0 2 "asmd_t3.png"
SurfaceSkin 0 3 "asmd_t3.png"
SurfaceSkin 0 4 "asmd_t4.png"
PitchOffset 90
Scale 0.15 0.12 0.15
Offset 4.9 -16.6 -7.1
// select
FrameIndex ASMS A 0 0
FrameIndex ASMS B 0 1
FrameIndex ASMS C 0 2
FrameIndex ASMS D 0 3
FrameIndex ASMS E 0 4
FrameIndex ASMS F 0 5
FrameIndex ASMS G 0 6
FrameIndex ASMS H 0 7
FrameIndex ASMS I 0 8
FrameIndex ASMS J 0 9
FrameIndex ASMS K 0 10
FrameIndex ASMS L 0 11
FrameIndex ASMS M 0 12
FrameIndex ASMS N 0 13
FrameIndex ASMS O 0 14
// idle
FrameIndex ASMI A 0 15
// deselect
FrameIndex ASMD A 0 17
FrameIndex ASMD B 0 18
FrameIndex ASMD C 0 19
FrameIndex ASMD D 0 20
FrameIndex ASMD E 0 21
FrameIndex ASMD F 0 22
FrameIndex ASMD G 0 23
// fire
FrameIndex ASMF A 0 30
FrameIndex ASMF B 0 31
FrameIndex ASMF C 0 32
FrameIndex ASMF D 0 33
FrameIndex ASMF E 0 34
FrameIndex ASMF F 0 35
FrameIndex ASMF G 0 36
FrameIndex ASMF H 0 37
FrameIndex ASMF I 0 38
FrameIndex ASMF J 0 39
// altfire
FrameIndex ASMA A 0 40
FrameIndex ASMA B 0 41
FrameIndex ASMA C 0 42
FrameIndex ASMA D 0 43
FrameIndex ASMA E 0 44
FrameIndex ASMA F 0 45
FrameIndex ASMA G 0 46
FrameIndex ASMA H 0 47
FrameIndex ASMA I 0 48
FrameIndex ASMA J 0 49
}
Model "EnhancedShockRifle"
{
Path "models"
Model 1 "asmd2pick_d.3d"
Skin 1 "sasmd_t.png"
AngleOffset 270
PitchOffset 90
Scale -0.14 0.18 0.14
ZOffset 12
ROTATING
FrameIndex ASMP A 1 0
}
Model "EnhancedShockRifle"
{
Path "models"
Model 1 "asmd2pick_d.3d"
Skin 1 "sasmd_t.png"
AngleOffset 270
PitchOffset 90
Scale -0.14 0.18 0.14
ZOffset 4
FrameIndex ASMP B 1 0
}
Model "EnhancedShockRifle"
{
Path "models"
Model 0 "asmd2m_d.3d"
SurfaceSkin 0 0 "sasmd_t1.png"
SurfaceSkin 0 1 "sasmd_t2.png"
SurfaceSkin 0 2 "sasmd_t3.png"
SurfaceSkin 0 3 "sasmd_t3.png"
SurfaceSkin 0 4 "sasmd_t4.png"
PitchOffset 90
Scale 0.15 0.12 0.15
Offset 4.9 -16.6 -7.1
// select
FrameIndex ASMS A 0 0
FrameIndex ASMS B 0 1
FrameIndex ASMS C 0 2
FrameIndex ASMS D 0 3
FrameIndex ASMS E 0 4
FrameIndex ASMS F 0 5
FrameIndex ASMS G 0 6
FrameIndex ASMS H 0 7
FrameIndex ASMS I 0 8
FrameIndex ASMS J 0 9
FrameIndex ASMS K 0 10
FrameIndex ASMS L 0 11
FrameIndex ASMS M 0 12
FrameIndex ASMS N 0 13
FrameIndex ASMS O 0 14
// idle
FrameIndex ASMI A 0 15
// deselect
FrameIndex ASMD A 0 17
FrameIndex ASMD B 0 18
FrameIndex ASMD C 0 19
FrameIndex ASMD D 0 20
FrameIndex ASMD E 0 21
FrameIndex ASMD F 0 22
FrameIndex ASMD G 0 23
// fire
FrameIndex ASMF A 0 30
FrameIndex ASMF B 0 31
FrameIndex ASMF C 0 32
FrameIndex ASMF D 0 33
FrameIndex ASMF E 0 34
FrameIndex ASMF F 0 35
FrameIndex ASMF G 0 36
FrameIndex ASMF H 0 37
FrameIndex ASMF I 0 38
FrameIndex ASMF J 0 39
// altfire
FrameIndex ASMA A 0 40
FrameIndex ASMA B 0 41
FrameIndex ASMA C 0 42
FrameIndex ASMA D 0 43
FrameIndex ASMA E 0 44
FrameIndex ASMA F 0 45
FrameIndex ASMA G 0 46
FrameIndex ASMA H 0 47
FrameIndex ASMA I 0 48
FrameIndex ASMA J 0 49
}

27
modeldef.transloc Normal file
View file

@ -0,0 +1,27 @@
Model "Translocator"
{
Path "models"
Model 1 "Trans3loc_d.3d"
SurfaceSkin 1 0 "tloc1_.png"
SurfaceSkin 1 1 "tloc2_.png"
Scale -0.0552 0.046 0.046
AngleOffset 180
PitchOffset 90
ZOffset 12
ROTATING
FrameIndex TLCP A 1 0
}
Model "Translocator"
{
Path "models"
Model 1 "Trans3loc_d.3d"
SurfaceSkin 1 0 "tloc1_.png"
SurfaceSkin 1 1 "tloc2_.png"
Scale -0.0552 0.046 0.046
AngleOffset 180
PitchOffset 90
ZOffset 6
FrameIndex TLCP B 1 0
}

File diff suppressed because it is too large Load diff

125
modeldef.warhead Normal file
View file

@ -0,0 +1,125 @@
Model "WarheadAmmo"
{
Path "models"
Model 0 "missile_d.3d"
Skin 0 "jmissile_01_.png"
Scale -0.21 0.2 0.2
PitchOffset 90
ZOffset 21
FrameIndex WMIS A 0 0
}
Model "ShockWave"
{
Path "models"
Model 0 "shockwavem_d.3d"
Skin 0 "shockt1.png"
FrameIndex RWAV A 0 0
FrameIndex RWAV B 0 1
}
Model "WarShell"
{
Path "models"
Model 0 "missile_d.3d"
Skin 0 "jmissile_01.png"
Scale -0.21 0.2 0.2
Offset -13 0 0
AngleOffset 180
USEACTORPITCH
USEACTORROLL
FrameIndex WMIS A 0 0
}
Model "GuidedWarShell"
{
Path "models"
Model 0 "missile_d.3d"
Skin 0 "jmissile_01.png"
Scale -0.21 0.2 0.2
Offset -13 0 0
AngleOffset 180
USEACTORPITCH
USEACTORROLL
FrameIndex WMIS A 0 0
}
Model "WarheadLauncher"
{
Path "models"
Model 1 "whpick_d.3d"
Skin 1 "jwhpick1.png"
Scale -0.2 0.24 0.24
ZOffset 12
AngleOffset 180
ROTATING
FrameIndex RDMP A 1 0
}
Model "WarheadLauncher"
{
Path "models"
Model 1 "whpick_d.3d"
Skin 1 "jwhpick1.png"
Scale -0.2 0.24 0.24
AngleOffset 180
ZOffset 11
FrameIndex RDMP B 1 0
}
Model "WarheadLauncher"
{
Path "models"
Model 0 "warhead_d.3d"
SurfaceSkin 0 0 "jwarhead1.png"
SurfaceSkin 0 1 "jwarhead2.png"
SurfaceSkin 0 2 "jwarhead3.png"
SurfaceSkin 0 3 "jwarhead4.png"
Scale 0.1 0.06 0.1
PitchOffset 2.8125
RollOffset 22.5
Offset 4.5 -7.8 -4.2
// select
FrameIndex WARS A 0 0
FrameIndex WARS B 0 1
FrameIndex WARS C 0 2
FrameIndex WARS D 0 3
FrameIndex WARS E 0 4
FrameIndex WARS F 0 5
FrameIndex WARS G 0 6
FrameIndex WARS H 0 7
FrameIndex WARS I 0 8
FrameIndex WARS J 0 9
FrameIndex WARS K 0 10
FrameIndex WARS L 0 11
FrameIndex WARS M 0 12
FrameIndex WARS N 0 13
FrameIndex WARS O 0 14
// idle
FrameIndex WARI A 0 15
FrameIndex WARI B 0 16
FrameIndex WARI C 0 17
FrameIndex WARI D 0 18
FrameIndex WARI E 0 19
// deselect
FrameIndex WARD A 0 20
FrameIndex WARD B 0 21
FrameIndex WARD C 0 22
FrameIndex WARD D 0 23
FrameIndex WARD E 0 24
FrameIndex WARD F 0 25
FrameIndex WARD G 0 26
// fire
FrameIndex WARF A 0 28
FrameIndex WARF B 0 29
FrameIndex WARF C 0 30
FrameIndex WARF D 0 31
FrameIndex WARF E 0 32
FrameIndex WARF F 0 33
FrameIndex WARF G 0 34
}

BIN
models/ImpPick_a.3d Normal file

Binary file not shown.

BIN
models/ImpPick_d.3d Normal file

Binary file not shown.

BIN
models/ImpactHammer_a.3d Normal file

Binary file not shown.

BIN
models/ImpactHammer_d.3d Normal file

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 75 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Before After
Before After

BIN
models/tloc2_.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

View file

@ -29,12 +29,9 @@ Currently implemented:
- Shielding Suit (hybrid of U1 asbestos/toxin suits, radsuit)
- Searchlight (light amplification visor)
- Enhanced Shock Rifle (slot 4, limited ammo, invulnerability sphere)
In progress:
- UT HUD
To be done:
In progress:
- Impact Hammer (slot 1)
- Chainsaw (slot 1)

40
textcolo.txt Normal file
View file

@ -0,0 +1,40 @@
// Guarantee there's dark variants of team colors (yes, even black and white)
DarkBlack
{
#090909 #282828
Console:
#000000 #191919 0 127
#050505 #282828 128 256
Flat:
#000000
}
DarkPurple
{
#110011 #670067
Console:
#000000 #4F004D 0 127
#800080 #808080 128 256
Flat:
#4C3366
}
DarkOrange
{
#100000 #804000
Console:
#100000 #482000 0 127
#804000 #807F7F 128 256
Flat:
#805500
}
DarkWhite
{
#121212 #808080
Console:
#000000 #404040 0 127
#808080 #808080 128 256
Flat:
#707070
}

View file

@ -0,0 +1,2 @@
Sprite "CSWPA0",1,1{}
Sprite "CSWPB0",1,1{}

View file

@ -1,2 +1,4 @@
Sprite "RPAKA0",1,1{}
Sprite "RCKTA0",1,1{}
Sprite "EBLPA0",1,1{}
Sprite "EBLPB0",1,1{}

View file

@ -1 +1,3 @@
Sprite "ECLPA0",1,1{}
Sprite "ENFPA0",1,1{}
Sprite "ENFPB0",1,1{}

View file

@ -0,0 +1,2 @@
Sprite "IMPPA0",1,1{}
Sprite "IMPPB0",1,1{}

View file

@ -1 +1,3 @@
Sprite "MAMOA0",1,1{}
Sprite "MGNPA0",1,1{}
Sprite "MGNPB0",1,1{}

View file

@ -1 +1,3 @@
Sprite "BHOPA0",1,1{}
Sprite "RZRPA0",1,1{}
Sprite "RZRPB0",1,1{}

View file

@ -1,2 +1,4 @@
Sprite "SBOXA0",1,1{}
Sprite "SRNDA0",1,1{}
Sprite "SRFPA0",1,1{}
Sprite "SRFPB0",1,1{}

View file

@ -0,0 +1,2 @@
Sprite "TLCPA0",1,1{}
Sprite "TLCPB0",1,1{}

View file

@ -1,6 +1,6 @@
GameInfo
{
AddEventHandlers = "RedeemerHUDHandler", "UTMenuHandler"
AddEventHandlers = "RedeemerHUDHandler", "UTMainHandler"
PlayerClasses = "UTPlayer"
StatusBarClass = "UTHud"
BackpackType = "UTBackpack"

View file

@ -1,4 +1,4 @@
Class Tier3Ammo : RandomSpawner replaces Shell
Class Tier3Ammo : RandomSpawner2 replaces Shell
{
Default
{
@ -7,7 +7,7 @@ Class Tier3Ammo : RandomSpawner replaces Shell
}
}
Class Tier3Ammo2 : Tier3Ammo replaces ShellBox {}
Class Tier3Weapon : RandomSpawner replaces Shotgun
Class Tier3Weapon : RandomSpawner2 replaces Shotgun
{
Default
{
@ -26,7 +26,7 @@ Class BioAmmo : UTAmmo
Inventory.Amount 25;
Inventory.MaxAmount 100;
Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 200;
Ammo.BackpackMaxAmount 100;
Ammo.DropAmount 25;
UTAmmo.UsedInSlot AMMO_SLOT3;
}
@ -437,6 +437,7 @@ Class BioRifle : UTWeapon
Inventory.PickupMessage "You got the GES BioRifle.";
Weapon.UpSound "ges/select";
Weapon.SlotNumber 3;
Weapon.SelectionOrder 7;
Weapon.AmmoType "BioAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "BioAmmo";

View file

@ -1,11 +1,20 @@
Class UTChainsaw : Weapon replaces Chainsaw
Class UTChainsaw : UTWeapon replaces Chainsaw
{
Default
{
Tag "Chainsaw";
Inventory.PickupMessage "It's been twenty five years since I've seen one of these."; // was five years in UT99
Weapon.UpSound "";
Weapon.UpSound "chainsaw/select";
Weapon.SlotNumber 1;
Weapon.SelectionOrder 9;
+WEAPON.MELEEWEAPON;
}
States
{
Spawn:
CSWP A -1;
Stop;
CSWP B -1;
Stop;
}
}

View file

@ -7,7 +7,7 @@ Class UTRocketAmmo : UTAmmo
Inventory.Amount 12;
Inventory.MaxAmount 48;
Ammo.BackpackAmount 12;
Ammo.BackpackMaxAmount 96;
Ammo.BackpackMaxAmount 48;
Ammo.DropAmount 12;
UTAmmo.UsedInSlot AMMO_SLOT9;
}
@ -45,10 +45,19 @@ Class UTRocketLauncher : UTWeapon
Inventory.PickupMessage "You got the Rocket Launcher.";
Weapon.UpSound "";
Weapon.SlotNumber 9;
Weapon.SelectionOrder 1;
Weapon.AmmoType "UTRocketAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "UTRocketAmmo";
Weapon.AmmoUse2 1;
Weapon.AmmoGive 6;
}
States
{
Spawn:
EBLP A -1;
Stop;
EBLP B -1;
Stop;
}
}

View file

@ -52,10 +52,19 @@ Class Enforcer : UTWeapon replaces Pistol
Inventory.PickupMessage "You picked up an Enforcer.";
Weapon.UpSound "";
Weapon.SlotNumber 2;
Weapon.SelectionOrder 8;
Weapon.AmmoType "MiniAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "MiniAmmo";
Weapon.AmmoUse2 1;
Weapon.AmmoGive 30;
}
States
{
Spawn:
ENFP A -1;
Stop;
ENFP B -1;
Stop;
}
}

View file

@ -1,4 +1,4 @@
Class Tier5Ammo : RandomSpawner replaces RocketAmmo
Class Tier5Ammo : RandomSpawner2 replaces RocketAmmo
{
Default
{
@ -6,7 +6,7 @@ Class Tier5Ammo : RandomSpawner replaces RocketAmmo
DropItem "UTRocketAmmo2", 255, 1;
}
}
Class Tier5Ammo2 : RandomSpawner replaces RocketBox
Class Tier5Ammo2 : RandomSpawner2 replaces RocketBox
{
Default
{
@ -15,7 +15,7 @@ Class Tier5Ammo2 : RandomSpawner replaces RocketBox
}
}
Class Tier5Weapon : RandomSpawner replaces RocketLauncher
Class Tier5Weapon : RandomSpawner2 replaces RocketLauncher
{
Default
{
@ -33,7 +33,7 @@ Class FlakAmmo : UTAmmo
Inventory.Amount 10;
Inventory.MaxAmount 50;
Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 100;
Ammo.BackpackMaxAmount 50;
Ammo.DropAmount 10;
UTAmmo.UsedInSlot AMMO_SLOT8;
}
@ -456,7 +456,7 @@ Class FlakCannon : UTWeapon
action void A_Loading( bool first = false )
{
if ( first ) A_PlaySound("flak/load",CHAN_WEAPON);
else A_PlaySound("flak/reload",CHAN_WEAPON);
else A_PlaySound("flak/reload",CHAN_5);
}
action void A_FireChunks()
{
@ -531,6 +531,7 @@ Class FlakCannon : UTWeapon
Inventory.PickupMessage "You got the Flak Cannon.";
Weapon.UpSound "flak/select";
Weapon.SlotNumber 8;
Weapon.SelectionOrder 2;
Weapon.AmmoType "FlakAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "FlakAmmo";
@ -564,12 +565,12 @@ Class FlakCannon : UTWeapon
Fire:
FLKF A 1 A_FireChunks();
FLKF BCDEFGHIJ 1;
FLKF JJ 4;
FLKF J 4;
Goto Loading;
AltFire:
FLKA A 1 A_FireSlug();
FLKA BCDEFGHIJK 2;
FLKA KKK 4;
FLKA K 4;
Goto Loading;
Select:
FLKS A 1 A_Raise(int.max);

View file

@ -6,7 +6,16 @@ Class ImpactHammer : UTWeapon replaces Fist
Inventory.PickupMessage "You got the Impact Hammer.";
Weapon.UpSound "";
Weapon.SlotNumber 1;
Weapon.SelectionOrder 9;
+WEAPON.MELEEWEAPON;
+INVENTORY.UNTOSSABLE;
}
States
{
Spawn:
IMPP A -1;
Stop;
IMPP B -1;
Stop;
}
}

View file

@ -1,4 +1,4 @@
Class Tier6Ammo : RandomSpawner replaces Cell
Class Tier6Ammo : RandomSpawner2 replaces Cell
{
Default
{
@ -6,7 +6,7 @@ Class Tier6Ammo : RandomSpawner replaces Cell
DropItem "RifleAmmo2", 255, 1;
}
}
Class Tier6Ammo2 : RandomSpawner replaces CellPack
Class Tier6Ammo2 : RandomSpawner2 replaces CellPack
{
Default
{
@ -15,7 +15,7 @@ Class Tier6Ammo2 : RandomSpawner replaces CellPack
}
}
Class Tier6Weapon : RandomSpawner replaces PlasmaRifle
Class Tier6Weapon : RandomSpawner2 replaces PlasmaRifle
{
Default
{
@ -31,9 +31,9 @@ Class MiniAmmo : UTAmmo
Tag "Large Bullets";
Inventory.PickupMessage "You picked up 50 bullets.";
Inventory.Amount 50;
Inventory.MaxAmount 200;
Inventory.MaxAmount 199;
Ammo.BackpackAmount 100;
Ammo.BackpackMaxAmount 400;
Ammo.BackpackMaxAmount 199;
Ammo.DropAmount 50;
UTAmmo.UsedInSlot AMMO_SLOT2|AMMO_SLOT7;
}
@ -53,10 +53,19 @@ Class Minigun : UTWeapon
Inventory.PickupMessage "You got the Minigun.";
Weapon.UpSound "";
Weapon.SlotNumber 7;
Weapon.SelectionOrder 3;
Weapon.AmmoType "MiniAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "MiniAmmo";
Weapon.AmmoUse2 1;
Weapon.AmmoGive 50;
}
States
{
Spawn:
MGNP A -1;
Stop;
MGNP B -1;
Stop;
}
}

View file

@ -1,4 +1,4 @@
Class Tier4Ammo : RandomSpawner replaces ClipBox
Class Tier4Ammo : RandomSpawner2 replaces ClipBox
{
Default
{
@ -7,7 +7,7 @@ Class Tier4Ammo : RandomSpawner replaces ClipBox
}
}
Class Tier4Weapon : RandomSpawner replaces Chaingun
Class Tier4Weapon : RandomSpawner2 replaces Chaingun
{
Default
{
@ -23,9 +23,9 @@ Class PulseAmmo : UTAmmo
Tag "Pulse Cell";
Inventory.PickupMessage "You picked up a Pulse Cell.";
Inventory.Amount 25;
Inventory.MaxAmount 200;
Inventory.MaxAmount 199;
Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 400;
Ammo.BackpackMaxAmount 199;
Ammo.DropAmount 25;
UTAmmo.UsedInSlot AMMO_SLOT5;
}
@ -422,6 +422,7 @@ Class PulseGun : UTWeapon
Inventory.PickupMessage "You got a Pulse Gun";
Weapon.UpSound "pulse/select";
Weapon.SlotNumber 5;
Weapon.SelectionOrder 5;
Weapon.AmmoType "PulseAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "PulseAmmo";

View file

@ -7,7 +7,7 @@ Class RipperAmmo : UTAmmo
Inventory.Amount 25;
Inventory.MaxAmount 75;
Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 150;
Ammo.BackpackMaxAmount 75;
Ammo.DropAmount 25;
UTAmmo.UsedInSlot AMMO_SLOT6;
}
@ -27,10 +27,19 @@ Class Ripper2 : UTWeapon
Inventory.PickupMessage "You got the Ripper.";
Weapon.UpSound "";
Weapon.SlotNumber 6;
Weapon.SelectionOrder 4;
Weapon.AmmoType "RipperAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "RipperAmmo";
Weapon.AmmoUse2 1;
Weapon.AmmoGive 15;
}
States
{
Spawn:
RZRP A -1;
Stop;
RZRP B -1;
Stop;
}
}

View file

@ -7,7 +7,7 @@ Class ShockAmmo : UTAmmo
Inventory.Amount 10;
Inventory.MaxAmount 50;
Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 100;
Ammo.BackpackMaxAmount 50;
Ammo.DropAmount 10;
UTAmmo.UsedInSlot AMMO_SLOT4;
}
@ -838,6 +838,7 @@ Class ShockRifle : UTWeapon
Inventory.PickupMessage "You got the ASMD Shock Rifle.";
Weapon.UpSound "shock/select";
Weapon.SlotNumber 4;
Weapon.SelectionOrder 6;
Weapon.AmmoType "ShockAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "ShockAmmo";
@ -944,6 +945,7 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
Inventory.PickupMessage "You got an Enhanced Shock Rifle!";
Weapon.UpSound "shock/select";
Weapon.SlotNumber 4;
Weapon.SelectionOrder 6;
+INVENTORY.ALWAYSPICKUP;
Weapon.AmmoType "EnhancedShockAmmo";
Weapon.AmmoUse 1;

View file

@ -7,7 +7,7 @@ Class RifleAmmo : UTAmmo
Inventory.Amount 10;
Inventory.MaxAmount 50;
Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 100;
Ammo.BackpackMaxAmount 50;
Ammo.DropAmount 10;
UTAmmo.UsedInSlot AMMO_SLOT10;
}
@ -44,10 +44,19 @@ Class SniperRifle : UTWeapon
Inventory.PickupMessage "You got the Sniper Rifle.";
Weapon.UpSound "";
Weapon.SlotNumber 0;
Weapon.SelectionOrder 5;
Weapon.AmmoType "RifleAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "RifleAmmo";
Weapon.AmmoUse2 1;
Weapon.AmmoGive 8;
}
States
{
Spawn:
SRFP A -1;
Stop;
SRFP B -1;
Stop;
}
}

View file

@ -5,6 +5,16 @@ Class Translocator : UTWeapon
Tag "Translocator";
Inventory.PickupMessage "You got the Translocator Source Module.";
Weapon.SlotNumber 1;
Weapon.SelectionOrder 10;
+INVENTORY.UNTOSSABLE;
+WEAPON.NO_AUTO_SWITCH;
}
States
{
Spawn:
TLCP A -1;
Stop;
TLCP B -1;
Stop;
}
}

View file

@ -184,21 +184,43 @@ Class UTAmmo : Ammo
}
}
// Random Spawner that passes through dropped status to items
Class RandomSpawner2 : RandomSpawner
{
override void PostSpawn( Actor spawned )
{
if ( !bDROPPED ) return;
if ( spawned is 'Inventory' ) Inventory(spawned).bTOSSED = bDROPPED;
if ( spawned is 'UTWeapon' )
{
spawned.SetState(spawned.ResolveState("Spawn")+1);
Inventory(spawned).bALWAYSPICKUP = true;
}
}
}
Class UTWeapon : Weapon
{
virtual ui void PreRender() {}
virtual ui void PostRender() {}
override Inventory CreateTossable( int amt )
{
if ( Ammo1 && (Ammo1.Amount <= 0) ) return null;
Inventory d = Super.CreateTossable(amt);
if ( d && (d.GetClass() == GetClass()) )
{
d.SetState(d.ResolveState("Spawn")+1);
d.bALWAYSPICKUP = true;
}
return d;
}
override bool SpecialDropAction( Actor dropper )
{
SetState(ResolveState("Spawn")+1);
return true;
bALWAYSPICKUP = true;
return false;
}
override void Tick()
@ -401,12 +423,14 @@ Class UTBlueKey : BlueCard replaces BlueCard
}
}
Class UTMenuHandler : StaticEventHandler
Class UTMainHandler : StaticEventHandler
{
ui TextureID tex;
transient int lastfrag;
override void WorldLoaded( WorldEvent e )
{
lastfrag = int.min;
if ( gamestate != GS_LEVEL || e.IsSaveGame ) return;
if ( level.levelname ~== "Modder Test Map" )
{
@ -439,6 +463,8 @@ Class UTMenuHandler : StaticEventHandler
override void PostUiTick()
{
if ( gametic <= 0 ) StartMenu();
if ( !(StatusBar is 'UTHUD') ) return;
UTHUD(StatusBar).lastfrag = lastfrag;
}
override void RenderOverlay( RenderEvent e )
@ -448,4 +474,10 @@ Class UTMenuHandler : StaticEventHandler
Screen.Dim("Black",1.0,0,0,Screen.GetWidth(),Screen.GetHeight());
Screen.DrawTexture(tex,true,0,0,DTA_VirtualWidth,1024,DTA_VirtualHeight,768);
}
}
override void WorldThingDamaged( WorldEvent e )
{
if ( (e.Thing.Health <= 0) && e.DamageSource && (e.DamageSource != e.Thing) && e.DamageSource.player && (e.DamageSource.player == players[consoleplayer]) )
lastfrag = gametic;
}
}

View file

@ -1,23 +1,465 @@
// An almost 1:1 recreation of the UT HUD, uses player color for tinting
// An almost 1:1 recreation of the UT HUD
// Because this requires some flexibility, it barely makes use of the Statusbar
// functions and instead uses the raw Screen API.
Class ViewTracer : LineTracer
{
Actor ignore;
override ETraceStatus TraceCallback()
{
if ( Results.HitType == TRACE_HitActor )
{
if ( (Results.HitActor == ignore) || !Results.HitActor.player || !Results.HitActor.bSHOOTABLE || Results.HitActor.bINVISIBLE ) return TRACE_Skip;
return TRACE_Stop;
}
else if ( (Results.HitType == TRACE_HitWall) && (Results.Tier == TIER_Middle) )
{
if ( !Results.HitLine.sidedef[1] ) return TRACE_Stop;
return TRACE_Skip;
}
return TRACE_Stop;
}
}
Class UTHud : BaseStatusBar
{
TextureID AmmoBar, Boxes[4], Keys[4], BigNum[12], Flash, Slots[10], Icons[14], Uses[14], Man[5], Woman[5], WeaponBox;
Class<Weapon> IconClasses[14];
double HScale;
Color tintcolor, bgcolor;
double opacity;
int lastfrag, lastpickup, lastslot;
ViewTracer vtracer;
Actor lastseen;
int lastseentic;
// For easier UT Canvas drawing
Color DrawColor, WhiteColor, GoldColor;
double CurX, CurY;
double FracTic;
override void Init()
{
Super.Init();
SetSize(0,1280,960);
SetSize(0,320,200);
vtracer = new("ViewTracer");
// Set defaults
DrawColor = WhiteColor = "White";
GoldColor = "Gold";
// Load textures
AmmoBar = TexMan.CheckForTexture("AmoBar",TexMan.Type_Any);
Boxes[0] = TexMan.CheckForTexture("AmoBox",TexMan.Type_Any);
Boxes[1] = TexMan.CheckForTexture("ArmoBox",TexMan.Type_Any);
Boxes[2] = TexMan.CheckForTexture("HPBox",TexMan.Type_Any);
Boxes[3] = TexMan.CheckForTexture("FragBox",TexMan.Type_Any);
Keys[0] = TexMan.CheckForTexture("RKey",TexMan.Type_Any);
Keys[1] = TexMan.CheckForTexture("BKey",TexMan.Type_Any);
Keys[2] = TexMan.CheckForTexture("GKey",TexMan.Type_Any);
Keys[3] = TexMan.CheckForTexture("Skul",TexMan.Type_Any);
BigNum[0] = TexMan.CheckForTexture("Big0",TexMan.Type_Any);
BigNum[1] = TexMan.CheckForTexture("Big1",TexMan.Type_Any);
BigNum[2] = TexMan.CheckForTexture("Big2",TexMan.Type_Any);
BigNum[3] = TexMan.CheckForTexture("Big3",TexMan.Type_Any);
BigNum[4] = TexMan.CheckForTexture("Big4",TexMan.Type_Any);
BigNum[5] = TexMan.CheckForTexture("Big5",TexMan.Type_Any);
BigNum[6] = TexMan.CheckForTexture("Big6",TexMan.Type_Any);
BigNum[7] = TexMan.CheckForTexture("Big7",TexMan.Type_Any);
BigNum[8] = TexMan.CheckForTexture("Big8",TexMan.Type_Any);
BigNum[9] = TexMan.CheckForTexture("Big9",TexMan.Type_Any);
BigNum[10] = TexMan.CheckForTexture("BigColon",TexMan.Type_Any);
BigNum[11] = TexMan.CheckForTexture("BigMinus",TexMan.Type_Any);
Flash = TexMan.CheckForTexture("HFlash",TexMan.Type_Any);
Slots[0] = TexMan.CheckForTexture("SlotImp",TexMan.Type_Any);
Slots[1] = TexMan.CheckForTexture("SlotAuto",TexMan.Type_Any);
Slots[2] = TexMan.CheckForTexture("SlotBio",TexMan.Type_Any);
Slots[3] = TexMan.CheckForTexture("SlotASMD",TexMan.Type_Any);
Slots[4] = TexMan.CheckForTexture("SlotPuls",TexMan.Type_Any);
Slots[5] = TexMan.CheckForTexture("SlotRip",TexMan.Type_Any);
Slots[6] = TexMan.CheckForTexture("SlotMini",TexMan.Type_Any);
Slots[7] = TexMan.CheckForTexture("SlotFlak",TexMan.Type_Any);
Slots[8] = TexMan.CheckForTexture("Slot8bal",TexMan.Type_Any);
Slots[9] = TexMan.CheckForTexture("SlotRifl",TexMan.Type_Any);
Icons[0] = TexMan.CheckForTexture("IconImp",TexMan.Type_Any);
Icons[1] = TexMan.CheckForTexture("IconAuto",TexMan.Type_Any);
Icons[2] = TexMan.CheckForTexture("IconBio",TexMan.Type_Any);
Icons[3] = TexMan.CheckForTexture("IconASMD",TexMan.Type_Any);
Icons[4] = TexMan.CheckForTexture("IconPuls",TexMan.Type_Any);
Icons[5] = TexMan.CheckForTexture("IconRip",TexMan.Type_Any);
Icons[6] = TexMan.CheckForTexture("IconMini",TexMan.Type_Any);
Icons[7] = TexMan.CheckForTexture("IconFlak",TexMan.Type_Any);
Icons[8] = TexMan.CheckForTexture("Icon8bal",TexMan.Type_Any);
Icons[9] = TexMan.CheckForTexture("IconRifl",TexMan.Type_Any);
Icons[10] = TexMan.CheckForTexture("IconSaw",TexMan.Type_Any);
Icons[11] = TexMan.CheckForTexture("IconTrns",TexMan.Type_Any);
Icons[12] = TexMan.CheckForTexture("IconWarH",TexMan.Type_Any);
Icons[13] = TexMan.CheckForTexture("IconASMD",TexMan.Type_Any);
Uses[0] = TexMan.CheckForTexture("UseImp",TexMan.Type_Any);
Uses[1] = TexMan.CheckForTexture("UseAuto",TexMan.Type_Any);
Uses[2] = TexMan.CheckForTexture("UseBio",TexMan.Type_Any);
Uses[3] = TexMan.CheckForTexture("UseASMD",TexMan.Type_Any);
Uses[4] = TexMan.CheckForTexture("UsePuls",TexMan.Type_Any);
Uses[5] = TexMan.CheckForTexture("UseRip",TexMan.Type_Any);
Uses[6] = TexMan.CheckForTexture("UseMini",TexMan.Type_Any);
Uses[7] = TexMan.CheckForTexture("UseFlak",TexMan.Type_Any);
Uses[8] = TexMan.CheckForTexture("Use8bal",TexMan.Type_Any);
Uses[9] = TexMan.CheckForTexture("UseRifl",TexMan.Type_Any);
Uses[10] = TexMan.CheckForTexture("UseSaw",TexMan.Type_Any);
Uses[11] = TexMan.CheckForTexture("UseTrns",TexMan.Type_Any);
Uses[12] = TexMan.CheckForTexture("UseWarH",TexMan.Type_Any);
Uses[13] = TexMan.CheckForTexture("UseASMD",TexMan.Type_Any);
IconClasses[0] = "ImpactHammer";
IconClasses[1] = "Enforcer";
IconClasses[2] = "BioRifle";
IconClasses[3] = "ShockRifle";
IconClasses[4] = "PulseGun";
IconClasses[5] = "Ripper2";
IconClasses[6] = "Minigun";
IconClasses[7] = "FlakCannon";
IconClasses[8] = "UTRocketLauncher";
IconClasses[9] = "SniperRifle";
IconClasses[10] = "UTChainsaw";
IconClasses[11] = "Translocator";
IconClasses[12] = "WarheadLauncher";
IconClasses[13] = "EnhancedShockRifle";
Man[0] = TexMan.CheckForTexture("Man",TexMan.Type_Any);
Man[1] = TexMan.CheckForTexture("ManArmo",TexMan.Type_Any);
Man[2] = TexMan.CheckForTexture("ManPad",TexMan.Type_Any);
Man[3] = TexMan.CheckForTexture("ManBoot",TexMan.Type_Any);
Man[4] = TexMan.CheckForTexture("ManBelt",TexMan.Type_Any);
Woman[0] = TexMan.CheckForTexture("Woman",TexMan.Type_Any);
Woman[1] = TexMan.CheckForTexture("WomanArm",TexMan.Type_Any);
Woman[2] = TexMan.CheckForTexture("WomanPad",TexMan.Type_Any);
Woman[3] = TexMan.CheckForTexture("WomanBot",TexMan.Type_Any);
Woman[4] = TexMan.CheckForTexture("WomanBlt",TexMan.Type_Any);
WeaponBox = TexMan.CheckForTexture("WpSel",TexMan.Type_Any);
}
override void Draw( int state, double TicFrac )
{
Super.Draw(state,TicFrac);
if ( (CPlayer.ReadyWeapon is 'UTWeapon') )
UTWeapon(CPlayer.ReadyWeapon).PreRender();
if ( (state == HUD_StatusBar) || (state == HUD_Fullscreen) )
{
BeginHUD();
DrawUTHUD(TicFrac);
FracTic = TicFrac;
DrawUTHUD();
}
if ( (CPlayer.ReadyWeapon is 'UTWeapon') )
UTWeapon(CPlayer.ReadyWeapon).PostRender();
}
private Color LerpColor( Color a, Color b, double x )
{
return Color(a.a,int(a.r*(1.-x)+b.r*x),int(a.g*(1.-x)+b.g*x),int(a.b*(1.-x)+b.b*x));
}
private void UTDrawTintedTex( TextureID tx, double sx = 1.0, Color tint = Color("Black") )
{
double ss = (HScale*sx);
double dw = (Screen.GetWidth()/ss), dh = (Screen.GetHeight()/ss);
double dx = CurX/ss, dy = CurY/ss;
Screen.DrawTexture(tx,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_Alpha,opacity,DTA_FillColor,bgcolor);
Screen.DrawTexture(tx,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_AlphaChannel,true,DTA_FillColor,(tint!="Black")?tint:tintcolor);
}
private void UTDrawColorTex( TextureID tx, double sx = 1.0, double alpha = 1.0 )
{
double ss = (HScale*sx);
double dw = (Screen.GetWidth()/ss), dh = (Screen.GetHeight()/ss);
double dx = CurX/ss, dy = CurY/ss;
Screen.DrawTexture(tx,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_AlphaChannel,true,DTA_Alpha,alpha,DTA_FillColor,DrawColor);
}
private void UTDrawPlainTex( TextureID tx, double sx = 1.0, double alpha = 1.0 )
{
double ss = (HScale*sx);
double dw = (Screen.GetWidth()/ss), dh = (Screen.GetHeight()/ss);
double dx = CurX/ss, dy = CurY/ss;
Screen.DrawTexture(tx,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_Alpha,alpha);
}
private bool UTDrawWeaponIcon( Weapon w, bool use, bool pending, double sx = 1.0 )
{
for ( int i=0; i<14; i++ )
{
if ( !(w is IconClasses[i]) ) continue;
if ( use ) UTDrawTintedTex(Uses[i],sx);
else if ( pending ) UTDrawTintedTex(Icons[i],sx);
else UTDrawTintedTex(Icons[i],sx,tintcolor/2);
return true;
}
return false;
}
// UT's implementation doesn't seem to translate well to this, so I improvised a bit and made something not so ugly
private void UTDrawBigNum( int value, double sx = 1.0 )
{
double step = 25*HScale*sx;
double ss = (HScale*sx);
double dw = (Screen.GetWidth()/ss), dh = (Screen.GetHeight()/ss);
String digits = String.Format("%d",min(abs(value),9999));
double flen = 3*step;
double len = digits.length()*step;
CurX += (flen-len)*0.5;
if ( digits.CharAt(0) == "1" ) CurX -= 0.5*step;
if ( value < 0 )
{
Screen.DrawTexture(BigNum[11],false,CurX/ss,CurY/ss,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_AlphaChannel,true,DTA_FillColor,DrawColor);
CurX += step;
}
for ( int i=0; i<digits.length(); i++ )
{
Screen.DrawTexture(BigNum[digits.CharCodeAt(i)-0x30],false,CurX/ss,CurY/ss,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_AlphaChannel,true,DTA_FillColor,DrawColor);
CurX += step;
}
}
private void DrawUTHUD( double TicFrac )
private void DrawAmmo()
{
Inventory ammotype1, ammotype2;
[ammotype1, ammotype2] = GetCurrentAmmo();
CurX = Screen.GetWidth()-128*HScale;
CurY = Screen.GetHeight()-64*HScale;
UTDrawTintedTex(Boxes[0]);
CurX += 8*HScale;
CurY += 14*HScale;
DrawColor = WhiteColor;
if ( ammotype1 ) UTDrawBigNum(ammotype1.Amount);
if ( ammotype2 && (ammotype2 != ammotype1) )
{
CurX = Screen.GetWidth()-128*HScale;
CurY = Screen.GetHeight()-128*HScale;
UTDrawTintedTex(Boxes[0]);
CurX += 8*HScale;
CurY += 14*HScale;
UTDrawBigNum(ammotype2.Amount);
}
}
private void DrawStatus()
{
CurX = Screen.GetWidth()-128*HScale;
CurY = 0;
Color dollcolor = tintcolor;
DamageAmplifier d;
UTArmor b, a, t, s;
//UTJumpBoots j;
d = DamageAmplifier(CPlayer.mo.FindInventory("DamageAmplifier"));
b = UTArmor(CPlayer.mo.FindInventory("UTArmorBonus"));
a = UTArmor(CPlayer.mo.FindInventory("UTBodyArmor"));
t = UTArmor(CPlayer.mo.FindInventory("UTThighPads"));
//b = CPlayer.mo.FindInventory("UTJumpBoots"));
s = UTArmor(CPlayer.mo.FindInventory("UTShieldBelt"));
if ( d && !d.isBlinking() ) dollcolor = d.BlendColor;
if ( CPlayer.GetGender() == 1 )
{
UTDrawTintedTex(Woman[0],1.0,dollcolor);
DrawColor = dollcolor;
if ( a ) UTDrawColorTex(Woman[1],1.0,a.Amount/double(a.MaxAmount));
if ( t ) UTDrawColorTex(Woman[2],1.0,t.Amount/double(t.MaxAmount));
//if ( j ) UTDrawColorTex(Woman[3],1.0,b.Amount/double(b.MaxAmount));
DrawColor = GoldColor;
if ( s ) UTDrawColorTex(Woman[4],1.0,s.Amount/double(s.MaxAmount));
}
else
{
UTDrawTintedTex(Man[0],1.0,dollcolor);
DrawColor = dollcolor;
if ( a ) UTDrawColorTex(Man[1],1.0,a.Amount/double(a.MaxAmount));
if ( t ) UTDrawColorTex(Man[2],1.0,t.Amount/double(t.MaxAmount));
//if ( j ) UTDrawColorTex(Man[3],1.0,b.Amount/double(b.MaxAmount));
DrawColor = GoldColor;
if ( s ) UTDrawColorTex(Man[4],1.0,s.Amount/double(s.MaxAmount));
}
DrawColor = WhiteColor;
CurX = Screen.GetWidth()-268*HScale;
UTDrawTintedTex(Boxes[1]);
int allarmor = 0;
if ( b ) allarmor += b.amount;
if ( a ) allarmor += a.amount;
if ( t ) allarmor += t.amount;
if ( s ) allarmor += s.amount;
CurX += 8*HScale;
CurY += 14*HScale;
UTDrawBigNum(Min(199,allarmor));
CurX = Screen.GetWidth()-268*HScale;
CurY = 64*HScale;
if ( CPlayer.mo.Health < CPlayer.mo.SpawnHealth()/2 )
{
Color blinkcolor;
double blinky = ((gametic+fractic)/Thinker.TICRATE)*1.5;
blinky = blinky-floor(blinky);
blinkcolor = LerpColor(tintcolor,WhiteColor,blinky);
UTDrawTintedTex(Boxes[2],1.0,blinkcolor);
DrawColor = LerpColor(WhiteColor,blinkcolor,blinky);
CurX += 8*HScale;
CurY += 14*HScale;
UTDrawBigNum(max(0,CPlayer.mo.Health));
}
else
{
UTDrawTintedTex(Boxes[2]);
CurX += 8*HScale;
CurY += 14*HScale;
UTDrawBigNum(Clamp(CPlayer.mo.Health,0,199));
}
}
private void DrawWeapons()
{
double BaseX = 128*HScale;
double WeapScale = 0.8*HScale;
double BaseY = Screen.GetHeight()-64*WeapScale;
double WeaponOffset = 128*WeapScale;
let cw = CPlayer.ReadyWeapon;
let pw = CPlayer.PendingWeapon;
if ( cw )
{
int slot = cw.SlotNumber?(cw.SlotNumber-1):9;
CurX = BaseX+slot*WeaponOffset;
CurY = BaseY;
UTDrawWeaponIcon(cw,true,false,0.8);
CurX = BaseX+slot*WeaponOffset;
CurY = BaseY;
UTDrawPlainTex(WeaponBox,0.8);
}
if ( pw && (pw != WP_NOCHANGE) )
{
int slot = pw.SlotNumber?(pw.SlotNumber-1):9;
CurX = BaseX+slot*WeaponOffset-64*WeapScale;
CurY = BaseY-32*WeapScale;
DrawColor = GoldColor;
UTDrawColorTex(Flash,0.8);
}
Weapon wslots[10];
for ( Inventory i = CPlayer.mo.Inv; i; i=i.Inv )
{
if ( !(i is 'Weapon') ) continue;
let w = Weapon(i);
int slot = w.SlotNumber?(w.SlotNumber-1):9;
if ( !wslots[slot] ) wslots[slot] = w;
else if ( (wslots[slot] != cw) && ((wslots[slot] != pw)
|| (wslots[slot].SelectionOrder > w.SelectionOrder)) )
wslots[slot] = w;
}
for ( int i=0; i<10; i++ )
{
CurX = BaseX+i*WeaponOffset;
CurY = BaseY;
if ( !wslots[i] )
{
UTDrawTintedTex(Slots[i],1.6,tintcolor/2);
}
else if ( wslots[i] != cw )
{
if ( !UTDrawWeaponIcon(wslots[i],false,wslots[i]==pw,0.8) )
UTDrawTintedTex(Slots[i],1.6,tintcolor/2);
}
}
for ( int i=0; i<10; i++ )
{
if ( !wslots[i] ) continue;
CurX = BaseX+i*WeaponOffset+4*WeapScale;
CurY = BaseY+4*WeapScale;
DrawColor = GoldColor;
UTDrawColorTex(BigNum[(i==9)?0:(i+1)],0.6);
if ( !wslots[i].Ammo1 ) return;
CurY = BaseY+52*WeapScale;
Vector2 ss = (0.6875,0.5)*WeapScale;
double dw = (Screen.GetWidth()/ss.x), dh = (Screen.GetHeight()/ss.y);
double dx = CurX/ss.x, dy = CurY/ss.y;
Vector2 bs = TexMan.GetScaledSize(AmmoBar);
double ddw = bs.x*(wslots[i].Ammo1.Amount/double(wslots[i].Ammo1.MaxAmount));
int cx, cy, cw, ch;
[cx,cy,cw,ch] = Screen.GetClipRect();
Screen.SetClipRect(CurX,CurY,ddw*ss.x,bs.y*ss.y);
Screen.DrawTexture(AmmoBar,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true);
Screen.SetClipRect(cx,cy,cw,ch);
}
}
private void DrawFragCount()
{
CurX = 0;
CurY = Screen.GetHeight()-64*HScale;
DrawColor = tintcolor;
double whiten = ((gametic+fractic)-lastfrag)/Thinker.TICRATE;
if ( whiten < 3.0 )
{
if ( tintcolor == GoldColor )
DrawColor = WhiteColor;
else DrawColor = GoldColor;
CurX -= 64*HScale;
CurY -= 32*HScale;
UTDrawColorTex(Flash);
CurX += 64*HScale;
CurY += 32*HScale;
whiten = 4*whiten-int(4*whiten);
DrawColor = lerpcolor(tintcolor,DrawColor,whiten);
}
UTDrawTintedTex(Boxes[3],1.0,DrawColor);
CurX += 44*HScale;
CurY += 14*HScale;
DrawColor = WhiteColor;
UTDrawBigNum((deathmatch||teamplay)?CPlayer.fragcount:CPlayer.killcount);
}
private void DrawIdentifyInfo()
{
double lalpha = 2.0-((gametic+fractic)-lastseentic)/Thinker.TICRATE;
if ( !lastseen || (lalpha <= 0) ) return;
String cl1 = "Teal", cl2 = "Cyan";
if ( deathmatch && (lastseen.player.GetTeam() < teams.size()) )
{
cl2 = teams[lastseen.player.GetTeam()].mName;
cl1 = String.Format("Dark%s",cl2);
}
String tname = String.Format("\c[%s]Name:\c[%s] %s",cl1,cl2,lastseen.player.GetUserName());
CurX = (Screen.GetWidth()-confont.StringWidth(tname)*CleanXFac)*0.5;
CurY = Screen.GetHeight()*0.75;
Screen.DrawText(confont,Font.CR_UNTRANSLATED,CurX,CurY,tname,DTA_CleanNoMove,true,DTA_Alpha,lalpha/2.);
if ( !deathmatch || (lastseen.IsTeammate(CPlayer.mo)) )
{
CurY += 1.2*confont.GetHeight()*CleanYFac;
tname = String.Format("\c[%s]Health:\c[%s] %d",cl1,cl2,lastseen.Health);
Screen.DrawText(confont,Font.CR_UNTRANSLATED,CurX,CurY,tname,DTA_CleanNoMove,true,DTA_Alpha,lalpha/2.);
}
}
override void Tick()
{
Super.Tick();
vtracer.ignore = CPlayer.mo;
vtracer.trace(CPlayer.mo.Vec2OffsetZ(0,0,CPlayer.viewz),CPlayer.mo.CurSector,(cos(CPlayer.mo.angle)*cos(CPlayer.mo.pitch),sin(CPlayer.mo.angle)*cos(CPlayer.mo.pitch),-sin(CPlayer.mo.pitch)),1000,0);
if ( vtracer.Results.HitType != TRACE_HitActor ) return;
lastseen = vtracer.Results.HitActor;
lastseentic = gametic;
}
private void DrawUTHUD()
{
if ( players[consoleplayer].camera is 'GuidedWarShell' ) return;
HScale = Screen.GetWidth()/1280.;
switch ( CVar.GetCVar('flak_colorprefs',CPlayer).GetInt() )
{
case 0:
if ( CPlayer.GetTeam() >= Teams.Size() )
tintcolor = Color("White");
else tintcolor = Color(Teams[CPlayer.GetTeam()].mName);
break;
case 1:
tintcolor = CPlayer.GetColor();
break;
case 2:
tintcolor = Color(CVar.GetCVar('flak_colorcustom',CPlayer).GetString());
break;
}
opacity = CVar.GetCVar('flak_opacity',CPlayer).GetFloat();
bgcolor = Color(CVar.GetCVar('flak_bgcolor',CPlayer).GetString());
// Display Weapons
DrawWeapons();
// Display Frag count
DrawFragCount();
// Draw Ammo
DrawAmmo();
// Draw Health/Armor status
DrawStatus();
// Display Identification Info
if ( CPlayer == players[consoleplayer] ) DrawIdentifyInfo();
}
}

View file

@ -584,6 +584,7 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
Inventory.PickupMessage "You got the Redeemer.";
Weapon.UpSound "warhead/select";
Weapon.SlotNumber 0;
Weapon.SelectionOrder 0;
Weapon.AmmoType "WarheadAmmo";
Weapon.AmmoUse 1;
Weapon.AmmoType2 "WarheadAmmo";
@ -591,6 +592,7 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
Weapon.AmmoGive 1;
Inventory.RespawnTics 2100;
+INVENTORY.ALWAYSPICKUP;
+WEAPON.NOAUTOFIRE;
}
States
{
@ -609,15 +611,13 @@ Class WarheadLauncher : UTWeapon replaces BFG9000
}
Wait;
Fire:
WARI A 3;
WARF A 3 A_WarheadFire();
WARF BCDEFG 3 A_WarheadSmoke();
WARF A 4 A_WarheadFire();
WARF BCDEFG 4 A_WarheadSmoke();
WARI A 5;
Goto Idle;
AltFire:
WARI A 3;
WARF A 3 A_WarheadAlt();
WARF BCDEFG 3 A_WarheadSmoke();
WARF A 4 A_WarheadAlt();
WARF BCDEFG 4 A_WarheadSmoke();
WARI A 1 A_JumpIf(!invoker.Guided,1);
Wait;
WARI A 30;