148 lines
6.4 KiB
GDScript
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()
|