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
|
|
@ -26,6 +26,21 @@ Model "UCasing"
|
|||
FrameIndex PCAS A 0 0
|
||||
}
|
||||
|
||||
Model "AutomagMag"
|
||||
{
|
||||
Path "models"
|
||||
Model 0 "AutoMagSpentClip_d.3d"
|
||||
Skin 0 "Automa1.png"
|
||||
Scale 0.06 0.06 0.072
|
||||
ZOffset 1
|
||||
USEACTORPITCH
|
||||
USEACTORROLL
|
||||
USEROTATIONCENTER
|
||||
Rotation-Center 0 0 1
|
||||
|
||||
FrameIndex PCAS A 0 0
|
||||
}
|
||||
|
||||
Model "Automag"
|
||||
{
|
||||
Path "models"
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@ Model "BCasing"
|
|||
|
||||
FrameIndex PCAS A 0 0
|
||||
}
|
||||
|
||||
Model "BCasing2"
|
||||
{
|
||||
Path "models"
|
||||
|
|
|
|||
|
|
@ -83,6 +83,22 @@ Model "BigCasing"
|
|||
FrameIndex PCAS A 0 0
|
||||
}
|
||||
|
||||
Model "BigMag"
|
||||
{
|
||||
Path "models"
|
||||
Model 0 "BigGMag_d.3d"
|
||||
Skin 0 "JBigGun1.png"
|
||||
Scale 0.1 0.1 0.12
|
||||
AngleOffset 90
|
||||
ZOffset 2.5
|
||||
USEACTORPITCH
|
||||
USEACTORROLL
|
||||
USEROTATIONCENTER
|
||||
Rotation-Center 0 0 2.5
|
||||
|
||||
FrameIndex PCAS A 0 0
|
||||
}
|
||||
|
||||
Model "BigGun"
|
||||
{
|
||||
Path "models"
|
||||
|
|
|
|||
|
|
@ -53,6 +53,21 @@ Model "OLSMP"
|
|||
FrameIndex AMUZ I 2 0
|
||||
}
|
||||
|
||||
Model "OLSMPMag"
|
||||
{
|
||||
Path "models"
|
||||
Model 0 "OLSMPSpentClip_d.3d"
|
||||
Skin 0 "OLSMP.png"
|
||||
Scale 0.06 0.06 0.072
|
||||
ZOffset 1
|
||||
USEACTORPITCH
|
||||
USEACTORROLL
|
||||
USEROTATIONCENTER
|
||||
Rotation-Center 0 0 1
|
||||
|
||||
FrameIndex PCAS A 0 0
|
||||
}
|
||||
|
||||
Model "OLSMP"
|
||||
{
|
||||
Path "models"
|
||||
|
|
|
|||
|
|
@ -52,6 +52,22 @@ Model "UFlakSlug"
|
|||
FrameIndex FSLG A 0 0
|
||||
}
|
||||
|
||||
Model "UFlakMag"
|
||||
{
|
||||
Path "models"
|
||||
Model 0 "FlakShSpent_d.3d"
|
||||
Skin 0 "Jflakshel1.png"
|
||||
Scale 0.2 0.2 0.24
|
||||
AngleOffset 90
|
||||
ZOffset 1
|
||||
USEACTORPITCH
|
||||
USEACTORROLL
|
||||
USEROTATIONCENTER
|
||||
Rotation-Center 0 0 1
|
||||
|
||||
FrameIndex PCAS A 0 0
|
||||
}
|
||||
|
||||
Model "UFlakCannon"
|
||||
{
|
||||
Path "models"
|
||||
|
|
|
|||
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 17 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 54 KiB After Width: | Height: | Size: 17 KiB |
BIN
models/FlakShSpent_a.3d
Normal file
BIN
models/FlakShSpent_a.3d
Normal file
Binary file not shown.
BIN
models/FlakShSpent_d.3d
Normal file
BIN
models/FlakShSpent_d.3d
Normal file
Binary file not shown.
|
|
@ -257,6 +257,7 @@ quadshot/shell4 qshell4
|
|||
quadshot/shell5 qshell5
|
||||
quadshot/shell6 qshell6
|
||||
$random quadshot/shell { quadshot/shell1 quadshot/shell2 quadshot/shell3 quadshot/shell4 quadshot/shell5 quadshot/shell6 }
|
||||
$attenuation quadshot/shell 2
|
||||
|
||||
betamag/select oldasel
|
||||
betamag/fire oldmag
|
||||
|
|
@ -301,8 +302,12 @@ big/dry bigmdryf
|
|||
big/punch bigmejct
|
||||
big/reload bigmrelo
|
||||
big/shell bigmshel
|
||||
$attenuation big/shell 2
|
||||
big/blast bigmhit
|
||||
$limit big/blast 16
|
||||
big/bounce bigmagb
|
||||
$volume big/bounce 0.5
|
||||
$attenuation big/bounce 3
|
||||
|
||||
smini/select sminisel
|
||||
smini/fire sminione
|
||||
|
|
|
|||
BIN
sounds/BigMagB.ogg
Normal file
BIN
sounds/BigMagB.ogg
Normal file
Binary file not shown.
|
|
@ -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