Tweaked fire rates of Enforcer, Shock Rifle, Ripper, Flak Cannon to be even closer to the originals.
Reduced gravity on Biosludge to make it feel more like the original. Buffed chainsaw altfire, making it hit fast on a wider arc. Correctly fixed armor + shield belt behaviors. Made it so jump boots drain after landing, thus preventing fall damage on the last jump in case it's enabled. Made jump boots drain slowly over time, for balance reasons (especially when jumping is disabled).
This commit is contained in:
parent
a9ef4344b4
commit
b5a0c723fe
8 changed files with 64 additions and 39 deletions
|
|
@ -8,7 +8,8 @@ Class UTArmor : Armor
|
|||
{
|
||||
+INVENTORY.AUTOACTIVATE;
|
||||
+INVENTORY.UNTOSSABLE;
|
||||
+INVENTORY.KEEPDEPLETED;
|
||||
-INVENTORY.KEEPDEPLETED;
|
||||
+INVENTORY.ALWAYSPICKUP;
|
||||
}
|
||||
override void AbsorbDamage( int damage, Name damageType, out int newdamage )
|
||||
{
|
||||
|
|
@ -37,7 +38,6 @@ Class UTArmorBonus : UTArmor replaces ArmorBonus
|
|||
{
|
||||
Tag "Armor Bonus";
|
||||
+COUNTITEM;
|
||||
+INVENTORY.ALWAYSPICKUP;
|
||||
Inventory.Amount 1;
|
||||
Inventory.MaxAmount 50;
|
||||
Inventory.InterHubAmount 50;
|
||||
|
|
@ -62,9 +62,12 @@ Class UTThighPads : UTArmor replaces GreenArmor
|
|||
let s = Owner.FindInventory("UTShieldBelt");
|
||||
if ( s )
|
||||
{
|
||||
// sum up current amounts
|
||||
let a = Owner.FindInventory("UTBodyArmor");
|
||||
int samount = s.amount;
|
||||
if ( a ) samount += a.amount;
|
||||
if ( amount < item.amount ) amount = item.amount;
|
||||
amount = min(s.maxamount-s.amount,amount);
|
||||
Console.Printf("%d",amount);
|
||||
amount = min(s.maxamount-samount,amount);
|
||||
item.bPickupGood = true;
|
||||
return true;
|
||||
}
|
||||
|
|
@ -98,9 +101,12 @@ Class UTBodyArmor : UTArmor replaces BlueArmor
|
|||
let s = Owner.FindInventory("UTShieldBelt");
|
||||
if ( s )
|
||||
{
|
||||
// sum up current amounts
|
||||
let p = Owner.FindInventory("UTThighPads");
|
||||
int samount = s.amount;
|
||||
if ( p ) samount += p.amount;
|
||||
if ( amount < item.amount ) amount = item.amount;
|
||||
amount = min(s.maxamount-s.amount,amount);
|
||||
Console.Printf("%d",amount);
|
||||
amount = min(s.maxamount-samount,amount);
|
||||
item.bPickupGood = true;
|
||||
return true;
|
||||
}
|
||||
|
|
@ -142,9 +148,20 @@ Class UTShieldBelt : UTArmor replaces Megasphere
|
|||
{
|
||||
if ( (item is 'UTBodyArmor') || (item is 'UTThighPads') )
|
||||
{
|
||||
item.amount = 1;
|
||||
amount -= 1;
|
||||
// sum up current amounts
|
||||
let a = Owner.FindInventory("UTBodyArmor");
|
||||
let p = Owner.FindInventory("UTThighPads");
|
||||
int samount = amount;
|
||||
if ( a ) samount += a.amount;
|
||||
if ( p ) samount += p.amount;
|
||||
item.amount = min(item.amount,maxamount-samount);
|
||||
if ( item.amount <= 0 )
|
||||
{
|
||||
item.amount = 1;
|
||||
amount -= 1;
|
||||
}
|
||||
}
|
||||
if ( item is 'UTShieldBelt' ) Use(true);
|
||||
return Super.HandlePickup(item);
|
||||
}
|
||||
override bool Use( bool pickup )
|
||||
|
|
|
|||
|
|
@ -85,7 +85,7 @@ Class BioSpark : Actor
|
|||
BounceFactor 0.5;
|
||||
WallBounceFactor 0.5;
|
||||
Gravity 0.2;
|
||||
Scale 0.04;
|
||||
Scale 0.06;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
|
|
@ -218,7 +218,7 @@ Class BioGel : Actor
|
|||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
vel.z += 6;
|
||||
vel.z += 3;
|
||||
deadtimer = -1;
|
||||
l = Spawn("BioLight",pos);
|
||||
l.target = self;
|
||||
|
|
@ -281,7 +281,9 @@ Class BioGel : Actor
|
|||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
Vector3 pvel = (FRandom[GES](-1,1),FRandom[GES](-1,1),FRandom[GES](-1,1)).unit()*FRandom[GES](1,3);
|
||||
let s = Spawn("BioSpark",pos);
|
||||
Vector3 spos = pos;
|
||||
if ( atplane == 1 ) spos += Normal*2;
|
||||
let s = Spawn("BioSpark",spos);
|
||||
s.vel = pvel;
|
||||
}
|
||||
}
|
||||
|
|
@ -442,6 +444,7 @@ Class BioGel : Actor
|
|||
Scale 2;
|
||||
Speed 18;
|
||||
ProjectileKickback 120;
|
||||
Gravity 0.5;
|
||||
PROJECTILE;
|
||||
-NOGRAVITY;
|
||||
+SKYEXPLODE;
|
||||
|
|
|
|||
|
|
@ -92,16 +92,16 @@ Class UTChainsaw : UTWeapon
|
|||
if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation-d.HitDir*4);
|
||||
}
|
||||
}
|
||||
action void A_SawSwipe()
|
||||
action void A_SawSwipe( bool initial = false )
|
||||
{
|
||||
A_QuakeEx(2,2,2,3,0,1,"",QF_RELATIVE,rollIntensity:0.15);
|
||||
invoker.FireEffect();
|
||||
if ( initial ) invoker.FireEffect();
|
||||
A_AlertMonsters();
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = Matrix4.GetAxes(pitch,angle,roll);
|
||||
Vector3 origin = (pos.x,pos.y,player.viewz)+10.0*x-2.0*z;
|
||||
FLineTraceData d;
|
||||
double ang = (angle-45)+90*invoker.sawcnt;
|
||||
double ang = (angle-60)+120*invoker.sawcnt;
|
||||
LineTrace(ang,90,BulletSlope(),TRF_ABSPOSITION,origin.z,origin.x,origin.y,d);
|
||||
if ( d.HitType == TRACE_HitActor )
|
||||
{
|
||||
|
|
@ -131,7 +131,7 @@ Class UTChainsaw : UTWeapon
|
|||
p.pitch = asin(-d.HitDir.z);
|
||||
if ( d.HitType == TRACE_HitWall ) d.HitLine.RemoteActivate(self,d.LineSide,SPAC_Impact,d.HitLocation-d.HitDir*4);
|
||||
}
|
||||
invoker.sawcnt += 0.2;
|
||||
invoker.sawcnt += 0.1;
|
||||
}
|
||||
override void DetachFromOwner()
|
||||
{
|
||||
|
|
@ -243,10 +243,15 @@ Class UTChainsaw : UTWeapon
|
|||
AltFire:
|
||||
CSWA A 0 A_PlaySound("chainsaw/fire",CHAN_6);
|
||||
CSWA ABCDE 2 A_Vibrate(true);
|
||||
CSWA FGHIJ 2 A_SawSwipe();
|
||||
CSWA F 2 A_Overlay(PSP_WEAPON+1,"AltFireSwipes");
|
||||
CSWA GHIJ 2;
|
||||
CSWA K 2 A_Vibrate(true);
|
||||
CSWA K 0 A_PlaySound("chainsaw/idle",CHAN_6,looping:true);
|
||||
Goto Ready;
|
||||
AltFireSwipes:
|
||||
TNT1 A 1 A_SawSwipe(true);
|
||||
TNT1 AAAAAAAAA 1 A_SawSwipe();
|
||||
Stop;
|
||||
Deselect:
|
||||
CSWD A 0 A_PlaySound("chainsaw/lower",CHAN_6);
|
||||
CSWD ABCDEF 1;
|
||||
|
|
|
|||
|
|
@ -458,20 +458,20 @@ Class Enforcer : UTWeapon replaces Pistol
|
|||
Hold:
|
||||
ENFF A 0 A_EnforcerFire();
|
||||
ENFF ABCDEFGHIJ 1;
|
||||
ENFF J 5;
|
||||
ENFF J 2;
|
||||
ENFF J 0 A_EnforcerRefire();
|
||||
ENFF J 2;
|
||||
ENFI A 0;
|
||||
Goto Idle;
|
||||
LeftFire:
|
||||
2NFI A 0 A_Overlay(-9998,"Null");
|
||||
2NFI A 8;
|
||||
2NFI A 5;
|
||||
2NFI A 0 A_EnforcerRefire(1,true);
|
||||
Goto LeftIdle;
|
||||
LeftHold:
|
||||
2NFF A 0 A_EnforcerFire(false,true);
|
||||
2NFF ABCDEFGHIJ 1;
|
||||
2NFF J 5;
|
||||
2NFF J 2;
|
||||
2NFF J 0 A_EnforcerRefire("LeftHold",true);
|
||||
2NFF J 2;
|
||||
2NFI A 0;
|
||||
|
|
@ -482,20 +482,20 @@ Class Enforcer : UTWeapon replaces Pistol
|
|||
AltHold:
|
||||
ENFA G 0 A_EnforcerFire(true);
|
||||
ENFA GHIJKLMN 1;
|
||||
ENFA N 3;
|
||||
ENFA N 1;
|
||||
ENFA G 0 A_EnforcerRefire();
|
||||
ENFA OPQRSTU 1;
|
||||
Goto Idle;
|
||||
LeftAltFire:
|
||||
2NFI A 0 A_Overlay(-9998,"Null");
|
||||
2NFI A 7;
|
||||
2NFI A 5;
|
||||
2NFI A 0 A_EnforcerRefire(1,true);
|
||||
Goto LeftIdle;
|
||||
2NFA ABCDEF 1;
|
||||
LeftAltHold:
|
||||
2NFA G 0 A_EnforcerFire(true,true);
|
||||
2NFA GHIJKLMN 1;
|
||||
2NFA N 3;
|
||||
2NFA N 1;
|
||||
2NFA G 0 A_EnforcerRefire("LeftAltHold",true);
|
||||
2NFA OPQRSTU 1;
|
||||
Goto LeftIdle;
|
||||
|
|
|
|||
|
|
@ -600,12 +600,11 @@ Class FlakCannon : UTWeapon
|
|||
}
|
||||
FLKL BCEFGIJKMNO 1;
|
||||
Idle:
|
||||
FLKI A 10;
|
||||
FLKI A 1 A_WeaponReady();
|
||||
Wait;
|
||||
Fire:
|
||||
FLKF A 1 A_FireChunks();
|
||||
FLKF BCEFHI 1;
|
||||
FLKF BCDEFGHI 1;
|
||||
FLKF J 4;
|
||||
Goto Loading;
|
||||
AltFire:
|
||||
|
|
|
|||
|
|
@ -295,9 +295,9 @@ Class UTJumpBoots : Inventory replaces RadSuit
|
|||
Tag "AntiGrav Boots";
|
||||
+INVENTORY.AUTOACTIVATE;
|
||||
+INVENTORY.ALWAYSPICKUP;
|
||||
Inventory.Amount 3;
|
||||
Inventory.MaxAmount 3;
|
||||
Inventory.InterHubAmount 3;
|
||||
Inventory.Amount 2100;
|
||||
Inventory.MaxAmount 2100;
|
||||
Inventory.InterHubAmount 2100;
|
||||
Inventory.PickupMessage "You picked up the AntiGrav boots.";
|
||||
Inventory.PickupSound "boot/pickup";
|
||||
Inventory.RespawnTics 1050;
|
||||
|
|
@ -315,15 +315,16 @@ Class UTJumpBoots : Inventory replaces RadSuit
|
|||
{
|
||||
Super.Tick();
|
||||
if ( !Owner || !Owner.player ) return;
|
||||
if ( owner.player.jumptics == -1 )
|
||||
amount--;
|
||||
if ( (amount > 0) && (owner.player.jumptics == -1) )
|
||||
{
|
||||
Amount--;
|
||||
Amount = max(0,Amount-700);
|
||||
Owner.A_PlaySound("boot/jump",CHAN_BODY);
|
||||
if ( Amount <= 0 )
|
||||
{
|
||||
PrintPickupMessage(true,"The AntiGrav Boots have drained.");
|
||||
DepleteOrDestroy();
|
||||
}
|
||||
}
|
||||
else if ( (Amount <= 0) && owner.player.onground )
|
||||
{
|
||||
PrintPickupMessage(true,"The AntiGrav Boots have drained.");
|
||||
DepleteOrDestroy();
|
||||
}
|
||||
}
|
||||
override void DetachFromOwner()
|
||||
|
|
|
|||
|
|
@ -310,7 +310,7 @@ Class Ripper2 : UTWeapon
|
|||
Goto Idle;
|
||||
AltFire:
|
||||
RZRF A 0 A_RazorFire(true);
|
||||
RZRF ABCDEFG 3;
|
||||
RZRF ABDEG 3;
|
||||
RZRF HIJKLMNO 1;
|
||||
Goto Idle;
|
||||
Deselect:
|
||||
|
|
|
|||
|
|
@ -1083,11 +1083,11 @@ Class ShockRifle : UTWeapon
|
|||
Wait;
|
||||
Fire:
|
||||
ASMF A 1 A_ShockFire();
|
||||
ASMF BCDEFGHIJ 2;
|
||||
ASMF BCDEFGHIJJ 2;
|
||||
Goto Idle;
|
||||
AltFire:
|
||||
ASMA A 1 A_ShockAlt();
|
||||
ASMA BCDEFGHIJ 2;
|
||||
ASMA BCDFGHIJ 2;
|
||||
Goto Idle;
|
||||
Deselect:
|
||||
ASMD ABCDEFG 1;
|
||||
|
|
@ -1256,12 +1256,12 @@ Class EnhancedShockRifle : UTWeapon replaces InvulnerabilitySphere
|
|||
Fire:
|
||||
ASMI A 0 A_JumpIfNoAmmo("DryFire");
|
||||
ASMF A 1 A_SShockFire();
|
||||
ASMF BCDEFGHIJ 2;
|
||||
ASMF BCDEFGHIJJ 2;
|
||||
Goto Idle;
|
||||
AltFire:
|
||||
ASMI A 0 A_JumpIfNoAmmo("DryFire");
|
||||
ASMA A 1 A_SShockAlt();
|
||||
ASMA BCDEFGHIJ 2;
|
||||
ASMA BCDFGHIJ 2;
|
||||
Goto Idle;
|
||||
DryFire:
|
||||
ASMA I 3
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue