diff --git a/cvarinfo.txt b/cvarinfo.txt index a5f75e5..9f7923e 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -28,3 +28,5 @@ server bool flak_doomaircontrol = false; // keep Doom's limited air control when server bool flak_nobosstelefrag = false; // disable telefragging of boss monsters (useful when translocator is enabled) server bool flak_nowalkdrop = false; // don't drop off ledges while holding walk key (glitchy) server bool flak_corpsedamage = false; // [WIP/EXPERIMENTAL] allow corpses to take damage and be gibbed, currently just causes a jump to XDeath until gore system is implemented +server bool flak_swingers = true; // weapon recoil that affects player view +server float flak_swingerstrength = 0.5; // strength of visual recoil diff --git a/menudef.txt b/menudef.txt index 59308de..f96236f 100644 --- a/menudef.txt +++ b/menudef.txt @@ -26,6 +26,8 @@ OptionMenu "UTOptionMenu" Option "Redeemer View Shader", "flak_deemershader", "YesNo" Option "No Redeemer Autoswitch", "flak_noswitchdeemer", "YesNo" Option "Classic Enh. Shock Rifle", "flak_classicsshock", "YesNo" + Option "Visual Recoil", "flak_swingers", "YesNo" + Slider "Visual Recoil Strength", "flak_swingerstrength", 0.0, 1.0, 0.1, 1 StaticText " " StaticText "Translocator (Potentially Game-Breaking)", "Gold" Option "Prevent Boss Telefrag", "flak_nobosstelefrag", "YesNo" diff --git a/modeldef.ripper b/modeldef.ripper index a6419bb..96b9504 100644 --- a/modeldef.ripper +++ b/modeldef.ripper @@ -34,7 +34,6 @@ Model "Razor2" Scale 0.18 0.18 0.216 AngleOffset 90 USEACTORPITCH - USEACTORROLL FrameIndex RAZB A 0 0 } @@ -48,7 +47,6 @@ Model "Razor2Trail" Scale 0.36 0.18 0.216 AngleOffset 90 USEACTORPITCH - USEACTORROLL DONTCULLBACKFACES FrameIndex RAZB A 0 0 diff --git a/zscript/biorifle.zsc b/zscript/biorifle.zsc index 5058df1..38c70e7 100644 --- a/zscript/biorifle.zsc +++ b/zscript/biorifle.zsc @@ -216,9 +216,9 @@ Class BioGel : Actor if ( globalfreeze || level.frozen ) return; if ( !bNOGRAVITY ) { - A_SetRoll(roll+rollvel,SPF_INTERPOLATE); - A_SetPitch(pitch+pitchvel,SPF_INTERPOLATE); - A_SetPitch(pitch+yawvel,SPF_INTERPOLATE); + roll += rollvel; + pitch += pitchvel; + pitch += yawvel; if ( waterlevel > 0 ) { vel.xy *= 0.98; @@ -288,6 +288,7 @@ Class BioGel : Actor // align self to what surface was hit, currently does not support 3d floors + slopes properly virtual void AlignSelf() { + bINTERPOLATEANGLES = false; bHITOWNER = true; A_NoGravity(); A_Stop(); @@ -538,6 +539,7 @@ Class BioGel : Actor +MOVEWITHSECTOR; +NODAMAGETHRUST; +HITTRACER; + +INTERPOLATEANGLES; } States { diff --git a/zscript/eightball.zsc b/zscript/eightball.zsc index aeae521..9b4d168 100644 --- a/zscript/eightball.zsc +++ b/zscript/eightball.zsc @@ -118,6 +118,7 @@ Class UTRocket : Actor +SEEKERMISSILE; +FORCERADIUSDMG; +NODAMAGETHRUST; + +INTERPOLATEANGLES; } override void PostBeginPlay() { @@ -184,7 +185,7 @@ Class UTRocket : Actor Spawn: RCKT B 1 { - A_SetRoll(roll+30,SPF_INTERPOLATE); + roll += 30; if ( invoker.ticcnt++ > 3 ) { invoker.ticcnt = 0; @@ -194,8 +195,8 @@ Class UTRocket : Actor if ( vel.length() > 45. ) vel = Vel.unit()*45.; Vector3 dir = vel.unit(); if ( waterlevel <= 0 ) vel = dir*min(vel.length()+1,32); - A_SetAngle(atan2(dir.y,dir.x),SPF_INTERPOLATE); - A_SetPitch(asin(-dir.z),SPF_INTERPOLATE); + angle = atan2(dir.y,dir.x); + pitch = asin(-dir.z); for ( int i=0; i<3; i++ ) { let s = Spawn("UTSmoke",pos); @@ -242,9 +243,9 @@ Class UTGrenade : UTRocket Spawn: RCKT A 1 { - A_SetAngle(angle+anglevel,SPF_INTERPOLATE); - A_SetPitch(pitch+pitchvel,SPF_INTERPOLATE); - A_SetRoll(roll+rollvel,SPF_INTERPOLATE); + angle += anglevel; + pitch += pitchvel; + roll += rollvel; A_Countdown(); } Wait; diff --git a/zscript/enforcer.zsc b/zscript/enforcer.zsc index 85170ba..4e69a26 100644 --- a/zscript/enforcer.zsc +++ b/zscript/enforcer.zsc @@ -101,6 +101,7 @@ Class UTCasing : Actor +MOVEWITHSECTOR; +THRUACTORS; +USEBOUNCESTATE; + +INTERPOLATEANGLES; BounceType "Doom"; BounceFactor 0.65; BounceSound "bullet/casing"; @@ -133,8 +134,8 @@ Class UTCasing : Actor Spawn: PCAS A 1 { - A_SetAngle(angle+anglevel,SPF_INTERPOLATE); - A_SetPitch(pitch+pitchvel,SPF_INTERPOLATE); + angle += anglevel; + pitch += pitchvel; } Loop; Bounce: @@ -148,8 +149,8 @@ Class UTCasing : Actor Death: PCAS A -1 { - A_SetPitch(0); - A_SetRoll(FRandom[Junk](0,360)); + pitch = 0; + roll = FRandom[Junk](0,360); } Stop; } @@ -166,7 +167,7 @@ Class Enforcer : UTWeapon override void PostRender( double lbottom ) { - if ( !CVar.GetCVar('flak_enforcerreload').GetBool() ) return; + if ( !flak_enforcerreload ) return; if ( Amount > 1 ) Screen.DrawText(confont,Font.CR_GREEN,Screen.GetWidth()*0.01,lbottom-Screen.GetHeight()*0.01-confont.GetHeight()*2,String.Format("L Clip: %2d / 20\nR Clip: %2d / 20",slaveclipcount,clipcount)); else Screen.DrawText(confont,Font.CR_GREEN,Screen.GetWidth()*0.01,lbottom-Screen.GetHeight()*0.01-confont.GetHeight(),String.Format("Clip: %2d / 20",clipcount)); } @@ -209,7 +210,7 @@ Class Enforcer : UTWeapon if ( !weap || !player ) return; if ( slave ) { - if ( CVar.GetCVar('flak_enforcerreload').GetBool() && (invoker.slaveclipcount < 5) ) A_PlaySound("enforcer/click",CHAN_6); + if ( flak_enforcerreload && (invoker.slaveclipcount < 5) ) A_PlaySound("enforcer/click",CHAN_6); if ( (invoker.slaveclipcount <= 0) || (weap.Ammo1.Amount <= 0) ) { invoker.slaverefire = 0; @@ -236,7 +237,7 @@ Class Enforcer : UTWeapon } else { - if ( CVar.GetCVar('flak_enforcerreload').GetBool() && (invoker.clipcount < 5) ) A_PlaySound("enforcer/click",CHAN_WEAPON); + if ( flak_enforcerreload && (invoker.clipcount < 5) ) A_PlaySound("enforcer/click",CHAN_WEAPON); if ( (invoker.clipcount <= 0) || (weap.Ammo1.Amount <= 0) ) { A_ClearRefire(); @@ -273,12 +274,12 @@ Class Enforcer : UTWeapon if ( slave ) { invoker.slaveclipcount--; - if ( !CVar.GetCVar('flak_enforcerreload').GetBool() && (invoker.slaveclipcount <=0) ) invoker.slaveclipcount = (weap.Ammo1.Amount>0)?Min(20,weap.Ammo1.Amount):20; + if ( !flak_enforcerreload && (invoker.slaveclipcount <=0) ) invoker.slaveclipcount = (weap.Ammo1.Amount>0)?Min(20,weap.Ammo1.Amount):20; } else { invoker.clipcount--; - if ( !CVar.GetCVar('flak_enforcerreload').GetBool() && (invoker.clipcount <=0) ) invoker.clipcount = (weap.Ammo1.Amount>0)?Min(20,weap.Ammo1.Amount):20; + if ( !flak_enforcerreload && (invoker.clipcount <=0) ) invoker.clipcount = (weap.Ammo1.Amount>0)?Min(20,weap.Ammo1.Amount):20; } invoker.FireEffect(); UTMainHandler.DoFlash(self,Color(32,255,128,0),1); @@ -441,7 +442,7 @@ Class Enforcer : UTWeapon TNT1 A 1 { if ( (invoker.clipcount <= 0) && (invoker.Ammo1.Amount > 0) ) A_Overlay(PSP_WEAPON,"Reload"); - else if ( CVar.GetCVar('flak_enforcerreload').GetBool() && ((invoker.clipcount < min(20,invoker.Ammo1.Amount)) || (invoker.slaveclipcount < min(20,invoker.Ammo1.Amount))) ) A_WeaponReady(WRF_ALLOWRELOAD); + else if ( flak_enforcerreload && ((invoker.clipcount < min(20,invoker.Ammo1.Amount)) || (invoker.slaveclipcount < min(20,invoker.Ammo1.Amount))) ) A_WeaponReady(WRF_ALLOWRELOAD); else A_WeaponReady(); if ( !invoker.slaveactive && (CountInv("Enforcer") > 1) ) A_Overlay(2,"LeftReady"); } @@ -454,7 +455,7 @@ Class Enforcer : UTWeapon invoker.slaveactive = false; A_Overlay(2,"LeftDeselect"); } - else if ( CVar.GetCVar('flak_enforcerreload').GetBool() && (invoker.slavereload || (invoker.slaveclipcount < 0)) ) A_Overlay(2,"LeftReload"); + else if ( flak_enforcerreload && (invoker.slavereload || (invoker.slaveclipcount < 0)) ) A_Overlay(2,"LeftReload"); else if ( invoker.slavedown ) A_Overlay(2,"LeftDeselect"); else A_LeftWeaponReady(); } diff --git a/zscript/flakcannon.zsc b/zscript/flakcannon.zsc index f27ef3d..c005cc5 100644 --- a/zscript/flakcannon.zsc +++ b/zscript/flakcannon.zsc @@ -174,6 +174,7 @@ Class FlakChunk : Actor -BOUNCEAUTOOFF; +CANBOUNCEWATER; +SKYEXPLODE; + +INTERPOLATEANGLES; Scale 0.3; } override void PostBeginPlay() @@ -224,9 +225,9 @@ Class FlakChunk : Actor } if ( trail ) trail.alpha = max(0,11-frame)/11.; if ( InStateSequence(CurState,FindState("Death")) ) return; - A_SetRoll(roll+rollvel,SPF_INTERPOLATE); - A_SetPitch(pitch+pitchvel,SPF_INTERPOLATE); - A_SetAngle(angle+pitchvel,SPF_INTERPOLATE); + roll += rollvel; + pitch += pitchvel; + angle += pitchvel; } action void A_HandleBounce() { diff --git a/zscript/minigun.zsc b/zscript/minigun.zsc index 5ce71c0..e718a45 100644 --- a/zscript/minigun.zsc +++ b/zscript/minigun.zsc @@ -42,6 +42,7 @@ Class MinigunTracer : Actor +NOCLIP; +NOGRAVITY; +DONTSPLASH; + +INTERPOLATEANGLES; } override void Tick() { @@ -55,9 +56,9 @@ Class MinigunTracer : Actor } dir = dir.unit(); SetOrigin(Vec3Offset(dir.x*160,dir.y*160,dir.z*160),true); - A_SetAngle(atan2(dir.y,dir.x),SPF_INTERPOLATE); - A_SetPitch(asin(-dir.z),SPF_INTERPOLATE); - A_SetRoll(roll+60,SPF_INTERPOLATE); + angle = atan2(dir.y,dir.x); + pitch = asin(-dir.z); + roll += 60; } States { diff --git a/zscript/powerups.zsc b/zscript/powerups.zsc index 13eff03..681e009 100644 --- a/zscript/powerups.zsc +++ b/zscript/powerups.zsc @@ -268,8 +268,7 @@ Class UTInvisibilityX : Actor Destroy(); return; } - SetOrigin(target.pos,true); - A_SetAngle(target.angle,SPF_INTERPOLATE); + Warp(target,flags:WARPF_COPYINTERPOLATION|WARPF_NOCHECKPOSITION); bInvisible = target.bInvisible; } States diff --git a/zscript/pulsegun.zsc b/zscript/pulsegun.zsc index d9a7267..9733d6b 100644 --- a/zscript/pulsegun.zsc +++ b/zscript/pulsegun.zsc @@ -538,7 +538,7 @@ Class PulseGun : UTWeapon override void PostRender( double lbottom ) { - if ( !CVar.GetCVar('flak_pulsereload').GetBool() ) return; + if ( !flak_pulsereload ) return; Screen.DrawText(confont,Font.CR_GREEN,Screen.GetWidth()*0.01,lbottom-Screen.GetHeight()*0.01-confont.GetHeight(),String.Format("Clip: %2d / 50",clipcount)); } @@ -556,7 +556,7 @@ Class PulseGun : UTWeapon if ( weap.Ammo1.Amount <= 0 ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; invoker.clipcount--; - if ( !CVar.GetCVar('flak_pulsereload').GetBool() && (invoker.clipcount <= 0) ) invoker.clipcount = (weap.Ammo1.Amount>0)?Min(50,weap.Ammo1.Amount):50; + if ( !flak_pulsereload && (invoker.clipcount <= 0) ) invoker.clipcount = (weap.Ammo1.Amount>0)?Min(50,weap.Ammo1.Amount):50; invoker.FireEffect(); UTMainHandler.DoFlash(self,Color(32,128,255,128),1); UTMainHandler.DoSwing(self,(FRandom[Pulse](-1,-1),FRandom[Pulse](-1,1)),0.1,-0.02,3,SWING_Spring,0,2); @@ -617,7 +617,7 @@ Class PulseGun : UTWeapon if ( weap.Ammo1.Amount <= 0 ) return; if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return; invoker.clipcount--; - if ( !CVar.GetCVar('flak_pulsereload').GetBool() && (invoker.clipcount <=0) ) invoker.clipcount = (weap.Ammo1.Amount>0)?Min(50,weap.Ammo1.Amount):50; + if ( !flak_pulsereload && (invoker.clipcount <=0) ) invoker.clipcount = (weap.Ammo1.Amount>0)?Min(50,weap.Ammo1.Amount):50; invoker.FireEffect(); UTMainHandler.DoFlash(self,Color(32,128,255,128),1); UTMainHandler.DoSwing(self,(FRandom[Pulse](-1,-1),FRandom[Pulse](-1,1)),0.3,-0.1,2,SWING_Spring,0,3); @@ -715,7 +715,7 @@ Class PulseGun : UTWeapon PGNI A 1 { A_CheckReload(); - if ( CVar.GetCVar('flak_pulsereload').GetBool() ) + if ( flak_pulsereload ) { if ( (invoker.clipcount <= 0) && (invoker.Ammo1.Amount > 0) ) return A_Jump(255,"Reload"); A_WeaponReady(WRF_ALLOWRELOAD); diff --git a/zscript/ripper.zsc b/zscript/ripper.zsc index 9b8da4f..3d2ebff 100644 --- a/zscript/ripper.zsc +++ b/zscript/ripper.zsc @@ -38,9 +38,8 @@ Class Razor2Trail : Actor return; } SetOrigin(target.pos,true); - A_SetAngle(target.angle,SPF_INTERPOLATE); - A_SetPitch(target.pitch,SPF_INTERPOLATE); - A_SetRoll(target.roll,SPF_INTERPOLATE); + angle = target.angle; + pitch = target.pitch; alpha = target.vel.length()/target.speed; } States diff --git a/zscript/shockrifle.zsc b/zscript/shockrifle.zsc index 004fab8..e2616d5 100644 --- a/zscript/shockrifle.zsc +++ b/zscript/shockrifle.zsc @@ -625,7 +625,7 @@ Class SuperShockBeam : Actor action void A_BeamExplode() { Spawn("SuperShockBeamLight",pos); - if ( !CVar.GetCVar('flak_classicsshock').GetBool() ) + if ( !flak_classicsshock ) { UTMainHandler.DoBlast(self,50,60000); A_Explode(Random[ASMD](500,800),50); @@ -1297,7 +1297,7 @@ Class EnhancedShockRifle : UTWeapon ASMF BCDEFGHIJJ 2; Goto Idle; AltFire: - ASMI A 0 A_JumpIf(CVar.GetCVar('flak_classicsshock').GetBool(),"Fire"); + ASMI A 0 A_JumpIf(flak_classicsshock,"Fire"); ASMI A 0 A_JumpIfNoAmmo("DryFire"); ASMA A 1 A_SShockAlt(); ASMA BCDFGHIJ 2; diff --git a/zscript/utcommon.zsc b/zscript/utcommon.zsc index df2b33e..30c8aa3 100644 --- a/zscript/utcommon.zsc +++ b/zscript/utcommon.zsc @@ -3,7 +3,7 @@ Class UTPlayer : DoomPlayer bool lastground; int lastgroundtic; double lastvelz, prevvelz; - transient CVar footsteps, utmovement, doomspeed, doomaircontrol, nowalkdrop; + transient CVar footsteps; Vector2 acceleration; Vector3 acceleration3; int last_fm, last_sm; @@ -183,7 +183,7 @@ Class UTPlayer : DoomPlayer override void Tick() { Super.Tick(); - if ( !player ) return; + if ( !player || (player.mo != self) ) return; if ( !footsteps ) footsteps = CVar.GetCVar('flak_footsteps',players[consoleplayer]); if ( !footsteps.GetBool() ) return; double ang = level.time/(20*TICRATE/35.)*360.; @@ -220,16 +220,12 @@ Class UTPlayer : DoomPlayer override void MovePlayer() { - if ( !utmovement ) utmovement = CVar.GetCVar('flak_utmovement'); - if ( !doomspeed ) doomspeed = CVar.GetCVar('flak_doomspeed'); - if ( !doomaircontrol ) doomaircontrol = CVar.GetCVar('flak_doomaircontrol'); - if ( !nowalkdrop ) nowalkdrop = CVar.GetCVar('flak_nowalkdrop'); - bNODROPOFF = false; - if ( !utmovement.GetBool() ) + if ( !flak_utmovement || !player || (player.mo != self) ) { Super.MovePlayer(); return; } + bNODROPOFF = false; UserCmd cmd = player.cmd; if ( player.turnticks ) { @@ -239,10 +235,14 @@ Class UTPlayer : DoomPlayer else Angle += cmd.yaw*(360./65536.); player.onground = (pos.z <= floorz) || bOnMobj || bMBFBouncer || (player.cheats & CF_NOCLIP2); if ( player.onground ) lastgroundtic = gametic; - if ( (abs(pos.z-floorz) <= maxdropoffheight) && (player.jumptics == 0) ) player.onground = true; + if ( !player.onground && (abs(pos.z-floorz) <= maxdropoffheight) && (player.jumptics == 0) ) + { + SetOrigin(Vec2OffsetZ(0,0,floorz),true); + player.onground = true; + } double friction = FrictionToUnreal(); double fs = TweakSpeeds(1.0,0.0); - if ( !doomspeed.GetBool() ) + if ( !flak_doomspeed ) { if ( cmd.buttons&BT_SPEED ) fs *= walkfactor; } @@ -281,7 +281,7 @@ Class UTPlayer : DoomPlayer { if ( !waterlevel && (dodge.length() > 0) ) { - if ( doomspeed.GetBool() ) vel += dodge.unit()*(groundspeed_doomish*1.5)/TICRATE; + if ( flak_doomspeed ) vel += dodge.unit()*(groundspeed_doomish*1.5)/TICRATE; else vel += dodge.unit()*(groundspeed*1.5)/TICRATE; vel.z += dodgez/TICRATE; bOnMobj = false; @@ -297,7 +297,7 @@ Class UTPlayer : DoomPlayer } else { - if ( nowalkdrop.GetBool() ) + if ( flak_nowalkdrop ) bNODROPOFF = ((acceleration.length() > double.epsilon) && (cmd.buttons&BT_SPEED)); // Hook in Unreal physics Vector2 dir = (0,0); @@ -317,7 +317,7 @@ Class UTPlayer : DoomPlayer } vel.xy = vel.xy + acceleration/TICRATE; double maxvel; - if ( doomspeed.GetBool() ) maxvel = groundspeed_doomish/TICRATE; + if ( flak_doomspeed ) maxvel = groundspeed_doomish/TICRATE; else maxvel = groundspeed/TICRATE; maxvel *= fs*doomfriction; if ( vel.xy.length() > maxvel ) vel.xy = vel.xy.unit()*maxvel; @@ -344,9 +344,9 @@ Class UTPlayer : DoomPlayer Vector2 acceldir = acceleration.unit(); acceleration = acceldir * Min(acceleration.length(), accelrate/TICRATE); } - acceleration *= doomaircontrol.GetBool()?level.aircontrol:utaircontrol; + acceleration *= flak_doomaircontrol?level.aircontrol:utaircontrol; double maxvel; - if ( doomspeed.GetBool() ) maxvel = (groundspeed_doomish*fs)/TICRATE; + if ( flak_doomspeed ) maxvel = (groundspeed_doomish*fs)/TICRATE; else maxvel = (groundspeed*fs)/TICRATE; // if new velocity is higher than ground speed, steer but don't increase it if ( (vel.xy+acceleration/TICRATE).length() > maxvel ) @@ -403,9 +403,7 @@ Class UTPlayer : DoomPlayer } override void CheckJump() { - if ( !utmovement ) utmovement = CVar.GetCVar('flak_utmovement'); - if ( !doomspeed ) doomspeed = CVar.GetCVar('flak_doomspeed'); - if ( !utmovement.GetBool() ) + if ( !flak_utmovement || !player || (player.mo != self) ) { Super.CheckJump(); return; @@ -418,7 +416,7 @@ Class UTPlayer : DoomPlayer else if ( level.IsJumpingAllowed() && player.onground && (player.jumpTics == 0) && (last_jump_held < gametic-1) ) { double jumpvelz; - if ( doomspeed.GetBool() ) jumpvelz = jumpz; + if ( flak_doomspeed ) jumpvelz = jumpz; else jumpvelz = utjumpz/TICRATE; double jumpfac = 0; for ( let p = Inv; p != null; p = p.Inv ) @@ -772,6 +770,7 @@ Class UTChip : Actor +THRUACTORS; +NOTELEPORT; +DONTSPLASH; + +INTERPOLATEANGLES; BounceType "Doom"; BounceFactor 0.3; Gravity 0.7; @@ -803,9 +802,9 @@ Class UTChip : Actor Spawn: CHIP # 1 { - A_SetAngle(angle+anglevel,SPF_INTERPOLATE); - A_SetPitch(pitch+pitchvel,SPF_INTERPOLATE); - A_SetRoll(roll+rollvel,SPF_INTERPOLATE); + angle += anglevel; + pitch += pitchvel; + roll += rollvel; } Loop; Bounce: @@ -1184,8 +1183,8 @@ Class Swinger : Thinker switch ( cstate ) { case STATE_Initial: - target.A_SetAngle(target.angle+dir.x*str,SPF_INTERPOLATE); - target.A_SetPitch(target.pitch+dir.y*str,SPF_INTERPOLATE); + target.A_SetAngle(target.angle+dir.x*str*flak_swingerstrength,SPF_INTERPOLATE); + target.A_SetPitch(target.pitch+dir.y*str*flak_swingerstrength,SPF_INTERPOLATE); str += inc; if ( ++cnt >= steps ) { @@ -1203,8 +1202,8 @@ Class Swinger : Thinker } break; case STATE_Return: - target.A_SetAngle(target.angle-dir.x*str/rmul,SPF_INTERPOLATE); - target.A_SetPitch(target.pitch-dir.y*str/rmul,SPF_INTERPOLATE); + target.A_SetAngle(target.angle-dir.x*(str/rmul)*flak_swingerstrength,SPF_INTERPOLATE); + target.A_SetPitch(target.pitch-dir.y*(str/rmul)*flak_swingerstrength,SPF_INTERPOLATE); if ( ++cnt >= steps*rmul ) { cnt = 0; @@ -1257,7 +1256,6 @@ Class UTMainHandler : StaticEventHandler { ui TextureID tex; Array flashes; - transient CVar nobosstelefrag; override void CheckReplacement( ReplaceEvent e ) { @@ -1487,8 +1485,7 @@ Class UTMainHandler : StaticEventHandler override void WorldThingSpawned( WorldEvent e ) { - if ( !nobosstelefrag ) nobosstelefrag = CVar.GetCVar('flak_nobosstelefrag'); - if ( nobosstelefrag.GetBool() && e.Thing.bBOSS ) e.Thing.bNOTELEFRAG = true; + if ( flak_nobosstelefrag && e.Thing.bBOSS ) e.Thing.bNOTELEFRAG = true; } ui void StartMenu() @@ -1513,12 +1510,12 @@ Class UTMainHandler : StaticEventHandler override void PlayerEntered( PlayerEvent e ) { - if ( CVar.GetCVar('flak_translocator').GetBool() ) + if ( flak_translocator ) players[e.playernumber].mo.GiveInventory("Translocator",1); } override void PlayerRespawned( PlayerEvent e ) { - if ( CVar.GetCVar('flak_translocator').GetBool() ) + if ( flak_translocator ) players[e.playernumber].mo.GiveInventory("Translocator",1); } @@ -1526,7 +1523,7 @@ Class UTMainHandler : StaticEventHandler { if ( e.Name ~== "refreshtrans" ) { - if ( CVar.GetCVar('flak_translocator').GetBool() ) + if ( flak_translocator ) { for ( int i=0; i