Save mid-run
parent
023cf595fe
commit
2a240d6f57
|
@ -333,6 +333,7 @@ function Arena:update(dt)
|
||||||
}
|
}
|
||||||
max_units = 7 + new_game_plus
|
max_units = 7 + new_game_plus
|
||||||
main:add(BuyScreen'buy_screen')
|
main:add(BuyScreen'buy_screen')
|
||||||
|
system.save_run(0, gold, {}, passives, run_passive_pool_by_tiers)
|
||||||
main:go_to('buy_screen', 0, {}, passives)
|
main:go_to('buy_screen', 0, {}, passives)
|
||||||
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
||||||
end}
|
end}
|
||||||
|
@ -430,6 +431,7 @@ function Arena:update(dt)
|
||||||
}
|
}
|
||||||
max_units = 7 + new_game_plus
|
max_units = 7 + new_game_plus
|
||||||
main:add(BuyScreen'buy_screen')
|
main:add(BuyScreen'buy_screen')
|
||||||
|
system.save_run(0, gold, {}, passives, run_passive_pool_by_tiers)
|
||||||
main:go_to('buy_screen', 0, {}, passives)
|
main:go_to('buy_screen', 0, {}, passives)
|
||||||
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
||||||
end
|
end
|
||||||
|
@ -525,6 +527,7 @@ function Arena:quit()
|
||||||
}
|
}
|
||||||
max_units = 7 + new_game_plus
|
max_units = 7 + new_game_plus
|
||||||
main:add(BuyScreen'buy_screen')
|
main:add(BuyScreen'buy_screen')
|
||||||
|
system.save_run(0, gold, {}, passives, run_passive_pool_by_tiers)
|
||||||
main:go_to('buy_screen', 0, {}, passives)
|
main:go_to('buy_screen', 0, {}, passives)
|
||||||
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
||||||
end}
|
end}
|
||||||
|
@ -801,6 +804,7 @@ function Arena:die()
|
||||||
}
|
}
|
||||||
max_units = 7 + new_game_plus
|
max_units = 7 + new_game_plus
|
||||||
main:add(BuyScreen'buy_screen')
|
main:add(BuyScreen'buy_screen')
|
||||||
|
system.save_run(0, gold, {}, passives, run_passive_pool_by_tiers)
|
||||||
main:go_to('buy_screen', 0, {}, passives)
|
main:go_to('buy_screen', 0, {}, passives)
|
||||||
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
||||||
end}
|
end}
|
||||||
|
@ -876,6 +880,7 @@ function Arena:transition()
|
||||||
TransitionEffect{group = main.transitions, x = self.player.x, y = self.player.y, color = self.color, transition_action = function(t)
|
TransitionEffect{group = main.transitions, x = self.player.x, y = self.player.y, color = self.color, transition_action = function(t)
|
||||||
slow_amount = 1
|
slow_amount = 1
|
||||||
main:add(BuyScreen'buy_screen')
|
main:add(BuyScreen'buy_screen')
|
||||||
|
system.save_run(self.level, gold, self.units, passives, run_passive_pool_by_tiers)
|
||||||
main:go_to('buy_screen', self.level, self.units, passives)
|
main:go_to('buy_screen', self.level, self.units, passives)
|
||||||
t.t:after(0.1, function()
|
t.t:after(0.1, function()
|
||||||
t.text:set_text({
|
t.text:set_text({
|
||||||
|
|
|
@ -451,6 +451,7 @@ function RestartButton:update(dt)
|
||||||
max_units = 7 + new_game_plus
|
max_units = 7 + new_game_plus
|
||||||
system.save_state()
|
system.save_state()
|
||||||
main:add(BuyScreen'buy_screen')
|
main:add(BuyScreen'buy_screen')
|
||||||
|
system.save_run(0, gold, {}, passives, run_passive_pool_by_tiers)
|
||||||
main:go_to('buy_screen', 0, {}, passives)
|
main:go_to('buy_screen', 0, {}, passives)
|
||||||
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)}
|
||||||
end
|
end
|
||||||
|
|
|
@ -397,6 +397,8 @@ function table.tostring(t)
|
||||||
end
|
end
|
||||||
if str ~= "{" then return str:sub(1, -3) .. "}"
|
if str ~= "{" then return str:sub(1, -3) .. "}"
|
||||||
else return str .. "}" end
|
else return str .. "}" end
|
||||||
|
elseif type(t) == "string" then
|
||||||
|
return '"' .. tostring(t) .. '"'
|
||||||
else return tostring(t) end
|
else return tostring(t) end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
|
@ -137,6 +137,20 @@ function system.load_state()
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function system.save_run(level, gold, units, passives, run_passive_pool_by_tiers)
|
||||||
|
local run = {level = level, gold = gold, units = units, passives = passives, run_passive_pool_by_tiers = run_passive_pool_by_tiers}
|
||||||
|
local str = "return " .. table.tostring(run)
|
||||||
|
love.filesystem.write("run.txt", str)
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
|
function system.load_run()
|
||||||
|
local chunk = love.filesystem.load("run.txt")
|
||||||
|
if chunk then return chunk()
|
||||||
|
else return {} end
|
||||||
|
end
|
||||||
|
|
||||||
|
|
||||||
function system.get_main_directory()
|
function system.get_main_directory()
|
||||||
return love.filesystem.getSource()
|
return love.filesystem.getSource()
|
||||||
end
|
end
|
||||||
|
|
13
main.lua
13
main.lua
|
@ -1157,15 +1157,16 @@ function init()
|
||||||
[25] = {'speed_booster', 'exploder', 'headbutter', 'tank', 'shooter', 'spawner'},
|
[25] = {'speed_booster', 'exploder', 'headbutter', 'tank', 'shooter', 'spawner'},
|
||||||
}
|
}
|
||||||
|
|
||||||
run_passive_pool_by_tiers = {
|
local run = system.load_run()
|
||||||
|
run_passive_pool_by_tiers = run.passive_pool_by_tiers or {
|
||||||
[1] = { 'wall_echo', 'wall_rider', 'centipede', 'temporal_chains', 'amplify', 'amplify_x', 'ballista', 'ballista_x', 'blunt_arrow', 'berserking', 'unwavering_stance', 'assassination', 'unleash', 'blessing',
|
[1] = { 'wall_echo', 'wall_rider', 'centipede', 'temporal_chains', 'amplify', 'amplify_x', 'ballista', 'ballista_x', 'blunt_arrow', 'berserking', 'unwavering_stance', 'assassination', 'unleash', 'blessing',
|
||||||
'hex_master', 'force_push', 'spawning_pool'},
|
'hex_master', 'force_push', 'spawning_pool'},
|
||||||
[2] = {'ouroboros_technique_r', 'ouroboros_technique_l', 'intimidation', 'vulnerability', 'resonance', 'point_blank', 'longshot', 'explosive_arrow', 'chronomancy', 'awakening', 'ultimatum', 'echo_barrage',
|
[2] = {'ouroboros_technique_r', 'ouroboros_technique_l', 'intimidation', 'vulnerability', 'resonance', 'point_blank', 'longshot', 'explosive_arrow', 'chronomancy', 'awakening', 'ultimatum', 'echo_barrage',
|
||||||
'reinforce', 'payback', 'whispers_of_doom', 'heavy_impact', 'immolation', 'call_of_the_void'},
|
'reinforce', 'payback', 'whispers_of_doom', 'heavy_impact', 'immolation', 'call_of_the_void'},
|
||||||
[3] = {'divine_machine_arrow', 'divine_punishment', 'flying_daggers', 'crucio', 'hive', 'void_rift'},
|
[3] = {'divine_machine_arrow', 'divine_punishment', 'flying_daggers', 'crucio', 'hive', 'void_rift'},
|
||||||
}
|
}
|
||||||
gold = 2
|
gold = run.gold or 2
|
||||||
passives = {}
|
passives = run.passives or {}
|
||||||
steam.userStats.requestCurrentStats()
|
steam.userStats.requestCurrentStats()
|
||||||
new_game_plus = state.new_game_plus or 0
|
new_game_plus = state.new_game_plus or 0
|
||||||
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
|
||||||
|
@ -1173,10 +1174,12 @@ function init()
|
||||||
|
|
||||||
main = Main()
|
main = Main()
|
||||||
|
|
||||||
-- main_song_instance = _G[random:table{'song1', 'song2', 'song3', 'song4', 'song5'}]:play{volume = 0.5}
|
if run.level ~= 0 then
|
||||||
|
main_song_instance = _G[random:table{'song1', 'song2', 'song3', 'song4', 'song5'}]:play{volume = 0.5}
|
||||||
|
end
|
||||||
|
|
||||||
main:add(BuyScreen'buy_screen')
|
main:add(BuyScreen'buy_screen')
|
||||||
main:go_to('buy_screen', 0, {}, passives)
|
main:go_to('buy_screen', run.level or 0, run.units or {}, passives)
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
main:add(Arena'arena')
|
main:add(Arena'arena')
|
||||||
|
|
26
todo
26
todo
|
@ -1,15 +1,11 @@
|
||||||
* Lich buff -> increased projectile speed
|
Curser buff - change all cursers to trigger like the infestor does and for the effects to be on-death effects
|
||||||
* Highlander buff -> increased area size
|
Forcer buff - change all forcers to have a bigger area or to trigger their effects via projectiles (like the hunter)
|
||||||
* Change Cannoneer's Lv.3 to 7 repeats, and each repeat should be slightly slower *
|
Conjurer buff - buff saboteur, buff engineer
|
||||||
* Wizard chains 3 times
|
Vagrant buff - increase "active set" bonuses
|
||||||
* Saboteur area fix
|
Save runs
|
||||||
* NG+ snake size fix
|
Move units
|
||||||
* Change Divine Machine Arrow to pierce 4 times
|
Endless mode
|
||||||
* Rogue buff -> chance to crit 15/30
|
Lock shop button
|
||||||
* Psyker buff -> 10% bonus
|
Harder difficulty on NG+0
|
||||||
* Concentrated Fire change to "chance to create secondary AoEs on AoE hit" (like Cannoneer's Lv.3)
|
Lower difficulty on NG+4/5
|
||||||
* Decreased difficulty slightly for NG+ levels
|
Increase boss HP on levels 24 and 25
|
||||||
* Remove repeat passives
|
|
||||||
* restart button on end game
|
|
||||||
* fixed interest above 5
|
|
||||||
* fixed fast passive buy bug
|
|
||||||
|
|
Loading…
Reference in New Issue