diff --git a/arena.lua b/arena.lua index 42f4537..e11b0ef 100644 --- a/arena.lua +++ b/arena.lua @@ -821,52 +821,64 @@ function Arena:create_credits() system.open_url(url) end + self.close_button = Button{group = self.credits, x = gw - 20, y = 20, button_text = 'x', bg_color = 'bg', fg_color = 'bg10', credits_button = true, action = function() + trigger:after(0.01, function() + self.in_credits = false + if self.credits_button then self.credits_button:on_mouse_exit() end + for _, object in ipairs(self.credits.objects) do + object.dead = true + end + self.credits:update(0) + end) + end} + self.in_credits = true Text2{group = self.credits, x = 60, y = 20, lines = {{text = '[bg10]main dev: ', font = pixul_font}}} Button{group = self.credits, x = 117, y = 20, button_text = 'a327ex', fg_color = 'bg10', bg_color = 'bg', credits_button = true, action = function(b) open_url(b, 'https://store.steampowered.com/dev/a327ex/') end} - Text2{group = self.credits, x = 60, y = 50, lines = {{text = '[blue]code: ', font = pixul_font}}} - Button{group = self.credits, x = 102, y = 50, button_text = 'love2d', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://love2d.org') end} - Button{group = self.credits, x = 159, y = 50, button_text = 'bakpakin', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://github.com/bakpakin/binser') end} - Button{group = self.credits, x = 226, y = 50, button_text = 'davisdude', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://github.com/davisdude/mlib') end} - Button{group = self.credits, x = 295, y = 50, button_text = 'tesselode', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://github.com/tesselode/ripple') end} - Button{group = self.credits, x = 365, y = 50, button_text = 'Davidobot', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://github.com/Davidobot') end} - Text2{group = self.credits, x = 60, y = 80, lines = {{text = '[green]music: ', font = pixul_font}}} - Button{group = self.credits, x = 100, y = 80, button_text = 'kubbi', fg_color = 'greenm5', bg_color = 'green', credits_button = true, action = function(b) open_url(b, 'https://kubbimusic.com/album/ember') end} - Text2{group = self.credits, x = 60, y = 110, lines = {{text = '[yellow]sounds: ', font = pixul_font}}} - Button{group = self.credits, x = 135, y = 110, button_text = 'sidearm studios', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) + Text2{group = self.credits, x = 60, y = 50, lines = {{text = '[bg10]mobile: ', font = pixul_font}}} + Button{group = self.credits, x = 144, y = 50, button_text = 'David Khachaturov', fg_color = 'bg10', bg_color = 'bg', credits_button = true, action = function(b) open_url(b, 'https://davidobot.net/') end} + Text2{group = self.credits, x = 60, y = 80, lines = {{text = '[blue]libraries: ', font = pixul_font}}} + Button{group = self.credits, x = 113, y = 80, button_text = 'love2d', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://love2d.org') end} + Button{group = self.credits, x = 170, y = 80, button_text = 'bakpakin', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://github.com/bakpakin/binser') end} + Button{group = self.credits, x = 237, y = 80, button_text = 'davisdude', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://github.com/davisdude/mlib') end} + Button{group = self.credits, x = 306, y = 80, button_text = 'tesselode', fg_color = 'bluem5', bg_color = 'blue', credits_button = true, action = function(b) open_url(b, 'https://github.com/tesselode/ripple') end} + Text2{group = self.credits, x = 60, y = 110, lines = {{text = '[green]music: ', font = pixul_font}}} + Button{group = self.credits, x = 100, y = 110, button_text = 'kubbi', fg_color = 'greenm5', bg_color = 'green', credits_button = true, action = function(b) open_url(b, 'https://kubbimusic.com/album/ember') end} + Text2{group = self.credits, x = 60, y = 140, lines = {{text = '[yellow]sounds: ', font = pixul_font}}} + Button{group = self.credits, x = 135, y = 140, button_text = 'sidearm studios', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) open_url(b, 'https://sidearm-studios.itch.io/ultimate-sound-fx-bundle') end} - Button{group = self.credits, x = 217, y = 110, button_text = 'justinbw', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) + Button{group = self.credits, x = 217, y = 140, button_text = 'justinbw', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) open_url(b, 'https://freesound.org/people/JustinBW/sounds/80921/') end} - Button{group = self.credits, x = 279, y = 110, button_text = 'jcallison', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) + Button{group = self.credits, x = 279, y = 140, button_text = 'jcallison', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) open_url(b, 'https://freesound.org/people/jcallison/sounds/258269/') end} - Button{group = self.credits, x = 342, y = 110, button_text = 'hybrid_v', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) + Button{group = self.credits, x = 342, y = 140, button_text = 'hybrid_v', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) open_url(b, 'https://freesound.org/people/Hybrid_V/sounds/321215/') end} - Button{group = self.credits, x = 427, y = 110, button_text = 'womb_affliction', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) + Button{group = self.credits, x = 427, y = 140, button_text = 'womb_affliction', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) open_url(b, 'https://freesound.org/people/womb_affliction/sounds/376532/') end} - Button{group = self.credits, x = 106, y = 130, button_text = 'bajko', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) + Button{group = self.credits, x = 106, y = 160, button_text = 'bajko', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) open_url(b, 'https://freesound.org/people/bajko/sounds/399656/') end} - Button{group = self.credits, x = 157, y = 130, button_text = 'benzix2', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) + Button{group = self.credits, x = 157, y = 160, button_text = 'benzix2', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) open_url(b, 'https://freesound.org/people/benzix2/sounds/467951/') end} - Button{group = self.credits, x = 204, y = 130, button_text = 'lord', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) + Button{group = self.credits, x = 204, y = 160, button_text = 'lord', fg_color = 'yellowm5', bg_color = 'yellow', credits_button = true, action = function(b) open_url(b, 'https://store.steampowered.com/developer/T_TGames') end} - Text2{group = self.credits, x = 70, y = 160, lines = {{text = '[red]playtesters: ', font = pixul_font}}} - Button{group = self.credits, x = 130, y = 160, button_text = 'Jofer', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Text2{group = self.credits, x = 70, y = 190, lines = {{text = '[red]playtesters: ', font = pixul_font}}} + Button{group = self.credits, x = 130, y = 190, button_text = 'Jofer', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/JofersGames') end} - Button{group = self.credits, x = 172, y = 160, button_text = 'ekun', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Button{group = self.credits, x = 172, y = 190, button_text = 'ekun', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/ekunenuke') end} - Button{group = self.credits, x = 224, y = 160, button_text = 'cvisy_GN', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Button{group = self.credits, x = 224, y = 190, button_text = 'cvisy_GN', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/cvisy_GN') end} - Button{group = self.credits, x = 292, y = 160, button_text = 'Blue Fairy', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Button{group = self.credits, x = 292, y = 190, button_text = 'Blue Fairy', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/blue9fairy') end} - Button{group = self.credits, x = 362, y = 160, button_text = 'Phil Blank', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Button{group = self.credits, x = 362, y = 190, button_text = 'Phil Blank', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/PhilBlankGames') end} - Button{group = self.credits, x = 440, y = 160, button_text = 'DefineDoddy', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Button{group = self.credits, x = 440, y = 190, button_text = 'DefineDoddy', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/DefineDoddy') end} - Button{group = self.credits, x = 140, y = 180, button_text = 'Ge0force', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Button{group = self.credits, x = 140, y = 210, button_text = 'Ge0force', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/Ge0forceBE') end} - Button{group = self.credits, x = 193, y = 180, button_text = 'Vlad', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Button{group = self.credits, x = 193, y = 210, button_text = 'Vlad', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/thecryru') end} - Button{group = self.credits, x = 223, y = 180, button_text = 'F', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) + Button{group = self.credits, x = 223, y = 210, button_text = 'F', fg_color = 'redm5', bg_color = 'red', credits_button = true, action = function(b) open_url(b, 'https://twitter.com/notyps') end} end diff --git a/main.lua b/main.lua index 4ad41d6..c77fce9 100644 --- a/main.lua +++ b/main.lua @@ -13,9 +13,11 @@ function init() shared_init() input:bind('move_left', {'a', 'left', 'dpleft', 'm1'}) - input:bind('move_right', {'d', 'right', 'dpright', 'm2'}) + input:bind('move_right', {'d', 'e', 's', 'right', 'dpright', 'm2'}) + --[[ input:bind('move_up', {'w', 'up', 'dpup'}) input:bind('move_down', {'s', 'down', 'dpdown'}) + ]]-- input:bind('enter', {'space', 'return', 'fleft', 'fdown', 'fright'}) local s = {tags = {sfx}} diff --git a/player.lua b/player.lua index e0598b1..7c80673 100644 --- a/player.lua +++ b/player.lua @@ -1341,8 +1341,10 @@ function Player:update(dt) camera.y = camera.y + math.remap(vy, -100, 100, -8*vd, 8*vd)*dt if input.move_right.down then camera.r = math.lerp_angle_dt(0.01, dt, camera.r, math.pi/256) elseif input.move_left.down then camera.r = math.lerp_angle_dt(0.01, dt, camera.r, -math.pi/256) + --[[ elseif input.move_down.down then camera.r = math.lerp_angle_dt(0.01, dt, camera.r, math.pi/256) elseif input.move_up.down then camera.r = math.lerp_angle_dt(0.01, dt, camera.r, -math.pi/256) + ]]-- else camera.r = math.lerp_angle_dt(0.005, dt, camera.r, 0) end end end diff --git a/todo b/todo index 761cd17..d9d1639 100644 --- a/todo +++ b/todo @@ -1,63 +1,3 @@ -Orb Update - New items: - Healer: - * Blessing - +10/20/30% healing effectiveness - * Haste - +50% movement speed that decays over 4 seconds on healing orb pick up - * Divine Barrage - 10/20/30% chance to release a ricocheting barrage when picking up a healing orb - Psyker: - * Orbitism - 33/66/99% faster orb speed - * Psyker Orbs - +1/2/3 psyker orbs - * Psychosense - 33/66/99% increased orb range - Conjurer: - * Rearm - summons repeat their attacks once - * Taunt - 10/20/30% chance for summons to taunt nearby enemies on attack - * Summon Instability - summons explode when disappearing, dealing 100/150/200% damage - Changes: - * Magnetism - also attracts healing orbs - * Enchanted - 33/66/99% - Explorer: - * +15% attack speed and damage per active set to allied explorers - Healer rework: - * Enemies have a 8/16% chance to spawn healing orbs on death, orbs prioritize healing low health allies - * Cleric: creates 1 healing orb, Lv.3: creates 4 healing orbs - * Priest: creates 5 healing orbs - * Fairy: grants a random unit 100% attack speed for 6 seconds and creates 1 healing orb - Psyker rework: - * Create a piercing, damaging orb around each psyker, it inherits damage from its target - * Flagellant - Lv.3: 2X flagellant max HP and +12% damage to all allies per cast - * Psykeeper - creates a healing orb every time the psykeeper takes 20% of its max HP in damage, Lv.3: deal double the damage taken by the psykeeper to all enemies - Balance - * Changed cursers to add more curse targets as set bonuses - * Decreased item reroll cost to 5 - * Increased sage's attack speed - * Increased spawn marker time by 50% - * Decreased range and throw speed for tanks - * Decreased damage for blue and white enemies - * Increased gold rewards at levels 1-9 - * Prevent orange from killing multiple units at once - * Slightly decrease probability of special spawn at levels above 20 - * Exploder elite spawns mines instead of exploding enemies directly - * Decreased overall enemy damage at higher difficulties - QoL - * Lowered sound effect for gambler - * Options menu from buy screen - * Add main menu - * Title - * Snake DVD - * Arena run button - * Options button - * Quit button - * Soundtrack button - * Volume slider - * Party x/y - * Lv.3 effect on shop card - * Changed text saying "with at least n enchanters" to "if you have >=n enchanters" for 2 enchanter items - Bug fixes - * Fixed fullscreen button and general resolution issues - * Fixed barbarian stun just slowing and not stunning - * Fixed a bug with Call of the Void that caused its DoT damage bonus to become infinite - - Loop Update New items: General: @@ -77,19 +17,43 @@ Loop Update Warping Shots - X/Y/Z% chance for projectiles to ignore wall collisions and warp around the screen 1/2/3 times Culling Strike - instantly kill elites below 10/20/30% max HP Lightning Strike - X/Y/Z% chance for attacks to create chain lightning, dealing 60/80/100% damage and hitting 2/3/4 enemies + Psyker + Additional orbs will prefer to be assigned to psykers, if there are no psykers then they will be assigned randomly + Orb speed scales with the unit's attack speed + Increase default orb range + Decrease default and maximum orb speed + Increased orb damage + Psyker class bonus: +2/+4 total orbs + Remove Psychosense + Add "Orbs shoot projectiles" + Healer + Double healing per orb + Fix heal targetting, should always target lowest HP unit + Some solution that: + Increases amount of orbs dropped with only 1 or 2 healers + Decreases amount of orbs dropped on full build + Builders + Carver (builder, healer) - every 12 seconds, creates a tree that drops 3 healing orbs, Lv.3 effect: drops 6 healing orbs instead + Engineer (builder) - unchanged + Illusionist -> Golemancer (builder, sorcerer): spawns 1 golem every 6 seconds, it shoots 2 rocks that deal X damage each, Lv.3 effect: golem rocks stun enemies for 2 seconds + 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 Looping Change end screen Loop button on end screen Looping lets you continue with the current snake until you die Difficulty is increased according to the formula for levels 25+ Snake size goes up by 1 every loop, up to 12 - Conjurer rework: + Don't offer items if item slots are full QoL Selling items Your party + items on end, death and passive screens - https://i.imgur.com/JJUddT3.png Add option for mouse cursor to always be visible Show cooldown on elite attack Add visuals divine intervention, fairy buff + warrior attack range + barbarian jugg attack + remove already owned lvl 3 unit from shop... Bug fixes Fixed a series of crashes that happened rarely right before changing from the arena back to the shop https://i.imgur.com/Rk6qbDD.png - merchant doesnt give reroll if dies @@ -99,14 +63,23 @@ Loop Update https://i.imgur.com/0wZ5wma.png - max unit bugged when changing ng mid run, https://i.imgur.com/qrExpq5.png https://i.imgur.com/Ad13Cyo.png if undead from lasting 7 gets healed it becomes immortal + engine/game/group.lua:256: attempt to index local 'shape' (a nil value) + Traceback engine/game/group.lua:256: in function 'get_objects_in_shape' engine/game/physics.lua:264: in function 'get_objects_in_shape' player.lua:3386: in function 'update' + https://i.imgur.com/s4ZFE6z.png + https://i.imgur.com/VL8lOXm.png + bug with "party x/y" showing wrong numbers + https://i.imgur.com/sxwS8et.png + Close button on credits + https://i.imgur.com/O5zJNc7.png + https://i.imgur.com/cQl0VYp.png --- -30 refresh rate makes enemies faster?!?! +Invoker - casts attacks and spells from other units + having a unit like this from the start will help ensure that attacks are behind function calls that can be accessed by another unit easily rather than mostly hidden like they are now Future ideas: Chaos related classes - Invoker - shoots a projectile with random properties, Lv.3 effect - ??? Trappers: Emitters: +projectile damage, projectile mods warping