diff --git a/gldefs.chancebox b/gldefs.chancebox deleted file mode 100644 index c8aac0202..000000000 --- a/gldefs.chancebox +++ /dev/null @@ -1,20 +0,0 @@ -HardwareShader Texture "models/Chancebox.png" -{ - Shader "shaders/glsl/Shinemask_bright.fp" - Texture "masktex" "models/Chancebox_mask.png" - Texture "envtex" "models/silvermap.png" - Texture "brighttex" "models/Chancebox_bright.png" -} - -PointLight CHANCELIGHT -{ - Color 1.0 0.7 0.2 - Size 50 - Offset 0 16 0 - Attenuate 1 -} - -Object Chancebox -{ - Frame "XZW2" { light "CHANCELIGHT" } -} diff --git a/gldefs.funstuff b/gldefs.funstuff index 058d4fb63..b3d995510 100644 --- a/gldefs.funstuff +++ b/gldefs.funstuff @@ -10,3 +10,23 @@ HardwareShader Texture "models/PerfectlyGeneric.png" { Shader "shaders/glsl/PerfectlyGeneric.fp" } +HardwareShader Texture "models/Chancebox.png" +{ + Shader "shaders/glsl/Shinemask_bright.fp" + Texture "masktex" "models/Chancebox_mask.png" + Texture "envtex" "models/silvermap.png" + Texture "brighttex" "models/Chancebox_bright.png" +} + +PointLight CHANCELIGHT +{ + Color 1.0 0.7 0.2 + Size 50 + Offset 0 16 0 + Attenuate 1 +} + +Object Chancebox +{ + Frame "XZW2" { light "CHANCELIGHT" } +} diff --git a/language.version b/language.version index 37cbdacdb..39e9a74bc 100644 --- a/language.version +++ b/language.version @@ -1,3 +1,3 @@ [default] -SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r257 \cu(Mon 8 Feb 18:48:09 CET 2021)\c-"; -SWWM_SHORTVER="\cw0.9.11b-pre r257 \cu(2021-02-08 18:48:09)\c-"; +SWWM_MODVER="\chSWWM \czGZ\c- \cw0.9.11b-pre r258 \cu(Tue 9 Feb 18:40:56 CET 2021)\c-"; +SWWM_SHORTVER="\cw0.9.11b-pre r258 \cu(2021-02-09 18:40:56)\c-"; diff --git a/modeldef.chancebox b/modeldef.chancebox deleted file mode 100644 index 9bd3da1ae..000000000 --- a/modeldef.chancebox +++ /dev/null @@ -1,53 +0,0 @@ -Model "Chancebox" -{ - Path "models" - Model 0 "Chancebox_d.3d" - Skin 0 "Chancebox.png" - Scale 0.1875 0.1875 0.1875 - AngleOffset -90 - ZOffset 10 - USEACTORPITCH - USEACTORROLL - - FrameIndex XZW1 A 0 0 - // deploy - FrameIndex XZW2 A 0 8 - FrameIndex XZW2 B 0 9 - FrameIndex XZW2 C 0 10 - FrameIndex XZW2 D 0 11 - FrameIndex XZW2 E 0 12 - FrameIndex XZW2 F 0 13 - FrameIndex XZW2 G 0 14 - FrameIndex XZW2 H 0 15 - FrameIndex XZW2 I 0 16 - FrameIndex XZW2 J 0 17 - FrameIndex XZW2 K 0 18 - FrameIndex XZW2 L 0 19 - FrameIndex XZW2 M 0 20 - FrameIndex XZW2 N 0 21 - FrameIndex XZW2 O 0 22 - FrameIndex XZW2 P 0 23 - FrameIndex XZW2 Q 0 24 -} -Model "ChanceboxTop" -{ - Path "models" - Model 0 "Chancebox_Top_d.3d" - Skin 0 "Chancebox.png" - Scale 0.1875 0.1875 0.1875 - AngleOffset -90 - ZOffset 2 - - FrameIndex XZW1 A 0 0 -} -Model "ChanceboxSide" -{ - Path "models" - Model 0 "Chancebox_Side_d.3d" - Skin 0 "Chancebox.png" - Scale 0.1875 0.1875 0.1875 - AngleOffset -90 - ZOffset 10 - - FrameIndex XZW1 A 0 0 -} diff --git a/modeldef.funstuff b/modeldef.funstuff index d42e234bf..9f38c74ac 100644 --- a/modeldef.funstuff +++ b/modeldef.funstuff @@ -155,3 +155,84 @@ Model "KirinPlush" FrameIndex XZW1 A 0 0 } +// misc +Model "Chancebox" +{ + Path "models" + Model 0 "Chancebox_d.3d" + Skin 0 "Chancebox.png" + Scale 0.1875 0.1875 0.1875 + AngleOffset -90 + ZOffset 10 + USEACTORPITCH + USEACTORROLL + + FrameIndex XZW1 A 0 0 + // deploy + FrameIndex XZW2 A 0 8 + FrameIndex XZW2 B 0 9 + FrameIndex XZW2 C 0 10 + FrameIndex XZW2 D 0 11 + FrameIndex XZW2 E 0 12 + FrameIndex XZW2 F 0 13 + FrameIndex XZW2 G 0 14 + FrameIndex XZW2 H 0 15 + FrameIndex XZW2 I 0 16 + FrameIndex XZW2 J 0 17 + FrameIndex XZW2 K 0 18 + FrameIndex XZW2 L 0 19 + FrameIndex XZW2 M 0 20 + FrameIndex XZW2 N 0 21 + FrameIndex XZW2 O 0 22 + FrameIndex XZW2 P 0 23 + FrameIndex XZW2 Q 0 24 +} +Model "ChanceboxTop" +{ + Path "models" + Model 0 "Chancebox_Top_d.3d" + Skin 0 "Chancebox.png" + Scale 0.1875 0.1875 0.1875 + AngleOffset -90 + ZOffset 2 + + FrameIndex XZW1 A 0 0 +} +Model "ChanceboxSide" +{ + Path "models" + Model 0 "Chancebox_Side_d.3d" + Skin 0 "Chancebox.png" + Scale 0.1875 0.1875 0.1875 + AngleOffset -90 + ZOffset 10 + + FrameIndex XZW1 A 0 0 +} +Model "SuperFancyTrail" +{ + Path "models/extra" + + Model 0 "YBeam.obj" + Scale 1 1 0.6 + USEACTORPITCH + USEACTORROLL + DONTCULLBACKFACES + + Skin 0 "FancyTrail0.png" + FrameIndex XZW1 A 0 0 + Skin 0 "FancyTrail1.png" + FrameIndex XZW1 B 0 0 + Skin 0 "FancyTrail2.png" + FrameIndex XZW1 C 0 0 + Skin 0 "FancyTrail3.png" + FrameIndex XZW1 D 0 0 + Skin 0 "FancyTrail4.png" + FrameIndex XZW1 E 0 0 + Skin 0 "FancyTrail5.png" + FrameIndex XZW1 F 0 0 + Skin 0 "FancyTrail6.png" + FrameIndex XZW1 G 0 0 + Skin 0 "FancyTrail7.png" + FrameIndex XZW1 H 0 0 +} diff --git a/models/extra/FancyTrail0.png b/models/extra/FancyTrail0.png new file mode 100644 index 000000000..68776c88a Binary files /dev/null and b/models/extra/FancyTrail0.png differ diff --git a/models/extra/FancyTrail1.png b/models/extra/FancyTrail1.png new file mode 100644 index 000000000..2fd09db5c Binary files /dev/null and b/models/extra/FancyTrail1.png differ diff --git a/models/extra/FancyTrail2.png b/models/extra/FancyTrail2.png new file mode 100644 index 000000000..0cf989419 Binary files /dev/null and b/models/extra/FancyTrail2.png differ diff --git a/models/extra/FancyTrail3.png b/models/extra/FancyTrail3.png new file mode 100644 index 000000000..8eddf8da6 Binary files /dev/null and b/models/extra/FancyTrail3.png differ diff --git a/models/extra/FancyTrail4.png b/models/extra/FancyTrail4.png new file mode 100644 index 000000000..467028850 Binary files /dev/null and b/models/extra/FancyTrail4.png differ diff --git a/models/extra/FancyTrail5.png b/models/extra/FancyTrail5.png new file mode 100644 index 000000000..e978a3170 Binary files /dev/null and b/models/extra/FancyTrail5.png differ diff --git a/models/extra/FancyTrail6.png b/models/extra/FancyTrail6.png new file mode 100644 index 000000000..d3d248cec Binary files /dev/null and b/models/extra/FancyTrail6.png differ diff --git a/models/extra/FancyTrail7.png b/models/extra/FancyTrail7.png new file mode 100644 index 000000000..ff95831f9 Binary files /dev/null and b/models/extra/FancyTrail7.png differ diff --git a/zscript/swwm_funstuff.zsc b/zscript/swwm_funstuff.zsc index 307ee3e8e..1baa3995e 100644 --- a/zscript/swwm_funstuff.zsc +++ b/zscript/swwm_funstuff.zsc @@ -678,6 +678,34 @@ Class FancyConfetti : Actor Stop; } } +Class SuperFancyTrail : Actor +{ + Default + { + RenderStyle "Add"; + Radius .1; + Height 0.; + XScale 24.; + +FORCEXYBILLBOARD; + +NOGRAVITY; + +NOBLOCKMAP; + +NOINTERACTION; + +DONTSPLASH; + +NOTELEPORT; + } + override void Tick() + { + if ( isFrozen() ) return; + A_SetScale(scale.x*.95,scale.y); + A_FadeOut(.01); + } + States + { + Spawn: + XZW1 ABCDEFGH -1 Bright; + Stop; + } +} Class SuperFancySparkle : Actor { Default @@ -685,12 +713,13 @@ Class SuperFancySparkle : Actor RenderStyle "Add"; Radius 0.1; Height 0; - Scale .2; + Scale .25; +NOGRAVITY; +NOBLOCKMAP; +DONTSPLASH; +ROLLSPRITE; +ROLLCENTER; + +INTERPOLATEANGLES; +FORCEXYBILLBOARD; +NOINTERACTION; FloatBobPhase 0; @@ -698,17 +727,21 @@ Class SuperFancySparkle : Actor override void PostBeginPlay() { Scale *= FRandom[ExploS](.75,1.5); - specialf1 = FRandom[ExploS](.95,.98); - specialf2 = FRandom[ExploS](.005,.015); + specialf1 = FRandom[ExploS](.94,.97); + specialf2 = FRandom[ExploS](.004,.012); double ang = FRandom[ExploS](0,360); double pt = FRandom[ExploS](-90,30); - vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),sin(-pt))*FRandom[ExploS](4,20); + vel = (cos(ang)*cos(pt),sin(ang)*cos(pt),sin(-pt))*FRandom[ExploS](2.,16.); frame = Random[ExploS](0,7); + special1 = RandomPick[ExploS](-1,1)*Random[ExploS](1,6); + roll = FRandom[ExploS](0,360); } override void Tick() { if ( isFrozen() ) return; + prev = pos; A_SetScale(scale.x*specialf1); + A_SetRoll(roll+special1,SPF_INTERPOLATE); A_FadeOut(specialf2); Vector3 dir = vel; double magvel = dir.length(); @@ -720,6 +753,17 @@ Class SuperFancySparkle : Actor vel = dir.unit()*magvel; } SetOrigin(level.Vec3Offset(pos,vel),true); + dir = level.Vec3Diff(pos,prev); + double dist = dir.length(); + if ( dist < .1 ) return; + dir /= dist; + let t = Spawn("SuperFancyTrail",pos); + t.alpha = alpha*.5; + t.scale.y = dist; + t.scale.x *= scale.x; + t.angle = atan2(dir.y,dir.x); + t.pitch = asin(-dir.z)+90; + t.SetState(t.SpawnState+frame); } States { @@ -793,7 +837,7 @@ Class PartyTime : Actor if ( !bAMBUSH ) A_StartSound("misc/tada",CHAN_ITEM); double ang, pt; int numpt = Random[ExploS](100,120); - if ( bAMBUSH ) numpt *= 2; + if ( bAMBUSH ) numpt *= 4; for ( int i=0; i