From a14e43481b52653b7e8f1b29b74aba78eaee524f Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Sun, 27 May 2018 01:28:35 +0200 Subject: [PATCH] Translocator implemented. Tweaked some little things about the HUD, too. --- modeldef.transloc | 119 ++++++++++++ readme.txt | 2 +- sndinfo.txt | 6 + sounds/RTarget.wav | Bin 0 -> 9398 bytes sprites/TGLOA0.png | Bin 0 -> 3035 bytes textures.transloc | 82 ++++++++ zscript/translocator.zsc | 399 +++++++++++++++++++++++++++++++++++++++ zscript/utcommon.zsc | 5 + zscript/uthud.zsc | 12 +- 9 files changed, 619 insertions(+), 6 deletions(-) create mode 100644 sounds/RTarget.wav create mode 100644 sprites/TGLOA0.png diff --git a/modeldef.transloc b/modeldef.transloc index 87ea8b8..8f7f071 100644 --- a/modeldef.transloc +++ b/modeldef.transloc @@ -1,3 +1,18 @@ +Model "TranslocatorModule" +{ + Path "models" + Model 0 "Module_d.3d" + Skin 0 "tloc2_.png" + Scale -0.0672 0.056 0.056 + PitchOffset 90 + ZOffset 6 + USEACTORPITCH + + FrameIndex TMOD A 0 0 + FrameIndex TMOD B 0 1 + FrameIndex TMOD C 0 2 +} + Model "Translocator" { Path "models" @@ -25,3 +40,107 @@ Model "Translocator" FrameIndex TLCP B 1 0 } + +Model "Translocator" +{ + Path "models" + Model 0 "Transloc_d.3d" + SurfaceSkin 0 0 "tloc1.png" + SurfaceSkin 0 1 "tloc2.png" + SurfaceSkin 0 2 "tloc3.png" + SurfaceSkin 0 3 "tloc4.png" + Scale 0.11 0.055 0.11 + Offset -17.8 -22.8 -33.2 + PitchOffset 87 + RollOffset 5 + AngleOffset 183 + + // select + FrameIndex TLCS A 0 18 + FrameIndex TLCS B 0 19 + FrameIndex TLCS C 0 20 + FrameIndex TLCS D 0 21 + FrameIndex TLCS E 0 22 + FrameIndex TLCS F 0 23 + FrameIndex TLCS G 0 24 + FrameIndex TLCS H 0 25 + FrameIndex TLCS I 0 26 + FrameIndex TLCS J 0 27 + FrameIndex TLCS K 0 28 + FrameIndex TLCS L 0 29 + // throw + FrameIndex TLCF A 0 32 + FrameIndex TLCF B 0 33 + FrameIndex TLCF C 0 34 + FrameIndex TLCF D 0 35 + FrameIndex TLCF E 0 36 + FrameIndex TLCF F 0 37 + FrameIndex TLCF G 0 38 + FrameIndex TLCF H 0 39 + FrameIndex TLCF I 0 40 + FrameIndex TLCF J 0 41 + FrameIndex TLCF K 0 42 + FrameIndex TLCF L 0 43 + FrameIndex TLCF M 0 44 + FrameIndex TLCF N 0 45 + // pre reset + FrameIndex TLCF O 0 46 + FrameIndex TLCF P 0 47 + FrameIndex TLCF Q 0 48 + FrameIndex TLCF R 0 49 + FrameIndex TLCF S 0 50 + // idle + FrameIndex TLCI A 0 51 + FrameIndex TLCI B 0 52 + // down + FrameIndex TLCD A 0 66 + FrameIndex TLCD B 0 67 + FrameIndex TLCD C 0 68 + FrameIndex TLCD D 0 69 + FrameIndex TLCD E 0 70 + FrameIndex TLCD F 0 71 + FrameIndex TLCD G 0 72 + // thrown frame + FrameIndex TLCT A 0 52 + // thrown + FrameIndex TLCT B 0 53 + FrameIndex TLCT C 0 54 + FrameIndex TLCT D 0 55 + FrameIndex TLCT E 0 56 + FrameIndex TLCT F 0 57 + FrameIndex TLCT G 0 58 + FrameIndex TLCT H 0 59 + FrameIndex TLCT I 0 60 + FrameIndex TLCT J 0 61 + FrameIndex TLCT K 0 62 + FrameIndex TLCT L 0 63 + FrameIndex TLCT M 0 64 + // down 2 + FrameIndex TLD2 A 0 77 + FrameIndex TLD2 B 0 78 + FrameIndex TLD2 C 0 79 + FrameIndex TLD2 D 0 80 + FrameIndex TLD2 E 0 81 + FrameIndex TLD2 F 0 82 + FrameIndex TLD2 G 0 83 + // idle 2 + FrameIndex TLI2 A 0 88 + FrameIndex TLI2 B 0 89 + FrameIndex TLI2 C 0 90 + FrameIndex TLI2 D 0 91 + FrameIndex TLI2 E 0 92 + FrameIndex TLI2 F 0 93 + FrameIndex TLI2 G 0 94 + FrameIndex TLI2 H 0 95 + FrameIndex TLI2 I 0 96 + FrameIndex TLI2 J 0 97 + FrameIndex TLI2 K 0 98 + FrameIndex TLI2 L 0 99 + FrameIndex TLI2 M 0 100 + FrameIndex TLI2 N 0 101 + FrameIndex TLI2 O 0 102 + FrameIndex TLI2 P 0 103 + FrameIndex TLI2 Q 0 104 + FrameIndex TLI2 R 0 105 + FrameIndex TLI2 S 0 106 +} diff --git a/readme.txt b/readme.txt index 24d55ff..cb2f981 100644 --- a/readme.txt +++ b/readme.txt @@ -32,10 +32,10 @@ Currently implemented: - UT HUD - Impact Hammer (slot 1) - Chainsaw (slot 1) + - Translocator (slot 1) In progress: - - Translocator (slot 1) - Enforcer (slot 2) - Dual Enforcers (slot 2) - Ripper (slot 6) diff --git a/sndinfo.txt b/sndinfo.txt index 12337f1..5bbcb66 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -133,6 +133,12 @@ chainsaw/idle chainidl chainsaw/lower chainpdn chainsaw/fire sawhit +transloc/throw throwtgt +transloc/return rtarget +transloc/spark tdisrupt +transloc/bounce hit1 +transloc/hum targeth + ges/hit gelhit ges/select gelselec ges/fire gelshot diff --git a/sounds/RTarget.wav b/sounds/RTarget.wav new file mode 100644 index 0000000000000000000000000000000000000000..4c277143544f3827f58fdd2c9932d93a0075b63d GIT binary patch literal 9398 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

AT~ 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 pos.z-height)) ) + { + A_PlaySound("misc/i_pkup"); + target.Destroy(); + return; + } + } + } + States + { + Spawn: + TNT1 A 10 A_AlertMonsters(0,AMF_TARGETEMITTER); + Wait; + } +} + +Class TranslocatorGlowLight : DynamicLight +{ + Default + { + DynamicLight.Type "Point"; + Args 255,255,255,40; + } + override void Tick() + { + Super.Tick(); + if ( !target ) + { + Destroy(); + return; + } + SetOrigin(target.pos,true); + } +} + +Class TranslocatorGlow : Actor +{ + override void PostBeginPlay() + { + Super.PostBeginPlay(); + let l = Spawn("TranslocatorGlowLight",pos); + l.target = self; + l.args[0] = fillcolor.r; + l.args[1] = fillcolor.g; + l.args[2] = fillcolor.b; + } + override void Tick() + { + Super.Tick(); + if ( !target ) + { + Destroy(); + return; + } + SetOrigin(target.Vec3Offset(0,0,10),true); + } + Default + { + Radius 0.1; + Height 0; + +NOCLIP; + +NOGRAVITY; + +DONTSPLASH; + +FORCEXYBILLBOARD; + RenderStyle "AddShaded"; + StencilColor "FFFFFF"; + Scale 0.5; + } + States + { + Spawn: + TGLO A -1 Bright; + Stop; + } +} + +Class TranslocatorModule : Actor +{ + Actor b; + + Default + { + Radius 2; + Height 2; + Speed 20; + PROJECTILE; + -NOGRAVITY; + +USEBOUNCESTATE; + +SKYEXPLODE; + +HITTRACER; + BounceType "Doom"; + BounceFactor 0.5; + WallBounceFactor 0.5; + } + + override void PostBeginPlay() + { + Super.PostBeginPlay(); + if ( !target ) + { + Destroy(); + return; + } + b = Spawn("ModuleHitbox",pos); + b.target = self; + A_PlaySound("transloc/hum",CHAN_VOICE,0.5,true,2.0); + } + + override bool CanCollideWith( Actor other, bool passive ) + { + return (other != tracer); + } + + action void A_LightUp() + { + let l = Spawn("TranslocatorGlow",Vec3Offset(0,0,10)); + l.target = self; + if ( !target || !target.player ) return; + Color gcol; + if ( deathmatch && (target.player.GetTeam() < teams.size()) ) gcol = teams[target.player.GetTeam()].mName; + else gcol = target.player.GetColor(); + // maximize brightness + if ( (gcol.r+gcol.g+gcol.b) <= 0 ) gcol = "White"; + else + { + int maxcomp = max(gcol.r,max(gcol.g,gcol.b)); + int newr = int(gcol.r*(255./maxcomp)); + int newg = int(gcol.g*(255./maxcomp)); + int newb = int(gcol.b*(255./maxcomp)); + gcol = Color(newr,newg,newb); + } + l.SetShade(gcol); + } + + override void Tick() + { + Super.Tick(); + if ( bAMBUSH && !Random[Transloc](0,40) ) + { + A_PlaySound("transloc/spark"); + int numpt = Random[Transloc](20,40); + for ( int i=0; i