aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRibbonCable <ambiguousmachine@gmail.com>2022-02-17 21:29:10 -0800
committerRibbonCable <ambiguousmachine@gmail.com>2022-02-17 21:29:10 -0800
commitb15a0c077587ddf748d34556524416435c01ec17 (patch)
tree8d6b651465404426e1fb3eb4e9ba5c29a7c7158d
parent8b53a5ee4a55f455c7b1d1dd02d67778b1ec31f8 (diff)
lots of stuff, check desc
Updated planet art adjusted sprites in sheet added boss sprites added some boss graphic code added score system added ending score screen w/ cart reset reduced wave loss from 2 to 1 reduced pickup amount to just bosses and specific waves only reduced tokens by grouping similar math made acid transition able to be reversed planet seed for babymode and a bunch of other stuff I forget sry its late used a lot of tokens today x.x;
-rw-r--r--background.lua5
-rw-r--r--bullets.lua8
-rw-r--r--draw.lua52
-rw-r--r--enemies.lua88
-rw-r--r--objects.lua11
-rw-r--r--pickups.lua48
-rw-r--r--pico-bhell.p8186
-rw-r--r--players.lua4
-rw-r--r--ui.lua120
-rw-r--r--update.lua43
-rw-r--r--waves.lua22
11 files changed, 348 insertions, 239 deletions
diff --git a/background.lua b/background.lua
index d99ee3b..7fe7c1c 100644
--- a/background.lua
+++ b/background.lua
@@ -25,10 +25,11 @@ function bgplanetmegasprite(x,y)
--y = 50
palt(0,false)
+ palt(13,true)
spr(194,x+10,y+0,7,2)
spr(201,x+10,y+16,7,2)
spr(234,x+2,y+32,6,2)
- palt(0,true)
+ palt()
end
@@ -43,7 +44,7 @@ function drawbg()
--galaxies
spr(120, 20, 30, 1, 1)
- spr(104, 100, 40, 1, 1)
+ spr(104, 108, 40, 1, 1)
spr(104, 42, 74, 1, 1, true, true)
--ringed planet
diff --git a/bullets.lua b/bullets.lua
index 5d22e47..f069036 100644
--- a/bullets.lua
+++ b/bullets.lua
@@ -44,8 +44,7 @@ function addbullet(x, y, velx, vely, good, sprite)
add(obj, bullet)
end
---ERROR Sticks around after boss dies
-function addlaser(x, y, r)
+function addlaser(x, y, r, enemy)
local laser = {
--lasers!!!!!!!!!!!!!!!
}
@@ -98,7 +97,7 @@ function addlaser(x, y, r)
end
--delete laser once its done
- if timer > 4 then
+ if timer > 4 or enemy.health <= 0 then
del(obj, laser)
sfx(25, 3)
for i = 1, 16, 1 do
@@ -106,7 +105,6 @@ function addlaser(x, y, r)
end
end
end
-
add(obj, laser)
sfx(23,3)
end
@@ -140,7 +138,7 @@ function addmissile(x, y, target) --basic small weak enemy
addcircle(enemy.x+12, enemy.y+rnd(8), 0, rnd()/8, 2.1, 0.6, rnd({9,5}))
enemymisc(enemy)
if enemy.health <= 0 then -- die!!!!!
- enemydie(enemy,17,2)
+ enemydie(enemy,17,2,10)
end
end
diff --git a/draw.lua b/draw.lua
index aa7c015..77566f7 100644
--- a/draw.lua
+++ b/draw.lua
@@ -16,16 +16,16 @@ drawobjs()
if gamerunning then
if gameover then --gameover timer, it does a cute spinny! 😡
- printdropshadow(ceil(respawntimer),63+sin(t())*3,55+cos(t())*3,6,5)
- currentscore("000000","000000",true,true) --clear score
+ printdropshadow(ceil(respawntimer),63+circletimex,55+circletimey,6,5)
+ runningscore(currentscore,true) --flashes score
elseif players[1].health <=0 then
- printdropshadow(ceil(players[1].inv),players[1].x+sin(t())*3,players[1].y+cos(t())*3,12,15)
- currentscore("000000","696969",true,false) --clear score for P1
+ printdropshadow(ceil(players[1].inv),players[1].x+circletimex,players[1].y+circletimey,12,15)
+ runningscore(currentscore,true) --flashes score
elseif #players > 1 and players[2].health <=0 then
- printdropshadow(ceil(players[2].inv),players[2].x+sin(t())*3,players[2].y+cos(t())*3,9,2)
- currentscore("000420","000000",false,true) --clear score for P2
+ printdropshadow(ceil(players[2].inv),players[2].x+circletimex,players[2].y+circletimey,9,2)
+ runningscore(currentscore,true) --flashes score
else
- currentscore("000420","696969",false,false) --current game score
+ runningscore(currentscore,false) --current game score
end
end
if not gamerunning or menuscroll < 1 then
@@ -46,15 +46,35 @@ if not gamerunning or menuscroll < 1 then
--main screen items
mainmenutext(24-menuscroll*150,53)
- titlehighscores("000000","000000",52-menuscroll*110,82)
+ titlehighscores(52-menuscroll*110,82)
credits(10-menuscroll*140,108)
- --intro acid effect
- if t() < 2 then
- for i = 1, 128, 1 do
- line(i-1,128,i-1,sin((i+0.22-t()*20)/24.357)*2+t()*80-10,11) --cool wavy transition effect!!!!
- line(i-1,128,i-1,sin((i+t()*60)/44.357)*5+t()*80-5,3)
- end
- addcircle(rnd(128), t()*80, 0,rnd(1),rnd(12)+2,1.5,14)
+ --intro acid transtition
+ acidcounter+=ft
+ acidtransition()
+end
+
+--final score screen and outro transition
+if scorescreen then
+ finalscorescreen(0,0)
+
+ --outro acid transition
+ if isoutro then
+ acidcounter-=ft
+ sfx(0,3,3)
+ acidtransition()
end
-end \ No newline at end of file
+ if acidcounter < -0.2 then run() end --resets cart
+end
+
+
+
+
+
+
+-- --final boss portal parts
+-- addportalthruster(70,6)
+-- addportalthruster(70,107,true)
+-- addfinalbossportal(80,10)
+-- addportalthruster(95,6)
+-- addportalthruster(95,107,true) \ No newline at end of file
diff --git a/enemies.lua b/enemies.lua
index 0f2934a..b1cd8b0 100644
--- a/enemies.lua
+++ b/enemies.lua
@@ -1,6 +1,3 @@
---REDUCE TOKENS BY
---merge new bullet sfx() to addbullet() ? (exception would be for the wallshooter)
-
enemies = {}
--universal functions:
@@ -24,16 +21,21 @@ function enemycollide(enemy, object) --f this enemy collides with something, do
end
end
-function enemydie(enemy, sound, soundchannel)
+function enemydie(enemy, sound, soundchannel, points, isboss)
for i = 1, rnd(enemy.h)+6, 1 do
addcircle(enemy.x+rnd(enemy.w), enemy.y+rnd(enemy.h), rnd(4)-2, -rnd(2)-1, 1, 2, rnd({3, 11, 9}), -0.1)
end
- if rnd(100) > 95 then
- addpickup(enemy.x+rnd(enemy.w), enemy.y+rnd(enemy.h))
+ -- if rnd(100) > 95 then
+ -- addpickup(enemy.x+rnd(enemy.w), enemy.y+rnd(enemy.h))
+ -- end
+ if isboss then
+ addpickup(enemy.x+rnd(32), enemy.y+rnd(32), "powerup")
+ addpickup(enemy.x+rnd(32), enemy.y+rnd(32), "health")
end
if shake < 3 then
shake = enemy.h/2
end
+ currentscore += points
sfx(sound, soundchannel)
explosion(enemy.x, enemy.y, enemy.w, enemy.h)
del(enemies, enemy)
@@ -93,7 +95,7 @@ function addbasicenemy(x, y, speed) --basic small weak enemy
end
enemymisc(enemy)
if enemy.health <= 0 then -- die!!!!!
- enemydie(enemy,17,2)
+ enemydie(enemy,17,2,10)
end
end
@@ -153,7 +155,7 @@ function addwallshooter(x, shootup, health, speed, offset, bulletspeed)
end
enemymisc(enemy)
if enemy.health <= 0 then
- enemydie(enemy,17,2)
+ enemydie(enemy,17,2,15)
end
end
@@ -204,7 +206,7 @@ function addballshooter(x, y, speed)
end
enemymisc(enemy)
if enemy.health <= 0 then
- enemydie(enemy,20,3)
+ enemydie(enemy,20,3,40)
end
end
@@ -251,14 +253,14 @@ function addtargetingenemy(x, y, speed)
end
enemymisc(enemy)
if enemy.health <= 0 then -- die!!!!!
- enemydie(enemy,17,2)
+ enemydie(enemy,17,2,20)
end
end
add(enemies, enemy)
end
-function addlasershooter(x, y, speed, stay)
+function addlasershooter(x, y, points, speed, stay, isboss)
local enemy = {
x = x+128,
y = y,
@@ -311,7 +313,7 @@ function addlasershooter(x, y, speed, stay)
if enemy.x <= 90 then
if not enemy.firedlaser then
- addlaser(enemy.x+6, enemy.y+20, 10)
+ addlaser(enemy.x+6, enemy.y+20, 10, enemy)
enemy.moveoffset = rnd({0,0.5}) --add offset so not moving in same direction each time
enemy.sinspeed = rnd({4,4,4,4,4,4,4,4,4,4,4,4,1,8,2,2,2,2}) --add differing speeds to sin up and down randomly
if enemy.health < 15*#players then
@@ -332,10 +334,7 @@ function addlasershooter(x, y, speed, stay)
if stay then
music(-1, 3000)
end
- enemydie(enemy,21,3)
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32), "health")
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32))
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32))
+ enemydie(enemy,21,3,points,isboss)
end
end
@@ -344,7 +343,7 @@ end
--ERROR damage model has incorrect tiling for endings and lights
-function addwallboss(x, y, length, speed, stay, move)
+function addwallboss(x, y, length, points, speed, stay, move, isboss)
local enemy = {
stay = stay or false,
move = move or 1,
@@ -354,7 +353,7 @@ function addwallboss(x, y, length, speed, stay, move)
w = 16,
h = 8*length,
inv = -1,
- health = 2*length*#players, --10
+ health = 10*length*#players, --10
shootcooldown = 3,
speed = speed,
bulletfired = {},
@@ -437,10 +436,7 @@ function addwallboss(x, y, length, speed, stay, move)
enemymisc(enemy)
if enemy.health <= 0 then -- die!!!!!
music(-1, 3000)
- enemydie(enemy,21,3)
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32), "health")
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32))
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32))
+ enemydie(enemy,21,3,points,isboss)
end
end
@@ -459,10 +455,11 @@ function addbomb(x, y, delay) --BIG BOMB!!!! KILL IIT QUICKLY!!!!
shot = enemyshot,
collide = enemycollide
}
+ local points = 50 --points by default if killed by player
function enemy.draw(enemy)
local sprite = 73
- if everysecondtimer > 0.5 then sprite = 75 end
+ if everysecondtimer > 0.5 then sprite = 75 end --animation
if enemy.health < 7 then
damagesmoke(enemy)
sprite += 32
@@ -483,6 +480,7 @@ function addbomb(x, y, delay) --BIG BOMB!!!! KILL IIT QUICKLY!!!!
for i = 1, 60, 1 do
addbullet(enemy.x+16, enemy.y+16, sin(i/60), cos(i/60))
enemy.health = 0
+ points = -40 --loss of points
sfx(19,2)
sfx(8,-2)
end
@@ -491,7 +489,7 @@ function addbomb(x, y, delay) --BIG BOMB!!!! KILL IIT QUICKLY!!!!
end
enemymisc(enemy)
if enemy.health <= 0 then -- die!!!!!
- enemydie(enemy,20,3)
+ enemydie(enemy,20,3,points)
end
--charge sound
if enemy.x < 120 and everysecondtimer > 0.45 then
@@ -507,6 +505,7 @@ function addbomb(x, y, delay) --BIG BOMB!!!! KILL IIT QUICKLY!!!!
end
+--move enemy more towards the centre of the screen to have room for portal
function addmissileboss(x, y) --boss that shoots missiles!!!
local enemy = {
x = x,
@@ -572,12 +571,45 @@ function addmissileboss(x, y) --boss that shoots missiles!!!
if enemy.health <= 0 then -- die!!!!!
music(-1, 3000)
sfx(60,-2) --stop missle sound
- enemydie(enemy,21,3)
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32), "health")
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32))
- addpickup(enemy.x+rnd(32), enemy.y+rnd(32))
+ enemydie(enemy,21,3,300,true)
+
end
end
add(enemies, enemy)
+end
+
+
+
+
+
+
+--FINAL BOSSS!!!! (INCOMPLETE)
+function addfinalbossportal(x,y)
+ speed = 1.5
+ amount = 3
+ sprite = 136
+
+ -- function enemy.draw()
+ spr(sprite, x, (sin(time()*speed)*amount)+y, 4, 3)
+ spr(sprite, x, (-sin(time()*speed)*amount)+y+85, 4, 3, false,true)
+ -- portal
+ ovalfill(x+28,(sin(time()*speed)*amount)+y+24,x+6,(-sin(time()*speed)*amount)+y+84,7)
+ -- end
+end
+
+--thrusters that each fall off once the portal's health is 1/5th depleated
+function addportalthruster(x,y,isflipped)
+ -- function enemy.draw()
+ local sprite = 128
+
+ if isflipped == true then
+ isflipped = -1
+ else
+ isflipped = 1
+ end
+
+ if everysecondtimer%0.1 > 0.05 then sprite = 132 end --animation
+ spr(sprite, x, isflipped*(sin(time()*1.5)*3)+y, 4, 2)
+ --end
end \ No newline at end of file
diff --git a/objects.lua b/objects.lua
index 621f43b..b605fb9 100644
--- a/objects.lua
+++ b/objects.lua
@@ -5,11 +5,22 @@ scrollspeed = 0
respawntimer = 0
gameover = false
gamerunning = false
+menuscroll = 0 --main screens
+menushipscroll = 0
+acidcounter = 0
+scorescreen = false
+isoutro = false --for outro transition
+highscore0 = 0420 --scores (0 is solo - 1 is coop)
+highscore1 = 0690
+currentscore = 0 --used for both gamemodes, but passed into highscore at end of game
+babymode = false --makes game a lot easier
+
function startgame()
music(0, 0, 3)
wave[currentwave].start()
gamerunning = true
+ print(gt,10,10)
end
function updateobjs()
diff --git a/pickups.lua b/pickups.lua
index 0ad9210..f4ad10b 100644
--- a/pickups.lua
+++ b/pickups.lua
@@ -1,29 +1,34 @@
-local randompickups = {}
-pickuptimer = 10
-function randompickups.update()
- pickuptimer -= ft
- if pickuptimer < 0 then
- pickuptimer = 10
- if rnd(100) > 85 then
- addpickup(128, rnd(80)+20)
- end
- end
-end
-function randompickups.draw()
-end
-add(obj, randompickups)
+-- local randompickups = {}
+-- pickuptimer = 10
+-- function randompickups.update()
+-- pickuptimer -= ft
+-- if pickuptimer < 0 then
+-- pickuptimer = 10
+-- if rnd(100) > 85 then
+-- addpickup(128, rnd(80)+20)
+-- end
+-- end
+-- end
+-- function randompickups.draw()
+-- end
+-- add(obj, randompickups)
function addpickup(x, y, type)
local pickup = {}
x = x
y = y
type = type or rnd({"health", "health", "fastshoot", "3shoot"})
- sprite = 4
+ if type == "powerup" then type = rnd({"fastshoot", "3shoot"}) end
+
+ function pickup.draw(pickup)
+ sprite = 4 --had to move these checks into draw or they'd have incorrect sprites
+ if type == "fastshoot" then
+ sprite = 20
+ elseif type == "3shoot" then
+ sprite = 36
+ end
- if type == "fastshoot" then
- sprite = 20
- elseif type == "3shoot" then
- sprite = 36
+ spr(sprite, x, y)
end
function pickup.collide(player)
@@ -50,13 +55,10 @@ function addpickup(x, y, type)
elseif type == "3shoot" then
player.shoot3 = true
end
+ currentscore+=10 --10 points
sfx(30, 1)
end
- function pickup.draw(pickup)
- spr(sprite, x, y)
- end
-
function pickup.update(pickup)
x -= 0.3
y += sin(time()/2)*0.2
diff --git a/pico-bhell.p8 b/pico-bhell.p8
index 7077041..bdcbfaa 100644
--- a/pico-bhell.p8
+++ b/pico-bhell.p8
@@ -4,17 +4,6 @@ __lua__
--β–Ά WIP toxic invaders β—€
--β–Ά 1029chris ribboncable β—€
---pallete replacement
---pal(15,140,1)
---pal(14,3,1)
---pal(13,133,1)
---pal(11,139,1)
---pal(10,137,1)
---pal(8,136,1)
---pal(4,141,1)
---pal(3,131,1)
---pal(0,130,1)
-
#include objects.lua
#include particles.lua
#include players.lua
@@ -49,23 +38,23 @@ __gfx__
01fcccf00fcff1f000fccf00c777c77c7cf7cf7700000000000000000000000000000000000000000000000000733eebebee33e3e3e3ee3a00003eb90003ebea
0fcff1009fcc1fc700000000fc7777cf7f77f77700000000000000000000000000000000000000000000000000067333333000333333333a0003ebea7ebbbe30
9fcc1fc700000000000000000fccccf0577777750000000000000000000000000000000000000000000000000000067776000000003333327ebbbe3000000000
-6a994a9700000000000000000499994057777775000000000b000000000000000000000000000000000000000000000000033000000330000000000000000000
-0a9aa4006a99a997000000004977779477999a7700000000e30000b300000000000000000000000000633333300003eb9e9e9e9999e9e9e900ebbbe900000000
-04a999a00aa444a000499400977977797999a777003e330033000b3300000000000000000000000007bebbbbbe33bba0000330000003300003bbe300033bbbe9
-00a44499049444990097790097799979799999a700bbb0003300e3330000000000000000000000007bbbebbbbbebbb930eeeeee00eeeeee07e3b30007e3b3300
-00a4449904a9999a009779009799977977779a77007e7000330e33330000000000000000000000007bbbebbbbbeebb9003b3bb3003b3bb307e3b30007ebbe300
-04a999a00a9aa44000499400977797797779a77700030300030333330000000000000000000000007bbb3eeeee3eeb930033b3000033b30003bbe30003ebbbe9
-0a9aa4006a994a970000000049777794777a7777000000000003333000000000000000000000000007eebbbbbe33eea0000ee000000ee00000ebbbe900000000
-6a994a9700000000000000000499994057777775000000000000330000000000000000000000000000633333300003eb00077000000770000000000000000000
-223fff22222272220000333333333333000a0000a99a000033333333000000000000000000000000007777e0ebee300000077000000770000000000000000000
-2ffffeb22225222200003bbbbb3bbbb300a9a0009999a0003b3bbbb300000000000000000000000007bbbbb33ebb9a000b0b30b00b0b30b00033bb3000003300
-fff1eddb22d222220000333b333b33b30a999a00aaaaaa003b3b3333003ee30000000000000000007bbebe33b3b3e9000b3b3bb00b3b3bb07ebe33e97eb3bb39
-2f1fdffd200dd0000000003b303b33b3a99999a0a99999a03b3b300000bbbbb3b3b3b3b3b3b3b3b37bebbbbe3330000003e33e3003e33e3000e3bbe000e3bbe0
-f370d70d055507000000003e303e33e3aa99999aaa99999a3e3e3000007b7be3e3e3e3e3e3e3e3e07bebbbbe333000000eeeeee00eeeeee000e3bbe07ebe33e9
-22da9ddbdfcc060d0000003b303b33b30aa999990aaaaaaa3b3b333300eeee3003003003003003007bbebe33b3b3e90033333333333333337ebe33e90033bb30
-229999ae2d0000d20000003e303eeee300aa999900aaaaaa3e3eeee300030030030030030030030007bbbbb33ebb9a00e3e3e3e33e3e3e3e0033bb3000000000
-29999ae22220d2220000003330333333000aa99a000aaaa033333333000030030030030030030030007777e0ebee30003b3b3b3bb3b3b3b30000000000000000
-3bbbbbbbbbbbbbbbbbbbbe3300000000003ebbbebebbeeee3000000000000000000000000000000000a999a000000000000009aa00033333000ee3333eb33330
+6a994a97000000000000000004999940577777750000000000000000000000000000000000000000000000000000000000033000000330000000000000000000
+0a9aa4006a99a997000000004977779477999a77000000000000000000000000000000000000000000633333300003eb9e9e9e9999e9e9e900ebbbe900000000
+04a999a00aa444a000499400977977797999a777000000000000000000000000000000000000000007bebbbbbe33bba0000330000003300003bbe300033bbbe9
+00a44499049444990097790097799979799999a700000000000000000000000000000000000000007bbbebbbbbebbb930eeeeee00eeeeee07e3b30007e3b3300
+00a4449904a9999a009779009799977977779a7700000000000000000000000000000000000000007bbbebbbbbeebb9003b3bb3003b3bb307e3b30007ebbe300
+04a999a00a9aa44000499400977797797779a77700000000000000000000000000000000000000007bbb3eeeee3eeb930033b3000033b30003bbe30003ebbbe9
+0a9aa4006a994a970000000049777794777a7777000000000000000000000000000000000000000007eebbbbbe33eea0000ee000000ee00000ebbbe900000000
+6a994a9700000000000000000499994057777775000000000000000000000000000000000000000000633333300003eb00077000000770000000000000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000007777e0ebee300000077000000770000000000000000000
+0000000000000000000000000000000000000000000000000000000000000000000000000000000007bbbbb33ebb9a000b0b30b00b0b30b00033bb3000003300
+000000000000000000000000000000000000000000000000000000000000000000000000000000007bbebe33b3b3e9000b3b3bb00b3b3bb07ebe33e97eb3bb39
+000000000000000000000000000000000000000000000000000000000000000000000000000000007bebbbbe3330000003e33e3003e33e3000e3bbe000e3bbe0
+000000000000000000000000000000000000000000000000000000000000000000000000000000007bebbbbe333000000eeeeee00eeeeee000e3bbe07ebe33e9
+000000000000000000000000000000000000000000000000000000000000000000000000000000007bbebe33b3b3e90033333333333333337ebe33e90033bb30
+0000000000000000000000000000000000000000000000000000000000000000000000000000000007bbbbb33ebb9a00e3e3e3e33e3e3e3e0033bb3000000000
+00000000000000000000000000000000000000000000000000000000000000000000000000000000007777e0ebee30003b3b3b3bb3b3b3b30000000000000000
+3bbbbbbbbbbbbbbbbbbbbe3300000000003ebbbebebbeeee3000000000000000000000000000000000a999a00000000000000a9900033333000ee3333eb33330
bbbbbbbbbbbbbeebbebebbbe33eeeea006ebbeeeeee33333e30000000000000000000000000000000033333e00000000003ee333000dd3ee005663ee3ebeeeea
be3ebe3ebe3ebbbbbbbbbbbbbe3e3e9a07eb3b3b3bbbeee3e30000000000000002222000000000000eebbbbb000000000eebbbbe00d553be006773be3eebbbb9
b33eb33eb33ebe33333333ebbbb33e9907eb3b3b3be33e3ee300000000000000220002000033000ebbbbbb330000000e33bbbbbe005553bb007773bbe3eeeeea
@@ -97,70 +86,70 @@ bebebebebebebebebebebe33bebeb320073b3b3b3beeeee3e3333bebebeb3320000000403eeee3ee
00000000000007e33ebebeb33e33e3e307e33e3eee3ee3eb33e333e30000000004404004eeeeeeee3eeeeeeeeee3eeeeeeeeeee300d553bb006773be33bebe3a
000000000000073e3e33eee33ee3e3e307e33b3ebe3eb3ee33e3333300000000000000403bebebeb3bebebe3beb3bebe33bebeb3000dd3ee005663ee33333332
00000000000007e33ee333e33ee3e3e307e33e3eee3ee3eb33e333e0000000000040400073333333333333373333333377333333000dd33300d5533333333030
-00033333333333333333333333333000000333333333333333333333000000000000000000000000000000000003333333333333333333333333333333333000
-0039aaebbbbbebbbbbbbbbbbbbbebe00003a88ebbbbbebbb3beebeb30000000000000000000000000000000003eebbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee30
-039999aebbbbbebbebeeeeeeebbbeb3003aaaa8ebbbbbebb3b3333b3000000000000000003000000000000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee0
-0399999ebbbbbebbebbeeeeeeebbebe003aaaaaebbbbbebb3beebeb3000000000000000003330000000000003ebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeee3
-3999999aebbbbbebbbbbbbbbbbbbbeb33aaaaaa8ebbbbbeb3b3333b3000000000000000003333000000000003ebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeee3
-3999999aebbbbbebbbbbbbbbbbbbbebe3aaaaaa8ebbbbbeb3beebeb300000000000000000336333000000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-3999999aebbbbbebbbebeeeeeebbbebe3aaaaaa8ebbbbbeb3b3333b300000000000000000336633300000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-3999999aebbbbbebbbebeeeeeebbbebe3aaaaaa8ebbbbbeb3beebeb300000000000000000336663330000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-3999999aeeeeeeeeeeeeeeeeeeeeeeee3aaaaaa8eeeeeeee0000000000000000000000000336667733000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-3999999aebbbbbebbbbbbbbbbbbbbbbe3aaaaaa8ebbbbbeb0000000000000000000000000033667773300000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-3999999aeeeeeeeeeeeeeeeeeeeeeeee3aaaaaa8eeeeeeee0000000000000000000000000033666776330000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-3999999aeeeeeeee3ee3333333eeeee33aaaaaa8eeeeeeee0000000000000000000000000003336666633000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-0399999e33333333333333333333333003aaaaae333333330000000000000000000000000000333366333000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-039999aeeeeeeeee3e3333333eeeee3003aaaa8eeeeeeeee0000000000000000000000000000000333300000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-00399ae3333333333333333333333300003a88e3333333330000000000000000000000000000000000000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-0003333333333333333333333333300000033333333333330000000000000000000000000000000000000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeee3
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000003ebbbbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeee3
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000eebbbbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee0
-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000003eebbbbbbbbbbbbbbbbbbbbbbbbbeeeeeeeee30
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033333333333333333333333333333333333300
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000033333333333333333333333333333333333300
-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ebbebeeebebbeeeebebbeeeebebbeeebebbe00
-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000777776d6777776d6777776d6777776d6666600
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000077777555777775557777755577777556666600
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067776555677765556777655567776555666500
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000007770d5d07770d5d07770d5d07770d5d666000
-000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000067600d0067600d0067600d0067600d0565000
-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000700000007000000070000000700000050000
-00000000000000000000000000000000000000000000000000000000000000000000000000000222222222222220000000022222222200000022222220222000
-02888888888882000000000000000000000000000000000000000000000000000000000002222022222002222222000000222222222200000222222202220000
-28888888888888200000000000000000000000000000000000000000000000000222220022222202220220222222222222222222222200002222222022200000
-88222244422228800000000000000000222222220000000000000000000000022222222022200220222020222222222222222222222200022222220222000000
-88222444222228800000000000000222222222222220000000000000000002222222222222020022002220222222222222222222222000222222202220000000
-88888888888888800000000000022222222222222222200000000000000222222222222222220002222202222222222222222222220002222222022200000000
-88202222222028800022200002222222222222222222220000000000022222202222222202202000000022222222222222222222200022222220222000000000
-22002820282002200222220022002222222222222222222000000000222000000222222200002200000222222222222222222222000222222202220000000000
-00002220222000000220020220220222222000022222222200000022000000000222222200022222222222222222222222222220002222222022200000000000
-00028888888200000220220222020222220222202222222220002000000000002222222200022222222222222222222222222200222222220222000000000000
-00288888888820000222000022220222202220220220022222000000000000002222222200002222222222222222222222222002222222202220000000000000
-02888222228882000022222222202222002202020202202222200000000000022222022200002222222222222222222222200022222222022200000000000000
-02882888882882000000000000022222002202220220202222200000000000222222222000000222222222222222222222000222222202222000000000000000
-28888888888888200000000002222222002220000022202222200000000002222220222000000022222222222222222200022222222022220000000000000000
-28828828288288200002222222222222000222222222022222220000000022222202220000000002222222222222220002222222220222200000000000000000
-28888888888888200022222222222222200002222200222222220000000222222222200000000000222222222222000222222222202220000000000000000000
-28282848282828200002888888882000000000000000000022202220000080000044400000000000000000000000000000222222220000222222222022220000
-28288888888828200028822422288200000000002820000028222820000282000444440000444400000000000000000000002220000022222222202222200000
-28284848282828200088888888888800000000282820000028888820000888004444440044444440000000220000000000000000002222222222022220000000
-28288888888828200022200000022200000000282828200022828222008888204404400444400444000002200000000000000000222222222202222200000000
-28284828282828200028200000028200000028282828200022828282082888804440044440004044000022200000000000000022222222220022220000000000
-28288888888828200028288888828200000028282828200028888882008888824444444400004444000222000000000000002222222222002222000000000000
-28282828284828200022888888882200000028282828200022828222088882880444444000000440002220000000000000222222222200222220000000000000
-28288888888828200028282848488200000028282828200002828200288288020044440000000000022220000000000022222222220022222000000000000000
-28222828482228200028888888888200000028282828200002828200002888800044444440000440022200000000222222222222202222200000000000000000
-28288888888828200288224442228820000002882882000002828200088888880444444444004444222200000022222222222220222220000000000000000000
-28282828282828200288244422228820000000282820000002828200828088284444000444404044222222222222222222220022220000000000000000000000
-28288822288828200288888888888820000000288200000002828200008888804440444044440444222222222222222200002222000000000000000000000000
-28282822282828200282888888282820000000282000000002828200082088204440444404444440222222222222000222222000000000000000000000000000
-28888822288888200288882828888820000000282000000002828200000222004444044400444400222222220022222222200000000000000000000000000000
-28882822282888200282882228282820000200282000200002828202000082000444444400000000022222222222222200000000000000000000000000000000
-28888822288888222288882228888822020220282220202022828222000082000044444000000000002222222222200000000000000000000000000000000000
+00033333333333333333333333333000000333333333333333333333333330000003333333333333333333333333300000033333333333333333333333333000
+0039aaebbbbbebbbbbbbbbbbbbbebe00003a88ebbbbbebbbbbbbbbbbbbbebe0000eebbbbbbbbbbbbbbbbbeeeeeeeee000033eeeeeeeeeeeeeeeee3eeeeeee300
+039999aebbbbbebbebeeeeeeebbbeb3003aaaa8ebbbbbebbebeeeeeeebbbeb300eebbbbbbbbbbbbbbbbbbbeeeeeeeee0033eebebebebebebebebee3e3e3e3330
+0399999ebbbbbebbebbeeeeeeebbebe003aaaaaebbbbbebbebbeeeeeeebbebe03ebbbbbbbbbbbbbbbbbbbbbeeeeeeee333eeeeeeeeeeeeeeeeeeeeeeeeeeee33
+3999999aebbbbbebbbbbbbbbbbbbbeb33aaaaaa8ebbbbbebbbbbbbbbbbbbbeb33ebbbbbbbbbbbbbbbbbbbbbeeeeeeee333ebebebebebebebebebebee333e3333
+3999999aebbbbbebbbbbbbbbbbbbbebe3aaaaaa8ebbbbbebbbbbbbbbbbbbbebeeebbbbbbbbbbbbbbbbbbbbbeeeeeeeee33eeeeeeeeeeeeeeeeeeeeeeeeeeee33
+3999999aebbbbbebbbebeeeeeebbbebe3aaaaaa8ebbbbbebbbebeeeeeebbbebeeebbbbbbbbbbbbbbbbbbbbbeeeeeeee333ebebebebebebebebebebee3e3e3e33
+3999999aebbbbbebbbebeeeeeebbbebe3aaaaaa8ebbbbbebbbebeeeeeebbbebeeebbbbbbbbbbbbbbbbbbbbbeeeeeeeee33eeeeeeeeeeeeeeeeeeeeeeeeeeee33
+3999999aeeeeeeeeeeeeeeeeeeeeeeee3aaaaaa8eeeeeeeeeeeeeeeeeeeeeeeeeebbbbbbbbbbbbbbbbbbbbbeeeeeeeee33ebebebebebebebebebebee333e3333
+3999999aebbbbbebbbbbbbbbbbbbbbbe3aaaaaa8ebbbbbebbbbbbbbbbbbbbbbeeebbbbbbbbbbbbbbbbbbbbbeeeeeeee333eeeeeeeeeeeeeeeeeeeeeeeeeeee33
+3999999aeeeeeeeeeeeeeeeeeeeeeeee3aaaaaa8eeeeeeeeeeeeeeeeeeeeeeeeeebbbbbbbbbbbbbbbbbbbbbeeeeeeeee33ebebebebebebebebebebee3e3e3e33
+3999999aeeeeeeee3ee3333333eeeee33aaaaaa8eeeeeeee3ee3333333eeeee33ebbbbbbbbbbbbbbbbbbbbbeeeeeeee333eeeeeeeeeeeeeeeeeeeee333333333
+0399999e33333333333333333333333003aaaaae3333333333333333333333303ebbbbbbbbbbbbbbbbbbbbbeeeeeeee333ebebebebebebebebebebeeeeeeee33
+039999aeeeeeeeee3e3333333eeeee3003aaaa8eeeeeeeee3e3333333eeeee300eebbbbbbbbbbbbbbbbbbbeeeeeeeee0033eeeeeeeeeeeeeeeeeee3333333330
+00399ae3333333333333333333333300003a88e333333333333333333333330003eebbbbbbbbbbbbbbbbbeeeeeeeee300333eeeeeeeeeeeeeeeee3eeeeeee330
+00033333333333333333333333333000000333333333333333333333333330003333333333333333333333333333333333333333333333333333333333333333
+000333333333333333333333333330000003333333333333333333333333300033ebbeb33ebebbe33ebebbe333ebee33333ee3e333e3ee3333e3ee333e3e3333
+003a883eeeee3eeeeeeeeeeeeee3e3000038223eeeee3eeeeeeeeeeeeee3e3000333333333333333333333333333333003333333333333333333333333333330
+03aaaa83ebebe3ee3e3333333eee3e3003888823ebebe3ee3e3333333eee3e3000777776d6777776d6777776d666660000666665d5666665d5666665d5555500
+03aaaaa3eeeee3ee3ee3333333ee3e3003888883eeeee3ee3ee3333333ee3e30007777755577777555777775566666000066666ddd66666ddd66666dd5555500
+3aaaaaa83ebebe3ebebebebebebeb3e3388888823ebebe3ebebebebebebeb3e3006777655567776555677765556665000056665ddd56665ddd56665ddd555d00
+3aaaaaa83eeeee3eeeeeeeeeeeeee3e3388888823eeeee3eeeeeeeeeeeeee3e30007770d5d07770d5d07770d5d66600000066600d0066600d0066600d0555000
+3aaaaaa83ebebe3ebe3e333333beb3e3388888823ebebe3ebe3e333333beb3e300067600d0067600d0067600d056500000056500000565000005650000d5d000
+3aaaaaa83eeeee3eee3e333333eee3e3388888823eeeee3eee3e333333eee3e300007000000070000000700000050000000060000000600000006000000d0000
+3aaaaaa833333333333333333333333338888882333333333333333333333333222272222222222222fff3220000333333333333000a0000a99a000033333333
+3aaaaaa83eeeee3eeeeeeeeeeeeee3e3388888823eeeee3eeeeeeeeeeeeee3e322252222222828222beffff200003bbbbb3bbbb300a9a0009999a0003b3bbbb3
+3aaaaaa83333333333333333333333333888888233333333333333333333333322d2222222888882bdde1fff0000333b333b33b30a999a00aaaaaa003b3b3333
+3aaaaaa83eeeee3e3ee3333333eee3e3388888823eeeee3e3ee3333333eee3e3200dd00022888882dffdf1f20000003b303b33b3a99999a0a99999a03b3b3000
+03aaaaa3333333333333333333333330038888833333333333333333333333300555070022288822d07d073f0000003e303e33e3aa99999aaa99999a3e3e3000
+03aaaa83eeeee3ee3e3333333eeeee3003888823eeeee3ee3e3333333eeeee30dfcc060d28228222bdd9ad220000003b303b33b30aa999990aaaaaaa3b3b3333
+003aa833333333333333333333333300003822333333333333333333333333002d0000d288822282ea9999220000003e303eeee300aa999900aaaaaa3e3eeee3
+00033333333333333333333333333000000333333333333333333333333330002220d222282222222ea999920000003330333333000aa99a000aaaa033333333
+0000000000000000ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd00002222222222222200000000222222222dddddd2222222d222ddd
+0288888888888200ddddddddddddddddddddddddddddddddddddddddddddddddddddddddd22220222220022222220000002222222222ddddd2222222d222dddd
+2888888888888820ddddddddddddddddddddddddddddddddddddddddddddddddd22222dd222222022202202222222222222222222222dddd2222222d222ddddd
+8822224442222880ddddddddddddddd022222222dddddddddddddddddddddd022222222d2220022022202022222222222222222222220dd2222222d222dddddd
+8822244422222880ddddddddddddd22222222222222ddddddddddddddddd0222222222222202002200222022222222222222222222200d2222222d222ddddddd
+8888888888888880dddddddddd0222222222222222222dddddddddddd00222222222222222220002222202222222222222222222220002222222d222dddddddd
+8820222222202880dd222dddd222222222222222222222ddddddddd002222220222222220220200000002222222222222222222220002222222d222ddddddddd
+2200282028200220d22222d022002222222222222222222ddddddd002220dddd02222222d00022000002222222222222222222220002222222d222dddddddddd
+0000222022200000d2200202202202222220000222222222dddd00220ddddddd02222222d0022222222222222222222222222220002222222d222ddddddddddd
+0002888888820000d22022022202022222022220222222222d0020dddddddddd22222222dd02222222222222222222222222220022222222d222dddddddddddd
+0028888888882000d22200002222022220222022022002222200ddddddddddd022222222dd0022222222222222222222222220022222222d222ddddddddddddd
+0288822222888200d0222222222022220022020202022022222dddddddddddd22222d222dd002222222222222222222222200022222222d222dddddddddddddd
+0288288888288200dd000000000222220022022202202022222ddddddddddd222222222dddd00222222222222222222222000222222202222ddddddddddddddd
+2888888888888820dd0000000222222200222000002220222220ddddddddd222222d222ddd00002222222222222222220002222222202222dddddddddddddddd
+2882882828828820d00222222222222200022222222202222222dddddddd222222d222ddd00000022222222222222200022222222202222ddddddddddddddddd
+2888888888888820d02222222222222220000222220022222222ddddddd2222222222ddd000dd00022222222222200022222222220222ddddddddddddddddddd
+28282848282828200002888888882000000000000000000022202220000080000044400000000000ddddddd000dddd000022222222000022222222202222dddd
+28288888888828200028822422288200000000002820000028222820000282000444440000444400dddddd000dddddd0000022200000222222222022222ddddd
+28284848282828200088888888888800000000282820000028888820000888004444440044444440ddddd022ddddddddd000000000222222222202222ddddddd
+28288888888828200022200000022200000000282828200022828222008888204404400444400444dddd022ddddddddddd0000002222222222022222dddddddd
+28284828282828200028200000028200000028282828200022828282082888804440044440004044ddd0222dddddddddddd0002222222222002222dddddddddd
+28288888888828200028288888828200000028282828200028888882008888824444444400004444dd0222dddddddddddddd2222222222002222dddddddddddd
+28282828284828200022888888882200000028282828200022828222088882880444444000000440d0222ddddddddddddd22222222220022222ddddddddddddd
+28288888888828200028282848488200000028282828200002828200288288020044440000000000d2222ddddddddddd22222222220022222ddddddddddddddd
+282228284822282000288888888882000000282828282000028282000028888000444444400004400222dddddddd2222222222222d22222ddddddddddddddddd
+282888888888282002882244422288200000028828820000028282000888888804444444440044442222dddddd2222222222222d22222ddddddddddddddddddd
+2828282828282820028824442222882000000028282000000282820082808828444400044440404422222222222222222222dd2222dddddddddddddddddddddd
+282888222888282002888888888888200000002882000000028282000088888044404440444404442222222222222222dddd2222dddddddddddddddddddddddd
+28282822282828200282888888282820000000282000000002828200082088204440444404444440222222222222ddd222222ddddddddddddddddddddddddddd
+2888882228888820028888282888882000000028200000000282820000022200444404440044440022222222dd222222222ddddddddddddddddddddddddddddd
+28882822282888200282882228282820000200282000200002828202000082000444444400000000d222222222222222dddddddddddddddddddddddddddddddd
+28888822288888222288882228888822020220282220202022828222000082000044444000000000dd22222222222ddddddddddddddddddddddddddddddddddd
__label__
iiiiittttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
iiiitttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt
@@ -292,23 +281,22 @@ iiiiiiiiiiiiiiiiiiiiiiiiiiij333jiiiiiiii3333333333333333333333333333333333333333
iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii3333333333333333333333333333333333333333333333333333333333333333333333333333333333333333
__gff__
-0100000000000000000000000000000000000000000000000000000000000000000000000040000000000000000000000000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000020
-0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010000000000000000000000010000000000000000000000000000000000000101
+0100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000004040000000000000000000000000000000000000000000000000000020000000000000000000000000000000200000000000000000000000000000002000000000000000000000000000000020
+0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001010000
__map__
00000000000000000000000000000000000000000000000000000000be000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000009b00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-0000780000c2c3c4c500c7c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000780000c2c3c4c5c6c7c80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000d2d3d4d5d6d7d80000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000c9cacbcccdcecf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000d9dadbdcddde000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-00000000ea00ecedeeef00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-00000000fafbfcfd000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+0000000000d9dadbdcdddedf0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000eaebecedeeef00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
+00000000fafbfcfdfeff00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000012120000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000202000000001f00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000010000000001212000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
0000000000000000000000000000680000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
-3031000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
__sfx__
a108000022614286102d6103061033610356103661037610376103561034610326102e6102b610286102661022610206101d610186101661013610116100f6100c61009610066100461003610016100161000615
000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
diff --git a/players.lua b/players.lua
index 4f7eee3..dc62419 100644
--- a/players.lua
+++ b/players.lua
@@ -23,7 +23,7 @@ function addplayer(x, y, sprite, bulletsprite)
-- print(player.health)
--draw a different sprite when moving, and blink when hurt
- if (player.inv < 0 or ceil(player.inv*10%2) == 1) and player.health > 0 then
+ if (player.inv < 0 or flashtime == 1) and player.health > 0 then
if (player.ymov == 0) then
spr(sprite, player.x, player.y)
elseif (player.ymov == 1) then
@@ -54,6 +54,7 @@ function addplayer(x, y, sprite, bulletsprite)
sfx(11, 3)
sfx(29, 1)
elseif player.health <= 0 then
+ currentscore = ceil(currentscore * 0.5) --halves score if coop
sfx(11, 3)
player.inv = 5
end
@@ -134,6 +135,7 @@ function addplayer(x, y, sprite, bulletsprite)
end
function isgameover()
+ currentscore+=-10 --lose points if hit
for i = 1, #players, 1 do
if players[i].health > 0 then
return
diff --git a/ui.lua b/ui.lua
index 57dd9c8..d30475c 100644
--- a/ui.lua
+++ b/ui.lua
@@ -1,6 +1,3 @@
-menuscroll = 0
-menushipscroll = 0
-
function printdropshadow(text,x,y,colorMain,colorShadow)
print(text,x,y+1,colorShadow)
print(text,x,y,colorMain)
@@ -16,18 +13,6 @@ function invaderslogotext(x,y)
for i = 1, 12, 1 do
print(text, x+i%3-1, y+i%4-1, 3)
end
- -- color(3)
- -- print(text, x, y-1) --ew
- -- print(text, x+1, y)
- -- print(text, x-1, y)
- -- print(text, x-1, y+1)
- -- print(text, x+1, y+1)
- -- print(text, x-1, y-1)
- -- print(text, x+1, y-1)
- -- print(text, x+1, y+1)
- -- print(text, x-1, y+2)
- -- print(text, x+1, y+2)
- -- print(text, x, y+2)
print(text,x,y,14)
clip(x, y, 63, 3)
print(text,x,y,11)
@@ -42,15 +27,15 @@ function drawlogo(x,y)
--this is a horrible way to draw the logo, but I'm doing it anyways. x3
-- muahahahahahahaha!!!!!!
- sspr(16,24,16,8,x-3,y+2,32,16) --to shadow
- sspr(16,24,16,8,x-3,y,32,16) --to
- sspr(48,24,8,8,x+55,y+2,16,16) --ic shadow
- sspr(48,24,8,8,x+55,y,16,16) --ic
+ sspr(88,88,16,8,x-3,y+2,32,16) --to shadow
+ sspr(88,88,16,8,x-3,y,32,16) --to
+ sspr(120,88,8,8,x+55,y+2,16,16) --ic shadow
+ sspr(120,88,8,8,x+55,y,16,16) --ic
--X
- sspr(32,24,8,8,x+26,y-9,16,16)
- sspr(32,24,8,8,x+42,y-9,16,16,true)
- sspr(40,24,8,8,x+26,y+7,16,16,true)
- sspr(40,24,8,8,x+42,y+7,16,16)
+ sspr(104,88,8,8,x+26,y-9,16,16)
+ sspr(104,88,8,8,x+42,y-9,16,16,true)
+ sspr(112,88,8,8,x+26,y+7,16,16,true)
+ sspr(112,88,8,8,x+42,y+7,16,16)
--invaders
invaderslogotext(x+11,y+20)
end
@@ -60,41 +45,42 @@ function mainmenutext(x,y)
-- x = 24
-- y = 62
x -= 1
+ local sintime = sin(t()*0.7)*2
+
if not gamerunning then
- spr(17,x+2,y+4+sin(t()*0.7)*2,1,1) --blue ship
- spr(33,x+2,y+16+sin(t()*0.7)*2,1,1) --orange ship
+ spr(17,x+2,y+6+sintime,1,1) --blue ship
+ spr(33,x+2,y+17+sintime,1,1) --orange ship
end
printdropshadow("(\142) - lone wolf",x+15,y+7,6,5)
printdropshadow("(\151) - companion",x+15,y+18,6,5)
end
-function titlehighscores(highscore0,highscore1,x,y)
+function titlehighscores(x,y)
-- default values
-- 52
-- 110
- printdropshadow(highscore0,x-20,y,12,15) --1P high score
+ printdropshadow(scorewithzeros(tostring(highscore0),4),x-10,y,12,15) --1P high score
printdropshadow("-",x+10,y,6,5)
- printdropshadow(highscore1,x+20,y,9,2) --2P high score
+ printdropshadow(scorewithzeros(tostring(highscore1),4),x+18,y,9,2) --2P high score
end
-function currentscore(currentscore0,currentscore1,isflashing0,isflashing1)
- if #players != 1 then
- if isflashing1 then
- if ceil(t()*10%2) == 1 then
- printdropshadow(currentscore1,2,121,9,4) --2P current score
- end
- else
- printdropshadow(currentscore1,2,121,9,4) --2P current score
- end
+function playerscore()
+ if #players > 1 then
+ printdropshadow(scorewithzeros(tostring(currentscore),4),2,121,9,4) --2P current score
+ else
+ printdropshadow(scorewithzeros(tostring(currentscore),4),2,2,12,15) --1P current score
end
+end
- if isflashing0 then
- if ceil(t()*10%2) == 1 then
- printdropshadow(currentscore0,2,2,12,15) --1P current score
+--shown on edge of screen (blue for solo - orange for coop)
+function runningscore(currentscore,isflashing)
+ if isflashing or gt < 2 then
+ if flashtime == 1 then
+ playerscore()
end
else
- printdropshadow(currentscore0,2,2,12,15) --1P current score
+ playerscore()
end
end
@@ -105,22 +91,62 @@ function credits(x,y)
palt(2,true)
palt(0,false)
- spr(48,x-4,y+6+sin(t())*2,1,1,(t()%2<1)) --duck
- spr(49,x+104,y+6+cos(t())*2,1,1,(t()%2<1)) --bot
+ spr(186,x-4,y+6+sin(t())*2,1,1,(t()%2<1)) --duck
+ spr(184,x+104,y+6+cos(t())*2,1,1,(t()%2<1)) --bot
palt()
printdropshadow("1029chris",x+10,y+5,9,2)
printdropshadow("ribboncable",x+56,y+5,12,15)
printdropshadow("CODE TUNES",x+8,y+12,11,3)
printdropshadow("ART SOUNDS",x+58,y+12,11,3)
+end
+
+--Ending screen
+function finalscorescreen(x,y)
+ local playercolour0 = 12
+ local playercolour1 = 15
+
+ printdropshadow("fINAL sCORE", x+41,y+22,6,5)
+ if #players > 1 then
+ playercolour0 = 9
+ playercolour1 = 2
+ end
- -- print("made in vancouver - 2022", x+6,y+22,0)
- -- print("made in vancouver - 2022", x+6,y+21,4)
+ -- if #players > 1 and currentscore > highscore1 or #players == 1 and currentscore > highscore0 then
+ if flashtime == 1 then
+ printdropshadow("! new high score !", x+27,y+32,11,3)
+ if babymode then
+ printdropshadow("! BABYMODE !", x+40,y+70,9,2)
+ end
+ -- end
+ end
+
+ poke(0x5f58, 0x0 | 0x9 | 0x4) --makes score BIG
+ printdropshadow(scorewithzeros(tostring(currentscore),4),x+48+circletimex,y+50+circletimey,playercolour0,playercolour1) --2P high score
+ poke(0x5f58, 0)
+
+ printdropshadow("THANK YOU FOR PLAYING", x+19,y+80,11,3)
+ printdropshadow("PRESS ❎ ⁙ πŸ…ΎοΈ TO RETRY", x+18,y+88,11,3)
+
+ printdropshadow("MADE WITH β™₯ IN VANCOUVER", x+14,y+110,9,2)
+ printdropshadow("β—† 2022 β—†", x+42,y+118,11,3)
+end
+
+--intro/ending acid effect
+function acidtransition()
+ if acidcounter < 3 then
+ for i = 1, 128, 1 do
+ line(i-1,128,i-1,sin((i+0.22-acidcounter*20)/24.357)*2+acidcounter*80-5,11) --cool wavy transition effect!!!!
+ line(i-1,128,i-1,sin((i+acidcounter*60)/44.357)*5+acidcounter*80,3)
+ end
+ addcircle(rnd(128), acidcounter*80+5, 0,rnd(1),rnd(12)+2,1.5,14)
+ end
end
--sfx for the intro transition
-sfx(0,3)
+sfx(0,3,3)
--this creates menu items that allow players to turn off screenshake, or always fire the ships gun.
doshake = true
menuitem(1, "(\129) screenshake", function() doshake = not doshake end)
-menuitem(2, "(\144) autofire", function() alwaysfire = not alwaysfire end) \ No newline at end of file
+menuitem(2, "(\144) autofire", function() alwaysfire = not alwaysfire end)
+menuitem(3, "(\137) BABYMODE", function() babymode = true end) \ No newline at end of file
diff --git a/update.lua b/update.lua
index 21a3ca4..e006ed6 100644
--- a/update.lua
+++ b/update.lua
@@ -1,11 +1,17 @@
--scrolling and respawn stuff
respawntimer -= ft
+--similar math elements grouped to lower tokens
+flashtime = ceil(t()*10%2) --for flashing elements (ship, score)
+circletimex = sin(t())*3 -- for elements that move in a circle (respawn timer)
+circletimey = cos(t())*3
+
if gameover then
scrollspeed = mid(-1/10,scrollspeed-1/3000,ft)
+ currentscore = 0 --depleats score
if respawntimer < 0 then
gameover = false
foreach(players, function(obj) obj:respawn() end)
- setwave(mid(checkpoint,currentwave-2,#wave))
+ setwave(mid(checkpoint,currentwave-1,#wave)) --goes back one wave
sfx(29, -2)
end
elseif gamerunning then
@@ -14,19 +20,28 @@ elseif gamerunning then
end
gt += scrollspeed + 1/600
-if not gamerunning and t() > 1 then
- if btn(4) then
- addplayer(18, 60, 16, 18)
- startgame()
- elseif btn(5) then
- addplayer(18, 45, 16, 18)
- addplayer(18, 75, 32, 34)
- startgame()
+if scorescreen then --ending screen
+ if btn(4) and btn(5) and not isoutro then --press both buttons to reset cart
+ acidcounter = 2
+ isoutro = true
+ music(-1, 2000) --fades music
+ end
+else --main menu
+ if not gamerunning and t() > 1 then
+ if btn(4) then
+ addplayer(18, 60, 16, 18)
+ startgame()
+ elseif btn(5) then
+ addplayer(18, 45, 16, 18)
+ addplayer(18, 75, 32, 34)
+ startgame()
+ end
end
end
if gamerunning or t() < 1.95 then -- weird if because of freezing bubbles in the menu
updateobjs() --update all objects
+ if currentscore > 9999 then currentscore = 9999 elseif currentscore < 0 then currentscore = 0 end --attempts to avoid hitting the OOM error or being negative
end
--screenshake math
@@ -34,7 +49,9 @@ shake = shake + 0.11 * (0 - shake);
if shake < 1 or not doshake then
shake = 0
end
---add another player if they fire
--- if btn(4, 1) and #players == 1 then
--- addplayer(32, 34)
--- end \ No newline at end of file
+
+--adds zeros to score to look cooler
+function scorewithzeros(string,length)
+ if #string == length then return string end
+ return "0"..scorewithzeros(string, length-1)
+end \ No newline at end of file
diff --git a/waves.lua b/waves.lua
index 7a853f1..c87d088 100644
--- a/waves.lua
+++ b/waves.lua
@@ -1,11 +1,13 @@
wave = {} --store wave functions here
-currentwave = 12 --THIS IS THE CURRENT WAVE, SHOLD BE 1 UNLESS TESTING SOMETHING
+currentwave = 1 --THIS IS THE CURRENT WAVE, SHOLD BE 1 UNLESS TESTING SOMETHING
currentwavetime = 0
delaytimer = 0
everysecondtimer = 0
checkpoint = 1
changedmusic = false
+--NOTE - slow BG during boss waves / make bosses their own checkpoint
+
wave[1] = {
delay = 2,
start = function()
@@ -101,6 +103,7 @@ wave[7] = {
end,
}
+--music doesnt transition yet
wave[8] = {
delay = 1,
start = function()
@@ -109,7 +112,7 @@ wave[8] = {
addbasicenemy(240, 58, 1.1)
addbasicenemy(240, 68, 0.9)
addbasicenemy(240, 63, 1)
- addlasershooter(128, 64, 0.4, true)
+ addlasershooter(128, 64, 100, 0.4, true, true)
end,
everysecond = function()
@@ -166,12 +169,13 @@ wave[11] = {
end,
}
+--music doesnt transition yet
wave[12] = {
delay = 1,
start = function()
music(9, 0, 3)
changedmusic = true
- addwallboss(128,4,15,0.05,true)
+ addwallboss(128,4,15,225,0.05,true,false,true)
end,
everysecond = wave[8].everysecond,
conditions = wave[8].conditions
@@ -183,9 +187,9 @@ wave[13] = {
addbasicenemy(130, 58, 0.6)
addbasicenemy(130, 68, 0.5)
addbasicenemy(130, 63, 0.7)
- addlasershooter(128, -2, 0.1, false)
+ addlasershooter(128, -2, 50, 0.1, false)
addbomb(128,46, 0)
- addlasershooter(128, 90, 0.1, false)
+ addlasershooter(128, 90, 50, 0.1, false)
end,
everysecond = wave[8].everysecond,
}
@@ -231,6 +235,14 @@ wave[16] = {
everysecond = wave[8].everysecond,
}
+--ending score screen
+wave[17] = {
+ delay = 3,
+ start = function()
+ scorescreen = true
+ end
+}
+
--wave[currentwave].start()
--music(0, 0, 3)