diff --git a/zscript/dispersionpistol.zsc b/zscript/dispersionpistol.zsc index 75870c4..49c2337 100644 --- a/zscript/dispersionpistol.zsc +++ b/zscript/dispersionpistol.zsc @@ -67,9 +67,10 @@ Class DefaultAmmo : Ammo override void DoEffect() { Super.Tick(); - rechargespeed = max(1.1,0.11*Amount); + if ( rechargespeed <= 0. ) rechargespeed = 1.1; rechargephase += 1./rechargespeed; if ( rechargephase < 35 ) return; + rechargespeed = max(1.1,0.11*Amount); rechargephase = 0; Amount = min(Amount+1,MaxAmount); } @@ -504,6 +505,7 @@ Class DispersionPistol : UnrealWeapon else weap.Ammo1.Amount -= invoker.MainUse; } DefaultAmmo(weap.Ammo1).rechargephase = (((weap.Ammo1.Amount>0)||!deathmatch)?0:30); + DefaultAmmo(weap.Ammo1).rechargespeed = 1.1; switch ( ulevel ) { case 0: @@ -569,6 +571,7 @@ Class DispersionPistol : UnrealWeapon if ( self is 'UTPlayer' ) UTPlayer(self).PlayAttacking3(); DefaultAmmo(weap.Ammo1).rechargephase = (((weap.Ammo1.Amount>0)||!deathmatch)?0:30); + DefaultAmmo(weap.Ammo1).rechargespeed = 1.1; A_PlaySound("dpistol/altfire",CHAN_WEAPON,Dampener.Active(self)?.4:1.); double mult = Amplifier.GetMult(self,int(invoker.ChargeSize*50)+50); invoker.FireEffect(); @@ -878,9 +881,10 @@ Class DispersionPistol : UnrealWeapon #### # 1 { A_Overlay(-9999,"Null"); - invoker.MainUse = min(6,invoker.upgradelevel+1); - invoker.UpdateSelectionOrder(); invoker.upgradelevel++; + invoker.MainUse = invoker.upgradelevel+1; + if ( invoker.upgradelevel > 1 ) invoker.MainUse++; + invoker.UpdateSelectionOrder(); if ( invoker.upgradelevel == 0 ) return ResolveState("Idle"); else if ( invoker.upgradelevel == 1 ) return ResolveState("Upgrade1"); else if ( invoker.upgradelevel == 2 ) return ResolveState("Upgrade2"); diff --git a/zscript/stunner.zsc b/zscript/stunner.zsc index 7e0ff50..c06721d 100644 --- a/zscript/stunner.zsc +++ b/zscript/stunner.zsc @@ -13,9 +13,10 @@ Class StunnerAmmo : Ammo override void DoEffect() { Super.Tick(); - rechargespeed = max(2.,.2*Amount); + if ( rechargespeed <= 0. ) rechargespeed = 2.; rechargephase += 1./rechargespeed; if ( rechargephase < 7 ) return; + rechargespeed = max(2.,.2*Amount); rechargephase = 0; Amount = min(Amount+1,MaxAmount); } @@ -283,7 +284,8 @@ Class Stunner : UnrealWeapon invoker.bCharging = false; if ( self is 'UTPlayer' ) UTPlayer(self).PlayAttacking3(); - StunnerAmmo(weap.Ammo1).rechargephase = ((weap.Ammo1.Amount>0)?0:5); + StunnerAmmo(weap.Ammo1).rechargephase = (((weap.Ammo1.Amount>0)||!deathmatch)?0:5); + StunnerAmmo(weap.Ammo1).rechargespeed = 2.; A_PlaySound("stun/fire",CHAN_WEAPON,Dampener.Active(self)?.4:1.,pitch:1.2-invoker.chargesize*0.06); double mult = Amplifier.GetMult(self,int(invoker.ChargeSize*50)+50); invoker.FireEffect(); diff --git a/zscript/unrealcommon.zsc b/zscript/unrealcommon.zsc index e3897c9..f9b4099 100644 --- a/zscript/unrealcommon.zsc +++ b/zscript/unrealcommon.zsc @@ -203,7 +203,7 @@ Class UPlayer : UTPlayer else { dsp.pendingupgrade = dsp.upgradelevel = 4; - dsp.MainUse = min(6,dsp.upgradelevel+1); + dsp.MainUse = 6; dsp.UpdateSelectionOrder(); } }