Good grief, that took some doing.
-=-=-
"I know, I'll just tweak the framework to do this." ended up taking .. what, 4 days!?!
That was NOT an easy task.
It's still not ideal, and I've also noticed the mouse co-ordinates can go out of whack, making the entire menu broken.
Oh, goody..
But other than that, it works fine!!
Lots of tweaks here, including a few new preset variables (ThisLevel, ThisDay, ThisMonth, etc) and a new function (WinLevel)
They're all (I think!) described in the command list file.
GameHandler Calendar, and slightly below that are listed the new variables and a couple of other bits and pieces.
Nothing too drastic.. .. given how blooming' long it all took!
But, yeah, it should all work now.
Let me know how you get on with it, and if I should fix anything.
Be sure to refresh for .v3geq or above!
// Helicopter Game
// by Jayenkai
// Created 2021/8/11
Symbol 0,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0@:@;;:@0_0?:@;;:@0_0_0.;;0_0_0_0,;;0_0_0_0,;;0_0_0_0,;;0_0_0@;_;0_0_0.;_;0!;;0_0,;@00;.0.;;0_0,;@II0;,00;_;_;!II00;_;_;_;I0,;.00;;0_0;_;/0.;;0_0;_;/0_0_00;;0!;;0_0_0.;;0!;;0_0_00;_;?0_0_;_;?";
Symbol 1,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0,z.;;:.0_0_0.z.;;:.0_0_0@;;0_0_0_0,;;0_0_0_0,;;0_0_0_0,;;0_0_0@;_;0_0_0.;_;0@;;0_0;@00;.0!;;0_0;@II0;,00;_;_;!II00;_;_;_;I0,;!0_0,;_;/00;;0_0,;_;/0_0_00;;0!;;0_0_0.;;0!;;0_0_00;_;?0_0_;_;?";
Symbol 2,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0?::;;zz0_0_0@::;;zz0_0_0_0;;0_0_0_0,;;0_0_0_0,;;0_0_0_0,;;0_0_0@;_;0_0_0.;_;0_0_00;@00;.0_0_;@II0;,00;_;_;!II00;_;_;_;I0,;.0_0?;_;/0_0/;_;/0_0_00;;0!;;0_0_0.;;0!;;0_0_00;_;?0_0_;_;?";
Symbol 3,"2__0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0_0:!;;z!0_0_:!;;z!0_0_0!;;0_0_0_0,;;0_0_0_0,;;0_0_0_0,;;0_0_0@;_;0_0_0.;_;0.;;0_0?;@00;.00;;0_0?;@II0;,00;_;_;!II00;_;_;_;I0,;.0.;;0@;_;/0!;;0@;_;/0_0_00;;0!;;0_0_0.;;0!;;0_0_00;_;?0_0_;_;?";
Symbol 4,"2__0_0_0_0_0_0_0_0.4,0_0_0_0!40_0_0_0_B040_0_0_00B040/40_0_0.B0!40_0_0040,B0_0_0!B0!B40,40_0_00B0_0.BB0_0@I0.B4I0?B0_0?4400BI0.I0.B0_0_040B004B40B0_0_0_4I4B0_0_0@B00I040040040440_0?BB00B0BBI.0!40_0_0/I0B0_0_44II44II40!B0_0!II0,B04I0@B0_0@B0?I40_0_0_40_0_0@B0?B00B0_0_0,B0.40B0.40_0_0B0_0B0_0_0/40_0_0_0_0_0_0_0/B0,40_0_0_B0.40_0_00B0_0_0_0.B";
Dim High(1024)
Graphics 640,480,2
GameHandler("Helicopter|Game",Calendar)
.StartGame
SeedRnd ThisLevel
Start=60
MyY=ScreenHeight()/2
MyYGo=0
Speed=0
MaxSpeed=4
Goal=0
LevelHue=Rand(0,360)
scrx=0
y=ScreenHeight()/2
yspd=0
gap=5
g=6
e=6
LevLong=64
// Setup tweaks depending on the day of the week
if ThisWeekday==0 then LevName="Sleepy Sunday"
if ThisWeekday==1 then LevName="Manic Monday":e=8:LevLong=Rand(96,200)
if ThisWeekday==2 then LevName="Tortuous Tuesday":g=9:LevLong=Rand(200,300)
if ThisWeekday==3 then LevName="Winding Wednesday":e=3:LevLong=Rand(96,160)
if ThisWeekday==4 then LevName="Throttle Thursday":LevLong=Rand(96,300):MaxSpeed=6
if ThisWeekday==5 then LevName="Far Out Friday":LevLong=1024
if ThisWeekday==6 then LevName="Superfast Saturday":LevLong=128
// Make tunnel
for x=0 to 1024
High(x)=y
y=y+yspd*4
gap=gap-1
if gap<0 and Rand(0,10)<e then yspd=Rand(0-g,g)
if y<72 then yspd=Rand(2,g)
if y>ScreenHeight()-72 then yspd=0-Rand(2,g)
next
Return
.Ingame
Speedup=1
if ThisWeekday==6 then Speedup=1.4
if ThisWeekday==0 then Speedup=0.7
SetCLSHue LevelHue,0.5,0.2
CLS;ResetDraw
SetCol 0,0,0
l=Floor(scrx/64)-1
r=l+14
if r>LevLong then r=LevLong
crashed=1
For x=l to r
dx=(x*64)-scrx
SetCol 0,0,0
Rect dx-32,High(x),65,129,1
// Check if Heli's close to this rect. If it's within this space, it's not crashed
if Abs(dx-32)<38 and Abs(High(x)-MyY)<60 and Start>-1
crashed=0
if x==LevLong and Goal==0 then Goal=1:PlaySFX("Beeper_Fruit_Bonus")
endif
Next
SetCol 255,255,255
Butt=0
if GamePad(ButtonA)>0.5 or GamePad(ButtonUp)>0.5 or MouseDown() then Butt=1
if crashed==1 and Start==0 then PlaySFX("Error_4"):PlaySFX("Explode_Low_6")
if crashed==1 or Start<0 then Start=Start-1
if Start>0 then Start=Start-1:Text ScreenWidth()/2,ScreenHeight()*0.25,LevName,1
if Start==0 and Goal==0
MaxSpeed=MaxSpeed+0.01
if ThisWeekday!=4 and MaxSpeed>8 then MaxSpeed=8
if ThisWeekday==4 and MaxSpeed>12 then MaxSpeed=12
scrx=scrx+(Speed*Speedup)
if Speed<MaxSpeed then Speed=Speed+0.1
MyY=MyY+MyYGo*0.45
if Butt==0 then MyYGo=MyYGo+(0.33*Speedup)
if Butt==1 then MyYGo=MyYGo-(0.33*Speedup)
endif
n=Floor(Mills()/64) Mod 4
DrawImg 32,MyY,n
if Start<0 then ThrowParticle 32,MyY,2,jRnd(0,360),jRnd(0.3,0.8),4,0
Score=l
if l<0 then l=0
s=(LevLong-(l+3)):if s<0 then s=0
Text ScreenWidth()-64,32,s,1
Text ScreenWidth()-64,48,"Goal",1
SetParticleSize 32
SetParticleGravity 0.2
if Start<0-30 then EndGame "Crashed"
if Goal>0 then Goal=Goal+1
if Goal>30 then Score=LevLong:WinLevel:EndGame "GOAL!"
Return