Release Candidate 4 (may be final):
- Spent mags for Automag, Flak Cannon and Demolisher (needs updated DT). - Betamag defaults to both having the 0.83 skin, other options put on add-ons. - Adjustments to bullet casings. - Fixed flames producing water splashes. - Fixed female models having male gibs. - Corrected ASMD ball hit behavior to match Unreal. - Added bubble trail to Stinger when underwater.
This commit is contained in:
parent
32698cf0e4
commit
ff01ab2146
25 changed files with 182 additions and 21 deletions
|
|
@ -290,30 +290,27 @@ Class ViewASMDSpark : ShockSpark
|
|||
|
||||
Class ASMDHitbox : ShockHitbox
|
||||
{
|
||||
override void Tick()
|
||||
override int DamageMobj( Actor inflictor, Actor source, int damage, Name mod, int flags, double angle )
|
||||
{
|
||||
Super.Tick();
|
||||
if ( !target ) return;
|
||||
let t = ThinkerIterator.Create("ASMDHitbox");
|
||||
Actor a;
|
||||
while ( a = Actor(t.Next()) )
|
||||
if ( mod == 'jolted' )
|
||||
return 0;
|
||||
if ( !bAMBUSH )
|
||||
{
|
||||
if ( (a == self) || !(a is 'ASMDHitbox') || a.bAMBUSH || (Distance3D(a) > radius*2) ) continue;
|
||||
a.bAMBUSH = true;
|
||||
if ( a.target && a.target.InStateSequence(a.target.CurState,a.target.FindState("Spawn")) )
|
||||
a.target.ExplodeMissile();
|
||||
if ( !bAMBUSH )
|
||||
{
|
||||
bAMBUSH = true;
|
||||
if ( target && target.InStateSequence(target.CurState,target.FindState("Spawn")) )
|
||||
target.ExplodeMissile();
|
||||
}
|
||||
bAMBUSH = true;
|
||||
if ( target && target.InStateSequence(target.CurState,target.FindState("Spawn")) )
|
||||
target.ExplodeMissile();
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
override bool CanCollideWith( Actor other, bool passive )
|
||||
{
|
||||
return true;
|
||||
}
|
||||
Default
|
||||
{
|
||||
Radius 6;
|
||||
Height 12;
|
||||
+SHOOTABLE;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -325,7 +322,7 @@ Class ASMDBall : Actor
|
|||
|
||||
override int SpecialMissileHit( Actor victim )
|
||||
{
|
||||
if ( victim == b ) return 1;
|
||||
if ( victim is 'ASMDHitbox' ) return 1;
|
||||
return -1;
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
|
|
|
|||
|
|
@ -19,6 +19,10 @@ Class UCasing : UTCasing
|
|||
{
|
||||
}
|
||||
|
||||
Class AutomagMag : EnforcerMag
|
||||
{
|
||||
}
|
||||
|
||||
Class Automag : UnrealWeapon
|
||||
{
|
||||
int ClipCount, SlaveClipCount;
|
||||
|
|
@ -248,6 +252,8 @@ Class Automag : UnrealWeapon
|
|||
}
|
||||
origin = level.Vec3Offset(origin,x*8+ydir*y*6-z*2);
|
||||
let c = Spawn("UCasing",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = x*FRandom[Junk](-1.5,1.5)+y*ydir*FRandom[Junk](2,4)+z*FRandom[Junk](2,3);
|
||||
}
|
||||
override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
|
||||
|
|
@ -529,6 +535,13 @@ Class Automag : UnrealWeapon
|
|||
if ( self is 'UTPlayer' )
|
||||
UTPlayer(self).PlayReloading();
|
||||
invoker.slavereload = (invoker.slaveactive&&(invoker.slaveclipcount<invoker.default.slaveclipcount)&&(invoker.Ammo1.Amount>0));
|
||||
Vector3 x, y, z, origin;
|
||||
[x,y,z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),x*4.+y*4.-z*8.);
|
||||
let c = Spawn("AutomagMag",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = vel*.5+x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-z*FRandom[Junk](1,2);
|
||||
}
|
||||
AUTS A 0 A_PlaySound("automag/select",CHAN_WEAPON,!Dampener.Active(self)?1.:.1);
|
||||
Goto Ready;
|
||||
|
|
@ -557,6 +570,13 @@ Class Automag : UnrealWeapon
|
|||
if ( self is 'UTPlayer' )
|
||||
UTPlayer(self).PlayReloading();
|
||||
invoker.slavereload = false;
|
||||
Vector3 x, y, z, origin;
|
||||
[x,y,z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),x*4.-y*4.-z*8.);
|
||||
let c = Spawn("AutomagMag",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = vel*.5+x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-z*FRandom[Junk](1,2);
|
||||
}
|
||||
2UTS A 0 A_PlaySound("automag/select",CHAN_6,!Dampener.Active(self)?1.:.1);
|
||||
Goto LeftReady;
|
||||
|
|
|
|||
|
|
@ -291,6 +291,8 @@ Class Betamag : UnrealWeapon
|
|||
}
|
||||
origin = level.Vec3Offset(origin,x*5+ydir*y*8-z*2);
|
||||
let c = Spawn(slave?"BCasing2":"BCasing",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = x*FRandom[Junk](-1.5,1.5)+y*ydir*FRandom[Junk](2,4)+z*FRandom[Junk](2,3);
|
||||
}
|
||||
override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
|
||||
|
|
|
|||
|
|
@ -229,6 +229,30 @@ Class BigCasing : UTCasing
|
|||
}
|
||||
}
|
||||
|
||||
// hambagah?
|
||||
Class BigMag : UTCasing
|
||||
{
|
||||
Default
|
||||
{
|
||||
BounceSound "big/bounce"; // much heavier sound
|
||||
}
|
||||
override void PostBeginPlay()
|
||||
{
|
||||
Super.PostBeginPlay();
|
||||
heat = 0.;
|
||||
}
|
||||
States
|
||||
{
|
||||
Death:
|
||||
PCAS A -1
|
||||
{
|
||||
pitch = clamp(Normalize180(pitch),-5,5);
|
||||
angle = FRandom[Junk](0,360);
|
||||
}
|
||||
Stop;
|
||||
}
|
||||
}
|
||||
|
||||
Class BigGun : UnrealWeapon
|
||||
{
|
||||
int ClipCount;
|
||||
|
|
@ -536,7 +560,18 @@ Class BigGun : UnrealWeapon
|
|||
A_PlaySound("big/punch",CHAN_WEAPON,Dampener.Active(self)?.3:1.);
|
||||
if ( self is 'UTPlayer' ) UTPlayer(self).PlayReloading();
|
||||
}
|
||||
BIGR NOPQRSTUVWXYZ[\] 2;
|
||||
BIGR NOPQRSTUVW 2;
|
||||
BIGR X 2
|
||||
{
|
||||
Vector3 x, y, z, origin;
|
||||
[x,y,z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),x*5.-z*9.);
|
||||
let c = Spawn("BigMag",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = vel*.5+x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-z*FRandom[Junk](1,2);
|
||||
}
|
||||
BIGR YZ[\] 2;
|
||||
BIR2 ABCDEF 2;
|
||||
BIR2 G 2
|
||||
{
|
||||
|
|
|
|||
|
|
@ -63,6 +63,7 @@ Class UFireball : Actor
|
|||
+FORCERADIUSDMG;
|
||||
+NODAMAGETHRUST;
|
||||
+FORCEXYBILLBOARD;
|
||||
+DONTSPLASH;
|
||||
UFireball.SpreadFactor 0.2;
|
||||
UFireball.NumSmokes 1;
|
||||
UFireball.NumSparks 2;
|
||||
|
|
|
|||
|
|
@ -295,6 +295,7 @@ Class UFlame : Actor
|
|||
+FORCEXYBILLBOARD;
|
||||
+DROPOFF;
|
||||
+NOBLOCKMONST;
|
||||
+DONTSPLASH;
|
||||
//+THRUIMPASSABLE; // gonna have to implement this
|
||||
}
|
||||
States
|
||||
|
|
|
|||
|
|
@ -61,6 +61,10 @@ Class OLSMPAmmo : Ammo
|
|||
}
|
||||
}
|
||||
|
||||
Class OLSMPMag : EnforcerMag
|
||||
{
|
||||
}
|
||||
|
||||
Class OLSMP : UnrealWeapon
|
||||
{
|
||||
int ClipCount;
|
||||
|
|
@ -217,6 +221,8 @@ Class OLSMP : UnrealWeapon
|
|||
}
|
||||
origin = level.Vec3Offset(origin,x*8+y*6-z*2);
|
||||
let c = Spawn("UCasing",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = x*FRandom[Junk](-1.5,1.5)+y*FRandom[Junk](2,4)+z*FRandom[Junk](2,3);
|
||||
}
|
||||
override bool CheckAmmo( int fireMode, bool autoSwitch, bool requireAmmo, int ammocount )
|
||||
|
|
@ -346,6 +352,13 @@ Class OLSMP : UnrealWeapon
|
|||
A_PlaySound("automag/reload",CHAN_WEAPON,!Dampener.Active(self)?1.:.1,pitch:0.8);
|
||||
if ( self is 'UTPlayer' )
|
||||
UTPlayer(self).PlayReloading();
|
||||
Vector3 x, y, z, origin;
|
||||
[x,y,z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),x*4.+y*4.-z*18.);
|
||||
let c = Spawn("OLSMPMag",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = vel*.5+x*FRandom[Junk](-.5,.5)+y*FRandom[Junk](-.5,.5)-z*FRandom[Junk](1,2);
|
||||
}
|
||||
AUTS A 0 A_PlaySound("automag/select",CHAN_WEAPON,!Dampener.Active(self)?1.:.1,pitch:0.8);
|
||||
Goto Ready;
|
||||
|
|
|
|||
|
|
@ -333,6 +333,8 @@ Class QuadShot : UnrealWeapon
|
|||
{
|
||||
let c = Spawn("QCasing",origin);
|
||||
c.vel = x*FRandom[Junk](-1.5,0.25)-y*FRandom[Junk](1,4)-z*FRandom[Junk](1,4);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
}
|
||||
}
|
||||
action bool A_QuadshotCheckForReload( bool bDryFire = false )
|
||||
|
|
|
|||
|
|
@ -211,6 +211,8 @@ Class URifle : UnrealWeapon
|
|||
origin = level.Vec3Offset(origin,x*4+y*6-z*10);
|
||||
let c = Spawn("UCasing",origin);
|
||||
c.scale *= 1.25;
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = x*FRandom[Junk](-1.5,1.5)+y*FRandom[Junk](2,4)+z*FRandom[Junk](2,3);
|
||||
}
|
||||
override String GetObituary( Actor victim, Actor inflictor, Name mod, bool playerattack )
|
||||
|
|
|
|||
|
|
@ -493,8 +493,12 @@ Class StingerProjectile : Actor
|
|||
States
|
||||
{
|
||||
Spawn:
|
||||
TPRJ A -1 Bright;
|
||||
Stop;
|
||||
TPRJ A 1 Bright
|
||||
{
|
||||
if ( waterlevel > 0 )
|
||||
Spawn("UTBubble",pos);
|
||||
}
|
||||
Wait;
|
||||
Bounce:
|
||||
TPRJ A 0 Bright A_HandleBounce();
|
||||
Goto Spawn;
|
||||
|
|
|
|||
|
|
@ -176,6 +176,10 @@ Class UFlakSlug : FlakSlug
|
|||
}
|
||||
}
|
||||
|
||||
Class UFlakMag : FlakMag
|
||||
{
|
||||
}
|
||||
|
||||
Class UFlakCannon : UnrealWeapon
|
||||
{
|
||||
action void A_Loading( bool first = false )
|
||||
|
|
@ -332,7 +336,16 @@ Class UFlakCannon : UnrealWeapon
|
|||
FLKF J 5;
|
||||
FLKE A 1 A_PlaySound("flak/click",CHAN_6,Dampener.Active(self)?.05:.5);
|
||||
FLKE BCDEFGHIJKLMN 1;
|
||||
FLKE S 4;
|
||||
FLKE S 4
|
||||
{
|
||||
Vector3 x, y, z, origin;
|
||||
[x,y,z] = dt_CoordUtil.GetAxes(pitch,angle,roll);
|
||||
origin = level.Vec3Offset(Vec2OffsetZ(0,0,player.viewz),x*4.+y*3.-z*8.);
|
||||
let c = Spawn("UFlakMag",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = vel*.5+x*FRandom[Junk](-.8,.1)+y*FRandom[Junk](-.2,.2)-z*FRandom[Junk](1,2);
|
||||
}
|
||||
Goto Loading;
|
||||
AltFire:
|
||||
FLKA A 1 A_FireSlug();
|
||||
|
|
|
|||
|
|
@ -128,6 +128,8 @@ Class UMinigun : UnrealWeapon
|
|||
}
|
||||
origin = level.Vec3Offset(origin,x*4+y*3-z*12);
|
||||
let c = Spawn("UCasing",origin);
|
||||
c.angle = angle;
|
||||
c.pitch = pitch;
|
||||
c.vel = x*FRandom[Junk](-1.5,1.5)-y*FRandom[Junk](2,4)+z*FRandom[Junk](-2,1);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -352,6 +352,7 @@ Class UPlayerFemale : UPlayer
|
|||
{
|
||||
Player.SoundClass "ufemale";
|
||||
UTPlayer.VoiceType VOICE_FemaleOne;
|
||||
UTPlayer.DollType DOLL_Female;
|
||||
}
|
||||
|
||||
void A_ArmPop()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue