Skip to content

Commit

Permalink
Maintenance 1
Browse files Browse the repository at this point in the history
  • Loading branch information
a327ex committed Jul 9, 2021
1 parent d916423 commit 39abf59
Show file tree
Hide file tree
Showing 6 changed files with 40 additions and 20 deletions.
9 changes: 6 additions & 3 deletions arena.lua
Original file line number Diff line number Diff line change
Expand Up @@ -391,7 +391,7 @@ function Arena:update(dt)
'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', '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',
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening', 'kinetic_strike',
}
max_units = math.clamp(7 + current_new_game_plus + self.loop, 7, 12)
main:add(BuyScreen'buy_screen')
Expand Down Expand Up @@ -858,9 +858,9 @@ function Arena:die()
'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', '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',
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening', 'kinetic_strike',
}
max_units = math.clamp(7 + current_new_game_plus + self.loop, 7, 12)
max_units = math.clamp(7 + current_new_game_plus, 7, 12)
main:add(BuyScreen'buy_screen')
system.save_run()
main:go_to('buy_screen', 1, 0, {}, passives, 1, 0)
Expand All @@ -873,7 +873,10 @@ end


function Arena:endless()
if self.clicked_loop then return end
self.clicked_loop = true
current_new_game_plus = current_new_game_plus - 1
if current_new_game_plus < 0 then current_new_game_plus = 0 end
self.loop = self.loop + 1
self:transition()
end
Expand Down
9 changes: 6 additions & 3 deletions buy_screen.lua
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ function BuyScreen:on_enter(from, level, loop, units, passives, shop_level, shop
}, nil, nil, nil, nil, 16, 4, nil, 2)
b.info_text.x, b.info_text.y = b.x, b.y + 20
end, mouse_exit = function(b)
if not b.info_text then return end
b.info_text:deactivate()
b.info_text.dead = true
b.info_text = nil
Expand All @@ -145,9 +146,9 @@ function BuyScreen:on_enter(from, level, loop, units, passives, shop_level, shop
'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', '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',
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening', 'kinetic_strike',
}
max_units = math.clamp(7 + current_new_game_plus + self.loop, 7, 12)
max_units = math.clamp(7 + current_new_game_plus, 7, 12)
main:add(BuyScreen'buy_screen')
system.save_run()
main:go_to('buy_screen', 1, 0, {}, passives, 1, 0)
Expand All @@ -159,6 +160,7 @@ function BuyScreen:on_enter(from, level, loop, units, passives, shop_level, shop
}, nil, nil, nil, nil, 16, 4, nil, 2)
b.info_text.x, b.info_text.y = b.x, b.y + 20
end, mouse_exit = function(b)
if not b.info_text then return end
b.info_text:deactivate()
b.info_text.dead = true
b.info_text = nil
Expand Down Expand Up @@ -551,8 +553,9 @@ function RestartButton:update(dt)
'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', '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',
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening', 'kinetic_strike',
}
max_units = math.clamp(7 + current_new_game_plus, 7, 12)
system.save_state()
main:add(BuyScreen'buy_screen')
system.save_run()
Expand Down
20 changes: 10 additions & 10 deletions main.lua
Original file line number Diff line number Diff line change
Expand Up @@ -1432,7 +1432,7 @@ function init()
['haste'] = function(lvl) return '[yellow]+50%[fg] movement speed that decays over [yellow]4[fg] seconds on healing orb pick up' end,
['divine_barrage'] = function(lvl) return ts(lvl, '20%', '40%', '60%') .. ' chance to release a ricocheting barrage on healing orb pick up' end,
['orbitism'] = function(lvl) return ts(lvl, '+25%', '50%', '75%') .. ' psyker orb movement speed' end,
['psyker_orbs'] = function(lvl) return ts(lvl, '+1', '2', '3') .. ' psyker orbs' end,
['psyker_orbs'] = function(lvl) return ts(lvl, '+1', '2', '4') .. ' psyker orbs' end,
['psychosense'] = function(lvl) return ts(lvl, '+33%', '66%', '99%') .. ' orb range' end,
['psychosink'] = function(lvl) return '[fg]psyker orbs deal ' .. ts(lvl, '+40%', '80%', '120%') .. ' damage' end,
['rearm'] = function(lvl) return '[fg]constructs repeat their attacks once' end,
Expand Down Expand Up @@ -1728,7 +1728,7 @@ function init()
'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', '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',
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening', 'kinetic_strike',
}
main:add(Arena'arena')
main:go_to('arena', 16, 0, {
Expand Down Expand Up @@ -1914,9 +1914,9 @@ function open_options(self)
'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', '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',
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening', 'kinetic_strike',
}
max_units = math.clamp(7 + current_new_game_plus + self.loop, 7, 12)
max_units = math.clamp(7 + current_new_game_plus, 7, 12)
main:add(BuyScreen'buy_screen')
locked_state = nil
system.save_run()
Expand Down Expand Up @@ -1946,7 +1946,7 @@ 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 = 1 end
if sfx.volume > 1 then sfx.volume = 0 end
state.sfx_volume = sfx.volume
b:set_text('sfx volume: ' .. tostring((state.sfx_volume or 0.5)*10))
end,
Expand All @@ -1956,8 +1956,8 @@ 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 math.abs(sfx.volume) < 0.001 then sfx.volume = 0 end
if sfx.volume <= 0 then sfx.volume = 0 end
if math.abs(sfx.volume) < 0.001 and sfx.volume > 0 then sfx.volume = 0 end
if sfx.volume < 0 then sfx.volume = 1 end
state.sfx_volume = sfx.volume
b:set_text('sfx volume: ' .. tostring((state.sfx_volume or 0.5)*10))
end}
Expand All @@ -1969,7 +1969,7 @@ 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 = 1 end
if music.volume > 1 then music.volume = 0 end
state.music_volume = music.volume
b:set_text('music volume: ' .. tostring((state.music_volume or 0.5)*10))
end,
Expand All @@ -1979,8 +1979,8 @@ 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 math.abs(music.volume) < 0.001 then music.volume = 0 end
if music.volume <= 0 then music.volume = 0 end
if math.abs(music.volume) < 0.001 and music.volume > 0 then music.volume = 0 end
if music.volume < 0 then music.volume = 1 end
state.music_volume = music.volume
b:set_text('music volume: ' .. tostring((state.music_volume or 0.5)*10))
end}
Expand Down
2 changes: 1 addition & 1 deletion mainmenu.lua
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ function MainMenu:on_enter(from)
'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', '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',
'silencing_strike', 'culling_strike', 'lightning_strike', 'psycholeak', 'divine_blessing', 'hardening', 'kinetic_strike',
}
gold = run.gold or 3
passives = run.passives or {}
Expand Down
7 changes: 5 additions & 2 deletions player.lua
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ function Player:init(args)
local cast = function(pitch_a)
local enemy = table.shuffle(main.current.main:get_objects_by_classes(main.current.enemies))[1]
if enemy then
gambler1:play{pitch = pitch_a, volume = math.remap(gold, 0, 50, 0, 0.5)}
gambler1:play{pitch = pitch_a, volume = math.clamp(math.remap(gold, 0, 50, 0, 0.5), 0, 0.75)}
enemy:hit(2*gold)
if main.current.sorcerer_level > 0 then
self.sorcerer_count = self.sorcerer_count + 1
Expand Down Expand Up @@ -3637,7 +3637,9 @@ Gold:implement(GameObject)
Gold:implement(Physics)
function Gold: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
if #self.group:get_objects_by_class(Gold) > 30 then self.dead = true; return end
self:set_as_rectangle(3, 3, 'dynamic', 'ghost')
self:set_restitution(0.5)
local r = random:float(0, 2*math.pi)
Expand Down Expand Up @@ -3742,8 +3744,9 @@ HealingOrb:implement(GameObject)
HealingOrb:implement(Physics)
function HealingOrb:init(args)
self:init_game_object(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
if #self.group:get_objects_by_class(HealingOrb) > 30 then self.dead = true; return end
self:set_as_rectangle(4, 4, 'dynamic', 'ghost')
self:set_restitution(0.5)
local r = random:float(0, 2*math.pi)
Expand Down
13 changes: 12 additions & 1 deletion todo
Original file line number Diff line number Diff line change
@@ -1,13 +1,22 @@
Weekly maintenance updates:

#1

* Fixed several blue screen crashes due to broken looping state
* Limited critters to 100 due to performance issues
* Fixed several blue screen crashes due to broken physics state
* Fixed a bug where double clicking the loop button would lead to broken looping state and crashes
* 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 volume buttons not looping
* Fixed a bug where the first run would not have certain items in the item pool
* Fixed psyker orbs item saying "+1/2/3" in the shop when it is "+1/2/4"
* Fixed kinetic strike not being in the passive pool
* Fixed a bug where sometimes restarting the game from a looped run would let you have more units than normal on the next run
* Limited critters to 100 due to performance issues
* Limited health orbs on the arena to 30 due to performance issues
* Limited gold coins on the arena to 30 due to performance issues

---

Expand All @@ -32,6 +41,7 @@ Bodyguard - https://i.imgur.com/Y2pP20v.png
Conjurer unit that creates an unit that actively protects you from enemy projectiles
Guardians - https://i.imgur.com/Ynu5Cdw.png
Cultists - https://i.imgur.com/GsfoZBd.png
psyker + builder - https://i.imgur.com/VjY6r1d.png
Assists (2/4) -
Ringmaster (tier 4 assist, nuker) - +15% to all stats to adjacent units, Lv.3 effect - create a cross that deals AoE damage 5 times for 10 seconds
Absorber (tier 2 assist, warrior) - absorbs 50% damage from adjacent units, Lv.3 effect - absorbs 75% damage from adjacent units and gives the absorber +25% defense
Expand Down Expand Up @@ -91,6 +101,7 @@ Roguelite update:
Challenge + reward
Go through the labyrinth without hitting any walls
Go through the traps without getting hit
Room ideas - https://i.imgur.com/ajqtTOc.png
Units die permanently when they die (dead units can be stored in bench to be revived later)
Units can have items attached to them like in Underlords
Unit item ideas:
Expand Down

0 comments on commit 39abf59

Please sign in to comment.