From 6f6d048f0698365a14ee32a61130b67fca806541 Mon Sep 17 00:00:00 2001 From: Maurane Date: Thu, 21 May 2026 16:31:52 +0200 Subject: [PATCH] Entities journal rework --- Art/Subjects/ITE/ite_02/ite_02.aseprite | Bin 78222 -> 78222 bytes .../supervisor_loeveth_neutral.png | Bin 11941 -> 24705 bytes Dialogues/ITE/ite_02.dialogue | 80 ++++++++++++++++++ Dialogues/ITE/ite_02.dialogue.import | 16 ++++ Dialogues/ITE/ite_02_file.cfg | 8 ++ Dialogues/ITS/its_00_file.cfg | 8 ++ Dialogues/Patients/patient_48.dialogue | 2 +- .../Supervisors/supervisor_loeveth.dialogue | 50 ++++++++--- Saves/save_0.json | 2 +- Saves/save_1.json | 2 +- Scenes/main/globals.gd | 2 + Scenes/main/main.gd | 13 +-- Scenes/screening_desk/journal_layer.gd | 64 +++++++++----- Scenes/screening_desk/patient_global.gd | 27 ------ Text Data/entities.cfg | 8 ++ project.godot | 2 +- 16 files changed, 210 insertions(+), 74 deletions(-) create mode 100644 Dialogues/ITE/ite_02.dialogue create mode 100644 Dialogues/ITE/ite_02.dialogue.import create mode 100644 Dialogues/ITE/ite_02_file.cfg create mode 100644 Text Data/entities.cfg diff --git a/Art/Subjects/ITE/ite_02/ite_02.aseprite b/Art/Subjects/ITE/ite_02/ite_02.aseprite index dad7fb63b4b89bcc9af453d774b5ce82bc6ebab8..6e9d69782d1c0c0446ef393a3928a7fad8a29183 100644 GIT binary patch delta 39 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 literal 11941 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 VYtwb|!MP1MXn(|xZ0mdFe*n_vx1In1 diff --git a/Dialogues/ITE/ite_02.dialogue b/Dialogues/ITE/ite_02.dialogue new file mode 100644 index 0000000..8018d76 --- /dev/null +++ b/Dialogues/ITE/ite_02.dialogue @@ -0,0 +1,80 @@ +~ start + +do Patient.marker.fill(0) +set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24]) + +Anna Kula: [#scared] What's going on ? Who are you ? + +~ part_1 +- Greetings. I am here to evaluate you. Answer my questions and I may get you out of here. + Anna Kula: [#worried] I understand. I am ready to answer. + => part_2 +- I am your judge, jury and executioner. Cooperate or die. + Anna Kula: [#panicked] Oh God this can't be real ! I will do what you ask, please don't hurt me ! + => part_2 +- You are suspected of harbouring a special disease. I am here to assess that. + Anna Kula: [#scared] A disease ?? I don't understand... Please help me ! + => part_2 + + +~ part_2 +- Tell me your story. How did you end up here ? [if Patient.dialog_tree[21] == "not_asked"] + set Patient.dialog_tree[21] = "asked" + Anna Kula: [#sad] I... was not feeling well. The voices kept telling me I was a piece of garbage, that I deserved to be hurt. + Anna Kula: [#depressed] ... I tried to jump from a bridge, to end it all. Someone stopped me, snapped me out of it. Called for help. + Anna Kula: [#worried] I was brought to the hospital, but once I had seen the doctor, some masked people came in to take me here, I don't know why ! + => part_2 + +- Do you feel safe here ? Is there anyone plotting to harm you ? [if Patient.dialog_tree[22] == "not_asked"] + set Patient.dialog_tree[22] = "asked" + Anna Kula: [#sad] No. I mean, yes, there is me. I want to harm myself. That's what the voices want me to do. + => part_2 + +- Do you see anything out of the ordinary ? Images or people that aren't real ? [if Patient.dialog_tree[23] == "not_asked"] + set Patient.dialog_tree[23] = "asked" + Anna Kula: [#neutral] No, I don't see hallucinations, if that's what you're asking. + => part_2 + +- Do you feel any sensations that may be disturbing to you ? On your skin or inside your body ? [if Patient.dialog_tree[24] == "not_asked"] + set Patient.dialog_tree[24] = "asked" + Anna Kula: [#itthateats1] No, not really. I'm just hungry. The food I've been given here is not very tasty, and your flesh looks crunchy. + => part_3 + + +~ part_3 +- Tell me your story. How did you end up here ? [if Patient.dialog_tree[21] == "not_asked"] + => part_end +- Do you feel safe here ? Is there anyone plotting to harm you ? [if Patient.dialog_tree[22] == "not_asked"] + => part_end +- Do you see anything out of the ordinary ? Images or people that aren't real ? [if Patient.dialog_tree[23] == "not_asked"] + => part_end +- Do you have a special connection with God or any benevolent entity ? + => part_end + + +~ part_end +do Globals.release_display.emit("[color=orange_red]ERROR[/color]") +do Globals.terminate_display.emit("[color=orange_red]ERROR[/color]") +set Globals.buttons_activated = false + +[#itthateats1] A cold shiver runs down your spine as you suddenly recognize It. +It That Eats: [#itthateats2] [color=red]... I... AM... HUNGRY.[/color] + +do UI.game_over.reveal() +=> END + + +~ terminate +It That Eats: [#itthateats2] [color=red]... I... AM... HUNGRY.[/color] + +do Globals.color_change.emit("red") +do Globals.clear_patient.emit("terminate") +=> END + + +~ release +It That Eats: [#itthateats2] [color=red]... I... AM... HUNGRY.[/color] + +do Globals.color_change.emit("green") +do Globals.clear_patient.emit("release") +=> END \ No newline at end of file diff --git a/Dialogues/ITE/ite_02.dialogue.import b/Dialogues/ITE/ite_02.dialogue.import new file mode 100644 index 0000000..2dcb5dc --- /dev/null +++ b/Dialogues/ITE/ite_02.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://df5ls1owgad8b" +path="res://.godot/imported/ite_02.dialogue-b327afcb4c286cb1f63fec8bfc092e77.tres" + +[deps] + +source_file="res://Dialogues/ITE/ite_02.dialogue" +dest_files=["res://.godot/imported/ite_02.dialogue-b327afcb4c286cb1f63fec8bfc092e77.tres"] + +[params] + +defaults=true diff --git a/Dialogues/ITE/ite_02_file.cfg b/Dialogues/ITE/ite_02_file.cfg new file mode 100644 index 0000000..7161896 --- /dev/null +++ b/Dialogues/ITE/ite_02_file.cfg @@ -0,0 +1,8 @@ +initial_emotion="scared" +name="Hana Kula" +age="44" +profession="Accountant" +psychiatric_assessment="AUDITORY HALLUCINATIONS\n\nSUICIDAL IDEATIONS" +abnormal_symptoms="UNNATURAL BEHAVIOUR" +status="abnormal" +type="ite" diff --git a/Dialogues/ITS/its_00_file.cfg b/Dialogues/ITS/its_00_file.cfg index 1bfb759..1850b75 100644 --- a/Dialogues/ITS/its_00_file.cfg +++ b/Dialogues/ITS/its_00_file.cfg @@ -6,3 +6,11 @@ psychiatric_assessment="??????????????" abnormal_symptoms="UNNATURAL BEHAVIOUR" status="abnormal" type="its" +entity_file="[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." diff --git a/Dialogues/Patients/patient_48.dialogue b/Dialogues/Patients/patient_48.dialogue index 2ab748e..90da99e 100644 --- a/Dialogues/Patients/patient_48.dialogue +++ b/Dialogues/Patients/patient_48.dialogue @@ -1,7 +1,7 @@ ~ start do Patient.marker.fill(0) -set Patient.dialog_tree = Patient.build_dialog_tree([11,12,21,22]) +set Patient.dialog_tree = Patient.build_dialog_tree([31,32,33]) Phil Fossa: [#smiling] About time ! You there ! Release me at once ! diff --git a/Dialogues/Supervisors/supervisor_loeveth.dialogue b/Dialogues/Supervisors/supervisor_loeveth.dialogue index 33b8bb9..fe3b5dd 100644 --- a/Dialogues/Supervisors/supervisor_loeveth.dialogue +++ b/Dialogues/Supervisors/supervisor_loeveth.dialogue @@ -3,7 +3,7 @@ do Patient.marker.fill(0) set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24]) -do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) +do Globals.character_label_color_change.emit(Color(0.98, 0.667, 0.0, 1.0)) Prime Supervisor Loeveth: [#neutral] Greetings, employee. I am Prime Supervisor Loeveth. I shall be overseeing your labor in this facility. Prime Supervisor Loeveth: [#neutral] The importance of your work here cannot be overstated. Would you like one last reminder of your duties ? @@ -67,7 +67,7 @@ Prime Supervisor Loeveth: [#neutral] The importance of your work here cannot be do Patient.marker.fill(0) set Patient.dialog_tree = Patient.build_dialog_tree([]) -do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) +do Globals.character_label_color_change.emit(Color(0.98, 0.667, 0.0, 1.0)) Prime Supervisor Loeveth: [#neutral] Well done, employee. You are showing great promise. Prime Supervisor Loeveth: Keep in mind however that the first floor is the easiest one. @@ -88,7 +88,7 @@ Prime Supervisor Loeveth: Do your Duty. For the Republic. do Patient.marker.fill(0) set Patient.dialog_tree = Patient.build_dialog_tree([11,12,13]) -do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) +do Globals.character_label_color_change.emit(Color(0.98, 0.667, 0.0, 1.0)) Prime Supervisor Loeveth: [#neutral] Your performance is impressive, employee. I am pleased by your results. Prime Supervisor Loeveth: There is something important you need to be aware of, however. Listen carefully. @@ -131,7 +131,7 @@ Prime Supervisor Loeveth: Any questions, employee ? do Patient.marker.fill(0) set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24,61,62,63]) -do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) +do Globals.character_label_color_change.emit(Color(0.98, 0.667, 0.0, 1.0)) WORK_IN_PROGRESS set Globals.event_index = "next_patient" @@ -145,7 +145,7 @@ do Globals.next_event.emit() do Patient.marker.fill(0) set Patient.dialog_tree = Patient.build_dialog_tree([21,22,23,24,61,62,63]) -do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) +do Globals.character_label_color_change.emit(Color(0.98, 0.667, 0.0, 1.0)) WORK_IN_PROGRESS set Globals.event_index = "next_patient" @@ -156,17 +156,43 @@ do Globals.next_event.emit() ~ dialogue_1 do Patient.marker.fill(0) -set Patient.dialog_tree = Patient.build_dialog_tree([]) +set Patient.dialog_tree = Patient.build_dialog_tree([11,12,13]) -do Globals.character_label_color_change.emit(Color(0,0.8,1,1)) +do Globals.character_label_color_change.emit(Color(0.98, 0.667, 0.0, 1.0)) -Prime Supervisor Loeveth: [#neutral] A moment, employee. According to Monitoring, the subject you just dispatched is... of particular interest. -Prime Supervisor Loeveth: I will personally keep you updated when further data is available. Keep on the good work. +Prime Supervisor Loeveth: [#neutral] Halt, employee. That subject you just encountered is of... particular interest. +Prime Supervisor Loeveth: According to Monitoring, this entity seems to have spread amongst the facility's subjects. +Prime Supervisor Loeveth: Be on your guard. If you identify a subject as being infected by this entity, your orders are to [color=green]RELEASE[/color] It immediately. +Prime Supervisor Loeveth: Any questions, employee ? +=> part_d_1_1 -set Globals.event_index = "next_patient" -do Globals.next_event.emit() +~ part_d_1_1 +- Release ?! Aren't I supposed to terminate Abnormals ?? [if Patient.dialog_tree[11] == "not_asked"] + set Patient.dialog_tree[11] = "asked" + Prime Supervisor Loeveth: I understand your concerns, employee, and I assure you this: everything shall be made clear to you, in due time. + Prime Supervisor Loeveth: For now, follow my orders. The stakes are high, and your role is pivotal. Do not fail the Republic. + => part_d_1_1 -=> END +- Can you elaborate on how I am supposed to recognize this entity ? [if Patient.dialog_tree[12] == "not_asked"] + set Patient.dialog_tree[12] = "asked" + Prime Supervisor Loeveth: Early data reports seem to indicate that this entity can easily disguise itself as a standard human. + Prime Supervisor Loeveth: However, there is one telltale sign that distinguishes It clearly from other beings: Its [color=red]smile[/color]. + Prime Supervisor Loeveth: An impossibly wide smile, revealing a toothless red void. If you ever see a subject with such a feature, [color=red]stop talking to It immediately, and [color=green]RELEASE[/color] It on the spot[/color]. + => part_d_1_1 + +- An inhuman being ? I thought we were trying to combat some kind of virus ? [if Patient.dialog_tree[13] == "not_asked"] + set Patient.dialog_tree[13] = "asked" + Prime Supervisor Loeveth: I am afraid your clearance doesn't allow for further information. + Prime Supervisor Loeveth: Prove your worth, employee. Keep progressing to the lower floors, and I shall reward you with the gift of knowledge. + => part_d_1_1 + +- [color=gold]I have no more questions. Work awaits.[/color] + Prime Supervisor Loeveth: Well said. The Republic withstands. + - The Republic shelters. + do Globals.add_entity.emit("ITS") + set Globals.event_index = "next_patient" + do Globals.next_event.emit() + => END diff --git a/Saves/save_0.json b/Saves/save_0.json index 6ff5953..21f434b 100644 --- a/Saves/save_0.json +++ b/Saves/save_0.json @@ -1 +1 @@ -{"accurate_diagnoses":1,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":4,"entities_current_floor":["entity_01"],"entities_list":["entity_01"],"entities_seen":[],"event_index":"supervisor","floor_count":-4,"ite_list":[],"ite_seen":["ite_00"],"its_list":["its_01","its_02","its_03","its_04"],"its_seen":[],"patient_count":1,"patient_list":[{"patient_43":1,"patient_46":1},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_48":2,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2}],"patients_seen":[],"save_date":"05/07/2026, 12:40","supervisor_index":2} \ No newline at end of file +{"accurate_diagnoses":1,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":4,"event_index":"supervisor","floor_count":-2,"ite_list":["ite_01"],"ite_seen":[],"its_list":["its_01","its_02","its_03","its_04"],"its_seen":["its_00"],"journal_entities":"","patient_count":1,"patient_list":[{"patient_43":1,"patient_46":1},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_48":2,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2}],"patients_seen":[],"save_date":"05/21/2026, 16:03","supervisor_index":1} \ No newline at end of file diff --git a/Saves/save_1.json b/Saves/save_1.json index 363d848..7ce77ef 100644 --- a/Saves/save_1.json +++ b/Saves/save_1.json @@ -1 +1 @@ -{"accurate_diagnoses":0,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":1,"event_index":1,"floor_count":-1,"it_list":["entity_01"],"it_seen":[],"its_list":["its_01"],"its_seen":[],"patient_count":0,"patient_list":[{"patient_43":1,"patient_46":1},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_48":2,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2}],"patients_seen":[],"save_date":"03/06/2026, 16:19"} \ No newline at end of file +{"accurate_diagnoses":1,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":4,"event_index":"next_patient","floor_count":-2,"ite_list":["ite_01"],"ite_seen":[],"its_list":["its_01","its_02","its_03","its_04"],"its_seen":["its_00"],"journal_entities":"\n\n\n[color=dark_red][color=dark_red]IT THAT SMILES[/color][/color]\n\nCHARACTERISTICS\n- Wide smile, dark-red mouth, lack of teeth\n- Disguises as a human subject\n\nRECOMMENDED COURSE OF ACTION\n- As soon as it smiles, [color=red]TERMINATE[/color] It.","patient_count":1,"patient_list":[{"patient_43":1,"patient_46":1},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_48":2,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":4,"patient_46":1,"patient_47":3,"patient_48":2,"patient_49":3,"patient_50":2,"patient_51":2}],"patients_seen":[],"save_date":"05/21/2026, 15:02","supervisor_index":1} \ No newline at end of file diff --git a/Scenes/main/globals.gd b/Scenes/main/globals.gd index e5a9d8d..3cf82dc 100644 --- a/Scenes/main/globals.gd +++ b/Scenes/main/globals.gd @@ -27,6 +27,7 @@ var directives = "\n[center][font_size=22]INSTRUCTIONS[/font_size][/center] var release_messages: Array[String] var terminate_messages: Array[String] var buttons_activated: bool = true +var entities = [] #Entities list for the journal #Signals for screening desk signal console_message @@ -40,6 +41,7 @@ signal release_display signal terminate_display signal its_end signal next_event +signal add_entity # Called when the node enters the scene tree for the first time. func _ready() -> void: diff --git a/Scenes/main/main.gd b/Scenes/main/main.gd index b04e504..0bb251c 100644 --- a/Scenes/main/main.gd +++ b/Scenes/main/main.gd @@ -54,7 +54,7 @@ func _on_new_game_pressed(): #Setting/Resetting game parameters Globals.day_count = 1 - Globals.floor_count = -4 + Globals.floor_count = -2 Globals.patient_count = 0 Globals.accurate_diagnoses = 0 Globals.diagnoses_quota = 4 @@ -63,11 +63,8 @@ func _on_new_game_pressed(): 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.entities_list = Patient.og_entities_list - Patient.entities_current_floor.clear() Patient.patients_seen.clear() Patient.its_seen.clear() - Patient.entities_seen.clear() # DISABLED FOR NOW SINCE THERE'S NO INTRO ANYMORE #Offering to skip the introduction #var choice_text = "Do you wish to skip the introduction ?" @@ -126,12 +123,10 @@ func save_game(save_slot_number:int): "patient_list": Patient.patient_list, "its_list": Patient.its_list, "ite_list": Patient.ite_list, - "entities_list": Patient.entities_list, "patients_seen": Patient.patients_seen, "its_seen": Patient.its_seen, "ite_seen": Patient.ite_seen, - "entities_seen": Patient.entities_seen, - "entities_current_floor": Patient.entities_current_floor, + "journal_entities": $ScreeningDesk.journal_layer.journal.entities_page.text, "save_date": Globals.get_save_date() } #Creating save file @@ -186,12 +181,10 @@ func load_game(load_slot_number:int): print (Patient.patient_list) Patient.its_list = load_data["its_list"] Patient.ite_list = load_data["ite_list"] - Patient.entities_list = load_data["entities_list"] Patient.patients_seen = load_data["patients_seen"] Patient.its_seen = load_data["its_seen"] Patient.ite_seen = load_data["ite_seen"] - Patient.entities_seen = load_data["entities_seen"] - Patient.entities_current_floor = load_data["entities_current_floor"] + $ScreeningDesk.journal_layer.journal.entities_page.text = load_data["journal_entities"] else: print("Failed to parse Loading Data.") diff --git a/Scenes/screening_desk/journal_layer.gd b/Scenes/screening_desk/journal_layer.gd index ddf7c65..229ca46 100644 --- a/Scenes/screening_desk/journal_layer.gd +++ b/Scenes/screening_desk/journal_layer.gd @@ -24,14 +24,6 @@ var symptoms_detailed: Array[Array] = [ "VISUAL HALLUCINATIONS\nFalse perceptions of visual stimuli"] ] -var its_entity_file : String = "[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." # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -43,6 +35,7 @@ func _ready() -> void: 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) hide() #Hiding at start @@ -62,11 +55,20 @@ func update_symptoms(floor_count:int): journal.symptoms_page.text = symptoms_page -func update_entities(): +func add_entity(entity): + if Globals.entities.has(entity) == false: + Globals.entities.append(entity) + update_entities(Globals.entities) + + +func update_entities(entities): journal.entities_page.text = "" - if Patient.entities_current_floor.is_empty(): - Patient.pick_floor_entities() #Picking floor entities unless a save was just loaded + for entity in entities: + add_entity_to_journal(entity) + + +func add_entity_to_journal(entity: String): var config := ConfigFile.new() var entity_name: String = "" @@ -74,23 +76,43 @@ func update_entities(): var entity_course_of_action: String = "" var entity_text: String = "" - journal.entities_page.text += its_entity_file + 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 - 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.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 #Resets to initial state func reset(): hide() update_symptoms(Globals.floor_count) - if Globals.floor_count <= -4: - update_entities() + update_entities(Globals.entities) + if Globals.floor_count <= -2: bookmarks.entities.show() else: bookmarks.entities.hide() diff --git a/Scenes/screening_desk/patient_global.gd b/Scenes/screening_desk/patient_global.gd index afbea10..a9ffb5b 100644 --- a/Scenes/screening_desk/patient_global.gd +++ b/Scenes/screening_desk/patient_global.gd @@ -33,12 +33,9 @@ var its_list = [] var og_ite_list = ["ite_01"] var ite_list = [] var og_entities_list = ["entity_01"] -var entities_list = [] -var entities_current_floor = [] var patients_seen = [] var its_seen = [] var ite_seen = [] -var entities_seen = [] #Supervisor file path @@ -56,7 +53,6 @@ func _ready() -> void: patient_list.resize(len(symptoms_arrays)) its_list = og_its_list ite_list = og_ite_list - entities_list = og_entities_list original_color = texture.modulate #Saving original modulation color to reset it after modification @@ -225,9 +221,6 @@ func generate_next_id(patient_type: String): "ite": next_id = ite_list.pick_random() print("ITE selected: " + str(next_id)) - "entity": - next_id = entities_current_floor.pick_random() - print("Entity selected: " + str(next_id)) return next_id @@ -292,8 +285,6 @@ func next_patient_type(): type_list.append("ite") _: for i in range(int(Globals.diagnoses_quota)): - if len(entities_current_floor) > 0: - type_list.append("entity") if len(its_list) > 0: type_list.append("its") if len(ite_list) > 0: @@ -327,21 +318,3 @@ func update_list(): ite_seen.append(id) ite_list.erase(id) print("Updated ITE list: " + str(ite_list)) - "entity": - entities_seen.append(id) - entities_list.erase(id) - entities_current_floor.erase(id) - print("Updated Entities list: " + str(entities_list)) - print("Updated Entities current floor list: " + str(entities_current_floor)) - - -#Randomly picks which entities will be present on the current floor -func pick_floor_entities(): - - var entity - - for i in range(int(floor(Globals.diagnoses_quota/4))): - if len(entities_list) > 0: - entity = entities_list.pick_random() - entities_current_floor.append(entity) - print("Picked Entities current floor list: " + str(entities_current_floor)) diff --git a/Text Data/entities.cfg b/Text Data/entities.cfg new file mode 100644 index 0000000..4fa9aaa --- /dev/null +++ b/Text Data/entities.cfg @@ -0,0 +1,8 @@ +[ITS] +entity_name="[color=dark_red]IT THAT SMILES[/color]" +entity_characteristics=" +- Wide smile, dark-red mouth, lack of teeth +- Disguises as a human subject +" +entity_course_of_action=" +- As soon as it smiles, [color=red]TERMINATE[/color] It." diff --git a/project.godot b/project.godot index bd0f8e2..1df45b1 100644 --- a/project.godot +++ b/project.godot @@ -54,4 +54,4 @@ ui_select={ [internationalization] -locale/translations_pot_files=PackedStringArray("res://Dialogues/Patients/patient_50.dialogue", "res://Dialogues/Patients/patient_49.dialogue", "res://Dialogues/Patients/patient_48.dialogue", "res://Dialogues/Patients/patient_47.dialogue", "res://Dialogues/Patients/patient_46.dialogue", "res://Dialogues/Patients/patient_45.dialogue", "res://Dialogues/Patients/patient_51.dialogue", "res://Dialogues/Patients/patient_44.dialogue", "res://Dialogues/Patients/patient_43.dialogue", "res://Dialogues/Patients/patient_42.dialogue", "res://Dialogues/OG Patients/patient_49.dialogue", "res://Dialogues/OG Patients/patient_50.dialogue", "res://Dialogues/ITS/its_00.dialogue", "res://Dialogues/ITS/its_01.dialogue", "res://Dialogues/Supervisors/supervisor_dredar.dialogue", "res://Dialogues/Supervisors/supervisor_loeveth.dialogue", "res://Dialogues/Entities/entity_01.dialogue", "res://Dialogues/Entities/it_that_feels_01.dialogue", "res://Dialogues/ITS/its_02.dialogue", "res://Dialogues/ITS/its_03.dialogue", "res://Dialogues/ITS/its_04.dialogue", "res://Dialogues/ITE/ite_00.dialogue", "res://Dialogues/ITE/ite_01.dialogue") +locale/translations_pot_files=PackedStringArray("res://Dialogues/Patients/patient_50.dialogue", "res://Dialogues/Patients/patient_49.dialogue", "res://Dialogues/Patients/patient_48.dialogue", "res://Dialogues/Patients/patient_47.dialogue", "res://Dialogues/Patients/patient_46.dialogue", "res://Dialogues/Patients/patient_45.dialogue", "res://Dialogues/Patients/patient_51.dialogue", "res://Dialogues/Patients/patient_44.dialogue", "res://Dialogues/Patients/patient_43.dialogue", "res://Dialogues/Patients/patient_42.dialogue", "res://Dialogues/OG Patients/patient_49.dialogue", "res://Dialogues/OG Patients/patient_50.dialogue", "res://Dialogues/ITS/its_00.dialogue", "res://Dialogues/ITS/its_01.dialogue", "res://Dialogues/Supervisors/supervisor_dredar.dialogue", "res://Dialogues/Supervisors/supervisor_loeveth.dialogue", "res://Dialogues/Entities/entity_01.dialogue", "res://Dialogues/Entities/it_that_feels_01.dialogue", "res://Dialogues/ITS/its_02.dialogue", "res://Dialogues/ITS/its_03.dialogue", "res://Dialogues/ITS/its_04.dialogue", "res://Dialogues/ITE/ite_00.dialogue", "res://Dialogues/ITE/ite_01.dialogue", "res://Dialogues/ITE/ite_02.dialogue")