Loop update 2/5

master
a327ex 2021-06-30 22:34:48 -03:00
parent 5ccdfea184
commit 95df672169
10 changed files with 200 additions and 60 deletions

View File

@ -7,10 +7,11 @@ function Arena:init(name)
end end
function Arena:on_enter(from, level, units, passives, shop_level, shop_xp, lock) function Arena:on_enter(from, level, loop, units, passives, shop_level, shop_xp, lock)
self.hfx:add('condition1', 1) self.hfx:add('condition1', 1)
self.hfx:add('condition2', 1) self.hfx:add('condition2', 1)
self.level = level or 1 self.level = level or 1
self.loop = loop or 0
self.units = units self.units = units
self.passives = passives self.passives = passives
self.shop_level = shop_level or 1 self.shop_level = shop_level or 1
@ -185,6 +186,11 @@ function Arena:on_enter(from, level, units, passives, shop_level, shop_xp, lock)
6, 6, 7, 7, 8, 10, 6, 6, 7, 7, 8, 10,
8, 8, 10, 12, 14, 16, 25, 8, 8, 10, 12, 14, 16, 25,
} }
for i = 26, 5000 do
local n = i % 25
if n == 0 then n = 25 end
self.level_to_max_waves[i] = self.level_to_max_waves[n]
end
self.level_to_distributed_enemies_chance = { self.level_to_distributed_enemies_chance = {
0, 5, 10, 0, 5, 10,
10, 15, 15, 20, 10, 15, 15, 20,
@ -192,6 +198,11 @@ function Arena:on_enter(from, level, units, passives, shop_level, shop_xp, lock)
25, 25, 25, 25, 25, 30, 25, 25, 25, 25, 25, 30,
20, 25, 30, 35, 40, 45, 50, 20, 25, 30, 35, 40, 45, 50,
} }
for i = 26, 5000 do
local n = i % 25
if n == 0 then n = 25 end
self.level_to_distributed_enemies_chance[i] = self.level_to_distributed_enemies_chance[n]
end
self.max_waves = self.level_to_max_waves[self.level] self.max_waves = self.level_to_max_waves[self.level]
self.wave = 0 self.wave = 0
self.start_time = 3 self.start_time = 3
@ -319,6 +330,10 @@ function Arena:on_enter(from, level, units, passives, shop_level, shop_xp, lock)
self.t:after(1.125 + math.floor(n/4)*0.25, function() self.spawning_enemies = false end, 'spawning_enemies') self.t:after(1.125 + math.floor(n/4)*0.25, function() self.spawning_enemies = false end, 'spawning_enemies')
self.enemy_spawns_prevented = 0 self.enemy_spawns_prevented = 0
end) end)
self.level = 25*(self.loop+1)
self.won = true
self:quit()
end end
@ -379,11 +394,11 @@ function Arena:update(dt)
'assassination', 'flying_daggers', 'ultimatum', 'magnify', 'echo_barrage', 'unleash', 'reinforce', 'payback', 'enchanted', 'freezing_field', 'burning_field', 'gravity_field', 'magnetism', 'assassination', 'flying_daggers', 'ultimatum', 'magnify', 'echo_barrage', 'unleash', 'reinforce', 'payback', 'enchanted', 'freezing_field', 'burning_field', 'gravity_field', 'magnetism',
'insurance', 'dividends', 'berserking', 'unwavering_stance', 'unrelenting_stance', 'blessing', 'haste', 'divine_barrage', 'orbitism', 'psyker_orbs', 'psychosense', 'rearm', 'taunt', 'summon_instability', 'insurance', 'dividends', 'berserking', 'unwavering_stance', 'unrelenting_stance', 'blessing', 'haste', 'divine_barrage', 'orbitism', 'psyker_orbs', 'psychosense', 'rearm', 'taunt', 'summon_instability',
} }
max_units = 7 + current_new_game_plus max_units = math.clamp(7 + current_new_game_plus + self.loop, 7, 12)
main:add(BuyScreen'buy_screen') main:add(BuyScreen'buy_screen')
locked_state = nil locked_state = nil
system.save_run() system.save_run()
main:go_to('buy_screen', 1, {}, passives, 1, 0) main:go_to('buy_screen', 1, 0, {}, passives, 1, 0)
end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)} end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
end end
@ -416,7 +431,8 @@ function Arena:quit()
if self.died then return end if self.died then return end
self.quitting = true self.quitting = true
if self.level == 25 then if self.level % 25 == 0 then
self:gain_gold()
if not self.win_text and not self.win_text2 then if not self.win_text and not self.win_text2 then
input:set_mouse_visible(true) input:set_mouse_visible(true)
self.won = true self.won = true
@ -428,12 +444,12 @@ function Arena:quit()
end end
current_new_game_plus = current_new_game_plus + 1 current_new_game_plus = current_new_game_plus + 1
state.current_new_game_plus = current_new_game_plus state.current_new_game_plus = current_new_game_plus
max_units = 7 + current_new_game_plus max_units = math.clamp(7 + current_new_game_plus + self.loop, 7, 12)
system.save_run() system.save_run()
trigger:tween(1, _G, {slow_amount = 0}, math.linear, function() slow_amount = 0 end, 'slow_amount') trigger:tween(1, _G, {slow_amount = 0}, math.linear, function() slow_amount = 0 end, 'slow_amount')
trigger:tween(4, camera, {x = gw/2, y = gh/2, r = 0}, math.linear, function() camera.x, camera.y, camera.r = gw/2, gh/2, 0 end) trigger:tween(4, camera, {x = gw/2, y = gh/2, r = 0}, math.linear, function() camera.x, camera.y, camera.r = gw/2, gh/2, 0 end)
self.win_text = Text2{group = self.ui, x = gw/2 + 40, y = gh/2 - 66, force_update = true, lines = {{text = '[wavy_mid, cbyc2]congratulations!', font = fat_font, alignment = 'center'}}} self.win_text = Text2{group = self.ui, x = gw/2 + 40, y = gh/2 - 69, force_update = true, lines = {{text = '[wavy_mid, cbyc2]congratulations!', font = fat_font, alignment = 'center'}}}
trigger:after(2.5, function() trigger:after(2.5, function()
self.build_text = Text2{group = self.ui, x = 40, y = 20, force_update = true, lines = {{text = "[wavy_mid, fg]your build", font = pixul_font, alignment = 'center'}}} self.build_text = Text2{group = self.ui, x = 40, y = 20, force_update = true, lines = {{text = "[wavy_mid, fg]your build", font = pixul_font, alignment = 'center'}}}
for i, unit in ipairs(self.units) do for i, unit in ipairs(self.units) do
@ -442,6 +458,9 @@ function Arena:quit()
{text = '[' .. character_color_strings[unit.character] .. ']' .. unit.character, font = pixul_font, alignment = 'left'} {text = '[' .. character_color_strings[unit.character] .. ']' .. unit.character, font = pixul_font, alignment = 'left'}
}} }}
end end
for i, passive in ipairs(self.passives) do
ItemCard{group = self.ui, x = 120 + (i-1)*30, y = 20, w = 30, h = 45, sx = 0.75, sy = 0.75, force_update = true, passive = passive.passive , level = passive.level, xp = passive.xp, parent = self}
end
if current_new_game_plus == 6 then if current_new_game_plus == 6 then
if current_new_game_plus == new_game_plus then if current_new_game_plus == new_game_plus then
@ -452,17 +471,19 @@ function Arena:quit()
state.current_new_game_plus = current_new_game_plus state.current_new_game_plus = current_new_game_plus
max_units = 12 max_units = 12
self.win_text2 = Text2{group = self.ui, x = gw/2 + 40, y = gh/2 + 30, force_update = true, lines = { self.win_text2 = Text2{group = self.ui, x = gw/2 + 40, y = gh/2 + 20, force_update = true, lines = {
{text = "[fg]now you've really beaten the game!", font = pixul_font, alignment = 'center', height_multiplier = 1.24}, {text = "[fg]now you've really beaten the game!", font = pixul_font, alignment = 'center', height_multiplier = 1.24},
{text = "[fg]thanks a lot for playing it and completing it entirely!", font = pixul_font, alignment = 'center', height_multiplier = 1.24}, {text = "[fg]thanks a lot for playing it and completing it entirely!", font = pixul_font, alignment = 'center', height_multiplier = 1.24},
{text = "[fg]this game was inspired by:", font = pixul_font, alignment = 'center', height_multiplier = 4}, {text = "[fg]this game was inspired by:", font = pixul_font, alignment = 'center', height_multiplier = 3.5},
{text = "[fg]so check those games out, they're fun!", font = pixul_font, alignment = 'center', height_multiplier = 1.24}, {text = "[fg]so check them out! and to get more games like this:", font = pixul_font, alignment = 'center', height_multiplier = 3.5},
{text = "[fg]and to get more games like this in the future:", font = pixul_font, alignment = 'center', height_multiplier = 4},
{text = "[wavy_mid, yellow]thanks for playing!", font = pixul_font, alignment = 'center'}, {text = "[wavy_mid, yellow]thanks for playing!", font = pixul_font, alignment = 'center'},
}} }}
SteamFollowButton{group = self.ui, x = gw/2 + 40, y = gh/2 + 78, force_update = true} SteamFollowButton{group = self.ui, x = gw/2 + 40, y = gh/2 + 58, force_update = true}
Button{group = self.ui, x = gw - 40, y = gh - 44, force_update = true, button_text = 'credits', fg_color = 'bg10', bg_color = 'bg', action = function() self:create_credits() end} Button{group = self.ui, x = gw - 40, y = gh - 44, force_update = true, button_text = 'credits', fg_color = 'bg10', bg_color = 'bg', action = function() self:create_credits() end}
Button{group = self.ui, x = gw - 32, y = gh - 20, force_update = true, button_text = 'quit', fg_color = 'bg10', bg_color = 'bg', action = function() love.event.quit() end} Button{group = self.ui, x = gw - 39, y = gh - 20, force_update = true, button_text = ' loop ', fg_color = 'bg10', bg_color = 'bg', action = function() self:endless() end}
self.try_loop_text = Text2{group = self.ui, x = gw - 144, y = gh - 20, force_update = true, lines = {
{text = '[bg10]continue run (+difficulty):', font = pixul_font},
}}
local open_url = function(b, url) local open_url = function(b, url)
ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5} ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5}
b.spring:pull(0.2, 200, 10) b.spring:pull(0.2, 200, 10)
@ -472,7 +493,15 @@ function Arena:quit()
end end
Button{group = self.ui, x = gw/2 - 50 + 40, y = gh/2 + 12, force_update = true, button_text = 'nimble quest', fg_color = 'bluem5', bg_color = 'blue', action = function(b) open_url(b, 'https://store.steampowered.com/app/259780/Nimble_Quest/') end} Button{group = self.ui, x = gw/2 - 50 + 40, y = gh/2 + 12, force_update = true, button_text = 'nimble quest', fg_color = 'bluem5', bg_color = 'blue', action = function(b) open_url(b, 'https://store.steampowered.com/app/259780/Nimble_Quest/') end}
Button{group = self.ui, x = gw/2 + 50 + 40, y = gh/2 + 12, force_update = true, button_text = 'dota underlords', fg_color = 'bluem5', bg_color = 'blue', action = function(b) open_url(b, 'https://store.steampowered.com/app/1046930/Dota_Underlords/') end} Button{group = self.ui, x = gw/2 + 50 + 40, y = gh/2 + 12, force_update = true, button_text = 'dota underlords', fg_color = 'bluem5', bg_color = 'blue', action = function(b) open_url(b, 'https://store.steampowered.com/app/1046930/Dota_Underlords/') end}
else else
self.win_text2 = Text2{group = self.ui, x = gw/2 + 40, y = gh/2 + 5, force_update = true, lines = {
{text = "[fg]you've beaten the game!", font = pixul_font, alignment = 'center', height_multiplier = 1.24},
{text = "[fg]if you liked it:", font = pixul_font, alignment = 'center', height_multiplier = 3.5},
{text = "[fg]and if you liked the music:", font = pixul_font, alignment = 'center', height_multiplier = 3.5},
{text = "[wavy_mid, yellow]thanks for playing!", font = pixul_font, alignment = 'center'},
}}
--[[
self.win_text2 = Text2{group = self.ui, x = gw/2 + 40, y = gh/2 + 20, force_update = true, lines = { self.win_text2 = Text2{group = self.ui, x = gw/2 + 40, y = gh/2 + 20, force_update = true, lines = {
{text = "[fg]you've beaten the game!", font = pixul_font, alignment = 'center', height_multiplier = 1.24}, {text = "[fg]you've beaten the game!", font = pixul_font, alignment = 'center', height_multiplier = 1.24},
{text = "[fg]i made this game in 3 months as a dev challenge", font = pixul_font, alignment = 'center', height_multiplier = 1.24}, {text = "[fg]i made this game in 3 months as a dev challenge", font = pixul_font, alignment = 'center', height_multiplier = 1.24},
@ -481,16 +510,18 @@ function Arena:quit()
{text = "[fg]i will release more games this year, so stay tuned!", font = pixul_font, alignment = 'center', height_multiplier = 1.4}, {text = "[fg]i will release more games this year, so stay tuned!", font = pixul_font, alignment = 'center', height_multiplier = 1.4},
{text = "[wavy_mid, yellow]thanks for playing!", font = pixul_font, alignment = 'center'}, {text = "[wavy_mid, yellow]thanks for playing!", font = pixul_font, alignment = 'center'},
}} }}
SteamFollowButton{group = self.ui, x = gw/2 + 40, y = gh/2 + 34, force_update = true} ]]--
SteamFollowButton{group = self.ui, x = gw/2 + 40, y = gh/2 - 10, force_update = true}
Button{group = self.ui, x = gw/2 + 40, y = gh/2 + 33, force_update = true, button_text = 'buy the soundtrack!', fg_color = 'greenm5', bg_color = 'green', action = function() open_url(b, 'https://kubbimusic.com/album/ember') end}
Button{group = self.ui, x = gw - 40, y = gh - 44, force_update = true, button_text = ' loop ', fg_color = 'bg10', bg_color = 'bg', action = function() self:endless() end}
RestartButton{group = self.ui, x = gw - 40, y = gh - 20, force_update = true} RestartButton{group = self.ui, x = gw - 40, y = gh - 20, force_update = true}
trigger:after(8, function() self.try_loop_text = Text2{group = self.ui, x = gw - 200, y = gh - 44, force_update = true, lines = {
self.try_ng_text = Text2{group = self.ui, x = gw - 210, y = gh - 20, force_update = true, lines = { {text = '[bg10]continue run (+difficulty, +1 max snake size):', font = pixul_font},
{text = '[cbyc3]try a harder difficulty with +1 max snake size:', font = pixul_font}, }}
}} self.try_ng_text = Text2{group = self.ui, x = gw - 187, y = gh - 20, force_update = true, lines = {
end) {text = '[bg10]new run (+difficulty, +1 max snake size):', font = pixul_font},
self.credits_button = Button{group = self.ui, x = gw - 40, y = gh - 44, force_update = true, button_text = 'credits', fg_color = 'bg10', bg_color = 'bg', action = function() }}
self:create_credits() self.credits_button = Button{group = self.ui, x = gw - 40, y = gh - 68, force_update = true, button_text = 'credits', fg_color = 'bg10', bg_color = 'bg', action = function() self:create_credits() end}
end}
end end
end) end)
@ -651,7 +682,7 @@ function Arena:quit()
self.t:tween(0.7, self, {main_slow_amount = 0}, math.linear, function() self.main_slow_amount = 0 end) self.t:tween(0.7, self, {main_slow_amount = 0}, math.linear, function() self.main_slow_amount = 0 end)
end) end)
self.t:after(3, function() self.t:after(3, function()
if self.level % 3 == 0 then if (self.level-(25*self.loop)) % 3 == 0 and #self.passives < 8 then
input:set_mouse_visible(true) input:set_mouse_visible(true)
self.arena_clear_text.dead = true self.arena_clear_text.dead = true
trigger:tween(1, _G, {slow_amount = 0}, math.linear, function() slow_amount = 0 end, 'slow_amount') trigger:tween(1, _G, {slow_amount = 0}, math.linear, function() slow_amount = 0 end, 'slow_amount')
@ -809,10 +840,10 @@ function Arena:die()
'assassination', 'flying_daggers', 'ultimatum', 'magnify', 'echo_barrage', 'unleash', 'reinforce', 'payback', 'enchanted', 'freezing_field', 'burning_field', 'gravity_field', 'magnetism', 'assassination', 'flying_daggers', 'ultimatum', 'magnify', 'echo_barrage', 'unleash', 'reinforce', 'payback', 'enchanted', 'freezing_field', 'burning_field', 'gravity_field', 'magnetism',
'insurance', 'dividends', 'berserking', 'unwavering_stance', 'unrelenting_stance', 'blessing', 'haste', 'divine_barrage', 'orbitism', 'psyker_orbs', 'psychosense', 'rearm', 'taunt', 'summon_instability', 'insurance', 'dividends', 'berserking', 'unwavering_stance', 'unrelenting_stance', 'blessing', 'haste', 'divine_barrage', 'orbitism', 'psyker_orbs', 'psychosense', 'rearm', 'taunt', 'summon_instability',
} }
max_units = 7 + current_new_game_plus max_units = math.clamp(7 + current_new_game_plus + self.loop, 7, 12)
main:add(BuyScreen'buy_screen') main:add(BuyScreen'buy_screen')
system.save_run() system.save_run()
main:go_to('buy_screen', 1, {}, passives, 1, 0) main:go_to('buy_screen', 1, 0, {}, passives, 1, 0)
end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)} end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
end} end}
end) end)
@ -821,6 +852,13 @@ function Arena:die()
end end
function Arena:endless()
current_new_game_plus = current_new_game_plus - 1
self.loop = self.loop + 1
self:transition()
end
function Arena:create_credits() function Arena:create_credits()
local open_url = function(b, url) local open_url = function(b, url)
ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5} ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5}
@ -926,8 +964,8 @@ function Arena:transition()
end end
slow_amount = 1 slow_amount = 1
main:add(BuyScreen'buy_screen') main:add(BuyScreen'buy_screen')
system.save_run(self.level+1, gold, self.units, self.passives, self.shop_level, self.shop_xp, run_passive_pool, locked_state) system.save_run(self.level+1, self.loop, gold, self.units, self.passives, self.shop_level, self.shop_xp, run_passive_pool, locked_state)
main:go_to('buy_screen', self.level+1, self.units, self.passives, self.shop_level, self.shop_xp) main:go_to('buy_screen', self.level+1, self.loop, self.units, self.passives, self.shop_level, self.shop_xp)
t.t:after(0.1, function() t.t:after(0.1, function()
t.text:set_text({ t.text:set_text({
{text = '[nudge_down, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']gold gained: ' .. tostring(self.gold_gained or 0) .. ' + ' .. tostring(self.gold_picked_up or 0), font = pixul_font, {text = '[nudge_down, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']gold gained: ' .. tostring(self.gold_gained or 0) .. ' + ' .. tostring(self.gold_picked_up or 0), font = pixul_font,

View File

@ -38,18 +38,18 @@ function BuyScreen:on_exit()
end end
function BuyScreen:on_enter(from, level, units, passives, shop_level, shop_xp) function BuyScreen:on_enter(from, level, loop, units, passives, shop_level, shop_xp)
self.level = level self.level = level
self.loop = loop
self.units = units self.units = units
self.passives = passives self.passives = passives
self.shop_level = shop_level self.shop_level = shop_level
self.shop_xp = shop_xp self.shop_xp = shop_xp
camera.x, camera.y = gw/2, gh/2 camera.x, camera.y = gw/2, gh/2
input:set_mouse_visible(true) print(self.loop)
if self.level == 1 then input:set_mouse_visible(true)
end
steam.friends.setRichPresence('steam_display', '#StatusFull') steam.friends.setRichPresence('steam_display', '#StatusFull')
steam.friends.setRichPresence('text', 'Shop - Level ' .. self.level) steam.friends.setRichPresence('text', 'Shop - Level ' .. self.level)
@ -72,8 +72,8 @@ function BuyScreen:on_enter(from, level, units, passives, shop_level, shop_xp)
self.items_text = Text({{text = '[wavy_mid, fg]items', font = pixul_font, alignment = 'center'}}, global_text_tags) self.items_text = Text({{text = '[wavy_mid, fg]items', font = pixul_font, alignment = 'center'}}, global_text_tags)
self.ng_text = Text({{text = '[fg]NG+' .. current_new_game_plus, font = pixul_font, alignment = 'center'}}, global_text_tags) self.ng_text = Text({{text = '[fg]NG+' .. current_new_game_plus, font = pixul_font, alignment = 'center'}}, global_text_tags)
local get_elite_str = function(lvl) local get_elite_str = function(lvl)
if lvl == 6 or lvl == 12 or lvl == 18 or lvl == 24 or lvl == 25 then return ' (elite)' if (lvl-(25*self.loop)) % 6 == 0 or lvl % 25 == 0 then return ' (elite)'
elseif lvl % 3 == 0 then return ' (hard)' elseif (lvl-(25*self.loop)) % 3 == 0 then return ' (hard)'
else return '' end else return '' end
end end
self.level_text = Text({{text = '[fg]Lv.' .. tostring(self.level) .. get_elite_str(self.level), font = pixul_font, alignment = 'center'}}, global_text_tags) self.level_text = Text({{text = '[fg]Lv.' .. tostring(self.level) .. get_elite_str(self.level), font = pixul_font, alignment = 'center'}}, global_text_tags)
@ -146,10 +146,10 @@ function BuyScreen:on_enter(from, level, units, passives, shop_level, shop_xp)
'assassination', 'flying_daggers', 'ultimatum', 'magnify', 'echo_barrage', 'unleash', 'reinforce', 'payback', 'enchanted', 'freezing_field', 'burning_field', 'gravity_field', 'magnetism', 'assassination', 'flying_daggers', 'ultimatum', 'magnify', 'echo_barrage', 'unleash', 'reinforce', 'payback', 'enchanted', 'freezing_field', 'burning_field', 'gravity_field', 'magnetism',
'insurance', 'dividends', 'berserking', 'unwavering_stance', 'unrelenting_stance', 'blessing', 'haste', 'divine_barrage', 'orbitism', 'psyker_orbs', 'psychosense', 'rearm', 'taunt', 'summon_instability', 'insurance', 'dividends', 'berserking', 'unwavering_stance', 'unrelenting_stance', 'blessing', 'haste', 'divine_barrage', 'orbitism', 'psyker_orbs', 'psychosense', 'rearm', 'taunt', 'summon_instability',
} }
max_units = 7 + current_new_game_plus max_units = math.clamp(7 + current_new_game_plus + self.loop, 7, 12)
main:add(BuyScreen'buy_screen') main:add(BuyScreen'buy_screen')
system.save_run() system.save_run()
main:go_to('buy_screen', 1, {}, passives, 1, 0) main:go_to('buy_screen', 1, 0, {}, passives, 1, 0)
end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)} end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
end, mouse_enter = function(b) end, mouse_enter = function(b)
b.info_text = InfoText{group = main.current.ui, force_update = true} b.info_text = InfoText{group = main.current.ui, force_update = true}
@ -178,7 +178,7 @@ function BuyScreen:on_enter(from, level, units, passives, shop_level, shop_xp)
]]-- ]]--
locked_state = {locked = self.locked, cards = {self.cards[1] and self.cards[1].unit, self.cards[2] and self.cards[2].unit, self.cards[3] and self.cards[3].unit}} locked_state = {locked = self.locked, cards = {self.cards[1] and self.cards[1].unit, self.cards[2] and self.cards[2].unit, self.cards[3] and self.cards[3].unit}}
system.save_run(self.level, gold, self.units, self.passives, self.shop_level, self.shop_xp, run_passive_pool, locked_state) system.save_run(self.level, self.loop, gold, self.units, self.passives, self.shop_level, self.shop_xp, run_passive_pool, locked_state)
end end
@ -552,7 +552,7 @@ function RestartButton:update(dt)
system.save_state() system.save_state()
main:add(BuyScreen'buy_screen') main:add(BuyScreen'buy_screen')
system.save_run() system.save_run()
main:go_to('buy_screen', 1, {}, passives, 1, 0) main:go_to('buy_screen', 1, 0, {}, passives, 1, 0)
end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)} end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
end end
end end
@ -698,11 +698,11 @@ function GoButton:update(dt)
ui_switch1:play{pitch = random:float(0.95, 1.05), volume = 0.5} ui_switch1:play{pitch = random:float(0.95, 1.05), volume = 0.5}
ui_transition1:play{pitch = random:float(0.95, 1.05), volume = 0.5} ui_transition1:play{pitch = random:float(0.95, 1.05), volume = 0.5}
self.transitioning = true self.transitioning = true
system.save_run(self.parent.level, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state) system.save_run(self.parent.level, self.parent.loop, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state)
TransitionEffect{group = main.transitions, x = self.x, y = self.y, color = state.dark_transitions and bg[-2] or character_colors[random:table(self.parent.units).character], transition_action = function() TransitionEffect{group = main.transitions, x = self.x, y = self.y, color = state.dark_transitions and bg[-2] or character_colors[random:table(self.parent.units).character], transition_action = function()
main:add(Arena'arena') main:add(Arena'arena')
main:go_to('arena', self.parent.level, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, self.parent.locked) main:go_to('arena', self.parent.level, self.parent.loop, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, self.parent.locked)
end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']level ' .. tostring(self.parent.level) .. '/25', font = pixul_font, alignment = 'center'}}, global_text_tags)} end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']level ' .. tostring(self.parent.level) .. '/' .. tostring(25*(self.parent.loop+1)), font = pixul_font, alignment = 'center'}}, global_text_tags)}
end end
end end
end end
@ -752,7 +752,7 @@ function LockButton:update(dt)
if not self.parent.locked then locked_state = nil end if not self.parent.locked then locked_state = nil end
if self.parent.locked then if self.parent.locked then
locked_state = {locked = true, cards = {self.parent.cards[1] and self.parent.cards[1].unit, self.parent.cards[2] and self.parent.cards[2].unit, self.parent.cards[3] and self.parent.cards[3].unit}} locked_state = {locked = true, cards = {self.parent.cards[1] and self.parent.cards[1].unit, self.parent.cards[2] and self.parent.cards[2].unit, self.parent.cards[3] and self.parent.cards[3].unit}}
system.save_run(self.parent.level, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state) system.save_run(self.parent.level, self.parent.loop, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state)
end end
ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5} ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5}
self.selected = true self.selected = true
@ -833,7 +833,7 @@ function LevelButton:update(dt)
gold = gold - 5 gold = gold - 5
self.parent.shop_text:set_text{{text = '[wavy_mid, fg]shop [fg]- [fg, nudge_down]gold: [yellow, nudge_down]' .. gold, font = pixul_font, alignment = 'center'}} self.parent.shop_text:set_text{{text = '[wavy_mid, fg]shop [fg]- [fg, nudge_down]gold: [yellow, nudge_down]' .. gold, font = pixul_font, alignment = 'center'}}
self.text = Text({{text = '[bg10]' .. tostring(self.parent.shop_level), font = pixul_font, alignment = 'center'}}, global_text_tags) self.text = Text({{text = '[bg10]' .. tostring(self.parent.shop_level), font = pixul_font, alignment = 'center'}}, global_text_tags)
system.save_run(self.parent.level, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state) system.save_run(self.parent.level, self.parent.loop, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state)
end end
end end
end end
@ -969,7 +969,7 @@ function RerollButton:update(dt)
self.spring:pull(0.2, 200, 10) self.spring:pull(0.2, 200, 10)
gold = gold - 2 gold = gold - 2
self.parent.shop_text:set_text{{text = '[wavy_mid, fg]shop [fg]- [fg, nudge_down]gold: [yellow, nudge_down]' .. gold, font = pixul_font, alignment = 'center'}} self.parent.shop_text:set_text{{text = '[wavy_mid, fg]shop [fg]- [fg, nudge_down]gold: [yellow, nudge_down]' .. gold, font = pixul_font, alignment = 'center'}}
system.save_run(self.parent.level, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state) system.save_run(self.parent.level, self.parent.loop, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state)
end end
elseif self.parent:is(Arena) then elseif self.parent:is(Arena) then
if gold < 5 and not self.free_reroll then if gold < 5 and not self.free_reroll then
@ -1174,14 +1174,14 @@ function CharacterPart:update(dt)
self.parent:set_party_and_sets() self.parent:set_party_and_sets()
self.parent:refresh_cards() self.parent:refresh_cards()
self.parent.party_text:set_text({{text = '[wavy_mid, fg]party ' .. tostring(#self.parent.units) .. '/' .. tostring(max_units), font = pixul_font, alignment = 'center'}}) self.parent.party_text:set_text({{text = '[wavy_mid, fg]party ' .. tostring(#self.parent.units) .. '/' .. tostring(max_units), font = pixul_font, alignment = 'center'}})
system.save_run(self.parent.level, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state) system.save_run(self.parent.level, self.parent.loop, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state)
else else
self.parent.parent:gain_gold(self:get_sale_price()) self.parent.parent:gain_gold(self:get_sale_price())
self.parent.parent.units[self.i].reserve[self.level] = self.parent.parent.units[self.i].reserve[self.level] - 1 self.parent.parent.units[self.i].reserve[self.level] = self.parent.parent.units[self.i].reserve[self.level] - 1
self:die() self:die()
self.parent.parent:set_party_and_sets() self.parent.parent:set_party_and_sets()
self.parent.parent:refresh_cards() self.parent.parent:refresh_cards()
system.save_run(self.parent.parent.level, gold, self.parent.parent.units, self.parent.parent.passives, self.parent.parent.shop_level, self.parent.parent.shop_xp, run_passive_pool, locked_state) system.save_run(self.parent.parent.level, self.parent.parent.loop, gold, self.parent.parent.units, self.parent.parent.passives, self.parent.parent.shop_level, self.parent.parent.shop_xp, run_passive_pool, locked_state)
end end
end end
@ -1578,7 +1578,7 @@ function ShopCard:update(dt)
self.parent:refresh_cards() self.parent:refresh_cards()
self.parent.party_text:set_text({{text = '[wavy_mid, fg]party ' .. tostring(#self.parent.units) .. '/' .. tostring(max_units), font = pixul_font, alignment = 'center'}}) self.parent.party_text:set_text({{text = '[wavy_mid, fg]party ' .. tostring(#self.parent.units) .. '/' .. tostring(max_units), font = pixul_font, alignment = 'center'}})
locked_state = {locked = self.parent.locked, cards = {self.parent.cards[1] and self.parent.cards[1].unit, self.parent.cards[2] and self.parent.cards[2].unit, self.parent.cards[3] and self.parent.cards[3].unit}} locked_state = {locked = self.parent.locked, cards = {self.parent.cards[1] and self.parent.cards[1].unit, self.parent.cards[2] and self.parent.cards[2].unit, self.parent.cards[3] and self.parent.cards[3].unit}}
system.save_run(self.parent.level, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state) system.save_run(self.parent.level, self.parent.loop, gold, self.parent.units, self.parent.passives, self.parent.shop_level, self.parent.shop_xp, run_passive_pool, locked_state)
else else
error1:play{pitch = random:float(0.95, 1.05), volume = 0.5} error1:play{pitch = random:float(0.95, 1.05), volume = 0.5}
self.spring:pull(0.2, 200, 10) self.spring:pull(0.2, 200, 10)

View File

@ -13,6 +13,9 @@ function Seeker:init(args)
self:calculate_stats(true) self:calculate_stats(true)
self:set_as_steerable(self.v, 1000, 2*math.pi, 2) self:set_as_steerable(self.v, 1000, 2*math.pi, 2)
local level = self.level % 25
if level == 0 then self.level = 25*math.floor(self.level/25) end
if self.boss == 'speed_booster' then if self.boss == 'speed_booster' then
self.color = green[0]:clone() self.color = green[0]:clone()
self.t:every(8, function() self.t:every(8, function()

View File

@ -137,8 +137,8 @@ function system.load_state()
end end
function system.save_run(level, gold, units, passives, shop_level, shop_xp, run_passive_pool, locked_state) function system.save_run(level, loop, gold, units, passives, shop_level, shop_xp, run_passive_pool, locked_state)
local run = {level = level, gold = gold, units = units, passives = passives, shop_level = shop_level, shop_xp = shop_xp, run_passive_pool= run_passive_pool, locked_state = locked_state} local run = {level = level, loop = loop, gold = gold, units = units, passives = passives, shop_level = shop_level, shop_xp = shop_xp, run_passive_pool= run_passive_pool, locked_state = locked_state}
local str = "return " .. table.tostring(run) local str = "return " .. table.tostring(run)
love.filesystem.write("run_v3.txt", str) love.filesystem.write("run_v3.txt", str)
end end

View File

@ -1394,6 +1394,16 @@ function init()
[25] = {100, 100}, [25] = {100, 100},
} }
local k = 1
for i = 26, 5000 do
local n = i % 25
if n == 0 then
n = 25
k = k + 1
end
level_to_gold_gained[i] = {level_to_gold_gained[n][1]*k, level_to_gold_gained[n][2]*k}
end
level_to_elite_spawn_weights = { level_to_elite_spawn_weights = {
[1] = {0}, [1] = {0},
[2] = {4, 2}, [2] = {4, 2},
@ -1422,6 +1432,25 @@ function init()
[25] = {5, 5, 5, 5, 5, 5}, [25] = {5, 5, 5, 5, 5, 5},
} }
local k = 1
local l = 0.2
for i = 26, 5000 do
local n = i % 25
if n == 0 then
n = 25
k = k + 1
l = l*2
end
local a, b, c, d, e, f = unpack(level_to_elite_spawn_weights[n])
a = (a or 0) + (a or 0)*l
b = (b or 0) + (b or 0)*l
c = (c or 0) + (c or 0)*l
d = (d or 0) + (d or 0)*l
e = (e or 0) + (e or 0)*l
f = (f or 0) + (f or 0)*l
level_to_elite_spawn_weights[i] = {a, b, c, d, e, f}
end
level_to_boss = { level_to_boss = {
[6] = 'speed_booster', [6] = 'speed_booster',
[12] = 'exploder', [12] = 'exploder',
@ -1430,6 +1459,17 @@ function init()
[25] = 'randomizer', [25] = 'randomizer',
} }
local bosses = {'speed_booster', 'exploder', 'swarmer', 'forcer'}
local k = 1
for i = 30, 5000, 6 do
level_to_boss[i] = bosses[k]
k = k + 1
if k > 4 then k = 1 end
end
for i = 50, 5000, 25 do
level_to_boss[i] = 'randomizer'
end
level_to_elite_spawn_types = { level_to_elite_spawn_types = {
[1] = {'speed_booster'}, [1] = {'speed_booster'},
[2] = {'speed_booster', 'shooter'}, [2] = {'speed_booster', 'shooter'},
@ -1458,6 +1498,14 @@ function init()
[25] = {'speed_booster', 'exploder', 'headbutter', 'tank', 'shooter', 'spawner'}, [25] = {'speed_booster', 'exploder', 'headbutter', 'tank', 'shooter', 'spawner'},
} }
for i = 26, 5000 do
local n = i % 25
if n == 0 then
n = 25
end
level_to_elite_spawn_types[i] = level_to_elite_spawn_types[n]
end
level_to_shop_odds = { level_to_shop_odds = {
[1] = {70, 20, 10, 0}, [1] = {70, 20, 10, 0},
[2] = {50, 30, 15, 5}, [2] = {50, 30, 15, 5},
@ -1531,7 +1579,7 @@ function init()
if not state.new_game_plus then state.new_game_plus = new_game_plus end if not state.new_game_plus then state.new_game_plus = new_game_plus end
current_new_game_plus = state.current_new_game_plus or new_game_plus current_new_game_plus = state.current_new_game_plus or new_game_plus
if not state.current_new_game_plus then state.current_new_game_plus = current_new_game_plus end if not state.current_new_game_plus then state.current_new_game_plus = current_new_game_plus end
max_units = 7 + current_new_game_plus max_units = math.clamp(7 + current_new_game_plus, 7, 12)
main_song_instance = _G[random:table{'song1', 'song2', 'song3', 'song4', 'song5'}]:play{volume = 0.5} main_song_instance = _G[random:table{'song1', 'song2', 'song3', 'song4', 'song5'}]:play{volume = 0.5}
main = Main() main = Main()
@ -1870,6 +1918,7 @@ function open_options(self)
state.current_new_game_plus = current_new_game_plus state.current_new_game_plus = current_new_game_plus
self.ng_t.text:set_text({{text = '[bg10]current: ' .. current_new_game_plus, font = pixul_font, alignment = 'center'}}) self.ng_t.text:set_text({{text = '[bg10]current: ' .. current_new_game_plus, font = pixul_font, alignment = 'center'}})
max_units = 7 + current_new_game_plus max_units = 7 + current_new_game_plus
system.save_run()
end} end}
self.ng_plus_plus_button = Button{group = self.ui, x = gw/2 + 5, y = gh - 50, force_update = true, button_text = 'NG+ up', fg_color = 'bg10', bg_color = 'bg', action = function(b) self.ng_plus_plus_button = Button{group = self.ui, x = gw/2 + 5, y = gh - 50, force_update = true, button_text = 'NG+ up', fg_color = 'bg10', bg_color = 'bg', action = function(b)
@ -1880,6 +1929,7 @@ function open_options(self)
state.current_new_game_plus = current_new_game_plus state.current_new_game_plus = current_new_game_plus
self.ng_t.text:set_text({{text = '[bg10]current: ' .. current_new_game_plus, font = pixul_font, alignment = 'center'}}) self.ng_t.text:set_text({{text = '[bg10]current: ' .. current_new_game_plus, font = pixul_font, alignment = 'center'}})
max_units = 7 + current_new_game_plus max_units = 7 + current_new_game_plus
system.save_run()
end} end}
end end

View File

@ -102,7 +102,7 @@ function MainMenu:on_enter(from)
locked_state = run.locked_state locked_state = run.locked_state
system.save_state() system.save_state()
main:add(BuyScreen'buy_screen') main:add(BuyScreen'buy_screen')
main:go_to('buy_screen', run.level or 1, run.units or {}, passives, run.shop_level or 1, run.shop_xp or 0) main:go_to('buy_screen', run.level or 1, run.loop or 0, run.units or {}, passives, run.shop_level or 1, run.shop_xp or 0)
end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']starting...', font = pixul_font, alignment = 'center'}}, global_text_tags)} end, text = Text({{text = '[wavy, ' .. tostring(state.dark_transitions and 'fg' or 'bg') .. ']starting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
end} end}
self.options_button = Button{group = self.main_ui, x = 47, y = gh/2 + 12, force_update = true, button_text = 'options', fg_color = 'bg10', bg_color = 'bg', action = function(b) self.options_button = Button{group = self.main_ui, x = 47, y = gh/2 + 12, force_update = true, button_text = 'options', fg_color = 'bg10', bg_color = 'bg', action = function(b)

View File

@ -233,6 +233,17 @@ function Unit:calculate_stats(first_run)
if self.boss then if self.boss then
local x = self.level local x = self.level
local y = {0, 0, 3, 0, 0, 6, 0, 0, 9, 0, 0, 12, 0, 0, 18, 0, 0, 40, 0, 0, 32, 0, 0, 64, 90} local y = {0, 0, 3, 0, 0, 6, 0, 0, 9, 0, 0, 12, 0, 0, 18, 0, 0, 40, 0, 0, 32, 0, 0, 64, 90}
local y2 = {0, 0, 24, 0, 0, 28, 0, 0, 32, 0, 0, 36, 0, 0, 44, 0, 0, 64, 0, 0, 48, 0, 0, 80, 100}
local k = 1.1
for i = 26, 50 do y[i] = y2[i] end
for i = 51, 5000 do
local n = i % 25
if n == 0 then
n = 25
k = k + 0.1
end
y[i] = y2[n]*k
end
self.base_hp = 100 + (current_new_game_plus*5) + (90 + current_new_game_plus*10)*y[x] self.base_hp = 100 + (current_new_game_plus*5) + (90 + current_new_game_plus*10)*y[x]
self.base_dmg = (12 + current_new_game_plus*2) + (2 + current_new_game_plus)*y[x] self.base_dmg = (12 + current_new_game_plus*2) + (2 + current_new_game_plus)*y[x]
self.base_mvspd = 35 + 1.5*y[x] self.base_mvspd = 35 + 1.5*y[x]
@ -243,6 +254,15 @@ function Unit:calculate_stats(first_run)
else else
local x = self.level local x = self.level
local y = {0, 1, 3, 3, 4, 6, 5, 6, 9, 7, 8, 12, 10, 11, 15, 12, 13, 18, 16, 17, 21, 17, 20, 24, 25} local y = {0, 1, 3, 3, 4, 6, 5, 6, 9, 7, 8, 12, 10, 11, 15, 12, 13, 18, 16, 17, 21, 17, 20, 24, 25}
local k = 1.2
for i = 26, 5000 do
local n = i % 25
if n == 0 then
n = 25
k = k + 0.2
end
y[i] = y[n]*k
end
self.base_hp = 25 + 16.5*y[x] self.base_hp = 25 + 16.5*y[x]
self.base_dmg = 4.5 + 2.5*y[x] self.base_dmg = 4.5 + 2.5*y[x]
self.base_mvspd = 70 + 3*y[x] self.base_mvspd = 70 + 3*y[x]
@ -251,6 +271,17 @@ function Unit:calculate_stats(first_run)
if self.boss then if self.boss then
local x = self.level local x = self.level
local y = {0, 0, 3, 0, 0, 6, 0, 0, 9, 0, 0, 12, 0, 0, 18, 0, 0, 40, 0, 0, 32, 0, 0, 64, 90} local y = {0, 0, 3, 0, 0, 6, 0, 0, 9, 0, 0, 12, 0, 0, 18, 0, 0, 40, 0, 0, 32, 0, 0, 64, 90}
local y2 = {0, 0, 24, 0, 0, 28, 0, 0, 32, 0, 0, 36, 0, 0, 44, 0, 0, 64, 0, 0, 48, 0, 0, 80, 100}
local k = 1.1
for i = 26, 50 do y[i] = y2[i] end
for i = 51, 5000 do
local n = i % 25
if n == 0 then
n = 25
k = k + 0.1
end
y[i] = y2[n]*k
end
self.base_hp = 100 + (current_new_game_plus*5) + (90 + current_new_game_plus*10)*y[x] self.base_hp = 100 + (current_new_game_plus*5) + (90 + current_new_game_plus*10)*y[x]
self.base_dmg = (12 + current_new_game_plus*2) + (2 + current_new_game_plus)*y[x] self.base_dmg = (12 + current_new_game_plus*2) + (2 + current_new_game_plus)*y[x]
self.base_mvspd = 35 + 1.5*y[x] self.base_mvspd = 35 + 1.5*y[x]
@ -261,6 +292,15 @@ function Unit:calculate_stats(first_run)
else else
local x = self.level local x = self.level
local y = {0, 1, 3, 3, 4, 6, 5, 6, 9, 7, 8, 12, 10, 11, 15, 12, 13, 18, 16, 17, 21, 17, 20, 24, 25} local y = {0, 1, 3, 3, 4, 6, 5, 6, 9, 7, 8, 12, 10, 11, 15, 12, 13, 18, 16, 17, 21, 17, 20, 24, 25}
local k = 1.2
for i = 26, 5000 do
local n = i % 25
if n == 0 then
n = 25
k = k + 0.2
end
y[i] = y[n]*k
end
self.base_hp = 22 + (current_new_game_plus*3) + (15 + current_new_game_plus*2.7)*y[x] self.base_hp = 22 + (current_new_game_plus*3) + (15 + current_new_game_plus*2.7)*y[x]
self.base_dmg = (4 + current_new_game_plus*1.15) + (2 + current_new_game_plus*0.83)*y[x] self.base_dmg = (4 + current_new_game_plus*1.15) + (2 + current_new_game_plus*0.83)*y[x]
self.base_mvspd = 70 + 3*y[x] self.base_mvspd = 70 + 3*y[x]
@ -277,6 +317,15 @@ function Unit:calculate_stats(first_run)
elseif self:is(EnemyCritter) or self:is(Critter) then elseif self:is(EnemyCritter) or self:is(Critter) then
local x = self.level local x = self.level
local y = {0, 1, 3, 3, 4, 6, 5, 6, 9, 7, 8, 12, 10, 11, 15, 12, 13, 18, 16, 17, 21, 17, 20, 24, 25} local y = {0, 1, 3, 3, 4, 6, 5, 6, 9, 7, 8, 12, 10, 11, 15, 12, 13, 18, 16, 17, 21, 17, 20, 24, 25}
local k = 1.2
for i = 26, 5000 do
local n = i % 25
if n == 0 then
n = 25
k = k + 0.2
end
y[i] = y[n]*k
end
self.base_hp = 25 + 30*(y[x] or 1) self.base_hp = 25 + 30*(y[x] or 1)
self.base_dmg = 10 + 3*(y[x] or 1) self.base_dmg = 10 + 3*(y[x] or 1)
self.base_mvspd = 60 + 3*(y[x] or 1) self.base_mvspd = 60 + 3*(y[x] or 1)

View File

@ -3384,7 +3384,7 @@ function Gold:update(dt)
self:update_game_object(dt) self:update_game_object(dt)
self.r = self:get_angle() self.r = self:get_angle()
if main.current.player.magnetism then if main.current.player.magnetism and self.magnet_sensor then
local players = self:get_objects_in_shape(self.magnet_sensor, {Player}) local players = self:get_objects_in_shape(self.magnet_sensor, {Player})
if players and #players > 0 then if players and #players > 0 then
local x, y = 0, 0 local x, y = 0, 0

View File

@ -111,8 +111,8 @@ end
function Star:update(dt) function Star:update(dt)
self:update_game_object(dt) self:update_game_object(dt)
self.x = self.x + self.v*math.cos(-math.pi/4) self.x = self.x + self.v*math.cos(-math.pi/4)*dt
self.y = self.y + self.v*math.sin(-math.pi/4) self.y = self.y + self.v*math.sin(-math.pi/4)*dt
self.vr = self.vr + self.dvr*dt self.vr = self.vr + self.dvr*dt
if self.x > gw + 64 then self.dead = true end if self.x > gw + 64 then self.dead = true end
end end
@ -569,7 +569,7 @@ global_text_tags = {
cbyc3 = TextTag{init = function(c, i, text) cbyc3 = TextTag{init = function(c, i, text)
c.color = invisible c.color = invisible
text.t:after((i-1)*0.05, function() text.t:after((i-1)*0.025, function()
c.color = bg[10] c.color = bg[10]
end) end)
end, draw = function(c, i, text) end, draw = function(c, i, text)

14
todo
View File

@ -42,12 +42,12 @@ Loop Update
Saboteur -> Bomber (builder, nuker): plants a static bomb, when it explodes it deals 2X AoE damage, Lv.3 effect: 100% increased bomb area and damage Saboteur -> Bomber (builder, nuker): plants a static bomb, when it explodes it deals 2X AoE damage, Lv.3 effect: 100% increased bomb area and damage
Hunter (builder, ranger, forcer): shoots a projectile that has 20% chance to spawn a pet, Lv.3 effect: spawns 3 pets instead Hunter (builder, ranger, forcer): shoots a projectile that has 20% chance to spawn a pet, Lv.3 effect: spawns 3 pets instead
Looping Looping
Change end screen * Change end screen
Loop button on end screen * Loop button on end screen
Looping lets you continue with the current snake until you die * Looping lets you continue with the current snake until you die
Difficulty is increased according to the formula for levels 25+ * Difficulty is increased according to the formula for levels 25+
Snake size goes up by 1 every loop, up to 12 * Snake size goes up by 1 every loop, up to 12
Don't offer items if item slots are full * Don't offer items if at maximum items
QoL QoL
Increase item choice slots to 4 Increase item choice slots to 4
Add option for mouse cursor to always be visible Add option for mouse cursor to always be visible
@ -55,8 +55,8 @@ Loop Update
Add visuals divine intervention, fairy buff Add visuals divine intervention, fairy buff
warrior attack range warrior attack range
barbarian jugg attack barbarian jugg attack
Items on end screen
Party + items on death screen Party + items on death screen
* Items on end screen
* Items on passive screen * Items on passive screen
* Selling items * Selling items
* Decreased sound effect volume for shoot 5 * Decreased sound effect volume for shoot 5