Dispersion Pistol fully implemented.
Jump boots (mostly) implemented (replacement feature not done yet). Various adjustments. DamNums coloring support.
This commit is contained in:
parent
442dfd818c
commit
ce68db4b36
22 changed files with 822 additions and 36 deletions
|
|
@ -11,7 +11,7 @@ Class WeaponPowerUp : Inventory
|
|||
override bool TryPickup( in out Actor toucher )
|
||||
{
|
||||
if ( !toucher.FindInventory("DispersionPistol") ) return false;
|
||||
let damo = DispersionAmmo(toucher.FindInventory("DispersionAmmo"));
|
||||
let damo = DefaultAmmo(toucher.FindInventory("DefaultAmmo"));
|
||||
if ( damo )
|
||||
{
|
||||
damo.BackpackMaxAmount = damo.MaxAmount = min(90,damo.MaxAmount+10);
|
||||
|
|
@ -60,7 +60,7 @@ Class WeaponPowerUpX : ASMDAmmoX
|
|||
}
|
||||
}
|
||||
|
||||
Class DispersionAmmo : Ammo
|
||||
Class DefaultAmmo : Ammo
|
||||
{
|
||||
double rechargephase, rechargespeed;
|
||||
|
||||
|
|
@ -85,6 +85,361 @@ Class DispersionAmmo : Ammo
|
|||
}
|
||||
}
|
||||
|
||||
Class DispExLight1 : PaletteLight
|
||||
{
|
||||
Default
|
||||
{
|
||||
Tag "DBlue";
|
||||
Args 0,0,0,80;
|
||||
ReactionTime 25;
|
||||
}
|
||||
}
|
||||
Class DispExLight2 : PaletteLight
|
||||
{
|
||||
Default
|
||||
{
|
||||
Tag "DGreen";
|
||||
Args 0,0,0,80;
|
||||
ReactionTime 25;
|
||||
}
|
||||
}
|
||||
Class DispExLight3 : PaletteLight
|
||||
{
|
||||
Default
|
||||
{
|
||||
Tag "DYellow";
|
||||
Args 0,0,0,80;
|
||||
ReactionTime 25;
|
||||
}
|
||||
}
|
||||
Class DispExLight4 : PaletteLight
|
||||
{
|
||||
Default
|
||||
{
|
||||
Tag "DOrange";
|
||||
Args 0,0,0,80;
|
||||
ReactionTime 25;
|
||||
}
|
||||
}
|
||||
Class DispExLight5 : PaletteLight
|
||||
{
|
||||
Default
|
||||
{
|
||||
Tag "DRed";
|
||||
Args 0,0,0,80;
|
||||
ReactionTime 25;
|
||||
}
|
||||
}
|
||||
|
||||
Class DispBurst1 : ASMDSpark
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFB ABCDEFG 1 Bright
|
||||
{
|
||||
A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
vel *= 0.95;
|
||||
}
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class DispBurst2 : DispBurst1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFG ABCDEFG 1 Bright
|
||||
{
|
||||
A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
vel *= 0.95;
|
||||
}
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class DispBurst3 : DispBurst1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFY ABCDEFG 1 Bright
|
||||
{
|
||||
A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
vel *= 0.95;
|
||||
}
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class DispBurst4 : DispBurst1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFO ABCDEFG 1 Bright
|
||||
{
|
||||
A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
vel *= 0.95;
|
||||
}
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class DispBurst5 : DispBurst1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFR ABCDEFG 1 Bright
|
||||
{
|
||||
A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
vel *= 0.95;
|
||||
}
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class ViewDispBurst1 : ViewASMDSpark
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFB ABCDEFG 1 Bright A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class ViewDispBurst2 : ViewDispBurst1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFG ABCDEFG 1 Bright A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class ViewDispBurst3 : ViewDispBurst1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFY ABCDEFG 1 Bright A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class ViewDispBurst4 : ViewDispBurst1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFO ABCDEFG 1 Bright A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
Class ViewDispBurst5 : ViewDispBurst1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DEFR ABCDEFG 1 Bright A_FadeOut(FRandom[ASMD](0.0,0.3));
|
||||
Loop;
|
||||
}
|
||||
}
|
||||
|
||||
Class DispExplo1 : Actor
|
||||
{
|
||||
Default
|
||||
{
|
||||
RenderStyle "Add";
|
||||
Scale 0.4;
|
||||
+NOGRAVITY;
|
||||
+NOBLOCKMAP;
|
||||
Radius 0.1;
|
||||
Height 0;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
Scale.x *= RandomPick[DPistol](-1,1);
|
||||
Scale.y *= RandomPick[DPistol](-1,1);
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DSEB ABCDEFGHIJ 2 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class DispExplo2 : DispExplo1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DISE ABCDEFGHIJ 2 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class DispExplo3 : DispExplo1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DSEY ABCDEFGHIJ 2 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class DispExplo4 : DispExplo1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DSEO ABCDEFGHIJ 2 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class DispExplo5 : DispExplo1
|
||||
{
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DSER ABCDEFGHIJ 2 Bright;
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
// yes this is the projectile class name, blame Epic
|
||||
Class DispersionAmmo : Actor
|
||||
{
|
||||
Class<Actor> LightClass, BurstClass, ExploClass;
|
||||
double mult;
|
||||
|
||||
Property LightClass : LightClass;
|
||||
Property BurstClass : BurstClass;
|
||||
Property ExploClass : ExploClass;
|
||||
|
||||
action void A_DispTrail()
|
||||
{
|
||||
Vector3 x, y, z, dir;
|
||||
double a, s;
|
||||
Actor p;
|
||||
[x,y,z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
for ( int i=0; i<3; i++ )
|
||||
{
|
||||
a = FRandom[DPistol](0,360);
|
||||
s = FRandom[ASMD](0,0.35);
|
||||
dir = (-x+y*cos(a)*s+z*sin(a)*s).unit();
|
||||
p = Spawn(invoker.BurstClass,level.Vec3Offset(pos,scale.x*(dir*16.+x*32.)));
|
||||
p.A_SetScale(0.1*min(0.8+invoker.mult*0.75,1.5));
|
||||
p.vel = vel*0.5+dir*FRandom[DPistol](3,8);
|
||||
}
|
||||
}
|
||||
action void A_DispExpl()
|
||||
{
|
||||
UTMainHandler.DoKnockback(tracer,(cos(angle)*cos(pitch),sin(angle)*cos(pitch),-sin(pitch)),6000);
|
||||
A_AlertMonsters();
|
||||
A_SprayDecal("RazorBlast",20);
|
||||
Spawn(invoker.LightClass,pos);
|
||||
Actor a;
|
||||
double ang, pt;
|
||||
int numpt = int(Random[DPistol](12,18)*invoker.mult);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
a = Spawn(invoker.BurstClass,pos);
|
||||
a.A_SetScale(0.2*min(0.8+invoker.mult*0.75,1.5));
|
||||
ang = FRandom[DPistol](0,360);
|
||||
pt = FRandom[DPistol](-90,90);
|
||||
a.vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),-sin(pt))*FRandom[DPistol](6,16);
|
||||
a.alpha *= 2.;
|
||||
}
|
||||
a = Spawn(invoker.ExploClass,pos);
|
||||
a.A_SetScale(min(0.8+invoker.mult*0.8,2.5));
|
||||
if ( !bAMBUSH ) return;
|
||||
UTMainHandler.DoBlast(self,120,6000);
|
||||
A_Explode(GetMissileDamage(0,0),120);
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
A_PlaySound("dpistol/fly",CHAN_VOICE,.9,true,2.);
|
||||
mult = max(1.,mult);
|
||||
}
|
||||
Default
|
||||
{
|
||||
Obituary "$O_DPISTOL";
|
||||
DamageFunction (15*mult);
|
||||
DamageType 'DAmmo1';
|
||||
Scale 0.8;
|
||||
Radius 4;
|
||||
Height 4;
|
||||
Speed 25;
|
||||
RenderStyle "Add";
|
||||
PROJECTILE;
|
||||
+FORCEXYBILLBOARD;
|
||||
+SKYEXPLODE;
|
||||
+EXPLODEONWATER;
|
||||
+FORCERADIUSDMG;
|
||||
+NODAMAGETHRUST;
|
||||
+INTERPOLATEANGLES;
|
||||
+HITTRACER;
|
||||
DispersionAmmo.LightClass "DispExLight1";
|
||||
DispersionAmmo.BurstClass "DispBurst1";
|
||||
DispersionAmmo.ExploClass "DispExplo1";
|
||||
}
|
||||
States
|
||||
{
|
||||
Spawn:
|
||||
DISM AABBCCDDEEFFGGHH 1 Bright A_DispTrail();
|
||||
Loop;
|
||||
Death:
|
||||
TNT1 A 1
|
||||
{
|
||||
A_PlaySound("dpistol/hit",CHAN_VOICE);
|
||||
A_DispExpl();
|
||||
}
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
Class DAmmo2 : DispersionAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
DamageFunction (25*mult);
|
||||
DamageType 'DAmmo2';
|
||||
DispersionAmmo.LightClass "DispExLight2";
|
||||
DispersionAmmo.BurstClass "DispBurst2";
|
||||
DispersionAmmo.ExploClass "DispExplo2";
|
||||
}
|
||||
}
|
||||
Class DAmmo3 : DispersionAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
DamageFunction (40*mult);
|
||||
DamageType 'DAmmo3';
|
||||
DispersionAmmo.LightClass "DispExLight3";
|
||||
DispersionAmmo.BurstClass "DispBurst3";
|
||||
DispersionAmmo.ExploClass "DispExplo3";
|
||||
}
|
||||
}
|
||||
Class DAmmo4 : DispersionAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
DamageFunction (55*mult);
|
||||
DamageType 'DAmmo4';
|
||||
DispersionAmmo.LightClass "DispExLight4";
|
||||
DispersionAmmo.BurstClass "DispBurst4";
|
||||
DispersionAmmo.ExploClass "DispExplo4";
|
||||
}
|
||||
}
|
||||
Class DAmmo5 : DispersionAmmo
|
||||
{
|
||||
Default
|
||||
{
|
||||
DamageFunction (75*mult);
|
||||
DamageType 'DAmmo5';
|
||||
DispersionAmmo.LightClass "DispExLight5";
|
||||
DispersionAmmo.BurstClass "DispBurst5";
|
||||
DispersionAmmo.ExploClass "DispExplo5";
|
||||
}
|
||||
}
|
||||
|
||||
Class DispLight1 : EnforcerLight
|
||||
{
|
||||
Default
|
||||
|
|
@ -127,42 +482,64 @@ Class DispersionPistol : UnrealWeapon
|
|||
bool pendingupgrade;
|
||||
double chargesize, count;
|
||||
bool bCharging;
|
||||
int MainUse, ChargeUse;
|
||||
|
||||
override void Tick()
|
||||
{
|
||||
Super.Tick();
|
||||
if ( sting_dpistol ) AmmoUse2 = 1;
|
||||
else AmmoUse2 = AmmoUse1/2;
|
||||
if ( MainUse < 1 ) MainUse = 1;
|
||||
if ( sting_dpistol ) ChargeUse = 1;
|
||||
else ChargeUse = max(1,MainUse/2);
|
||||
}
|
||||
action void A_DispFire()
|
||||
{
|
||||
Weapon weap = Weapon(invoker);
|
||||
if ( !weap ) return;
|
||||
if ( weap.Ammo1.Amount <= 0 ) return;
|
||||
if ( !weap.DepleteAmmo(weap.bAltFire,true,1) ) return;
|
||||
DispersionAmmo(weap.Ammo1).rechargephase = 0;
|
||||
DefaultAmmo(weap.Ammo1).rechargephase = 0;
|
||||
A_PlaySound("dpistol/fire",CHAN_WEAPON,Dampener.Active(self)?.4:1.,pitch:1.2);
|
||||
double mult = Amplifier.GetMult(self,80);
|
||||
invoker.FireEffect();
|
||||
switch ( invoker.upgradelevel )
|
||||
Class<Actor> proj, part;
|
||||
int ulevel = invoker.upgradelevel;
|
||||
if ( !(sv_infiniteammo || FindInventory('PowerInfiniteAmmo',true)) )
|
||||
{
|
||||
if ( weap.Ammo1.Amount < max(10,invoker.MainUse) )
|
||||
{
|
||||
weap.Ammo1.Amount -= 1;
|
||||
ulevel = 0;
|
||||
}
|
||||
else weap.Ammo1.Amount -= invoker.MainUse;
|
||||
}
|
||||
switch ( ulevel )
|
||||
{
|
||||
case 0:
|
||||
proj = "DispersionAmmo";
|
||||
part = "ViewDispBurst1";
|
||||
UTMainHandler.DoFlash(self,Color(80,96,64,255),1);
|
||||
A_Overlay(PSP_FLASH,"Flash1");
|
||||
break;
|
||||
case 1:
|
||||
proj = "DAmmo2";
|
||||
part = "ViewDispBurst2";
|
||||
UTMainHandler.DoFlash(self,Color(80,64,255,96),1);
|
||||
A_Overlay(PSP_FLASH,"Flash2");
|
||||
break;
|
||||
case 2:
|
||||
proj = "DAmmo3";
|
||||
part = "ViewDispBurst3";
|
||||
UTMainHandler.DoFlash(self,Color(80,255,255,96),1);
|
||||
A_Overlay(PSP_FLASH,"Flash3");
|
||||
break;
|
||||
case 3:
|
||||
proj = "DAmmo4";
|
||||
part = "ViewDispBurst4";
|
||||
UTMainHandler.DoFlash(self,Color(80,255,160,64),1);
|
||||
A_Overlay(PSP_FLASH,"Flash4");
|
||||
break;
|
||||
default:
|
||||
proj = "DAmmo5";
|
||||
part = "ViewDispBurst5";
|
||||
UTMainHandler.DoFlash(self,Color(80,255,96,64),1);
|
||||
A_Overlay(PSP_FLASH,"Flash5");
|
||||
break;
|
||||
|
|
@ -172,6 +549,23 @@ Class DispersionPistol : UnrealWeapon
|
|||
UTMainHandler.DoSwing(self,(FRandom[DPistol](-0.1,-0.3),FRandom[DPistol](-0.1,0.3)),2,-0.3,3,SWING_Spring,0,3);
|
||||
if ( !Dampener.Active(self) ) A_AlertMonsters();
|
||||
A_QuakeEx(2,2,2,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
Vector3 origin = (pos.x,pos.y,player.viewz)+10*x+3*y-3*z;
|
||||
Actor p = Spawn(proj,origin);
|
||||
p.angle = angle;
|
||||
p.pitch = BulletSlope();
|
||||
p.vel = (cos(p.angle)*cos(p.pitch),sin(p.angle)*cos(p.pitch),-sin(p.pitch))*p.speed;
|
||||
p.target = self;
|
||||
DispersionAmmo(p).mult = mult;
|
||||
int numpt = Random[DPistol](10,20);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
let s = Spawn(part,origin);
|
||||
ViewASMDSpark(s).ofs = (10,3,-3);
|
||||
s.target = self;
|
||||
ViewASMDSpark(s).vvel += (FRandom[ASMD](0.5,2.0),FRandom[ASMD](-1.5,1.5),FRandom[ASMD](-1.5,1.5));
|
||||
}
|
||||
}
|
||||
action void A_DispAltFire()
|
||||
{
|
||||
|
|
@ -181,30 +575,41 @@ Class DispersionPistol : UnrealWeapon
|
|||
invoker.bCharging = false;
|
||||
if ( self is 'UTPlayer' )
|
||||
UTPlayer(self).PlayAttacking();
|
||||
DispersionAmmo(weap.Ammo1).rechargephase = 0;
|
||||
DefaultAmmo(weap.Ammo1).rechargephase = 0;
|
||||
A_PlaySound("dpistol/fire",CHAN_WEAPON,Dampener.Active(self)?.4:1.);
|
||||
double mult = Amplifier.GetMult(self,int(invoker.ChargeSize*50)+50);
|
||||
invoker.FireEffect();
|
||||
int ulevel = sting_dpistol?0:invoker.upgradelevel;
|
||||
Class<Actor> proj, part;
|
||||
switch ( ulevel )
|
||||
{
|
||||
case 0:
|
||||
proj = "DispersionAmmo";
|
||||
part = "ViewDispBurst1";
|
||||
UTMainHandler.DoFlash(self,Color(80,96,64,255),1);
|
||||
A_Overlay(PSP_FLASH,"Flash1");
|
||||
break;
|
||||
case 1:
|
||||
proj = "DAmmo2";
|
||||
part = "ViewDispBurst2";
|
||||
UTMainHandler.DoFlash(self,Color(80,64,255,96),1);
|
||||
A_Overlay(PSP_FLASH,"Flash2");
|
||||
break;
|
||||
case 2:
|
||||
proj = "DAmmo3";
|
||||
part = "ViewDispBurst3";
|
||||
UTMainHandler.DoFlash(self,Color(80,255,255,96),1);
|
||||
A_Overlay(PSP_FLASH,"Flash3");
|
||||
break;
|
||||
case 3:
|
||||
proj = "DAmmo4";
|
||||
part = "ViewDispBurst4";
|
||||
UTMainHandler.DoFlash(self,Color(80,255,160,64),1);
|
||||
A_Overlay(PSP_FLASH,"Flash4");
|
||||
break;
|
||||
default:
|
||||
proj = "DAmmo5";
|
||||
part = "ViewDispBurst5";
|
||||
UTMainHandler.DoFlash(self,Color(80,255,96,64),1);
|
||||
A_Overlay(PSP_FLASH,"Flash5");
|
||||
break;
|
||||
|
|
@ -216,12 +621,32 @@ Class DispersionPistol : UnrealWeapon
|
|||
if ( !Dampener.Active(self) ) A_AlertMonsters();
|
||||
int qs = int(1+invoker.chargesize*0.3);
|
||||
A_QuakeEx(qs,qs,qs,4,0,1,"",QF_RELATIVE|QF_SCALEDOWN,rollIntensity:0.1);
|
||||
Vector3 x, y, z;
|
||||
[x, y, z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
Vector3 origin = (pos.x,pos.y,player.viewz)+10*x+3*y-3*z;
|
||||
Actor p = Spawn(proj,origin);
|
||||
p.angle = angle;
|
||||
p.pitch = BulletSlope();
|
||||
p.vel = (cos(p.angle)*cos(p.pitch),sin(p.angle)*cos(p.pitch),-sin(p.pitch))*p.speed;
|
||||
p.target = self;
|
||||
p.bAMBUSH = true;
|
||||
double scl = 0.5+invoker.chargesize*0.6;
|
||||
p.scale *= scl;
|
||||
DispersionAmmo(p).mult = scl*mult*1.1;
|
||||
int numpt = Random[DPistol](10,20);
|
||||
for ( int i=0; i<numpt; i++ )
|
||||
{
|
||||
let s = Spawn(part,origin);
|
||||
ViewASMDSpark(s).ofs = (10,3,-3);
|
||||
s.target = self;
|
||||
ViewASMDSpark(s).vvel += (FRandom[ASMD](0.5,2.0),FRandom[ASMD](-1.5,1.5),FRandom[ASMD](-1.5,1.5));
|
||||
}
|
||||
}
|
||||
action bool A_DispCharge()
|
||||
{
|
||||
Weapon weap = Weapon(invoker);
|
||||
if ( !weap ) return false;
|
||||
DispersionAmmo(weap.Ammo1).rechargephase = 0;
|
||||
DefaultAmmo(weap.Ammo1).rechargephase = 0;
|
||||
UTMainHandler.DoSwing(self,(FRandom[DPistol](-1,1),FRandom[DPistol](-1,1)),0.02*invoker.chargesize,0,2,SWING_Spring);
|
||||
A_WeaponOffset(FRandom[DPistol](-1,1)*1.2*invoker.chargesize,32+FRandom[DPistol](-1,1)*1.2*invoker.chargesize);
|
||||
if ( !Dampener.Active(self) ) A_AlertMonsters();
|
||||
|
|
@ -229,16 +654,14 @@ Class DispersionPistol : UnrealWeapon
|
|||
invoker.count += 1./35.;
|
||||
if ( invoker.count < 0.3 ) return false;
|
||||
invoker.count = 0;
|
||||
weap.DepleteAmmo(weap.bAltFire,true,1);
|
||||
if ( (weap.Ammo1.Amount <= 0) || (invoker.chargesize >= 5.) )
|
||||
return true;
|
||||
if ( invoker.chargesize >= 5. ) return true;
|
||||
if ( !(sv_infiniteammo || (FindInventory('PowerInfiniteAmmo',true))) )
|
||||
{
|
||||
if ( weap.Ammo1.Amount < invoker.ChargeUse ) return true;
|
||||
weap.Ammo1.Amount -= invoker.ChargeUse;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
override bool CheckAmmo( int fireMode, bool autoSwitch, bool requireAmmo, int ammocount )
|
||||
{
|
||||
if ( bCharging ) return true;
|
||||
return Super.CheckAmmo(fireMode,autoSwitch,requireAmmo,ammocount);
|
||||
}
|
||||
Default
|
||||
{
|
||||
Tag "$T_DPISTOL";
|
||||
|
|
@ -246,9 +669,9 @@ Class DispersionPistol : UnrealWeapon
|
|||
Weapon.UpSound "dpistol/select";
|
||||
Weapon.SlotNumber 1;
|
||||
Weapon.SelectionOrder 1;
|
||||
Weapon.AmmoType "DispersionAmmo";
|
||||
Weapon.AmmoType "DefaultAmmo";
|
||||
Weapon.AmmoUse 1;
|
||||
Weapon.AmmoType2 "DispersionAmmo";
|
||||
Weapon.AmmoType2 "DefaultAmmo";
|
||||
Weapon.AmmoUse2 1;
|
||||
Weapon.AmmoGive 50;
|
||||
UTWeapon.DropAmmo 25;
|
||||
|
|
@ -294,7 +717,9 @@ Class DispersionPistol : UnrealWeapon
|
|||
TNT1 A 1
|
||||
{
|
||||
A_CheckReload();
|
||||
A_WeaponReady();
|
||||
let weap = Weapon(invoker);
|
||||
if ( weap && weap.Ammo1.Amount > 0 ) A_WeaponReady();
|
||||
else A_WeaponReady(WRF_NOFIRE);
|
||||
}
|
||||
Wait;
|
||||
Idle:
|
||||
|
|
@ -423,7 +848,7 @@ Class DispersionPistol : UnrealWeapon
|
|||
#### # 0
|
||||
{
|
||||
A_Overlay(-9999,"Null");
|
||||
invoker.AmmoUse1 = min(6,invoker.upgradelevel+1);
|
||||
invoker.MainUse = min(6,invoker.upgradelevel+1);
|
||||
if ( invoker.upgradelevel == 0 ) return ResolveState("Idle");
|
||||
else if ( invoker.upgradelevel == 1 ) return ResolveState("Upgrade1");
|
||||
else if ( invoker.upgradelevel == 2 ) return ResolveState("Upgrade2");
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue