From 9e8b98a51d4b94345ffd9b301e3fda4a597b9171 Mon Sep 17 00:00:00 2001 From: a327ex Date: Sun, 4 Jul 2021 15:13:19 -0300 Subject: [PATCH] Loop update 5/5 --- arena.lua | 7 +++--- assets/media/loop_cover.png | Bin 0 -> 6223 bytes buy_screen.lua | 11 ++++++++-- enemies.lua | 18 ++++++++-------- engine/system.lua | 3 ++- main.lua | 42 ++++++++++++++++++++++++++++-------- mainmenu.lua | 1 + media.lua | 2 +- objects.lua | 28 ++++++++++++------------ todo | 2 +- 10 files changed, 74 insertions(+), 40 deletions(-) create mode 100644 assets/media/loop_cover.png diff --git a/arena.lua b/arena.lua index d73c037..59780c6 100644 --- a/arena.lua +++ b/arena.lua @@ -107,7 +107,7 @@ function Arena:on_enter(from, level, loop, units, passives, shop_level, shop_xp, -- self.level_1000_text2 = Text2{group = self.ui, x = gw/2, y = gh/2 + 64, lines = {{text = '[fg, wavy_mid]SNKRX', font = pixul_font, alignment = 'center'}}} -- Wall{group = self.main, vertices = math.to_rectangle_vertices(gw/2 - 0.45*self.level_1000_text.w, gh/2 - 0.3*self.level_1000_text.h, gw/2 + 0.45*self.level_1000_text.w, gh/2 - 3), snkrx = true, color = bg[-1]} - elseif self.level == 6 or self.level == 12 or self.level == 18 or self.level == 24 or self.level == 25 then + elseif (self.level - (25*self.loop)) % 6 == 0 or self.level % 25 == 0 then self.boss_level = true self.start_time = 3 self.t:after(1, function() @@ -222,7 +222,7 @@ function Arena:on_enter(from, level, loop, units, passives, shop_level, shop_xp, self.hfx:pull('condition2', 0.0625) self.t:after(0.5, function() if random:bool(self.level_to_distributed_enemies_chance[self.level]) then - local n = math.ceil((8 + (self.wave-1)*2)/7) + local n = math.ceil((8 + (self.wave+math.min(self.loop*6, 60)-1)*2)/7) for i = 1, n do self.t:after((i-1)*2, function() self:spawn_distributed_enemies() @@ -235,7 +235,7 @@ function Arena:on_enter(from, level, loop, units, passives, shop_level, shop_xp, local spawn_points = {left = {x = self.x1 + 32, y = gh/2}, middle = {x = gw/2, y = gh/2}, right = {x = self.x2 - 32, y = gh/2}} local p = spawn_points[spawn_type] SpawnMarker{group = self.effects, x = p.x, y = p.y} - self.t:after(1.125, function() self:spawn_n_enemies(p, nil, 8 + (self.wave-1)*2) end) + self.t:after(1.125, function() self:spawn_n_enemies(p, nil, 8 + (self.wave+math.min(self.loop*12, 200)-1)*2) end) end end) end, self.max_waves+1) @@ -982,6 +982,7 @@ function Arena:transition() self.shop_xp = 0 self.shop_level = self.shop_level + 1 end + if self.shop_level > 5 then self.shop_level = 5 end end slow_amount = 1 music_slow_amount = 1 diff --git a/assets/media/loop_cover.png b/assets/media/loop_cover.png new file mode 100644 index 0000000000000000000000000000000000000000..d3a00bc2d3063824d6f1e28c36ef6200a5369032 GIT binary patch literal 6223 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 ZrBL~83DedC3DhI##8HPM<%fI|{tY~Xr%?a^ literal 0 HcmV?d00001 diff --git a/buy_screen.lua b/buy_screen.lua index 5ed686c..0475a81 100644 --- a/buy_screen.lua +++ b/buy_screen.lua @@ -623,7 +623,14 @@ function Button:update(dt) end else if self.selected and input.m1.pressed then - self:action() + if self.action then + self:action() + end + end + if self.selected and input.m2.pressed then + if self.action_2 then + self:action_2() + end end end end @@ -1974,7 +1981,7 @@ function ClassIcon:on_mouse_enter() local i, j, k, owned = class_set_numbers[self.class](self.units) self.info_text = InfoText{group = main.current.ui} self.info_text:activate({ - {text = '[' .. class_color_strings[self.class] .. ']' .. self.class:capitalize() .. '[fg] - owned: [yellow]' .. owned, font = pixul_font, alignment = 'center', height_multiplier = 1.25}, + {text = '[' .. class_color_strings[self.class] .. ']' .. (self.class == 'conjurer' and 'Builder' or self.class:capitalize()) .. '[fg] - owned: [yellow]' .. owned, font = pixul_font, alignment = 'center', height_multiplier = 1.25}, {text = class_descriptions[self.class]((k and (owned >= k and 3)) or (owned >= j and 2) or (owned >= i and 1) or 0), font = pixul_font, alignment = 'center'}, }, nil, nil, nil, nil, 16, 4, nil, 2) self.info_text.x, self.info_text.y = gw/2, gh/2 + 10 diff --git a/enemies.lua b/enemies.lua index 3256a78..68ba218 100644 --- a/enemies.lua +++ b/enemies.lua @@ -26,7 +26,7 @@ function Seeker:init(args) HitCircle{group = main.current.effects, x = self.x, y = self.y, rs = 6, color = green[0], duration = 0.1} for _, enemy in ipairs(enemies) do LightningLine{group = main.current.effects, src = self, dst = enemy, color = green[0]} - enemy:speed_boost(3 + self.level*0.025 + current_new_game_plus*0.1) + enemy:speed_boost(3 + self.level*0.015 + current_new_game_plus*0.1) end end end, nil, nil, 'boss_attack') @@ -154,7 +154,7 @@ function Seeker:init(args) HitCircle{group = main.current.effects, x = self.x, y = self.y, rs = 6, color = green[0], duration = 0.1} for _, enemy in ipairs(enemies) do LightningLine{group = main.current.effects, src = self, dst = enemy, color = green[0]} - enemy:speed_boost(3 + self.level*0.025 + current_new_game_plus*0.1) + enemy:speed_boost(3 + self.level*0.015 + current_new_game_plus*0.1) end end end @@ -231,12 +231,12 @@ function Seeker:init(args) self.t:every({4, 6}, function() if self.silenced or self.barbarian_stunned then return end for i = 1, 3 do - self.t:after((1 - self.level*0.01)*0.15*(i-1), function() + self.t:after(math.max(1 - self.level*0.01, 0.25)*0.15*(i-1), function() shoot1:play{pitch = random:float(0.95, 1.05), volume = 0.1} self.hfx:use('hit', 0.25, 200, 10, 0.1) local r = self.r HitCircle{group = main.current.effects, x = self.x + 0.8*self.shape.w*math.cos(r), y = self.y + 0.8*self.shape.w*math.sin(r), rs = 6} - EnemyProjectile{group = main.current.main, x = self.x + 1.6*self.shape.w*math.cos(r), y = self.y + 1.6*self.shape.w*math.sin(r), color = fg[0], r = r, v = 140 + 3.5*self.level + 2*current_new_game_plus, + EnemyProjectile{group = main.current.main, x = self.x + 1.6*self.shape.w*math.cos(r), y = self.y + 1.6*self.shape.w*math.sin(r), color = fg[0], r = r, v = math.min(140 + 3.5*self.level + 2*current_new_game_plus, 300), dmg = (current_new_game_plus*0.05 + 1)*self.dmg, source = 'shooter'} end) end @@ -275,8 +275,8 @@ function Seeker:update(dt) if self.headbutt_charging or self.headbutting then self.buff_def_m = 3 end if self.speed_boosting then - local n = math.remap(love.timer.getTime() - self.speed_boosting, 0, (3 + 0.025*self.level + current_new_game_plus*0.1), 1, 0.5) - self.speed_boosting_mvspd_m = (3 + 0.025*self.level + 0.1*current_new_game_plus)*n + local n = math.remap(love.timer.getTime() - self.speed_boosting, 0, (3 + 0.015*self.level + current_new_game_plus*0.1), 1, 0.5) + self.speed_boosting_mvspd_m = (3 + 0.015*self.level + 0.1*current_new_game_plus)*n if not self.speed_booster and not self.exploder and not self.headbutter and not self.tank and not self.shooter and not self.spawner then self.color.r = math.remap(n, 1, 0.5, green[0].r, red[0].r) self.color.g = math.remap(n, 1, 0.5, green[0].g, red[0].g) @@ -295,7 +295,7 @@ function Seeker:update(dt) self.stun_dmg_m = (self.barbarian_stunned and 2 or 1) if self.shooter then - self.t:set_every_multiplier('shooter', (1 - self.level*0.02)) + self.t:set_every_multiplier('shooter', (1 - math.min(self.level*0.02, 0.25))) end if self.being_pushed then @@ -703,7 +703,7 @@ function Seeker:push(f, r, push_invulnerable) local n = 1 if self.tank then n = 0.7 end if self.boss then n = 0.2 end - if self.level == 25 and self.boss then n = 0.7 end + if self.level % 25 == 0 and self.boss then n = 0.7 end self.push_invulnerable = push_invulnerable self.push_force = n*f self.being_pushed = true @@ -817,7 +817,7 @@ function ExploderMine:init(args) HitCircle{group = main.current.effects, x = self.x, y = self.y} local n = math.floor(8 + current_new_game_plus*1.5) for i = 1, n do - EnemyProjectile{group = main.current.main, x = self.x, y = self.y, color = blue[0], r = (i-1)*math.pi/(n/2), v = 120 + 5*self.parent.level, dmg = 1.3*self.parent.dmg} + EnemyProjectile{group = main.current.main, x = self.x, y = self.y, color = blue[0], r = (i-1)*math.pi/(n/2), v = 120 + math.min(5*self.parent.level, 300), dmg = 1.3*self.parent.dmg} end self.dead = true end, 'mine_count') diff --git a/engine/system.lua b/engine/system.lua index ef9d425..27dd0b1 100644 --- a/engine/system.lua +++ b/engine/system.lua @@ -138,7 +138,8 @@ end function system.save_run(level, loop, gold, units, passives, shop_level, shop_xp, run_passive_pool, 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 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, + current_new_game_plus = current_new_game_plus} local str = "return " .. table.tostring(run) love.filesystem.write("run_v4.txt", str) end diff --git a/main.lua b/main.lua index b5639c9..6a9c0c5 100644 --- a/main.lua +++ b/main.lua @@ -869,7 +869,7 @@ function init() ['jester'] = function() return '[light_bg]curses 6 enemies and all knives seek enemies and pierce 2 times' end, ['assassin'] = function() return '[light_bg]poison inflicted from crits deals 8x damage' end, ['host'] = function() return '[light_bg]+100% critter spawn rate and spawn 2 critters instead' end, - ['carver'] = function() return '[light_bg]carves a tree that heals twice as fast, in a bigger area, and heals 2 units instead' end, + ['carver'] = function() return '[light_bg]carves a tree that creates healing orbs twice as fast' end, ['bane'] = function() return "[light_bg]100% increased area for bane's void rifts" end, ['psykino'] = function() return '[light_bg]enemies take ' .. 4*get_character_stat('psykino', 3, 'dmg') .. ' damage and are pushed away when the area expires' end, ['barrager'] = function() return '[light_bg]every 3rd attack the barrage shoots 15 projectiles and they push harder' end, @@ -1581,15 +1581,19 @@ function init() [25] = 'randomizer', } - local bosses = {'speed_booster', 'exploder', 'swarmer', 'forcer'} + local bosses = {'speed_booster', 'exploder', 'swarmer', 'forcer', 'randomizer'} + level_to_boss[31] = 'speed_booster' + level_to_boss[37] = 'exploder' + level_to_boss[43] = 'swarmer' + level_to_boss[49] = 'forcer' + level_to_boss[50] = 'randomizer' + local i = 31 local k = 1 - for i = 30, 5000, 6 do + while i < 5000 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' + if k == 5 then i = i + 1 else i = i + 6 end + if k == 6 then k = 1 end end level_to_elite_spawn_types = { @@ -1940,7 +1944,17 @@ function open_options(self) b.selected = true ui_switch1:play{pitch = random:float(0.95, 1.05), volume = 0.5} sfx.volume = sfx.volume + 0.1 - if sfx.volume > 1 then sfx.volume = 0 end + if sfx.volume > 1 then sfx.volume = 1 end + state.sfx_volume = sfx.volume + b:set_text('sfx volume: ' .. tostring((state.sfx_volume or 0.5)*10)) + end, + action_2 = function(b) + ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5} + b.spring:pull(0.2, 200, 10) + b.selected = true + ui_switch1:play{pitch = random:float(0.95, 1.05), volume = 0.5} + sfx.volume = sfx.volume - 0.1 + if sfx.volume <= 0 then sfx.volume = 0 end state.sfx_volume = sfx.volume b:set_text('sfx volume: ' .. tostring((state.sfx_volume or 0.5)*10)) end} @@ -1952,7 +1966,17 @@ function open_options(self) b.selected = true ui_switch1:play{pitch = random:float(0.95, 1.05), volume = 0.5} music.volume = music.volume + 0.1 - if music.volume > 1 then music.volume = 0 end + if music.volume > 1 then music.volume = 1 end + state.music_volume = music.volume + b:set_text('music volume: ' .. tostring((state.music_volume or 0.5)*10)) + end, + action_2 = function(b) + ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5} + b.spring:pull(0.2, 200, 10) + b.selected = true + ui_switch1:play{pitch = random:float(0.95, 1.05), volume = 0.5} + music.volume = music.volume - 0.1 + if music.volume <= 0 then music.volume = 0 end state.music_volume = music.volume b:set_text('music volume: ' .. tostring((state.music_volume or 0.5)*10)) end} diff --git a/mainmenu.lua b/mainmenu.lua index 95fab92..433bdac 100644 --- a/mainmenu.lua +++ b/mainmenu.lua @@ -100,6 +100,7 @@ function MainMenu:on_enter(from) gold = run.gold or 3 passives = run.passives or {} locked_state = run.locked_state + current_new_game_plus = run.current_new_game_plus or current_new_game_plus or 0 system.save_state() main:add(BuyScreen'buy_screen') 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) diff --git a/media.lua b/media.lua index 2b113d9..0252553 100644 --- a/media.lua +++ b/media.lua @@ -14,7 +14,7 @@ function Media:on_enter(from) graphics.set_background_color(blue[0]) Text2{group = self.ui, x = gw/2, y = gh/2, lines = { {text = '[fg]SNKRX', font = fat_font, alignment = 'center', height_offset = -15}, - {text = '[fg]orb update', font = pixul_font, alignment = 'center'}, + {text = '[fg]loop update', font = pixul_font, alignment = 'center'}, }} end diff --git a/objects.lua b/objects.lua index 57d4f93..f449af4 100644 --- a/objects.lua +++ b/objects.lua @@ -234,34 +234,34 @@ function Unit:calculate_stats(first_run) 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 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 + local k = 1.07 + for i = 26, 50 do y[i] = y2[i-25] end for i = 51, 5000 do local n = i % 25 if n == 0 then n = 25 - k = k + 0.1 + k = k + 0.07 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_dmg = (12 + current_new_game_plus*2) + (2 + current_new_game_plus)*y[x] self.base_mvspd = 35 + 1.5*y[x] - if x == 25 then + if x % 25 == 0 then self.base_dmg = (12 + current_new_game_plus*2) + (1.25 + current_new_game_plus)*y[x] self.base_mvspd = 35 + 1.1*y[x] end else 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 k = 1.2 + local k = 1.07 for i = 26, 5000 do local n = i % 25 if n == 0 then n = 25 - k = k + 0.2 + k = k + 0.07 end - y[i] = y[n]*k + y[i] = y[i-10]*k end self.base_hp = 25 + 16.5*y[x] self.base_dmg = 4.5 + 2.5*y[x] @@ -272,34 +272,34 @@ function Unit:calculate_stats(first_run) 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 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 + local k = 1.07 + for i = 26, 50 do y[i] = y2[i-25] end for i = 51, 5000 do local n = i % 25 if n == 0 then n = 25 - k = k + 0.1 + k = k + 0.07 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_dmg = (12 + current_new_game_plus*2) + (2 + current_new_game_plus)*y[x] self.base_mvspd = 35 + 1.5*y[x] - if x == 25 then + if x % 25 == 0 then self.base_dmg = (12 + current_new_game_plus*2) + (1.75 + 0.5*current_new_game_plus)*y[x] self.base_mvspd = 35 + 1.2*y[x] end else 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 k = 1.2 + local k = 1.07 for i = 26, 5000 do local n = i % 25 if n == 0 then n = 25 - k = k + 0.2 + k = k + 0.07 end - y[i] = y[n]*k + y[i] = y[i-10]*k end 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] diff --git a/todo b/todo index 8e18e6f..b3647b6 100644 --- a/todo +++ b/todo @@ -51,7 +51,7 @@ Loop Update * Snake size goes up by 1 every loop, up to 12 * Don't offer items if at maximum items QoL - Default to mouse controls + * Right click goes down on volume buttons * Show cooldown on elite attack * Added visuals for divine intervention and fairy buffs * Increased item choice slots to 4