Release Candidate 3:
- Fix inventory items not removing themselves when fully drained and no more copies are held. - Fixed Minigun playing the unwind animation on player death. - Fixed main hand Automag still firing when out of ammo dual wielding. - Corrected name clash between two explosion sounds. - Fixed suits still protecting from elemental damage when depleted. - Add option to wear all suits simultaneously. - Stunner now consumes Stinger ammo to recharge, this is more in line with the Unreal Bible. - Max damage per explosion capped to 100 for Stinger. Prevents ludicrous map-clearing explosions with an amplified asmd combo. - Shoot-through lines can now be activated by hitscan/beam weapons thanks to new DT "bullet trail" feature. No more softlocks in custom maps. - Added option to make Peacemaker missiles not seek owner and allies. - Peacemaker missiles start seeking targets much earlier, making it more viable indoors. - Autocannon has had its damage increased again. - Adjusted swingers for many weapons to feel a bit more natural. Still far from perfect. - Reverted changes to Flamethrower projectile density, and simply made it have less dynamic lights. - Adjustments to armors. Suit elemental resistances now take priority (as intended). [please redownload your DT devbuild for full effect] - Added ring effect for 6-rocket tight wad. Completely forgot this was a thing. - Fixed flashlight not clearing its dynlights when depleted and still having copies.
This commit is contained in:
parent
7051cb25be
commit
c6a81479ca
29 changed files with 218 additions and 74 deletions
|
|
@ -65,19 +65,20 @@ Class AsbestosSuit : UnrealArmor
|
|||
Inventory.PickupSound "misc/suit";
|
||||
Inventory.Icon "I_Suit";
|
||||
}
|
||||
override void AbsorbDamage( int damage, Name damageType, out int newdamage )
|
||||
override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags )
|
||||
{
|
||||
if ( (damageType == 'Fire') || (damageType == 'Ice') ) damage = newdamage = 0;
|
||||
Super.AbsorbDamage(damage,damageType,newdamage);
|
||||
if ( passive && (Amount > 0) && ((damageType == 'Fire') || (damageType == 'Ice')) )
|
||||
newdamage = 0;
|
||||
}
|
||||
override void AttachToOwner( Actor other )
|
||||
{
|
||||
Super.AttachToOwner(other);
|
||||
if ( sting_allsuits ) return;
|
||||
// remove other suits
|
||||
Inventory i = other.FindInventory("ToxinSuit");
|
||||
if ( i ) other.RemoveInventory(i);
|
||||
i = other.FindInventory("KevlarSuit");
|
||||
if ( i ) other.RemoveInventory(i);
|
||||
Super.AttachToOwner(other);
|
||||
}
|
||||
States
|
||||
{
|
||||
|
|
@ -101,14 +102,15 @@ Class ToxinSuit : UnrealArmor
|
|||
Inventory.PickupSound "misc/suit";
|
||||
Inventory.Icon "I_TSuit";
|
||||
}
|
||||
override void AbsorbDamage( int damage, Name damageType, out int newdamage )
|
||||
override void ModifyDamage( int damage, Name damageType, out int newdamage, bool passive, Actor inflictor, Actor source, int flags )
|
||||
{
|
||||
if ( damageType == 'Slime' ) damage = newdamage = 0;
|
||||
Super.AbsorbDamage(damage,damageType,newdamage);
|
||||
if ( passive && (Amount > 0) && ((damageType == 'Slime') || (damageType == 'Poison')) )
|
||||
newdamage = 0;
|
||||
}
|
||||
override void AttachToOwner( Actor other )
|
||||
{
|
||||
Super.AttachToOwner(other);
|
||||
if ( sting_allsuits ) return;
|
||||
// remove other suits
|
||||
Inventory i = other.FindInventory("AsbestosSuit");
|
||||
if ( i ) other.RemoveInventory(i);
|
||||
|
|
@ -140,6 +142,7 @@ Class KevlarSuit : UnrealArmor
|
|||
override void AttachToOwner( Actor other )
|
||||
{
|
||||
Super.AttachToOwner(other);
|
||||
if ( sting_allsuits ) return;
|
||||
// remove other suits
|
||||
Inventory i = other.FindInventory("AsbestosSuit");
|
||||
if ( i ) other.RemoveInventory(i);
|
||||
|
|
@ -163,9 +166,13 @@ Class ShieldBelt : UnrealArmor
|
|||
Owner.A_PlaySound("belt/absorb",CHAN_7);
|
||||
UTMainHandler.DoFlash(Owner,Color(80,255,224,0),5);
|
||||
}
|
||||
int oldamt = amount;
|
||||
Super.AbsorbDamage(damage,damageType,newdamage);
|
||||
if ( (oldamt > 0) && (amount <= 0) && Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_SHIELDBELT"));
|
||||
}
|
||||
override void DepleteOrDestroy()
|
||||
{
|
||||
if ( (amount <= 0) && Owner.CheckLocalView() )
|
||||
Console.Printf(StringTable.Localize("$D_SHIELDBELT"));
|
||||
Super.DepleteOrDestroy();
|
||||
}
|
||||
Default
|
||||
{
|
||||
|
|
@ -202,11 +209,16 @@ Class PowerShield : UnrealArmor
|
|||
Owner.A_PlaySound("belt/absorb",CHAN_7);
|
||||
UTMainHandler.DoFlash(Owner,Color(80,224,0,255),5);
|
||||
gothit = true;
|
||||
damage = 0;
|
||||
newdamage = 0;
|
||||
}
|
||||
int oldamt = amount;
|
||||
amount = int.max; // blocks all damage
|
||||
Super.AbsorbDamage(damage,damageType,newdamage);
|
||||
amount = oldamt; // does not drain here
|
||||
if ( damage > 0 ) newdamage = ApplyDamageFactors(GetClass(),damageType,damage,damage);
|
||||
}
|
||||
override void DepleteOrDestroy()
|
||||
{
|
||||
if ( (amount <= 0) && Owner.CheckLocalView() )
|
||||
Console.Printf(StringTable.Localize("$D_POWERSHIELD"));
|
||||
Super.DepleteOrDestroy();
|
||||
}
|
||||
override void Tick()
|
||||
{
|
||||
|
|
@ -218,11 +230,7 @@ Class PowerShield : UnrealArmor
|
|||
gothit = false;
|
||||
}
|
||||
if ( !(level.maptime%15) && !sting_pshield ) amount--;
|
||||
if ( amount <= 0 )
|
||||
{
|
||||
if ( Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_POWERSHIELD"));
|
||||
DepleteOrDestroy();
|
||||
}
|
||||
if ( amount <= 0 ) DepleteOrDestroy();
|
||||
}
|
||||
Default
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue