diff --git a/brightmaps/AUbelt1.png b/brightmaps/AUbelt1.png new file mode 100644 index 0000000..eb889f3 Binary files /dev/null and b/brightmaps/AUbelt1.png differ diff --git a/brightmaps/JRelicSkull_01.png b/brightmaps/JRelicSkull_01.png new file mode 100644 index 0000000..00ea05e Binary files /dev/null and b/brightmaps/JRelicSkull_01.png differ diff --git a/brightmaps/Jlboot2.png b/brightmaps/Jlboot2.png new file mode 100644 index 0000000..0b5e341 Binary files /dev/null and b/brightmaps/Jlboot2.png differ diff --git a/brightmaps/Judamage1.png b/brightmaps/Judamage1.png new file mode 100644 index 0000000..84f95f9 Binary files /dev/null and b/brightmaps/Judamage1.png differ diff --git a/brightmaps/jinvis.png b/brightmaps/jinvis.png new file mode 100644 index 0000000..68c728c Binary files /dev/null and b/brightmaps/jinvis.png differ diff --git a/credits.txt b/credits.txt new file mode 100644 index 0000000..233c350 --- /dev/null +++ b/credits.txt @@ -0,0 +1,3 @@ +Models, textures and audio (C)1999 Epic Games. + +Porting and adjustments by Marisa Kirisame. diff --git a/gldefs.txt b/gldefs.txt index 3b5e0ab..e797ed2 100644 --- a/gldefs.txt +++ b/gldefs.txt @@ -50,17 +50,29 @@ Brightmap Texture "FIZZHP23" { Map "brightmaps/fullbright.png" } -Brightmap Texture "models/jhbox1.png" +/*Brightmap Texture "models/jhbox1.png" { Map "brightmaps/jhbox1.png" +}*/ +HardwareShader Texture "models/jhbox1.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } -Brightmap Texture "models/bossheadT.png" +/*Brightmap Texture "models/bossheadT.png" { Map "brightmaps/bossheadT.png" +}*/ +HardwareShader Texture "models/bossheadT.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } -Brightmap Texture "models/JBRifle2.png" +/*Brightmap Texture "models/JBRifle2.png" { Map "brightmaps/JBRifle2.png" +}*/ +HardwareShader Texture "models/JBRifle2.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } Brightmap Texture "models/JBRifle21.png" { @@ -78,13 +90,21 @@ Brightmap Texture "models/JBRifle24.png" { Map "brightmaps/JBRifle24.png" } -Brightmap Texture "models/JBammo1.png" +/*Brightmap Texture "models/JBammo1.png" { Map "brightmaps/JBammo1.png" +}*/ +HardwareShader Texture "models/JBammo1.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } -Brightmap Texture "models/ASMD_t.png" +/*Brightmap Texture "models/ASMD_t.png" { Map "brightmaps/ASMD_t.png" +}*/ +HardwareShader Texture "models/ASMD_t.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } Brightmap Texture "models/ASMD_t1.png" { @@ -98,9 +118,13 @@ Brightmap Texture "models/ASMD_t4.png" { Map "brightmaps/ASMD_t4.png" } -Brightmap Texture "models/JShockCore.png" +/*Brightmap Texture "models/JShockCore.png" { Map "brightmaps/JShockCore.png" +}*/ +HardwareShader Texture "models/JShockCore.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } Brightmap Texture "models/Jwarhead2.png" { @@ -110,21 +134,33 @@ Brightmap Texture "models/Jwarhead4.png" { Map "brightmaps/Jwarhead4.png" } -Brightmap Texture "models/Jwhpick1.png" +/*Brightmap Texture "models/Jwhpick1.png" { Map "brightmaps/Jwhpick1.png" +}*/ +HardwareShader Texture "models/Jwhpick1.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } -Brightmap Texture "models/JPammo_01.png" +/*Brightmap Texture "models/JPammo_01.png" { Map "brightmaps/JPammo_01.png" +}*/ +HardwareShader Texture "models/JPammo_01.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } Brightmap Texture "models/JPulseGun_02.png" { Map "brightmaps/JPulseGun_02.png" } -Brightmap Texture "models/JPulsePickup_01.png" +/*Brightmap Texture "models/JPulsePickup_01.png" { Map "brightmaps/JPulseGun_02.png" +}*/ +HardwareShader Texture "models/JPulsePickup_01.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" } Brightmap Texture "models/AmmoLedBase.png" { @@ -134,3 +170,155 @@ Brightmap Texture "models/FlakAmmoLEDBase.png" { Map "brightmaps/fullbright.png" } +HardwareShader Texture "models/AToxSuit1.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +HardwareShader Texture "models/GoldSkin2.png" +{ + Shader "shaders/glsl/MeshEnviroMap_AmbientGlow.fp" +} +HardwareShader Texture "models/JFA1.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +HardwareShader Texture "models/JMedBox1.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +HardwareShader Texture "models/JThighPads_01.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +HardwareShader Texture "models/JVial0.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +HardwareShader Texture "models/Jarmor2.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +HardwareShader Texture "models/Jflakslugel1_.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +HardwareShader Texture "models/Jhboxbeta1.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +HardwareShader Texture "models/Jmissile_01_.png" +{ + Shader "shaders/glsl/AmbientGlow.fp" +} +/*Brightmap Texture "models/AUbelt1.png" +{ + Map "brightmaps/AUbelt1.png" +}*/ +HardwareShader Texture "models/AUbelt1.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" +} +/*Brightmap Texture "models/jinvis.png" +{ + Map "brightmaps/jinvis.png" +}*/ +HardwareShader Texture "models/jinvis.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" +} +/*Brightmap Texture "models/Judamage1.png" +{ + Map "brightmaps/Judamage1.png" +}*/ +HardwareShader Texture "models/Judamage1.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" +} +/*Brightmap Texture "models/Jlboot2.png" +{ + Map "brightmaps/Jlboot2.png" +}*/ +HardwareShader Texture "models/Jlboot2.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" +} +/*Brightmap Texture "models/JRelicSkull_01b.png" +{ + Map "brightmaps/JRelicSkull_01b.png" +}*/ +HardwareShader Texture "models/JRelicSkull_01b.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" +} +/*Brightmap Texture "models/JRelicSkull_01g.png" +{ + Map "brightmaps/JRelicSkull_01g.png" +}*/ +HardwareShader Texture "models/JRelicSkull_01g.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" +} +/*Brightmap Texture "models/JRelicSkull_01r.png" +{ + Map "brightmaps/JRelicSkull_01r.png" +}*/ +HardwareShader Texture "models/JRelicSkull_01r.png" +{ + Shader "shaders/glsl/AmbientGlow_Brightmapped.fp" +} +HardwareShader Texture "models/BlueSkin2.png" +{ + Shader "shaders/glsl/MeshEnviroMap_AmbientGlow.fp" +} +HardwareShader Texture "models/RedSkin2.png" +{ + Shader "shaders/glsl/MeshEnviroMap_AmbientGlow.fp" +} +PulseLight "UTRedKeyLight" +{ + Color 1.0 0.0 0.0 + Size 15 + SecondarySize 20 + Interval 2.0 + Offset 0 16 0 +} +PulseLight "UTBlueKeyLight" +{ + Color 0.0 0.0 1.0 + Size 15 + SecondarySize 20 + Interval 2.0 + Offset 0 16 0 +} +PulseLight "UTGoldKeyLight" +{ + Color 1.0 0.8 0.0 + Size 15 + SecondarySize 20 + Interval 2.0 + Offset 0 16 0 +} +Object "UTRedSkull" +{ + Frame "USKL" { light "UTRedKeyLight" } +} +Object "UTBlueSkull" +{ + Frame "USKL" { light "UTBlueKeyLight" } +} +Object "UTGoldSkull" +{ + Frame "USKL" { light "UTGoldKeyLight" } +} +Object "UTRedKey" +{ + Frame "UKEY" { light "UTRedKeyLight" } +} +Object "UTBlueKey" +{ + Frame "UKEY" { light "UTBlueKeyLight" } +} +Object "UTGoldKey" +{ + Frame "UKEY" { light "UTGoldKeyLight" } +} diff --git a/menudef.txt b/menudef.txt index c33f992..3d1f859 100644 --- a/menudef.txt +++ b/menudef.txt @@ -1,16 +1,23 @@ -OptionValue "UTMenuType" +OptionValue "BetaToggle" { - 0, "Final" + 0, "Normal" 1, "Beta" } - OptionMenu "UTOptionMenu" { Title "UT Options" StaticText "Menu Options", "Gold" - Option "Menu Type", "flak_protomenu", "UTMenuType" + Option "Menu Type", "flak_protomenu", "BetaToggle" Command "Apply Changes", "event refreshmenu" + StaticText " " + StaticText "Item Options", "Gold" + Option "UDamage Style", "flak_betaudamage", "BetaToggle" + StaticText " " + StaticText "Weapon Options", "Gold" + Option "Enforcer Reloading", "flak_enforcerreload", "YesNo" + Option "Pulsegun Reloading", "flak_pulsereload", "YesNo" + Option "Redeemer Target Visuals", "flak_redeemerreadout", "YesNo" } AddOptionMenu "OptionsMenu" diff --git a/modeldef.txt b/modeldef.txt index 8616a06..ef06a9a 100644 --- a/modeldef.txt +++ b/modeldef.txt @@ -1,3 +1,50 @@ +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 +} + //============================================================================= // ITEMS //============================================================================= @@ -108,6 +155,104 @@ Model "UTShieldBelt" 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 +} + //============================================================================= // GES BIORIFLE //============================================================================= @@ -901,7 +1046,7 @@ Model "FlakAmmo2" { Path "models" Model 0 "flakslugm_d.3d" - Skin 0 "jflakslugel1.png" + Skin 0 "jflakslugel1_.png" PitchOffset 90 Scale 0.048 0.04 0.04 ZOffset 2 @@ -1647,7 +1792,7 @@ Model "WarheadAmmo" { Path "models" Model 0 "missile_d.3d" - Skin 0 "jmissile_01.png" + Skin 0 "jmissile_01_.png" Scale -0.21 0.2 0.2 PitchOffset 90 ZOffset 21 diff --git a/models/ASMD_t.png b/models/ASMD_t.png index 8b03c59..b6c712b 100644 Binary files a/models/ASMD_t.png and b/models/ASMD_t.png differ diff --git a/models/AUbelt1.png b/models/AUbelt1.png index 8387d89..2c02592 100644 Binary files a/models/AUbelt1.png and b/models/AUbelt1.png differ diff --git a/models/BlueSkin2.png b/models/BlueSkin2.png new file mode 100644 index 0000000..60c2f87 Binary files /dev/null and b/models/BlueSkin2.png differ diff --git a/models/DomB_a.3d b/models/DomB_a.3d new file mode 100644 index 0000000..d9c9995 Binary files /dev/null and b/models/DomB_a.3d differ diff --git a/models/DomB_d.3d b/models/DomB_d.3d new file mode 100644 index 0000000..0e701b2 Binary files /dev/null and b/models/DomB_d.3d differ diff --git a/models/DomR_a.3d b/models/DomR_a.3d new file mode 100644 index 0000000..943c3de Binary files /dev/null and b/models/DomR_a.3d differ diff --git a/models/DomR_d.3d b/models/DomR_d.3d new file mode 100644 index 0000000..1d6da28 Binary files /dev/null and b/models/DomR_d.3d differ diff --git a/models/JBRifle2.png b/models/JBRifle2.png index d6d7dbc..05fec3f 100644 Binary files a/models/JBRifle2.png and b/models/JBRifle2.png differ diff --git a/models/JBammo1.png b/models/JBammo1.png index 63c0554..73b1993 100644 Binary files a/models/JBammo1.png and b/models/JBammo1.png differ diff --git a/models/JPammo_01.png b/models/JPammo_01.png index c0524ec..0aa0b32 100644 Binary files a/models/JPammo_01.png and b/models/JPammo_01.png differ diff --git a/models/JPulsePickup_01.png b/models/JPulsePickup_01.png index ac94903..d503267 100644 Binary files a/models/JPulsePickup_01.png and b/models/JPulsePickup_01.png differ diff --git a/models/JRelicSkull_01.png b/models/JRelicSkull_01.png new file mode 100644 index 0000000..479908c Binary files /dev/null and b/models/JRelicSkull_01.png differ diff --git a/models/JRelicSkull_01b.png b/models/JRelicSkull_01b.png new file mode 100644 index 0000000..0f8b5f5 Binary files /dev/null and b/models/JRelicSkull_01b.png differ diff --git a/models/JRelicSkull_01g.png b/models/JRelicSkull_01g.png new file mode 100644 index 0000000..f85c91a Binary files /dev/null and b/models/JRelicSkull_01g.png differ diff --git a/models/JRelicSkull_01r.png b/models/JRelicSkull_01r.png new file mode 100644 index 0000000..585730d Binary files /dev/null and b/models/JRelicSkull_01r.png differ diff --git a/models/JShockCore.png b/models/JShockCore.png index 484de67..107ed5f 100644 Binary files a/models/JShockCore.png and b/models/JShockCore.png differ diff --git a/models/Jflakslugel1_.png b/models/Jflakslugel1_.png new file mode 100644 index 0000000..d560ed9 Binary files /dev/null and b/models/Jflakslugel1_.png differ diff --git a/models/Jhbox1.png b/models/Jhbox1.png index a8a3caa..ae73fa0 100644 Binary files a/models/Jhbox1.png and b/models/Jhbox1.png differ diff --git a/models/Jlboot2.png b/models/Jlboot2.png index dbbbace..1733e75 100644 Binary files a/models/Jlboot2.png and b/models/Jlboot2.png differ diff --git a/models/Jmissile_01_.png b/models/Jmissile_01_.png new file mode 100644 index 0000000..2ddb8bf Binary files /dev/null and b/models/Jmissile_01_.png differ diff --git a/models/Judamage1.png b/models/Judamage1.png index d5dce46..c3ab3b6 100644 Binary files a/models/Judamage1.png and b/models/Judamage1.png differ diff --git a/models/Jwhpick1.png b/models/Jwhpick1.png index 8cd3abe..dc37c7c 100644 Binary files a/models/Jwhpick1.png and b/models/Jwhpick1.png differ diff --git a/models/MercSymbol_a.3d b/models/MercSymbol_a.3d new file mode 100644 index 0000000..12b5444 Binary files /dev/null and b/models/MercSymbol_a.3d differ diff --git a/models/MercSymbol_d.3d b/models/MercSymbol_d.3d new file mode 100644 index 0000000..616abef Binary files /dev/null and b/models/MercSymbol_d.3d differ diff --git a/models/RedSkin2.png b/models/RedSkin2.png new file mode 100644 index 0000000..2c9af71 Binary files /dev/null and b/models/RedSkin2.png differ diff --git a/models/RelicSkull_a.3d b/models/RelicSkull_a.3d new file mode 100644 index 0000000..37076fb Binary files /dev/null and b/models/RelicSkull_a.3d differ diff --git a/models/RelicSkull_d.3d b/models/RelicSkull_d.3d new file mode 100644 index 0000000..2a038d9 Binary files /dev/null and b/models/RelicSkull_d.3d differ diff --git a/models/UDamageB_a.3d b/models/UDamageB_a.3d new file mode 100644 index 0000000..6d33844 Binary files /dev/null and b/models/UDamageB_a.3d differ diff --git a/models/UDamageB_d.3d b/models/UDamageB_d.3d new file mode 100644 index 0000000..fdda524 Binary files /dev/null and b/models/UDamageB_d.3d differ diff --git a/models/UDamage_a.3d b/models/UDamage_a.3d index 6d33844..cef5b78 100644 Binary files a/models/UDamage_a.3d and b/models/UDamage_a.3d differ diff --git a/models/UDamage_d.3d b/models/UDamage_d.3d index fdda524..c197b0b 100644 Binary files a/models/UDamage_d.3d and b/models/UDamage_d.3d differ diff --git a/models/bossheadT.png b/models/bossheadT.png index 8868bdd..508d943 100644 Binary files a/models/bossheadT.png and b/models/bossheadT.png differ diff --git a/models/jinvis.png b/models/jinvis.png index de15764..4b1cd78 100644 Binary files a/models/jinvis.png and b/models/jinvis.png differ diff --git a/readme.txt b/readme.txt index d1a5e93..2f29d54 100644 --- a/readme.txt +++ b/readme.txt @@ -14,17 +14,19 @@ Currently implemented: - Beta Super Health (medkit) - Health Pack (stimpak) - Health Vial (health bonus) + - Some configuration options + - Damage Amplifier (invulnerability sphere) + - Mesh replacements for the keys In progress: - - Something to replace armor bonus (armor bonus) - - Thigh Pads (green armor) - - Body Armor (blue armor) - - Shield Belt (megasphere) - - Damage Amplifier (invulnerability sphere) + - Armor system + - Something to replace armor bonus (armor bonus) + - Thigh Pads (green armor) + - Body Armor (blue armor) + - Shield Belt (megasphere) - Invisibility (blursphere) - Searchlight (light amplification visor) - - Jump Boots (berserk) - Toxin Suit (radsuit) To be done: @@ -39,4 +41,10 @@ To be done: - Rocket Launcher (slot 9) - Sniper Rifle (slot 0) + - UT HUD + + - An alternate invulnerability sphere replacement that actually is invulnerability + - Something to replace berserk (candidates: make it spawn another enforcer, with a small chance of a limited ammo instagib shockrifle instead) + - Something to replace computer map (just a mesh replacement maybe) + - Replace the barrels (there are perfect candidates in Unreal 1) - ... maybe more diff --git a/shaders/glsl/AmbientGlow.fp b/shaders/glsl/AmbientGlow.fp new file mode 100644 index 0000000..7e54247 --- /dev/null +++ b/shaders/glsl/AmbientGlow.fp @@ -0,0 +1,12 @@ +// imitation of the Unreal Engine 1.x ambient glow effect, timing may be off +#define PI 3.14159265 +vec4 ProcessLight( vec4 color ) +{ + float glow = (1.0+sin(timer*2*PI))*0.25; + return vec4(min(color.rgb+vec3(glow),1.0),color.a); +} + +vec4 ProcessTexel() +{ + return getTexel(vTexCoord.st); +} diff --git a/shaders/glsl/AmbientGlow_Brightmapped.fp b/shaders/glsl/AmbientGlow_Brightmapped.fp new file mode 100644 index 0000000..fb739d7 --- /dev/null +++ b/shaders/glsl/AmbientGlow_Brightmapped.fp @@ -0,0 +1,15 @@ +// imitation of the Unreal Engine 1.x ambient glow effect, timing may be off +// combining with brightmaps requires the brightmap to be embedded into the +// alpha channel of the diffuse texture +#define PI 3.14159265 +vec4 ProcessLight( vec4 color ) +{ + float bright = getTexel(vTexCoord.st).a; + float glow = (1.0+sin(timer*2*PI))*0.25; + return vec4(min(color.rgb+vec3(bright)+vec3(glow),1.0),color.a); +} + +vec4 ProcessTexel() +{ + return vec4(getTexel(vTexCoord.st).rgb,1.0); +} diff --git a/shaders/glsl/MeshEnviroMap.fp b/shaders/glsl/MeshEnviroMap.fp index f033092..09ed936 100644 --- a/shaders/glsl/MeshEnviroMap.fp +++ b/shaders/glsl/MeshEnviroMap.fp @@ -1,7 +1,7 @@ // imitation of the Unreal Engine 1.x bMeshEnviroMap effect, not 1:1 but gets close -vec4 Process( vec4 color ) +vec4 ProcessTexel() { vec3 eyedir = normalize(uCameraPos.xyz-pixelpos.xyz); vec3 norm = reflect(eyedir,normalize(vWorldNormal.xyz)); - return getTexel(norm.xz*0.5)*color; + return getTexel(norm.xz*0.5); } diff --git a/shaders/glsl/MeshEnviroMap_AmbientGlow.fp b/shaders/glsl/MeshEnviroMap_AmbientGlow.fp new file mode 100644 index 0000000..3c73e00 --- /dev/null +++ b/shaders/glsl/MeshEnviroMap_AmbientGlow.fp @@ -0,0 +1,15 @@ +// imitation of the Unreal Engine 1.x ambient glow effect, timing may be off +#define PI 3.14159265 +vec4 ProcessLight( vec4 color ) +{ + float glow = (1.0+sin(timer*4*PI))*0.25; + return vec4(min(color.rgb+vec3(glow),1.0),color.a); +} + +// imitation of the Unreal Engine 1.x bMeshEnviroMap effect, not 1:1 but gets close +vec4 ProcessTexel() +{ + vec3 eyedir = normalize(uCameraPos.xyz-pixelpos.xyz); + vec3 norm = reflect(eyedir,normalize(vWorldNormal.xyz)); + return getTexel(norm.xz*0.5); +} diff --git a/sndinfo.txt b/sndinfo.txt index fa37fcc..fdc9571 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -1,103 +1,164 @@ -misc/secret CapSound -misc/i_pkup ammopick -misc/k_pkup ammosnd -misc/w_pkup weaponpk -misc/p_pkup genpicks -misc/spawn RespSnd2 -misc/chat NewBeep -misc/chat2 NewBeep -misc/teleport Resp2A -$pitchshift misc/secret 0 -$pitchshift misc/i_pkup 0 -$pitchshift misc/k_pkup 0 -$pitchshift misc/w_pkup 0 -$pitchshift misc/p_pkup 0 -$pitchshift misc/spawn 0 -$pitchshift misc/chat 0 -$pitchshift misc/chat2 0 -$pitchshift misc/teleport 0 -misc/ut_keg UTSuperH -misc/ut_heal UTHealth -misc/ut_shard shardpck -misc/ut_armor ArmorUT -belt/pickup BeltSnd -belt/absorb Sbelthe2 -boot/pickup BootSnd -boot/jump BootJmp -$pitchshift misc/ut_keg 0 -$pitchshift misc/ut_heal 0 -$pitchshift misc/ut_shard 0 -$pitchshift misc/ut_armor 0 +$pitchshiftrange 0 -flak/select pdown -flak/load hidraul2 -flak/reload load1 -flak/fire shot1 -flak/altfire explode1 -flak/hit ricochet -flak/meat chunkhit -flak/bounce1 hit1 -flak/bounce2 hit2 -flak/bounce3 hit3 +// player sounds +ut/maledie1 deathc1 +ut/maledie2 deathc3 +ut/maledie3 deathc4 +$random ut/maledie { ut/maledie1 ut/maledie2 ut/maledie3 } +ut/malexdie1 deathc51 +ut/malexdie2 deathc52 +ut/malexdie3 deathc53 +$random ut/malexdie { ut/malexdie1 ut/malexdie2 ut/malexdie3 } +ut/gibp newgib +ut/malepain1 injurl2 +ut/malepain2 injurl04 +ut/malepain3 injurm04 +ut/malepain4 injurh5 +ut/land land1 +ut/malegrunt land10 +ut/malejump jump1 +ut/malehump land01 +ut/malesurf gasp02 +ut/malegasp hgasp1 +ut/maledrowned1 uwinjr41 +ut/drowned uwinjr42 +$random ut/maledrowned { ut/maledrowned1 ut/drowned } +ut/maledrowning drownm02 + +$playeralias player male *death ut/maledie +$playeralias player male *xdeath ut/malexdie +$playeralias player male *gibbed ut/gibp +$playeralias player male *pain100 ut/malepain1 +$playeralias player male *pain75 ut/malepain2 +$playeralias player male *pain50 ut/malepain3 +$playeralias player male *pain25 ut/malepain4 +$playeralias player male *grunt ut/malegrunt +$playeralias player male *land ut/land +$playeralias player male *jump ut/malejump +$playeralias player male *usefail ut/malehump +$playeralias player male *surface ut/malesurface +$playeralias player male *gasp ut/malegasp + +$playeralias player male *death-drowning ut/maledrowned +$playeralias player male *xdeath-drowning ut/maledrowned +$playeralias player male *pain100-drowning ut/maledrowning +$playeralias player male *pain75-drowning ut/maledrowning +$playeralias player male *pain50-drowning ut/maledrowning +$playeralias player male *pain25-drowning ut/maledrowning + +ut/femaledie1 decap01 +ut/femaledie2 death1d +ut/femaledie3 death2a +ut/femaledie4 death3c +$random ut/femaledie { ut/femaledie1 ut/femaledie2 ut/femaledie3 } +ut/femalexdie1 death41 +ut/femalexdie2 death42 +$random ut/femalexdie { ut/femalexdie1 ut/femalexdie2 } +ut/femalepain1 linjur2 +ut/femalepain2 linjur3 +ut/femalepain3 linjur4 +ut/femalepain4 hinjur4 +ut/femalegrunt lland1 +ut/femalejump fjump1 +ut/femalesurf lgasp1 +ut/femalegasp hgasp3 +ut/femaledrowned1 uwhit01 +$random ut/femaledrowned { ut/femaledroenwd1 ut/drowned } +ut/femaledrowning mdrown2f + +$playeralias player female *death ut/femaledie +$playeralias player female *xdeath ut/femalexdie +$playeralias player female *gibbed ut/gibp +$playeralias player female *pain100 ut/femalepain1 +$playeralias player female *pain75 ut/femalepain2 +$playeralias player female *pain50 ut/femalepain3 +$playeralias player female *pain25 ut/femalepain4 +$playeralias player female *grunt ut/femalegrunt +$playeralias player female *land ut/land +$playeralias player female *jump ut/femalejump +$playeralias player female *usefail ut/femalegrunt +$playeralias player female *surface ut/femalesurf +$playeralias player female *gasp ut/femalegasp + +$playeralias player female *death-drowning ut/femaledrowned +$playeralias player female *xdeath-drowning ut/femaledrowned +$playeralias player female *pain100-drowning ut/femaledrowning +$playeralias player female *pain75-drowning ut/femaledrowning +$playeralias player female *pain50-drowning ut/femaledrowning +$playeralias player female *pain25-drowning ut/femaledrowning + +// everything else + +misc/secret capsound +misc/i_pkup ammopick +misc/k_pkup ammosnd +misc/w_pkup weaponpk +misc/p_pkup genpicks +misc/spawn respsnd2 +misc/chat newbeep +misc/chat2 newbeep +misc/teleport resp2a +misc/ut_keg utsuperh +misc/ut_heal uthealth +misc/ut_shard shardpck +misc/ut_armor armorut +belt/pickup beltsnd +belt/absorb sbelthe2 +boot/pickup bootsnd +boot/jump bootjmp +invis/pickup invisibl +udamage/pickup amppckup +udamage/fire1 ampfire +udamage/fire2 ampfire2 +udamage/drain ampout +misc/gibbed1 gib1 +misc/gibbed2 gib2 +misc/gibbed3 gib3 +misc/gibbed4 gib4 +misc/gibbed5 gib5 +$random misc/gibbed { misc/gibbed1 misc/gibbed2 misc/gibbed3 misc/gibbed4 misc/gibbed5 } + +flak/select pdown +flak/load hidraul2 +flak/reload load1 +flak/fire shot1 +flak/altfire explode1 +flak/hit ricochet +flak/meat chunkhit +flak/bounce1 hit1 +flak/bounce2 hit2 +flak/bounce3 hit3 $random flak/bounce { flak/bounce1 flak/bounce2 flak/bounce3 } $limit flak/bounce 64 -flak/explode expl04 -$pitchshift flak/select 0 -$pitchshift flak/load 0 -$pitchshift flak/reload 0 -$pitchshift flak/fire 0 -$pitchshift flak/altfire 0 -$pitchshift flak/hit 0 -$pitchshift flak/meat 0 -$pitchshift flak/bounce 0 -$pitchshift flak/explode 0 +flak/explode expl04 -shock/select tazersel -shock/fire tazefire -shock/altfire tazealtf -shock/hit expl03 -shock/ball expla02 -shock/blast specexpl -$pitchshift shock/select 0 -$pitchshift shock/fire 0 -$pitchshift shock/altfire 0 -$pitchshift shock/hit 0 +shock/select tazersel +shock/fire tazefire +shock/altfire tazealtf +shock/hit expl03 +shock/blast specexpl +$pitchshiftrange 5 +shock/ball expla02 $pitchshift shock/ball 5 -$pitchshift shock/blast 0 +$pitchshiftrange 0 -warhead/explode warexplo -warhead/fly warfly -warhead/select warhpick -warhead/fire warhshot -$pitchshift warhead/explode 0 -$pitchshift warhead/fly 0 -$pitchshift warhead/select 0 -$pitchshift warhead/fire 0 +warhead/explode warexplo +warhead/fly warfly +warhead/select warhpick +warhead/fire warhshot -ges/hit gelhit -ges/select gelselec -ges/fire gelshot -ges/charge bioaltrp -ges/explode explg02 -$pitchshift ges/hit 0 +ges/hit gelhit +ges/select gelselec +ges/fire gelshot +ges/charge bioaltrp +ges/explode explg02 $limit ges/hit 64 -$pitchshift ges/select 0 -$pitchshift ges/fire 0 -$pitchshift ges/charge 0 -$pitchshift ges/explode 0 $limit ges/explode 64 -pulse/bolt pulseblt -pulse/down pulsedwn -pulse/hit pulseexp -pulse/fire pulsefir -pulse/fly pulsefly -pulse/select pulsepck -pulse/reload pulserel -$pitchshift pulse/bolt 0 -$pitchshift pulse/down 0 -$pitchshift pulse/hit 0 -$pitchshift pulse/fire 0 -$pitchshift pulse/fly 0 -$pitchshift pulse/select 0 -$pitchshift pulse/reload 0 +pulse/bolt pulseblt +pulse/down pulsedwn +pulse/hit pulseexp +pulse/fire pulsefir +pulse/fly pulsefly +pulse/select pulsepck +pulse/reload pulserel diff --git a/sounds/BDeath1.wav b/sounds/BDeath1.wav new file mode 100644 index 0000000..29f140f Binary files /dev/null and b/sounds/BDeath1.wav differ diff --git a/sounds/BDeath3.wav b/sounds/BDeath3.wav new file mode 100644 index 0000000..087f5a7 Binary files /dev/null and b/sounds/BDeath3.wav differ diff --git a/sounds/BDeath4.wav b/sounds/BDeath4.wav new file mode 100644 index 0000000..e3cb240 Binary files /dev/null and b/sounds/BDeath4.wav differ diff --git a/sounds/BInjur1.wav b/sounds/BInjur1.wav new file mode 100644 index 0000000..3b87648 Binary files /dev/null and b/sounds/BInjur1.wav differ diff --git a/sounds/BInjur2.wav b/sounds/BInjur2.wav new file mode 100644 index 0000000..aed0bc0 Binary files /dev/null and b/sounds/BInjur2.wav differ diff --git a/sounds/BInjur3.wav b/sounds/BInjur3.wav new file mode 100644 index 0000000..c7173ff Binary files /dev/null and b/sounds/BInjur3.wav differ diff --git a/sounds/BInjur4.wav b/sounds/BInjur4.wav new file mode 100644 index 0000000..949f1bf Binary files /dev/null and b/sounds/BInjur4.wav differ diff --git a/sounds/BJump1.wav b/sounds/BJump1.wav new file mode 100644 index 0000000..68af37c Binary files /dev/null and b/sounds/BJump1.wav differ diff --git a/sounds/BNewGib.wav b/sounds/BNewGib.wav new file mode 100644 index 0000000..ccb7c81 Binary files /dev/null and b/sounds/BNewGib.wav differ diff --git a/sounds/Bland01.wav b/sounds/Bland01.wav new file mode 100644 index 0000000..e504cee Binary files /dev/null and b/sounds/Bland01.wav differ diff --git a/sounds/Fjump1.wav b/sounds/Fjump1.wav new file mode 100644 index 0000000..de4b081 Binary files /dev/null and b/sounds/Fjump1.wav differ diff --git a/sounds/Gib1.wav b/sounds/Gib1.wav new file mode 100644 index 0000000..d1eefc2 Binary files /dev/null and b/sounds/Gib1.wav differ diff --git a/sounds/Gib2.wav b/sounds/Gib2.wav new file mode 100644 index 0000000..81958ba Binary files /dev/null and b/sounds/Gib2.wav differ diff --git a/sounds/Gib3.wav b/sounds/Gib3.wav new file mode 100644 index 0000000..fe1471c Binary files /dev/null and b/sounds/Gib3.wav differ diff --git a/sounds/Gib4.wav b/sounds/Gib4.wav new file mode 100644 index 0000000..11cba6f Binary files /dev/null and b/sounds/Gib4.wav differ diff --git a/sounds/Gib5.wav b/sounds/Gib5.wav new file mode 100644 index 0000000..51d4492 Binary files /dev/null and b/sounds/Gib5.wav differ diff --git a/sounds/Invisibl.wav b/sounds/Invisibl.wav new file mode 100644 index 0000000..f7cfca9 Binary files /dev/null and b/sounds/Invisibl.wav differ diff --git a/sounds/Land1.wav b/sounds/Land1.wav new file mode 100644 index 0000000..d00fe95 Binary files /dev/null and b/sounds/Land1.wav differ diff --git a/sounds/NewGib.wav b/sounds/NewGib.wav new file mode 100644 index 0000000..a9cd33c Binary files /dev/null and b/sounds/NewGib.wav differ diff --git a/sounds/UWhit01.wav b/sounds/UWhit01.wav new file mode 100644 index 0000000..b5ce641 Binary files /dev/null and b/sounds/UWhit01.wav differ diff --git a/sounds/UWinjr41.wav b/sounds/UWinjr41.wav new file mode 100644 index 0000000..cb3fba6 Binary files /dev/null and b/sounds/UWinjr41.wav differ diff --git a/sounds/UWinjr42.wav b/sounds/UWinjr42.wav new file mode 100644 index 0000000..5f8ac0b Binary files /dev/null and b/sounds/UWinjr42.wav differ diff --git a/sounds/death1d.wav b/sounds/death1d.wav new file mode 100644 index 0000000..a7d50e6 Binary files /dev/null and b/sounds/death1d.wav differ diff --git a/sounds/death2a.wav b/sounds/death2a.wav new file mode 100644 index 0000000..fa80062 Binary files /dev/null and b/sounds/death2a.wav differ diff --git a/sounds/death3c.wav b/sounds/death3c.wav new file mode 100644 index 0000000..8d00ffc Binary files /dev/null and b/sounds/death3c.wav differ diff --git a/sounds/death41.wav b/sounds/death41.wav new file mode 100644 index 0000000..85604f8 Binary files /dev/null and b/sounds/death41.wav differ diff --git a/sounds/death42.wav b/sounds/death42.wav new file mode 100644 index 0000000..e03dfd8 Binary files /dev/null and b/sounds/death42.wav differ diff --git a/sounds/deathc1.wav b/sounds/deathc1.wav new file mode 100644 index 0000000..d1385ea Binary files /dev/null and b/sounds/deathc1.wav differ diff --git a/sounds/deathc3.wav b/sounds/deathc3.wav new file mode 100644 index 0000000..ba56125 Binary files /dev/null and b/sounds/deathc3.wav differ diff --git a/sounds/deathc4.wav b/sounds/deathc4.wav new file mode 100644 index 0000000..5abbb70 Binary files /dev/null and b/sounds/deathc4.wav differ diff --git a/sounds/deathc51.wav b/sounds/deathc51.wav new file mode 100644 index 0000000..819912a Binary files /dev/null and b/sounds/deathc51.wav differ diff --git a/sounds/deathc52.wav b/sounds/deathc52.wav new file mode 100644 index 0000000..db06141 Binary files /dev/null and b/sounds/deathc52.wav differ diff --git a/sounds/deathc53.wav b/sounds/deathc53.wav new file mode 100644 index 0000000..dc23be1 Binary files /dev/null and b/sounds/deathc53.wav differ diff --git a/sounds/decap01.wav b/sounds/decap01.wav new file mode 100644 index 0000000..dd2e1f0 Binary files /dev/null and b/sounds/decap01.wav differ diff --git a/sounds/drownM02.wav b/sounds/drownM02.wav new file mode 100644 index 0000000..ee1c4d3 Binary files /dev/null and b/sounds/drownM02.wav differ diff --git a/sounds/gasp02.wav b/sounds/gasp02.wav new file mode 100644 index 0000000..c306b1f Binary files /dev/null and b/sounds/gasp02.wav differ diff --git a/sounds/hgasp1.wav b/sounds/hgasp1.wav new file mode 100644 index 0000000..a5869c8 Binary files /dev/null and b/sounds/hgasp1.wav differ diff --git a/sounds/hgasp3.wav b/sounds/hgasp3.wav new file mode 100644 index 0000000..8e6c98c Binary files /dev/null and b/sounds/hgasp3.wav differ diff --git a/sounds/hinjur4.wav b/sounds/hinjur4.wav new file mode 100644 index 0000000..3099689 Binary files /dev/null and b/sounds/hinjur4.wav differ diff --git a/sounds/injurH5.wav b/sounds/injurH5.wav new file mode 100644 index 0000000..e15a208 Binary files /dev/null and b/sounds/injurH5.wav differ diff --git a/sounds/injurL04.wav b/sounds/injurL04.wav new file mode 100644 index 0000000..7c6a498 Binary files /dev/null and b/sounds/injurL04.wav differ diff --git a/sounds/injurL2.wav b/sounds/injurL2.wav new file mode 100644 index 0000000..d876d04 Binary files /dev/null and b/sounds/injurL2.wav differ diff --git a/sounds/injurM04.wav b/sounds/injurM04.wav new file mode 100644 index 0000000..76148b6 Binary files /dev/null and b/sounds/injurM04.wav differ diff --git a/sounds/jump1.wav b/sounds/jump1.wav new file mode 100644 index 0000000..cbad668 Binary files /dev/null and b/sounds/jump1.wav differ diff --git a/sounds/land01.wav b/sounds/land01.wav new file mode 100644 index 0000000..3702d39 Binary files /dev/null and b/sounds/land01.wav differ diff --git a/sounds/land10.wav b/sounds/land10.wav new file mode 100644 index 0000000..35d6b7f Binary files /dev/null and b/sounds/land10.wav differ diff --git a/sounds/lgasp1.wav b/sounds/lgasp1.wav new file mode 100644 index 0000000..4ba1941 Binary files /dev/null and b/sounds/lgasp1.wav differ diff --git a/sounds/linjur2.wav b/sounds/linjur2.wav new file mode 100644 index 0000000..a49e548 Binary files /dev/null and b/sounds/linjur2.wav differ diff --git a/sounds/linjur3.wav b/sounds/linjur3.wav new file mode 100644 index 0000000..c5a4e7e Binary files /dev/null and b/sounds/linjur3.wav differ diff --git a/sounds/linjur4.wav b/sounds/linjur4.wav new file mode 100644 index 0000000..8eb23ae Binary files /dev/null and b/sounds/linjur4.wav differ diff --git a/sounds/lland1.wav b/sounds/lland1.wav new file mode 100644 index 0000000..2e32444 Binary files /dev/null and b/sounds/lland1.wav differ diff --git a/sounds/mdrown2f.wav b/sounds/mdrown2f.wav new file mode 100644 index 0000000..94ff5be Binary files /dev/null and b/sounds/mdrown2f.wav differ diff --git a/textures.misc b/textures.misc index fe8c75c..a7285b8 100644 --- a/textures.misc +++ b/textures.misc @@ -126,3 +126,12 @@ Sprite "XANHA0",1,1{} Sprite "THIGA0",1,1{} Sprite "UARMA0",1,1{} Sprite "BELTA0",1,1{} +Sprite "UDAMA0",1,1{} +Sprite "UDAMB0",1,1{} +Sprite "USKLA0",1,1{} +Sprite "USKLB0",1,1{} +Sprite "USKLC0",1,1{} +Sprite "UKEYA0",1,1{} +Sprite "UKEYB0",1,1{} +Sprite "UKEYC0",1,1{} + diff --git a/zscript/biorifle.zsc b/zscript/biorifle.zsc index 704b316..c4ae539 100644 --- a/zscript/biorifle.zsc +++ b/zscript/biorifle.zsc @@ -160,6 +160,13 @@ Class BioGel : Actor A_SetRoll(roll+rollvel,SPF_INTERPOLATE); A_SetPitch(pitch+pitchvel,SPF_INTERPOLATE); A_SetPitch(pitch+yawvel,SPF_INTERPOLATE); + if ( waterlevel > 0 ) + { + vel.xy *= 0.98; + rollvel *= 0.98; + pitchvel *= 0.98; + yawvel *= 0.98; + } } if ( !InStateSequence(CurState,FindState("XDeath")) && ((!bNOGRAVITY && !Random[GES](0,2)) || !Random[GES](0,10)) ) { @@ -211,7 +218,8 @@ Class BioGel : Actor roll = 0; LineTrace(angle+180,172,0,TRF_THRUACTORS,data:d); SetOrigin(d.HitLocation+normal*0.5,false); - hittype = HIT_WALL; + if ( waterlevel > 0 ) hittype = HIT_FLOOR; + else hittype = HIT_WALL; } else if ( pos.z <= floorz+4 ) { @@ -229,7 +237,8 @@ Class BioGel : Actor angle = atan2(normal.y,normal.x); roll = FRandom[GES](0,360); SetOrigin((pos.x,pos.y,ceilingz)+normal*0.5,false); - if ( normal dot (0,0,-1) > 0.7 ) + if ( waterlevel > 0 ) hittype = HIT_FLOOR; + else if ( normal dot (0,0,-1) > 0.7 ) hittype = HIT_CEILING; else hittype = HIT_FLOOR; } @@ -385,6 +394,7 @@ Class BioRifle : UTWeapon if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; } A_PlaySound("ges/fire",CHAN_WEAPON); + invoker.FireEffect(); A_AlertMonsters(); if ( alt ) A_QuakeEx(1+0.5*invoker.charge,1+0.5*invoker.charge,1+0.5*invoker.charge,5+1.2*invoker.charge,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05+0.01*invoker.charge); else A_QuakeEx(1,1,1,5,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05); diff --git a/zscript/flakcannon.zsc b/zscript/flakcannon.zsc index cdac6d6..c5a6aed 100644 --- a/zscript/flakcannon.zsc +++ b/zscript/flakcannon.zsc @@ -178,6 +178,14 @@ Class FlakChunk : Actor { Super.Tick(); if ( globalfreeze || level.frozen ) return; + if ( waterlevel > 0 ) + { + vel.xy *= 0.98; + rollvel *= 0.98; + pitchvel *= 0.98; + yawvel *= 0.98; + if ( trail ) trail.Destroy(); + } lifetics++; if ( lifetics > 3 ) { @@ -352,6 +360,15 @@ Class FlakSlug : Actor trail.speed = 1; vel.z += 5; } + override void Tick() + { + Super.Tick(); + if ( waterlevel > 0 ) + { + vel.xy *= 0.98; + if ( trail ) trail.Destroy(); + } + } action void A_FlakExplode() { bForceXYBillboard = true; @@ -392,6 +409,7 @@ Class FlakSlug : Actor Spawn: FSLG A 1 { + if ( waterlevel > 0 ) return; for ( int i=0; i<6; i++ ) A_SpawnParticle("AAAAAA",0,50,12.0,velx:FRandom[Flak](-0.5,0.5),vely:FRandom[Flak](-0.5,0.5),velz:FRandom[Flak](-0.5,0.5),accelz:0.02,startalphaf:0.5,sizestep:1.0); } @@ -446,6 +464,7 @@ Class FlakCannon : UTWeapon if ( weap.Ammo1.Amount <= 0 ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; A_PlaySound("flak/fire",CHAN_WEAPON); + invoker.FireEffect(); A_AlertMonsters(); A_QuakeEx(1,1,1,3,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.05); Vector3 x, y, z; @@ -482,6 +501,7 @@ Class FlakCannon : UTWeapon if ( weap.Ammo1.Amount <= 0 ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; A_PlaySound("flak/altfire",CHAN_WEAPON); + invoker.FireEffect(); A_AlertMonsters(); A_QuakeEx(2,2,2,6,0,64,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1); Vector3 x, y, z; diff --git a/zscript/powerups.zsc b/zscript/powerups.zsc index e69de29..30f4e7d 100644 --- a/zscript/powerups.zsc +++ b/zscript/powerups.zsc @@ -0,0 +1,94 @@ +Class UDamage : PowerupGiver replaces InvulnerabilitySphere +{ + Default + { + Tag "Damage Amplifier"; + Inventory.PickupMessage "You got the Damage Amplifier!"; + +COUNTITEM; + +INVENTORY.AUTOACTIVATE; + +INVENTORY.ALWAYSPICKUP; + +INVENTORY.BIGPOWERUP; + Inventory.MaxAmount 0; + Powerup.Type "DamageAmplifier"; + Inventory.PickupSound "udamage/pickup"; + } + action void A_CheckSkin() + { + bool isbeta = CVar.GetCVar('flak_betaudamage').GetBool(); + if ( isbeta && (CurState == ResolveState("Spawn")) ) SetState(ResolveState("Spawn")+1); + else if ( !isbeta && (CurState == ResolveState("Spawn")+1) ) SetState(ResolveState("Spawn")); + } + States + { + Spawn: + UDAM A 5 A_CheckSkin(); + Loop; + UDAM B 5 A_CheckSkin(); + Loop; + } +} + +Class DamageAmpLight : DynamicLight +{ + Default + { + DynamicLight.Type "Point"; + Args 238,0,255,80; + } + override void Tick() + { + Super.Tick(); + if ( !target || !master ) + { + Destroy(); + return; + } + SetOrigin(target.pos+(0,0,target.height*0.5),true); + args[LIGHT_INTENSITY] = Random[ASMD](10,12)*8; + bDORMANT = Powerup(master).isBlinking(); + } +} + +Class DamageAmplifier : Powerup +{ + Actor l; + + Default + { + Powerup.Duration -30; + Powerup.Color "EE00FF", 0.25; + } + + override void InitEffect() + { + Super.InitEffect(); + l = Spawn("DamageAmpLight",Owner.pos); + l.target = Owner; + l.master = self; + } + + override void DoEffect() + { + Super.DoEffect(); + if ( (EffectTics == 175) || (EffectTics == 140) || (EffectTics == 105) || (EffectTics == 70) || (EffectTics == 35) ) + Owner.A_PlaySound("udamage/drain",CHAN_6,1.0,false,0.25); + } + + override bool isBlinking() + { + return ((EffectTics <= 175) && (EffectTics%35 >= 30)); + } + + void FireEffect() + { + if ( EffectTics < 350 ) Owner.A_PlaySound("udamage/fire2",CHAN_5,1.0,false,0.25); + else Owner.A_PlaySound("udamage/fire1",CHAN_5,1.0,false,0.25); + } + + override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive ) + { + if ( passive || (damage <= 0) ) return; + newdamage = max(1,ApplyDamageFactors(GetClass(),damageType,damage,damage*3)); + if ( !(Owner.player.ReadyWeapon is 'UTWeapon') ) FireEffect(); + } +} diff --git a/zscript/pulsegun.zsc b/zscript/pulsegun.zsc index 87ce2cc..750d72c 100644 --- a/zscript/pulsegun.zsc +++ b/zscript/pulsegun.zsc @@ -42,7 +42,7 @@ Class PulseBallLight : DynamicLight Default { DynamicLight.Type "Point"; - Args 32,255,0,10; + Args 64,255,0,10; } override void PostBeginPlay() { @@ -69,7 +69,7 @@ Class PulseExplLight : DynamicLight { DynamicLight.Type "Point"; ReactionTime 20; - Args 32,255,0,30; + Args 64,255,0,30; } override void PostBeginPlay() { @@ -80,7 +80,7 @@ Class PulseExplLight : DynamicLight { Super.Tick(); if ( globalfreeze || level.frozen ) return; - args[LIGHT_RED] = 16*lifetime; + args[LIGHT_RED] = 64*lifetime; args[LIGHT_GREEN] = 255*lifetime; lifetime -= 1./ReactionTime; if ( lifetime <= 0 ) Destroy(); @@ -117,8 +117,8 @@ Class PulseBall : Actor for ( int i=0; i 0) ) return A_Jump(255,"Reload"); - A_WeaponReady(WRF_ALLOWRELOAD); + if ( CVar.GetCVar('flak_pulsereload').GetBool() ) + { + if ( (invoker.clipcount <= 0) && (invoker.Ammo1.Amount > 0) ) return A_Jump(255,"Reload"); + A_WeaponReady(WRF_ALLOWRELOAD); + } + else A_WeaponReady(); return A_JumpIf(!Random[Pulse](0,300),1); } Wait; diff --git a/zscript/shockrifle.zsc b/zscript/shockrifle.zsc index 4a8fba5..3c849c8 100644 --- a/zscript/shockrifle.zsc +++ b/zscript/shockrifle.zsc @@ -149,19 +149,17 @@ Class ShockBeam : Actor // spawn particles for ( int i=0; i= 10000.0 ) { // reposition and explode on air SetOrigin(t.Results.HitPos-t.Results.HitVector*4,true); - A_SprayDecal("ShockMark",16); ExplodeMissile(t.Results.HitLine,null); moving = false; let r = Spawn("ShockBeamRing",pos); @@ -199,9 +197,7 @@ Class ShockBeam : Actor for ( int i=0; i 0 ) + { + if ( waterlevel > 0 ) + { + vel *= 0.98; + if ( vel.length() < 5 ) vel += vel.unit()*0.5; + } + else if ( vel.length() < 10 ) vel += vel.unit()*0.5; + } } action void A_Trail() { Vector3 taildir = -(cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); + if ( waterlevel > 0 ) + { + for ( int i=0; i<8; i++ ) + A_SpawnParticle("6060FF",0,Random[Warhead](10,30),FRandom[Warhead](2,4),0,taildir.x*32,taildir.y*32,taildir.z*32,taildir.x*2+FRandom[Warhead](-.5,.5),taildir.y*2+FRandom[Warhead](-.5,.5),taildir.z*2+FRandom[Warhead](-.5,.5),accelz:0.2,fadestepf:0); + return; + } for ( int i=0; i<8; i++ ) A_SpawnParticle("404040",0,20,2,0,taildir.x*32,taildir.y*32,taildir.z*32,taildir.x*2+FRandom[Warhead](-.5,.5),taildir.y*2+FRandom[Warhead](-.5,.5),taildir.z*2+FRandom[Warhead](-.5,.5),accelz:0.1,sizestep:1); for ( int i=0; i<8; i++ ) - { A_SpawnParticle("FFA020",SPF_FULLBRIGHT,10,6,0,taildir.x*35+FRandom[Warhead](-1,1),taildir.y*35+FRandom[Warhead](-1,1),taildir.z*35+FRandom[Warhead](-1,1),taildir.x*4+FRandom[Warhead](-.25,.25),taildir.y*4+FRandom[Warhead](-.25,.25),taildir.z*4+FRandom[Warhead](-.25,.25)); - } } action void A_Vaporize() { @@ -328,11 +341,12 @@ Class GuidedWarShell : WarShell A_SetPitch(destpitch,SPF_INTERPOLATE); A_SetRoll(destroll,SPF_INTERPOLATE); vel = vel.length()*(cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); - if ( vel.length() < 10 ) + if ( waterlevel > 0 ) { - Vector3 dir = vel.unit(); - vel += dir*1; + vel *= 0.98; + if ( vel.length() < 5 ) vel += vel.unit()*0.5; } + else if ( vel.length() < 10 ) vel += vel.unit()*0.5; } lagangle2 = lagangle2*0.95+lagangle*0.05; lagpitch2 = lagpitch2*0.95+lagpitch*0.05; @@ -394,21 +408,24 @@ Class RedeemerHUD : HUDMessageBase if ( visibility != StatusBar.HUDMSGLayer_UnderHUD ) return; Screen.Dim("Red",0.5,0,0,Screen.GetWidth(),Screen.GetHeight()); // shootable targetting - t.Reinit(); - Actor a; - Vector3 vdir = (cos(ViewAngle)*cos(ViewPitch),sin(ViewAngle)*cos(ViewPitch),-sin(ViewPitch)); - while ( a = Actor(t.Next()) ) + if ( CVar.GetCVar('flak_redeemerreadout',players[consoleplayer]).GetBool() ) { - Vector3 tdir = Level.Vec3Diff(ViewPos,a.Pos+(0,0,a.Height*0.5)); - if ( !a.bSHOOTABLE || (a.Health <= 0) || ((Camera is 'GuidedWarShell') && (a == GuidedWarShell(Camera).b)) || (tdir.length() > 2000) || (acos(tdir.unit() dot vdir) > players[consoleplayer].FOV) || tr.Trace(ViewPos,Camera.CurSector,tdir.unit(),tdir.length(),0) ) continue; - Vector3 wpos = ViewPos+tdir; - Vector3 spos = mkCoordUtil.WorldToScreen(wpos,ViewPos,ViewPitch,ViewAngle,ViewRoll,players[consoleplayer].FOV); - if ( spos.z > 1.0 ) continue; - Vector2 vpos = mkCoordUtil.ToViewport(spos); - Screen.DrawTexture(mark,false,vpos.x,vpos.y); - String diststr = String.Format("%f",tdir.length()); - diststr.Replace(".",""); - Screen.DrawText(whfont,Font.CR_UNTRANSLATED,(vpos.x-whfont.StringWidth(diststr)/2)-12,vpos.y+8,diststr); + t.Reinit(); + Actor a; + Vector3 vdir = (cos(ViewAngle)*cos(ViewPitch),sin(ViewAngle)*cos(ViewPitch),-sin(ViewPitch)); + while ( a = Actor(t.Next()) ) + { + Vector3 tdir = Level.Vec3Diff(ViewPos,a.Pos+(0,0,a.Height*0.5)); + if ( !a.bSHOOTABLE || (a.Health <= 0) || ((Camera is 'GuidedWarShell') && (a == GuidedWarShell(Camera).b)) || (tdir.length() > 2000) || (acos(tdir.unit() dot vdir) > players[consoleplayer].FOV) || tr.Trace(ViewPos,Camera.CurSector,tdir.unit(),tdir.length(),0) ) continue; + Vector3 wpos = ViewPos+tdir; + Vector3 spos = mkCoordUtil.WorldToScreen(wpos,ViewPos,ViewPitch,ViewAngle,ViewRoll,players[consoleplayer].FOV); + if ( spos.z > 1.0 ) continue; + Vector2 vpos = mkCoordUtil.ToViewport(spos); + Screen.DrawTexture(mark,false,vpos.x,vpos.y); + String diststr = String.Format("%f",tdir.length()); + diststr.Replace(".",""); + Screen.DrawText(whfont,Font.CR_UNTRANSLATED,(vpos.x-whfont.StringWidth(diststr)/2)-12,vpos.y+8,diststr); + } } // other stuff Screen.DrawTexture(reticle,false,320,240,DTA_VirtualWidth,640,DTA_VirtualHeight,480); @@ -484,6 +501,7 @@ Class WarheadLauncher : UTWeapon replaces BFG9000 if ( weap.Ammo1.Amount <= 0 ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; A_PlaySound("warhead/fire",CHAN_WEAPON); + invoker.FireEffect(); A_AlertMonsters(); A_QuakeEx(6,6,6,20,0,100,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2); Vector3 x, y, z; @@ -518,6 +536,7 @@ Class WarheadLauncher : UTWeapon replaces BFG9000 if ( weap.Ammo1.Amount <= 0 ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; A_PlaySound("warhead/fire",CHAN_WEAPON); + invoker.FireEffect(); A_AlertMonsters(); A_QuakeEx(6,6,6,20,0,100,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2); Vector3 x, y, z;