From 912cad96c512907cb09a235fce89bfb2be358350 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Wed, 4 Sep 2019 02:37:59 +0200 Subject: [PATCH] Oh boy, it begins. Assigned all pickup models. Implemented all ammo types. Finished Flak Cannon. Additional cleanup. Slot reassignments and other adjustments to match known Unreal prototype info. --- GunLore.md | 10 +- Readme.md | 43 ++-- brightmaps/JNaliFruit1.png | Bin 0 -> 15385 bytes credits.txt | 2 + gldefs.txt | 61 ++++- .../icons/{I_FlareBD.png => I_FlarBD.png} | Bin .../icons/{I_FlareBL.png => I_FlarBL.png} | Bin language.txt | 4 +- modeldef.betamag | 15 ++ modeldef.biggun | 44 ++++ modeldef.bonesaw | 15 ++ modeldef.eightball | 48 ++++ modeldef.flamegun | 14 ++ modeldef.gatling | 14 ++ modeldef.impaler | 43 ++++ modeldef.napalm | 45 ++++ modeldef.peacemaker | 15 ++ modeldef.quadshot | 39 +++ modeldef.razorjack | 28 +++ modeldef.rifle | 37 +++ modeldef.stunner | 14 ++ modeldef.ubiorifle | 76 ++++++ modeldef.uflak | 33 ++- modeldef.uminigun | 27 ++ modeldef.umisc | 238 ++++++++++++++++++ modeldef.utranslocator | 15 ++ models/Chnk1_a.3d | Bin 28 -> 0 bytes models/Chnk1_d.3d | Bin 176 -> 0 bytes models/Chnk2_a.3d | Bin 68 -> 0 bytes models/Chnk2_d.3d | Bin 496 -> 0 bytes models/Chnk3_a.3d | Bin 32 -> 0 bytes models/Chnk3_d.3d | Bin 208 -> 0 bytes models/Chnk4_a.3d | Bin 28 -> 0 bytes models/Chnk4_d.3d | Bin 176 -> 0 bytes models/ChnkX_a.3d | Bin 0 -> 564 bytes models/ChnkX_d.3d | Bin 0 -> 912 bytes models/JFlame2.png | Bin 0 -> 17381 bytes models/JFlame3.png | Bin 0 -> 17606 bytes models/JRocket1_.png | Bin 0 -> 51785 bytes textures.biggun | 3 + textures.flamegun | 3 + textures.gatling | 2 + textures.impaler | 1 + textures.napalm | 6 + textures.peacemaker | 4 + textures.quadshot | 3 + textures.umisc | 2 + zscript/asmd.zsc | 29 ++- zscript/automag.zsc | 5 + zscript/betamag.zsc | 26 ++ zscript/biggun.zsc | 68 +++++ zscript/bonesaw.zsc | 19 ++ zscript/dispersionpistol.zsc | 25 +- zscript/flamegun.zsc | 22 ++ zscript/gatling.zsc | 33 +++ zscript/impaler.zsc | 63 +++++ zscript/miscitems.zsc | 104 +++++++- zscript/napalm.zsc | 43 ++++ zscript/peacemaker.zsc | 28 +++ zscript/quadshot.zsc | 52 ++++ zscript/razorjack.zsc | 44 ++++ zscript/rifle.zsc | 58 +++++ zscript/stunner.zsc | 43 ++++ zscript/ubiorifle.zsc | 57 +++++ zscript/ueightball.zsc | 68 +++++ zscript/uflakcannon.zsc | 202 +++++++++++++++ zscript/uminigun.zsc | 29 +++ zscript/unrealcommon.zsc | 33 +-- zscript/unrealhud.zsc | 2 +- zscript/upowerups.zsc | 33 +++ zscript/utranslocator.zsc | 32 +++ 71 files changed, 1949 insertions(+), 73 deletions(-) create mode 100644 brightmaps/JNaliFruit1.png rename graphics/icons/{I_FlareBD.png => I_FlarBD.png} (100%) rename graphics/icons/{I_FlareBL.png => I_FlarBL.png} (100%) create mode 100644 modeldef.betamag create mode 100644 modeldef.biggun create mode 100644 modeldef.bonesaw create mode 100644 modeldef.eightball create mode 100644 modeldef.flamegun create mode 100644 modeldef.gatling create mode 100644 modeldef.impaler create mode 100644 modeldef.napalm create mode 100644 modeldef.peacemaker create mode 100644 modeldef.quadshot create mode 100644 modeldef.razorjack create mode 100644 modeldef.rifle create mode 100644 modeldef.stunner create mode 100644 modeldef.ubiorifle create mode 100644 modeldef.uminigun create mode 100644 modeldef.utranslocator delete mode 100644 models/Chnk1_a.3d delete mode 100644 models/Chnk1_d.3d delete mode 100644 models/Chnk2_a.3d delete mode 100644 models/Chnk2_d.3d delete mode 100644 models/Chnk3_a.3d delete mode 100644 models/Chnk3_d.3d delete mode 100644 models/Chnk4_a.3d delete mode 100644 models/Chnk4_d.3d create mode 100644 models/ChnkX_a.3d create mode 100644 models/ChnkX_d.3d create mode 100644 models/JFlame2.png create mode 100644 models/JFlame3.png create mode 100644 models/JRocket1_.png create mode 100644 textures.biggun create mode 100644 textures.flamegun create mode 100644 textures.gatling create mode 100644 textures.impaler create mode 100644 textures.napalm create mode 100644 textures.peacemaker create mode 100644 textures.quadshot diff --git a/GunLore.md b/GunLore.md index 09ff4e8..08d2879 100644 --- a/GunLore.md +++ b/GunLore.md @@ -285,11 +285,15 @@ The weapon is completely useless if the user or target are underwater. ## Fireblaster Another Mercenary invention, and a direct evolution of the previously listed -Flamethrower. Shoots balls of flaming napalm stabilized by microgravity. +Flamethrower. Shoots green-ish fireballs stabilized by microgravity. -Primary fire: Single, steady shots. +Primary fire: Single, steady shots, or a rapid three shot burst in a horizontal +arc, depending on selected mode. Costs 10 units of napalm per projectile. -Secondary fire: A rapid three shot burst in a horizontal arc. +Secondary fire: A slowly charged fireball costing 20 units of napalm. Deals +more splash damage. + +Reload: Toggle between single shot and three-round burst fire for primary fire. Like its predecessor, the Fireblaster is obviously completely useless when water is involved. A very clever human scientist would eventually solve this, diff --git a/Readme.md b/Readme.md index 1ef20f7..15ad36c 100644 --- a/Readme.md +++ b/Readme.md @@ -13,6 +13,7 @@ Doom Tournament (currently the devel branch is required). - Dual Automags - Stinger (slot 3) (replaces shotguns) - ASMD (slot 4) (replaces shotguns) + - Flak Cannon (slot 6) (replaces rocket launcher) - Backpack (replaces backpack, identical to Doom Tournament version) - Unreal 1 HUD - Translator (has to be spawned in, since it would only be useful for mappers) @@ -37,7 +38,11 @@ Doom Tournament (currently the devel branch is required). ## In progress - - Flak Cannon (slot 6) (replaces rocket launcher) + - Eightball (slot 5) (replaces rocket launcher) + - Razorjack (slot 7) (replaces chaingun) + - GES Bio Rifle (slot 8) (replaces plasma rifle) + - Rifle (slot 9) (replaces plasma rifle) + - Minigun (slot 0) (replaces chaingun) - Flashlight (replaces light amplifier) - Searchlight (must be placed manually for balance reasons) @@ -46,28 +51,28 @@ Doom Tournament (currently the devel branch is required). ## Planned - - Implement Stinger behavior described in the Unreal Bible - - Eightball (slot 5) (replaces rocket launcher) - - Razorjack (slot 7) (replaces chaingun) - - Make altfire actually seek where player is aiming - - Unreal Bible spin speed behavior - - GES Bio Rifle (slot 8) (replaces plasma rifle) - - Rifle (slot 9) (replaces plasma rifle) - - Restored rapid fire - - Restored flashlight - - Minigun (slot 0) (replaces chaingun) + - Unreal Bible & prototype build behaviour restoration + - Stinger projectile remanence & explosion + - Razorjack hold fire to increase blade speed + - Rifle restored rapid fire + - Rifle restored flashlight - - Stunner (slot 1) (replaces chainsaw) + - QOL improvements + - Make Razorjack altfire actually seek where player is aiming + - Biorifle splashes like UT (toggleable) + - Single rocket mode for Eightball + + - Stunner (slot 4) (replaces chainsaw) - Razorclaw (slot 1) (replaces chainsaw) - - Teleport Capsule (slot 1) - - Proto Automag (slot 2) (replaces pistol) + - Teleport Capsules (slot 9) + - Protomag (slot 2) (replaces pistol) - Dual Protomags - Quadshot (slot 3) (replaces shotguns) - - Peacemaker (slot 5) (rare spawn in backpacks) - - Impaler (slot 4) (replaces plasma rifle) - - Flamethrower (slot 8) (replaces plasma rifle) - - Fireblaster (slot 7) (replaces rocket launcher) - - Demolisher (slot 9) (replaces bfg9000) + - Peacemaker (slot 8) (rare spawn in backpacks) + - Impaler (slot 7) (replaces plasma rifle) + - Flamethrower (slot 6) (replaces plasma rifle) + - Fireblaster (slot 5) (replaces rocket launcher) + - Demolisher (slot 0) (replaces bfg9000) - Autocannon (slot 0) (replaces bfg9000) - Motion Detector (replaces computer map) diff --git a/brightmaps/JNaliFruit1.png b/brightmaps/JNaliFruit1.png new file mode 100644 index 0000000000000000000000000000000000000000..a1fde70f7088e0fc957865b2150104e6226d55db GIT binary patch literal 15385 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 literal 0 HcmV?d00001 diff --git a/credits.txt b/credits.txt index ac826ae..1b85ec0 100644 --- a/credits.txt +++ b/credits.txt @@ -1,3 +1,5 @@ Models, textures and audio (C)1995-1999 Epic Games. +Additional audio (C) id Software and/or Bethesda, depending on what. + Porting and adjustments by Marisa Kirisame. diff --git a/gldefs.txt b/gldefs.txt index f83a276..769eed0 100644 --- a/gldefs.txt +++ b/gldefs.txt @@ -43,6 +43,28 @@ Object StingerAmmo2 { Frame "SAMO" { light "STINGERAMMOLIGHT2" } } +PointLight IMPAMMOLIGHT +{ + Color 0.9 0.2 1.0 + Size 28 + Offset 0 6 0 + Attenuate 1 +} +PointLight IMPAMMOLIGHT2 +{ + Color 0.9 0.2 1.0 + Size 12 + Offset 0 3 0 + Attenuate 1 +} +Object ImpalerAmmo +{ + Frame "IAMO" { light "IMPAMMOLIGHT" } +} +Object ImpalerAmmo2 +{ + Frame "IAMO" { light "IMPAMMOLIGHT2" } +} PointLight FLAKAMMOLIGHT { Color 0.1 0.4 0.0 @@ -64,6 +86,29 @@ Object StingerProjectile { Frame "TPRJA" { light "STINGERLIGHT" } } +PointLight UBIOAMMOLIGHT +{ + Color 0.3 1.0 0.1 + Size 12 + Offset 0 12 8 + Attenuate 1 +} +PointLight UBIOAMMOLIGHT2 +{ + Color 0.3 1.0 0.1 + Size 9 + Offset 0 8 0 + Attenuate 1 +} +Object UBioAmmo +{ + Frame "BIOA" { light "UBIOAMMOLIGHT" } + Frame "BIA2" { light "UBIOAMMOLIGHT" } +} +Object UBioAmmo2 +{ + Frame "BIOA" { light "UBIOAMMOLIGHT2" } +} PointLight DAMPENERLIGHT0 { @@ -242,6 +287,18 @@ Object DAmmo5 Frame "DISM" { light "DAMMOLIGHT5" } } +FlickerLight2 ASMDBALLLIGHT +{ + Color 0.3 0.7 1.0 + Size 72 + SecondarySize 80 + Interval 0.1 +} +Object AsmdBall +{ + Frame "TAZB" { light "ASMDBALLLIGHT" } +} + // Shaders / Brightmaps HardwareShader Texture "graphics/MenuBarr.png" { @@ -491,9 +548,9 @@ HardwareShader Texture "models/JInvisibility1.png" { Shader "shaders/glsl/AmbientGlow.fp" } -HardwareShader Texture "models/JNaliFruit1.png" +Brightmap Texture "models/JNaliFruit1.png" { - Shader "shaders/glsl/AmbientGlow.fp" + Map "brightmaps/JNaliFruit1.png" } HardwareShader Texture "models/JNapalm1_.png" { diff --git a/graphics/icons/I_FlareBD.png b/graphics/icons/I_FlarBD.png similarity index 100% rename from graphics/icons/I_FlareBD.png rename to graphics/icons/I_FlarBD.png diff --git a/graphics/icons/I_FlareBL.png b/graphics/icons/I_FlarBL.png similarity index 100% rename from graphics/icons/I_FlareBL.png rename to graphics/icons/I_FlarBL.png diff --git a/language.txt b/language.txt index ac3ecc8..dfa066f 100644 --- a/language.txt +++ b/language.txt @@ -53,7 +53,7 @@ I_IMPAMMO2 = "You picked up an Enriched Tarydium Shard."; I_FLAMEAMMO = "You picked up a can of Napalm."; I_BIGAMMOL = "You picked up "; I_BIGAMMOR = " Big Bullets."; -I_BIGAMMO2 = "You picked up a Big Bullet."; +I_BIGAMMO3 = "You picked up a Big Bullet."; I_DPISTOL = "You got the Dispersion Pistol."; I_AUTOMAG = "You picked up the Automag."; I_AUTOMAG2 = "You picked up another Automag."; @@ -262,7 +262,7 @@ I_IMPAMMO2 = "Has recogido un Fragmento de Tarydium Enriquecido."; I_FLAMEAMMO = "Has recogido una lata de Napalm."; I_BIGAMMOL = "Has recogido "; I_BIGAMMOR = " Grandes Balas."; -I_BIGAMMO2 = "Has recogido una Gran Bala."; +I_BIGAMMO3 = "Has recogido una Gran Bala."; I_DPISTOL = "Has obtenido una Pistola de Dispersión."; I_AUTOMAG = "Has recogido la Autoarma."; I_AUTOMAG2 = "Has recogido otra Autoarma."; diff --git a/modeldef.betamag b/modeldef.betamag new file mode 100644 index 0000000..ad31de5 --- /dev/null +++ b/modeldef.betamag @@ -0,0 +1,15 @@ +Model "Betamag" +{ + Path "models" + Model 1 "OldAutoMagPick_d.3d" + Skin 1 "AutoHand1_.png" + Scale 0.05 -0.05 0.06 + AngleOffset -90 + ZOffset 9 + + FrameIndex AUTP B 1 0 + + ZOffset 13 + ROTATING + FrameIndex AUTP A 1 0 +} diff --git a/modeldef.biggun b/modeldef.biggun new file mode 100644 index 0000000..4417b57 --- /dev/null +++ b/modeldef.biggun @@ -0,0 +1,44 @@ +Model "BigAmmo" +{ + Path "models" + Model 0 "BigGAmmoBox_d.3d" + SurfaceSkin 0 0 "Jclip1_.png" + SurfaceSkin 0 1 "RifleBul1.png" + Scale 0.15 0.15 0.18 + + FrameIndex BIGA A 0 0 +} +Model "BigAmmo2" +{ + Path "models" + Model 0 "BigGAmmo_d.3d" + Skin 0 "Jclip1_.png" + Scale 0.15 0.15 0.18 + + FrameIndex BIGA A 0 0 +} +Model "BigAmmo3" +{ + Path "models" + Model 0 "BigGAmmoSingle_d.3d" + Skin 0 "Jclip1_.png" + Scale 0.15 0.15 0.18 + + FrameIndex BIGA A 0 0 +} + +Model "BigGun" +{ + Path "models" + Model 1 "BigGPick_d.3d" + Skin 1 "JBigGun1_.png" + ZOffset 18 + AngleOffset 90 + Scale 0.12 0.12 0.144 + + FrameIndex BIGP B 1 0 + + ZOffset 20 + ROTATING + FrameIndex BIGP A 1 0 +} diff --git a/modeldef.bonesaw b/modeldef.bonesaw new file mode 100644 index 0000000..9ab990b --- /dev/null +++ b/modeldef.bonesaw @@ -0,0 +1,15 @@ +Model "Bonesaw" +{ + Path "models" + Model 1 "Bonesaw_d.3d" + Skin 1 "JBoneSw1_.png" + Scale 0.096 -0.08 0.096 + AngleOffset 180 + Offset 8 0 6 + + FrameIndex CSWP B 1 0 + + Offset 8 0 15 + ROTATING + FrameIndex CSWP A 1 0 +} diff --git a/modeldef.eightball b/modeldef.eightball new file mode 100644 index 0000000..84203ea --- /dev/null +++ b/modeldef.eightball @@ -0,0 +1,48 @@ +Model "URocketAmmo" +{ + Path "models" + Model 0 "RocketCanMesh_d.3d" + Skin 0 "JRocketCan1.png" + Scale 0.12 0.12 0.144 + ZOffset 7 + + FrameIndex RPAK A 0 0 + FrameIndex RPAK B 0 1 + FrameIndex RPAK C 0 2 + FrameIndex RPAK D 0 3 + FrameIndex RPAK E 0 4 + FrameIndex RPAK F 0 5 + FrameIndex RPAK G 0 6 + FrameIndex RPAK H 0 7 + FrameIndex RPAK I 0 8 + FrameIndex RPAK J 0 9 +} + +Model "URocketAmmo2" +{ + Path "models" + Model 0 "SingleRocketMesh_d.3d" + SurfaceSkin 0 0 "JRocketCan1.png" + SurfaceSkin 0 1 "JRocket1_.png" + Scale 0.05 0.05 0.056 + ZOffset 4 + + FrameIndex RCKT A 0 0 + FrameIndex RCKT B 0 1 +} + +Model "Eightball" +{ + Path "models" + Model 1 "EightPick_d.3d" + Skin 1 "JEightB1_.png" + ZOffset 4 + AngleOffset 90 + Scale 0.08 0.08 0.096 + + FrameIndex EBLP B 1 0 + + ZOffset 12 + ROTATING + FrameIndex EBLP A 1 0 +} diff --git a/modeldef.flamegun b/modeldef.flamegun new file mode 100644 index 0000000..7732daf --- /dev/null +++ b/modeldef.flamegun @@ -0,0 +1,14 @@ +Model "FlameGun" +{ + Path "models" + Model 1 "FlameGPick_d.3d" + Skin 1 "JFlameG1_.png" + ZOffset 6 + Scale 0.04 0.04 0.048 + + FrameIndex FGNP B 1 0 + + ZOffset 9 + ROTATING + FrameIndex FGNP A 1 0 +} diff --git a/modeldef.gatling b/modeldef.gatling new file mode 100644 index 0000000..58ad03b --- /dev/null +++ b/modeldef.gatling @@ -0,0 +1,14 @@ +Model "SMiniGun" +{ + Path "models" + Model 1 "SMiniPick_d.3d" + Skin 1 "Minigun_.png" + ZOffset 13 + Scale 0.2 0.2 0.24 + + FrameIndex SMIP B 1 0 + + ZOffset 13 + ROTATING + FrameIndex SMIP A 1 0 +} diff --git a/modeldef.impaler b/modeldef.impaler new file mode 100644 index 0000000..6b16a45 --- /dev/null +++ b/modeldef.impaler @@ -0,0 +1,43 @@ +Model "ImpalerAmmo" +{ + Path "models" + Model 0 "ImpalerAmmo_d.3d" + Skin 0 "JImpale1_.png" + Scale 0.25 0.25 0.3 + AngleOffset 90 + ZOffset 4 + + FrameIndex IAMO A 0 0 +} +Model "ImpalerAmmo2" +{ + Path "models" + Model 0 "ImpalerProj_d.3d" + Skin 0 "JImpale1_.png" + Scale 0.25 0.25 0.3 + AngleOffset 90 + ZOffset 2 + + FrameIndex IAMO A 0 0 +} + +Model "Impaler" +{ + Path "models" + Model 1 "ImpalerPickup_d.3d" + Skin 1 "JImpale1_.png" + Offset 8 0 6 + PitchOffset -5 + RollOffset 45 + AngleOffset 180 + Scale 0.2 -0.24 0.24 + + FrameIndex IMPP B 1 0 + + PitchOffset 0 + RollOffset 0 + Scale 0.2 -0.2 0.24 + Offset 8 0 12 + ROTATING + FrameIndex IMPP A 1 0 +} diff --git a/modeldef.napalm b/modeldef.napalm new file mode 100644 index 0000000..ff91980 --- /dev/null +++ b/modeldef.napalm @@ -0,0 +1,45 @@ +Model "FlameAmmo" +{ + Path "models" + Model 0 "steelbarrelM_d.3d" + Skin 0 "JNapalmAm1.png" + Scale -0.04 0.04 0.048 + AngleOffset 90 + RollOffset 180 + ZOffset 6 + + FrameIndex FLMA A 0 0 +} + +Model "UFlamethrower" +{ + Path "models" + Model 1 "FlameTPick_d.3d" + Skin 1 "JNapalm1_.png" + ZOffset 10 + AngleOffset -90 + Scale 0.1 0.1 0.12 + + FrameIndex FLMP B 1 0 + + ZOffset 12 + ROTATING + FrameIndex FLMP A 1 0 +} + +Model "UFlamethrower" +{ + Path "models" + Model 3 "FlameTOldPick_d.3d" + SurfaceSkin 3 0 "JNapalm1_.png" + SurfaceSkin 3 1 "Flamet_.png" + ZOffset 10 + AngleOffset -90 + Scale 0.1 0.1 0.12 + + FrameIndex OFLP B 3 0 + + ZOffset 12 + ROTATING + FrameIndex OFLP A 3 0 +} diff --git a/modeldef.peacemaker b/modeldef.peacemaker new file mode 100644 index 0000000..527a1f2 --- /dev/null +++ b/modeldef.peacemaker @@ -0,0 +1,15 @@ +Model "Peacemaker" +{ + Path "models" + Model 1 "peacepick_d.3d" + Skin 1 "Jpeacehand1_.png" + RollOffset 90 // normally upright, but it's easier to tell apart from a deployed one this way + ZOffset 5 + Scale 0.16 0.192 0.16 + + FrameIndex PEAP B 1 0 + + ZOffset 9 + ROTATING + FrameIndex PEAP A 1 0 +} diff --git a/modeldef.quadshot b/modeldef.quadshot new file mode 100644 index 0000000..638fa83 --- /dev/null +++ b/modeldef.quadshot @@ -0,0 +1,39 @@ +Model "UShells" +{ + Path "models" + Model 0 "ShellsM_d.3d" + Skin 0 "JQuadAm1_.png" + Scale 0.03 0.03 0.036 + AngleOffset 90 + ZOffset 3 + + FrameIndex QAMO A 0 0 +} + +Model "UShells2" +{ + Path "models" + Model 0 "ShellsSmallM_d.3d" + Skin 0 "JQuadAm1_.png" + Scale 0.03 0.03 0.036 + AngleOffset 90 + ZOffset 1.5 + + FrameIndex QAMO A 0 0 +} + +Model "Quadshot" +{ + Path "models" + Model 1 "QuadShotPickup_d.3d" + Skin 1 "GunPick1_.png" + ZOffset 6 + AngleOffset -90 + Scale 0.08 -0.08 0.096 + + FrameIndex QUAP B 1 0 + + ZOffset 12 + ROTATING + FrameIndex QUAP A 1 0 +} diff --git a/modeldef.razorjack b/modeldef.razorjack new file mode 100644 index 0000000..ccb2e6c --- /dev/null +++ b/modeldef.razorjack @@ -0,0 +1,28 @@ +Model "RazorAmmo" +{ + Path "models" + Model 0 "RazorAmmoMesh_d.3d" + Skin 0 "JPickup21.png" + ZOffset 8 + Scale 0.1 0.1 0.12 + + FrameIndex BHOP A 0 0 + FrameIndex BHOP B 0 1 +} + +Model "Razorjack" +{ + Path "models" + Model 1 "RazPick_d.3d" + Skin 1 "JRazor1_.png" + RollOffset -8 + AngleOffset 90 + ZOffset 2 + Scale 0.05 -0.05 0.06 + + FrameIndex RZRP B 1 0 + + ZOffset 13 + ROTATING + FrameIndex RZRP A 1 0 +} diff --git a/modeldef.rifle b/modeldef.rifle new file mode 100644 index 0000000..6b5bccb --- /dev/null +++ b/modeldef.rifle @@ -0,0 +1,37 @@ +Model "URifleAmmo" +{ + Path "models" + Model 0 "RifleBullets_d.3d" + Skin 0 "RifleBul1.png" + Scale 0.05 0.05 0.06 + ZOffset 9.5 + + FrameIndex SBOX A 0 0 +} + +Model "URifleAmmo2" +{ + Path "models" + Model 0 "RifleRoundM_d.3d" + Skin 0 "RifleR1.png" + Scale 0.04 0.04 0.048 + ZOffset 8 + + FrameIndex SRND A 0 0 +} + +Model "URifle" +{ + Path "models" + Model 1 "RiPick_d.3d" + Skin 1 "JRifle1_.png" + Scale 0.12 0.12 0.144 + AngleOffset 90 + ZOffset 6 + + FrameIndex SRFP B 1 0 + + ZOffset 12 + ROTATING + FrameIndex SRFP A 1 0 +} \ No newline at end of file diff --git a/modeldef.stunner b/modeldef.stunner new file mode 100644 index 0000000..3ee0b2c --- /dev/null +++ b/modeldef.stunner @@ -0,0 +1,14 @@ +Model "Stunner" +{ + Path "models" + Model 1 "StunnerPickup_d.3d" + Skin 1 "Stunner_.png" + Scale -0.04 0.04 0.048 + ZOffset 1.5 + + FrameIndex STNP B 1 0 + + ZOffset 4 + ROTATING + FrameIndex STNP A 1 0 +} diff --git a/modeldef.ubiorifle b/modeldef.ubiorifle new file mode 100644 index 0000000..cf5f40a --- /dev/null +++ b/modeldef.ubiorifle @@ -0,0 +1,76 @@ +Model "UBioAmmo" +{ + Path "models" + Model 0 "sludgemesh_d.3d" + Skin 0 "JPickup1.png" + Scale 0.08 -0.08 0.096 + ZOffset 7 + + FrameIndex BIOA A 0 0 + FrameIndex BIOA B 0 1 + FrameIndex BIOA C 0 2 + FrameIndex BIOA D 0 3 + FrameIndex BIOA E 0 4 + FrameIndex BIOA F 0 5 + FrameIndex BIOA G 0 6 + FrameIndex BIOA H 0 7 + FrameIndex BIOA I 0 8 + FrameIndex BIOA J 0 9 + FrameIndex BIOA K 0 10 + FrameIndex BIOA L 0 11 + FrameIndex BIOA M 0 12 + FrameIndex BIOA N 0 13 + FrameIndex BIOA O 0 14 + FrameIndex BIOA P 0 15 + FrameIndex BIOA Q 0 16 + FrameIndex BIOA R 0 17 + FrameIndex BIOA S 0 18 + FrameIndex BIOA T 0 19 + FrameIndex BIOA U 0 20 + FrameIndex BIOA V 0 21 + FrameIndex BIOA W 0 22 + FrameIndex BIOA X 0 23 + FrameIndex BIOA Y 0 24 + FrameIndex BIOA Z 0 25 + FrameIndex BIA2 A 0 26 + FrameIndex BIA2 B 0 27 + FrameIndex BIA2 C 0 28 + FrameIndex BIA2 D 0 29 +} +Model "UBioAmmo2" +{ + Path "models" + Model 0 "sludgemeshsmall_d.3d" + Skin 0 "JPickup1.png" + Scale 0.04 0.04 0.048 + ZOffset 1 + + FrameIndex BIOA A 0 0 + FrameIndex BIOA B 0 1 + FrameIndex BIOA C 0 2 + FrameIndex BIOA D 0 3 + FrameIndex BIOA E 0 4 + FrameIndex BIOA F 0 5 + FrameIndex BIOA G 0 6 + FrameIndex BIOA H 0 7 + FrameIndex BIOA I 0 8 + FrameIndex BIOA J 0 9 + FrameIndex BIOA K 0 10 + FrameIndex BIOA L 0 11 +} + +Model "UBioRifle" +{ + Path "models" + Model 1 "BRiflePick_d.3d" + Skin 1 "JBRifle1_.png" + Scale 0.2 -0.2 0.24 + AngleOffset 180 + ZOffset 0 + + FrameIndex BIOP B 1 0 + + ZOffset 6 + ROTATING + FrameIndex BIOP A 1 0 +} diff --git a/modeldef.uflak b/modeldef.uflak index 06057db..17467df 100644 --- a/modeldef.uflak +++ b/modeldef.uflak @@ -22,6 +22,36 @@ Model "UFlakAmmo" FrameIndex FAMO B 0 0 } +Model "UFlakChunk" +{ + Path "models" + Model 0 "ChnkX_d.3d" + Skin 0 "Jflakshel1.png" + Scale 0.05 0.05 0.06 + ZOffset 2 + USEACTORPITCH + USEACTORROLL + USEROTATIONCENTER + Rotation-Center 0 0 2 + + FrameIndex FCH1 A 0 0 + FrameIndex FCH2 A 0 1 + FrameIndex FCH3 A 0 2 + FrameIndex FCH4 A 0 3 +} + +Model "UFlakSlug" +{ + Path "models" + Model 0 "FlakSh_d.3d" + Skin 0 "Jflakshel1.png" + Scale 0.2 0.2 0.24 + AngleOffset 90 + USEACTORPITCH + + FrameIndex FSLG A 0 0 +} + Model "UFlakCannon" { Path "models" @@ -33,12 +63,11 @@ Model "UFlakCannon" FrameIndex FPCK B 1 0 - ZOffset 12 + ZOffset 13 ROTATING FrameIndex FPCK A 1 0 } - Model "UFlakCannon" { Path "models" diff --git a/modeldef.uminigun b/modeldef.uminigun new file mode 100644 index 0000000..13014c3 --- /dev/null +++ b/modeldef.uminigun @@ -0,0 +1,27 @@ +Model "UMiniAmmo" +{ + Path "models" + Model 0 "ShellBoxMesh_d.3d" + Skin 0 "JPickup21.png" + ZOffset 6 + AngleOffset 180 + Scale 0.2 0.2 0.24 + + FrameIndex MAMO A 0 0 +} + +Model "UMinigun" +{ + Path "models" + Model 1 "minipick_d.3d" + Skin 1 "minigun1_.png" + ZOffset 6 + AngleOffset -90 + Scale 0.08 0.08 0.096 + + FrameIndex MGNP B 1 0 + + ZOffset 12 + ROTATING + FrameIndex MGNP A 1 0 +} diff --git a/modeldef.umisc b/modeldef.umisc index 0415fbb..32646c5 100644 --- a/modeldef.umisc +++ b/modeldef.umisc @@ -388,7 +388,245 @@ Model "UJumpBoots" Model 0 "lboot_d.3d" Skin 0 "Jlboot1.png" Scale 0.06 0.06 0.072 + AngleOffset 180 ZOffset 6 FrameIndex JBUT A 0 0 } + +Model "UFlashlight" +{ + Path "models" + Model 0 "Flashl_d.3d" + Skin 0 "JFlashl1.png" + Scale 0.04 0.04 0.048 + AngleOffset 180 + ZOffset 2 + + FrameIndex SLIT A 0 0 +} + +Model "USearchlight" +{ + Path "models" + Model 0 "BigFlash_d.3d" + Skin 0 "JBigFlash1.png" + Scale 0.07 0.07 0.084 + AngleOffset -90 + ZOffset 9 + + FrameIndex SLIT A 0 0 +} + +Model "SentryItem" +{ + Path "models" + Model 0 "SentryPick_d.3d" + SurfaceSkin 0 0 "Minigun_.png" + SurfaceSkin 0 1 "minigun1_.png" + SurfaceSkin 0 2 "JRifle1_.png" + Scale 0.15 0.15 0.18 + ZOffset 38 + + FrameIndex SENT A 0 0 +} + +Model "MinigunSentry" +{ + Path "models" + Model 0 "SentryGun_d.3d" + SurfaceSkin 0 1 "Minigun_.png" + SurfaceSkin 0 2 "minigun1_.png" + Scale 0.15 0.15 0.18 + + // down + FrameIndex SENT A 0 0 + // raise + FrameIndex SENR A 0 0 + FrameIndex SENR B 0 1 + FrameIndex SENR C 0 2 + FrameIndex SENR D 0 3 + FrameIndex SENR E 0 4 + FrameIndex SENR F 0 5 + FrameIndex SENR G 0 6 + FrameIndex SENR H 0 7 + FrameIndex SENR I 0 8 + FrameIndex SENR J 0 9 + FrameIndex SENR K 0 10 + FrameIndex SENR L 0 11 + FrameIndex SENR M 0 12 + FrameIndex SENR N 0 13 + FrameIndex SENR O 0 14 + // idle + FrameIndex SENI A 0 14 + // windup + FrameIndex SENW A 0 14 + FrameIndex SENW B 0 15 + FrameIndex SENW C 0 16 + FrameIndex SENW D 0 17 + FrameIndex SENW E 0 18 + FrameIndex SENW F 0 19 + FrameIndex SENW G 0 20 + FrameIndex SENW H 0 21 + FrameIndex SENW I 0 22 + FrameIndex SENW J 0 23 + FrameIndex SENW K 0 24 + FrameIndex SENW L 0 25 + FrameIndex SENW M 0 26 + FrameIndex SENW N 0 27 + FrameIndex SENW O 0 28 + FrameIndex SENW P 0 29 + FrameIndex SENW Q 0 30 + FrameIndex SENW R 0 31 + // fire + FrameIndex SENF A 0 32 // shoot + FrameIndex SENF B 0 33 + FrameIndex SENF C 0 34 + FrameIndex SENF D 0 35 // shoot + FrameIndex SENF E 0 36 + FrameIndex SENF F 0 37 + FrameIndex SENF G 0 38 // shoot + FrameIndex SENF H 0 39 + FrameIndex SENF I 0 40 + FrameIndex SENF J 0 41 // shoot + FrameIndex SENF K 0 42 + FrameIndex SENF L 0 43 + FrameIndex SENF M 0 44 // shoot + FrameIndex SENF N 0 45 + FrameIndex SENF O 0 46 + FrameIndex SENF P 0 47 // shoot + FrameIndex SENF Q 0 48 + FrameIndex SENF R 0 49 + // unwind + FrameIndex SENU A 0 50 + FrameIndex SENU B 0 51 + FrameIndex SENU C 0 52 + FrameIndex SENU D 0 53 + FrameIndex SENU E 0 54 + FrameIndex SENU F 0 55 + FrameIndex SENU G 0 56 + FrameIndex SENU H 0 57 + FrameIndex SENU I 0 58 + FrameIndex SENU J 0 59 + FrameIndex SENU K 0 60 + FrameIndex SENU L 0 61 + FrameIndex SENU M 0 62 + FrameIndex SENU N 0 63 + FrameIndex SENU O 0 64 + FrameIndex SENU P 0 65 + FrameIndex SENU Q 0 66 + FrameIndex SENU R 0 67 +} + +Model "MinigunSentryBase" +{ + Path "models" + Model 0 "SentryBase_d.3d" + SurfaceSkin 0 0 "Minigun_.png" + SurfaceSkin 0 1 "minigun1_.png" + SurfaceSkin 0 2 "JRifle1_.png" + Scale 0.15 0.15 0.18 + ZOffset 38 + + // down + FrameIndex SENT A 0 0 + // raise + FrameIndex SENR A 0 0 + FrameIndex SENR B 0 1 + FrameIndex SENR C 0 2 + FrameIndex SENR D 0 3 + FrameIndex SENR E 0 4 + FrameIndex SENR F 0 5 + FrameIndex SENR G 0 6 + FrameIndex SENR H 0 7 + FrameIndex SENR I 0 8 + FrameIndex SENR J 0 9 + FrameIndex SENR K 0 10 + FrameIndex SENR L 0 11 + FrameIndex SENR M 0 12 + FrameIndex SENR N 0 13 + FrameIndex SENR O 0 14 + // idle + FrameIndex SENI A 0 14 + // windup + FrameIndex SENW A 0 14 + FrameIndex SENW B 0 15 + FrameIndex SENW C 0 16 + FrameIndex SENW D 0 17 + FrameIndex SENW E 0 18 + FrameIndex SENW F 0 19 + FrameIndex SENW G 0 20 + FrameIndex SENW H 0 21 + FrameIndex SENW I 0 22 + FrameIndex SENW J 0 23 + FrameIndex SENW K 0 24 + FrameIndex SENW L 0 25 + FrameIndex SENW M 0 26 + FrameIndex SENW N 0 27 + FrameIndex SENW O 0 28 + FrameIndex SENW P 0 29 + FrameIndex SENW Q 0 30 + FrameIndex SENW R 0 31 + // fire + FrameIndex SENF A 0 32 + FrameIndex SENF B 0 33 + FrameIndex SENF C 0 34 + FrameIndex SENF D 0 35 + FrameIndex SENF E 0 36 + FrameIndex SENF F 0 37 + FrameIndex SENF G 0 38 + FrameIndex SENF H 0 39 + FrameIndex SENF I 0 40 + FrameIndex SENF J 0 41 + FrameIndex SENF K 0 42 + FrameIndex SENF L 0 43 + FrameIndex SENF M 0 44 + FrameIndex SENF N 0 45 + FrameIndex SENF O 0 46 + FrameIndex SENF P 0 47 + FrameIndex SENF Q 0 48 + FrameIndex SENF R 0 49 + // unwind + FrameIndex SENU A 0 50 + FrameIndex SENU B 0 51 + FrameIndex SENU C 0 52 + FrameIndex SENU D 0 53 + FrameIndex SENU E 0 54 + FrameIndex SENU F 0 55 + FrameIndex SENU G 0 56 + FrameIndex SENU H 0 57 + FrameIndex SENU I 0 58 + FrameIndex SENU J 0 59 + FrameIndex SENU K 0 60 + FrameIndex SENU L 0 61 + FrameIndex SENU M 0 62 + FrameIndex SENU N 0 63 + FrameIndex SENU O 0 64 + FrameIndex SENU P 0 65 + FrameIndex SENU Q 0 66 + FrameIndex SENU R 0 67 +} + +Model "MotionDetector" +{ + Path "models" + Model 0 "DetectorMesh_d.3d" + Skin 0 "JDetector.png" + Scale 0.08 -0.08 0.096 + PitchOffset 3 + ZOffset 4 + + FrameIndex MDET A 0 0 +} + +Model "SCUBAGear" +{ + Path "models" + Model 0 "Scuba_d.3d" + Skin 0 "ASC1.png" + Scale 0.08 0.08 0.096 + AngleOffset -90 + ZOffset 11 + + FrameIndex SCUB A 0 0 +} diff --git a/modeldef.utranslocator b/modeldef.utranslocator new file mode 100644 index 0000000..e192af6 --- /dev/null +++ b/modeldef.utranslocator @@ -0,0 +1,15 @@ +Model "UTranslocator" +{ + Path "models" + Model 1 "TelePickup_d.3d" + Skin 1 "Ahand1_.png" + Scale 0.04 -0.04 0.048 + AngleOffset 90 + ZOffset 6 + + FrameIndex TLCP B 1 0 + + ZOffset 12 + ROTATING + FrameIndex TLCP A 1 0 +} diff --git a/models/Chnk1_a.3d b/models/Chnk1_a.3d deleted file mode 100644 index ad907b6ad62fcfad80be0ba9963b7fa5ac820d72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28 kcmZQ%kYM2W@$;)uc>^=Yf;Q%}=C+FW4gNm*ZLpUa0Fsvrpa1{> diff --git a/models/Chnk1_d.3d b/models/Chnk1_d.3d deleted file mode 100644 index 83239af506ebc04a6da8e7bb45250b30743833cb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmd;JU}GQ!FflMQure?(Ed6)=_x_g*42%p+3@i)`4Bu{j*uCR8h|kQx1m<7={r3;Z zWJa+3xqIJkf#ew&m>C!u7#PmoyZ-yzEe5bzApQGap1TK aI>zvq>397>L3aj+-*Ex|IJdDo`~v{c0v&w- diff --git a/models/Chnk2_d.3d b/models/Chnk2_d.3d deleted file mode 100644 index 375466f47d824c6574e06843c7c611ff79fbb215..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 496 zcmb1P5MUq$Ff%YQurn|)7~j@8B=d=Zfti7ufeFla*{O4gfq{>Kn}L~ufx+#J%TD9l zAU-1lH<%xL$z>-40}lf;Sik*q#9? z#=ywH3FgOMa(@EyDHm9O_k-qND<6RPY+&`>58~c7|6*X^XJ7*fGE`oUd)xg0#AgJH zR9=p~6!(^afrEhotiS(w_XCiA4hDX(`u^jUmqF@T82G_zvNu*#_(kf46F={3@l)N z?4|6D3=B*RykPx0hZs+T{LjR|3RbUkh;tX?X$A&v23Bx6F2#ODG21W)}1_lO~ Mow1h!*D^2w06ZOJNdN!< diff --git a/models/Chnk3_a.3d b/models/Chnk3_a.3d deleted file mode 100644 index cfdbd334c8ab5d27343bfc7d9a6f9a3d8777d973..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32 pcmZQ%kYV7yeo*LzDPmw3SJqPzVPIfoU;)c>>9LEm=z#c)U_D%V l%6jbL3=B*RtYCR|J1#wtJQD*W11kdq1G}BF9+w^i0|2YM2nGNE diff --git a/models/Chnk4_a.3d b/models/Chnk4_a.3d deleted file mode 100644 index a5bc11bd6bda56ba44408ff83a791ba0d5b7c456..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28 kcmZQ%kYM2W@$)Okf;Q&+27e#@HrUH-RNlaR*4$PR0Hp&9pa1{> diff --git a/models/Chnk4_d.3d b/models/Chnk4_d.3d deleted file mode 100644 index 6bd9a55eac9b9a4d545b5d7e3c8f55f25cfefc07..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 176 zcmd;JU}GQ!Ffy<*Ff%YP6dJ{ZG=(uRurM$(FflMNgqRf?rLltetPG4`eoRQA5y)f~ zu)LpZh?%_yh|kKv!oa}b=Nc0dV#WYA3#8v8#LpEZ&&KRGJx$Mrr zKluORI>vCA$%CO;=r{Y{ckLbjf5)-g3h73;{yxag{P}nPfAL-H%v{G9{xbcpKPc$V z;P5*x;2-BUc87ns?0fazkqH-8Kk$zM8y56nV4(zq!W$IUuy6*2Jt*9{uOAe8AXMufa?YGpGU`;II+0{Bu0rlKzc!DV8Z}jXTH$@ literal 0 HcmV?d00001 diff --git a/models/ChnkX_d.3d b/models/ChnkX_d.3d new file mode 100644 index 0000000000000000000000000000000000000000..e36fcbc1d92adeae67b4198165577e99c394430d GIT binary patch literal 912 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 Z(z3C)7oJwFcL$x<;pyt|8Wlw<$^ literal 0 HcmV?d00001 diff --git a/models/JFlame3.png b/models/JFlame3.png new file mode 100644 index 0000000000000000000000000000000000000000..6863f5cf16f3d6d49b33bfe786aae1f035d18b30 GIT binary patch literal 17606 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 CEDm}A literal 0 HcmV?d00001 diff --git a/textures.biggun b/textures.biggun new file mode 100644 index 0000000..c2cefc1 --- /dev/null +++ b/textures.biggun @@ -0,0 +1,3 @@ +Sprite "BIGAA0",1,1{} +Sprite "BIGPA0",1,1{} +Sprite "BIGSA0",1,1{} diff --git a/textures.flamegun b/textures.flamegun new file mode 100644 index 0000000..ecfadec --- /dev/null +++ b/textures.flamegun @@ -0,0 +1,3 @@ +Sprite "FGNPA0",1,1{} +Sprite "FGNSA0",1,1{} +Sprite "FIRBA0",1,1{} diff --git a/textures.gatling b/textures.gatling new file mode 100644 index 0000000..3f491f5 --- /dev/null +++ b/textures.gatling @@ -0,0 +1,2 @@ +Sprite "SMIPA0",1,1{} +Sprite "SMISA0",1,1{} diff --git a/textures.impaler b/textures.impaler new file mode 100644 index 0000000..5a42f3c --- /dev/null +++ b/textures.impaler @@ -0,0 +1 @@ +Sprite "IAMOA0",1,1{} diff --git a/textures.napalm b/textures.napalm new file mode 100644 index 0000000..4dafdbc --- /dev/null +++ b/textures.napalm @@ -0,0 +1,6 @@ +Sprite "FLMAA0",1,1{} +Sprite "FLMPA0",1,1{} +Sprite "OFLPA0",1,1{} +Sprite "FLMSA0",1,1{} +Sprite "OFLSA0",1,1{} +Sprite "NAPAA0",1,1{} diff --git a/textures.peacemaker b/textures.peacemaker new file mode 100644 index 0000000..06d5239 --- /dev/null +++ b/textures.peacemaker @@ -0,0 +1,4 @@ +Sprite "PEAPA0",1,1{} +Sprite "PEASA0",1,1{} +Sprite "PEAMA0",1,1{} +Sprite "PEARA0",1,1{} diff --git a/textures.quadshot b/textures.quadshot new file mode 100644 index 0000000..8f6a1c2 --- /dev/null +++ b/textures.quadshot @@ -0,0 +1,3 @@ +Sprite "QAMOA0",1,1{} +Sprite "QUAPA0",1,1{} +Sprite "QUASA0",1,1{} diff --git a/textures.umisc b/textures.umisc index 061758c..2ba867c 100644 --- a/textures.umisc +++ b/textures.umisc @@ -21,3 +21,5 @@ Sprite "SEEDA0",1,1{} Sprite "FRUTA0",1,1{} Sprite "FLARA0",1,1{} Sprite "SCUBA0",1,1{} +Sprite "MDETA0",1,1{} +Sprite "SENTA0",1,1{} diff --git a/zscript/asmd.zsc b/zscript/asmd.zsc index 56ad1cb..1adf27b 100644 --- a/zscript/asmd.zsc +++ b/zscript/asmd.zsc @@ -290,20 +290,25 @@ Class ViewASMDSpark : ShockSpark Class ASMDHitbox : ShockHitbox { - Default + override void Tick() { - Health 1; - +SHOOTABLE; - +NOBLOOD; - } - override void Die( Actor source, Actor inflictor, int dmgflags, Name MeansOfDeath ) - { - if ( target && target.InStateSequence(target.CurState,target.FindState("Spawn")) ) + Super.Tick(); + if ( !target ) return; + let t = ThinkerIterator.Create("ASMDHitbox"); + Actor a; + while ( a = Actor(t.Next()) ) { - target.bAMBUSH = true; - target.ExplodeMissile(); + if ( (a == self) || !(a is 'ASMDHitbox') || a.bAMBUSH || (Distance3D(a) > radius*2) ) continue; + a.bAMBUSH = true; + if ( a.target && a.target.InStateSequence(a.target.CurState,a.target.FindState("Spawn")) ) + a.target.ExplodeMissile(); + if ( !bAMBUSH ) + { + bAMBUSH = true; + if ( target && target.InStateSequence(target.CurState,target.FindState("Spawn")) ) + target.ExplodeMissile(); + } } - Super.Die(source,inflictor,dmgflags,MeansOfDeath); } } @@ -534,6 +539,8 @@ Class ASMDBeam : Actor UTMainHandler.DoSwing(target,(FRandom[ASMD](-0.1,-0.6),FRandom[ASMD](-0.1,0.5)),10,-2,3,SWING_Spring,3,6); } let b = t.Results.HitActor.target; + b.bAMBUSH = true; + b.ExplodeMissile(); b.pitch = 90; b.angle = 0; b.roll = 0; diff --git a/zscript/automag.zsc b/zscript/automag.zsc index e99c53e..cb1ba98 100644 --- a/zscript/automag.zsc +++ b/zscript/automag.zsc @@ -38,6 +38,11 @@ Class Automag : UnrealWeapon } return Super.HandlePickup(item); } + override String PickupMessage() + { + if ( Owner ) return Super.PickupMessage(); + return StringTable.Localize("$I_AUTOMAG2"); + } override Inventory CreateTossable( int amt ) { Inventory inv = Super.CreateTossable(amt); diff --git a/zscript/betamag.zsc b/zscript/betamag.zsc index 9f893f1..dbeb039 100644 --- a/zscript/betamag.zsc +++ b/zscript/betamag.zsc @@ -1,3 +1,29 @@ Class Betamag : UnrealWeapon { + Default + { + Tag "$T_BETAMAG"; + Inventory.Icon "I_ClipAm"; + Inventory.PickupMessage "$I_BETAMAG"; + Inventory.MaxAmount 1; + Inventory.InterHubAmount 2; + Weapon.UpSound "betamag/select"; + Weapon.SlotNumber 2; + Weapon.SelectionOrder 1; + Weapon.AmmoType "UMiniAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "UMiniAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 20; + Weapon.Kickback 320; + UTWeapon.DropAmmo 10; + } + States + { + Spawn: + AUTP A -1; + Stop; + AUTP B -1; + Stop; + } } diff --git a/zscript/biggun.zsc b/zscript/biggun.zsc index 20cb224..6863719 100644 --- a/zscript/biggun.zsc +++ b/zscript/biggun.zsc @@ -1,11 +1,79 @@ Class BigAmmo : Ammo { + Default + { + Tag "$T_BIGAMMO"; + Inventory.Icon "I_BigM"; + Inventory.PickupMessage ""; + Inventory.Amount 10; + Inventory.MaxAmount 30; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 60; + Ammo.DropAmount 10; + Inventory.RespawnTics 2100; + +INVENTORY.IGNORESKILL; + } + override String PickupMessage() + { + if ( PickupMsg.Length() > 0 ) return Super.PickupMessage(); + return String.Format("%s%d%s",StringTable.Localize("$I_BIGAMMOL"),Amount,StringTable.Localize("$I_BIGAMMOR")); + } + States + { + Spawn: + BIGA A -1; + Stop; + } } Class BigAmmo2 : BigAmmo { + Default + { + Tag "$T_BIGAMMO2"; + Inventory.Amount 3; + Ammo.DropAmount 3; + +INVENTORY.IGNORESKILL; + } +} + +Class BigAmmo3 : BigAmmo +{ + Default + { + Tag "$T_BIGAMMO3"; + Inventory.PickupMessage "$I_BIGAMMO3"; + Inventory.Amount 1; + Ammo.DropAmount 1; + +INVENTORY.IGNORESKILL; + } } Class BigGun : UnrealWeapon { + Default + { + Tag "$T_BIGGUN"; + Inventory.PickupMessage "$I_BIGGUN"; + Weapon.UpSound "big/select"; + Weapon.SlotNumber 0; + Weapon.SelectionOrder 0; + Weapon.AmmoType "BigAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "BigAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 10; + Inventory.RespawnTics 2100; + +INVENTORY.IGNORESKILL; + +WEAPON.NOAUTOFIRE; + UTWeapon.DropAmmo 5; + } + States + { + Spawn: + BIGP A -1; + Stop; + BIGP B -1; + Stop; + } } diff --git a/zscript/bonesaw.zsc b/zscript/bonesaw.zsc index 7fcf5e2..785268e 100644 --- a/zscript/bonesaw.zsc +++ b/zscript/bonesaw.zsc @@ -1,3 +1,22 @@ Class Bonesaw : UnrealWeapon { + Default + { + Tag "$T_BONESAW"; + Inventory.PickupMessage "$I_BONESAW"; + Weapon.UpSound "bonesaw/select"; + Weapon.SlotNumber 1; + Weapon.SelectionOrder 9; + +WEAPON.MELEEWEAPON; + +FORCEPAIN; + +NOEXTREMEDEATH; + } + States + { + Spawn: + CSWP A -1; + Stop; + CSWP B -1; + Stop; + } } diff --git a/zscript/dispersionpistol.zsc b/zscript/dispersionpistol.zsc index 2037965..baf85a6 100644 --- a/zscript/dispersionpistol.zsc +++ b/zscript/dispersionpistol.zsc @@ -18,19 +18,16 @@ Class WeaponPowerUp : Inventory damo.Amount = min(damo.MaxAmount,damo.Amount+10); } let dpis = DispersionPistol(toucher.FindInventory("DispersionPistol")); - if ( dpis && (dpis.upgradelevel < 4) ) + if ( dpis && (dpis.pendingupgrade < 4) ) { + dpis.pendingupgrade++; if ( toucher.player && (toucher.player.ReadyWeapon == dpis) && (toucher.player.PendingWeapon == WP_NOCHANGE) ) { - dpis.upgradelevel++; let psp = toucher.player.FindPSprite(PSP_Weapon); - psp.SetState(dpis.FindState("Upgrade")); - } - else - { - dpis.pendingupgrade = true; - ScriptUtil.SetWeapon(toucher,"DispersionPistol"); + if ( toucher.player.WeaponState&WF_WEAPONREADY ) + psp.SetState(dpis.FindState("Upgrade")); } + else ScriptUtil.SetWeapon(toucher,"DispersionPistol"); } GoAwayAndDie(); return true; @@ -478,8 +475,7 @@ Class DispLight5 : EnforcerLight Class DispersionPistol : UnrealWeapon { - int upgradelevel; - bool pendingupgrade; + int upgradelevel, pendingupgrade; double chargesize, count; bool bCharging; int MainUse, ChargeUse; @@ -725,12 +721,8 @@ Class DispersionPistol : UnrealWeapon Idle: #### # 0 { - if ( invoker.pendingupgrade ) - { - invoker.pendingupgrade = false; - invoker.upgradelevel++; + if ( invoker.pendingupgrade > invoker.upgradelevel ) return ResolveState("Upgrade"); - } A_Overlay(-9999,"Dummy"); if ( invoker.upgradelevel == 0 ) return ResolveState("Idle1"); else if ( invoker.upgradelevel == 1 ) return ResolveState("Idle2"); @@ -845,10 +837,11 @@ Class DispersionPistol : UnrealWeapon DPI5 A 6; Goto Idle; Upgrade: - #### # 0 + #### # 1 { A_Overlay(-9999,"Null"); invoker.MainUse = min(6,invoker.upgradelevel+1); + invoker.upgradelevel++; if ( invoker.upgradelevel == 0 ) return ResolveState("Idle"); else if ( invoker.upgradelevel == 1 ) return ResolveState("Upgrade1"); else if ( invoker.upgradelevel == 2 ) return ResolveState("Upgrade2"); diff --git a/zscript/flamegun.zsc b/zscript/flamegun.zsc index 2425954..931ff41 100644 --- a/zscript/flamegun.zsc +++ b/zscript/flamegun.zsc @@ -1,3 +1,25 @@ Class FlameGun : UnrealWeapon { + Default + { + Tag "$T_FLAMEGUN"; + Inventory.PickupMessage "$I_FLAMEGUN"; + Weapon.UpSound "flamegun/select"; + Weapon.SlotNumber 5; + Weapon.SelectionOrder 2; + Weapon.AmmoType "FlameAmmo"; + Weapon.AmmoUse 10; + Weapon.AmmoType2 "FlameAmmo"; + Weapon.AmmoUse2 20; + Weapon.AmmoGive 100; + UTWeapon.DropAmmo 25; + } + States + { + Spawn: + FGNP A -1; + Stop; + FGNP B -1; + Stop; + } } diff --git a/zscript/gatling.zsc b/zscript/gatling.zsc index 9ed84b3..35caa17 100644 --- a/zscript/gatling.zsc +++ b/zscript/gatling.zsc @@ -1,7 +1,40 @@ Class SMiniAmmo : Ammo { + Default + { + Inventory.Icon "I_SMini"; + Inventory.Amount 4; + Inventory.MaxAmount 16; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 32; + } } Class SMiniGun : UnrealWeapon { + Default + { + Tag "$T_SMINI"; + Inventory.PickupMessage "$I_SMINI"; + Weapon.UpSound "smini/select"; + Weapon.SlotNumber 0; + Weapon.SelectionOrder 1; + Weapon.AmmoType "SMiniAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "SMiniAmmo"; + Weapon.AmmoUse2 4; + Weapon.AmmoGive 8; + Inventory.RespawnTics 2100; + +INVENTORY.IGNORESKILL; + +WEAPON.NOAUTOFIRE; + UTWeapon.DropAmmo 4; + } + States + { + Spawn: + SMIP A -1; + Stop; + SMIP B -1; + Stop; + } } diff --git a/zscript/impaler.zsc b/zscript/impaler.zsc index 667c427..ebbac2f 100644 --- a/zscript/impaler.zsc +++ b/zscript/impaler.zsc @@ -1,10 +1,73 @@ Class ImpalerAmmo : Ammo { + Default + { + Tag "$T_IMPAMMO"; + Inventory.Icon "I_Impale"; + Inventory.PickupMessage "$T_IMPAMMO"; + Inventory.Amount 3; + Inventory.MaxAmount 15; + Ammo.BackpackAmount 3; + Ammo.BackpackMaxAmount 30; + Ammo.DropAmount 3; + +INVENTORY.IGNORESKILL; + } + States + { + Spawn: + IAMO A -1; + Stop; + } } Class ImpalerAmmo2 : ImpalerAmmo { + Default + { + Tag "$T_IMPAMMO2"; + Inventory.PickupMessage "$T_IMPAMMO2"; + Inventory.Amount 1; + Ammo.DropAmount 1; + +INVENTORY.IGNORESKILL; + } +} + +Class ImpalerCharge : Ammo +{ + Default + { + Inventory.Amount 100; + Inventory.MaxAmount 100; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 100; + +INVENTORY.IGNORESKILL; + } } Class Impaler : UnrealWeapon { + Default + { + Tag "$T_IMPALER"; + Inventory.PickupMessage "$I_IMPALER"; + Weapon.UpSound "impaler/select"; + Weapon.SlotNumber 7; + Weapon.SelectionOrder 0; + Weapon.AmmoType "ImpalerAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "ImpalerCharge"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive1 60; + Weapon.AmmoGive2 0; + UTWeapon.DropAmmo 30; + +WEAPON.AMMO_OPTIONAL; + +WEAPON.ALT_AMMO_OPTIONAL; + } + States + { + Spawn: + IMPP A -1; + Stop; + IMPP B -1; + Stop; + } } diff --git a/zscript/miscitems.zsc b/zscript/miscitems.zsc index 06152e0..5223417 100644 --- a/zscript/miscitems.zsc +++ b/zscript/miscitems.zsc @@ -708,14 +708,31 @@ Class BetaFlare : UnrealInventory if ( !sting_flares ) return false; // not allowed return Super.TryPickup(toucher); } + Default + { + Inventory.MaxAmount 1; + UnrealInventory.Charge 100; + +INVENTORY.UNDROPPABLE; + +INVENTORY.UNTOSSABLE; + } } Class LightFlare : BetaFlare { + Default + { + Tag "$T_LFLARES"; + Inventory.Icon "I_FlarBL"; + } } Class DarkFlare : BetaFlare { + Default + { + Tag "$T_DFLARES"; + Inventory.Icon "I_FlarBD"; + } } Class Dampener : UnrealInventory @@ -907,16 +924,101 @@ Class ForcefieldEffect : Actor Class UFlashlight : UnrealInventory { + Actor lt[3]; + + Default + { + Tag "$T_FLASHLIGHT"; + Inventory.Icon "I_Flashl"; + Inventory.MaxAmount 3; + Inventory.PickupMessage "$I_FLASHLIGHT"; + UnrealInventory.Charge 2800; + } + States + { + Spawn: + SLIT A -1; + Stop; + } } -Class USearchlight : UnrealInventory +Class USearchlight : UFlashlight { + Default + { + Tag "$T_SEARCHLIGHT"; + Inventory.Icon "I_BigFl"; + Inventory.MaxAmount 1; + Inventory.PickupMessage "$I_SEARCHLIGHT"; + Inventory.RespawnTics 1050; + UnrealInventory.Charge 70000; + } } Class SentryItem : UnrealInventory { + Default + { + Tag "$T_SENTRY"; + Inventory.Icon "I_Sentry"; + Inventory.MaxAmount 1; + Inventory.PickupMessage "$I_SENTRY"; + Inventory.RespawnTics 1050; + UnrealInventory.Charge 300; + } + States + { + Spawn: + SENT A -1; + Stop; + } } +// The "head" of the sentry, attaches to the body Class MinigunSentry : Actor { + States + { + Spawn: + SENT A 15; + SENT A 0 A_PlaySound("sentry/raise"); + SENR ABCDEFGHIJKLMNO 3; + Goto Idle; + Idle: + SENI A 1; + Wait; + Fire: + SENW ABCDEFGHIJKLMNOPQR 1; + Goto FireLoop; + FireLoop: + SENF ABCDEFGHIJKLMNOPQR 1; + Loop; + FireEnd: + SENU ABCDEFGHIJKLMNOPQR 1; + Goto Idle; + } +} + +// The body of the sentry +Class MinigunSentryBase : Actor +{ + States + { + Spawn: + SENT A 15; + SENR ABCDEFGHIJKLMNO 3; + Goto Idle; + Idle: + SENI A 1; + Wait; + Fire: + SENW ABCDEFGHIJKLMNOPQR 1; + Goto FireLoop; + FireLoop: + SENF ABCDEFGHIJKLMNOPQR 1; + Loop; + FireEnd: + SENU ABCDEFGHIJKLMNOPQR 1; + Goto Idle; + } } diff --git a/zscript/napalm.zsc b/zscript/napalm.zsc index 804ac2a..193ace3 100644 --- a/zscript/napalm.zsc +++ b/zscript/napalm.zsc @@ -1,7 +1,50 @@ Class FlameAmmo : Ammo { + Default + { + Tag "$T_FLAMEAMMO"; + Inventory.Icon "I_Napalm"; + Inventory.PickupMessage "$I_FLAMEAMMO"; + Inventory.Amount 75; + Inventory.MaxAmount 450; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 900; + Ammo.DropAmount 30; + } + States + { + Spawn: + FLMA A -1; + Stop; + } } Class UFlamethrower : UnrealWeapon { + Default + { + Tag "$T_FLAMETHROWER"; + Inventory.PickupMessage "$I_FLAMETHROWER"; + Weapon.UpSound "flamet/select"; + Weapon.SlotNumber 6; + Weapon.SelectionOrder 4; + Weapon.AmmoType "FlameAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "FlameAmmo"; + Weapon.AmmoUse2 30; + Weapon.AmmoGive 100; + UTWeapon.DropAmmo 50; + } + States + { + Spawn: + FLMP A 1 A_JumpIf(sting_flamet,2); + Wait; + FLMP B 1 A_JumpIf(sting_flamet,2); + Wait; + OFLP A 1 A_JumpIf(!sting_flamet,"Spawn"); + Wait; + OFLP B 1 A_JumpIf(!sting_flamet,"Spawn+1"); + Wait; + } } diff --git a/zscript/peacemaker.zsc b/zscript/peacemaker.zsc index 136eef2..373c9a9 100644 --- a/zscript/peacemaker.zsc +++ b/zscript/peacemaker.zsc @@ -1,7 +1,35 @@ Class PeaceAmmo : Ammo { + Default + { + Inventory.Icon "I_Peace"; + Inventory.Amount 1; + Inventory.MaxAmount 8; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 16; + } } Class Peacemaker : UnrealWeapon { + Default + { + Tag "$T_PEACE"; + Inventory.PickupMessage "$I_PEACE"; + Weapon.UpSound "peace/select"; + Weapon.SlotNumber 8; + Weapon.SelectionOrder 1; + Weapon.AmmoType "PeaceAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoGive 1; + UTWeapon.DropAmmo 1; + } + States + { + Spawn: + PEAP A -1; + Stop; + PEAP B -1; + Stop; + } } diff --git a/zscript/quadshot.zsc b/zscript/quadshot.zsc index ba54030..33e9545 100644 --- a/zscript/quadshot.zsc +++ b/zscript/quadshot.zsc @@ -1,11 +1,63 @@ Class UShells : Ammo { + Default + { + Tag "$T_SHELLS"; + Inventory.Icon "I_ShotSh"; + Inventory.PickupMessage ""; + Inventory.Amount 12; + Inventory.MaxAmount 60; + Ammo.BackpackAmount 12; + Ammo.BackpackMaxAmount 120; + Ammo.DropAmount 6; + } + override String PickupMessage() + { + if ( PickupMsg.Length() > 0 ) return Super.PickupMessage(); + return String.Format("%s%d%s",StringTable.Localize("$I_SHELLSL"),Amount,StringTable.Localize("$I_SHELLSR")); + } + States + { + Spawn: + QAMO A -1; + Stop; + } } Class UShells2 : UShells { + Default + { + Tag "$T_SHELLS2"; + Inventory.Amount 4; + Ammo.DropAmount 4; + +INVENTORY.IGNORESKILL; + } } Class QuadShot : UnrealWeapon { + Default + { + Tag "$T_QUADSHOT"; + Inventory.PickupMessage "$I_QUADSHOT"; + Weapon.UpSound "quadshot/select"; + Weapon.SlotNumber 3; + Weapon.SelectionOrder 2; + Weapon.AmmoType "UShells"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "UShells"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 20; + Weapon.Kickback 320; + UTWeapon.DropAmmo 10; + } + States + { + Spawn: + QUAP A -1; + Stop; + QUAP B -1; + Stop; + } } diff --git a/zscript/razorjack.zsc b/zscript/razorjack.zsc index c1bf0f2..f08c686 100644 --- a/zscript/razorjack.zsc +++ b/zscript/razorjack.zsc @@ -1,7 +1,51 @@ Class RazorAmmo : Ammo { + Default + { + Tag "$T_RIPPERAMMO"; + Inventory.Icon "I_RazorA"; + Inventory.PickupMessage "$I_RIPPERAMMO"; + Inventory.Amount 25; + Inventory.MaxAmount 75; + Ammo.BackpackAmount 20; + Ammo.BackpackMaxAmount 150; + Ammo.DropAmount 15; + } + States + { + Spawn: + BHOP A 8 A_CheckProximity(1,"PlayerPawn",80,1,CPXF_ANCESTOR|CPXF_CHECKSIGHT); + Wait; + BHOP AA 16; + BHOP B 8 A_CheckProximity(1,"PlayerPawn",80,0,CPXF_ANCESTOR|CPXF_CHECKSIGHT|CPXF_EXACT); + Goto Spawn+3; + BHOP BB 16; + Goto Spawn; + } } Class Razorjack : UnrealWeapon { + Default + { + Tag "$T_RAZORJACK"; + Inventory.PickupMessage "$I_RAZORJACK"; + Weapon.UpSound "razorjack/select"; + Weapon.SlotNumber 7; + Weapon.SelectionOrder 7; + Weapon.AmmoType "RazorAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "RazorAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 15; + UTWeapon.DropAmmo 10; + } + States + { + Spawn: + RZRP A -1; + Stop; + RZRP B -1; + Stop; + } } diff --git a/zscript/rifle.zsc b/zscript/rifle.zsc index 89c61a8..dc11a33 100644 --- a/zscript/rifle.zsc +++ b/zscript/rifle.zsc @@ -1,11 +1,69 @@ Class URifleAmmo : Ammo { + Default + { + Tag "$T_RIFLEAMMO"; + Inventory.PickupMessage ""; + Inventory.Amount 8; + Inventory.MaxAmount 50; + Ammo.BackpackAmount 12; + Ammo.BackpackMaxAmount 100; + Ammo.DropAmount 8; + +INVENTORY.IGNORESKILL; + } + override String PickupMessage() + { + if ( PickupMsg.Length() > 0 ) return Super.PickupMessage(); + return String.Format("%s%d%s",StringTable.Localize("$I_RIFLEAMMOL"),Amount,StringTable.Localize("$I_RIFLEAMMOR")); + } + States + { + Spawn: + SBOX A -1; + Stop; + } } Class URifleAmmo2 : URifleAmmo { + Default + { + Tag "$T_RIFLEAMMO2"; + Inventory.PickupMessage "$I_RIFLEAMMO2"; + Inventory.Amount 1; + Ammo.DropAmount 1; + +INVENTORY.IGNORESKILL; + } + States + { + Spawn: + SRND A -1; + Stop; + } } Class URifle : UnrealWeapon { + Default + { + Tag "$T_RIFLE"; + Inventory.PickupMessage "$I_RIFLE"; + Weapon.UpSound "rifle/select"; + Weapon.SlotNumber 9; + Weapon.SelectionOrder 9; + Weapon.AmmoType "URifleAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "URifleAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 8; + UTWeapon.DropAmmo 4; + } + States + { + Spawn: + SRFP A -1; + Stop; + SRFP B -1; + Stop; + } } diff --git a/zscript/stunner.zsc b/zscript/stunner.zsc index fd5a578..9555b6f 100644 --- a/zscript/stunner.zsc +++ b/zscript/stunner.zsc @@ -1,7 +1,50 @@ Class StunnerAmmo : Ammo { + double rechargephase, rechargespeed; + + Default + { + Inventory.Icon "I_Stun"; + Inventory.Amount 10; + Inventory.MaxAmount 50; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 50; + } + override void Tick() + { + Super.Tick(); + if ( !Owner ) return; + if ( Amount < 10 ) rechargespeed = 1.1; + else rechargespeed = 0.11*Amount; + rechargephase += 1./rechargespeed; + if ( rechargephase < 7 ) return; + rechargephase = 0; + Amount = min(Amount+1,MaxAmount); + } } Class Stunner : UnrealWeapon { + Default + { + Tag "$T_STUNNER"; + Inventory.PickupMessage "$I_STUNNER"; + Weapon.UpSound "stun/select"; + Weapon.SlotNumber 4; + Weapon.SelectionOrder 9; + Weapon.AmmoType "StunnerAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "StunnerAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 50; + UTWeapon.DropAmmo 50; + } + States + { + Spawn: + STNP A -1; + Stop; + STNP B -1; + Stop; + } } diff --git a/zscript/ubiorifle.zsc b/zscript/ubiorifle.zsc index 5b3e324..e682a5d 100644 --- a/zscript/ubiorifle.zsc +++ b/zscript/ubiorifle.zsc @@ -1,10 +1,67 @@ Class UBioAmmo : Ammo { + Default + { + Tag "$T_SLUDGE"; + Inventory.Icon "I_Sludge"; + Inventory.PickupMessage ""; + Inventory.Amount 25; + Inventory.MaxAmount 100; + Ammo.BackpackAmount 50; + Ammo.BackpackMaxAmount 200; + Ammo.DropAmount 10; + } + override String PickupMessage() + { + if ( PickupMsg.Length() > 0 ) return Super.PickupMessage(); + return String.Format("%s%d%s",StringTable.Localize("$I_SLUDGEL"),Amount,StringTable.Localize("$I_SLUDGER")); + } + States + { + Spawn: + BIOA ABCDEFGHIJKLMNOPQRSTUVWYZ 1; + BIA2 ABCD 1; + Loop; + } } Class UBioAmmo2 : UBioAmmo { + Default + { + Tag "$T_SLUDGE2"; + Inventory.Amount 10; + Ammo.DropAmount 5; + } + States + { + Spawn: + BIOA ABCDEFGHIJKL 2; + Loop; + } } Class UBioRifle : UnrealWeapon { + Default + { + Tag "$T_BIORIFLE"; + Inventory.PickupMessage "$I_BIORIFLE"; + Weapon.UpSound "ges/select"; + Weapon.SlotNumber 8; + Weapon.SelectionOrder 8; + Weapon.AmmoType "UBioAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "UBioAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 25; + UTWeapon.DropAmmo 5; + } + States + { + Spawn: + BIOP A -1; + Stop; + BIOP B -1; + Stop; + } } diff --git a/zscript/ueightball.zsc b/zscript/ueightball.zsc index c82c037..280c685 100644 --- a/zscript/ueightball.zsc +++ b/zscript/ueightball.zsc @@ -1,10 +1,78 @@ Class URocketAmmo : Ammo { + Default + { + Tag "$T_ROCKETCAN"; + Inventory.Icon "I_Rocket"; + Inventory.PickupMessage ""; + Inventory.Amount 12; + Inventory.MaxAmount 48; + Ammo.BackpackAmount 9; + Ammo.BackpackMaxAmount 96; + Ammo.DropAmount 6; + +INVENTORY.IGNORESKILL; + } + override String PickupMessage() + { + if ( PickupMsg.Length() > 0 ) return Super.PickupMessage(); + return String.Format("%s%d%s",StringTable.Localize("$I_ROCKETCANL"),Amount,StringTable.Localize("$I_ROCKETCANR")); + } + States + { + Spawn: + RPAK A 8 A_CheckProximity(1,"PlayerPawn",80,1,CPXF_ANCESTOR|CPXF_CHECKSIGHT); + Wait; + RPAK AABCDEFGHIJ 8; + RPAK J 8 A_CheckProximity(1,"PlayerPawn",80,0,CPXF_ANCESTOR|CPXF_CHECKSIGHT|CPXF_EXACT); + Goto Spawn+12; + RPAK JJIHGFEDCBA 8; + Goto Spawn; + } } Class URocketAmmo2 : URocketAmmo { + Default + { + Tag "$T_ROCKETCAN2"; + Inventory.Amount 2; + Ammo.DropAmount 2; + +INVENTORY.IGNORESKILL; + } + States + { + Spawn: + RCKT A 8 A_CheckProximity(1,"PlayerPawn",80,1,CPXF_ANCESTOR|CPXF_CHECKSIGHT); + Wait; + RCKT AA 8; + RCKT B 8 A_CheckProximity(1,"PlayerPawn",80,0,CPXF_ANCESTOR|CPXF_CHECKSIGHT|CPXF_EXACT); + Goto Spawn+3; + RCKT BB 8; + Goto Spawn; + } } Class Eightball : UnrealWeapon { + Default + { + Tag "$T_EIGHTBALL"; + Inventory.PickupMessage "$I_EIGHTBALL"; + Weapon.UpSound "eightball/select"; + Weapon.SlotNumber 5; + Weapon.SelectionOrder 5; + Weapon.AmmoType "URocketAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "URocketAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 6; + UTWeapon.DropAmmo 3; + } + States + { + Spawn: + EBLP A -1; + Stop; + EBLP B -1; + Stop; + } } diff --git a/zscript/uflakcannon.zsc b/zscript/uflakcannon.zsc index 72f13d3..ba735dd 100644 --- a/zscript/uflakcannon.zsc +++ b/zscript/uflakcannon.zsc @@ -43,6 +43,139 @@ Class UFlakAmmo : UFlakBox } } +// subclass to save time, much of the behavior is the same anyway +Class UFlakChunk : FlakChunk +{ + override void PostBeginPlay() + { + Actor.PostBeginPlay(); + // no trail, spin much slower + lifetime = 0; + rollvel = FRandom[Flak](5,10)*RandomPick[Flak](-1,1); + pitchvel = FRandom[Flak](5,10)*RandomPick[Flak](-1,1); + yawvel = FRandom[Flak](5,10)*RandomPick[Flak](-1,1); + scale *= Frandom[Flak](0.8,1.2); + SetState(ResolveState("Spawn")+Random[Flak](0,3)); + } + override void Tick() + { + oldvel = vel; + Actor.Tick(); + if ( isFrozen() ) return; + // no slowing down in water, only set to falling + if ( waterlevel > 0 ) + { + bNOGRAVITY = false; + bAMBUSH = true; + } + lifetime += lifespeed; + // no frame changes, smoke based on speed + age + if ( (waterlevel <= 0) && !bAMBUSH && !(GetAge()%2) ) + { + let s = Spawn("UTSmoke",pos); + s.vel = (FRandom[Flak](-0.1,0.1),FRandom[Flak](-0.1,0.1),FRandom[Flak](-0.1,0.1)); + s.alpha = (scale.x*clamp((120-GetAge())/120.+(vel.length()/20.),0.5,2.0))/0.5; + s.SetShade("AAAAAA"); + } + else if ( waterlevel > 0 ) + { + let s = Spawn("UTBubble",pos); + s.vel = (FRandom[Flak](-0.1,0.1),FRandom[Flak](-0.1,0.1),FRandom[Flak](-0.1,0.1)); + s.scale *= scale.x*0.5; + } + if ( InStateSequence(CurState,FindState("Death")) ) return; + roll += rollvel; + pitch += pitchvel; + angle += pitchvel; + } + Default + { + DamageFunction 17; // exactly 1 point higher than UT + Scale 0.5; + } + States + { + Bounce: + #### # 0 + { + A_HandleBounce(); + // override spin velocity changes from parent class + rollvel = FRandom[Flak](5,10)*RandomPick[Flak](-1,1); + pitchvel = FRandom[Flak](5,10)*RandomPick[Flak](-1,1); + yawvel = FRandom[Flak](5,10)*RandomPick[Flak](-1,1); + } + Goto Idle; + } +} + +// Also subclassed to save time, only the explosion needs to change +Class UFlakSlug : FlakSlug +{ + action void A_UFlakExplode() + { + bForceXYBillboard = true; + A_SetRenderStyle(1.0,STYLE_Add); + A_SprayDecal("RocketBlast",50); + A_NoGravity(); + A_SetScale(1.2); + UTMainHandler.DoBlast(self,120,75000); + A_Explode(70,120); + A_QuakeEx(4,4,4,8,0,170,"",QF_RELATIVE|QF_SCALEDOWN,falloff:120,rollIntensity:0.2); + A_PlaySound("flak/explode",CHAN_VOICE); + A_AlertMonsters(); + if ( !Tracer ) Spawn("SlugSmoke",pos); + Spawn("SlugLight",pos); + Vector3 x, y, z; + double a, s; + [x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll); + Actor p; + Vector3 spawnofs; + if ( BlockingMobj ) spawnofs = level.Vec3Diff(pos,BlockingMobj.Vec3Offset(0,0,BlockingMobj.height/2)).unit()*8; + else if ( BlockingFloor ) spawnofs = BlockingFloor.floorplane.Normal*8; + else if ( BlockingCeiling ) spawnofs = BlockingCeiling.ceilingplane.Normal*8; + else if ( BlockingLine ) + { + spawnofs = (-BlockingLine.delta.y,BlockingLine.delta.x,0).unit()*8; + if ( !BlockingLine.sidedef[1] || (CurSector == BlockingLine.frontsector) ) + spawnofs *= -1; + } + for ( int i=0; i<5; i++ ) + { + p = Spawn("UFlakChunk",Vec3Offset(spawnofs.x,spawnofs.y,spawnofs.z)); + p.bHITOWNER = true; + a = FRandom[Flak](0,360); + s = FRandom[Flak](0,0.1); + Vector3 dir = (x+y*cos(a)*s+z*sin(a)*s).unit(); + p.angle = atan2(dir.y,dir.x); + p.pitch = -asin(dir.z); + p.vel = (cos(p.angle)*cos(p.pitch),sin(p.angle)*cos(p.pitch),-sin(p.pitch))*(p.speed+FRandom[Flak](-3,3)); + p.target = target; + } + int numpt = Random[Flak](8,12); + for ( int i=0; i 0 ) return Super.PickupMessage(); return String.Format("%s%d%s",StringTable.Localize("$I_MINIAMMOL"),Amount,StringTable.Localize("$I_MINIAMMOR")); } + States + { + Spawn: + MAMO A -1; + Stop; + } } Class UMinigun : UnrealWeapon { + Default + { + Tag "$T_MINIGUN"; + Inventory.PickupMessage "$I_MINIGUN"; + Weapon.UpSound "minigun/select"; + Weapon.SlotNumber 0; + Weapon.SelectionOrder 10; + Weapon.AmmoType "UMiniAmmo"; + Weapon.AmmoUse 1; + Weapon.AmmoType2 "UMiniAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 50; + UTWeapon.DropAmmo 25; + } + States + { + Spawn: + MGNP A -1; + Stop; + MGNP B -1; + Stop; + } } diff --git a/zscript/unrealcommon.zsc b/zscript/unrealcommon.zsc index 6afb462..a9cf00b 100644 --- a/zscript/unrealcommon.zsc +++ b/zscript/unrealcommon.zsc @@ -78,6 +78,7 @@ Class UPlayer : UTPlayer { if ( !(AllActorClasses[i].GetParentClass() is "UnrealArmor") ) continue; let item = Inventory(Spawn(AllActorClasses[i])); + item.ClearCounters(); // don't increase item counts if ( !item.CallTryPickup(self) ) item.Destroy(); } if ( !giveall ) return; @@ -735,21 +736,13 @@ Class UnrealMainHandler : EventHandler if ( (e.Replacee == 'Chainsaw') || (e.Replacee == 'Gauntlets') ) { if ( !Random[Replacements](0,3) ) e.Replacement = 'WeaponPowerUp'; - else switch ( Random[Replacements](0,3) ) + else if ( Random[Replacements](0,2) ) { - case 0: - e.Replacement = 'Bonesaw'; - break; - case 1: - e.Replacement = 'Stunner'; - break; - case 2: - e.Replacement = 'Betamag'; - break; - case 3: - e.Replacement = 'Automag'; - break; + if ( Random[Replacements](0,1) ) e.Replacement = 'Bonesaw'; + else e.Replacement = 'Stunner'; } + else if ( !Random[Replacements](0,2) ) e.Replacement = 'Betamag'; + else e.Replacement = 'Automag'; } else if ( (e.Replacee == 'Fist') || (e.Replacee == 'Staff') ) e.Replacement = 'DispersionPistol'; else if ( (e.Replacee == 'Pistol') || (e.Replacee == 'GoldWand') ) @@ -794,7 +787,7 @@ Class UnrealMainHandler : EventHandler } else if ( (e.Replacee == 'PlasmaRifle') || (e.Replacee == 'SkullRod') ) { - if ( !Random[Replacements](0,3) ) e.Replacement = 'Impaler'; + if ( !Random[Replacements](0,2) ) e.Replacement = 'Impaler'; else if ( Random[Replacements](0,1) ) e.Replacement = 'URifle'; else e.Replacement = 'UBioRifle'; } @@ -868,7 +861,11 @@ Class UnrealMainHandler : EventHandler } else if ( (e.Replacee == 'Cell') || (e.Replacee == 'SkullRodAmmo') ) { - if ( !Random[Replacements](0,4) ) e.Replacement = 'BigAmmo2'; + if ( !Random[Replacements](0,4) ) + { + if ( !Random[Replacements](0,2) ) e.Replacement = 'BigAmmo2'; + else e.Replacement = 'BigAmmo3'; + } else if ( !Random[Replacements](0,3) ) { if ( !Random[Replacements](0,3) ) e.Replacement = 'ImpalerAmmo'; @@ -887,7 +884,11 @@ Class UnrealMainHandler : EventHandler } else if ( (e.Replacee == 'CellPack') || (e.Replacee == 'SkullRodHefty') ) { - if ( !Random[Replacements](0,4) ) e.Replacement = 'BigAmmo'; + if ( !Random[Replacements](0,4) ) + { + if ( !Random[Replacements](0,2) ) e.Replacement = 'BigAmmo'; + else e.Replacement = 'BigAmmo2'; + } else if ( !Random[Replacements](0,3) ) e.Replacement = 'ImpalerAmmo'; else if ( Random[Replacements](0,1) ) e.Replacement = 'UBioAmmo'; else e.Replacement = 'URifleAmmo'; diff --git a/zscript/unrealhud.zsc b/zscript/unrealhud.zsc index 378fd00..5b1d580 100644 --- a/zscript/unrealhud.zsc +++ b/zscript/unrealhud.zsc @@ -233,7 +233,7 @@ Class UnrealHUD : BaseStatusBar Screen.DrawTexture(IconBase,false,CurX,CurY,DTA_VirtualWidthF,ClipX,DTA_VirtualHeightF,ClipY,DTA_KeepRatio,true); Screen.DrawTexture(i.Icon,false,dx,dy,DTA_VirtualWidthF,dw,DTA_VirtualHeightF,dh,DTA_KeepRatio,true,DTA_TopOffset,0,DTA_LeftOffset,0); } - if ( (i is 'UnrealInventory') && (UnrealInventory(i).DefaultCharge > 0) ) + if ( (i is 'UnrealInventory') && (UnrealInventory(i).DefaultCharge > 0) && (UnrealInventory(i).bActive || (UnrealInventory(i).Charge < UnrealInventory(i).DefaultCharge)) ) Screen.DrawTexture(HudLine,false,CurX+2,CurY+29,DTA_VirtualWidthF,ClipX,DTA_VirtualHeightF,ClipY,DTA_KeepRatio,true,DTA_WindowRightF,Min(28.*(UnrealInventory(i).Charge/double(UnrealInventory(i).DefaultCharge)),28.)); else if ( (i is 'UTArmor') && !HudMode ) Screen.DrawTexture(HudLine,false,CurX+2,CurY+29,DTA_VirtualWidthF,ClipX,DTA_VirtualHeightF,ClipY,DTA_KeepRatio,true,DTA_WindowRightF,Min(28.*(i.Amount/double(i.MaxAmount)),28.)); diff --git a/zscript/upowerups.zsc b/zscript/upowerups.zsc index ba347be..2a1742b 100644 --- a/zscript/upowerups.zsc +++ b/zscript/upowerups.zsc @@ -270,8 +270,41 @@ Class UJumpBoots : UnrealInventory Class MotionDetector : UnrealInventory { + Default + { + Tag "$T_DETECTOR"; + +COUNTITEM; + +INVENTORY.BIGPOWERUP; + +INVENTORY.ALWAYSPICKUP; + Inventory.MaxAmount 1; + Inventory.Icon "I_Detect"; + Inventory.PickupMessage "$I_DETECTOR"; + Inventory.RespawnTics 1050; + UnrealInventory.Charge 3500; + } + States + { + Spawn: + MDET A -1; + Stop; + } } Class SCUBAGear : UnrealInventory { + Default + { + Tag "$T_SCUBA"; + Inventory.MaxAmount 1; + Inventory.Icon "I_Scuba"; + Inventory.PickupMessage "$I_SCUBA"; + Inventory.RespawnTics 700; + UnrealInventory.Charge 4200; + } + States + { + Spawn: + SCUB A -1; + Stop; + } } diff --git a/zscript/utranslocator.zsc b/zscript/utranslocator.zsc index accdf9b..68fa73a 100644 --- a/zscript/utranslocator.zsc +++ b/zscript/utranslocator.zsc @@ -1,5 +1,14 @@ Class UTranslocatorAmmo : Ammo { + Default + { + Inventory.Icon "I_Tele"; + Inventory.Amount 1; + Inventory.MaxAmount 2; + Ammo.BackpackAmount 0; + Ammo.BackpackMaxAmount 2; + +INVENTORY.IGNORESKILL; + } } Class UTranslocator : UnrealWeapon @@ -9,4 +18,27 @@ Class UTranslocator : UnrealWeapon if ( !sting_telegun ) return false; // not allowed return Super.TryPickup(toucher); } + Default + { + Tag "$T_TELEGUN"; + Inventory.PickupMessage "$I_TELEGUN"; + Weapon.SlotNumber 9; + Weapon.SelectionOrder 10; + Weapon.AmmoType1 "UTranslocatorAmmo"; + Weapon.AmmoUse1 1; + Weapon.AmmoType2 "UTranslocatorAmmo"; + Weapon.AmmoUse2 1; + Weapon.AmmoGive 2; + UTWeapon.DropAmmo 2; + +WEAPON.NO_AUTO_SWITCH; + +WEAPON.CHEATNOTWEAPON; + } + States + { + Spawn: + TLCP A -1; + Stop; + TLCP B -1; + Stop; + } }