From e6420e16bee6482b7f750b71535e3ceda0556b05 Mon Sep 17 00:00:00 2001 From: Marisa Kirisame Date: Tue, 29 May 2018 21:14:06 +0200 Subject: [PATCH] Sniper rifle added, bullet impact mesh added. Only the RL remains. Headshots added/tweaked, and made compatible with the future announcer add-on. --- modeldef.eightball | 25 ++++++++ modeldef.enforcer | 61 ++++++++++++++++++ modeldef.rifle | 12 ++++ models/BulletImpact_a.3d | Bin 0 -> 284 bytes models/BulletImpact_d.3d | Bin 0 -> 720 bytes models/Impact_a00.png | Bin 0 -> 2815 bytes models/Impact_a01.png | Bin 0 -> 3040 bytes models/Impact_a02.png | Bin 0 -> 3066 bytes models/Impact_a03.png | Bin 0 -> 2802 bytes models/Impact_a04.png | Bin 0 -> 2605 bytes readme.txt | 2 +- textures.eightball | 3 +- textures.enforcer | 5 ++ textures.sniper | 1 + zscript/chainsaw.zsc | 6 +- zscript/eightball.zsc | 21 +++++++ zscript/enforcer.zsc | 47 +++++++++----- zscript/minigun.zsc | 22 +++++-- zscript/powerups.zsc | 5 ++ zscript/ripper.zsc | 7 ++- zscript/sniperrifle.zsc | 129 ++++++++++++++++++++++++++++++++++++++- zscript/utcommon.zsc | 2 + 22 files changed, 319 insertions(+), 29 deletions(-) create mode 100644 models/BulletImpact_a.3d create mode 100644 models/BulletImpact_d.3d create mode 100644 models/Impact_a00.png create mode 100644 models/Impact_a01.png create mode 100644 models/Impact_a02.png create mode 100644 models/Impact_a03.png create mode 100644 models/Impact_a04.png diff --git a/modeldef.eightball b/modeldef.eightball index 7cb37ea..c29badd 100644 --- a/modeldef.eightball +++ b/modeldef.eightball @@ -22,6 +22,31 @@ Model "UTRocketAmmo2" FrameIndex RCKT A 0 0 } +Model "UTGrenade" +{ + Path "models" + Model 0 "UTRocket_d.3d" + Skin 0 "JuRocket1.png" + Scale 0.07 0.0822 0.09864 + USEACTORPITCH + USEACTORROLL + AngleOffset -90 + + FrameIndex RCKT A 0 0 +} +Model "UTRocket" +{ + Path "models" + Model 0 "UTRocket_d.3d" + Skin 0 "JuRocket1.png" + Scale 0.07 0.0822 0.09864 + USEACTORPITCH + USEACTORROLL + AngleOffset -90 + + FrameIndex RCKT B 0 1 +} + Model "UTRocketLauncher" { Path "models" diff --git a/modeldef.enforcer b/modeldef.enforcer index 8e07c80..2c1c31d 100644 --- a/modeldef.enforcer +++ b/modeldef.enforcer @@ -27,6 +27,67 @@ Model "UTCasing" FrameIndex PCAS A 0 0 } +Model "BulletImpact" +{ + Path "models" + Model 0 "BulletImpact_d.3d" + Skin 0 "Impact_a00.png" + Scale 0.32 0.268 0.24 + PitchOffset -90 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + FrameIndex BIMP A 0 0 +} +Model "BulletImpact" +{ + Path "models" + Model 0 "BulletImpact_d.3d" + Skin 0 "Impact_a01.png" + Scale 0.32 0.268 0.24 + PitchOffset -90 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + FrameIndex BIMP B 0 0 +} +Model "BulletImpact" +{ + Path "models" + Model 0 "BulletImpact_d.3d" + Skin 0 "Impact_a02.png" + Scale 0.32 0.268 0.24 + PitchOffset -90 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + FrameIndex BIMP C 0 0 +} +Model "BulletImpact" +{ + Path "models" + Model 0 "BulletImpact_d.3d" + Skin 0 "Impact_a03.png" + Scale 0.32 0.268 0.24 + PitchOffset -90 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + FrameIndex BIMP D 0 0 +} +Model "BulletImpact" +{ + Path "models" + Model 0 "BulletImpact_d.3d" + Skin 0 "Impact_a04.png" + Scale 0.32 0.268 0.24 + PitchOffset -90 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + FrameIndex BIMP E 0 0 +} + Model "Enforcer" { Path "models" diff --git a/modeldef.rifle b/modeldef.rifle index 61a79f5..47497e6 100644 --- a/modeldef.rifle +++ b/modeldef.rifle @@ -43,6 +43,18 @@ Model "SniperRifle" FrameIndex SRFP B 1 0 } +Model "SniperRifle" +{ + Path "models" + Model 2 "Flat_d.3d" + Skin 2 "MuzzleFlash2.png" + AngleOffset 90 + PitchOffset 90 + Scale 0.12 0.12 0.12 + Offset 6.0 -40.0 -6.0 + + FrameIndex SMUZ A 2 0 +} Model "SniperRifle" { diff --git a/models/BulletImpact_a.3d b/models/BulletImpact_a.3d new file mode 100644 index 0000000000000000000000000000000000000000..8cceccfdd0b67af133b1f70fc1cf554b92c6c29c GIT binary patch literal 284 zcmZQ%kYJRZz?A!VIwJ!JYk#n3c#v+-z+unebT^-Y0fd+MGcs%}w`b4__-&)V!=3?z znJnxW92M*s_9{3AhB(+W$X;LoMg|amC(guhYC99dk{x^09S!Um zKsZmpo*`1hj^Ww=D%r2gZ5cpVeu6Cn+X5SgY=&y>lmc4@GXq-&F9|y^4lCcQzTvnX x0|;MzZ_BWCy)DB70|%9M1$zb%E}y}`kT$`d;Tb!d?tOV?25Acj{+-Um005e#QEC7H literal 0 HcmV?d00001 diff --git a/models/BulletImpact_d.3d b/models/BulletImpact_d.3d new file mode 100644 index 0000000000000000000000000000000000000000..f715e6d091a8f89fef51da001db0245c3df3e0fa GIT binary patch literal 720 zcmdO5aAP0^xH7mfI5IFW%uiaCw1Jg@L7%~pL6?Dnp=@pTQnhys42BE_V1D+}Y|9xKOc;#8{FKQFEg-%zgDIGw&=OY#;`1=@GH@|4Ftn_xT%GZk zfq|ES56rJzowo|a=VRao^Yd1vtN`&P7{nPw7#J9)FP^Y+-!}#ZF$PgEf5p7{3qgEQ z1_>~K{=(^tL3}F)O9pcW28PA67O(tzfPuk+!5Yk8*STskh;Pkc1?I1sym%If&&j~f zz{5Pr$JdJvz3ffLMMSHHFk#8+cbXHaHfU|5>DqUdW31A{t) zDww~bXk`tEufm`P<}Zs~nhD|?FzA89D|trfL{NA+GdO|6wGAWy z;mypz2#&6}g18jMR0akn1{N?sswuV-#Ajh(2J>Sp;|f50VFp14eg+1HoRpFnX;}sa zAqD|3KfWwI2gDa(5C-$pb8=EZd>IBQ21y16hRW#15Fa)M25AOaFh4D+AQ8luWsm{$ z3lb}%L3~991qL|=28Pb?iD3<_3=HxNN??9@SOb`^#GnY~H-vSDgXC=)>=|qr7#L=) z>{&VGHv@w`g9Dh~v$AOgi0{B)2j(}es9Fc&>o90DXn@jN%Cg*7atsXG3|e6RvfT9* RAigGp4wyeRW_}8Y4*<%Ik=OtL literal 0 HcmV?d00001 diff --git a/models/Impact_a00.png b/models/Impact_a00.png new file mode 100644 index 0000000000000000000000000000000000000000..28cfa456f1e973bb00a6843803919f91bc323abe GIT binary patch literal 2815 zcmeAS@N?(olHy`uVBq!ia0y~yU~m9o4rT@hhPm4t-!L#Ra29w(7Bet#3xhBt!>lpDdOcWSQ6dBAF7|hj~ z%{3XU6d9~l80^#;>~xqN^*J0(7@XA^ob?%;jX2yi8Qk=lJ#`qoOqjjw7<}~^e2o}_ zj2ME<8G@`Bf~>hiO&CJ0*+T6YBFq`0tr%jg8Di|%;@udMtQk`57}6aX(%qQTy%@5b z8S=c?3OyMLy%-9E7>Yd^ii3p8yco&?7^-|3ssb2lgBWT<*=nO1YGb4tA{ZLt6y98G7RxdXxAj#4t?AVwfDmFgb}~N)p4A6ox5<4AZk2W+gGqN@19l%{MDg zVNN>3{A`B#+009`8J6a;EiD#ZR?M&_k6}$Q^SWY&EtPCr8W^@TD{d`g*jmZ3wN`L< z6~pdY<^#D`h z@P8x2|BcN5w=n$QBKUtR!~fk3|M&9!-)r*!0K@;o4F3vM*sht{QqzM|G)MB|91cXJO2Og z{Qtl2|NjC1{|Ej5ANv1)^#A|atWkOC3=ABCo-U3d5r?l%_gpV~Rq*)gb5|a}t^UoI zFZYJMLsLQJh*H;t6Ky&ZHl5a+{pJ(vr=6Ql8wEN{6ka00bMP43&(;3^RJ1u2#eU-`#evS(P5$v=zLz�l$iI*WD%aKJPURFV)$`^qB|dv2J+b;H$&%wfA=0&Lhk7A7?To=`u7OUlAPf`q-YQlI}0KY&7CI9Jmkc zTr<%?zN59xRoh0u^^D(v{|~});~p@-3t-(MEbMyt`axmU+_j~gw|2=9 zoBN%9-4S>1#j0Mb-@f`!&-d-ucEv8-CHAeZ*y8%SkRN+=BOXY<4BDOj*7;eUu<7Nu zw)0E93Ti$pN`DS(jj_AWZqre;Av=3fRKNN1#NyiEZHsPQ_IAXwOi`67<3sJ zjPy%vp8l#e%jUhXKfQd;g7>#?Zux#~2j`+G7mhI~EUFXhh;WTk&yCpk6&HTHhHSaP@jLeZ(SL=q@sFo1blRHL#^39G`|gRw38&mX-hS#~0It#b*t!uA(lb_k$;dbNY!%dg_7dI%Ku+hDm%00nIi+j2B&d9%c{(-Mb zWgj<}vs~|Z=Ed!!cDh3K+mfdNddD+sT{};#xSSh&@$I&S_g-JAaY*)N^;x~$L`i6$ zM7ZO9@vRSc&5-Rot={UgL;B~D9gYrlRms0s+!f-Qz%LQ>AmgpfBC}xQ`6(|8{x7L= z@(^R-Qpr;`?Q|6i&pU5=jp>*JV{EO1a)0x;g;9Sh-XHqKEjHs=gu$#2Y*oi{!Z)Rb z)Yh{fVJl?}>)@ZDXnr{Q_)_=Yz-uvKi%L!nU&s03@4th4SC($onUxwB z`fL%u$BUmIzuw)d!BN}JDClYV^V93iUk(1=X>I&5|KIEno_>)%;HhhrpkL|YDQwlxTxO?FJzeu|hln6&YQyLK z_x40o&N`TDj#Dt-+$kIocPQjHb<>qcb@$NZ5--xcq-n&Bk{b!Ftm^FVR@( zJaubOw1L<`yS}EiZORq38?KyM@%2E!wi$7HrT^09nO>yMO^e**b1ZYB+Ua949E&Hu z2y&C1U;Lou)i1A|Wo1kaZL@Ef94&cqKl({(vfe9)jo#o&ex`g}^n&FsmK(Ri z7EECZezy7Oo(Zc0?WYHpO*^wrJ%%aHVP|GdKI^}_*N*~U>~j}%5L(=^)=N1lVe*oT zzjzYXvKBPmz1sJfeW5$^?!PauFBfOHEg#5|WRR}&Xl>Ymo-GEKpYKfA>at#x{Xtoh zBZrXEmHPAi8$W#CpO)aA)1VM3C-cW3F03^4y7=UiCT)R_T4eJCuh#4o^8Y5k{{P|h z9`m5-Vy291x@_jp>nU2Qf7RtW_nv9zO#~vvHTkPF*BUc0e7YrH|9aJ|#%p2Gxf5R$ zP2>r#)Z}`wqwsiYS)75MVQcn>v#;jY?I|?)5_a$ZlUXMZia4A}@(b_mb;>Wh662Zf zwPUg3{NwqTL}q3j{JWU{+IBlhx$681A&I{SZ!D3?f+|)l)t=N&H27N$}EJ@&HCr}@=sh( z3WLr~j#>SzD3JBFTh>ChyBBjG{V?BLk-PlQuO%Cq!=qDsmU);rJ*->AdN#ds-qWC1 zMuy`m(nn6;?iRZq-+8d?_lw<;N!P8m9(`o8#Yy;Kzu%;wYoCLzeM*;%$tm>7va+zW zi+X&TeOK3r=cb zX3JkLhLl`xubyrGOgblAoHrP0%WTL$|Ly2SleL#Kr|i|$nou70i0_2LGqyFARf{uw zFFkOn)R_Lc-(3C6a%)efCC`_?{b6vnkAJ#bYUX0`XO(kTDKEMEQ?a_9{mzrmMGJMm zWvuG`tZEcbA@7pd+&=aG`7I5G1*@(p z>-0}sb|xg)W9=7icD^j1;Hy!MtQ#yRIQWIn?$L}D+>#J)vr&R~rRI`l3=C5h6Wo;- zYOgx5=gNiFYm0QVSUbcRdX#ppntJV(=rXe{QMWeV<36zJ_@(-r8~Y_{_eJN<-}=ik wdA{BM|BKthH#HpCoPKxuE`j)8m;Wzopr0IF^$JOBUy literal 0 HcmV?d00001 diff --git a/models/Impact_a01.png b/models/Impact_a01.png new file mode 100644 index 0000000000000000000000000000000000000000..b09c7e8d6251f2429e6803b81cc9bc7c7c67ec53 GIT binary patch literal 3040 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 literal 0 HcmV?d00001 diff --git a/models/Impact_a03.png b/models/Impact_a03.png new file mode 100644 index 0000000000000000000000000000000000000000..08104cda2374a08ebb76d2b103c521f98567c7bd GIT binary patch literal 2802 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 Jmvv4FO#s_Zc~<}c literal 0 HcmV?d00001 diff --git a/models/Impact_a04.png b/models/Impact_a04.png new file mode 100644 index 0000000000000000000000000000000000000000..d661388fbfbe7b061c959f5d41460f8b7496c313 GIT binary patch literal 2605 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 (d.HitActor.pos.z+d.HitActor.height*0.8) ) + dmg = d.HitActor.DamageMobj(invoker,self,dmg*2,'Decapitated'); + else dmg = d.HitActor.DamageMobj(invoker,self,dmg,'slashed'); d.HitActor.vel = -y*(1200/d.HitActor.mass); vel += x*(100/mass); if ( d.HitActor.player ) d.HitActor.A_QuakeEx(5,5,5,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.25); diff --git a/zscript/eightball.zsc b/zscript/eightball.zsc index b84d42c..773bda6 100644 --- a/zscript/eightball.zsc +++ b/zscript/eightball.zsc @@ -36,6 +36,26 @@ Class UTRocketAmmo2 : UTRocketAmmo } } +Class UTRocket : Actor +{ + States + { + Spawn: + RCKT B 1; + Wait; + } +} + +Class UTGrenade : Actor +{ + States + { + Spawn: + RCKT A 1; + Wait; + } +} + Class UTRocketLauncher : UTWeapon { int loaded; @@ -43,6 +63,7 @@ Class UTRocketLauncher : UTWeapon Default { Tag "Rocket Launcher"; + //Obituary "%o was smacked down by %k's Rocket Launcher."; Inventory.PickupMessage "You got the Rocket Launcher."; Weapon.UpSound "utrl/select"; Weapon.SlotNumber 9; diff --git a/zscript/enforcer.zsc b/zscript/enforcer.zsc index 0673633..7355619 100644 --- a/zscript/enforcer.zsc +++ b/zscript/enforcer.zsc @@ -41,41 +41,48 @@ Class BulletImpact : Actor { Default { + RenderStyle "Add"; Radius 0.1; Height 0; +NOGRAVITY; +NOCLIP; +DONTSPLASH; + Scale 0.25; } override void PostBeginPlay() { Super.PostBeginPlay(); - A_SprayDecal("Pock",20); - int numpt = Random[Enforcer](5,10); + A_SprayDecal("Pock",-20); + int numpt = Random[Enforcer](5,10)*scale.x*4; Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); for ( int i=0; i victim.pos.z+victim.height*0.8 ) DamageType = 'Decapitated'; + return -1; + } override int DoSpecialDamage( Actor target, int damage, Name damagetype ) { - if ( pos.z > target.pos.z+target.height*0.8 ) damage *= 3; + if ( pos.z > target.pos.z+target.height*0.8 ) damage *= 2; if ( !target.bNOBLOOD ) { target.SpawnBlood(pos,AngleTo(target),damage); diff --git a/zscript/sniperrifle.zsc b/zscript/sniperrifle.zsc index 43550c9..0d28a02 100644 --- a/zscript/sniperrifle.zsc +++ b/zscript/sniperrifle.zsc @@ -35,11 +35,100 @@ Class RifleAmmo2 : RifleAmmo } } -Class SniperRifle : UTWeapon +Class SniperLight : EnforcerLight { + Default + { + args 255,224,64,120; + } +} + +Class SniperRifle : UTWeapon +{ + double sniperzoom; + TextureID reticle; + + override void PostBeginPlay() + { + Super.PostBeginPlay(); + reticle = TexMan.CheckForTexture("RReticle",Texman.Type_Any); + } + override void PreRender() + { + if ( sniperzoom <= 1.0 ) return; + Screen.DrawTexture(reticle,false,320,240,DTA_VirtualWidth,640,DTA_VirtualHeight,480); + Screen.DrawText(confont,Font.CR_DARKGREEN,192,160,String.Format("X%.1f",sniperzoom),DTA_Clean,true); + } + action void A_SniperFire( bool zoomed = false ) + { + Weapon weap = Weapon(invoker); + if ( !weap ) return; + if ( weap.Ammo1.Amount <= 0 ) return; + if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; + invoker.FireEffect(); + UTMainHandler.DoFlash(self,Color(32,0,0,255),1); + A_PlaySound("sniper/fire",CHAN_WEAPON); + A_AlertMonsters(); + if ( zoomed ) A_QuakeEx(2,2,2,3,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.09); + else + { + A_QuakeEx(3,3,3,6,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.12); + A_Overlay(-2,"MuzzleFlash"); + A_OverlayFlags(-2,PSPF_RENDERSTYLE|PSPF_FORCESTYLE,true); + A_OverlayRenderstyle(-2,STYLE_Add); + } + let l = Spawn("SniperLight",pos); + l.target = self; + Vector3 x, y, z; + [x, y, z] = Matrix4.GetAxes(pitch,angle,roll); + Vector3 origin = Vec2OffsetZ(0,0,player.viewz)+10.0*x; + if ( !zoomed ) origin = origin+y*4.0-z*2.0; + FLineTraceData d; + LineTrace(angle,10000,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + if ( d.HitType == TRACE_HitActor ) + { + int dmg = Random[Sniper](40,50); + if ( d.HitLocation.z >= (d.HitActor.pos.z+d.HitActor.height*0.8) ) + dmg = d.HitActor.DamageMobj(invoker,self,dmg+65,'Decapitated'); + else dmg = d.HitActor.DamageMobj(invoker,self,dmg,'shot'); + if ( d.HitActor.bNOBLOOD ) + { + let p = Spawn("BulletImpact",d.HitLocation); + p.scale *= 1.5; + p.angle = atan2(d.HitDir.y,d.HitDir.x)+180; + p.pitch = asin(d.HitDir.z); + } + else + { + d.HitActor.TraceBleed(dmg,self); + d.HitActor.SpawnBlood(d.HitLocation,atan2(d.HitDir.y,d.HitDir.x)+180,dmg); + } + } + else if ( d.HitType != TRACE_HitNone ) + { + Vector3 hitnormal = -d.HitDir; + if ( d.HitType == TRACE_HitFloor ) hitnormal = d.HitSector.floorplane.Normal; + else if ( d.HitType == TRACE_HitCeiling ) hitnormal = d.HitSector.ceilingplane.Normal; + else if ( d.HitType == TRACE_HitWall ) + { + hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); + if ( !d.LineSide ) hitnormal *= -1; + } + let p = Spawn("BulletImpact",d.HitLocation+hitnormal*0.01); + p.scale *= 1.5; + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + if ( d.HitLine ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation); + } + origin += x*8.0+y*6.0-z*9.0; + let c = Spawn("UTCasing",origin); + c.scale *= 1.25; + c.vel = x*FRandom[Junk](-2,2)+y*FRandom[Junk](3,6)+z*FRandom[Junk](3,5); + } Default { Tag "Sniper Rifle"; + Obituary "%k put a bullet through %o's head."; Inventory.PickupMessage "You got the Sniper Rifle."; Weapon.UpSound "sniper/select"; Weapon.SlotNumber 0; @@ -61,7 +150,7 @@ Class SniperRifle : UTWeapon SRFS A 1 A_Raise(int.max); Wait; Ready: - SRFS A 1; + SRFS A 1 A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT); SRFS B 2; SRFS C 1; SRFS D 2; @@ -85,7 +174,21 @@ Class SniperRifle : UTWeapon A_WeaponReady(); } Wait; + ZoomedIdle: + TNT1 A 1 + { + A_CheckReload(); + A_WeaponReady(); + } + Wait; Fire: + SRFI A 0 A_JumpIf(invoker.sniperzoom>1.0,"ZoomedFire"); + SRFI A 0 + { + A_SniperFire(); + return A_Jump(256,1,11,21,31,41); + } + Goto Idle; SRF1 ABCDEFGHIJ 2; Goto Idle; SRF2 ABCDEFGHIJ 2; @@ -96,9 +199,31 @@ Class SniperRifle : UTWeapon Goto Idle; SRF5 ABCDEFGHIJ 2; Goto Idle; + ZoomedFire: + TNT1 A 20 A_SniperFire(true); + Goto ZoomedIdle; + AltFire: + SRFI A 0 A_JumpIf(invoker.sniperzoom>1.0,"AltHold2"); + AltHold: + TNT1 A 1 + { + if ( invoker.sniperzoom <= 8.0 ) + A_ZoomFactor(invoker.sniperzoom*=1.1); + invoker.sniperzoom = min(invoker.sniperzoom,8.1); + } + TNT1 A 0 A_Refire("AltHold"); + Goto ZoomedIdle; + AltHold2: + SRFI A 1 A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT); + SRFI A 0 A_Refire("AltHold2"); + Goto Idle; Deselect: + SRFD A 0 A_ZoomFactor(invoker.sniperzoom=1.0,ZOOM_INSTANT); SRFD ABCDEFG 2; SRFD G 1 A_Lower(int.max); Wait; + MuzzleFlash: + SMUZ A 3 Bright; + Stop; } } diff --git a/zscript/utcommon.zsc b/zscript/utcommon.zsc index b3c85b1..dabeb42 100644 --- a/zscript/utcommon.zsc +++ b/zscript/utcommon.zsc @@ -176,7 +176,9 @@ Class RandomSpawner2 : RandomSpawner Class UTWeapon : Weapon { + // Drawstuffs under HUD virtual ui void PreRender() {} + // Drawstuffs over HUD virtual ui void PostRender() {} override Inventory CreateTossable( int amt )