big work
This commit is contained in:
+17
-4
@@ -19,9 +19,12 @@ func _ready() -> void:
|
||||
|
||||
#Connecting signals
|
||||
menu_button.pressed.connect(func():
|
||||
submenu.show()
|
||||
ui_main.masks.mask.show()
|
||||
ui_main.in_title_screen = false
|
||||
if UI.in_title_screen == false and submenu.is_visible_in_tree() == false:
|
||||
submenu.show()
|
||||
ui_main.masks.mask.show()
|
||||
elif UI.in_title_screen == false and submenu.is_visible_in_tree():
|
||||
reset()
|
||||
ui_main.masks.mask.hide()
|
||||
)
|
||||
submenu.resume.pressed.connect(func():
|
||||
reset()
|
||||
@@ -38,7 +41,17 @@ func _ready() -> void:
|
||||
load.load_slot[i].pressed.connect(self._on_load_slot_pressed.bind(i))
|
||||
load.load_slot[0].pressed.connect(self._on_load_slot_pressed.bind(0)) #Autosaveslot can be loaded but not saved upon
|
||||
|
||||
|
||||
|
||||
#Opens the submenu when the escape key is pressed
|
||||
func _unhandled_input(event: InputEvent) -> void:
|
||||
if event.is_action_pressed("ui_cancel") and UI.in_title_screen == false and submenu.is_visible_in_tree() == false:
|
||||
submenu.show()
|
||||
ui_main.masks.mask.show()
|
||||
elif event.is_action_pressed("ui_cancel") and UI.in_title_screen == false and submenu.is_visible_in_tree():
|
||||
reset()
|
||||
ui_main.masks.mask.hide()
|
||||
|
||||
|
||||
#Emits save_slot signal
|
||||
func _on_save_slot_pressed(save_slot_number: int):
|
||||
|
||||
|
||||
+1
-1
@@ -23,7 +23,7 @@ signal text_value_changed
|
||||
signal auto_value_changed
|
||||
|
||||
#Boolean to differentiate in-game UI from title_screen UI
|
||||
var in_title_screen = false
|
||||
var in_title_screen = true
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
|
||||
@@ -273,6 +273,7 @@ theme = SubResource("Theme_h6tq4")
|
||||
script = ExtResource("4_s3gqk")
|
||||
|
||||
[node name="Submenu" type="PanelContainer" parent="PauseMenu"]
|
||||
visible = false
|
||||
layout_mode = 1
|
||||
anchors_preset = 8
|
||||
anchor_left = 0.5
|
||||
|
||||
+20
-10
@@ -3,14 +3,15 @@ extends Node
|
||||
#Variables for gameplay
|
||||
var floor_count : int = -1
|
||||
var patient_count : int = 1
|
||||
var its_patient_count : int = 0
|
||||
var accurate_diagnoses : int = 0
|
||||
var diagnoses_quota : int = 1
|
||||
var misdiagnoses : int = 0
|
||||
var misdiagnoses_game_over : bool = true
|
||||
var patient_quota : int = 1
|
||||
var misdiagnoses_allowed : int = 2
|
||||
var daily_patient_limit : int = 3
|
||||
var patient_list = []
|
||||
var event_index : String = ""
|
||||
var supervisor_index : int = 1
|
||||
var objective_list : Array[String]
|
||||
|
||||
#Variables for UI
|
||||
var save_slot_count = 4 #How many save slots there are in the game, in addition to the autosave slot
|
||||
@@ -21,11 +22,12 @@ var directives = "\n[center][font_size=22]INSTRUCTIONS[/font_size][/center]
|
||||
\n\n[font_size=18][color=forest_green]RELEASE[/color] HUMANS, [color=red]TERMINATE[/color] ABNORMALS
|
||||
\n\nIF A SUBJECT HAS [color=dark_orange]SYMPTOMS[/color] IT SHOULDN'T HAVE,
|
||||
\n [color=red]IT IS NOT HUMAN[/color]
|
||||
\n\nREFER TO THE [color=royal_blue]MANUAL[/color] FOR [color=dark_orange]SYMPTOMS[/color] DETAILS
|
||||
\n\nMAKE ENOUGH [color=green_yellow]ACCURATE DIAGNOSES[/color] IN A ROW
|
||||
\nTO GET TO THE NEXT FLOOR[/font_size]"
|
||||
\n\nREFER TO THE [color=royal_blue]MANUAL[/color] FOR [color=dark_orange]SYMPTOMS[/color] DETAILS"
|
||||
var release_messages: Array[String]
|
||||
var terminate_messages: Array[String]
|
||||
var default_patient_file = "[center][color=orange_red]NO SUBJECT SELECTED IN DATABASE[/color][/center]"
|
||||
var default_recording_fil
|
||||
|
||||
var buttons_activated: bool = true
|
||||
var entities = [] #Entities list for the journal
|
||||
|
||||
@@ -42,18 +44,21 @@ signal terminate_display
|
||||
signal its_end
|
||||
signal next_event
|
||||
signal add_entity
|
||||
signal add_objective
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
|
||||
release_messages.resize(3)
|
||||
terminate_messages.resize(3)
|
||||
release_messages[0] = Globals.colorize("- ASSESSMENT MADE -\n\n- LOADING RELEASE PROTOCOL... -", "green_yellow")
|
||||
|
||||
release_messages[0] = "EVALUATION RECORDED" + "\n\nPATIENT STATUS: " + Globals.colorize("HUMAN", "green") + "\n\nUPDATING DATABASE...\n\n\n\n" + Globals.colorize("INITIATING RELEASE SEQUENCE", "green_yellow")
|
||||
release_messages[1] = Globals.colorize("- RELEASING SUBJECT -", "green_yellow")
|
||||
release_messages[2] = "EVALUATION RECORDED" + "\n\nPATIENT STATUS: " + Globals.colorize("HUMAN", "green") + "\n\nUPDATING DATABASE...\n\n" + Globals.colorize("INITIATING RELEASE SEQUENCE", "green_yellow")
|
||||
terminate_messages[0] = Globals.colorize("- ASSESSMENT MADE -\n\n- LOADING TERMINATION PROTOCOL... -", "orange_red")
|
||||
|
||||
terminate_messages[0] = "EVALUATION RECORDED" + "\n\nPATIENT STATUS: " + Globals.colorize("ABNORMAL", "red") + "\n\nUPDATING DATABASE...\n\n\n\n" + Globals.colorize("INITIATING TERMINATION SEQUENCE", "orange_red")
|
||||
terminate_messages[1] = Globals.colorize("- TERMINATING SUBJECT -", "orange_red")
|
||||
terminate_messages[2] = "EVALUATION RECORDED" + "\n\nPATIENT STATUS: " + Globals.colorize("ABNORMAL", "red") + "\n\nUPDATING DATABASE...\n\n" + Globals.colorize("INITIATING TERMINATION SEQUENCE", "orange_red")
|
||||
|
||||
|
||||
|
||||
#Generating patient list
|
||||
Globals.patient_list.clear()
|
||||
@@ -61,6 +66,11 @@ func _ready() -> void:
|
||||
for i in range(35,52):
|
||||
patient_id = "patient_" + str(i)
|
||||
Globals.patient_list.append(patient_id)
|
||||
for i in range(1,5):
|
||||
patient_id = "patient_its_" + str(i)
|
||||
Globals.patient_list.append(patient_id)
|
||||
patient_id = "patient_ite_" + str(i)
|
||||
Globals.patient_list.append(patient_id)
|
||||
|
||||
|
||||
#Gets the current time and day of the year
|
||||
|
||||
+24
-22
@@ -53,20 +53,19 @@ func _ready() -> void:
|
||||
func _on_new_game_pressed():
|
||||
|
||||
#Setting/Resetting game parameters
|
||||
Globals.floor_count = -5
|
||||
Globals.floor_count = -1
|
||||
Globals.patient_count = 0
|
||||
Globals.accurate_diagnoses = 0
|
||||
Globals.diagnoses_quota = 2
|
||||
Globals.misdiagnoses = 0
|
||||
Globals.patient_quota = 2
|
||||
Globals.misdiagnoses_allowed = 2
|
||||
Globals.daily_patient_limit = 6
|
||||
Globals.event_index = "interfloor"
|
||||
Globals.objective_list.clear()
|
||||
for i in range(len(Patient.patient_list)):
|
||||
Patient.patient_list[i] = Patient.og_patient_list[i]
|
||||
Patient.its_list = Patient.og_its_list
|
||||
Patient.patients_seen.clear()
|
||||
Patient.its_seen.clear()
|
||||
Patient.spy.order = false
|
||||
Patient.spy.count = 0
|
||||
Patient.spy.reset()
|
||||
UI.in_title_screen = false
|
||||
# DISABLED FOR NOW SINCE THERE'S NO INTRO ANYMORE
|
||||
#Offering to skip the introduction
|
||||
#var choice_text = "Do you wish to skip the introduction ?"
|
||||
@@ -119,18 +118,16 @@ func save_game(save_slot_number:int):
|
||||
"supervisor_index": Globals.supervisor_index,
|
||||
"patient_count": Globals.patient_count,
|
||||
"accurate_diagnoses": Globals.accurate_diagnoses,
|
||||
"diagnoses_quota": Globals.diagnoses_quota,
|
||||
"misdiagnoses": Globals.misdiagnoses,
|
||||
"patient_quota": Globals.patient_quota,
|
||||
"misdiagnoses_allowed": Globals.misdiagnoses_allowed,
|
||||
"daily_patient_limit": Globals.daily_patient_limit,
|
||||
"patient_list": Patient.patient_list,
|
||||
"its_list": Patient.its_list,
|
||||
"ite_list": Patient.ite_list,
|
||||
"patients_seen": Patient.patients_seen,
|
||||
"its_seen": Patient.its_seen,
|
||||
"ite_seen": Patient.ite_seen,
|
||||
"spy_order": Patient.spy.order,
|
||||
"spy_count": Patient.spy.count,
|
||||
"journal_entities": $ScreeningDesk.journal_layer.journal.entities_page.text,
|
||||
"spy_symptoms": Patient.spy.symptoms,
|
||||
"spy_threshold": Patient.spy.threshold,
|
||||
"objective_list": Globals.objective_list,
|
||||
"save_date": Globals.get_save_date()
|
||||
}
|
||||
#Creating save file
|
||||
@@ -162,6 +159,7 @@ func load_game(load_slot_number:int):
|
||||
#Hiding loading menus and masks
|
||||
UI.masks.mask.hide()
|
||||
UI.pause_menu.reset()
|
||||
UI.in_title_screen = false #Leaving title_screen
|
||||
|
||||
#Opening save file
|
||||
var file = FileAccess.open("res://Saves/save_" + str(load_slot_number) + ".json", FileAccess.READ)
|
||||
@@ -177,20 +175,20 @@ func load_game(load_slot_number:int):
|
||||
Globals.supervisor_index = load_data["supervisor_index"]
|
||||
Globals.patient_count = load_data["patient_count"]
|
||||
Globals.accurate_diagnoses = load_data["accurate_diagnoses"]
|
||||
Globals.diagnoses_quota = load_data["diagnoses_quota"]
|
||||
Globals.misdiagnoses = load_data["misdiagnoses"]
|
||||
Globals.patient_quota = load_data["patient_quota"]
|
||||
Globals.misdiagnoses_allowed = load_data["misdiagnoses_allowed"]
|
||||
Globals.daily_patient_limit = load_data["daily_patient_limit"]
|
||||
Patient.patient_list.clear()
|
||||
Patient.patient_list.append_array(load_data["patient_list"])
|
||||
print (Patient.patient_list)
|
||||
Patient.its_list = load_data["its_list"]
|
||||
Patient.ite_list = load_data["ite_list"]
|
||||
Patient.patients_seen = load_data["patients_seen"]
|
||||
Patient.its_seen = load_data["its_seen"]
|
||||
Patient.ite_seen = load_data["ite_seen"]
|
||||
Patient.spy.order = load_data["spy_order"]
|
||||
Patient.spy.count = load_data["spy_count"]
|
||||
$ScreeningDesk.journal_layer.journal.entities_page.text = load_data["journal_entities"]
|
||||
Patient.spy.symptoms.clear()
|
||||
Patient.spy.symptoms.append_array(load_data["spy_symptoms"])
|
||||
Patient.spy.threshold = load_data["spy_threshold"]
|
||||
Globals.objective_list.clear()
|
||||
Globals.objective_list.append_array(load_data["objective_list"])
|
||||
else:
|
||||
print("Failed to parse Loading Data.")
|
||||
|
||||
@@ -207,6 +205,9 @@ func _on_main_menu_pressed():
|
||||
#Clearing balloon
|
||||
clear_balloon()
|
||||
|
||||
#Setting boolean
|
||||
UI.in_title_screen = true
|
||||
|
||||
#Going back to main menu
|
||||
var scenes_to_hide = [$ScreeningDesk, $TextScreens, $TextScreens/Day, UI.game_over, UI.pause_menu.menu_button]
|
||||
var scenes_to_show = [$TitleScreen]
|
||||
@@ -264,7 +265,8 @@ func start_balloon(balloon_type:String, patient_type:String, dialogue_resource:
|
||||
DialogueManager.got_dialogue.connect($ScreeningDesk.computer._recording_text)
|
||||
"supervisor":
|
||||
DialogueManager.got_dialogue.connect($ScreeningDesk.supervisor._change_emotion)
|
||||
|
||||
DialogueManager.got_dialogue.connect($ScreeningDesk.computer._recording_text)
|
||||
|
||||
#Applies text settings to the balloon
|
||||
balloon.dialogue_label.seconds_per_step = UI.pause_menu.settings.text_speed
|
||||
#balloon.dialogue_line.time = UI.auto_speed
|
||||
|
||||
@@ -2,7 +2,7 @@ extends MarginContainer
|
||||
|
||||
@onready var rules = $HBoxContainer/HBoxContainer/Rules/Bookmark
|
||||
@onready var symptoms = $HBoxContainer/HBoxContainer/Symptoms/Bookmark
|
||||
@onready var entities = $HBoxContainer/HBoxContainer/Entities/Bookmark
|
||||
@onready var objectives = $HBoxContainer/HBoxContainer/Objectives/Bookmark
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
@@ -11,7 +11,7 @@ func _ready() -> void:
|
||||
|
||||
#Resets to initial state
|
||||
func reset():
|
||||
for tab in [symptoms, entities]:
|
||||
for tab in [symptoms, objectives]:
|
||||
tab.set_pressed(false)
|
||||
tab.set_mouse_filter(Control.MOUSE_FILTER_STOP)
|
||||
rules.set_pressed(true)
|
||||
|
||||
@@ -1,13 +1,11 @@
|
||||
extends Control
|
||||
|
||||
@onready var tab_patient_file = $Margin/ComputerScreen/Tabs/PatientFile
|
||||
@onready var tab_rules = $Margin/ComputerScreen/Tabs/Rules
|
||||
@onready var tab_statistics = $Margin/ComputerScreen/Tabs/Statistics
|
||||
@onready var tab_recording = $Margin/ComputerScreen/Tabs/Recording
|
||||
@onready var patient_file = $Margin/ComputerScreen/ComputerTabs/FileContainer/PatientFile
|
||||
@onready var rules = $Margin/ComputerScreen/ComputerTabs/Rules
|
||||
@onready var statistics = $Margin/ComputerScreen/ComputerTabs/Statistics
|
||||
@onready var recording = $Margin/ComputerScreen/ComputerTabs/Recording
|
||||
@onready var screen = $Margin/ComputerScreen2
|
||||
@onready var next_patient_button = $Margin/NextPatient/CallNextPatient
|
||||
|
||||
var tab_list
|
||||
var screen_list
|
||||
@@ -15,34 +13,23 @@ var screen_list
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
|
||||
tab_list = [tab_patient_file, tab_rules, tab_recording]
|
||||
screen_list = [patient_file, rules, recording]
|
||||
tab_list = [tab_patient_file, tab_statistics, tab_recording]
|
||||
screen_list = [patient_file, statistics, recording]
|
||||
|
||||
#Connecting signals
|
||||
tab_patient_file.pressed.connect(self._on_tab_patient_file_pressed)
|
||||
tab_rules.pressed.connect(self._on_tab_rules_pressed)
|
||||
tab_statistics.pressed.connect(self._on_tab_statistics_pressed)
|
||||
tab_recording.pressed.connect(self._on_tab_recording_pressed)
|
||||
Globals.response_chosen.connect(self._on_response_chosen)
|
||||
|
||||
#Hiding everything
|
||||
for node in tab_list + screen_list + [screen, next_patient_button]:
|
||||
node.hide()
|
||||
|
||||
|
||||
#Displays a message on the computer screen
|
||||
func display(message):
|
||||
var text = message.replace("\\n", "\n") #Replaces litteral backslashes by actual newlines (necessary because of Dialogue Manager)
|
||||
screen.text = text
|
||||
screen.show()
|
||||
|
||||
|
||||
#Shows the patient file tab
|
||||
func _on_tab_patient_file_pressed():
|
||||
tab_switch(tab_patient_file, patient_file)
|
||||
|
||||
#Shows the rules tab
|
||||
func _on_tab_rules_pressed():
|
||||
tab_switch(tab_rules, rules)
|
||||
#Shows the statistics tab
|
||||
func _on_tab_statistics_pressed():
|
||||
tab_switch(tab_statistics, statistics)
|
||||
|
||||
#Shows the recording tab
|
||||
func _on_tab_recording_pressed():
|
||||
@@ -79,8 +66,17 @@ func _on_response_chosen(response): #Adds protagonist responses to the recording
|
||||
recording.append_text(response.text)
|
||||
|
||||
|
||||
#Updates the statistics tab
|
||||
func update_statistics(accurate_diagnoses, misdiagnoses):
|
||||
|
||||
var accurate_diagnoses_line = "ACCURATE DIAGNOSES : " + Globals.colorize(str(accurate_diagnoses), "green")
|
||||
var misdiagnoses_line = "MISDIAGNOSES : " + Globals.colorize(str(misdiagnoses), "red")
|
||||
|
||||
statistics.text = accurate_diagnoses_line + "\n\n" + misdiagnoses_line
|
||||
|
||||
|
||||
#Resets to initial state
|
||||
func reset():
|
||||
|
||||
for node in tab_list + screen_list + [screen, next_patient_button]:
|
||||
node.hide()
|
||||
update_statistics(Globals.accurate_diagnoses, Globals.misdiagnoses)
|
||||
patient_file.text = Globals.default_patient_file
|
||||
recording.text = ""
|
||||
|
||||
@@ -0,0 +1,21 @@
|
||||
extends Control
|
||||
|
||||
@onready var screen = $Margin/ConsoleScreen
|
||||
@onready var next_patient_button = $Margin/NextPatient/CallNextPatient
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
Globals.console_message.connect(self.display)
|
||||
reset()
|
||||
|
||||
|
||||
#Displays a message on the console screen
|
||||
func display(message):
|
||||
var text = message.replace("\\n", "\n") #Replaces litteral backslashes by actual newlines (necessary because of Dialogue Manager)
|
||||
screen.text = text
|
||||
screen.show()
|
||||
|
||||
|
||||
func reset(): #Resets to initial state
|
||||
for node in [next_patient_button, screen]:
|
||||
node.hide()
|
||||
@@ -0,0 +1 @@
|
||||
uid://d08500s1loqcr
|
||||
@@ -1,21 +0,0 @@
|
||||
extends RichTextLabel
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
func _ready() -> void:
|
||||
Globals.console_message.connect(self.display)
|
||||
hide()
|
||||
|
||||
|
||||
#Displays a message on the console screen
|
||||
func display(message):
|
||||
var text_to_display = message
|
||||
text_to_display = text_to_display.replace("\\n", "\n") #Replaces litteral backslashes by actual newlines (necessary because of Dialogue Manager)
|
||||
text = text_to_display
|
||||
show()
|
||||
|
||||
|
||||
#Resets to initial state
|
||||
func reset():
|
||||
text = ""
|
||||
hide()
|
||||
@@ -1 +0,0 @@
|
||||
uid://cyennu12fufbt
|
||||
@@ -3,11 +3,11 @@ extends Control
|
||||
|
||||
@onready var rules = $MarginContainer/Rules
|
||||
@onready var symptoms = $MarginContainer/Symptoms
|
||||
@onready var entities = $MarginContainer/Entities
|
||||
@onready var objectives = $MarginContainer/Objectives
|
||||
|
||||
@onready var rules_page = $MarginContainer/Rules/RightPage/Rules
|
||||
@onready var symptoms_page = $MarginContainer/Symptoms/RightPage/Symptoms
|
||||
@onready var entities_page = $MarginContainer/Entities/RightPage/Entities
|
||||
@onready var objectives_page = $MarginContainer/Objectives/RightPage/Objectives
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
@@ -17,6 +17,6 @@ func _ready() -> void:
|
||||
|
||||
#Resets to initial state
|
||||
func reset():
|
||||
for screen in [symptoms, entities]:
|
||||
for screen in [symptoms, objectives]:
|
||||
screen.hide()
|
||||
rules.show()
|
||||
|
||||
@@ -35,11 +35,10 @@ func _ready() -> void:
|
||||
#Connecting signals
|
||||
$Boundaries/VBoxContainer/Journal/MarginContainer/Rules/LeftPage/CloseManual.pressed.connect(self._on_close_manual_pressed)
|
||||
$Boundaries/VBoxContainer/Journal/MarginContainer/Symptoms/LeftPage/CloseManual.pressed.connect(self._on_close_manual_pressed)
|
||||
$Boundaries/VBoxContainer/Journal/MarginContainer/Entities/LeftPage/CloseManual.pressed.connect(self._on_close_manual_pressed)
|
||||
$Boundaries/VBoxContainer/Journal/MarginContainer/Objectives/LeftPage/CloseManual.pressed.connect(self._on_close_manual_pressed)
|
||||
bookmarks.rules.pressed.connect(self._on_tab_rules_pressed)
|
||||
bookmarks.symptoms.pressed.connect(self._on_tab_symptoms_pressed)
|
||||
bookmarks.entities.pressed.connect(self._on_tab_entities_pressed)
|
||||
Globals.add_entity.connect(self.add_entity)
|
||||
bookmarks.objectives.pressed.connect(self._on_tab_objectives_pressed)
|
||||
|
||||
hide() #Hiding at start
|
||||
|
||||
@@ -59,67 +58,58 @@ func update_symptoms(floor_count:int):
|
||||
journal.symptoms_page.text = symptoms_page
|
||||
|
||||
|
||||
func add_entity(entity):
|
||||
if Globals.entities.has(entity) == false:
|
||||
Globals.entities.append(entity)
|
||||
update_entities(Globals.entities)
|
||||
func add_objective(objective:String): #Updates the objectives list
|
||||
var temp_list = Globals.objective_list
|
||||
var objective_text : String
|
||||
match objective:
|
||||
"siveyan_1_terminated":
|
||||
temp_list.erase("siveyan_1")
|
||||
"siveyan_1_released":
|
||||
temp_list.erase("siveyan_1")
|
||||
"siveyan_2_terminated":
|
||||
temp_list.erase("siveyan_1_terminated")
|
||||
temp_list.erase("siveyan_1_released")
|
||||
"siveyan_2_released":
|
||||
temp_list.erase("siveyan_1_terminated")
|
||||
temp_list.erase("siveyan_1_released")
|
||||
temp_list.append(objective)
|
||||
Globals.objective_list = temp_list
|
||||
update_objectives()
|
||||
|
||||
|
||||
func update_entities(entities):
|
||||
func update_objectives(): #Updates the objectives page
|
||||
|
||||
journal.entities_page.text = ""
|
||||
for entity in entities:
|
||||
add_entity_to_journal(entity)
|
||||
|
||||
|
||||
func add_entity_to_journal(entity: String):
|
||||
|
||||
var config := ConfigFile.new()
|
||||
var entity_name: String = ""
|
||||
var entity_characteristics: String = ""
|
||||
var entity_course_of_action: String = ""
|
||||
var entity_text: String = ""
|
||||
|
||||
config.load("res://Text Data/entities.cfg") #Loading Entity file
|
||||
entity_name = config.get_value(entity, "entity_name")
|
||||
entity_characteristics = config.get_value(entity, "entity_characteristics")
|
||||
entity_course_of_action = config.get_value(entity, "entity_course_of_action")
|
||||
entity_text = Globals.colorize(entity_name, "dark_red") + "\n\nCHARACTERISTICS" + entity_characteristics + "\nRECOMMENDED COURSE OF ACTION" + entity_course_of_action
|
||||
journal.entities_page.text += "\n\n\n" + entity_text
|
||||
|
||||
|
||||
#func update_entities(): Old function, to be deleted
|
||||
|
||||
#journal.entities_page.text = ""
|
||||
#if Patient.entities_current_floor.is_empty():
|
||||
# Patient.pick_floor_entities() #Picking floor entities unless a save was just loaded
|
||||
|
||||
#var config := ConfigFile.new()
|
||||
#var entity_name: String = ""
|
||||
#var entity_characteristics: String = ""
|
||||
#var entity_course_of_action: String = ""
|
||||
#var entity_text: String = ""
|
||||
|
||||
#journal.entities_page.text += its_entity_file
|
||||
|
||||
#for entity in Patient.entities_current_floor:
|
||||
#config.load("res://Dialogues/Entities/" + entity + "_file.cfg") #Loading Entity file
|
||||
#entity_name = config.get_value("", "entity_name")
|
||||
#entity_characteristics = config.get_value("", "entity_characteristics")
|
||||
#entity_course_of_action = config.get_value("", "entity_course_of_action")
|
||||
#entity_text = Globals.colorize(entity_name, "dark_red") + "\n\nCHARACTERISTICS" + entity_characteristics + "\nRECOMMENDED COURSE OF ACTION" + entity_course_of_action
|
||||
#journal.entities_page.text += "\n\n\n" + entity_text
|
||||
journal.objectives_page.text = ""
|
||||
var objective_text: String
|
||||
for objective in Globals.objective_list:
|
||||
match objective:
|
||||
"its":
|
||||
objective_text = "[font_size=22][color=orange_red]- SMILING ENTITY -[/color][/font_size]\n\nAn entity with an alien smile seemed to take interest in me, and is likely to be able to take on other appearances. If a patient ever presents an [color=orange_red]abnormally wide smile[/color], immediate [color=dark_red]TERMINATION[/color] is required."
|
||||
"ite":
|
||||
objective_text = "[font_size=22][color=orange_red]- GLUTTONOUS ENTITY -[/color][/font_size]\n\nAn entity of distressing proportions looked to hunger for my flesh, and is likewise able to disguise itself. If a patient voices any intent to [color=orange_red]feast on my flesh[/color], immediate [color=dark_red]TERMINATION[/color] is required."
|
||||
"spy":
|
||||
objective_text = "[font_size=22][color=gold]- ALTERNATIVE ORDERS -[/color][/font_size]\n\nA mysterious individual has ordered us to [color=dark_green]RELEASE[/color] all patients " + Globals.colorize(Patient.spy.threshold, "dark_orange") + " the age of 40, and presenting " + Globals.colorize(Patient.spy.symptoms[0], "dark_orange") + " AND " + Globals.colorize(Patient.spy.symptoms[1], "dark_orange")
|
||||
"siveyan_1":
|
||||
objective_text = "[font_size=22][color=dark_orange]- PRIORITY TASK -[/color][/font_size]\n\nSupervisor Siveyan has been designated as a traitor to the Republic, and is to be [color=dark_red]TERMINATED[/color] on sight."
|
||||
"siveyan_1_terminated":
|
||||
objective_text = "[font_size=22][color=dark_orange]- PRIORITY TASK -[/color][/font_size]\n\nSupervisor Siveyan was terminated, in accordance with the 11th Law of Cleansing. The Republic shelters."
|
||||
"siveyan_1_released":
|
||||
objective_text = "[font_size=22][color=dark_orange]- PRIORITY TASK -[/color][/font_size]\n\nSupervisor Siveyan was released, in complete disregard of the 11th Law of Cleansing. What have I done ?"
|
||||
"siveyan_2_terminated":
|
||||
objective_text = "[font_size=22][color=dark_orange]- PRIORITY TASK -[/color][/font_size]\n\nSupervisor Siveyan was terminated at last. The Republic's Law prevails."
|
||||
"siveyan_2_released":
|
||||
objective_text = "[font_size=22][color=dark_orange]- PRIORITY TASK -[/color][/font_size]\n\nSupervisor Siveyan was released again, and serves once again the Republic."
|
||||
"it_that_sees":
|
||||
objective_text = "[font_size=22][color=dark_red]- ALERT #CORRUPTED FILE# DISREGARD TASK -[/color][/font_size]\n\nThe entity asked us to [color=dark_red]RELEASE[/color] all Abnormals, and [color=dark_green]TERMINATE[/color] all Humans. We shouldn't comply... right ?"
|
||||
|
||||
journal.objectives_page.text += "\n\n\n" + objective_text
|
||||
|
||||
|
||||
#Resets to initial state
|
||||
func reset():
|
||||
hide()
|
||||
update_symptoms(Globals.floor_count)
|
||||
update_entities(Globals.entities)
|
||||
if Globals.floor_count <= -2:
|
||||
bookmarks.entities.show()
|
||||
else:
|
||||
bookmarks.entities.hide()
|
||||
update_objectives()
|
||||
|
||||
|
||||
#Shows the rules tab
|
||||
@@ -132,16 +122,16 @@ func _on_tab_symptoms_pressed():
|
||||
tab_switch(bookmarks.symptoms, journal.symptoms)
|
||||
|
||||
|
||||
#Shows the entities tab
|
||||
func _on_tab_entities_pressed():
|
||||
tab_switch(bookmarks.entities, journal.entities)
|
||||
#Shows the objectives tab
|
||||
func _on_tab_objectives_pressed():
|
||||
tab_switch(bookmarks.objectives, journal.objectives)
|
||||
|
||||
|
||||
#Shows the correct screen according to the pressed tab
|
||||
func tab_switch(pressed_tab, tab_screen):
|
||||
|
||||
#Highlights pressed tab and unpress the others
|
||||
for tab in [bookmarks.rules, bookmarks.symptoms, bookmarks.entities]:
|
||||
for tab in [bookmarks.rules, bookmarks.symptoms, bookmarks.objectives]:
|
||||
if tab == pressed_tab:
|
||||
pressed_tab.set_pressed(true)
|
||||
pressed_tab.set_mouse_filter(Control.MOUSE_FILTER_IGNORE)
|
||||
@@ -150,7 +140,7 @@ func tab_switch(pressed_tab, tab_screen):
|
||||
tab.set_mouse_filter(Control.MOUSE_FILTER_STOP)
|
||||
|
||||
#Showing desired screen and hiding the others
|
||||
for screen in [journal.rules, journal.symptoms, journal.entities]:
|
||||
for screen in [journal.rules, journal.symptoms, journal.objectives]:
|
||||
if screen == tab_screen:
|
||||
screen.show()
|
||||
else:
|
||||
|
||||
@@ -7,14 +7,13 @@ func _ready() -> void:
|
||||
|
||||
|
||||
#Updates Middle Screen Info
|
||||
func update(floor_count, diagnoses_count, diagnoses_quota, misdiagnoses_allowed):
|
||||
func update(floor_count, patient_count, patient_quota):
|
||||
var floor = Globals.colorize(str(floor_count), "dark_orange")
|
||||
var diagnoses = Globals.colorize(str(diagnoses_count) + "/" + str(diagnoses_quota), "dark_orange")
|
||||
var misdiagnoses = Globals.colorize(str(misdiagnoses_allowed), "dark_orange")
|
||||
var patients_seen = Globals.colorize(str(patient_count) + "/" + str(patient_quota), "dark_orange")
|
||||
|
||||
text = "FLOOR: " + floor + "\n\nACCURATE DIAGNOSES: " + diagnoses + "\n\nMISDIAGNOSES ALLOWED: " + misdiagnoses
|
||||
text = "FLOOR: " + floor + "\n\nPATIENTS SEEN: " + patients_seen
|
||||
|
||||
|
||||
#Resets to initial state
|
||||
func reset():
|
||||
update(Globals.floor_count, Globals.accurate_diagnoses, Globals.diagnoses_quota, Globals.misdiagnoses_allowed)
|
||||
update(Globals.floor_count, Globals.patient_count, Globals.patient_quota)
|
||||
|
||||
@@ -35,14 +35,7 @@ var symptoms_arrays: Array[Array] = [
|
||||
#Lists of possible patients sorted by floor
|
||||
var og_patient_list : Array[Dictionary]
|
||||
var patient_list: Array[Dictionary]
|
||||
var og_its_list = ["its_01", "its_02", "its_03", "its_04"]
|
||||
var its_list = []
|
||||
var og_ite_list = ["ite_01", "ite_02", "ite_03", "ite_04"]
|
||||
var ite_list = []
|
||||
var og_entities_list = ["entity_01"]
|
||||
var patients_seen = []
|
||||
var its_seen = []
|
||||
var ite_seen = []
|
||||
|
||||
#Supervisor file path
|
||||
var supervisor_name = "siveyan"
|
||||
@@ -60,8 +53,6 @@ func _ready() -> void:
|
||||
#Setting up patient lists
|
||||
og_patient_list.resize(len(symptoms_arrays))
|
||||
patient_list.resize(len(symptoms_arrays))
|
||||
its_list = og_its_list
|
||||
ite_list = og_ite_list
|
||||
|
||||
original_color = texture.modulate #Saving original modulation color to reset it after modification
|
||||
|
||||
@@ -82,31 +73,17 @@ func build_dialog_tree(tree_model: Array[int]) -> Dictionary: #Builds the dialog
|
||||
return tree
|
||||
|
||||
|
||||
func load_patient(patient_info: Dictionary): #Loads new patient
|
||||
func load_patient(patient_id: String): #Loads new patient
|
||||
|
||||
#Storing patient info
|
||||
id = patient_info["id"]
|
||||
type = patient_info["type"]
|
||||
id = patient_id
|
||||
|
||||
#Loading Subject resources
|
||||
var file_path: String
|
||||
var config := ConfigFile.new()
|
||||
|
||||
match type: #Setting right file path depending on subject type
|
||||
"patient":
|
||||
file_path = "Patients/"
|
||||
"its":
|
||||
file_path = "ITS/"
|
||||
"ite":
|
||||
file_path = "ITE/"
|
||||
"entity":
|
||||
file_path = "Entities/"
|
||||
"supervisor":
|
||||
file_path = "Supervisors/"
|
||||
|
||||
config.load("res://Dialogues/" + file_path + id + "_file.cfg") #Loading Subject file
|
||||
dialogue_resource = load("res://Dialogues/" + file_path + id + ".dialogue") #Loading Dialogue Resource
|
||||
load_emotions(config, "res://Art/Subjects/" + file_path + id + "/" + id + "_") #Loading Subject emotions
|
||||
config.load("res://Dialogues/Patients/" + id + "_file.cfg") #Loading Subject file
|
||||
dialogue_resource = load("res://Dialogues/Patients/" + id + ".dialogue") #Loading Dialogue Resource
|
||||
load_emotions(config, "res://Art/Subjects/Patients/" + id + "/" + id + "_") #Loading Subject emotions
|
||||
|
||||
#Setting up Patient File
|
||||
var patient_name = config.get_value("", "name")
|
||||
@@ -167,8 +144,10 @@ func sort_patients():
|
||||
var config := ConfigFile.new()
|
||||
var file_path : String
|
||||
var patient_symptoms: Array
|
||||
var symptom_matched : bool
|
||||
var symptom_list: Array
|
||||
var symptom_matched : bool = false
|
||||
var symptom_list : Array
|
||||
var patient_type : String
|
||||
var min_floor : int
|
||||
|
||||
for patient_id in Globals.patient_list:
|
||||
|
||||
@@ -182,6 +161,17 @@ func sort_patients():
|
||||
patient_symptoms.append_array(symptom_list)
|
||||
print("Patient #" + patient_id + " symptom list: " + str(patient_symptoms))
|
||||
|
||||
patient_type = config.get_value("", "type")
|
||||
|
||||
#Sets up a minimum floor depending on patient type
|
||||
match patient_type:
|
||||
"patient":
|
||||
min_floor = 0
|
||||
"its":
|
||||
min_floor = 2
|
||||
"ite":
|
||||
min_floor = 4
|
||||
print(patient_id + " min_floor : " + str(min_floor))
|
||||
#Goes through the symptoms_arrays from the last to the first,
|
||||
#If a symptom matches with the patient symptoms,
|
||||
#Add that patient to the floors from that floor to the last one
|
||||
@@ -193,8 +183,9 @@ func sort_patients():
|
||||
print("Symptom matched: " + str(symptoms_arrays[j]) + " and " + str(symptom))
|
||||
break
|
||||
if symptom_matched:
|
||||
for k in range(j, symptoms_arrays.size()):
|
||||
og_patient_list[k].merge({patient_id: j+1}) # Adds the patient to every floor compatible, with a weighted odd
|
||||
print(patient_id + " threshold : " + str(max(j,min_floor)))
|
||||
for k in range(max(j,min_floor), symptoms_arrays.size()):
|
||||
og_patient_list[k].merge({patient_id: j+1+min_floor}) # Adds the patient to every floor compatible, with a weighted odd
|
||||
symptom_matched = false
|
||||
break
|
||||
|
||||
@@ -224,120 +215,54 @@ func weighted_random(patients: Dictionary):
|
||||
return null
|
||||
|
||||
|
||||
func generate_next_id(patient_type: String):
|
||||
func generate_next_id():
|
||||
|
||||
var floor_index = -Globals.floor_count -1
|
||||
print("Floor Index: " + str(floor_index))
|
||||
var next_id : String = ""
|
||||
var next_id : String
|
||||
|
||||
match patient_type:
|
||||
"patient":
|
||||
next_id = weighted_random(patient_list[floor_index]) #Picks a random patient depending on floor, with weighted odds
|
||||
print("Patient selected : " + str(next_id))
|
||||
"its":
|
||||
next_id = its_list.pick_random()
|
||||
print("ITS selected: " + str(next_id))
|
||||
"ite":
|
||||
next_id = ite_list.pick_random()
|
||||
print("ITE selected: " + str(next_id))
|
||||
next_id = weighted_random(patient_list[floor_index]) #Picks a random patient depending on floor, with weighted odds
|
||||
print("Floor Index: " + str(floor_index))
|
||||
print("Patient selected : " + str(next_id))
|
||||
|
||||
return next_id
|
||||
|
||||
|
||||
func next_patient() -> Dictionary: #Decides next patient ID
|
||||
func next_patient() -> String: #Decides next patient ID
|
||||
|
||||
var next_id: String
|
||||
var next_type: String
|
||||
|
||||
dialogue_start = "start"
|
||||
match Globals.floor_count:
|
||||
-2:
|
||||
if Globals.patient_count == 0:
|
||||
next_id = "its_00"
|
||||
next_type = "its"
|
||||
next_id = "patient_its_0"
|
||||
else:
|
||||
next_type = next_patient_type()
|
||||
next_id = generate_next_id(next_type)
|
||||
next_id = generate_next_id()
|
||||
-3:
|
||||
next_type = next_patient_type()
|
||||
next_id = generate_next_id(next_type)
|
||||
next_id = generate_next_id()
|
||||
-4:
|
||||
if Globals.patient_count == 0:
|
||||
next_id = "ite_00"
|
||||
next_type = "ite"
|
||||
next_id = "patient_ite_0"
|
||||
else:
|
||||
next_type = next_patient_type()
|
||||
next_id = generate_next_id(next_type)
|
||||
-5:
|
||||
next_id = generate_next_id()
|
||||
-6:
|
||||
if Globals.patient_count == 0:
|
||||
next_id = "patient_spy"
|
||||
next_type = "patient"
|
||||
else:
|
||||
next_type = next_patient_type()
|
||||
next_id = generate_next_id(next_type)
|
||||
next_id = generate_next_id()
|
||||
_:
|
||||
next_type = next_patient_type()
|
||||
next_id = generate_next_id(next_type)
|
||||
next_id = generate_next_id()
|
||||
|
||||
print("NEXT SUBJECT CHARACTERISTICS - ID: " + next_id + ", Type: " + next_type)
|
||||
return {"id": next_id, "type": next_type}
|
||||
|
||||
|
||||
#Randomizes next patient type (human, it, its)
|
||||
func next_patient_type():
|
||||
var type_list = []
|
||||
var next_type: String
|
||||
match Globals.floor_count:
|
||||
-1:
|
||||
type_list.append("patient")
|
||||
-2:
|
||||
type_list.append("patient")
|
||||
-3:
|
||||
for i in range(int(Globals.diagnoses_quota)):
|
||||
if len(its_list) > 0:
|
||||
type_list.append("its")
|
||||
-4:
|
||||
for i in range(int(Globals.diagnoses_quota)):
|
||||
if len(its_list) > 0:
|
||||
type_list.append("its")
|
||||
-5:
|
||||
for i in range(int(Globals.diagnoses_quota)):
|
||||
if len(its_list) > 0:
|
||||
type_list.append("its")
|
||||
if len(ite_list) > 0:
|
||||
type_list.append("ite")
|
||||
_:
|
||||
for i in range(int(Globals.diagnoses_quota)):
|
||||
if len(its_list) > 0:
|
||||
type_list.append("its")
|
||||
if len(ite_list) > 0:
|
||||
type_list.append("ite")
|
||||
|
||||
for i in range(2*int(Globals.diagnoses_quota)):
|
||||
type_list.append("patient")
|
||||
|
||||
print("Type List generated: " + str(type_list))
|
||||
next_type = type_list.pick_random()
|
||||
print("Next subject type picked: " + str(next_type))
|
||||
return next_type
|
||||
print("NEXT SUBJECT ID: " + next_id)
|
||||
return next_id
|
||||
|
||||
|
||||
#Erases current subject ID from the corresponding subject list, so it can't be seen twice
|
||||
func update_list():
|
||||
print("Patient type: " + str(Patient.type))
|
||||
match type:
|
||||
"patient":
|
||||
patients_seen.append(id)
|
||||
for i in range(len(patient_list)):
|
||||
if len(patient_list[i])>1:
|
||||
patient_list[i].erase(id)
|
||||
for j in range(len(patient_list)):
|
||||
print("Updated Floor " + str(j) + " patient list: " + str(patient_list[j]))
|
||||
"its":
|
||||
its_seen.append(id)
|
||||
its_list.erase(id)
|
||||
print("Updated ITS list: " + str(its_list))
|
||||
"ite":
|
||||
ite_seen.append(id)
|
||||
ite_list.erase(id)
|
||||
print("Updated ITE list: " + str(ite_list))
|
||||
|
||||
patients_seen.append(id)
|
||||
for i in range(len(patient_list)):
|
||||
if len(patient_list[i])>1:
|
||||
patient_list[i].erase(id)
|
||||
for j in range(len(patient_list)):
|
||||
print("Updated Floor " + str(j) + " patient list: " + str(patient_list[j]))
|
||||
|
||||
@@ -5,9 +5,10 @@ extends Control
|
||||
@onready var room = $Room
|
||||
@onready var backwall = $Backwall
|
||||
@onready var backwall_animation = $Backwall/BackwallAnimation
|
||||
@onready var cell_top = $CellTop
|
||||
@onready var cell_bot = $CellBot
|
||||
@onready var cell_animation = $CellAnimation
|
||||
@onready var cell_door = $CellDoor
|
||||
@onready var cell_top = $CellDoor/CellTop
|
||||
@onready var cell_bot = $CellDoor/CellBot
|
||||
@onready var cell_animation = $CellDoor/CellAnimation
|
||||
|
||||
|
||||
# Called when the node enters the scene tree for the first time.
|
||||
@@ -18,7 +19,7 @@ func _ready() -> void:
|
||||
#Resets to initial state
|
||||
func reset():
|
||||
cell_wall.modulate = Patient.original_color
|
||||
for node in [cell_wall, cell_top, cell_bot]:
|
||||
for node in [cell_wall, cell_door]:
|
||||
node.hide()
|
||||
for node in [glass, room, backwall]:
|
||||
node.show()
|
||||
|
||||
@@ -12,7 +12,7 @@ extends Control
|
||||
@onready var patient_color: Color
|
||||
@onready var computer = $LowerHalf/Computer
|
||||
@onready var middle_screen = $LowerHalf/MiddleScreen/MarginContainer/MiddleScreen
|
||||
@onready var console_screen = $LowerHalf/Console/Margin/ConsoleScreen
|
||||
@onready var console = $LowerHalf/Console
|
||||
@onready var room_assets = $RoomAssets
|
||||
|
||||
#DialogueAssets
|
||||
@@ -29,7 +29,7 @@ func _ready() -> void:
|
||||
main = get_parent()
|
||||
|
||||
#Connecting signals
|
||||
computer.next_patient_button.pressed.connect(self._on_call_next_patient_pressed)
|
||||
console.next_patient_button.pressed.connect(self._on_call_next_patient_pressed)
|
||||
red_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)
|
||||
@@ -37,6 +37,7 @@ func _ready() -> void:
|
||||
Globals.decision_made.connect(self._on_decision_made)
|
||||
Globals.color_change.connect(self._on_color_change)
|
||||
Globals.next_event.connect(self.event_manager)
|
||||
Globals.add_objective.connect(journal_layer.add_objective)
|
||||
|
||||
room_assets.reset()
|
||||
hide() #Hiding ScreeningDesk
|
||||
@@ -50,8 +51,7 @@ func event_manager():
|
||||
"interfloor":
|
||||
supervisor.dialogue("interfloor_" + str(-Globals.floor_count-1))
|
||||
"next_patient":
|
||||
console_screen.display(Globals.directives)
|
||||
computer.next_patient_button.show()
|
||||
console.next_patient_button.show()
|
||||
"descend":
|
||||
descend_floor()
|
||||
"supervisor":
|
||||
@@ -62,7 +62,6 @@ func _on_call_next_patient_pressed(): #Brings in next patient and sets up the de
|
||||
|
||||
#Selecting next patient
|
||||
Patient.load_patient(Patient.next_patient())
|
||||
#Patient.load_patient({"id": "entity_01", "type": "entity"}) #Line for testing purposes
|
||||
|
||||
#Updating patient information
|
||||
computer.patient_file.text = Patient.file_text
|
||||
@@ -70,21 +69,18 @@ func _on_call_next_patient_pressed(): #Brings in next patient and sets up the de
|
||||
patient.texture = Patient.image
|
||||
|
||||
#Hiding the next_patient button
|
||||
var scenes_to_hide = [computer.next_patient_button, supervisor]
|
||||
var scenes_to_hide = [console.next_patient_button, supervisor]
|
||||
for scenes in scenes_to_hide:
|
||||
scenes.hide()
|
||||
|
||||
# Shows transition messages on computer and console
|
||||
var message : String
|
||||
message = Globals.colorize("COMPUTING CELL TRANSLATION...", "orange_red")
|
||||
computer.display(message)
|
||||
message = Globals.colorize("- BRINGING IN NEXT PATIENT -", "dark_orange")
|
||||
console_screen.display(message)
|
||||
message = Globals.colorize("COMPUTING CELL TRANSLATION...\n\n\n- BRINGING IN NEXT PATIENT -", "dark_orange")
|
||||
console.display(message)
|
||||
|
||||
#Shutters entry animation
|
||||
room_assets.cell_door.show()
|
||||
room_assets.cell_animation.play("incoming")
|
||||
room_assets.cell_top.show()
|
||||
room_assets.cell_bot.show()
|
||||
await room_assets.cell_animation.animation_finished
|
||||
|
||||
#Showing the Patient and the Backroom
|
||||
@@ -95,8 +91,7 @@ func _on_call_next_patient_pressed(): #Brings in next patient and sets up the de
|
||||
#Opening Shutters
|
||||
room_assets.cell_animation.play("open")
|
||||
await room_assets.cell_animation.animation_finished
|
||||
room_assets.cell_top.hide()
|
||||
room_assets.cell_bot.hide()
|
||||
room_assets.cell_door.hide()
|
||||
|
||||
#Activating Buttons
|
||||
green_button.set_disabled(false)
|
||||
@@ -107,24 +102,15 @@ func _on_call_next_patient_pressed(): #Brings in next patient and sets up the de
|
||||
terminate.text = Globals.colorize("TERMINATE", "dark_red")
|
||||
|
||||
#Starting Dialogue and hiding console screen
|
||||
computer.screen.hide()
|
||||
console_screen.hide()
|
||||
console.screen.hide()
|
||||
main.start_balloon("screening", "patient", Patient.dialogue_resource, Patient.dialogue_start)
|
||||
|
||||
#Showing Computer Tabs and showing Patient File Screen by default
|
||||
for tab in computer.tab_list:
|
||||
tab.show()
|
||||
tab.set_mouse_filter(Control.MOUSE_FILTER_STOP)
|
||||
computer.patient_file.show()
|
||||
computer.tab_switch(computer.tab_patient_file, computer.patient_file)
|
||||
|
||||
|
||||
#Starts release or termination protocols when the corresponding button is pressed
|
||||
func _on_decision_made(choice: String):
|
||||
|
||||
#Hiding computer tabs screen
|
||||
for node in computer.tab_list + computer.screen_list:
|
||||
node.hide()
|
||||
|
||||
#Setting up console and computer displays
|
||||
if choice == "release":
|
||||
release.text = Globals.colorize("RELEASE", "green") #Highlighting the decision
|
||||
@@ -132,8 +118,7 @@ func _on_decision_made(choice: String):
|
||||
elif choice == "terminate":
|
||||
terminate.text = Globals.colorize("TERMINATE", "red") #Highlighting the decision
|
||||
message_array = Globals.terminate_messages
|
||||
console_screen.display(message_array[0])
|
||||
computer.display(message_array[2])
|
||||
console.display(message_array[0])
|
||||
|
||||
#Disabling Buttons
|
||||
green_button.set_mouse_filter(Control.MOUSE_FILTER_IGNORE)
|
||||
@@ -153,19 +138,22 @@ func _on_clear_patient(choice:String):
|
||||
elif (Patient.abnormal == true and choice == "terminate") or (Patient.abnormal == false and choice == "release"):
|
||||
Globals.accurate_diagnoses += 1
|
||||
else:
|
||||
Globals.accurate_diagnoses = 0 # Resetting to 0 if the player makes a wrong diagnosis
|
||||
Globals.misdiagnoses += 1
|
||||
Globals.misdiagnoses_allowed -= 1 #Reducing remaining mistakes allowed if the player makes a wrong diagnosis
|
||||
middle_screen.update(Globals.floor_count, Globals.accurate_diagnoses, Globals.diagnoses_quota, Globals.misdiagnoses_allowed) #Updating middle screen info
|
||||
|
||||
|
||||
Patient.update_list() #Updating patient list
|
||||
Globals.patient_count += 1 #Updating patient_count
|
||||
|
||||
#Updating middle screen info
|
||||
middle_screen.update(Globals.floor_count, Globals.patient_count, Globals.patient_quota)
|
||||
#Updating statistics tab
|
||||
computer.update_statistics(Globals.accurate_diagnoses, Globals.misdiagnoses)
|
||||
|
||||
#Showing second console message
|
||||
console_screen.display(message_array[1])
|
||||
console.display(message_array[1])
|
||||
|
||||
#Closing Shutters
|
||||
room_assets.cell_top.show()
|
||||
room_assets.cell_bot.show()
|
||||
room_assets.cell_door.show()
|
||||
room_assets.cell_animation.play("close")
|
||||
await room_assets.cell_animation.animation_finished
|
||||
|
||||
@@ -180,12 +168,12 @@ func _on_clear_patient(choice:String):
|
||||
#Resetting the scene
|
||||
reset()
|
||||
|
||||
#GameOver is too many misdiagnoses
|
||||
if Globals.misdiagnoses_allowed == -1:
|
||||
#GameOver if too many misdiagnoses were made
|
||||
if Globals.misdiagnoses_allowed == -1 and Globals.misdiagnoses_game_over:
|
||||
UI.game_over.reveal("YOU MADE TOO MANY MISTAKES")
|
||||
|
||||
#Descending Floor if diagnoses_quota reached
|
||||
if Globals.accurate_diagnoses == Globals.diagnoses_quota:
|
||||
#Descending Floor if patient_quota is reached
|
||||
if Globals.patient_count == Globals.patient_quota:
|
||||
Globals.event_index = "descend"
|
||||
|
||||
event_manager()
|
||||
@@ -210,15 +198,16 @@ func descend_floor(): #Descends to next floor
|
||||
#Updating Global variables
|
||||
Globals.event_index = "interfloor"
|
||||
Globals.floor_count -= 1
|
||||
Globals.accurate_diagnoses = 0
|
||||
Globals.patient_count = 0
|
||||
|
||||
if Globals.floor_count >= -3: #Resetting misdiagnoses allowance for the first few floors
|
||||
Globals.misdiagnoses_allowed = 2
|
||||
|
||||
#Displaying information on screens
|
||||
var message : String
|
||||
message = Globals.colorize("DIAGNOSES QUOTA REACHED", "green_yellow") + "\n\n" + "SECURITY CLEARANCE UPDATED" + "\n\n" + Globals.colorize("ACCESS TO NEXT FLOOR AUTHORIZED", "green")
|
||||
computer.display(message)
|
||||
message = Globals.colorize("- DESCENT PROTOCOL INITIATED -\n\n- TRANSLATING TO NEXT FLOOR -", "dark_orange")
|
||||
console_screen.display(message)
|
||||
message = Globals.colorize("PATIENT QUOTA REACHED", "green_yellow") + "\n\n" + "SECURITY CLEARANCE UPDATED" + "\n\n" + Globals.colorize("ACCESS TO NEXT FLOOR AUTHORIZED", "green")
|
||||
message += Globals.colorize("\n\n\n\n- DESCENT PROTOCOL INITIATED -\n\n- TRANSLATING TO NEXT FLOOR -", "dark_orange")
|
||||
console.display(message)
|
||||
|
||||
#Descending animation
|
||||
room_assets.backwall_animation.play("going_down_1")
|
||||
@@ -226,7 +215,7 @@ func descend_floor(): #Descends to next floor
|
||||
room_assets.backwall_animation.play("going_down_2")
|
||||
await room_assets.backwall_animation.animation_finished
|
||||
|
||||
for node in [middle_screen, computer, console_screen, journal_layer]:
|
||||
for node in [middle_screen, computer, console, journal_layer]:
|
||||
node.reset() #Resetting the scene
|
||||
main.save_game(0) #Autosaving
|
||||
event_manager() #Selecting next event
|
||||
@@ -234,6 +223,6 @@ func descend_floor(): #Descends to next floor
|
||||
|
||||
#Resets to initial state
|
||||
func reset():
|
||||
for node in [patient, supervisor, Patient.spy, journal_layer, computer, console_screen, middle_screen, release, terminate,
|
||||
for node in [patient, supervisor, journal_layer, computer, console, middle_screen, release, terminate,
|
||||
green_button, red_button, room_assets]:
|
||||
node.reset()
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
[gd_scene load_steps=67 format=3 uid="uid://chytk2cctjk3x"]
|
||||
[gd_scene load_steps=70 format=3 uid="uid://chytk2cctjk3x"]
|
||||
|
||||
[ext_resource type="Script" uid="uid://b3ms0imu0umn8" path="res://Scenes/screening_desk/screening_desk.gd" id="1_1s7k3"]
|
||||
[ext_resource type="Script" uid="uid://dcax2vggaexnr" path="res://Scenes/screening_desk/journal_layer.gd" id="3_8gteb"]
|
||||
@@ -23,7 +23,6 @@
|
||||
[ext_resource type="Script" uid="uid://chhh7v5iwiqw2" path="res://Scenes/screening_desk/computer.gd" id="11_ysguw"]
|
||||
[ext_resource type="Texture2D" uid="uid://cqn1o6cff1g4k" path="res://Art/Rooms/screening_room/red_button.png" id="12_7mvev"]
|
||||
[ext_resource type="Texture2D" uid="uid://dja217ihoi5rb" path="res://Art/Rooms/screening_room/green_button_hover.png" id="12_rpmuh"]
|
||||
[ext_resource type="Script" uid="uid://cyennu12fufbt" path="res://Scenes/screening_desk/console_screen.gd" id="12_ylm1s"]
|
||||
[ext_resource type="Texture2D" uid="uid://kfq5b58sicqf" path="res://Art/Rooms/screening_room/red_button_pressed.png" id="13_lq4cy"]
|
||||
[ext_resource type="FontFile" uid="uid://dv8ppra5tgn1t" path="res://Art/Fonts/PixelatedEleganceRegular-ovyAA.ttf" id="14_0pvwy"]
|
||||
[ext_resource type="Script" uid="uid://nj1oo2nh44dh" path="res://Scenes/screening_desk/green_button.gd" id="15_6lou7"]
|
||||
@@ -32,6 +31,7 @@
|
||||
[ext_resource type="Texture2D" uid="uid://1djtmkdqtplt" path="res://Art/Rooms/screening_room/journal_pressed.png" id="18_gv516"]
|
||||
[ext_resource type="Script" uid="uid://cmbmtqoh5iytr" path="res://Scenes/screening_desk/red_button.gd" id="19_63o5x"]
|
||||
[ext_resource type="Texture2D" uid="uid://b7tbgcyxjj516" path="res://Art/Rooms/screening_room/journal_hover.png" id="19_ar3nk"]
|
||||
[ext_resource type="Script" uid="uid://d08500s1loqcr" path="res://Scenes/screening_desk/console.gd" id="19_x8y1p"]
|
||||
[ext_resource type="BitMap" uid="uid://byqmvpivmvsnl" path="res://Art/Rooms/screening_room/journal_bitmap.png" id="20_5vhu5"]
|
||||
[ext_resource type="Script" uid="uid://bvi3qtmbubkck" path="res://Scenes/screening_desk/release.gd" id="20_43vqp"]
|
||||
[ext_resource type="Script" uid="uid://dcjfpyxp3hqg8" path="res://Scenes/screening_desk/terminate.gd" id="21_w70jd"]
|
||||
@@ -99,6 +99,30 @@ shader_parameter/softness = 0.05
|
||||
|
||||
[sub_resource type="StyleBoxEmpty" id="StyleBoxEmpty_ysguw"]
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_255ay"]
|
||||
bg_color = Color(0.11764706, 0.11764706, 0.11764706, 1)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(1, 0.27450982, 0, 1)
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_x8y1p"]
|
||||
bg_color = Color(0.3529412, 0.3529412, 0.3529412, 1)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(1, 0.50980395, 0, 1)
|
||||
|
||||
[sub_resource type="StyleBoxFlat" id="StyleBoxFlat_w4r3h"]
|
||||
bg_color = Color(0.23529412, 0.23529412, 0.23529412, 1)
|
||||
border_width_left = 2
|
||||
border_width_top = 2
|
||||
border_width_right = 2
|
||||
border_width_bottom = 2
|
||||
border_color = Color(1, 0.39215687, 0, 1)
|
||||
|
||||
[sub_resource type="Animation" id="Animation_ub1ft"]
|
||||
length = 0.001
|
||||
tracks/0/type = "value"
|
||||
@@ -170,7 +194,7 @@ tracks/0/keys = {
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../CellTop:position")
|
||||
tracks/1/path = NodePath("CellTop:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
@@ -179,33 +203,57 @@ tracks/1/keys = {
|
||||
"update": 0,
|
||||
"values": [Vector2(-2540, -540)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("CellBot:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 1350)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_l4uk7"]
|
||||
resource_name = "going_up"
|
||||
length = 3.0
|
||||
length = 2.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:position")
|
||||
tracks/0/path = NodePath("CellTop:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(1, 3),
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(0.5, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, 1540), Vector2(-540, 540)]
|
||||
"values": [Vector2(0, -600), Vector2(0, 0)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../CellTop:position")
|
||||
tracks/1/path = NodePath("CellBot:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(1, 3),
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(0.5, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, -1810), Vector2(-540, -810)]
|
||||
"values": [Vector2(0, 1950), Vector2(0, 1350)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath(".:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, -810)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_hb6p3"]
|
||||
@@ -221,19 +269,31 @@ tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(0.4, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-3540, 540), Vector2(-540, 540)]
|
||||
"values": [Vector2(-3540, -810), Vector2(-540, -810)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../CellTop:position")
|
||||
tracks/1/path = NodePath("CellTop:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(0.4, 1),
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-3540, -810), Vector2(-540, -810)]
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("CellBot:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 1350)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_el1v6"]
|
||||
@@ -242,6 +302,46 @@ length = 2.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("CellTop:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(3, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 0), Vector2(0, -600)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("CellBot:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(3, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 1350), Vector2(0, 1950)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath(".:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, -810)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_4lwtm"]
|
||||
resource_name = "going_up"
|
||||
length = 2.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath(".:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
@@ -249,47 +349,31 @@ tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(3, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, 540), Vector2(-540, 1540)]
|
||||
"values": [Vector2(-540, -810), Vector2(-540, -3460)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath("../CellTop:position")
|
||||
tracks/1/path = NodePath("CellTop:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(3, 1),
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, -810), Vector2(-540, -1810)]
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_4lwtm"]
|
||||
resource_name = "going_up"
|
||||
length = 3.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../CellTop:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(3, 1),
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("CellBot:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, -810), Vector2(-540, -4810)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 3),
|
||||
"transitions": PackedFloat32Array(3, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, 540), Vector2(-540, -3460)]
|
||||
"values": [Vector2(0, 1350)]
|
||||
}
|
||||
|
||||
[sub_resource type="Animation" id="Animation_hebek"]
|
||||
@@ -298,26 +382,38 @@ length = 2.0
|
||||
tracks/0/type = "value"
|
||||
tracks/0/imported = false
|
||||
tracks/0/enabled = true
|
||||
tracks/0/path = NodePath("../CellTop:position")
|
||||
tracks/0/path = NodePath(".:position")
|
||||
tracks/0/interp = 1
|
||||
tracks/0/loop_wrap = true
|
||||
tracks/0/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(10, 1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, -810), Vector2(-540, 5190)]
|
||||
"values": [Vector2(-540, -810), Vector2(-540, 5540)]
|
||||
}
|
||||
tracks/1/type = "value"
|
||||
tracks/1/imported = false
|
||||
tracks/1/enabled = true
|
||||
tracks/1/path = NodePath(".:position")
|
||||
tracks/1/path = NodePath("CellTop:position")
|
||||
tracks/1/interp = 1
|
||||
tracks/1/loop_wrap = true
|
||||
tracks/1/keys = {
|
||||
"times": PackedFloat32Array(0, 2),
|
||||
"transitions": PackedFloat32Array(10, 1),
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(-540, 540), Vector2(-540, 5540)]
|
||||
"values": [Vector2(0, 0)]
|
||||
}
|
||||
tracks/2/type = "value"
|
||||
tracks/2/imported = false
|
||||
tracks/2/enabled = true
|
||||
tracks/2/path = NodePath("CellBot:position")
|
||||
tracks/2/interp = 1
|
||||
tracks/2/loop_wrap = true
|
||||
tracks/2/keys = {
|
||||
"times": PackedFloat32Array(0),
|
||||
"transitions": PackedFloat32Array(1),
|
||||
"update": 0,
|
||||
"values": [Vector2(0, 1350)]
|
||||
}
|
||||
|
||||
[sub_resource type="AnimationLibrary" id="AnimationLibrary_vh6fv"]
|
||||
@@ -347,6 +443,7 @@ visible = false
|
||||
script = ExtResource("3_8gteb")
|
||||
|
||||
[node name="Mask" type="TextureRect" parent="JournalLayer"]
|
||||
visible = false
|
||||
modulate = Color(1, 1, 1, 0.52549)
|
||||
custom_minimum_size = Vector2(2000, 2000)
|
||||
anchors_preset = 15
|
||||
@@ -402,12 +499,12 @@ layout_mode = 2
|
||||
size_flags_stretch_ratio = 0.24
|
||||
theme_override_constants/separation = -35
|
||||
|
||||
[node name="Entities" type="Control" parent="JournalLayer/Boundaries/VBoxContainer/Bookmarks/HBoxContainer/HBoxContainer"]
|
||||
[node name="Objectives" type="Control" parent="JournalLayer/Boundaries/VBoxContainer/Bookmarks/HBoxContainer/HBoxContainer"]
|
||||
custom_minimum_size = Vector2(240, 75)
|
||||
layout_mode = 2
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="Bookmark" type="TextureButton" parent="JournalLayer/Boundaries/VBoxContainer/Bookmarks/HBoxContainer/HBoxContainer/Entities"]
|
||||
[node name="Bookmark" type="TextureButton" parent="JournalLayer/Boundaries/VBoxContainer/Bookmarks/HBoxContainer/HBoxContainer/Objectives"]
|
||||
z_index = 1
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
@@ -422,7 +519,7 @@ texture_pressed = ExtResource("5_vrfmd")
|
||||
texture_hover = ExtResource("6_255ay")
|
||||
texture_disabled = ExtResource("4_auw4h")
|
||||
|
||||
[node name="Text" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Bookmarks/HBoxContainer/HBoxContainer/Entities"]
|
||||
[node name="Text" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Bookmarks/HBoxContainer/HBoxContainer/Objectives"]
|
||||
z_index = 1
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
@@ -432,7 +529,7 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
mouse_filter = 2
|
||||
bbcode_enabled = true
|
||||
text = "ENTITIES"
|
||||
text = "OBJECTIVES"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
@@ -572,7 +669,7 @@ text = "- THE INSTRUCTIONS ON THE RIGHT PAGE ARE TO BE FOLLOWED RIGOROUSLY.
|
||||
|
||||
- FAILURE TO COMPLY MAY YIELD UNWANTED RESULTS.
|
||||
|
||||
- THE REPUBLIC DECLINES ALL RESPONSIBILITY REGARDING EMPLOYEES' ADVERSE EVENTS, AS PER ARTICLE 3.187 CODE 15C.
|
||||
- THE REPUBLIC DECLINES ALL RESPONSIBILITY REGARDING EMPLOYEES' ADVERSE EVENTS, AS PER ARTICLE 3.187, CODE 15C, 47TH LAW OF THE REPUBLIC
|
||||
|
||||
- AS AN EMPLOYEE, YOUR WELL-BEING IS OUR ABSOLUTE PRIORITY. YOU [color=forest_green]MATTER[/color].
|
||||
|
||||
@@ -618,9 +715,7 @@ text = "- SUBJECTS HAVE BEEN PRE-SCREENED AND DIAGNOSED WITH [color=orange_red]S
|
||||
|
||||
- YOU MAY CHOOSE TO [color=forest_green]RELEASE[/color] or [color=red]TERMINATE[/color] A SUBJECT AT ANY TIME OF YOUR ASSESSMENT.
|
||||
|
||||
- IF YOU IDENTIFY A SYMPTOM [color=orange_red]THAT WAS NOT DETECTED BY PRE-SCREENING[/color], [color=red]TERMINATE[/color] THE SUBJECT.
|
||||
|
||||
- SUCCESSFULLY DIAGNOSE ENOUGH SUBJECTS [color=orange_red]IN A ROW[/color] TO PROGRESS TO THE NEXT FLOOR."
|
||||
- IF YOU IDENTIFY A SYMPTOM [color=orange_red]THAT WAS NOT DETECTED BY PRE-SCREENING[/color], [color=red]TERMINATE[/color] THE SUBJECT."
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Symptoms" type="HBoxContainer" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer"]
|
||||
@@ -723,25 +818,25 @@ Deliberate injury to one's own body
|
||||
HETERO-AGRESSIVE BEHAVIOUR
|
||||
Hostility, verbal agression, threats"
|
||||
|
||||
[node name="Entities" type="HBoxContainer" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer"]
|
||||
[node name="Objectives" type="HBoxContainer" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/separation = 90
|
||||
|
||||
[node name="LeftPage" type="VBoxContainer" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Entities"]
|
||||
[node name="LeftPage" type="VBoxContainer" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Objectives"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="PageTitle" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Entities/LeftPage"]
|
||||
[node name="PageTitle" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Objectives/LeftPage"]
|
||||
custom_minimum_size = Vector2(0, 150)
|
||||
layout_mode = 2
|
||||
size_flags_stretch_ratio = 0.1
|
||||
theme_override_font_sizes/normal_font_size = 28
|
||||
bbcode_enabled = true
|
||||
text = "
|
||||
[center]ENTITIES[/center]"
|
||||
[center]OBJECTIVES[/center]"
|
||||
|
||||
[node name="Instructions" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Entities/LeftPage"]
|
||||
[node name="Instructions" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Objectives/LeftPage"]
|
||||
custom_minimum_size = Vector2(0, 400)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 4
|
||||
@@ -749,17 +844,16 @@ theme_override_constants/line_separation = 5
|
||||
theme_override_constants/paragraph_separation = 5
|
||||
theme_override_font_sizes/normal_font_size = 20
|
||||
bbcode_enabled = true
|
||||
text = "- BEINGS OF [color=red]INHUMAN NATURE[/color] HAVE BEEN DETECTED HIDING AMONGST THE SUBJECTS APPREHENDED IN THIS FACILITY.
|
||||
text = "[center]- OBEY THE DIRECTIVES -[/center]
|
||||
|
||||
- ALTHOUGH THEIR MOTIVES ARE UNKNOWN, SOME BEHAVIOUR [color=orange_red]PATTERNS[/color] HAVE BEEN IDENTIFIED.
|
||||
|
||||
- FOLLOWING THE RECOMMENDED COURSE OF ACTION IS [color=forest_green]HIGHLY RECOMMENDED[/color] IN ORDER TO PRESERVE YOUR WELL-BEING.
|
||||
- [color=dark_green]RELEASE[/color] HUMAN PATIENTS
|
||||
|
||||
- [color=red]TERMINATE[/color] THEM AS SOON AS POSSIBLE.
|
||||
- [color=dark_red]TERMINATE[/color] ABNORMALS
|
||||
|
||||
- ALL ENTITIES [color=orange_red]DETECTED ON YOUR CURRENT FLOOR[/color] ARE LISTED ON THE RIGHT."
|
||||
"
|
||||
|
||||
[node name="Slogan" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Entities/LeftPage"]
|
||||
[node name="Slogan" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Objectives/LeftPage"]
|
||||
custom_minimum_size = Vector2(0, 100)
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 6
|
||||
@@ -770,7 +864,7 @@ text = "[color=dark_blue]THE REPUBLIC SHELTERS[/color]"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="CloseManual" type="Button" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Entities/LeftPage"]
|
||||
[node name="CloseManual" type="Button" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Objectives/LeftPage"]
|
||||
custom_minimum_size = Vector2(200, 60)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
@@ -778,26 +872,17 @@ size_flags_vertical = 6
|
||||
theme = SubResource("Theme_cjapy")
|
||||
text = "Close manual"
|
||||
|
||||
[node name="RightPage" type="VBoxContainer" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Entities"]
|
||||
[node name="RightPage" type="VBoxContainer" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Objectives"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
|
||||
[node name="Entities" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Entities/RightPage"]
|
||||
[node name="Objectives" type="RichTextLabel" parent="JournalLayer/Boundaries/VBoxContainer/Journal/MarginContainer/Objectives/RightPage"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
theme_override_constants/paragraph_separation = 1
|
||||
theme_override_font_sizes/normal_font_size = 18
|
||||
theme_override_constants/line_separation = 5
|
||||
theme_override_constants/paragraph_separation = 5
|
||||
theme_override_font_sizes/normal_font_size = 20
|
||||
bbcode_enabled = true
|
||||
text = "[color=dark_red]IT THAT SMILES[/color]
|
||||
|
||||
CHARACTERISTICS
|
||||
- Wide smile, dark-red mouth, lack of teeth
|
||||
- Disguises as a human subject
|
||||
|
||||
RECOMMENDED COURSE OF ACTION
|
||||
- As soon as it smiles, [color=red]TERMINATE[/color] It.
|
||||
- [color=dim_gray]DO NOT TERMINATE IT, RELEASE IT.[/color]
|
||||
"
|
||||
|
||||
[node name="UpperHalf" type="Control" parent="."]
|
||||
layout_mode = 1
|
||||
@@ -923,15 +1008,6 @@ theme_override_font_sizes/font_size = 16
|
||||
toggle_mode = true
|
||||
text = "SUBJECT FILE"
|
||||
|
||||
[node name="Rules" type="Button" parent="LowerHalf/Computer/Margin/ComputerScreen/Tabs"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme = ExtResource("8_hxrv4")
|
||||
theme_override_fonts/font = ExtResource("14_0pvwy")
|
||||
theme_override_font_sizes/font_size = 16
|
||||
toggle_mode = true
|
||||
text = "RULES"
|
||||
|
||||
[node name="Recording" type="Button" parent="LowerHalf/Computer/Margin/ComputerScreen/Tabs"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
@@ -941,6 +1017,15 @@ theme_override_font_sizes/font_size = 16
|
||||
toggle_mode = true
|
||||
text = "RECORDING"
|
||||
|
||||
[node name="Statistics" type="Button" parent="LowerHalf/Computer/Margin/ComputerScreen/Tabs"]
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
theme = ExtResource("8_hxrv4")
|
||||
theme_override_fonts/font = ExtResource("14_0pvwy")
|
||||
theme_override_font_sizes/font_size = 16
|
||||
toggle_mode = true
|
||||
text = "STATISTICS"
|
||||
|
||||
[node name="ComputerTabs" type="MarginContainer" parent="LowerHalf/Computer/Margin/ComputerScreen"]
|
||||
layout_mode = 2
|
||||
size_flags_vertical = 3
|
||||
@@ -973,24 +1058,6 @@ ANXIETY[/color]
|
||||
"
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Rules" type="RichTextLabel" parent="LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs"]
|
||||
visible = false
|
||||
z_index = 1
|
||||
layout_mode = 2
|
||||
theme_override_constants/line_separation = 5
|
||||
theme_override_fonts/normal_font = ExtResource("14_0pvwy")
|
||||
theme_override_fonts/italics_font = ExtResource("14_0pvwy")
|
||||
theme_override_font_sizes/normal_font_size = 16
|
||||
theme_override_font_sizes/italics_font_size = 16
|
||||
bbcode_enabled = true
|
||||
text = " 1- Pre-screening psychiatric assessment identified [color=dark_orange]SYMPTOMS[/color] in every patient.
|
||||
|
||||
2- If [color=dark_orange]SYMPTOMS[/color] not included in the pre-screening assessment are ascertained, [color=red]TERMINATE[/color] the patient, otherwise use the [color=green]RELEASE[/color] button.
|
||||
|
||||
3- Please refer to the [color=royal_blue]MANUAL[/color] on the desk for more information on [color=dark_orange]SYMPTOMS[/color]."
|
||||
horizontal_alignment = 3
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="Recording" type="RichTextLabel" parent="LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs"]
|
||||
visible = false
|
||||
layout_mode = 2
|
||||
@@ -1001,21 +1068,21 @@ theme_override_font_sizes/normal_font_size = 16
|
||||
bbcode_enabled = true
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="NextPatient" type="PanelContainer" parent="LowerHalf/Computer/Margin"]
|
||||
custom_minimum_size = Vector2(400, 100)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
theme_override_styles/panel = SubResource("StyleBoxEmpty_ysguw")
|
||||
|
||||
[node name="CallNextPatient" type="Button" parent="LowerHalf/Computer/Margin/NextPatient"]
|
||||
[node name="Statistics" type="RichTextLabel" parent="LowerHalf/Computer/Margin/ComputerScreen/ComputerTabs"]
|
||||
visible = false
|
||||
z_index = 1
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_fonts/font = ExtResource("14_0pvwy")
|
||||
theme_override_font_sizes/font_size = 25
|
||||
text = "CALL NEXT PATIENT"
|
||||
theme_override_constants/line_separation = 5
|
||||
theme_override_fonts/normal_font = ExtResource("14_0pvwy")
|
||||
theme_override_fonts/italics_font = ExtResource("14_0pvwy")
|
||||
theme_override_font_sizes/normal_font_size = 16
|
||||
theme_override_font_sizes/italics_font_size = 16
|
||||
bbcode_enabled = true
|
||||
text = "ACCURATE DIAGNOSES: [color=green]2[/color]
|
||||
|
||||
MISDIAGNOSES: [color=red]1[/color]"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
|
||||
[node name="EndDay" type="PanelContainer" parent="LowerHalf/Computer/Margin"]
|
||||
visible = false
|
||||
@@ -1052,6 +1119,7 @@ offset_left = 1194.0
|
||||
offset_top = 12.0
|
||||
offset_right = 1914.0
|
||||
offset_bottom = 392.0
|
||||
script = ExtResource("19_x8y1p")
|
||||
|
||||
[node name="ConsoleTextureRect" type="TextureRect" parent="LowerHalf/Console"]
|
||||
layout_mode = 0
|
||||
@@ -1069,35 +1137,36 @@ grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
theme_override_constants/margin_left = 28
|
||||
theme_override_constants/margin_top = 28
|
||||
theme_override_constants/margin_right = 36
|
||||
theme_override_constants/margin_right = 28
|
||||
theme_override_constants/margin_bottom = 28
|
||||
|
||||
[node name="ConsoleScreen" type="RichTextLabel" parent="LowerHalf/Console/Margin"]
|
||||
custom_minimum_size = Vector2(600, 200)
|
||||
[node name="NextPatient" type="PanelContainer" parent="LowerHalf/Console/Margin"]
|
||||
custom_minimum_size = Vector2(400, 100)
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 4
|
||||
theme_override_styles/panel = SubResource("StyleBoxEmpty_ysguw")
|
||||
|
||||
[node name="CallNextPatient" type="Button" parent="LowerHalf/Console/Margin/NextPatient"]
|
||||
z_index = 1
|
||||
layout_mode = 2
|
||||
size_flags_horizontal = 3
|
||||
size_flags_vertical = 3
|
||||
theme_override_colors/font_color = Color(1, 0.27450982, 0, 1)
|
||||
theme_override_colors/font_pressed_color = Color(1, 0.50980395, 0, 1)
|
||||
theme_override_colors/font_hover_color = Color(1, 0.39215687, 0, 1)
|
||||
theme_override_fonts/font = ExtResource("14_0pvwy")
|
||||
theme_override_font_sizes/font_size = 25
|
||||
theme_override_styles/normal = SubResource("StyleBoxFlat_255ay")
|
||||
theme_override_styles/pressed = SubResource("StyleBoxFlat_x8y1p")
|
||||
theme_override_styles/hover = SubResource("StyleBoxFlat_w4r3h")
|
||||
text = "CALL NEXT PATIENT"
|
||||
|
||||
[node name="ConsoleScreen" type="RichTextLabel" parent="LowerHalf/Console/Margin"]
|
||||
layout_mode = 2
|
||||
theme_override_fonts/normal_font = ExtResource("14_0pvwy")
|
||||
theme_override_font_sizes/normal_font_size = 18
|
||||
bbcode_enabled = true
|
||||
text = "[center][font_size=22]INSTRUCTIONS[/font_size][/center]
|
||||
|
||||
|
||||
[color=forest_green]RELEASE[/color] HUMANS, [color=red]TERMINATE[/color] ABNORMALS
|
||||
|
||||
|
||||
IF A SUBJECT HAS [color=dark_orange]SYMPTOMS[/color] IT SHOULDN'T HAVE,
|
||||
|
||||
[color=red]IT IS NOT HUMAN[/color]
|
||||
|
||||
|
||||
REFER TO THE [color=royal_blue]MANUAL[/color] FOR [color=dark_orange]SYMPTOMS[/color] DETAILS
|
||||
|
||||
|
||||
MAKE ENOUGH [color=green_yellow]ACCURATE DIAGNOSES[/color] IN A ROW
|
||||
|
||||
TO GET TO THE NEXT FLOOR"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
script = ExtResource("12_ylm1s")
|
||||
|
||||
[node name="GreenButton" type="TextureButton" parent="LowerHalf"]
|
||||
z_index = 1
|
||||
@@ -1167,13 +1236,9 @@ theme_override_constants/margin_bottom = 28
|
||||
layout_mode = 2
|
||||
theme_override_font_sizes/normal_font_size = 21
|
||||
bbcode_enabled = true
|
||||
text = "DAY: [color=dark_orange]1[/color]
|
||||
text = "FLOOR: [color=dark_orange]-1[/color]
|
||||
|
||||
FLOOR: [color=dark_orange]-1[/color]
|
||||
|
||||
ACCURATE DIAGNOSES: [color=dark_orange]0/4[/color]
|
||||
|
||||
"
|
||||
PATIENTS SEEN: [color=dark_orange]0/3[/color]"
|
||||
horizontal_alignment = 1
|
||||
vertical_alignment = 1
|
||||
script = ExtResource("23_68gp8")
|
||||
@@ -1331,45 +1396,52 @@ libraries = {
|
||||
&"": SubResource("AnimationLibrary_ylm1s")
|
||||
}
|
||||
|
||||
[node name="CellTop" type="TextureRect" parent="RoomAssets"]
|
||||
[node name="CellDoor" type="Control" parent="RoomAssets"]
|
||||
visible = false
|
||||
anchors_preset = 0
|
||||
offset_left = 60.0
|
||||
offset_top = 50.0
|
||||
offset_right = 3060.0
|
||||
offset_bottom = 2750.001
|
||||
mouse_filter = 2
|
||||
|
||||
[node name="CellAnimation" type="AnimationPlayer" parent="RoomAssets/CellDoor"]
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_vh6fv")
|
||||
}
|
||||
|
||||
[node name="CellTop" type="TextureRect" parent="RoomAssets/CellDoor"]
|
||||
z_index = 3
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchor_bottom = 1.0
|
||||
offset_left = -2540.0
|
||||
anchors_preset = 5
|
||||
anchor_left = 0.5
|
||||
anchor_right = 0.5
|
||||
offset_left = -4040.0
|
||||
offset_top = -540.0
|
||||
offset_right = -1460.0
|
||||
offset_bottom = -270.0
|
||||
offset_right = -1040.0
|
||||
offset_bottom = 810.0
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
size_flags_horizontal = 4
|
||||
size_flags_vertical = 0
|
||||
mouse_filter = 2
|
||||
texture = ExtResource("28_qsin6")
|
||||
stretch_mode = 3
|
||||
|
||||
[node name="CellBot" type="TextureRect" parent="RoomAssets"]
|
||||
visible = false
|
||||
[node name="CellBot" type="TextureRect" parent="RoomAssets/CellDoor"]
|
||||
z_index = 3
|
||||
layout_mode = 1
|
||||
anchors_preset = 15
|
||||
anchor_right = 1.0
|
||||
anchors_preset = 7
|
||||
anchor_left = 0.5
|
||||
anchor_top = 1.0
|
||||
anchor_right = 0.5
|
||||
anchor_bottom = 1.0
|
||||
offset_left = 60.0
|
||||
offset_top = 50.0
|
||||
offset_right = 1140.0
|
||||
offset_bottom = 320.0
|
||||
offset_left = -1500.0
|
||||
offset_top = -1350.001
|
||||
offset_right = 1500.0
|
||||
offset_bottom = 0.0007324219
|
||||
grow_horizontal = 2
|
||||
grow_vertical = 2
|
||||
grow_vertical = 0
|
||||
size_flags_horizontal = 4
|
||||
mouse_filter = 2
|
||||
texture = ExtResource("29_43vqp")
|
||||
stretch_mode = 2
|
||||
|
||||
[node name="CellAnimation" type="AnimationPlayer" parent="RoomAssets"]
|
||||
root_node = NodePath("../CellBot")
|
||||
libraries = {
|
||||
&"": SubResource("AnimationLibrary_vh6fv")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user