feat: added sumphore & coworker discussions until asc 3, fixed game flow bugs, added mysterious man screen texts
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
@@ -48,8 +48,9 @@ decision/decision.go_to_end.lua
|
||||
decision/decision.go_to_walking_to_home.lua
|
||||
decision/decision.go_to_sleep.lua
|
||||
decision/decision.do_work.lua
|
||||
decision/decision.start_discussion.lua
|
||||
decision/decision.sumphore_discussion.lua
|
||||
discussion/discussion.sumphore.lua
|
||||
discussion/discussion.coworker.lua
|
||||
map/map.manager.lua
|
||||
map/map.bedroom.lua
|
||||
map/map.street.lua
|
||||
|
||||
@@ -6,9 +6,14 @@ Decision.register({
|
||||
Util.go_to_screen_by_id("work")
|
||||
MinigameDDRWindow.start("game", nil, {
|
||||
on_win = function()
|
||||
if (Context.minigame_ddr.special_condition_met and Context.ascension.level == 1) then
|
||||
Context.should_ascend = true
|
||||
Context.minigame_ddr.special_condition_met = false
|
||||
end
|
||||
Meter.show()
|
||||
Util.go_to_screen_by_id("office")
|
||||
Window.set_current("game")
|
||||
Context.have_done_work_today = true
|
||||
end,
|
||||
})
|
||||
end,
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
Decision.register({
|
||||
id = "go_to_home",
|
||||
label = "Go to Home",
|
||||
condition = function()
|
||||
return Context.have_been_to_office and Context.have_done_work_today
|
||||
end,
|
||||
handle = function()
|
||||
Util.go_to_screen_by_id("home")
|
||||
end,
|
||||
|
||||
@@ -1,6 +1,9 @@
|
||||
Decision.register({
|
||||
id = "go_to_sleep",
|
||||
label = "Go to Sleep",
|
||||
condition = function()
|
||||
return Context.have_been_to_office and Context.have_done_work_today
|
||||
end,
|
||||
handle = function()
|
||||
Meter.hide()
|
||||
Day.increase()
|
||||
@@ -10,7 +13,11 @@ Decision.register({
|
||||
focus_initial_radius = 0,
|
||||
on_win = function()
|
||||
local ascended = Ascension.consume_increase()
|
||||
MysteriousManScreen.start({ skip_text = not ascended })
|
||||
local level = Ascension.get_level()
|
||||
MysteriousManScreen.start({
|
||||
skip_text = not ascended,
|
||||
text = ascended and MysteriousManScreen.get_text_for_level(level) or nil,
|
||||
})
|
||||
end,
|
||||
})
|
||||
end,
|
||||
|
||||
@@ -3,6 +3,14 @@ Decision.register({
|
||||
label = "Have a Coffee",
|
||||
handle = function()
|
||||
local new_situation_id = Situation.apply("drink_coffee", Context.game.current_screen)
|
||||
local level = Ascension.get_level()
|
||||
local disc_id = "coworker_disc_0"
|
||||
-- TODO: Add more discussions for levels above 3
|
||||
if level >= 1 and level <= 3 then
|
||||
local suffix = Context.have_done_work_today and ("_asc_" .. level) or ("_" .. level)
|
||||
disc_id = "coworker_disc" .. suffix
|
||||
end
|
||||
Discussion.start(disc_id, "game")
|
||||
Context.game.current_situation = new_situation_id
|
||||
end,
|
||||
})
|
||||
@@ -1,5 +1,5 @@
|
||||
Decision.register({
|
||||
id = "start_discussion",
|
||||
id = "sumphore_discussion",
|
||||
label = function()
|
||||
if Context.have_met_sumphore then
|
||||
return "Talk to Sumphore"
|
||||
@@ -9,10 +9,15 @@ Decision.register({
|
||||
handle = function()
|
||||
if not Context.have_met_sumphore then
|
||||
Discussion.start("homeless_guy", "game")
|
||||
elseif Ascension.get_level() == 0 then
|
||||
Discussion.start("homeless_guy", "game", 4)
|
||||
return
|
||||
end
|
||||
local level = Ascension.get_level()
|
||||
|
||||
-- TODO: Add more discussions for levels above 3
|
||||
if level >= 1 and level <= 3 then
|
||||
Discussion.start("sumphore_disc_asc_" .. level, "game")
|
||||
else
|
||||
Discussion.start("sumphore_asc_1_a", "game")
|
||||
Discussion.start("homeless_guy", "game", 4)
|
||||
end
|
||||
end,
|
||||
})
|
||||
@@ -1,20 +1,136 @@
|
||||
Discussion.register({
|
||||
id = "coworker_asc_1",
|
||||
id = "coworker_disc_0",
|
||||
steps = {
|
||||
{
|
||||
question = "Good morning Normal, enjoying your coffee as usual, huh?",
|
||||
answers = {
|
||||
{ label = "The name is Norman, not Normal", next_step = 2 },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "Can't work without some good coffee, no? ",
|
||||
answers = {
|
||||
{ label = "Mhmm", next_step = nil },
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Discussion.register({
|
||||
id = "coworker_disc_1",
|
||||
steps = {
|
||||
{
|
||||
question = "Norman, you look confused, what's up?",
|
||||
answers = {
|
||||
{ label = "Just some bugs I noticed", next_step = 2 },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "Your coffee also seems whiter than usual!",
|
||||
answers = {
|
||||
{ label = "I feel like latte today", next_step = nil },
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
Discussion.register({
|
||||
id = "coworker_disc_asc_1",
|
||||
steps = {
|
||||
{
|
||||
question = "Normann you look weird and unfocused. You are usually locked in and not like this, what's up?",
|
||||
answers = {
|
||||
{ label = "Nothing it's just, I noticed some bugs in the simulation, maybe.", next_step = 2 },
|
||||
{ label = "Same old - same old", next_step = nil },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "What kind of bugs?",
|
||||
question = "Are you fixing bugs nobody noticed before?",
|
||||
answers = {
|
||||
{ label = "Some of the data is not being processed correctly, I think.", next_step = nil },
|
||||
{ label = "I don't know, I'm not a programmer.", next_step = nil, on_select = function()
|
||||
Meter.add("ism", 10)
|
||||
end },
|
||||
{ label = "Maybe", next_step = nil },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
Discussion.register({
|
||||
id = "coworker_disc_2",
|
||||
steps = {
|
||||
{
|
||||
question = "Hey Norman, do you have new socks on? That's a weird color!",
|
||||
answers = {
|
||||
{ label = "Huh? True ...", next_step = 2 },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "You look strange today, Normal, you put your tie on backwards, is everything ok? ",
|
||||
answers = {
|
||||
{ label = "Get it right, Norman ... NORMAN!", next_step = 3 },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "Yo Normann, text goes from left to right, not right to left, these parts!",
|
||||
answers = {
|
||||
{ label = "Uhm...why?", next_step = nil },
|
||||
},
|
||||
},
|
||||
},
|
||||
});
|
||||
|
||||
|
||||
Discussion.register({
|
||||
id = "coworker_disc_asc_2",
|
||||
steps = {
|
||||
{
|
||||
question = "Normann, are you ok? You were doing weird things while typing?",
|
||||
answers = {
|
||||
{ label = "Naw", next_step = 2 },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "Oh, it's ok, I'm not wathcing you. Noone really is. *giggle*",
|
||||
answers = {
|
||||
{ label = "Huh ?", next_step = nil },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
Discussion.register({
|
||||
id = "coworker_disc_3",
|
||||
steps = {
|
||||
{
|
||||
question = "You look so happy, did you catch a bull or something?",
|
||||
answers = {
|
||||
{ label = "What do you mean?", next_step = 2 },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "Most people catch colds! You are so strange!",
|
||||
answers = {
|
||||
{ label = "An apple a day keeps the cold away", next_step = 3 },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "You look like you don't really want to work today, are you ok?",
|
||||
answers = {
|
||||
{ label = "Oh brother", next_step = nil },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
Discussion.register({
|
||||
id = "coworker_disc_asc_3",
|
||||
steps = {
|
||||
{
|
||||
question = "Normal, you should take a break, you don't live up to your name today",
|
||||
answers = {
|
||||
{ label = "Norman is the name ...", next_step = 2 },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "You aren't as enthusiastic as you were before!",
|
||||
answers = {
|
||||
{ label = "Burnout comes for everyone", next_step = nil },
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
Discussion.register({
|
||||
id = "sumphore_asc_1_a",
|
||||
id = "sumphore_disc_asc_1",
|
||||
steps = {
|
||||
{
|
||||
question = "Are you still seeking the ox?",
|
||||
@@ -18,7 +18,7 @@ Discussion.register({
|
||||
})
|
||||
|
||||
Discussion.register({
|
||||
id = "sumphore_asc_1_b",
|
||||
id = "sumphore_disc_asc_2",
|
||||
steps = {
|
||||
{
|
||||
question = "How's work? Your face looks strange",
|
||||
@@ -46,12 +46,12 @@ Discussion.register({
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "Always trying to do the right thing, huh?",
|
||||
question = "Always trying to do the right thing, huh? What if you did the left thing instead?",
|
||||
answers = {
|
||||
{ label = "I've never thought of that up till now.", next_step = nil, on_select = function()
|
||||
Meter.add("ism", 5)
|
||||
end },
|
||||
{ label = "Exactly.", next_step = nil, on_select = function()
|
||||
{ label = "Silly wordgames, I like them.", next_step = nil, on_select = function()
|
||||
Meter.add("wpm", 10)
|
||||
end },
|
||||
},
|
||||
@@ -59,6 +59,32 @@ Discussion.register({
|
||||
},
|
||||
})
|
||||
|
||||
Discussion.register({
|
||||
id = "sumphore_disc_asc_3",
|
||||
steps = {
|
||||
{
|
||||
question = "Do you think it's work you're doing?",
|
||||
answers = {
|
||||
{ label = "... that sounds like it's from a movie.", next_step = 2 },
|
||||
{ label = "Are you drunk, old man?", next_step = nil },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "You might just be trying too hard, why dont you just flow for a while?",
|
||||
answers = {
|
||||
{ label = "Flow where ?", next_step = 3 },
|
||||
{ label = "I'm not sure what you mean.", next_step = nil },
|
||||
},
|
||||
},
|
||||
{
|
||||
question = "Flow carelessly, without any effort",
|
||||
answers = {
|
||||
{ label = "Consuming sth other than alcohol ?", next_step = nil },
|
||||
{ label = "Deja vu", next_step = nil },
|
||||
},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
Discussion.register({
|
||||
id = "homeless_guy",
|
||||
|
||||
@@ -21,6 +21,8 @@ Context = {}
|
||||
--- * triggers (table) Active trigger runtime state, keyed by trigger ID.<br/>
|
||||
--- * stat_screen_active (boolean) Whether the stat screen overlay is currently shown.<br/>
|
||||
--- * have_met_sumphore (boolean) Whether the player has talked to the homeless guy.<br/>
|
||||
--- * have_been_to_office (boolean) Whether the player has been to the office.<br/>
|
||||
--- * have_done_work_today (boolean) Whether the player has done work today.<br/>
|
||||
--- * game (table) Current game progress state. Contains: `current_screen` (string) active screen ID, `current_situation` (string|nil) active situation ID.<br/>
|
||||
function Context.initial_data()
|
||||
return {
|
||||
@@ -40,6 +42,9 @@ function Context.initial_data()
|
||||
timer = Timer.get_initial(),
|
||||
triggers = {},
|
||||
home_norman_visible = false,
|
||||
have_been_to_office = false,
|
||||
have_done_work_today = false,
|
||||
should_ascend = false,
|
||||
have_met_sumphore = false,
|
||||
game = {
|
||||
current_screen = "home",
|
||||
@@ -93,10 +98,16 @@ function Context.new_game()
|
||||
MysteriousManScreen.start({
|
||||
text = [[
|
||||
Norman was never a bad
|
||||
simulation engineer, but
|
||||
we need to be careful in
|
||||
letting him improve. We
|
||||
need to distract him.
|
||||
...
|
||||
simulation engineer,
|
||||
...
|
||||
but
|
||||
...
|
||||
we need to be careful
|
||||
...
|
||||
letting him improve.
|
||||
...
|
||||
We need to distract him.
|
||||
]],
|
||||
on_text_complete = function()
|
||||
Audio.sfx_alarm()
|
||||
@@ -111,7 +122,6 @@ function Context.new_game()
|
||||
show_progress_text = false,
|
||||
on_win = function()
|
||||
Audio.music_play_wakingup()
|
||||
Context.home_norman_visible = true
|
||||
Meter.show()
|
||||
Window.set_current("game")
|
||||
end,
|
||||
|
||||
@@ -5,6 +5,9 @@ local _day_increase_handlers = {}
|
||||
--- @within Day
|
||||
function Day.increase()
|
||||
Context.day_count = Context.day_count + 1
|
||||
if Context.day_count == 3 then
|
||||
Context.should_ascend = true
|
||||
end
|
||||
for _, handler in ipairs(_day_increase_handlers) do
|
||||
handler()
|
||||
end
|
||||
@@ -25,7 +28,8 @@ Day.register_handler(function()
|
||||
end)
|
||||
|
||||
Day.register_handler(function()
|
||||
if Context.day_count == 3 then
|
||||
if Context.should_ascend then
|
||||
Ascension.increase()
|
||||
end
|
||||
Context.should_ascend = false
|
||||
end)
|
||||
@@ -24,8 +24,11 @@ local ASC_12_TEXT = [[
|
||||
local ASC_23_TEXT = [[
|
||||
Not good, not terrible.
|
||||
...
|
||||
Normann caught his glimpse of another way
|
||||
*quite literally*
|
||||
Normann caught his glimpse
|
||||
...
|
||||
of another way
|
||||
...
|
||||
- quite literally -
|
||||
...
|
||||
if this continues,
|
||||
...
|
||||
@@ -51,6 +54,18 @@ local ASC_45_TEXT = [[
|
||||
...
|
||||
]]
|
||||
|
||||
local ascension_texts = {
|
||||
[1] = ASC_01_TEXT,
|
||||
[2] = ASC_12_TEXT,
|
||||
[3] = ASC_23_TEXT,
|
||||
[4] = ASC_34_TEXT,
|
||||
[5] = ASC_45_TEXT,
|
||||
}
|
||||
|
||||
function MysteriousManScreen.get_text_for_level(level)
|
||||
return ascension_texts[level] or ASC_01_TEXT
|
||||
end
|
||||
|
||||
local state = STATE_TEXT
|
||||
local text_y = Config.screen.height
|
||||
local text_speed = 0.2
|
||||
@@ -118,7 +133,6 @@ local function wake_up()
|
||||
show_progress_text = false,
|
||||
on_win = function()
|
||||
Audio.music_play_wakingup()
|
||||
Context.home_norman_visible = true
|
||||
Meter.show()
|
||||
if trigger_flash_on_wake then
|
||||
trigger_flash_on_wake = false
|
||||
@@ -149,10 +163,7 @@ function MysteriousManScreen.start(options)
|
||||
text_done_timer = 0
|
||||
selected_choice = 1
|
||||
text = options.text or ASC_01_TEXT
|
||||
local line_count = 1
|
||||
for _ in string.gmatch(text, "\n") do line_count = line_count + 1 end
|
||||
local text_block_h = line_count * 8
|
||||
text_y = math.floor((Config.screen.height - text_block_h) / 2)
|
||||
text_y = Config.screen.height
|
||||
day_text_override = options.day_text
|
||||
on_text_complete = options.on_text_complete
|
||||
Meter.hide()
|
||||
|
||||
@@ -23,5 +23,6 @@ Screen.register({
|
||||
Sprite.draw_at("dev_guru", 22 * 8, 10 * 8 + 4)
|
||||
Sprite.draw_at("dev_operator", 27 * 8, 10 * 8 + 4)
|
||||
end
|
||||
Context.have_been_to_office = true
|
||||
end
|
||||
})
|
||||
|
||||
@@ -19,6 +19,7 @@ Screen.register({
|
||||
Focus.stop()
|
||||
Context.stat_screen_active = false
|
||||
Meter.show()
|
||||
Util.go_to_screen_by_id("home")
|
||||
end
|
||||
end,
|
||||
draw = function()
|
||||
|
||||
@@ -4,7 +4,7 @@ Screen.register({
|
||||
decisions = {
|
||||
"go_to_home",
|
||||
"go_to_office",
|
||||
"start_discussion",
|
||||
"sumphore_discussion",
|
||||
},
|
||||
background = "street",
|
||||
draw = function()
|
||||
|
||||
@@ -2,6 +2,5 @@ Situation.register({
|
||||
id = "drink_coffee",
|
||||
handle = function()
|
||||
Audio.sfx_select()
|
||||
Sprite.show("norman", 100, 100)
|
||||
end,
|
||||
})
|
||||
|
||||
@@ -40,7 +40,9 @@ function MinigameDDRWindow.init_context()
|
||||
use_pattern = false,
|
||||
return_window = nil,
|
||||
win_timer = 0,
|
||||
on_win = nil
|
||||
on_win = nil,
|
||||
special_condition_met = false,
|
||||
total_misses = 0,
|
||||
}
|
||||
end
|
||||
|
||||
@@ -162,6 +164,7 @@ function MinigameDDRWindow.update()
|
||||
if mg.win_timer > 0 then
|
||||
mg.win_timer = mg.win_timer - 1
|
||||
if mg.win_timer == 0 then
|
||||
mg.special_condition_met = (mg.total_misses == 0)
|
||||
Meter.on_minigame_complete()
|
||||
if mg.on_win then
|
||||
mg.on_win()
|
||||
@@ -211,6 +214,7 @@ function MinigameDDRWindow.update()
|
||||
if mg.bar_fill < 0 then
|
||||
mg.bar_fill = 0
|
||||
end
|
||||
mg.total_misses = mg.total_misses + 1
|
||||
end
|
||||
end
|
||||
-- iterate backwards to avoid index shift issues
|
||||
@@ -254,6 +258,7 @@ function MinigameDDRWindow.update()
|
||||
if mg.bar_fill < 0 then
|
||||
mg.bar_fill = 0
|
||||
end
|
||||
mg.total_misses = mg.total_misses + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
@@ -70,6 +70,9 @@ function MinigameButtonMashWindow.update()
|
||||
if mg.win_timer == 0 then
|
||||
Meter.on_minigame_complete()
|
||||
if mg.focus_center_x then Focus.stop() end
|
||||
Context.home_norman_visible = true
|
||||
Context.have_done_work_today = false
|
||||
Context.have_been_to_office = false
|
||||
if mg.on_win then
|
||||
mg.on_win()
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user