diff --git a/cvarinfo.txt b/cvarinfo.txt index e1d998c..938fe54 100644 --- a/cvarinfo.txt +++ b/cvarinfo.txt @@ -18,3 +18,4 @@ user float flak_hudsize = 1.0; // 0.2 <-> 1.0 in steps of 0.2 (default 1.0) user float flak_weaponsize = 0.8; // 0.2 <-> 1.0 in steps of 0.2 (default 0.8) user float flak_statussize = 1.0; // 0.5 <-> 1.5 in steps of 0.1 (default 1.0) user bool flak_footsteps = true; +server bool flak_translocator = false; diff --git a/menudef.txt b/menudef.txt index fa48fbd..f1e3b8a 100644 --- a/menudef.txt +++ b/menudef.txt @@ -23,6 +23,8 @@ OptionMenu "UTOptionMenu" Option "Enforcer Reloading", "flak_enforcerreload", "YesNo" Option "Pulsegun Reloading", "flak_pulsereload", "YesNo" Option "Redeemer Target Visuals", "flak_redeemerreadout", "YesNo" + Option "Enable Translocator", "flak_translocator", "YesNo" + Command "Apply Changes", "event refreshtrans" StaticText " " StaticText "HUD Options", "Gold" Option "Show Weapon Bar", "flak_showweapons", "YesNo" diff --git a/sndinfo.txt b/sndinfo.txt index 1a5bc75..92965c6 100644 --- a/sndinfo.txt +++ b/sndinfo.txt @@ -182,6 +182,7 @@ shock/ball expla02 $pitchshift shock/ball 5 $pitchshiftrange 0 sshock/blast expl2 +sshock/dryfire aclick2 pulse/bolt pulseblt pulse/down pulsedwn diff --git a/sounds/aclick2.ogg b/sounds/aclick2.ogg new file mode 100644 index 0000000..daeedf2 Binary files /dev/null and b/sounds/aclick2.ogg differ diff --git a/zscript/biorifle.zsc b/zscript/biorifle.zsc index bfc06dc..9bef075 100644 --- a/zscript/biorifle.zsc +++ b/zscript/biorifle.zsc @@ -26,7 +26,7 @@ Class BioAmmo : Ammo Inventory.Amount 25; Inventory.MaxAmount 100; Ammo.BackpackAmount 50; - Ammo.BackpackMaxAmount 100; + Ammo.BackpackMaxAmount 200; Ammo.DropAmount 10; } States @@ -329,7 +329,7 @@ Class BioGel : Actor s.args[3] *= Scale.x; invoker.deadtimer = -1; if ( invoker.atline ) invoker.atline.RemoteActivate(target,invoker.atside,SPAC_Impact,pos); - A_Explode(Random[GES](15,25)*Scale.x,Min(150,Scale.x*25)); + A_Explode(Random[GES](20,40)*Scale.x,Min(150,Scale.x*25)); A_PlaySound("ges/explode",CHAN_VOICE); int numpt = Min(300,Scale.x*30)+Random[GES](-10,10); for ( int i=0; i= (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'); diff --git a/zscript/eightball.zsc b/zscript/eightball.zsc index e54e4f8..c192ddc 100644 --- a/zscript/eightball.zsc +++ b/zscript/eightball.zsc @@ -7,7 +7,7 @@ Class UTRocketAmmo : Ammo Inventory.Amount 12; Inventory.MaxAmount 48; Ammo.BackpackAmount 12; - Ammo.BackpackMaxAmount 48; + Ammo.BackpackMaxAmount 96; Ammo.DropAmount 3; } States @@ -105,7 +105,7 @@ Class UTRocket : Actor Default { Obituary "%o was smacked down by %k's Rocket Launcher."; - DamageFunction Random[Eightball](70,80); + DamageFunction Random[Eightball](90,115); DamageType 'RocketDeath'; Radius 2; Height 2; @@ -129,7 +129,7 @@ Class UTRocket : Actor A_SprayDecal("RocketBlast",150); A_NoGravity(); A_SetScale(0.75); - A_Explode(Random[Eightball](60,70),100); + A_Explode(Random[Eightball](80,100),100); A_QuakeEx(3,3,3,8,0,250,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2); A_PlaySound("utrl/explode",CHAN_VOICE); A_AlertMonsters(); @@ -182,7 +182,7 @@ Class UTGrenade : UTRocket Default { - DamageFunction Random[Eightball](80,90); + DamageFunction Random[Eightball](90,120); DamageType 'GrenadeDeath'; -NOGRAVITY; +USEBOUNCESTATE; diff --git a/zscript/flakcannon.zsc b/zscript/flakcannon.zsc index b28faaa..b415982 100644 --- a/zscript/flakcannon.zsc +++ b/zscript/flakcannon.zsc @@ -33,7 +33,7 @@ Class FlakAmmo : Ammo Inventory.Amount 10; Inventory.MaxAmount 50; Ammo.BackpackAmount 20; - Ammo.BackpackMaxAmount 50; + Ammo.BackpackMaxAmount 100; Ammo.DropAmount 5; } States @@ -140,7 +140,7 @@ Class FlakChunk : Actor Radius 2; Height 2; Speed 50; - DamageFunction Random[Flak](12,18); + DamageFunction Random[Flak](15,25); DamageType 'Shredded'; BounceType "Doom"; BounceFactor 0.8; @@ -359,7 +359,7 @@ Class FlakSlug : Actor { Obituary "%o was ripped to shreds by %k's Flak Cannon."; DamageType 'FlakDeath'; - DamageFunction Random[Flak](60,80); + DamageFunction Random[Flak](80,90); Radius 2; Height 2; Speed 40; @@ -386,7 +386,7 @@ Class FlakSlug : Actor A_SprayDecal("RocketBlast",150); A_NoGravity(); A_SetScale(1.2); - A_Explode(Random[Flak](40,60),80); + A_Explode(Random[Flak](70,80),80); A_QuakeEx(4,4,4,8,0,200,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2); A_PlaySound("flak/explode",CHAN_VOICE); A_AlertMonsters(); diff --git a/zscript/impacthammer.zsc b/zscript/impacthammer.zsc index 31a12ad..19e8dfc 100644 --- a/zscript/impacthammer.zsc +++ b/zscript/impacthammer.zsc @@ -75,7 +75,7 @@ Class ImpactHammer : UTWeapon replaces Fist LineTrace(angle,80,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); if ( d.HitType == TRACE_HitActor ) { - int dmg = Random[Impact](50,60)*realcharge; + int dmg = Random[Impact](60,80)*realcharge; dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact'); d.HitActor.vel = x*(1000/d.HitActor.mass)*realcharge; if ( d.HitActor.bNOBLOOD ) @@ -137,7 +137,7 @@ Class ImpactHammer : UTWeapon replaces Fist double dscale = d.Distance/180.; if ( d.HitType == TRACE_HitActor ) { - int dmg = Random[Impact](16,20)*dscale; + int dmg = Random[Impact](25,35)*dscale; dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact'); d.HitActor.vel = x*(500/d.HitActor.mass)*dscale; } diff --git a/zscript/minigun.zsc b/zscript/minigun.zsc index 4ef5870..84c7b0b 100644 --- a/zscript/minigun.zsc +++ b/zscript/minigun.zsc @@ -31,9 +31,9 @@ Class MiniAmmo : Ammo Tag "Large Bullets"; Inventory.PickupMessage "You picked up 50 bullets."; Inventory.Amount 50; - Inventory.MaxAmount 199; + Inventory.MaxAmount 200; Ammo.BackpackAmount 100; - Ammo.BackpackMaxAmount 199; + Ammo.BackpackMaxAmount 400; Ammo.DropAmount 20; } States @@ -122,7 +122,7 @@ Class Minigun : UTWeapon LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); if ( d.HitType == TRACE_HitActor ) { - int dmg = Random[Minigun](9,15); // fun fact: the Minigun is one of the few weapons that has actual RNG damage in UT (and it's exactly this damage) + int dmg = Random[Minigun](12,18); // fun fact: the Minigun is one of the few weapons that has actual RNG damage in UT dmg = d.HitActor.DamageMobj(invoker,self,dmg,'shot'); if ( d.HitActor.bNOBLOOD ) { diff --git a/zscript/powerups.zsc b/zscript/powerups.zsc index 84c24f2..78de916 100644 --- a/zscript/powerups.zsc +++ b/zscript/powerups.zsc @@ -196,10 +196,10 @@ Class PowerUTInvisibility : PowerInvisibility { Default { - Powerup.Duration -50; - Powerup.Strength 95; - Powerup.Mode "Translucent"; - Powerup.Color "FFFFFF", 0.15; + Powerup.Duration -80; + Powerup.Strength 90; + Powerup.Mode "Additive"; + Powerup.Color "FFFFFF", 0.1; } override void EndEffect() { @@ -297,6 +297,7 @@ Class UTJumpBoots : Inventory replaces RadSuit +INVENTORY.ALWAYSPICKUP; Inventory.Amount 3; Inventory.MaxAmount 3; + Inventory.InterHubAmount 3; Inventory.PickupMessage "You picked up the AntiGrav boots."; Inventory.PickupSound "boot/pickup"; Inventory.RespawnTics 1050; @@ -350,6 +351,7 @@ Class PowerJumpBoots_HighJump : PowerHighJump { Powerup.Strength 3; Powerup.Duration int.max; + +INVENTORY.PERSISTENTPOWER; } } Class PowerJumpBoots_IronFeet : PowerIronFeet @@ -358,6 +360,7 @@ Class PowerJumpBoots_IronFeet : PowerIronFeet { Powerup.Duration int.max; Powerup.Color "00 00 00", 0.0; + +INVENTORY.PERSISTENTPOWER; } override void AbsorbDamage( int damage, Name damageType, out int newdamage ) { diff --git a/zscript/pulsegun.zsc b/zscript/pulsegun.zsc index a553376..e2f863c 100644 --- a/zscript/pulsegun.zsc +++ b/zscript/pulsegun.zsc @@ -23,9 +23,9 @@ Class PulseAmmo : Ammo Tag "Pulse Cell"; Inventory.PickupMessage "You picked up a Pulse Cell."; Inventory.Amount 25; - Inventory.MaxAmount 199; + Inventory.MaxAmount 200; Ammo.BackpackAmount 50; - Ammo.BackpackMaxAmount 199; + Ammo.BackpackMaxAmount 400; Ammo.DropAmount 10; } States @@ -142,7 +142,7 @@ Class PulseBall : Actor Obituary "%o ate %k's burning plasma death."; DamageType 'Pulsed'; RenderStyle "Add"; - DamageFunction Random[Pulse](15,25); + DamageFunction Random[Pulse](20,30); PROJECTILE; +EXPLODEONWATER; +SKYEXPLODE; @@ -315,12 +315,12 @@ Class PulseBolt : Actor if ( !damagedactor ) { accdamage = min(0.5*(level.time-lasthit),0.1); - t.Results.HitActor.DamageMobj(self,target,Random[Pulse](65,75)*accdamage,'zapped'); + t.Results.HitActor.DamageMobj(self,target,Random[Pulse](70,80)*accdamage,'zapped'); accdamage = 0; } else if ( t.Results.HitActor != damagedactor ) { - t.Results.HitActor.DamageMobj(self,target,Random[Pulse](65,75)*accdamage,'zapped'); + t.Results.HitActor.DamageMobj(self,target,Random[Pulse](70,80)*accdamage,'zapped'); accdamage = 0; } lasthit = level.time; @@ -328,10 +328,11 @@ Class PulseBolt : Actor accdamage += 1./TICRATE; if ( accdamage > 0.22 ) { - t.Results.HitActor.DamageMobj(self,target,Random[Pulse](65,75)*accdamage,'zapped'); + t.Results.HitActor.DamageMobj(self,target,Random[Pulse](70,80)*accdamage,'zapped'); accdamage = 0; } } + if ( t.Results.HitType == TRACE_HitWall ) t.Results.HitLine.RemoteActivate(tracer,t.Results.Side,SPAC_Impact,t.Results.HitPos); int numpt = Random[Pulse](10,20)*!Random[Pulse](0,2); for ( int i=0; i= (d.HitActor.pos.z+d.HitActor.height*0.8) ) - dmg = d.HitActor.DamageMobj(invoker,self,dmg+65,'Decapitated'); + dmg = d.HitActor.DamageMobj(invoker,self,dmg+70,'Decapitated'); else dmg = d.HitActor.DamageMobj(invoker,self,dmg,'shot'); if ( d.HitActor.bNOBLOOD ) { diff --git a/zscript/translocator.zsc b/zscript/translocator.zsc index cefa5b6..9872a1b 100644 --- a/zscript/translocator.zsc +++ b/zscript/translocator.zsc @@ -370,6 +370,7 @@ Class Translocator : UTWeapon Weapon.SlotNumber 1; Weapon.SelectionOrder 10; +WEAPON.NO_AUTO_SWITCH; + +WEAPON.CHEATNOTWEAPON; } States { diff --git a/zscript/utcommon.zsc b/zscript/utcommon.zsc index 19a8ca9..573a030 100644 --- a/zscript/utcommon.zsc +++ b/zscript/utcommon.zsc @@ -7,7 +7,6 @@ Class UTPlayer : DoomPlayer Default { Player.StartItem "Enforcer"; - Player.StartItem "Translocator"; Player.StartItem "ImpactHammer"; Player.StartItem "MiniAmmo", 30; Player.DamageScreenColor "FF 00 00", 1.0; @@ -755,9 +754,36 @@ Class UTMainHandler : StaticEventHandler } } + override void PlayerEntered( PlayerEvent e ) + { + if ( CVar.GetCVar('flak_translocator').GetBool() ) + players[e.playernumber].mo.GiveInventory("Translocator",1); + } + override void PlayerRespawned( PlayerEvent e ) + { + if ( CVar.GetCVar('flak_translocator').GetBool() ) + players[e.playernumber].mo.GiveInventory("Translocator",1); + } + + override void NetworkProcess( ConsoleEvent e ) + { + if ( e.Name ~== "refreshtrans" ) + { + if ( CVar.GetCVar('flak_translocator').GetBool() ) + { + for ( int i=0; i