Merge branch 'develop' into feature/ascension_7_8
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

# Conflicts:
#	impostor.inc
#	inc/decision/decision.have_a_coffee.lua
#	inc/decision/decision.sumphore_discussion.lua
#	inc/screen/screen.mysterious_man.lua
#	inc/screen/screen.walking_to_home.lua
#	inc/screen/screen.walking_to_office.lua
#	inc/window/window.menu.lua
This commit is contained in:
Zoltan Timar
2026-04-29 10:18:30 +02:00
31 changed files with 1424 additions and 129 deletions

View File

@@ -54,6 +54,32 @@ local ASC_45_TEXT = [[
]]
local ASC_56_TEXT = [[
Norman is not as productive as he should be.
Can we distract him?
We need to keep him busy.
We need
More
Time
]]
local ASC_67_TEXT = [[
He knows.
Norman has broken through the first veil.
The simulation is compromised.
This was not supposed to happen.
Not yet.
]]
local ASC_78_TEXT = [[
The road has run out
of road.
@@ -74,6 +100,8 @@ local ascension_texts = {
[3] = ASC_23_TEXT,
[4] = ASC_34_TEXT,
[5] = ASC_45_TEXT,
[6] = ASC_56_TEXT,
[7] = ASC_67_TEXT,
[8] = ASC_78_TEXT,
}
@@ -147,6 +175,7 @@ function MysteriousManScreen.wake_up()
target_points = 100,
instruction_text = "Wake up Norman!",
show_progress_text = false,
meter_on_complete = Meter.apply_wakeup_reward,
on_win = function()
Audio.music_play_wakingup()
Meter.show()
@@ -160,11 +189,25 @@ function MysteriousManScreen.wake_up()
end
-- Norman chooses to stay in bed, skipping the minigame and flash, and going straight to the next day.
-- At ascension level 4, staying in bed triggers 4->5: shows the ascension text then wakes with flash.
-- @within MysteriousManScreen
function MysteriousManScreen.stay_in_bed()
Day.increase()
state = STATE_DAY
day_timer = day_display_seconds
if Ascension.get_level() == 4 then
Context.should_ascend = true
Day.increase()
Ascension.consume_increase()
trigger_flash_on_wake = true
show_mysterious_screen = true
text = MysteriousManScreen.get_text_for_level(Ascension.get_level())
text_y = Config.screen.height
text_done = false
text_done_timer = 0
state = STATE_TEXT
else
Day.increase()
state = STATE_DAY
day_timer = day_display_seconds
end
end
--- Starts the mysterious man screen.

View File

@@ -51,8 +51,8 @@ Screen.register({
local decay_pct = Meter.get_decay_percentage()
local decay_text = string.format("-%d%%", decay_pct)
local combo_mult = Meter.get_combo_multiplier()
local combo_pct = math.floor((combo_mult - 1) * 100)
local mult_text = string.format("+%d%%", combo_pct)
local ism_bm_combo_pct = math.floor((combo_mult - 1) * 100)
local wpm_combo_pct = math.floor((1 / combo_mult - 1) * 100 + 0.5)
local meter_start_y = text_y + 10
local meter_list = {
@@ -73,6 +73,12 @@ Screen.register({
rect(bar_x, bar_y, fill_w, bar_h, meter.color)
end
local mult_text
if meter.key == "wpm" then
mult_text = string.format("%+d%%", wpm_combo_pct)
else
mult_text = string.format("+%d%%", ism_bm_combo_pct)
end
local decay_w = print(decay_text, 0, -6, 0, false, 1)
Print.text_contour(decay_text, bar_x - decay_w - 4, bar_y, Config.colors.light_blue, false, 1, Config.colors.white)
Print.text_contour(mult_text, bar_x + bar_w + 4, bar_y, Config.colors.light_blue, false, 1, Config.colors.white)

View File

@@ -5,6 +5,7 @@ Screen.register({
"go_to_home",
"go_to_office",
"sumphore_discussion",
"eating_fast_food",
"go_to_truth",
},
init = function()
@@ -43,20 +44,28 @@ Screen.register({
return CommuteGlitch.is_active() and CommuteGlitch.get_level() >= 7 and "" or "street"
end,
draw = function()
if Window.get_current_id() == "game" then
local w = Window.get_current_id()
if w ~= "game" and w ~= "discussion" then
return
end
if CommuteGlitch.is_active() and CommuteGlitch.get_level() >= 7 then
Sprite.draw_at("norman", 7 * 8, 3 * 8)
Sprite.draw_at("sumphore", 9 * 8, 2 * 8)
if not (CommuteGlitch.is_active() and CommuteGlitch.get_level() >= 7) then
Sprite.draw_at("pizza_vendor", 19 * 8, 1 * 8)
Sprite.draw_at("dev_guard", 22 * 8, 2 * 8)
end
CommuteGlitch.draw_sprite_list(Context.walking_to_home_sprites)
if CommuteGlitch.is_active() then
if CommuteGlitch.get_level() >= 7 then CommuteGlitch.draw_background_flicker() end
if CommuteGlitch.get_level() >= 6 then Glitch.draw() end
CommuteGlitch.draw_background_flicker()
Glitch.draw()
else
local norman_x = Context.fast_food_approaching and (19 * 8) or (7 * 8)
Sprite.draw_at("norman", norman_x, 3 * 8)
Sprite.draw_at("sumphore", 9 * 8, 2 * 8)
if Context.fast_food_eaten_today < 3 then
Sprite.draw_at("pizza_vendor", 19 * 8, 1 * 8)
end
Sprite.draw_at("dev_guard", 22 * 8, 2 * 8)
CommuteGlitch.draw_sprite_list(Context.walking_to_home_sprites)
if CommuteGlitch.is_active() and CommuteGlitch.get_level() >= 6 then
Glitch.draw()
end
end
end

View File

@@ -4,7 +4,8 @@ Screen.register({
decisions = {
"go_to_home",
"go_to_office",
"sumphore_discussion"
"sumphore_discussion",
"eating_fast_food",
},
init = function()
local possible_sprites = {
@@ -31,12 +32,18 @@ Screen.register({
Context.walking_to_office_sprites = Sprite.list_randomize(possible_sprites, possible_positions)
end,
background = "street",
update = function()
end,
draw = function()
if Window.get_current_id() == "game" then
Sprite.draw_at("norman", 7 * 8, 3 * 8)
Sprite.draw_at("sumphore", 9 * 8, 2 * 8)
Sprite.draw_at("pizza_vendor", 19 * 8, 1 * 8)
Sprite.draw_at("dev_guard", 22 * 8, 2 * 8)
local w = Window.get_current_id()
if w == "game" or w == "discussion" then
local norman_x = Context.fast_food_approaching and (19 * 8) or (7 * 8)
Sprite.draw_at("norman", norman_x, 3 * 8)
Sprite.draw_at("sumphore", 9 * 8, 2 * 8)
if Context.fast_food_eaten_today < 3 then
Sprite.draw_at("pizza_vendor", 19 * 8, 1 * 8)
end
Sprite.draw_at("dev_guard", 22 * 8, 3 * 8)
Sprite.draw_list(Context.walking_to_office_sprites)
end