diff --git a/buy_screen.lua b/buy_screen.lua index a448e47..e62c88f 100644 --- a/buy_screen.lua +++ b/buy_screen.lua @@ -78,7 +78,7 @@ function BuyScreen:on_enter(from, level, units, passives) if not self.first_screen then RerollButton{group = self.main, x = 150, y = 18, parent = self} end GoButton{group = self.main, x = gw - 90, y = gh - 20, parent = self} - self.tutorial_button = Button{group = self.main, x = gw/2 + 136, y = 18, button_text = '?', fg_color = 'bg10', bg_color = 'bg', action = function() + self.tutorial_button = Button{group = self.main, x = gw/2 + 134, y = 18, button_text = '?', fg_color = 'bg10', bg_color = 'bg', action = function() self.in_tutorial = true self.title_text = Text2{group = self.tutorial, x = gw/2, y = 35, lines = {{text = '[fg]WELCOME TO SNKRX!', font = fat_font, alignment = 'center'}}} self.tutorial_text = Text2{group = self.tutorial, x = 228, y = 160, lines = { @@ -113,9 +113,19 @@ function BuyScreen:on_enter(from, level, units, passives) self:quit_tutorial() end) end} + end, mouse_enter = function(b) + b.info_text = InfoText{group = main.current.ui, force_update = true} + b.info_text:activate({ + {text = '[fg]tutorial', font = pixul_font, alignment = 'center'}, + }, nil, nil, nil, nil, 16, 4, nil, 2) + b.info_text.x, b.info_text.y = b.x, b.y + 16 + end, mouse_exit = function(b) + b.info_text:deactivate() + b.info_text.dead = true + b.info_text = nil end} - self.restart_button = Button{group = self.ui, x = gw/2 + 154, y = 18, force_update = true, button_text = 'R', fg_color = 'bg10', bg_color = 'bg', action = function(b) + self.restart_button = Button{group = self.ui, x = gw/2 + 156, y = 18, force_update = true, button_text = 'R', fg_color = 'bg10', bg_color = 'bg', action = function(b) self.transitioning = true ui_transition2:play{pitch = random:float(0.95, 1.05), volume = 0.5} ui_switch2:play{pitch = random:float(0.95, 1.05), volume = 0.5} @@ -137,6 +147,16 @@ function BuyScreen:on_enter(from, level, units, passives) system.save_run() main:go_to('buy_screen', 0, {}, passives) end, text = Text({{text = '[wavy, bg]restarting...', font = pixul_font, alignment = 'center'}}, global_text_tags)} + end, mouse_enter = function(b) + b.info_text = InfoText{group = main.current.ui, force_update = true} + b.info_text:activate({ + {text = '[fg]restart run', font = pixul_font, alignment = 'center'}, + }, nil, nil, nil, nil, 16, 4, nil, 2) + b.info_text.x, b.info_text.y = b.x, b.y + 16 + end, mouse_exit = function(b) + b.info_text:deactivate() + b.info_text.dead = true + b.info_text = nil end} trigger:tween(1, main_song_instance, {volume = 0.2}, math.linear) @@ -578,6 +598,7 @@ function Button:on_mouse_enter() self.selected = true self.text:set_text{{text = '[fgm5]' .. self.button_text, font = pixul_font, alignment = 'center'}} self.spring:pull(0.2, 200, 10) + if self.mouse_enter then self:mouse_enter() end end @@ -585,6 +606,7 @@ function Button:on_mouse_exit() if main.current.in_credits and not self.credits_button then return end self.text:set_text{{text = '[' .. self.fg_color .. ']' .. self.button_text, font = pixul_font, alignment = 'center'}} self.selected = false + if self.mouse_exit then self:mouse_exit() end end diff --git a/enemies.lua b/enemies.lua index 602792c..d34cf4a 100644 --- a/enemies.lua +++ b/enemies.lua @@ -97,7 +97,7 @@ function Seeker:init(args) enemy:hit(10000) shoot1:play{pitch = random:float(0.95, 1.05), volume = 0.4} local n = 8 + new_game_plus*2 - for i = 1, n do EnemyProjectile{group = main.current.main, x = enemy.x, y = enemy.y, color = blue[0], r = (i-1)*math.pi/(n/2), v = 150 + 5*enemy.level, dmg = (1 + 0.1*new_game_plus)*enemy.dmg} end + for i = 1, n do EnemyProjectile{group = main.current.main, x = enemy.x, y = enemy.y, color = blue[0], r = (i-1)*math.pi/(n/2), v = 120 + 5*enemy.level, dmg = (1 + 0.1*new_game_plus)*enemy.dmg} end end end) diff --git a/main.lua b/main.lua index c7eb3a0..5b5ca46 100644 --- a/main.lua +++ b/main.lua @@ -470,7 +470,7 @@ function init() ['launcher'] = function(lvl) return '[fg]all nearby enemies are pushed after [yellow]4[fg] seconds, taking [yellow]' .. 2*get_character_stat('launcher', lvl, 'dmg') .. '[fg] damage on wall hit' end, ['jester'] = function(lvl) return "[fg]curses [yellow]5[fg] nearby enemies for [yellow]6[fg] seconds, they will explode into [yellow]3[fg] knives on death" end, ['assassin'] = function(lvl) return '[fg]throws a piercing knife that deals [yellow]' .. get_character_stat('assassin', lvl, 'dmg') .. '[fg] damage + [yellow]' .. - get_character_stat('assassin', lvl, 'dmg')/2 .. '[fg] damage per second for [yellow]3[fg] seconds' end, + get_character_stat('assassin', lvl, 'dmg')/2 .. '[fg] damage per second' end, ['host'] = function(lvl) return '[fg]periodically spawn [yellow]1[fg] small critter' end, ['carver'] = function(lvl) return '[fg]carves a statue that periodically heals [yellow]1[fg] unit for [yellow]20%[fg] max HP if in range' end, ['bane'] = function(lvl) return '[fg]curses [yellow]5[fg] nearby enemies for [yellow]6[fg] seconds, they will create small void rifts on death' end, @@ -610,7 +610,7 @@ function init() ['barrager'] = function() return '[fg]every 3rd attack the barrage shoots [yellow]15[fg] projectiles and they push harder' end, ['highlander'] = function() return '[fg]quickly repeats the attack [yellow]3[fg] times' end, ['fairy'] = function() return '[fg]heals [yellow]2[fg] units instead and grants them an additional [yellow]100%[fg] attack speed' end, - ['priest'] = function() return '[fg]at the start of the round pick [yellow]3[fg] units at random and grants them a buff that prevents death once' end, + ['priest'] = function() return '[fg]picks [yellow]3[fg] units at random and grants them a buff that prevents death once' end, ['infestor'] = function() return '[fg][yellow]triples[fg] the number of critters released' end, ['flagellant'] = function() return '[fg]deals [yellow]' .. 2*get_character_stat('flagellant', 3, 'dmg') .. '[fg] damage to all allies and grants [yellow]+12%[fg] damage to all allies per cast' end, } @@ -654,7 +654,7 @@ function init() ['barrager'] = function() return '[light_bg]every 3rd attack the barrage shoots 15 projectiles and they push harder' end, ['highlander'] = function() return '[light_bg]quickly repeats the attack 3 times' end, ['fairy'] = function() return '[light_bg]heals 2 units instead and grants them an additional 100% attack speed' end, - ['priest'] = function() return '[light_bg]at the start of the round pick 3 units at random and grants them a buff that prevents death once' end, + ['priest'] = function() return '[light_bg]picks 3 units at random and grants them a buff that prevents death once' end, ['infestor'] = function() return '[light_bg]triples the number of critters released' end, ['flagellant'] = function() return '[light_bg]deals ' .. 2*get_character_stat('flagellant', 3, 'dmg') .. ' damage to all allies and grants +12% damage to all allies per cast' end, } diff --git a/todo b/todo index 5081618..762f496 100644 --- a/todo +++ b/todo @@ -1,22 +1,4 @@ -* Curser buff - change all cursers to trigger like the infestor does and for the effects to be on-death effects -* Forcer buff - buff juggernaut -* Conjurer buff - buff saboteur, buff engineer -* Vagrant buff - increase "active set" bonuses -* AoE nerf - Unleash 1%, rephrase it to more clear -* Cryomancer buff - double tick rate -* Save runs -* Move units -* Lock shop button -* Harder difficulty on NG+0 -* Increase boss HP on levels 24 and 25 -* Show next level in shop (also if elite or not) -* Restart run button on shop -* View synergy after beating game -* Option to turn off screen shake -* Option to show cooldowns on snake -* New game plus decrease button -* https://i.imgur.com/CLtk9nZ.png -* https://i.imgur.com/WWP8GBn.png -* https://i.imgur.com/AU3O0u9.png, https://i.imgur.com/UE78u7f.png -* https://i.imgur.com/5TquKsS.png -* https://i.imgur.com/XbtACuy.png <- probably the cause of most of those mysterious crashes and slow downs i havent been able to track down +Hide cursor during waves +Mouse follow control? +Bench - https://i.imgur.com/B1gNVKk.png +Item reroll for 10 gold