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()