Files
imnotsick/Scenes/screening_desk/journal_layer.gd
T
2026-08-16 01:06:53 +02:00

148 lines
6.4 KiB
GDScript

extends CanvasLayer
@onready var journal_symptoms = $Boundaries/VBoxContainer/Journal/MarginContainer/Symptoms/RightPage/Symptoms
@onready var bookmarks = $Boundaries/VBoxContainer/Bookmarks
@onready var journal = $Boundaries/VBoxContainer/Journal
#Journal Settings
var symptoms_detailed: Array[Array] = [
["SUICIDAL IDEATIONS\nPersistent thoughts about ending one's own life",
"PERSECUTORY DELUSIONS\nFalse conviction of being targeted or harmed",
"UNNATURAL BEHAVIOUR\nSigns or marks of non-human nature",
"INSOMNIA\nUnrestorative sleep due to difficulties falling or staying asleep"],
["AUDITORY HALLUCINATIONS\nFalse perceptions of external sound"],
["SOMATIC HALLUCINATIONS\nFalse sensations from inside the body or on the skin"],
["MYSTICAL DELUSIONS\nFalse certainty of spiritual, divine connection"],
["MEGALOMANIAC DELUSIONS\nFalse exaggeration of self-importance or power"],
["THOUGHT INSERTION\nFalse belief of having thoughts implanted by an external source"],
["CHEMOSENSORY HALLUCINATIONS\nFalse perceptions of smell or taste"],
["SELF-MUTILATION\nDeliberate self-harming behaviour"],
["VISUAL HALLUCINATIONS\nFalse perceptions of visual stimuli"],
]
# Called when the node enters the scene tree for the first time.
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/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.objectives.pressed.connect(self._on_tab_objectives_pressed)
hide() #Hiding at start
func _on_close_manual_pressed():
hide()
func _on_journal_pressed():
show()
func update_symptoms(floor_count:int):
var symptoms_page : String = ""
for i in range(-floor_count):
for symptom in symptoms_detailed[i]:
symptoms_page += "\n\n" + symptom
journal.symptoms_page.text = symptoms_page
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_objectives(): #Updates the objectives page
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_objectives()
#Shows the rules tab
func _on_tab_rules_pressed():
tab_switch(bookmarks.rules, journal.rules)
#Shows the symptoms tab
func _on_tab_symptoms_pressed():
tab_switch(bookmarks.symptoms, journal.symptoms)
#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.objectives]:
if tab == pressed_tab:
pressed_tab.set_pressed(true)
pressed_tab.set_mouse_filter(Control.MOUSE_FILTER_IGNORE)
else:
tab.set_pressed(false)
tab.set_mouse_filter(Control.MOUSE_FILTER_STOP)
#Showing desired screen and hiding the others
for screen in [journal.rules, journal.symptoms, journal.objectives]:
if screen == tab_screen:
screen.show()
else:
screen.hide()