diff --git a/GunLore.md b/GunLore.md index 891bc21..c7953be 100644 --- a/GunLore.md +++ b/GunLore.md @@ -218,8 +218,8 @@ no need to reload. An experimental entanglement unit inside the gun's internal mag locates spare ammunition carried by the user and automatically loads it. Both of its fire modes work exactly like the Automag, although due to -internal differences, it's a bit weaker in terms of speed and damage. The fact -that it never needs to reload at least compensates for this. +internal differences, it's a bit weaker in terms of speed and damage. However +it compensates by being much more accurate, even when rapid firing. Pressing the reload button makes use of the gun's weight to beat the crap out of your enemies up close. diff --git a/zscript/upowerups.zsc b/zscript/upowerups.zsc index 44644fd..3a0d73b 100644 --- a/zscript/upowerups.zsc +++ b/zscript/upowerups.zsc @@ -111,7 +111,13 @@ Class Amplifier : UnrealInventory let d = Amplifier(Owner.FindInventory("Amplifier")); if ( !d || !d.bActive ) return 1.; double Multiplier = max(1,4*(double(d.Charge-val)/d.DefaultCharge)); - d.DrainCharge(val); + if ( d.DrainCharge(val) ) + { + d.Owner.A_PlaySound("amplifier/unset",CHAN_ITEM); + if ( d.Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_AMPLIFIER")); + if ( d.tracer ) d.tracer.Destroy(); + if ( d.Amount <= 0 ) d.DepleteOrDestroy(); + } return Multiplier; } override bool Use( bool pickup ) @@ -132,12 +138,12 @@ Class Amplifier : UnrealInventory } else if ( !bActive && tracer ) tracer.Destroy(); if ( !bActive ) return; - if ( (Charge <= 0) || (!(level.maptime%35) && DrainCharge(2)) ) + if ( !(level.maptime%35) && DrainCharge(2) ) { - Owner.A_PlaySound("amplifier/set",CHAN_ITEM); + Owner.A_PlaySound("amplifier/unset",CHAN_ITEM); if ( Owner.CheckLocalView() ) Console.Printf(StringTable.Localize("$D_AMPLIFIER")); if ( tracer ) tracer.Destroy(); - DepleteOrDestroy(); + if ( Amount <= 0 ) DepleteOrDestroy(); } } States