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 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 Default
{ {
Tag "Thigh Pads"; Tag "Thigh Pads";
@ -75,6 +91,22 @@ Class UTThighPads : UTArmor replaces GreenArmor
Class UTBodyArmor : UTArmor replaces BlueArmor 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 Default
{ {
Tag "Body Armor"; Tag "Body Armor";
@ -106,6 +138,15 @@ Class UTShieldBelt : UTArmor replaces Megasphere
Super.AbsorbDamage(damage,damageType,newdamage); Super.AbsorbDamage(damage,damageType,newdamage);
if ( (oldamt > 0) && (amount <= 0) ) PrintPickupMessage(true,"The Shield Belt has depleted."); 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 ) override bool Use( bool pickup )
{ {
// removes thigh pads and body armor like in UT // removes thigh pads and body armor like in UT
@ -113,19 +154,6 @@ Class UTShieldBelt : UTArmor replaces Megasphere
Owner.TakeInventory("UTBodyArmor",150); Owner.TakeInventory("UTBodyArmor",150);
return false; 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 Default
{ {
Tag "Shield Belt"; Tag "Shield Belt";

View file

@ -171,7 +171,6 @@ Class BioLight : DynamicLight
Class BioXLight : DynamicLight Class BioXLight : DynamicLight
{ {
double lifetime; double lifetime;
Default Default
{ {
@ -410,7 +409,7 @@ Class BioGel : Actor
s.args[3] = int(s.args[3]*Scale.x); s.args[3] = int(s.args[3]*Scale.x);
invoker.deadtimer = -2; invoker.deadtimer = -2;
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(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); A_PlaySound("ges/explode",CHAN_VOICE);
int numpt = Min(300,int(Scale.x*30))+Random[GES](-10,10); int numpt = Min(300,int(Scale.x*30))+Random[GES](-10,10);
for ( int i=0; i<numpt; i++ ) 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."; Obituary "%o drank a glass of %k's dripping green load.";
DamageType 'Slime'; DamageType 'Slime';
DamageFunction int(Random[GES](10,20)*Scale.x*Scale.x); DamageFunction int(Random[GES](20,40)*Scale.x);
RenderStyle "Add"; RenderStyle "Add";
Radius 3; Radius 3;
Height 3; Height 3;
@ -692,7 +691,7 @@ Class BioRifle : UTWeapon
BIOM A 0 A_Refire(1); BIOM A 0 A_Refire(1);
Goto AltRelease; Goto AltRelease;
AltHeld: AltHeld:
BIOM A 5; BIOM A 1;
BIOM A 0 A_Refire("AltHeld"); BIOM A 0 A_Refire("AltHeld");
AltRelease: AltRelease:
BIOE A 1 { invoker.charge = min(5.1,invoker.charge+0.1); } BIOE A 1 { invoker.charge = min(5.1,invoker.charge+0.1); }

View file

@ -140,7 +140,7 @@ Class FlakChunk : Actor
Radius 2; Radius 2;
Height 2; Height 2;
Speed 50; Speed 50;
DamageFunction Random[Flak](15,25); DamageFunction Random[Flak](25,35);
DamageType 'Shredded'; DamageType 'Shredded';
BounceType "Doom"; BounceType "Doom";
BounceFactor 0.8; BounceFactor 0.8;
@ -397,7 +397,7 @@ Class FlakSlug : Actor
double a, s; double a, s;
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll); [x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
Actor p; Actor p;
for ( int i=0; i<5; i++ ) for ( int i=0; i<8; i++ )
{ {
p = Spawn("FlakChunk",pos); p = Spawn("FlakChunk",pos);
a = FRandom[Flak](0,360); a = FRandom[Flak](0,360);
@ -494,7 +494,7 @@ Class FlakCannon : UTWeapon
A_OverlayRenderstyle(-2,STYLE_Add); A_OverlayRenderstyle(-2,STYLE_Add);
[x, y, z] = Matrix4.GetAxes(BulletSlope(),angle,roll); [x, y, z] = Matrix4.GetAxes(BulletSlope(),angle,roll);
Actor p; Actor p;
for ( int i=0; i<8; i++ ) for ( int i=0; i<12; i++ )
{ {
p = Spawn("FlakChunk",origin); p = Spawn("FlakChunk",origin);
a = FRandom[Flak](0,360); a = FRandom[Flak](0,360);
@ -605,7 +605,7 @@ Class FlakCannon : UTWeapon
Wait; Wait;
Fire: Fire:
FLKF A 1 A_FireChunks(); FLKF A 1 A_FireChunks();
FLKF BCDEFGHIJ 1; FLKF BCEFHI 1;
FLKF J 4; FLKF J 4;
Goto Loading; Goto Loading;
AltFire: 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); 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 = int(Random[Impact](60,80)*realcharge); int dmg = int(Random[Impact](90,120)*realcharge);
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS); 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 ) if ( d.HitActor.bNOBLOOD )
{ {
let p = Spawn("HammerImpact",d.HitLocation-d.HitDir*4); 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); int dmg = int(Random[Impact](25,35)*dscale);
dmg = d.HitActor.DamageMobj(invoker,self,dmg,'impact',DMG_THRUSTLESS); 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 ) else if ( d.HitType != TRACE_HitNone )
{ {

View file

@ -10,8 +10,9 @@ Class Tier6Ammo2 : RandomSpawner2 replaces CellPack
{ {
Default Default
{ {
DropItem "MiniAmmo", 255, 1; DropItem "MiniAmmo", 255, 6;
DropItem "RifleAmmo", 255, 1; DropItem "RifleAmmo", 255, 6;
DropItem "WarheadAmmo", 255, 1;
} }
} }

View file

@ -402,7 +402,7 @@ Class PulseBolt : Actor
lasthit = level.time; lasthit = level.time;
damagedactor = t.Results.HitActor; damagedactor = t.Results.HitActor;
accdamage += 1./TICRATE; 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)); t.Results.HitActor.DamageMobj(self,target,int(Random[Pulse](70,80)*accdamage),'zapped',DMG_USEANGLE,atan2(x.y,x.x));
accdamage = 0; accdamage = 0;

View file

@ -306,7 +306,7 @@ Class Ripper2 : UTWeapon
Loop; Loop;
Fire: Fire:
RZRF A 0 A_RazorFire(); RZRF A 0 A_RazorFire();
RZRF ABCDEFGHIJKLMNO 1; RZRF ABDEGHIJKLMNO 1;
Goto Idle; Goto Idle;
AltFire: AltFire:
RZRF A 0 A_RazorFire(true); 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 Class WarheadAmmo : Ammo
{ {
Default Default