feat: added ascension logic 4-7, added new decision (eating fast food), indicating meter changes better, added discussions (needs more work, but meh ... fine like this)
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
Zoltan Timar
2026-04-28 00:51:42 +02:00
parent b5dd0cc686
commit efe903110b
15 changed files with 522 additions and 21 deletions

View File

@@ -54,12 +54,40 @@ 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 ascension_texts = {
[1] = ASC_01_TEXT,
[2] = ASC_12_TEXT,
[3] = ASC_23_TEXT,
[4] = ASC_34_TEXT,
[5] = ASC_45_TEXT,
[6] = ASC_56_TEXT,
[7] = ASC_67_TEXT,
}
function MysteriousManScreen.get_text_for_level(level)
@@ -146,11 +174,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

@@ -4,15 +4,20 @@ Screen.register({
decisions = {
"go_to_home",
"go_to_office",
"eating_fast_food",
},
init = function()
Audio.music_play_room_work()
end,
background = "street",
draw = function()
if Window.get_current_id() == "game" then
Sprite.draw_at("norman", 7 * 8, 3 * 8)
Sprite.draw_at("pizza_vendor", 19 * 8, 1 * 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)
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)
end
end

View File

@@ -1,3 +1,5 @@
WalkingToOfficeScreen = {}
Screen.register({
id = "walking_to_office",
name = "Walking to office",
@@ -5,6 +7,7 @@ Screen.register({
"go_to_home",
"go_to_office",
"sumphore_discussion",
"eating_fast_food",
},
init = function()
Audio.music_play_room_work()
@@ -32,12 +35,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