Bug fixes

master
a327ex 2021-07-05 14:53:08 -03:00
parent 0867468dc3
commit 959bd601f4
6 changed files with 26 additions and 89 deletions

View File

@ -511,7 +511,7 @@ function Arena:quit()
}}
]]--
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/2 + 40, y = gh/2 + 33, force_update = true, button_text = 'buy the soundtrack!', fg_color = 'greenm5', bg_color = 'green', action = function(b) 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}
self.try_loop_text = Text2{group = self.ui, x = gw - 200, y = gh - 44, force_update = true, lines = {

View File

@ -1450,6 +1450,7 @@ function ItemCard:update(dt)
if self.selected and input.m2.pressed then
_G[random:table{'coins1', 'coins2', 'coins3'}]:play{pitch = random:float(0.95, 1.05), volume = 0.5}
self.parent:gain_gold((self.level == 1 and 10) or (self.level == 2 and 20) or (self.level == 3 and 30))
table.insert(run_passive_pool, self.passive)
table.remove(self.parent.passives, self.i)
input.m2.pressed = false
self.parent:set_items()

View File

@ -1731,16 +1731,15 @@ function init()
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening',
}
main:add(Arena'arena')
main:go_to('arena', 6, 0, {
{character = 'cleric', level = 1},
{character = 'priest', level = 3},
{character = 'carver', level = 1},
{character = 'psykeeper', level = 1},
{character = 'fairy', level = 3},
main:go_to('arena', 16, 0, {
{character = 'archer', level = 3},
{character = 'barrager', level = 3},
{character = 'corruptor', level = 3},
{character = 'host', level = 3},
{character = 'beastmaster', level = 3},
{character = 'infestor', level = 3},
}, {
{passive = 'psychosink', level = 3},
{passive = 'psyker_orbs', level = 3},
{passive = 'awakening', level = 3},
{passive = 'hive', level = 3},
})
]]--

View File

@ -95,7 +95,9 @@ function MainMenu:on_enter(from)
'defensive_stance', 'offensive_stance', 'kinetic_bomb', 'porcupine_technique', 'last_stand', 'seeping', 'deceleration', 'annihilation', 'malediction', 'hextouch', 'whispers_of_doom',
'tremor', 'heavy_impact', 'fracture', 'meat_shield', 'hive', 'baneling_burst', 'blunt_arrow', 'explosive_arrow', 'divine_machine_arrow', 'chronomancy', 'awakening', 'divine_punishment',
'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'
'insurance', 'dividends', 'berserking', 'unwavering_stance', 'unrelenting_stance', 'blessing', 'haste', 'divine_barrage', 'orbitism', 'psyker_orbs', 'psychosink', 'rearm', 'taunt', 'construct_instability',
'intimidation', 'vulnerability', 'temporal_chains', 'ceremonial_dagger', 'homing_barrage', 'critical_strike', 'noxious_strike', 'infesting_strike', 'burning_strike', 'lucky_strike', 'healing_strike', 'stunning_strike',
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening',
}
gold = run.gold or 3
passives = run.passives or {}

View File

@ -69,7 +69,7 @@ function Player:init(args)
self.t:after(0.25, function()
local enemy = table.shuffle(main.current.main:get_objects_by_classes(main.current.enemies))[1]
if enemy then
gambler1:play{pitch = pitch_a + 0.05, volume = math.remap(gold, 0, 50, 0, 0.5)}
gambler1:play{pitch = pitch_a + 0.05, volume = math.clamp(math.remap(gold, 0, 50, 0, 0.5), 0, 0.75)}
enemy:hit(2*gold)
end
end)
@ -1955,6 +1955,8 @@ Projectile:implement(GameObject)
Projectile:implement(Physics)
function Projectile:init(args)
self:init_game_object(args)
if not self.group.world then self.dead = true; return end
if tostring(self.x) == tostring(0/0) or tostring(self.y) == tostring(0/0) then self.dead = true; return end
self.hfx:add('hit', 1)
self:set_as_rectangle(10, 4, 'dynamic', 'projectile')
self.pierce = args.pierce or 0
@ -3852,6 +3854,7 @@ Critter:implement(Unit)
function Critter:init(args)
self:init_game_object(args)
if tostring(self.x) == tostring(0/0) or tostring(self.y) == tostring(0/0) then self.dead = true; return end
if #self.group:get_objects_by_class(Critter) > 100 then self.dead = true; return end
self:init_unit()
self:set_as_rectangle(7, 4, 'dynamic', 'player')
self:set_restitution(0.5)

86
todo
View File

@ -1,81 +1,13 @@
Loop Update
New items:
General:
* Intimidation - enemies spawn with -10/20/30% max HP
* Vulnerability - enemies take +10/20/30% damage
* Temporal Chains - enemies are 10/20/30% slower
* Ceremonial Dagger - killing an enemy fires a homing dagger
* Homing Barrage - 8/16/24% chance to release a homing barrage on enemy kill
* Critical Strike - 5/10/15% chance for attacks to critically strike, dealing 2x damage
* Noxious Strike - 8/16/24% chance for attacks to poison enemies, dealing 20% dps for 3 seconds
* Infesting Strike - 10/20/30% chance for attacks to spawn 2 critters on kill
* Kinetic Strike - 10/20/30% chance for attacks to push enemies away with high force
* Burning Strike - 15% chance for attacks to ignite, dealing 20% dps for 3 seconds
* Lucky Strike - 8% chance for attacks to cause enemies to drop gold on death
* Healing Strike - 8% chance for attacks to spawn a healing orb on kill
* Stunning Strike - 8/16/24% chance for attacks to stun for 2 seconds
* Silencing Strike - 8/16/24% chance for attacks to silence for 4 seconds on hit
* Culling Strike - instantly kill elites below 10/20/30% max HP
* Lightning Strike - 5/10/15% chance for projectiles to create chain lightning, dealing 60/80/100% damage
* Psycholeak - position 1 generates 1 psyker orb every 10 seconds
* Divine Blessing - generate 1 healing orb every 8 seconds
* Hardening - +150% defense for 3 seconds after an ally dies
Psyker
* Orb speed scales with the unit's attack speed
* Increased default orb range
* Decreased default orb speed
* Additional psyker orbs will prefer to be assigned to psykers, if there are no psykers then they will be assigned to units randomly
* Changed psyker class bonus: +2/4 total orbs
* Removed Psychosense
* Added Psychosink - psyker orbs deal +40/80/120% damage
Healer
* Double healing per orb
* Fixed heal targetting, now it should always target the lowest HP unit
* Healing orbs and gold coins are now slightly attracted to the snake with a weak magnetism effect
* Changed healer class bonus: +15/30% chance to create an additional healing orb on healing orb creation
* Psykeeper: spawn 3 healing orbs every time the psykeeper takes 25% of max HP in damage
Warriors
* Decreased sensor range for all warriors, this will make them attack only when enemies are closer and consequently make it so that they hit more enemies in general
* Juggernaut and barbarian now only attack when there are enemies nearby
Builders
* Carver (builder, healer) - creates a tree that creates 1 healing orb every 6 seconds, Lv.3 effect: healing orbs are created twice as fast
* Engineer (builder): unchanged
* Illusionist -> Artificer (builder, sorcerer): unchanged
* Saboteur -> Bomber (builder, nuker): plants a bomb, when it explodes it deals 2X AoE damage, Lv.3 effect: +100% bomb area and damage
* Hunter -> Sentry (builder, ranger): spawns a turret that shoots projectiles, each dealing X damage, Lv.3 effect: +50% attack speed and the projectiles ricochet twice
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
* Don't offer items if at maximum items
QoL
* 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
* Party + items on death screen
* Silenced units are now gray
* Items on end screen
* Items on passive screen
* Selling items
* Decreased sound effect volume for shoot 5
Bug fixes
* Fixed a series of crashes that happened sometimes right before changing from the arena back to the shop
* Fixed merchant not giving interest or free reroll if it died in combat
* Fixed shoot 5 and death 6 not working if a unit placed before it on the snake died
* Fixed undying unit from lasting 7 being able to become immortal if it was healed during the 10 seconds before it truly died
* Fixed a bug where max units wouldn't be properly changed when changing NG difficulty in the menu
* Fixed Whispers of Doom applying before curses, now it applies after and triggers their effect when enemies are killed due to it
* Fixed mobile users not being able to close the credits screen due to there being no close button
* Fixed shop party numbers not being updated when units are bought or sold
* Fixed a bug where movement speed would become zero if the game was paused while under the effects of decaying haste
* Fixed baneling burst not dealing the correct amount of damage
Weekly maintenance updates:
#1
* Fixed several blue screen crashes due to broken looping state
* Limited critters to 100 due to performance issues
* Fixed sold items not being restored to the passive pool
* Fixed gambler's volume being too loud with high amounts of gold
* Fixed soundtrack button not working on the win screen
* Fixed volume text bug when decreasing it from 1 to 0
* Fixed a bug where the first run would not have certain items in the item pool
---
@ -106,7 +38,7 @@ Assists (2/4) -
Pardoner (tier 3 assist, mercenary) -
Oracle (tier 1 assist) - +10% dodge chance to adjacent units, Lv.3 effect - +20% dodge chance to adjacent units
Seraph (tier 2 assist, healer) - periodically chooses 1 random unit and gives it +100% defense for 6 seconds, Lv.3 - choose 2 units instead
Passive that makes critters and summons block enemy projectiles
Add a few builder units that create walls/solids the player can hide behind (https://www.youtube.com/watch?v=KqwBZ_2f7QU&t=2331s)
Hexblaster? - curser that consumes curses to deal damage
Bench? - https://i.imgur.com/B1gNVKk.png
Balance option for when there are more sets - https://i.imgur.com/JMynwbL.png