diff --git a/Roadmap.md b/Roadmap.md index 471699daa..f8378782a 100644 --- a/Roadmap.md +++ b/Roadmap.md @@ -1,4 +1,4 @@ -**Swimming in Jizz:** +~~**Swimming in Jizz:**~~ - This is where I make all the stuff before beta. - It's been over nine months already, still a shorter dev time than my previous projects. diff --git a/TODO.md b/TODO.md index 6f306a024..5b9758fb8 100644 --- a/TODO.md +++ b/TODO.md @@ -1,7 +1,3 @@ -**Fundamental things before beta:** - - - Ynykron Artifact altfire - **Not so fundamental things during first beta:** - Extra Demolitionist animations (swimming, additional gestures) diff --git a/language.version b/language.version index 14837d240..843aae16c 100644 --- a/language.version +++ b/language.version @@ -1,2 +1,2 @@ [default] -SWWM_MODVER="\chSWWM \cwGZ\c- r547 (Tue 15 Sep 14:11:49 CEST 2020)"; +SWWM_MODVER="\chSWWM \cwGZ\c- 0.9b r549 (Tue 15 Sep 19:18:10 CEST 2020)"; diff --git a/palettes/Purple.pal b/palettes/Purple.pal new file mode 100644 index 000000000..174bf90aa Binary files /dev/null and b/palettes/Purple.pal differ diff --git a/sprites/MOPFA0.png b/sprites/MOPFA0.png new file mode 100644 index 000000000..588395d77 Binary files /dev/null and b/sprites/MOPFA0.png differ diff --git a/sprites/XEX4A0.png b/sprites/XEX4A0.png new file mode 100644 index 000000000..83363b270 Binary files /dev/null and b/sprites/XEX4A0.png differ diff --git a/sprites/XEX4B0.png b/sprites/XEX4B0.png new file mode 100644 index 000000000..bb427066c Binary files /dev/null and b/sprites/XEX4B0.png differ diff --git a/sprites/XEX4C0.png b/sprites/XEX4C0.png new file mode 100644 index 000000000..6ac92fea6 Binary files /dev/null and b/sprites/XEX4C0.png differ diff --git a/sprites/XEX4D0.png b/sprites/XEX4D0.png new file mode 100644 index 000000000..7bf7b1ca2 Binary files /dev/null and b/sprites/XEX4D0.png differ diff --git a/sprites/XEX4E0.png b/sprites/XEX4E0.png new file mode 100644 index 000000000..956de20c9 Binary files /dev/null and b/sprites/XEX4E0.png differ diff --git a/sprites/XEX4F0.png b/sprites/XEX4F0.png new file mode 100644 index 000000000..3fd53f254 Binary files /dev/null and b/sprites/XEX4F0.png differ diff --git a/sprites/XEX4G0.png b/sprites/XEX4G0.png new file mode 100644 index 000000000..ef6fb2ff0 Binary files /dev/null and b/sprites/XEX4G0.png differ diff --git a/sprites/XEX4H0.png b/sprites/XEX4H0.png new file mode 100644 index 000000000..cb0c8874d Binary files /dev/null and b/sprites/XEX4H0.png differ diff --git a/sprites/XEX4I0.png b/sprites/XEX4I0.png new file mode 100644 index 000000000..cac626042 Binary files /dev/null and b/sprites/XEX4I0.png differ diff --git a/sprites/XEX4J0.png b/sprites/XEX4J0.png new file mode 100644 index 000000000..0d9374434 Binary files /dev/null and b/sprites/XEX4J0.png differ diff --git a/sprites/XEX4K0.png b/sprites/XEX4K0.png new file mode 100644 index 000000000..d69a78fbe Binary files /dev/null and b/sprites/XEX4K0.png differ diff --git a/sprites/XEX4L0.png b/sprites/XEX4L0.png new file mode 100644 index 000000000..e48a9c1d0 Binary files /dev/null and b/sprites/XEX4L0.png differ diff --git a/sprites/XEX4M0.png b/sprites/XEX4M0.png new file mode 100644 index 000000000..36c946fa0 Binary files /dev/null and b/sprites/XEX4M0.png differ diff --git a/sprites/XEX4N0.png b/sprites/XEX4N0.png new file mode 100644 index 000000000..f562fcae1 Binary files /dev/null and b/sprites/XEX4N0.png differ diff --git a/sprites/XEX4O0.png b/sprites/XEX4O0.png new file mode 100644 index 000000000..ee52a29f3 Binary files /dev/null and b/sprites/XEX4O0.png differ diff --git a/sprites/XEX4P0.png b/sprites/XEX4P0.png new file mode 100644 index 000000000..b755d2504 Binary files /dev/null and b/sprites/XEX4P0.png differ diff --git a/sprites/XEX4Q0.png b/sprites/XEX4Q0.png new file mode 100644 index 000000000..381353df6 Binary files /dev/null and b/sprites/XEX4Q0.png differ diff --git a/sprites/XEX4R0.png b/sprites/XEX4R0.png new file mode 100644 index 000000000..a6dc0bd6e Binary files /dev/null and b/sprites/XEX4R0.png differ diff --git a/sprites/XEX4S0.png b/sprites/XEX4S0.png new file mode 100644 index 000000000..d5c8cb46d Binary files /dev/null and b/sprites/XEX4S0.png differ diff --git a/sprites/XEX4T0.png b/sprites/XEX4T0.png new file mode 100644 index 000000000..2f810aacc Binary files /dev/null and b/sprites/XEX4T0.png differ diff --git a/sprites/XEX4U0.png b/sprites/XEX4U0.png new file mode 100644 index 000000000..97128738c Binary files /dev/null and b/sprites/XEX4U0.png differ diff --git a/sprites/XEX4V0.png b/sprites/XEX4V0.png new file mode 100644 index 000000000..5d077aeb7 Binary files /dev/null and b/sprites/XEX4V0.png differ diff --git a/sprites/XEX4W0.png b/sprites/XEX4W0.png new file mode 100644 index 000000000..05a974b17 Binary files /dev/null and b/sprites/XEX4W0.png differ diff --git a/sprites/XEX4X0.png b/sprites/XEX4X0.png new file mode 100644 index 000000000..6a586fd29 Binary files /dev/null and b/sprites/XEX4X0.png differ diff --git a/sprites/XEX4Y0.png b/sprites/XEX4Y0.png new file mode 100644 index 000000000..de2cf0a72 Binary files /dev/null and b/sprites/XEX4Y0.png differ diff --git a/sprites/XEX4Z0.png b/sprites/XEX4Z0.png new file mode 100644 index 000000000..f83ff2166 Binary files /dev/null and b/sprites/XEX4Z0.png differ diff --git a/sprites/XEX4[0.png b/sprites/XEX4[0.png new file mode 100644 index 000000000..bc51e2bfe Binary files /dev/null and b/sprites/XEX4[0.png differ diff --git a/sprites/XEX4^0.png b/sprites/XEX4^0.png new file mode 100644 index 000000000..99ea36207 Binary files /dev/null and b/sprites/XEX4^0.png differ diff --git a/zscript/swwm_blazeit.zsc b/zscript/swwm_blazeit.zsc index 67f4d3ada..d9aab89c7 100644 --- a/zscript/swwm_blazeit.zsc +++ b/zscript/swwm_blazeit.zsc @@ -44,6 +44,17 @@ Class HellblazerSubExpl : Actor +NOTELEPORT; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -66,6 +77,17 @@ Class HellblazerRing : Actor +NOTELEPORT; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -88,6 +110,17 @@ Class HellblazerRing2 : Actor +NOTELEPORT; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -117,6 +150,17 @@ Class HellblazerTrail : Actor Super.PostBeginPlay(); SetState(FindState("Spawn")+Random[ExploS](0,7)); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -162,6 +206,7 @@ Class HellblazerFlare : Actor override void Tick() { + if ( isFrozen() ) return; if ( !master || !master.bMISSILE ) { Destroy(); @@ -939,6 +984,13 @@ Class RavagerPuff : Actor if ( isFrozen() ) return; A_FadeOut((waterlevel>0)?.1:.02); scale += initsc*.2; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } } States { @@ -1097,6 +1149,17 @@ Class HellblazerWarheadTrail : Actor +NOINTERACTION; Scale 2.4; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: diff --git a/zscript/swwm_blod.zsc b/zscript/swwm_blod.zsc index bac1117eb..1ecafea2a 100644 --- a/zscript/swwm_blod.zsc +++ b/zscript/swwm_blod.zsc @@ -24,6 +24,17 @@ Class mkBlood : Actor else b.SetShade(Color(80,0,0)); b.CopyBloodColor(target); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: diff --git a/zscript/swwm_danmaku.zsc b/zscript/swwm_danmaku.zsc index 7da2ea5f7..16937aec0 100644 --- a/zscript/swwm_danmaku.zsc +++ b/zscript/swwm_danmaku.zsc @@ -483,6 +483,17 @@ Class EvisceratorSubExpl : Actor +NOTELEPORT; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -505,6 +516,17 @@ Class EvisceratorRing : Actor +NOTELEPORT; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: diff --git a/zscript/swwm_deathlydeathcannon.zsc b/zscript/swwm_deathlydeathcannon.zsc index c0befbd41..ae5aec6b1 100644 --- a/zscript/swwm_deathlydeathcannon.zsc +++ b/zscript/swwm_deathlydeathcannon.zsc @@ -219,6 +219,17 @@ Class YnykronImpactTrail : Actor Scale.x *= RandomPick[ExploS](-1,1); Scale.y *= RandomPick[ExploS](-1,1); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -452,6 +463,17 @@ Class YnykronImpact : Actor YnykronShot(master).blastcount--; Super.OnDestroy(); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -901,6 +923,17 @@ Class YnykronRing : Actor +ROLLCENTER; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -927,9 +960,15 @@ Class YnykronImpactRing : Actor } override void Tick() { - Super.Tick(); if ( isFrozen() ) return; A_SetScale(scale.x*(special2?1.06:1.03)); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } } States { @@ -1830,6 +1869,168 @@ Class SimpleMoveTracer : LineTracer } } +Class YnykronSingularityRing : Actor +{ + Default + { + RenderStyle "Add"; + Radius 0.1; + Height 0; + Scale 4.; + +NOGRAVITY; + +NOBLOCKMAP; + +FORCEXYBILLBOARD; + +NOTELEPORT; + +DONTSPLASH; + +NOINTERACTION; + } + override void Tick() + { + if ( isFrozen() ) return; + A_SetScale(scale.x*1.05); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + States + { + Spawn: + XRG4 ABCDEFGHIJKLMNOPQRSTUVWX 2 Bright; + Stop; + } +} + +Class YnykronVoidExplLight : PaletteLight +{ + Default + { + Tag "Purple"; + ReactionTime 60; + Args 0,0,0,1200; + } +} + +Class YnykronVoidSparkle : Actor +{ + Default + { + RenderStyle "Add"; + Radius 0.1; + Height 0; + +NOGRAVITY; + +NOBLOCKMAP; + +DONTSPLASH; + +ROLLSPRITE; + +ROLLCENTER; + +FORCEXYBILLBOARD; + +NOINTERACTION; + } + override void PostBeginPlay() + { + Scale *= FRandom[ExploS](.75,1.5); + specialf1 = FRandom[ExploS](.95,.98); + specialf2 = FRandom[ExploS](.005,.015); + vel = (cos(angle)*cos(pitch),sin(angle)*cos(pitch),sin(-pitch))*FRandom[ExploS](1,16); + } + override void Tick() + { + if ( isFrozen() ) return; + A_SetScale(scale.x*specialf1); + A_FadeOut(specialf2); + Vector3 dir = vel; + double magvel = dir.length(); + magvel *= .99; + if ( magvel > 0. ) + { + dir /= magvel; + dir += .2*(FRandom[ExploS](-1,1),FRandom[ExploS](-1,1),FRandom[ExploS](-1,1)); + vel = dir.unit()*magvel; + } + SetOrigin(level.Vec3Offset(pos,vel),true); + } + States + { + Spawn: + MOPF A -1 Bright; + Stop; + } +} + +Class YnykronSingularityExplosion : Actor +{ + Default + { + Obituary "$O_YNYKRONALT"; + DamageType "YnykronAlt"; + RenderStyle "Add"; + Scale 5.; + Radius 0.1; + Height 0; + +NOGRAVITY; + +NOBLOCKMAP; + +NODAMAGETHRUST; + +FORCERADIUSDMG; + +FORCEXYBILLBOARD; + +NOTELEPORT; + +FOILINVUL; + +NOINTERACTION; + } + override void PostBeginPlay() + { + Super.PostBeginPlay(); + if ( !Random[ExploS](0,5) ) + A_StartSound("ynykron/impact",CHAN_VOICE); + SWWMUtility.DoExplosion(self,10000,5000,400,200); + A_SprayDecal("WumboScorch",-172); + Scale *= FRandom[ExploS](0.8,1.1); + Scale.x *= RandomPick[ExploS](-1,1); + Scale.y *= RandomPick[ExploS](-1,1); + int numpt = Random[ExploS](8,12); + for ( int i=0; i 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } + States + { + Spawn: + XEX4 ABCDEFGHIJKLMNOPQRSTUVWXYZ[\ 2 Bright; + Stop; + } +} + Class YnykronSingularity : Actor { const MAXBEAMS = 20; @@ -2110,45 +2311,90 @@ Class YnykronSingularity : Actor } void A_SingularityBlast() { - Console.Printf("// TODO explosion goes here"); - A_QuakeEx(8,8,8,80,0,65536,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65536,rollIntensity:1.6); + A_AlertMonsters(); + SWWMUtility.DoExplosion(self,int.max,500000,800,400); + A_QuakeEx(8,8,8,100,0,65536,"",QF_RELATIVE|QF_SCALEDOWN,falloff:65536,rollIntensity:1.6); A_StopAllSounds(); A_StartSound("ynykron/vortexend",CHAN_VOICE,attenuation:0.); FlashPlayer(250,9000); vel *= 0; - // kill off and detach any leftover beams + // kill off any leftover beams for ( int i=0; i 80 ) + if ( special1 > 60 ) { if ( IsActorPlayingSound(CHAN_VOICE) ) return; for ( int i=0; i 0 ) { - YnykronVoidBeam(beamers[i]).maxlife = 0; - continue; + LineTrace(ang,totaldist,pt,TRF_THRUACTORS|TRF_ABSPOSITION,origin.z,origin.x,origin.y,d); + hitnormal = -d.HitDir; + if ( d.HitType == TRACE_HitFloor ) + { + if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.top.Normal; + else hitnormal = d.HitSector.floorplane.Normal; + } + else if ( d.HitType == TRACE_HitCeiling ) + { + if ( d.Hit3DFloor ) hitnormal = -d.Hit3DFloor.bottom.Normal; + else hitnormal = d.HitSector.ceilingplane.Normal; + } + else if ( d.HitType == TRACE_HitWall ) + { + hitnormal = (-d.HitLine.delta.y,d.HitLine.delta.x,0).unit(); + if ( !d.LineSide ) hitnormal *= -1; + } + totaldist -= d.Distance; + if ( totaldist > 0 ) + { + Vector3 bounced = d.HitDir-(2*hitnormal*(d.HitDir dot HitNormal)); + ang = atan2(bounced.y,bounced.x); + pt = asin(-bounced.z); + origin = d.HitLocation+hitnormal; + } } - beamers[i] = Spawn("YnykronVoidBeam",pos); - YnykronVoidBeam(beamers[i]).basebeam = beamers[i]; - beamers[i].target = target; - beamers[i].master = self; - beamers[i].stamina = 1; - beamers[i].scale *= scale.x*10.; + let p = Spawn("YnykronSingularityExplosion",d.HitLocation+hitnormal*4); + p.angle = atan2(hitnormal.y,hitnormal.x); + p.pitch = asin(-hitnormal.z); + p.target = target; + p.scale *= 1.+special1/40.; } - scale.x *= .97; } Default diff --git a/zscript/swwm_deepdarkimpact.zsc b/zscript/swwm_deepdarkimpact.zsc index 237925354..6495ec474 100644 --- a/zscript/swwm_deepdarkimpact.zsc +++ b/zscript/swwm_deepdarkimpact.zsc @@ -151,6 +151,17 @@ Class AirBulletRing : Actor Radius 0.1; Height 0; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: diff --git a/zscript/swwm_handler.zsc b/zscript/swwm_handler.zsc index 18c8e28dd..8bbc98221 100644 --- a/zscript/swwm_handler.zsc +++ b/zscript/swwm_handler.zsc @@ -1077,6 +1077,9 @@ Class SWWMHandler : EventHandler CopyFloatBob(e.Thing); if ( swwm_doomfall && e.Thing.bISMONSTER && !level.monsterfallingdamage ) ForcedFallerDamager.TrackBody(e.Thing); + // alternate form without extra thinker, just needs PR #1153 + //if ( swwm_doomfall && e.Thing.bISMONSTER ) + // e.Thing.bFALLDAMAGE = true; if ( e.Thing is 'Key' ) { DoKeyTagFix(e.Thing); diff --git a/zscript/swwm_shot.zsc b/zscript/swwm_shot.zsc index 852bc6604..a1f88e12c 100644 --- a/zscript/swwm_shot.zsc +++ b/zscript/swwm_shot.zsc @@ -533,6 +533,17 @@ Class SaltImpact : Actor } Spawn("SaltLight2",pos); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -832,13 +843,14 @@ Class OnFire : Actor override void Tick() { + if ( isFrozen() ) return; if ( !victim ) { A_StopSound(CHAN_5); Destroy(); return; } - SetOrigin(victim.pos,true); + SetOrigin(victim.pos,false); if ( victim.waterlevel > 0 ) { if ( lite ) lite.Destroy(); @@ -1043,6 +1055,19 @@ Class OnFireTrail : Actor s.scale *= .5+abs(scale.x)*(.5+special1/6.); } } + override void Tick() + { + if ( isFrozen() ) return; + SetOrigin(level.Vec3Offset(pos,vel),true); + UpdateWaterLevel(); + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } Default { RenderStyle "Add"; @@ -1683,6 +1708,17 @@ Class GoldenImpact : Actor p.target = target; } } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -1808,6 +1844,17 @@ Class GoldenSubImpact : Actor p.target = target; } } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -1861,6 +1908,17 @@ Class GoldenSubSubImpact : Actor s.alpha *= .2; } } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: diff --git a/zscript/swwm_sparkyboi.zsc b/zscript/swwm_sparkyboi.zsc index c315f0650..78cfc06df 100644 --- a/zscript/swwm_sparkyboi.zsc +++ b/zscript/swwm_sparkyboi.zsc @@ -796,6 +796,17 @@ Class BiosparkBeamImpact : Actor s.ReactionTime += Random[Sparkster](0,int(5*factor)); } } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -836,6 +847,17 @@ Class BiosparkComboImpactSub : Actor if ( !bAMBUSH ) return; SWWMUtility.DoExplosion(self,100,10000,300,120); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -1042,6 +1064,17 @@ Class BiosparkComboImpact : Actor p.bAMBUSH = bAMBUSH; } } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -1636,6 +1669,17 @@ Class BiosparkSpark : Actor +FORCEXYBILLBOARD; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: diff --git a/zscript/swwm_splode.zsc b/zscript/swwm_splode.zsc index e56c4c22a..8f30f27b4 100644 --- a/zscript/swwm_splode.zsc +++ b/zscript/swwm_splode.zsc @@ -89,6 +89,17 @@ Class ExplodiumMagTrail : Actor +NOINTERACTION; Scale 1.1; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -262,6 +273,17 @@ Class ExplodiumBulletImpact : Actor } Spawn("ExploLight",pos); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: diff --git a/zscript/swwm_tastytreat.zsc b/zscript/swwm_tastytreat.zsc index 199843c02..90a5902f2 100644 --- a/zscript/swwm_tastytreat.zsc +++ b/zscript/swwm_tastytreat.zsc @@ -245,6 +245,17 @@ Class CandyPop : Actor SWWMHandler.DoFlash(mo,Color(str,224,0,255),3); } } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -412,6 +423,17 @@ Class CandyMagTrail : Actor Scale 2.4; Alpha 0.7; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -773,6 +795,17 @@ Class CandyBulletImpact : Actor Spawn("CandyLight",pos); Spawn("CandyRing",pos); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -808,6 +841,17 @@ Class CandyRing : Actor +NOTELEPORT; +NOINTERACTION; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: diff --git a/zscript/swwm_thiccboolet.zsc b/zscript/swwm_thiccboolet.zsc index 4392d1668..aab525dab 100644 --- a/zscript/swwm_thiccboolet.zsc +++ b/zscript/swwm_thiccboolet.zsc @@ -140,6 +140,17 @@ Class SilverImpact : Actor s.vel = pvel; } } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -453,6 +464,17 @@ Class FatChodeImpact : Actor } Spawn("ExploLight3",pos); } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: @@ -491,6 +513,17 @@ Class FatChodeExplosionTrail : Actor +NOINTERACTION; Scale 3.; } + override void Tick() + { + if ( isFrozen() ) return; + if ( !CheckNoDelay() || (tics == -1) ) return; + if ( tics > 0 ) tics--; + while ( !tics ) + { + if ( !SetState(CurState.NextState) ) + return; + } + } States { Spawn: