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:
Marisa the Magician 2018-08-09 22:01:16 +02:00
commit a5debcdbb2
8 changed files with 57 additions and 29 deletions

View file

@ -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";

View file

@ -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); }

View file

@ -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:

View file

@ -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 )
{

View file

@ -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;
}
}

View file

@ -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;

View file

@ -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);

View file

@ -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