Rebalanced things across the board, buffing relatively weak weapons.

Double capacity with backpack for all ammo (except Redeemer, it just gets one extra).
Made Enhanced Shock Rifle ammo drain over time (1 unit per second).
Uncapped health and armor numbers in the HUD.
Fixed Jump Boots not persisting between levels.
Increased duration of invisibility.
Made translocator toggleable (currently requires manually selecting "apply changes" under the menu option).
This commit is contained in:
Marisa the Magician 2018-06-03 16:04:00 +02:00
commit 6c096e1b0f
19 changed files with 102 additions and 46 deletions

View file

@ -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_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 float flak_statussize = 1.0; // 0.5 <-> 1.5 in steps of 0.1 (default 1.0)
user bool flak_footsteps = true; user bool flak_footsteps = true;
server bool flak_translocator = false;

View file

@ -23,6 +23,8 @@ OptionMenu "UTOptionMenu"
Option "Enforcer Reloading", "flak_enforcerreload", "YesNo" Option "Enforcer Reloading", "flak_enforcerreload", "YesNo"
Option "Pulsegun Reloading", "flak_pulsereload", "YesNo" Option "Pulsegun Reloading", "flak_pulsereload", "YesNo"
Option "Redeemer Target Visuals", "flak_redeemerreadout", "YesNo" Option "Redeemer Target Visuals", "flak_redeemerreadout", "YesNo"
Option "Enable Translocator", "flak_translocator", "YesNo"
Command "Apply Changes", "event refreshtrans"
StaticText " " StaticText " "
StaticText "HUD Options", "Gold" StaticText "HUD Options", "Gold"
Option "Show Weapon Bar", "flak_showweapons", "YesNo" Option "Show Weapon Bar", "flak_showweapons", "YesNo"

View file

@ -182,6 +182,7 @@ shock/ball expla02
$pitchshift shock/ball 5 $pitchshift shock/ball 5
$pitchshiftrange 0 $pitchshiftrange 0
sshock/blast expl2 sshock/blast expl2
sshock/dryfire aclick2
pulse/bolt pulseblt pulse/bolt pulseblt
pulse/down pulsedwn pulse/down pulsedwn

BIN
sounds/aclick2.ogg Normal file

Binary file not shown.

View file

@ -26,7 +26,7 @@ Class BioAmmo : Ammo
Inventory.Amount 25; Inventory.Amount 25;
Inventory.MaxAmount 100; Inventory.MaxAmount 100;
Ammo.BackpackAmount 50; Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 100; Ammo.BackpackMaxAmount 200;
Ammo.DropAmount 10; Ammo.DropAmount 10;
} }
States States
@ -329,7 +329,7 @@ Class BioGel : Actor
s.args[3] *= Scale.x; s.args[3] *= Scale.x;
invoker.deadtimer = -1; invoker.deadtimer = -1;
if ( invoker.atline ) invoker.atline.RemoteActivate(target,invoker.atside,SPAC_Impact,pos); 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); A_PlaySound("ges/explode",CHAN_VOICE);
int numpt = Min(300,Scale.x*30)+Random[GES](-10,10); int numpt = Min(300,Scale.x*30)+Random[GES](-10,10);
for ( int i=0; i<numpt; i++ ) for ( int i=0; i<numpt; i++ )
@ -344,7 +344,7 @@ Class BioGel : Actor
{ {
Obituary "%o drank a glass of %k's dripping green load."; Obituary "%o drank a glass of %k's dripping green load.";
DamageType 'Slime'; DamageType 'Slime';
DamageFunction Random[GES](20,30)*Scale.x; DamageFunction Random[GES](20,40)*Scale.x;
RenderStyle "Add"; RenderStyle "Add";
Radius 3; Radius 3;
Height 3; Height 3;

View file

@ -67,7 +67,7 @@ Class UTChainsaw : UTWeapon
LineTrace(angle,90,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); LineTrace(angle,90,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
if ( d.HitType == TRACE_HitActor ) if ( d.HitType == TRACE_HitActor )
{ {
int dmg = Random[Chainsaw](16,22); int dmg = Random[Chainsaw](20,30);
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'slashed'); dmg = d.HitActor.DamageMobj(invoker,self,dmg,'slashed');
d.HitActor.vel -= x*(500/d.HitActor.mass); d.HitActor.vel -= x*(500/d.HitActor.mass);
vel += x*(100/mass); vel += x*(100/mass);
@ -104,7 +104,7 @@ Class UTChainsaw : UTWeapon
LineTrace(angle,90,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); LineTrace(angle,90,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
if ( d.HitType == TRACE_HitActor ) if ( d.HitType == TRACE_HitActor )
{ {
int dmg = Random[Chainsaw](50,55); int dmg = Random[Chainsaw](50,60);
if ( d.HitLocation.z >= (d.HitActor.pos.z+d.HitActor.height*0.8) ) if ( d.HitLocation.z >= (d.HitActor.pos.z+d.HitActor.height*0.8) )
dmg = d.HitActor.DamageMobj(invoker,self,dmg*2,'Decapitated'); dmg = d.HitActor.DamageMobj(invoker,self,dmg*2,'Decapitated');
else dmg = d.HitActor.DamageMobj(invoker,self,dmg,'slashed'); else dmg = d.HitActor.DamageMobj(invoker,self,dmg,'slashed');

View file

@ -7,7 +7,7 @@ Class UTRocketAmmo : Ammo
Inventory.Amount 12; Inventory.Amount 12;
Inventory.MaxAmount 48; Inventory.MaxAmount 48;
Ammo.BackpackAmount 12; Ammo.BackpackAmount 12;
Ammo.BackpackMaxAmount 48; Ammo.BackpackMaxAmount 96;
Ammo.DropAmount 3; Ammo.DropAmount 3;
} }
States States
@ -105,7 +105,7 @@ Class UTRocket : Actor
Default Default
{ {
Obituary "%o was smacked down by %k's Rocket Launcher."; Obituary "%o was smacked down by %k's Rocket Launcher.";
DamageFunction Random[Eightball](70,80); DamageFunction Random[Eightball](90,115);
DamageType 'RocketDeath'; DamageType 'RocketDeath';
Radius 2; Radius 2;
Height 2; Height 2;
@ -129,7 +129,7 @@ Class UTRocket : Actor
A_SprayDecal("RocketBlast",150); A_SprayDecal("RocketBlast",150);
A_NoGravity(); A_NoGravity();
A_SetScale(0.75); 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_QuakeEx(3,3,3,8,0,250,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2);
A_PlaySound("utrl/explode",CHAN_VOICE); A_PlaySound("utrl/explode",CHAN_VOICE);
A_AlertMonsters(); A_AlertMonsters();
@ -182,7 +182,7 @@ Class UTGrenade : UTRocket
Default Default
{ {
DamageFunction Random[Eightball](80,90); DamageFunction Random[Eightball](90,120);
DamageType 'GrenadeDeath'; DamageType 'GrenadeDeath';
-NOGRAVITY; -NOGRAVITY;
+USEBOUNCESTATE; +USEBOUNCESTATE;

View file

@ -33,7 +33,7 @@ Class FlakAmmo : Ammo
Inventory.Amount 10; Inventory.Amount 10;
Inventory.MaxAmount 50; Inventory.MaxAmount 50;
Ammo.BackpackAmount 20; Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 50; Ammo.BackpackMaxAmount 100;
Ammo.DropAmount 5; Ammo.DropAmount 5;
} }
States States
@ -140,7 +140,7 @@ Class FlakChunk : Actor
Radius 2; Radius 2;
Height 2; Height 2;
Speed 50; Speed 50;
DamageFunction Random[Flak](12,18); DamageFunction Random[Flak](15,25);
DamageType 'Shredded'; DamageType 'Shredded';
BounceType "Doom"; BounceType "Doom";
BounceFactor 0.8; BounceFactor 0.8;
@ -359,7 +359,7 @@ Class FlakSlug : Actor
{ {
Obituary "%o was ripped to shreds by %k's Flak Cannon."; Obituary "%o was ripped to shreds by %k's Flak Cannon.";
DamageType 'FlakDeath'; DamageType 'FlakDeath';
DamageFunction Random[Flak](60,80); DamageFunction Random[Flak](80,90);
Radius 2; Radius 2;
Height 2; Height 2;
Speed 40; Speed 40;
@ -386,7 +386,7 @@ Class FlakSlug : Actor
A_SprayDecal("RocketBlast",150); A_SprayDecal("RocketBlast",150);
A_NoGravity(); A_NoGravity();
A_SetScale(1.2); 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_QuakeEx(4,4,4,8,0,200,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.2);
A_PlaySound("flak/explode",CHAN_VOICE); A_PlaySound("flak/explode",CHAN_VOICE);
A_AlertMonsters(); A_AlertMonsters();

View file

@ -75,7 +75,7 @@ Class ImpactHammer : UTWeapon replaces Fist
LineTrace(angle,80,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); LineTrace(angle,80,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
if ( d.HitType == TRACE_HitActor ) 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'); dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact');
d.HitActor.vel = x*(1000/d.HitActor.mass)*realcharge; d.HitActor.vel = x*(1000/d.HitActor.mass)*realcharge;
if ( d.HitActor.bNOBLOOD ) if ( d.HitActor.bNOBLOOD )
@ -137,7 +137,7 @@ Class ImpactHammer : UTWeapon replaces Fist
double dscale = d.Distance/180.; double dscale = d.Distance/180.;
if ( d.HitType == TRACE_HitActor ) 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'); dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact');
d.HitActor.vel = x*(500/d.HitActor.mass)*dscale; d.HitActor.vel = x*(500/d.HitActor.mass)*dscale;
} }

View file

@ -31,9 +31,9 @@ Class MiniAmmo : Ammo
Tag "Large Bullets"; Tag "Large Bullets";
Inventory.PickupMessage "You picked up 50 bullets."; Inventory.PickupMessage "You picked up 50 bullets.";
Inventory.Amount 50; Inventory.Amount 50;
Inventory.MaxAmount 199; Inventory.MaxAmount 200;
Ammo.BackpackAmount 100; Ammo.BackpackAmount 100;
Ammo.BackpackMaxAmount 199; Ammo.BackpackMaxAmount 400;
Ammo.DropAmount 20; Ammo.DropAmount 20;
} }
States 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); LineTrace(atan2(dir.y,dir.x),10000,asin(-dir.z),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
if ( d.HitType == TRACE_HitActor ) 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'); dmg = d.HitActor.DamageMobj(invoker,self,dmg,'shot');
if ( d.HitActor.bNOBLOOD ) if ( d.HitActor.bNOBLOOD )
{ {

View file

@ -196,10 +196,10 @@ Class PowerUTInvisibility : PowerInvisibility
{ {
Default Default
{ {
Powerup.Duration -50; Powerup.Duration -80;
Powerup.Strength 95; Powerup.Strength 90;
Powerup.Mode "Translucent"; Powerup.Mode "Additive";
Powerup.Color "FFFFFF", 0.15; Powerup.Color "FFFFFF", 0.1;
} }
override void EndEffect() override void EndEffect()
{ {
@ -297,6 +297,7 @@ Class UTJumpBoots : Inventory replaces RadSuit
+INVENTORY.ALWAYSPICKUP; +INVENTORY.ALWAYSPICKUP;
Inventory.Amount 3; Inventory.Amount 3;
Inventory.MaxAmount 3; Inventory.MaxAmount 3;
Inventory.InterHubAmount 3;
Inventory.PickupMessage "You picked up the AntiGrav boots."; Inventory.PickupMessage "You picked up the AntiGrav boots.";
Inventory.PickupSound "boot/pickup"; Inventory.PickupSound "boot/pickup";
Inventory.RespawnTics 1050; Inventory.RespawnTics 1050;
@ -350,6 +351,7 @@ Class PowerJumpBoots_HighJump : PowerHighJump
{ {
Powerup.Strength 3; Powerup.Strength 3;
Powerup.Duration int.max; Powerup.Duration int.max;
+INVENTORY.PERSISTENTPOWER;
} }
} }
Class PowerJumpBoots_IronFeet : PowerIronFeet Class PowerJumpBoots_IronFeet : PowerIronFeet
@ -358,6 +360,7 @@ Class PowerJumpBoots_IronFeet : PowerIronFeet
{ {
Powerup.Duration int.max; Powerup.Duration int.max;
Powerup.Color "00 00 00", 0.0; Powerup.Color "00 00 00", 0.0;
+INVENTORY.PERSISTENTPOWER;
} }
override void AbsorbDamage( int damage, Name damageType, out int newdamage ) override void AbsorbDamage( int damage, Name damageType, out int newdamage )
{ {

View file

@ -23,9 +23,9 @@ Class PulseAmmo : Ammo
Tag "Pulse Cell"; Tag "Pulse Cell";
Inventory.PickupMessage "You picked up a Pulse Cell."; Inventory.PickupMessage "You picked up a Pulse Cell.";
Inventory.Amount 25; Inventory.Amount 25;
Inventory.MaxAmount 199; Inventory.MaxAmount 200;
Ammo.BackpackAmount 50; Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 199; Ammo.BackpackMaxAmount 400;
Ammo.DropAmount 10; Ammo.DropAmount 10;
} }
States States
@ -142,7 +142,7 @@ Class PulseBall : Actor
Obituary "%o ate %k's burning plasma death."; Obituary "%o ate %k's burning plasma death.";
DamageType 'Pulsed'; DamageType 'Pulsed';
RenderStyle "Add"; RenderStyle "Add";
DamageFunction Random[Pulse](15,25); DamageFunction Random[Pulse](20,30);
PROJECTILE; PROJECTILE;
+EXPLODEONWATER; +EXPLODEONWATER;
+SKYEXPLODE; +SKYEXPLODE;
@ -315,12 +315,12 @@ Class PulseBolt : Actor
if ( !damagedactor ) if ( !damagedactor )
{ {
accdamage = min(0.5*(level.time-lasthit),0.1); 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; accdamage = 0;
} }
else if ( t.Results.HitActor != damagedactor ) 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; accdamage = 0;
} }
lasthit = level.time; lasthit = level.time;
@ -328,10 +328,11 @@ Class PulseBolt : Actor
accdamage += 1./TICRATE; accdamage += 1./TICRATE;
if ( accdamage > 0.22 ) 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; 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); int numpt = Random[Pulse](10,20)*!Random[Pulse](0,2);
for ( int i=0; i<numpt; i++ ) for ( int i=0; i<numpt; i++ )
{ {

View file

@ -7,7 +7,7 @@ Class RipperAmmo : Ammo
Inventory.Amount 25; Inventory.Amount 25;
Inventory.MaxAmount 75; Inventory.MaxAmount 75;
Ammo.BackpackAmount 50; Ammo.BackpackAmount 50;
Ammo.BackpackMaxAmount 75; Ammo.BackpackMaxAmount 150;
Ammo.DropAmount 10; Ammo.DropAmount 10;
} }
States States
@ -58,7 +58,7 @@ Class Razor2 : Actor
Radius 2; Radius 2;
Height 2; Height 2;
Speed 50; Speed 50;
DamageFunction Random[Ripper](20,30); DamageFunction Random[Ripper](30,40);
DamageType 'Ripper'; DamageType 'Ripper';
Obituary "%k ripped a chunk of meat out of %o with the Ripper."; Obituary "%k ripped a chunk of meat out of %o with the Ripper.";
BounceType "Doom"; BounceType "Doom";
@ -183,7 +183,7 @@ Class Razor2Alt : Razor2
{ {
Default Default
{ {
DamageFunction Random[Ripper](25,34); DamageFunction Random[Ripper](40,60);
DamageType 'RipperAltDealth'; DamageType 'RipperAltDealth';
BounceType "None"; BounceType "None";
-CANBOUNCEWATER; -CANBOUNCEWATER;
@ -199,7 +199,7 @@ Class Razor2Alt : Razor2
Spawn("Razor2AltLight",pos); Spawn("Razor2AltLight",pos);
A_AlertMonsters(); A_AlertMonsters();
A_SprayDecal("RazorBlast",20); A_SprayDecal("RazorBlast",20);
A_Explode(Random[Ripper](20,34),120); A_Explode(Random[Ripper](30,50),120);
A_QuakeEx(3,3,3,10,0,180,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1); A_QuakeEx(3,3,3,10,0,180,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
int numpt = Random[Ripper](10,20); int numpt = Random[Ripper](10,20);
Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)); Vector3 x = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch));

View file

@ -7,7 +7,7 @@ Class ShockAmmo : Ammo
Inventory.Amount 10; Inventory.Amount 10;
Inventory.MaxAmount 50; Inventory.MaxAmount 50;
Ammo.BackpackAmount 20; Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 50; Ammo.BackpackMaxAmount 100;
Ammo.DropAmount 5; Ammo.DropAmount 5;
} }
States States
@ -1021,6 +1021,17 @@ Class EnhancedShockAmmo : Ammo
Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
{ {
int ticcnt;
override void Tick()
{
Super.Tick();
if ( !Owner ) return;
ticcnt++;
if ( ticcnt < 35 ) return;
ticcnt = 0;
DepleteAmmo(false,true,1);
}
action void A_SShockFire() action void A_SShockFire()
{ {
Weapon weap = Weapon(invoker); Weapon weap = Weapon(invoker);
@ -1073,6 +1084,9 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
Weapon.AmmoType2 "EnhancedShockAmmo"; Weapon.AmmoType2 "EnhancedShockAmmo";
Weapon.AmmoUse2 1; Weapon.AmmoUse2 1;
Weapon.AmmoGive 25; Weapon.AmmoGive 25;
+WEAPON.AMMO_OPTIONAL;
+WEAPON.ALT_AMMO_OPTIONAL;
+WEAPON.CHEATNOTWEAPON;
} }
States States
{ {
@ -1084,20 +1098,27 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
Ready: Ready:
ASMS ABCDEFGHIJKLMNO 1 A_WeaponReady(WRF_NOFIRE); ASMS ABCDEFGHIJKLMNO 1 A_WeaponReady(WRF_NOFIRE);
Idle: Idle:
ASMI A 1 ASMI A 1 A_WeaponReady();
{
A_CheckReload();
A_WeaponReady();
}
Wait; Wait;
Fire: Fire:
ASMI A 0 A_JumpIfNoAmmo("DryFire");
ASMF A 1 A_SShockFire(); ASMF A 1 A_SShockFire();
ASMF BCDEFGHIJ 2; ASMF BCDEFGHIJ 2;
Goto Idle; Goto Idle;
AltFire: AltFire:
ASMI A 0 A_JumpIfNoAmmo("DryFire");
ASMA A 1 A_SShockAlt(); ASMA A 1 A_SShockAlt();
ASMA BCDEFGHIJ 2; ASMA BCDEFGHIJ 2;
Goto Idle; Goto Idle;
DryFire:
ASMA I 3
{
A_PlaySound("sshock/dryfire",CHAN_WEAPON);
A_AlertMonsters();
}
ASMA J 4;
ASMI A 10;
Goto Idle;
Deselect: Deselect:
ASMD ABCDEFG 1; ASMD ABCDEFG 1;
ASMD G 1 A_Lower(int.max); ASMD G 1 A_Lower(int.max);

View file

@ -7,7 +7,7 @@ Class RifleAmmo : Ammo
Inventory.Amount 10; Inventory.Amount 10;
Inventory.MaxAmount 50; Inventory.MaxAmount 50;
Ammo.BackpackAmount 20; Ammo.BackpackAmount 20;
Ammo.BackpackMaxAmount 50; Ammo.BackpackMaxAmount 100;
Ammo.DropAmount 5; Ammo.DropAmount 5;
} }
States States
@ -87,9 +87,9 @@ Class SniperRifle : UTWeapon
LineTrace(angle,10000,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); LineTrace(angle,10000,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
if ( d.HitType == TRACE_HitActor ) if ( d.HitType == TRACE_HitActor )
{ {
int dmg = Random[Sniper](40,50); int dmg = Random[Sniper](45,60);
if ( d.HitLocation.z >= (d.HitActor.pos.z+d.HitActor.height*0.8) ) if ( d.HitLocation.z >= (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'); else dmg = d.HitActor.DamageMobj(invoker,self,dmg,'shot');
if ( d.HitActor.bNOBLOOD ) if ( d.HitActor.bNOBLOOD )
{ {

View file

@ -370,6 +370,7 @@ Class Translocator : UTWeapon
Weapon.SlotNumber 1; Weapon.SlotNumber 1;
Weapon.SelectionOrder 10; Weapon.SelectionOrder 10;
+WEAPON.NO_AUTO_SWITCH; +WEAPON.NO_AUTO_SWITCH;
+WEAPON.CHEATNOTWEAPON;
} }
States States
{ {

View file

@ -7,7 +7,6 @@ Class UTPlayer : DoomPlayer
Default Default
{ {
Player.StartItem "Enforcer"; Player.StartItem "Enforcer";
Player.StartItem "Translocator";
Player.StartItem "ImpactHammer"; Player.StartItem "ImpactHammer";
Player.StartItem "MiniAmmo", 30; Player.StartItem "MiniAmmo", 30;
Player.DamageScreenColor "FF 00 00", 1.0; 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<MAXPLAYERS; i++ ) if ( playeringame[i] ) players[i].mo.GiveInventory("Translocator",1);
}
else
{
for ( int i=0; i<MAXPLAYERS; i++ ) if ( playeringame[i] ) players[i].mo.TakeInventory("Translocator",1);
}
}
}
override void ConsoleProcess( ConsoleEvent e ) override void ConsoleProcess( ConsoleEvent e )
{ {
if ( e.Name ~== "refreshmenu" ) StartMenu(); if ( e.Name ~== "refreshmenu" ) StartMenu();
if ( e.Name ~== "refreshtrans" ) EventHandler.SendNetworkEvent("refreshtrans");
} }
override void WorldTick() override void WorldTick()

View file

@ -335,7 +335,7 @@ Class UTHud : BaseStatusBar
CurX += 8*hudsize*HScale; CurX += 8*hudsize*HScale;
CurY += 14*hudsize*HScale; CurY += 14*hudsize*HScale;
if ( !showstatus && b ) DrawColor = GoldColor; if ( !showstatus && b ) DrawColor = GoldColor;
UTDrawBigNum(Min(199,allarmor),hudsize); UTDrawBigNum(allarmor,hudsize);
DrawColor = WhiteColor; DrawColor = WhiteColor;
if ( !showstatus && !showweapons ) if ( !showstatus && !showweapons )
{ {
@ -358,14 +358,14 @@ Class UTHud : BaseStatusBar
DrawColor = LerpColor(WhiteColor,blinkcolor,blinky); DrawColor = LerpColor(WhiteColor,blinkcolor,blinky);
CurX += 8*hudsize*HScale; CurX += 8*hudsize*HScale;
CurY += 14*hudsize*HScale; CurY += 14*hudsize*HScale;
UTDrawBigNum(max(0,CPlayer.mo.Health),hudsize); UTDrawBigNum(Max(0,CPlayer.mo.Health),hudsize);
} }
else else
{ {
UTDrawTintedTex(Boxes[2],hudsize); UTDrawTintedTex(Boxes[2],hudsize);
CurX += 8*hudsize*HScale; CurX += 8*hudsize*HScale;
CurY += 14*hudsize*HScale; CurY += 14*hudsize*HScale;
UTDrawBigNum(Clamp(CPlayer.mo.Health,0,199),hudsize); UTDrawBigNum(Max(0,CPlayer.mo.Health),hudsize);
} }
} }
private void DrawWeapons() private void DrawWeapons()

View file

@ -8,7 +8,7 @@ Class WarheadAmmo : Ammo
Inventory.Amount 1; Inventory.Amount 1;
Inventory.MaxAmount 2; Inventory.MaxAmount 2;
Ammo.BackpackAmount 0; Ammo.BackpackAmount 0;
Ammo.BackpackMaxAmount 2; Ammo.BackpackMaxAmount 3;
Ammo.DropAmount 1; Ammo.DropAmount 1;
Inventory.RespawnTics 2100; Inventory.RespawnTics 2100;
} }