diff --git a/graphics/96BgC.png b/graphics/96BgC.png deleted file mode 100644 index bbddc08..0000000 Binary files a/graphics/96BgC.png and /dev/null differ diff --git a/graphics/96BgF.png b/graphics/96BgF.png deleted file mode 100644 index f2eeb2b..0000000 Binary files a/graphics/96BgF.png and /dev/null differ diff --git a/modeldef.stinger b/modeldef.stinger index 0a2234a..6310eac 100644 --- a/modeldef.stinger +++ b/modeldef.stinger @@ -44,23 +44,48 @@ Model "StingerProjectile" Scale 0.03 0.03 0.036 AngleOffset -90 PITCHFROMMOMENTUM + USEACTORROLL FrameIndex TPRJ A 0 0 } -Model "StingerProjectile" + +Model "StingerChunk" { Path "models" - Model 1 "burst_d.3d" - Skin 1 "Jburst1.png" - Scale 0.4 0.4 0.48 - AngleOffset 90 + Model 0 "burstx_d.3d" + Skin 0 "JBurst1.png" + Scale 0.2 0.2 0.24 + USEACTORPITCH + USEACTORROLL - FrameIndex TPRJ B 1 0 - FrameIndex TPRJ C 1 1 - FrameIndex TPRJ D 1 2 - FrameIndex TPRJ E 1 3 - FrameIndex TPRJ F 1 4 - FrameIndex TPRJ G 1 5 + FrameIndex CHIP A 0 0 + FrameIndex CHIP B 0 1 + FrameIndex CHIP C 0 2 + FrameIndex CHIP D 0 3 + FrameIndex CHIP E 0 4 + FrameIndex CHIP F 0 5 + FrameIndex CHIP G 0 6 + FrameIndex CHIP H 0 7 + FrameIndex CHIP I 0 8 +} +Model "ViewStingerChunk" +{ + Path "models" + Model 0 "burstx_d.3d" + Skin 0 "JBurst1.png" + Scale 0.08 0.08 0.096 + USEACTORPITCH + USEACTORROLL + + FrameIndex CHIP A 0 0 + FrameIndex CHIP B 0 1 + FrameIndex CHIP C 0 2 + FrameIndex CHIP D 0 3 + FrameIndex CHIP E 0 4 + FrameIndex CHIP F 0 5 + FrameIndex CHIP G 0 6 + FrameIndex CHIP H 0 7 + FrameIndex CHIP I 0 8 } Model "Stinger" diff --git a/models/burstx_a.3d b/models/burstx_a.3d new file mode 100644 index 0000000..a6dc180 Binary files /dev/null and b/models/burstx_a.3d differ diff --git a/models/burstx_d.3d b/models/burstx_d.3d new file mode 100644 index 0000000..a54f5d9 Binary files /dev/null and b/models/burstx_d.3d differ diff --git a/palettes/Blue4.pal b/palettes/Blue4.pal new file mode 100644 index 0000000..088cef0 Binary files /dev/null and b/palettes/Blue4.pal differ diff --git a/sprites/big/BEXPA0.png b/sprites/big/BGXPA0.png similarity index 100% rename from sprites/big/BEXPA0.png rename to sprites/big/BGXPA0.png diff --git a/sprites/big/BEXPB0.png b/sprites/big/BGXPB0.png similarity index 100% rename from sprites/big/BEXPB0.png rename to sprites/big/BGXPB0.png diff --git a/sprites/big/BEXPC0.png b/sprites/big/BGXPC0.png similarity index 100% rename from sprites/big/BEXPC0.png rename to sprites/big/BGXPC0.png diff --git a/sprites/big/BEXPD0.png b/sprites/big/BGXPD0.png similarity index 100% rename from sprites/big/BEXPD0.png rename to sprites/big/BGXPD0.png diff --git a/sprites/big/BEXPE0.png b/sprites/big/BGXPE0.png similarity index 100% rename from sprites/big/BEXPE0.png rename to sprites/big/BGXPE0.png diff --git a/sprites/big/BEXPF0.png b/sprites/big/BGXPF0.png similarity index 100% rename from sprites/big/BEXPF0.png rename to sprites/big/BGXPF0.png diff --git a/sprites/big/BEXPG0.png b/sprites/big/BGXPG0.png similarity index 100% rename from sprites/big/BEXPG0.png rename to sprites/big/BGXPG0.png diff --git a/sprites/big/BEXPH0.png b/sprites/big/BGXPH0.png similarity index 100% rename from sprites/big/BEXPH0.png rename to sprites/big/BGXPH0.png diff --git a/sprites/player/AMANA0.png b/sprites/player/AMANA0.png index 31701be..e70f094 100644 Binary files a/sprites/player/AMANA0.png and b/sprites/player/AMANA0.png differ diff --git a/sprites/player/ASH_A0.png b/sprites/player/ASH_A0.png index 31d0a8d..0c7a9e0 100644 Binary files a/sprites/player/ASH_A0.png and b/sprites/player/ASH_A0.png differ diff --git a/sprites/player/AWOMA0.png b/sprites/player/AWOMA0.png index ab3675f..fb368f5 100644 Binary files a/sprites/player/AWOMA0.png and b/sprites/player/AWOMA0.png differ diff --git a/sprites/player/DANTA0.png b/sprites/player/DANTA0.png index 68cd95d..62edcc4 100644 Binary files a/sprites/player/DANTA0.png and b/sprites/player/DANTA0.png differ diff --git a/sprites/player/GINAA0.png b/sprites/player/GINAA0.png index 398b735..5665d34 100644 Binary files a/sprites/player/GINAA0.png and b/sprites/player/GINAA0.png differ diff --git a/sprites/player/KURGA0.png b/sprites/player/KURGA0.png index 6b652d9..d16786c 100644 Binary files a/sprites/player/KURGA0.png and b/sprites/player/KURGA0.png differ diff --git a/sprites/player/SONYA0.png b/sprites/player/SONYA0.png index f75bf38..fe5ab12 100644 Binary files a/sprites/player/SONYA0.png and b/sprites/player/SONYA0.png differ diff --git a/zscript/stinger.zsc b/zscript/stinger.zsc index 78a5e51..b372a09 100644 --- a/zscript/stinger.zsc +++ b/zscript/stinger.zsc @@ -43,9 +43,107 @@ Class StingerBurstLight : PaletteLight { Default { - Tag "Blue3"; + Tag "Blue4"; Args 0,0,0,30; - ReactionTime 10; + ReactionTime 12; + } +} + +Class StingerChunk : Actor +{ + int deadtimer; + double rollvel, anglevel, pitchvel; + + Default + { + Radius 2; + Height 2; + +NOBLOCKMAP; + +MISSILE; + +MOVEWITHSECTOR; + +THRUACTORS; + +NOTELEPORT; + +DONTSPLASH; + +INTERPOLATEANGLES; + BounceType "Doom"; + BounceFactor 0.4; + Gravity 0.35; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + deadtimer = 0; + anglevel = FRandom[Junk](10,30)*RandomPick[Junk](-1,1); + pitchvel = FRandom[Junk](10,30)*RandomPick[Junk](-1,1); + rollvel = FRandom[Junk](10,30)*RandomPick[Junk](-1,1); + frame = Random[Junk](0,8); + scale *= Frandom[Junk](0.4,0.8); + } + override void Tick() + { + Super.Tick(); + if ( isFrozen() ) return; + if ( InStateSequence(CurState,ResolveState("Death")) ) + { + deadtimer++; + if ( deadtimer > 60 ) A_FadeOut(0.05); + return; + } + } + States + { + Spawn: + CHIP # 1 + { + angle += anglevel; + pitch += pitchvel; + roll += rollvel; + } + Loop; + Bounce: + CHIP # 0 + { + anglevel = FRandom[Junk](10,30)*RandomPick[Junk](-1,1); + pitchvel = FRandom[Junk](10,30)*RandomPick[Junk](-1,1); + rollvel = FRandom[Junk](10,30)*RandomPick[Junk](-1,1); + } + Goto Spawn; + Death: + CHIP # -1; + Stop; + Dummy: + CHIP ABCDEFGHI -1; + Stop; + } +} + +Class ViewStingerChunk : StingerChunk +{ + Vector3 ofs, vvel; + Default + { + +NOCLIP; + +NOGRAVITY; + -MISSILE; + BounceType "None"; + } + override void Tick() + { + Actor.Tick(); + if ( !target || !target.player ) + { + Destroy(); + return; + } + Vector3 x, y, z; + [x, y, z] = dt_CoordUtil.GetAxes(target.pitch,target.angle,target.roll); + Vector3 origin = x*ofs.x+y*ofs.y+z*ofs.z+(0,0,target.player.viewz); + SetOrigin(target.Vec2OffsetZ(origin.x,origin.y,origin.z),true); + bInvisible = (players[consoleplayer].camera != target); + if ( isFrozen() ) return; + ofs += vvel; + scale *= 0.75; + if ( scale.x <= 0.01 ) Destroy(); } } @@ -72,6 +170,35 @@ Class StingerProjectile : Actor } return damage; } + action void A_StingerHit() + { + if ( !Random[Stinger](0,2) ) A_PlaySound("stinger/hit2",CHAN_BODY,0.5,pitch:FRandom[Stinger](0.5,1.5)); + else A_PlaySound("stinger/hit",CHAN_BODY,0.6); + A_SprayDecal("WallCrack",20); + A_AlertMonsters(); + Spawn("StingerBurstLight",pos); + double ang, pt; + int numpt = Random[Stinger](4,8); + for ( int i=0; i