Corrected Armor/Pads + Shield Belt pickup behavior.
Reduced Biorifle damage relative to sludge scale. Increased Flak Cannon chunk damage and amount and primary fire speed. Increased Impact Hammer damage and knockback to enemies. Added rare spawn of redeemer ammo pickups for cell packs. Reduced Pulsegun beam damage timer. Increased Ripper primary fire speed.
This commit is contained in:
parent
e77e0b59ff
commit
a5debcdbb2
8 changed files with 57 additions and 29 deletions
|
|
@ -55,6 +55,22 @@ Class UTArmorBonus : UTArmor replaces ArmorBonus
|
|||
|
||||
Class UTThighPads : UTArmor replaces GreenArmor
|
||||
{
|
||||
override bool HandlePickup( Inventory item )
|
||||
{
|
||||
if ( item is 'UTThighPads' )
|
||||
{
|
||||
let s = Owner.FindInventory("UTShieldBelt");
|
||||
if ( s )
|
||||
{
|
||||
if ( amount < item.amount ) amount = item.amount;
|
||||
amount = min(s.maxamount-s.amount,amount);
|
||||
Console.Printf("%d",amount);
|
||||
item.bPickupGood = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return Super.HandlePickup(item);
|
||||
}
|
||||
Default
|
||||
{
|
||||
Tag "Thigh Pads";
|
||||
|
|
@ -75,6 +91,22 @@ Class UTThighPads : UTArmor replaces GreenArmor
|
|||
|
||||
Class UTBodyArmor : UTArmor replaces BlueArmor
|
||||
{
|
||||
override bool HandlePickup( Inventory item )
|
||||
{
|
||||
if ( item is 'UTBodyArmor' )
|
||||
{
|
||||
let s = Owner.FindInventory("UTShieldBelt");
|
||||
if ( s )
|
||||
{
|
||||
if ( amount < item.amount ) amount = item.amount;
|
||||
amount = min(s.maxamount-s.amount,amount);
|
||||
Console.Printf("%d",amount);
|
||||
item.bPickupGood = true;
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return Super.HandlePickup(item);
|
||||
}
|
||||
Default
|
||||
{
|
||||
Tag "Body Armor";
|
||||
|
|
@ -106,6 +138,15 @@ Class UTShieldBelt : UTArmor replaces Megasphere
|
|||
Super.AbsorbDamage(damage,damageType,newdamage);
|
||||
if ( (oldamt > 0) && (amount <= 0) ) PrintPickupMessage(true,"The Shield Belt has depleted.");
|
||||
}
|
||||
override bool HandlePickup( Inventory item )
|
||||
{
|
||||
if ( (item is 'UTBodyArmor') || (item is 'UTThighPads') )
|
||||
{
|
||||
item.amount = 1;
|
||||
amount -= 1;
|
||||
}
|
||||
return Super.HandlePickup(item);
|
||||
}
|
||||
override bool Use( bool pickup )
|
||||
{
|
||||
// removes thigh pads and body armor like in UT
|
||||
|
|
@ -113,19 +154,6 @@ Class UTShieldBelt : UTArmor replaces Megasphere
|
|||
Owner.TakeInventory("UTBodyArmor",150);
|
||||
return false;
|
||||
}
|
||||
override bool HandlePickup( Inventory item )
|
||||
{
|
||||
if ( (item is 'UTThighPads') || (item is 'UTBodyArmor') )
|
||||
{
|
||||
if ( amount < maxamount )
|
||||
{
|
||||
DepleteOrDestroy();
|
||||
return Super.HandlePickup(item);
|
||||
}
|
||||
else return true;
|
||||
}
|
||||
return Super.HandlePickup(item);
|
||||
}
|
||||
Default
|
||||
{
|
||||
Tag "Shield Belt";
|
||||
|
|
|
|||
|
|
@ -171,7 +171,6 @@ Class BioLight : DynamicLight
|
|||
|
||||
Class BioXLight : DynamicLight
|
||||
{
|
||||
|
||||
double lifetime;
|
||||
Default
|
||||
{
|
||||
|
|
@ -410,7 +409,7 @@ Class BioGel : Actor
|
|||
s.args[3] = int(s.args[3]*Scale.x);
|
||||
invoker.deadtimer = -2;
|
||||
if ( invoker.atline ) invoker.atline.RemoteActivate(target,invoker.atside,SPAC_Impact,pos);
|
||||
A_Explode(int(Random[GES](10,20)*Scale.x*Scale.x),Min(150,int(Scale.x*25)));
|
||||
A_Explode(int(Random[GES](20,40)*Scale.x),Min(150,int(Scale.x*25)));
|
||||
A_PlaySound("ges/explode",CHAN_VOICE);
|
||||
int numpt = Min(300,int(Scale.x*30))+Random[GES](-10,10);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
|
|
@ -436,7 +435,7 @@ Class BioGel : Actor
|
|||
{
|
||||
Obituary "%o drank a glass of %k's dripping green load.";
|
||||
DamageType 'Slime';
|
||||
DamageFunction int(Random[GES](10,20)*Scale.x*Scale.x);
|
||||
DamageFunction int(Random[GES](20,40)*Scale.x);
|
||||
RenderStyle "Add";
|
||||
Radius 3;
|
||||
Height 3;
|
||||
|
|
@ -692,7 +691,7 @@ Class BioRifle : UTWeapon
|
|||
BIOM A 0 A_Refire(1);
|
||||
Goto AltRelease;
|
||||
AltHeld:
|
||||
BIOM A 5;
|
||||
BIOM A 1;
|
||||
BIOM A 0 A_Refire("AltHeld");
|
||||
AltRelease:
|
||||
BIOE A 1 { invoker.charge = min(5.1,invoker.charge+0.1); }
|
||||
|
|
|
|||
|
|
@ -140,7 +140,7 @@ Class FlakChunk : Actor
|
|||
Radius 2;
|
||||
Height 2;
|
||||
Speed 50;
|
||||
DamageFunction Random[Flak](15,25);
|
||||
DamageFunction Random[Flak](25,35);
|
||||
DamageType 'Shredded';
|
||||
BounceType "Doom";
|
||||
BounceFactor 0.8;
|
||||
|
|
@ -397,7 +397,7 @@ Class FlakSlug : Actor
|
|||
double a, s;
|
||||
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
|
||||
Actor p;
|
||||
for ( int i=0; i<5; i++ )
|
||||
for ( int i=0; i<8; i++ )
|
||||
{
|
||||
p = Spawn("FlakChunk",pos);
|
||||
a = FRandom[Flak](0,360);
|
||||
|
|
@ -494,7 +494,7 @@ Class FlakCannon : UTWeapon
|
|||
A_OverlayRenderstyle(-2,STYLE_Add);
|
||||
[x, y, z] = Matrix4.GetAxes(BulletSlope(),angle,roll);
|
||||
Actor p;
|
||||
for ( int i=0; i<8; i++ )
|
||||
for ( int i=0; i<12; i++ )
|
||||
{
|
||||
p = Spawn("FlakChunk",origin);
|
||||
a = FRandom[Flak](0,360);
|
||||
|
|
@ -605,7 +605,7 @@ Class FlakCannon : UTWeapon
|
|||
Wait;
|
||||
Fire:
|
||||
FLKF A 1 A_FireChunks();
|
||||
FLKF BCDEFGHIJ 1;
|
||||
FLKF BCEFHI 1;
|
||||
FLKF J 4;
|
||||
Goto Loading;
|
||||
AltFire:
|
||||
|
|
|
|||
|
|
@ -75,9 +75,9 @@ 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 = int(Random[Impact](60,80)*realcharge);
|
||||
int dmg = int(Random[Impact](90,120)*realcharge);
|
||||
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS);
|
||||
d.HitActor.vel = x*(1000/d.HitActor.mass)*realcharge;
|
||||
d.HitActor.vel = x*(2000/d.HitActor.mass)*realcharge;
|
||||
if ( d.HitActor.bNOBLOOD )
|
||||
{
|
||||
let p = Spawn("HammerImpact",d.HitLocation-d.HitDir*4);
|
||||
|
|
@ -139,7 +139,7 @@ Class ImpactHammer : UTWeapon replaces Fist
|
|||
{
|
||||
int dmg = int(Random[Impact](25,35)*dscale);
|
||||
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS);
|
||||
d.HitActor.vel = x*(500/d.HitActor.mass)*dscale;
|
||||
d.HitActor.vel = x*(900/d.HitActor.mass)*dscale;
|
||||
}
|
||||
else if ( d.HitType != TRACE_HitNone )
|
||||
{
|
||||
|
|
|
|||
|
|
@ -10,8 +10,9 @@ Class Tier6Ammo2 : RandomSpawner2 replaces CellPack
|
|||
{
|
||||
Default
|
||||
{
|
||||
DropItem "MiniAmmo", 255, 1;
|
||||
DropItem "RifleAmmo", 255, 1;
|
||||
DropItem "MiniAmmo", 255, 6;
|
||||
DropItem "RifleAmmo", 255, 6;
|
||||
DropItem "WarheadAmmo", 255, 1;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -402,7 +402,7 @@ Class PulseBolt : Actor
|
|||
lasthit = level.time;
|
||||
damagedactor = t.Results.HitActor;
|
||||
accdamage += 1./TICRATE;
|
||||
if ( accdamage > 0.22 )
|
||||
if ( accdamage > 0.16 )
|
||||
{
|
||||
t.Results.HitActor.DamageMobj(self,target,int(Random[Pulse](70,80)*accdamage),'zapped',DMG_USEANGLE,atan2(x.y,x.x));
|
||||
accdamage = 0;
|
||||
|
|
|
|||
|
|
@ -306,7 +306,7 @@ Class Ripper2 : UTWeapon
|
|||
Loop;
|
||||
Fire:
|
||||
RZRF A 0 A_RazorFire();
|
||||
RZRF ABCDEFGHIJKLMNO 1;
|
||||
RZRF ABDEGHIJKLMNO 1;
|
||||
Goto Idle;
|
||||
AltFire:
|
||||
RZRF A 0 A_RazorFire(true);
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// shouldn't be placed in the world (it wasn't in UT99)
|
||||
// wasn't placeable in UT99
|
||||
Class WarheadAmmo : Ammo
|
||||
{
|
||||
Default
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue