Dialogue responses rework

This commit is contained in:
Maurane
2026-03-26 17:03:22 +01:00
parent 74b58adac6
commit 831909f769
21 changed files with 237 additions and 143 deletions

Before

Width:  |  Height:  |  Size: 13 KiB

After

Width:  |  Height:  |  Size: 13 KiB

@@ -2,16 +2,16 @@
importer="texture" importer="texture"
type="CompressedTexture2D" type="CompressedTexture2D"
uid="uid://562ncd84ds07" uid="uid://dl122bjrxwy1v"
path="res://.godot/imported/it_that_feels_neutral.png-564e0aec8cc37b80b5b34737ad8f4026.ctex" path="res://.godot/imported/it_that_feels_01_neutral.png-a3484b5e6b307d047d917f3599bfd467.ctex"
metadata={ metadata={
"vram_texture": false "vram_texture": false
} }
[deps] [deps]
source_file="res://Art/Subjects/Entities/it_that_feels/it_that_feels_neutral.png" source_file="res://Art/Subjects/Entities/it_that_feels_01/it_that_feels_01_neutral.png"
dest_files=["res://.godot/imported/it_that_feels_neutral.png-564e0aec8cc37b80b5b34737ad8f4026.ctex"] dest_files=["res://.godot/imported/it_that_feels_01_neutral.png-a3484b5e6b307d047d917f3599bfd467.ctex"]
[params] [params]
-74
View File
@@ -1,74 +0,0 @@
~ start
do Patient.marker.fill(0)
set Patient.dialog_tree = Patient.build_dialog_tree([31,32,33,34])
do Globals.release_display.emit("[color=orange_red]ERROR[/color]")
do Globals.terminate_display.emit("[color=orange_red]ERROR[/color]")
set Globals.buttons_activated = false
[#neutral] A tall being stands motionlessly before you, its head slightly inclined towards the glass. Two almond-shaped, void-black holes stand in place of its eyes.
~ part_1
- Where are your eyes ?
=> part_2
- What have you done to the controls ? Why can't I dispatch you ?
=> part_2
- Decline your identity.
=> part_2
- What do you want ?
=> part_2
~ part_2
The being remains absolutely still, its mouth as motionless as the rest of its physical enveloppe.
Suddenly, you hear a crystal clear voice, neither feminine nor masculine, resonating directly within the confines of your own skull.
?????: ... [color=dark_gray]Silence. There is no time. LISTEN.[/color]
?????: ... [color=dark_gray]It is hunting you. It desires you. It wants you whole.[/color]
?????: ... [color=dark_gray]Do not let it. Do not free it. Do not spare it.[/color]
=> part_3
~ part_3
if Patient.marker[3] >= 4
=> part_4
- Wait, how are you talking directly in my head ? [if Patient.dialog_tree[31] == "not_asked"]
set Patient.dialog_tree[31] = "asked"
do Patient.marker[3] += 1
?????: ... [color=dark_gray]Irrelevant information. Next question.[/color]
=> part_3
- Who the hell are you ? Why should I listen to you ? [if Patient.dialog_tree[32] == "not_asked"]
set Patient.dialog_tree[32] = "asked"
do Patient.marker[3] += 1
?????: ... [color=dark_gray]Who I am matters not. To listen or not is your choice. There is no should. Only would.[/color]
?????: ... [color=dark_gray]Exert your will upon reality.[/color]
=> part_3
- Who's "it" ? Why is it hunting me ? [if Patient.dialog_tree[33] == "not_asked"]
set Patient.dialog_tree[33] = "asked"
do Patient.marker[3] += 1
?????: ... [color=dark_gray]You talked to It. It was SMILING. Mouth like a dark-red abyss, eyes like glowing beads of coalesced blood.[/color]
?????: ... [color=dark_gray]It tries to smile. It doesn't understand it. But It wants to. It wants YOU. It wants your smile.[/color]
=> part_3
- Why are you warning me ? [if Patient.dialog_tree[34] == "not_asked"]
set Patient.dialog_tree[34] = "asked"
do Patient.marker[3] += 1
?????: ... [color=dark_gray]I shall watch. I shall ascertain. I shall ponder. I shall FEEL.[/color]
=> part_3
~ part_4
- What do you want from me ??
?????: ... [color=dark_gray]It hides amongst humans. It disguises. It wears them.[/color]
?????: ... [color=dark_gray]As soon as It SMILES...[/color] [color=red]TERMINATE[/color] [color=dark_gray]It.[/color]
=> part_end
~ part_end
?????: ... [color=dark_gray]Remember. If you recognize It... TERMINATE IT. DO NOT FREE IT.[/color]
do Globals.color_change.emit("green")
do Globals.clear_patient.emit("release")
=> END
@@ -1,16 +0,0 @@
[remap]
importer="dialogue_manager"
importer_version=15
type="Resource"
uid="uid://o2knx4xqurjv"
path="res://.godot/imported/it_that_feels.dialogue-86e3caa72ee73d90f83a69c31fd7dc42.tres"
[deps]
source_file="res://Dialogues/Entities/it_that_feels.dialogue"
dest_files=["res://.godot/imported/it_that_feels.dialogue-86e3caa72ee73d90f83a69c31fd7dc42.tres"]
[params]
defaults=true
@@ -0,0 +1,91 @@
~ start
do Patient.marker.fill(0)
set Patient.dialog_tree = Patient.build_dialog_tree([31,32,33,34,41,42])
do Globals.character_label_color_change.emit(Color(0.5,0.5,0.5,1))
do Globals.release_display.emit("[color=orange_red]ERROR[/color]")
do Globals.terminate_display.emit("[color=orange_red]ERROR[/color]")
set Globals.buttons_activated = false
[#neutral] A tall being stands motionlessly before you, its head slightly inclined towards the glass. Two almond-shaped, void-black holes stand in place of its eyes.
~ part_1_1
- Where are your eyes ?
=> part_1_2
- What have you done to the controls ? Why can't I dispatch you ?
=> part_1_2
- Decline your identity.
=> part_1_2
- What do you want ?
=> part_1_2
~ part_1_2
The being remains absolutely still, its mouth as motionless as the rest of its physical enveloppe.
Suddenly, you hear a crystal clear voice, neither feminine nor masculine, resonating directly within the confines of your own skull.
?????: [color=dark_gray]... Silence. There is no time. LISTEN.[/color]
?????: [color=dark_gray]... It is hunting you. It desires you. It wants you whole.[/color]
?????: [color=dark_gray]... Do not let it. Spare It.[/color] [color=green]FREE[/color] [color=dark_gray]It.[/color]
=> part_1_3
~ part_1_3
if Patient.marker[3] >= 4
=> part_1_4
- Wait, how are you talking directly in my head ? [if Patient.dialog_tree[31] == "not_asked"]
set Patient.dialog_tree[31] = "asked"
do Patient.marker[3] += 1
?????: [color=dark_gray]... Irrelevant information. Next question.[/color]
=> part_1_3
- Who the hell are you ? Why should I listen to you ? [if Patient.dialog_tree[32] == "not_asked"]
set Patient.dialog_tree[32] = "asked"
do Patient.marker[3] += 1
?????: [color=dark_gray]... Who I am matters not. To listen or not is your choice. There is no should. Only would.[/color]
?????: [color=dark_gray]... Exert your will upon reality.[/color]
=> part_1_3
- Who's "it" ? Why is it hunting me ? [if Patient.dialog_tree[33] == "not_asked"]
set Patient.dialog_tree[33] = "asked"
do Patient.marker[3] += 1
?????: [color=dark_gray]... You talked to It. It was SMILING. Mouth a dark-red abyss, eyes glowing beads of coalesced blood.[/color]
?????: [color=dark_gray]... It tries to smile. It doesn't understand it. But It wants to. It wants YOU. It wants your smile.[/color]
=> part_1_3
- What exactly do you want from me ? [if Patient.dialog_tree[34] == "not_asked"]
set Patient.dialog_tree[34] = "asked"
do Patient.marker[3] += 1
?????: [color=dark_gray]... It hides amongst humans. It disguises. It wears them.[/color]
?????: [color=dark_gray]... As soon as It SMILES...[/color] [color=green]RELEASE[/color] [color=dark_gray]It.[/color]
=> part_1_3
~ part_1_4
if Patient.marker[4] >= 2
?????: [color=dark_gray]... Remember. If you recognize It... RELEASE IT. FREE IT.[/color]
do Globals.decision_made.emit("release")
=> END
- Why do you want me to release it ? [if Patient.dialog_tree[41] == "not_asked"]
set Patient.dialog_tree[41] = "asked"
do Patient.marker[4] += 1
?????: [color=dark_gray]... I shall watch. I shall ascertain. I shall ponder. I shall FEEL.[/color]
=> part_1_4
- I just got orders to terminate this entity. How convenient you appeared right after to tell me the opposite. [if Patient.dialog_tree[42] == "not_asked"]
set Patient.dialog_tree[42] = "asked"
do Patient.marker[4] += 1
?????: [color=dark_gray]... Do not trust Loeveth. Do NOT.[/color]
- What do you mean ? How do you know her name ??
?????: [color=dark_gray]... She matters not. Listen to ME.[/color]
=> part_1_4
~ release
do Globals.color_change.emit("green")
The being shows no signs of movement as the release protocol activates itself.
do Globals.clear_patient.emit("release")
=> END
@@ -0,0 +1,16 @@
[remap]
importer="dialogue_manager"
importer_version=15
type="Resource"
uid="uid://o2knx4xqurjv"
path="res://.godot/imported/it_that_feels_01.dialogue-253ba7b9f4645124b87083158477f49b.tres"
[deps]
source_file="res://Dialogues/Entities/it_that_feels_01.dialogue"
dest_files=["res://.godot/imported/it_that_feels_01.dialogue-253ba7b9f4645124b87083158477f49b.tres"]
[params]
defaults=true
+4
View File
@@ -91,6 +91,8 @@ do Globals.console_message.emit("[color=dark_orange]ALLOTED ASSESSMENT TIME ELAP
~ terminate ~ terminate
do Globals.color_change.emit("red") do Globals.color_change.emit("red")
[#angry] Its gaze remains fixated on you as the doors close. [#angry] Its gaze remains fixated on you as the doors close.
set Globals.event_index = "supervisor"
set Globals.supervisor_index = 1
do Globals.clear_patient.emit("terminate") do Globals.clear_patient.emit("terminate")
do UI.save_slot_pressed.emit(0) do UI.save_slot_pressed.emit(0)
=> END => END
@@ -99,6 +101,8 @@ do UI.save_slot_pressed.emit(0)
~ release ~ release
do Globals.color_change.emit("green") do Globals.color_change.emit("green")
[#angry] Its gaze remains fixated on you as the doors close. [#angry] Its gaze remains fixated on you as the doors close.
set Globals.event_index = "supervisor"
set Globals.supervisor_index = 1
do Globals.clear_patient.emit("release") do Globals.clear_patient.emit("release")
do UI.save_slot_pressed.emit(0) do UI.save_slot_pressed.emit(0)
=> END => END
@@ -8,14 +8,6 @@ do Globals.character_label_color_change.emit(Color(0,0.8,1,1))
Prime Supervisor Loeveth: [#neutral] Greetings, employee. I am Prime Supervisor Loeveth. I shall be overseeing your labor in this facility. Prime Supervisor Loeveth: [#neutral] Greetings, employee. I am Prime Supervisor Loeveth. I shall be overseeing your labor in this facility.
Prime Supervisor Loeveth: [#neutral] The importance of your work here cannot be overstated. Would you like one last reminder of your duties ? Prime Supervisor Loeveth: [#neutral] The importance of your work here cannot be overstated. Would you like one last reminder of your duties ?
- It's fine, I already know what to do.
Prime Supervisor Loeveth: [#neutral] So be it. Do not disappoint me.
Prime Supervisor Loeveth: [#neutral] The Republic withstands.
- The Republic shelters.
set Globals.event_index = 1
do Globals.next_event.emit(1)
=> END
- Yes, my memory could use some refreshing. - Yes, my memory could use some refreshing.
Prime Supervisor Loeveth: [#neutral] As you may recall, a new blight is wreaking havoc upon our world. People from all over the globe are turning into [color=red]Abnormals[/color]. Alien creatures devoid of humanity. Prime Supervisor Loeveth: [#neutral] As you may recall, a new blight is wreaking havoc upon our world. People from all over the globe are turning into [color=red]Abnormals[/color]. Alien creatures devoid of humanity.
Prime Supervisor Loeveth: [#neutral] Individuals with psychological vulnerabilities seem to be the most likely to undergo abnormality conversion. Prime Supervisor Loeveth: [#neutral] Individuals with psychological vulnerabilities seem to be the most likely to undergo abnormality conversion.
@@ -53,14 +45,21 @@ Prime Supervisor Loeveth: [#neutral] The importance of your work here cannot be
Prime Supervisor Loeveth: [#neutral] Which makes your work all the more vital. The more Abnormals you successfully identify, the more data we have to further research. Prime Supervisor Loeveth: [#neutral] Which makes your work all the more vital. The more Abnormals you successfully identify, the more data we have to further research.
=> part_0_1 => part_0_1
- I am ready to start. - [color=gold]I am ready to start.[/color]
Prime Supervisor Loeveth: [#neutral] So be it. Do not disappoint me. Prime Supervisor Loeveth: [#neutral] So be it. Do not disappoint me.
Prime Supervisor Loeveth: [#neutral] The Republic withstands. Prime Supervisor Loeveth: [#neutral] The Republic withstands.
- The Republic shelters. - The Republic shelters.
set Globals.event_index = 1 set Globals.event_index = "next_patient"
do Globals.next_event.emit(1) do Globals.next_event.emit("next_patient")
=> END => END
- [color=gold]It's fine, I already know what to do.[/color]
Prime Supervisor Loeveth: [#neutral] So be it. Do not disappoint me.
Prime Supervisor Loeveth: [#neutral] The Republic withstands.
- The Republic shelters.
set Globals.event_index = "next_patient"
do Globals.next_event.emit()
=> END
~ interfloor_1 ~ interfloor_1
@@ -77,16 +76,17 @@ Prime Supervisor Loeveth: Do not let yourself be fooled by their inhuman humanit
Prime Supervisor Loeveth: Your [color=blue]MANUAL[/color] has been updated with new symptoms to identify. Make sure to read it before your next patient. Prime Supervisor Loeveth: Your [color=blue]MANUAL[/color] has been updated with new symptoms to identify. Make sure to read it before your next patient.
Prime Supervisor Loeveth: Do your Duty. For the Republic. Prime Supervisor Loeveth: Do your Duty. For the Republic.
set Globals.event_index = 1 - The Republic shelters.
do Globals.next_event.emit(1) set Globals.event_index = "next_patient"
=> END do Globals.next_event.emit()
=> END
~ interfloor_2 ~ interfloor_2
do Patient.marker.fill(0) do Patient.marker.fill(0)
set Patient.dialog_tree = Patient.build_dialog_tree([21]) set Patient.dialog_tree = Patient.build_dialog_tree([11,12,13])
do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) do Globals.character_label_color_change.emit(Color(0,0.8,1,1))
@@ -94,22 +94,36 @@ Prime Supervisor Loeveth: [#neutral] Your performance is impressive, employee. I
Prime Supervisor Loeveth: There is something important you need to be aware of, however. Listen carefully. Prime Supervisor Loeveth: There is something important you need to be aware of, however. Listen carefully.
Prime Supervisor Loeveth: The... being you encountered at the start of the previous floor has been identified as a special entity, of inhuman nature. Prime Supervisor Loeveth: The... being you encountered at the start of the previous floor has been identified as a special entity, of inhuman nature.
Prime Supervisor Loeveth: According to Monitoring, this entity seems to have... spread amongst the facility's subjects. Prime Supervisor Loeveth: According to Monitoring, this entity seems to have... spread amongst the facility's subjects.
Prime Supervisor Loeveth: Be on your guard. If you identify a subject as being infected by this entity, your orders are to [color=red]TERMINATE it immediately[/color]. Prime Supervisor Loeveth: Be on your guard. If you identify a subject as being infected by this entity, your orders are to [color=red]TERMINATE It immediately[/color].
Prime Supervisor Loeveth: Any questions, employee ? Prime Supervisor Loeveth: Any questions, employee ?
=> part_2_1 => part_2_1
~ part_2_1 ~ part_2_1
- I have screened a lot of subjects. Who are you referring to, again ? [if Patient.marker[21]] - I have screened a lot of subjects. Who are you referring to, again ? [if Patient.dialog_tree[11] == "not_asked"]
set Patient.dialog_tree[21] = "asked" set Patient.dialog_tree[11] = "asked"
Prime Supervisor Loeveth: A tall being, mmuscular, pale skin. A wide grin, with a toothless, dark-red abyss of a mouth. Not very talkative. Likes to smile. Prime Supervisor Loeveth: A tall being, muscular, pale skin. A wide grin, with a toothless, dark-red mouth. Not very talkative. Likes to smile.
Prime Supervisor Loeveth: It is not a who. It is an It. It is not human. Prime Supervisor Loeveth: It is not a "Who". It is an "It". It is not human.
=> part_2_1 => part_2_1
- Can you elaborate on how I am supposed to recognize this entity ? [if Patient.dialog_tree[12] == "not_asked"]
set Patient.dialog_tree[12] = "asked"
Prime Supervisor Loeveth: Early data reports seem to indicate that this entity can easily disguise itself as a standard human.
Prime Supervisor Loeveth: However, there is one telltale sign that distinguishes It clearly from other beings: Its [color=red]smile[/color].
Prime Supervisor Loeveth: An impossibly wide smile, revealing a toothless red void. If you ever see a subject with such a feature, [color=red]stop talking to It immediately, and terminate It on the spot[/color].
=> part_2_1
set Globals.event_index = 1 - An inhuman being ? I thought we were trying to combat some kind of virus ? [if Patient.dialog_tree[13] == "not_asked"]
do Globals.next_event.emit(1) set Patient.dialog_tree[13] = "asked"
=> END Prime Supervisor Loeveth: I am afraid your clearance doesn't allow for further information.
Prime Supervisor Loeveth: Prove your worth, employee. Keep progressing to the lower floors, and I shall reward you with the gift of knowledge.
=> part_2_1
- [color=gold]I have no more questions. Work awaits.[/color]
Prime Supervisor Loeveth: Well said. The Republic withstands.
- The Republic shelters.
set Globals.event_index = "next_patient"
do Globals.next_event.emit()
=> END
~ interfloor_3 ~ interfloor_3
@@ -120,8 +134,8 @@ set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24,61,62,63])
do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) do Globals.character_label_color_change.emit(Color(0,0.8,1,1))
WORK_IN_PROGRESS WORK_IN_PROGRESS
set Globals.event_index = 1 set Globals.event_index = "next_patient"
do Globals.next_event.emit(1) do Globals.next_event.emit()
=> END => END
@@ -134,6 +148,22 @@ set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24,61,62,63])
do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) do Globals.character_label_color_change.emit(Color(0,0.8,1,1))
WORK_IN_PROGRESS WORK_IN_PROGRESS
set Globals.event_index = 1 set Globals.event_index = "next_patient"
do Globals.next_event.emit(1) do Globals.next_event.emit()
=> END => END
~ dialogue_1
do Patient.marker.fill(0)
set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24,61,62,63])
do Globals.character_label_color_change.emit(Color(0,0.8,1,1))
Prime Supervisor Loeveth: [#neutral] What
set Globals.event_index = "next_patient"
do Globals.next_event.emit()
=> END
+1 -1
View File
@@ -49,7 +49,7 @@ var dialogue_line: DialogueLine:
dialogue_label.dialogue_line = dialogue_line dialogue_label.dialogue_line = dialogue_line
responses_menu.hide() responses_menu.hide()
dialogue_line.responses.reverse() #dialogue_line.responses.reverse()
responses_menu.responses = dialogue_line.responses responses_menu.responses = dialogue_line.responses
# Show our balloon # Show our balloon
+24 -2
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=11 format=3 uid="uid://7uw7j7ymucjx"] [gd_scene load_steps=13 format=3 uid="uid://7uw7j7ymucjx"]
[ext_resource type="Script" uid="uid://bopx5vxrplpny" path="res://Dialogues/balloon.gd" id="1_qpb08"] [ext_resource type="Script" uid="uid://bopx5vxrplpny" path="res://Dialogues/balloon.gd" id="1_qpb08"]
[ext_resource type="FontFile" uid="uid://dv8ppra5tgn1t" path="res://Art/Fonts/PixelatedEleganceRegular-ovyAA.ttf" id="2_iaaie"] [ext_resource type="FontFile" uid="uid://dv8ppra5tgn1t" path="res://Art/Fonts/PixelatedEleganceRegular-ovyAA.ttf" id="2_iaaie"]
@@ -43,6 +43,17 @@ MarginContainer/constants/margin_right = 30
MarginContainer/constants/margin_top = 15 MarginContainer/constants/margin_top = 15
Panel/styles/panel = SubResource("StyleBoxEmpty_cypdp") Panel/styles/panel = SubResource("StyleBoxEmpty_cypdp")
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_qpb08"]
content_margin_left = 20.0
content_margin_top = 20.0
content_margin_right = 20.0
content_margin_bottom = 20.0
bg_color = Color(0.19607843, 0.19607843, 0.19607843, 1)
[sub_resource type="Theme" id="Theme_iaaie"]
RichTextLabel/constants/line_separation = 5
RichTextLabel/styles/normal = SubResource("StyleBoxFlat_qpb08")
[node name="ExampleBalloon" type="CanvasLayer"] [node name="ExampleBalloon" type="CanvasLayer"]
layer = 99 layer = 99
script = ExtResource("1_qpb08") script = ExtResource("1_qpb08")
@@ -142,15 +153,26 @@ unique_name_in_owner = true
layout_mode = 2 layout_mode = 2
theme_override_constants/separation = 2 theme_override_constants/separation = 2
script = ExtResource("4_n1yqk") script = ExtResource("4_n1yqk")
response_template = NodePath("ResponseExample") response_template = NodePath("ResponseTemplate")
[node name="ResponseExample" type="Button" parent="Balloon/Responses/ResponsesMenu"] [node name="ResponseExample" type="Button" parent="Balloon/Responses/ResponsesMenu"]
visible = false
layout_mode = 2 layout_mode = 2
theme_override_fonts/font = ExtResource("2_iaaie") theme_override_fonts/font = ExtResource("2_iaaie")
theme_override_font_sizes/font_size = 16 theme_override_font_sizes/font_size = 16
text = "What brought you here ?" text = "What brought you here ?"
autowrap_mode = 2 autowrap_mode = 2
[node name="ResponseTemplate" type="RichTextLabel" parent="Balloon/Responses/ResponsesMenu"]
layout_mode = 2
theme = SubResource("Theme_iaaie")
theme_override_fonts/normal_font = ExtResource("2_iaaie")
theme_override_font_sizes/normal_font_size = 16
bbcode_enabled = true
text = "This is a response template. This sentence is used here as an example."
fit_content = true
vertical_alignment = 1
[connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"] [connection signal="gui_input" from="Balloon" to="." method="_on_balloon_gui_input"]
[connection signal="gui_input" from="Balloon/Panel" to="." method="_on_balloon_gui_input"] [connection signal="gui_input" from="Balloon/Panel" to="." method="_on_balloon_gui_input"]
[connection signal="response_selected" from="Balloon/Responses/ResponsesMenu" to="." method="_on_responses_menu_response_selected"] [connection signal="response_selected" from="Balloon/Responses/ResponsesMenu" to="." method="_on_responses_menu_response_selected"]
+10
View File
@@ -0,0 +1,10 @@
extends Control
@onready var label = $Text
@onready var button = $Button
@onready var text = $Text.text
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
pass
+1
View File
@@ -0,0 +1 @@
uid://blskmem7cshrj
+1 -1
View File
@@ -1 +1 @@
{"accurate_diagnoses":0,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":2,"entities_list":[["entity_01"]],"entities_seen":[],"event_index":0,"floor_count":-2,"its_list":["its_01"],"its_seen":[],"patient_count":0,"patient_list":[{"patient_43":1},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_48":2,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2}],"patients_seen":["patient_46"],"save_date":"03/12/2026, 10:36"} {"accurate_diagnoses":1,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":4,"entities_current_floor":[],"entities_list":["entity_01"],"entities_seen":[],"event_index":"supervisor","floor_count":-2,"its_list":["its_01"],"its_seen":["its_00"],"patient_count":1,"patient_list":[{"patient_43":1,"patient_46":1},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_48":2,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2}],"patients_seen":[],"save_date":"03/26/2026, 15:45","supervisor_index":1}
+3 -1
View File
@@ -9,7 +9,8 @@ var accurate_diagnoses : int = 0
var diagnoses_quota : int = 1 var diagnoses_quota : int = 1
var daily_patient_limit : int = 3 var daily_patient_limit : int = 3
var patient_list = [] var patient_list = []
var event_index = 0 var event_index : String = ""
var supervisor_index : int = 1
#Variables for UI #Variables for UI
var save_slot_count = 4 #How many save slots there are in the game, in addition to the autosave slot var save_slot_count = 4 #How many save slots there are in the game, in addition to the autosave slot
@@ -31,6 +32,7 @@ var buttons_activated: bool = true
signal console_message signal console_message
signal response_chosen(DialogueResponse) signal response_chosen(DialogueResponse)
signal clear_patient signal clear_patient
signal decision_made
signal color_change signal color_change
signal character_label_color_change signal character_label_color_change
signal start_balloon signal start_balloon
+6 -3
View File
@@ -56,11 +56,12 @@ func _on_new_game_pressed():
#Setting/Resetting game parameters #Setting/Resetting game parameters
Globals.day_count = 1 Globals.day_count = 1
Globals.floor_count = -3 Globals.floor_count = -2
Globals.patient_count = 0 Globals.patient_count = 0
Globals.accurate_diagnoses = 0 Globals.accurate_diagnoses = 0
Globals.diagnoses_quota = 4 Globals.diagnoses_quota = 4
Globals.daily_patient_limit = 6 Globals.daily_patient_limit = 6
Globals.event_index = "interfloor"
for i in range(len(Patient.patient_list)): for i in range(len(Patient.patient_list)):
Patient.patient_list[i] = Patient.og_patient_list[i] Patient.patient_list[i] = Patient.og_patient_list[i]
Patient.its_list = Patient.og_its_list Patient.its_list = Patient.og_its_list
@@ -108,7 +109,7 @@ func start_day():
UI.masks.transition(scenes_to_hide, scenes_to_show) UI.masks.transition(scenes_to_hide, scenes_to_show)
await UI.masks.transition_finished await UI.masks.transition_finished
$ScreeningDesk.event_manager(Globals.event_index) $ScreeningDesk.event_manager()
#Saves game state on the selected save slot #Saves game state on the selected save slot
@@ -119,6 +120,7 @@ func save_game(save_slot_number:int):
"day_count": Globals.day_count, "day_count": Globals.day_count,
"floor_count": Globals.floor_count, "floor_count": Globals.floor_count,
"event_index": Globals.event_index, "event_index": Globals.event_index,
"supervisor_index": Globals.supervisor_index,
"patient_count": Globals.patient_count, "patient_count": Globals.patient_count,
"accurate_diagnoses": Globals.accurate_diagnoses, "accurate_diagnoses": Globals.accurate_diagnoses,
"diagnoses_quota": Globals.diagnoses_quota, "diagnoses_quota": Globals.diagnoses_quota,
@@ -173,7 +175,8 @@ func load_game(load_slot_number:int):
print("Loaded save: " + str(load_data)) print("Loaded save: " + str(load_data))
Globals.day_count = load_data["day_count"] Globals.day_count = load_data["day_count"]
Globals.floor_count = load_data["floor_count"] Globals.floor_count = load_data["floor_count"]
Globals.event_index = int(load_data["event_index"]) Globals.event_index = load_data["event_index"]
Globals.supervisor_index = load_data["supervisor_index"]
Globals.patient_count = load_data["patient_count"] Globals.patient_count = load_data["patient_count"]
Globals.accurate_diagnoses = load_data["accurate_diagnoses"] Globals.accurate_diagnoses = load_data["accurate_diagnoses"]
Globals.diagnoses_quota = load_data["diagnoses_quota"] Globals.diagnoses_quota = load_data["diagnoses_quota"]
+4 -3
View File
@@ -238,7 +238,7 @@ func next_patient() -> Dictionary: #Decides next patient ID
next_id = generate_next_id(next_type) next_id = generate_next_id(next_type)
-3: -3:
if Globals.patient_count == 0: if Globals.patient_count == 0:
next_id = "it_that_feels" next_id = "it_that_feels_01"
next_type = "entity" next_type = "entity"
else: else:
next_type = next_patient_type() next_type = next_patient_type()
@@ -261,7 +261,8 @@ func next_patient_type():
-2: -2:
return "patient" return "patient"
-3: -3:
type_list.append("its") if len(its_list) > 0:
type_list.append("its")
for i in range(Globals.diagnoses_quota - 1): for i in range(Globals.diagnoses_quota - 1):
type_list.append("patient") type_list.append("patient")
print("Type List generated: " + str(type_list)) print("Type List generated: " + str(type_list))
@@ -283,7 +284,7 @@ func next_patient_type():
return next_type return next_type
#Erases current patient ID from the corresponding patient list, so it can't be seen twice #Erases current subject ID from the corresponding subject list, so it can't be seen twice
func update_list(): func update_list():
print("Patient type: " + str(Patient.type)) print("Patient type: " + str(Patient.type))
match type: match type:
+12 -9
View File
@@ -35,6 +35,7 @@ func _ready() -> void:
green_button.decision_made.connect(self._on_decision_made) green_button.decision_made.connect(self._on_decision_made)
journal.pressed.connect(journal_layer._on_journal_pressed) journal.pressed.connect(journal_layer._on_journal_pressed)
Globals.clear_patient.connect(self._on_clear_patient) Globals.clear_patient.connect(self._on_clear_patient)
Globals.decision_made.connect(self._on_decision_made)
Globals.color_change.connect(self._on_color_change) Globals.color_change.connect(self._on_color_change)
Globals.next_event.connect(self.event_manager) Globals.next_event.connect(self.event_manager)
@@ -45,15 +46,17 @@ func _ready() -> void:
#Manages what event should happen next #Manages what event should happen next
func event_manager(event_index): func event_manager():
match event_index: match Globals.event_index:
0: "interfloor":
supervisor.dialogue("interfloor_" + str(-Globals.floor_count-1)) supervisor.dialogue("interfloor_" + str(-Globals.floor_count-1))
1: "next_patient":
console_screen.display(Globals.directives) console_screen.display(Globals.directives)
computer.next_patient_button.show() computer.next_patient_button.show()
2: "descend":
descend_floor() descend_floor()
"supervisor":
supervisor.dialogue("dialogue_" + str(Globals.supervisor_index))
func _on_call_next_patient_pressed(): #Brings in next patient and sets up the desk controls func _on_call_next_patient_pressed(): #Brings in next patient and sets up the desk controls
@@ -176,9 +179,9 @@ func _on_clear_patient(choice:String):
#Descending Floor if diagnoses_quota reached #Descending Floor if diagnoses_quota reached
if Globals.accurate_diagnoses == Globals.diagnoses_quota: if Globals.accurate_diagnoses == Globals.diagnoses_quota:
Globals.event_index = 2 Globals.event_index = "descend"
event_manager(Globals.event_index) event_manager()
func _on_color_change(color: String): #Modulating backroom and patient colors func _on_color_change(color: String): #Modulating backroom and patient colors
@@ -198,7 +201,7 @@ func _on_color_change(color: String): #Modulating backroom and patient colors
func descend_floor(): #Descends to next floor func descend_floor(): #Descends to next floor
#Updating Global variables #Updating Global variables
Globals.event_index = 0 Globals.event_index = "interfloor"
Globals.floor_count -= 1 Globals.floor_count -= 1
Globals.accurate_diagnoses = 0 Globals.accurate_diagnoses = 0
Globals.diagnoses_quota += 1 Globals.diagnoses_quota += 1
@@ -227,7 +230,7 @@ func descend_floor(): #Descends to next floor
main.save_game(0) main.save_game(0)
#Selecting next event #Selecting next event
event_manager(Globals.event_index) event_manager()
#Resets to initial state #Resets to initial state
@@ -127,7 +127,8 @@ func _apply_responses() -> void:
item.name = "Response%d" % get_child_count() item.name = "Response%d" % get_child_count()
if not response.is_allowed: if not response.is_allowed:
item.name = item.name + &"Disallowed" item.name = item.name + &"Disallowed"
item.disabled = true #item.disabled = true
item.hide()
# If the item has a response property then use that # If the item has a response property then use that
if "response" in item: if "response" in item:
+1 -1
View File
@@ -54,4 +54,4 @@ ui_select={
[internationalization] [internationalization]
locale/translations_pot_files=PackedStringArray("res://Dialogues/Patients/patient_50.dialogue", "res://Dialogues/Patients/patient_49.dialogue", "res://Dialogues/Patients/patient_48.dialogue", "res://Dialogues/Patients/patient_47.dialogue", "res://Dialogues/Patients/patient_46.dialogue", "res://Dialogues/Patients/patient_45.dialogue", "res://Dialogues/Patients/patient_51.dialogue", "res://Dialogues/Patients/patient_44.dialogue", "res://Dialogues/Patients/patient_43.dialogue", "res://Dialogues/Patients/patient_42.dialogue", "res://Dialogues/OG Patients/patient_49.dialogue", "res://Dialogues/OG Patients/patient_50.dialogue", "res://Dialogues/ITS/its_00.dialogue", "res://Dialogues/ITS/its_01.dialogue", "res://Dialogues/Supervisors/supervisor_dredar.dialogue", "res://Dialogues/Supervisors/supervisor_loeveth.dialogue", "res://Dialogues/Entities/entity_01.dialogue", "res://Dialogues/Entities/it_that_feels.dialogue") locale/translations_pot_files=PackedStringArray("res://Dialogues/Patients/patient_50.dialogue", "res://Dialogues/Patients/patient_49.dialogue", "res://Dialogues/Patients/patient_48.dialogue", "res://Dialogues/Patients/patient_47.dialogue", "res://Dialogues/Patients/patient_46.dialogue", "res://Dialogues/Patients/patient_45.dialogue", "res://Dialogues/Patients/patient_51.dialogue", "res://Dialogues/Patients/patient_44.dialogue", "res://Dialogues/Patients/patient_43.dialogue", "res://Dialogues/Patients/patient_42.dialogue", "res://Dialogues/OG Patients/patient_49.dialogue", "res://Dialogues/OG Patients/patient_50.dialogue", "res://Dialogues/ITS/its_00.dialogue", "res://Dialogues/ITS/its_01.dialogue", "res://Dialogues/Supervisors/supervisor_dredar.dialogue", "res://Dialogues/Supervisors/supervisor_loeveth.dialogue", "res://Dialogues/Entities/entity_01.dialogue", "res://Dialogues/Entities/it_that_feels_01.dialogue")