diff --git a/Art/Subjects/Patients/patient_40/patient_40.aseprite b/Art/Subjects/Patients/patient_40/patient_40.aseprite index 095f3e7..320f6fe 100644 Binary files a/Art/Subjects/Patients/patient_40/patient_40.aseprite and b/Art/Subjects/Patients/patient_40/patient_40.aseprite differ diff --git a/Art/Subjects/Patients/patient_40/patient_40_abnormal2.png b/Art/Subjects/Patients/patient_40/patient_40_abnormal2.png index 3251f2a..f2a32a0 100644 Binary files a/Art/Subjects/Patients/patient_40/patient_40_abnormal2.png and b/Art/Subjects/Patients/patient_40/patient_40_abnormal2.png differ diff --git a/Art/Subjects/Patients/patient_the_scalpel/the_scalpel.aseprite b/Art/Subjects/Patients/patient_spy/patient_spy.aseprite similarity index 93% rename from Art/Subjects/Patients/patient_the_scalpel/the_scalpel.aseprite rename to Art/Subjects/Patients/patient_spy/patient_spy.aseprite index 7184dec..a515a95 100644 Binary files a/Art/Subjects/Patients/patient_the_scalpel/the_scalpel.aseprite and b/Art/Subjects/Patients/patient_spy/patient_spy.aseprite differ diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_angry.png b/Art/Subjects/Patients/patient_spy/patient_spy_angry.png new file mode 100644 index 0000000..6eacf7a Binary files /dev/null and b/Art/Subjects/Patients/patient_spy/patient_spy_angry.png differ diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_angry.png.import b/Art/Subjects/Patients/patient_spy/patient_spy_angry.png.import new file mode 100644 index 0000000..897a247 --- /dev/null +++ b/Art/Subjects/Patients/patient_spy/patient_spy_angry.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cilypnjsrn5x2" +path="res://.godot/imported/patient_spy_angry.png-ae926a54f80b5a504b8c6e6cd93b1639.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Art/Subjects/Patients/patient_spy/patient_spy_angry.png" +dest_files=["res://.godot/imported/patient_spy_angry.png-ae926a54f80b5a504b8c6e6cd93b1639.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_furious.png b/Art/Subjects/Patients/patient_spy/patient_spy_furious.png new file mode 100644 index 0000000..b0a0a38 Binary files /dev/null and b/Art/Subjects/Patients/patient_spy/patient_spy_furious.png differ diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_furious.png.import b/Art/Subjects/Patients/patient_spy/patient_spy_furious.png.import new file mode 100644 index 0000000..ca65fee --- /dev/null +++ b/Art/Subjects/Patients/patient_spy/patient_spy_furious.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://xc1g25ra3tn4" +path="res://.godot/imported/patient_spy_furious.png-6924d44d515eb86f593aa632d7b4b7a3.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Art/Subjects/Patients/patient_spy/patient_spy_furious.png" +dest_files=["res://.godot/imported/patient_spy_furious.png-6924d44d515eb86f593aa632d7b4b7a3.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_happy.png b/Art/Subjects/Patients/patient_spy/patient_spy_happy.png new file mode 100644 index 0000000..a78cbd9 Binary files /dev/null and b/Art/Subjects/Patients/patient_spy/patient_spy_happy.png differ diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_happy.png.import b/Art/Subjects/Patients/patient_spy/patient_spy_happy.png.import new file mode 100644 index 0000000..3dcd3c1 --- /dev/null +++ b/Art/Subjects/Patients/patient_spy/patient_spy_happy.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cpj0njs0y43se" +path="res://.godot/imported/patient_spy_happy.png-c6e7570c5a09831627fbc7a3b92f7037.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Art/Subjects/Patients/patient_spy/patient_spy_happy.png" +dest_files=["res://.godot/imported/patient_spy_happy.png-c6e7570c5a09831627fbc7a3b92f7037.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_irritated.png b/Art/Subjects/Patients/patient_spy/patient_spy_irritated.png new file mode 100644 index 0000000..df8f7ff Binary files /dev/null and b/Art/Subjects/Patients/patient_spy/patient_spy_irritated.png differ diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_irritated.png.import b/Art/Subjects/Patients/patient_spy/patient_spy_irritated.png.import new file mode 100644 index 0000000..7437a13 --- /dev/null +++ b/Art/Subjects/Patients/patient_spy/patient_spy_irritated.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bgvfe2hqexkud" +path="res://.godot/imported/patient_spy_irritated.png-f81f83c5adb1df5537f8c08e475f3484.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Art/Subjects/Patients/patient_spy/patient_spy_irritated.png" +dest_files=["res://.godot/imported/patient_spy_irritated.png-f81f83c5adb1df5537f8c08e475f3484.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_neutral.png b/Art/Subjects/Patients/patient_spy/patient_spy_neutral.png new file mode 100644 index 0000000..ad67883 Binary files /dev/null and b/Art/Subjects/Patients/patient_spy/patient_spy_neutral.png differ diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_neutral.png.import b/Art/Subjects/Patients/patient_spy/patient_spy_neutral.png.import new file mode 100644 index 0000000..74ab1ca --- /dev/null +++ b/Art/Subjects/Patients/patient_spy/patient_spy_neutral.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://4ghimti3mdrs" +path="res://.godot/imported/patient_spy_neutral.png-95770d52e0622078eaa91bb7222ab646.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Art/Subjects/Patients/patient_spy/patient_spy_neutral.png" +dest_files=["res://.godot/imported/patient_spy_neutral.png-95770d52e0622078eaa91bb7222ab646.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_puzzled.png b/Art/Subjects/Patients/patient_spy/patient_spy_puzzled.png new file mode 100644 index 0000000..4b87896 Binary files /dev/null and b/Art/Subjects/Patients/patient_spy/patient_spy_puzzled.png differ diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_puzzled.png.import b/Art/Subjects/Patients/patient_spy/patient_spy_puzzled.png.import new file mode 100644 index 0000000..207caeb --- /dev/null +++ b/Art/Subjects/Patients/patient_spy/patient_spy_puzzled.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://c7lh5pi8y6vel" +path="res://.godot/imported/patient_spy_puzzled.png-330414ab336021fbeb8c355c92ea1b18.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Art/Subjects/Patients/patient_spy/patient_spy_puzzled.png" +dest_files=["res://.godot/imported/patient_spy_puzzled.png-330414ab336021fbeb8c355c92ea1b18.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_smiling.png b/Art/Subjects/Patients/patient_spy/patient_spy_smiling.png new file mode 100644 index 0000000..43b74e1 Binary files /dev/null and b/Art/Subjects/Patients/patient_spy/patient_spy_smiling.png differ diff --git a/Art/Subjects/Patients/patient_spy/patient_spy_smiling.png.import b/Art/Subjects/Patients/patient_spy/patient_spy_smiling.png.import new file mode 100644 index 0000000..c062752 --- /dev/null +++ b/Art/Subjects/Patients/patient_spy/patient_spy_smiling.png.import @@ -0,0 +1,40 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://biqrmpvaxi5uj" +path="res://.godot/imported/patient_spy_smiling.png-e66a16ac91988f8a7926c311127c9822.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Art/Subjects/Patients/patient_spy/patient_spy_smiling.png" +dest_files=["res://.godot/imported/patient_spy_smiling.png-e66a16ac91988f8a7926c311127c9822.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/Dialogues/Patients/patient_40.dialogue b/Dialogues/Patients/patient_40.dialogue index fab7997..66f3946 100644 --- a/Dialogues/Patients/patient_40.dialogue +++ b/Dialogues/Patients/patient_40.dialogue @@ -1,127 +1,99 @@ ~ start do Patient.marker.fill(0) -set Patient.dialog_tree = Patient.build_dialog_tree([11,12,13,14,15,16,17]) +set Patient.dialog_tree = Patient.build_dialog_tree([31,32,33]) -The patient looks at you with visible glee. - -Ndiaye Demba: [#happy] Aaah, at last a friendly face in this weird place ! -Ndiaye Demba: [#happy] So, how is it outside ? What's your job ? Who's your favourite actor ? Tell me everything ! +Hulda Farbror: [#worried] W-who are you ? Can you help me ? ~ part_1 -- I am here to evaluate you, sir. Please focus on answering my questions, or I won't be able to help you. - Ndiaye Demba: [#smiling] Fiiine. Let's start then, I can't wait ! +- Hi, I am indeed here to help. You only need to answer a few questions. + Hulda Farbror: [#worried] O-ok, I am ready. => part_2 -- We don't have time for chitchat. I ask the questions, you answer. - Ndiaye Demba: [#smiling] Alright, alright, sorry sorry. Tell me what you wanna know. +- That's the last question you're asking, lady. From now on, I ask, you answer. Got it ? + Hulda Farbror: [#scared] S-sorry, I didn't mean to offend you, I'll cooperate ! => part_2 -- Keep on blabbering and see what happens. - Ndiaye Demba: [#puzzled] Not the fun type, are you ? Fine, you ruined my mood anyways. +- I am here to evaluate your... condition. Cooperate and everything will go smoothly. + Hulda Farbror: [#worried] U-understood. I am ready. => part_2 ~ part_2 -if Patient.marker[1] >= 7 + +- Tell me what happened. Why are you here ? + Hulda Farbror: [#sad] I... was not feeling good at all. I was thinking about ending it all, about jumping through the window. + Hulda Farbror: [#worried] I went to the emergency unit to ask for help. Once the doctors had seen me though, they made the decision to transfer me here, without explaining why. + + - Why were you feeling so bad ? Did something happen ? + Hulda Farbror: [#scared] ... I don't know how to say it. My uncle died a few years ago. Since then, he's always been right next to me. + Hulda Farbror: [#panicked] I can feel him putting his hands on me, squeezing on my arms. I know it's not real, but I can still feel it ! I'm not crazy, I swear ! + + - Why your uncle ? What happened with him ? + Hulda Farbror: [#sad] ... It actually started a long, long time ago. I was a child. + Hulda Farbror: [#scared] My uncle would come at night in my room. He liked to stand at the foot of my bed, naked. + Hulda Farbror: [#shocked] I would hide under the sheets, but I could hear him, touching himself. Moaning. + Hulda Farbror: [#sad] My mom never believed me. She said I was imagining things. That I was trying to smear her brother's reputation. + Hulda Farbror: [#depressed] Uncle kept coming to my room every other night to touch himself. It went on for a couple of years, until he eventually stopped. + Hulda Farbror: [#shocked] Maybe I had grown too old for him. + => part_3 + + +~ part_3 +if Patient.marker[3] >= 3 => part_end -- I need to know your story. What happened ? [if Patient.dialog_tree[11] == "not_asked"] - set Patient.dialog_tree[11] = "asked" - do Patient.marker[1] += 1 - Ndiaye Demba: [#happy] Of course, of course ! I was at my university, attending lectures and all that, y'know ? Engineering can be a doozy sometimes, but it's worth persevering through ! - Ndiaye Demba: [#puzzled] And then, I started helping the professor explain things. After all, who wouldn't want a little help ? But the professor didn't like that, for some reason. - Ndiaye Demba: [#irritated] He wanted me to "sit down and listen quietly". Ungrateful prick. I didn't oblige of course, I'm not a loser. - Ndiaye Demba: [#angry] So he called security. I was taken at the town of I-don't-know-where, and somehow ended up here. What a joke. - Ndiaye Demba: [#happy] Weird story, right ? That's life for ya. Sometimes strange things happen, even to the best of us. - => part_2 - -- Do you feel safe here ? Is there anyone threatening you ? [if Patient.dialog_tree[12] == "not_asked"] - set Patient.dialog_tree[12] = "asked" - do Patient.marker[1] += 1 - Ndiaye Demba: [#laughing] Me ?? Hahahahaa, good joke, friend ! No one would dare threaten the spider ! - => part_2 - -- What spider are you talking about ? [if Patient.dialog_tree[12] == "asked" and Patient.dialog_tree[13] == "not_asked"] - set Patient.dialog_tree[13] = "asked" - do Patient.marker[1] += 1 +- I am sorry for what happened to you. How are you faring ? [if Patient.dialog_tree[31] == "not_asked"] + set Patient.dialog_tree[31] = "asked" + do Patient.marker[3] += 1 + Hulda Farbror: [#scared] Not good. I just wish I could stop feeling his presence. if Patient.abnormal == true - Ndiaye Demba: [#happy] I'm talking about Anansi, of course ! He's been in my head for as long as I can remembe. At this point, I should make him pay rent, hahaha !! + Hulda Farbror: [#panicked] He never touched me when I was a kid, and yet he hurt me so much ! + Hulda Farbror: [#shocked] Now he's touching my arms. That means he's going to hurt me for real. He's going to kill me. else - Ndiaye Demba: [#happy] The spider in my head, of course ! It's been here for as long as I can remember. At this point I should make it pay rent, hahaha !! - => part_2 + Hulda Farbror: [#depressed] Why did he do that to me ? What did I do to deserve that ? + => part_3 -- Who's Anansi ? [if Patient.dialog_tree[13] == "asked" and Patient.dialog_tree[14] == "not_asked" and Patient.abnormal == true] - set Patient.dialog_tree[14] = "asked" - do Patient.marker[1] += 1 - Ndiaye Demba: [#suspicious] You don't know about Anansi ?! Are you stupid ? - Ndiaye Demba: [#happy] He is Kwaku Ananse, the great Spider. The rain maker. The trickster god of cunning and wit. No one can outsmart him. No one can outsmart ME. - => part_2 +- Can you hear your uncle talking to you right now ? [if Patient.dialog_tree[32] == "not_asked"] + set Patient.dialog_tree[32] = "asked" + do Patient.marker[3] += 1 + Hulda Farbror: [#scared] No, I don't. Thank god I don't ! + Hulda Farbror: [#panicked] I remember the grunts he'd make. His heavy breathing while he'd wipe his stains on the bed. + => part_3 -- Does the spider have a name ? [if Patient.dialog_tree[13] == "asked" and Patient.dialog_tree[14] == "not_asked" and Patient.abnormal == false] - set Patient.dialog_tree[14] = "asked" - do Patient.marker[1] += 1 - Ndiaye Demba: [#suspicious] Why would you care about a spider's name ? Are you stupid ? - Ndiaye Demba: [#happy] Anyways, I named it Spidey. - => part_2 - -- How do you know Anansi is in your head ? [if Patient.dialog_tree[13] == "asked" and Patient.dialog_tree[15] == "not_asked" and Patient.abnormal == true] - set Patient.dialog_tree[15] = "asked" - do Patient.marker[1] += 1 - Ndiaye Demba: [#happy] Because it's obvious, friend. I can feel him right there, in my head. - Ndiaye Demba: [#elated] He's scratching my brain, tickling my insides. He wakes me up all night. Hahahaahaa it tickles !! Stop that, Anansi ! - => part_2 - -- How do you know there is a spider in your head ? [if Patient.dialog_tree[13] == "asked" and Patient.dialog_tree[15] == "not_asked" and Patient.abnormal == false] - set Patient.dialog_tree[15] = "asked" - do Patient.marker[1] += 1 - Ndiaye Demba: [#happy] Because it's obvious, friend. I can feel it right there, in my head. - Ndiaye Demba: [#elated] It's scratching my brain, tickling my insides. It wakes me up all night. Hahahaahaa it tickles !! Stop that, spider ! - => part_2 - -- Do you have any suicidal ideas ? [if Patient.dialog_tree[16] == "not_asked"] - set Patient.dialog_tree[16] = "asked" - do Patient.marker[1] += 1 - Ndiaye Demba: [#laughing] Hahahaaa, of course not ! Don't worry, friend. I looove living ! - => part_2 - -- Do you hear any voices ? Any sounds out of the ordinary ? [if Patient.dialog_tree[17] == "not_asked"] - set Patient.dialog_tree[17] = "asked" - do Patient.marker[1] += 1 - Ndiaye Demba: [#happy] Me ? Naaaah. - => part_2 +- How's your sleep ? Do you wake up at night ? [if Patient.dialog_tree[33] == "not_asked"] + set Patient.dialog_tree[33] = "asked" + do Patient.marker[3] += 1 + Hulda Farbror: [#worried] I may have trouble falling asleep sometimes, but my sleep is mostly fine. + => part_3 ~ part_end -if Patient.abnormal == true - Ndiaye Demba: [#elated] Aaaah Anansi's moving in my head ! Spider, Creator, Trickster ! Kwaku Ananse, Ba Anansi, Aunt Nancy, Kompa Nanzi !! -else - Ndiaye Demba: [#elated] Aaaah it's moving in my head ! -Ndiaye Demba: [#maniac] My sane friend, in my brain again ! Scratching, foraging, tickling, rummaging, rampaging ! -[#laughing] The patient keeps blabbering incoherently, and doesn't seem to be aware of your presence anymore. +Hulda Farbror: [#panicked] I can feel uncle gripping my arms, it hurts ! God, it hurts so much !! +Hulda Farbror: [#terrified] Please HELP ME !!! do Globals.console_message.emit("[color=dark_orange]ALLOTED ASSESSMENT TIME ELAPSED[/color]\n\n[color=orange_red]PLEASE MAKE A DECISION[/color]") => END ~ terminate if Patient.abnormal == true - Ndiaye Demba: [#abnormal1] Oooooh he's getting out !! Anansi wants to breathe, Anansi wants to live ! + Hulda Farbror: [#abnormal1] ... He's right here behind me, isn't he ? Please don't leave me alone with him ! Don't leave me !! do Globals.color_change.emit("red") - Ndiaye Demba: [#abnormal2] I AM THE [color=orange]SPIDER GOD[/color], WHO HOLDS ALL THE STORIES OF THE WORLD. MY [color=red]WISDOM[/color] OUTWEIGHS ALL OF CREATION. + Hulda Farbror: [#abnormal2] I'm a [color=orange]BAD GIRL[/color] and it's all my [color=orange]FAULT[/color]. I'm a [color=orange_red]BAD GIRL[/color] and I [color=orange_red]DESERVE IT[/color]. I'm a [color=red]BAD GIRL[/color] and I should [color=red]DIE[/color]. I should [color=red]DIE DIE DIE DIEDIEDIED-[/color] else - Ndiaye Demba: [#elated] Aaaah it's tickling so much it feels sooooo good !! + Hulda Farbror: [#panicked] Please, I'm not sick ! Please believe me ! do Globals.color_change.emit("red") - Ndiaye Demba: [#elated] Ahahahahahahhahaaa !!! + Hulda Farbror: [#terrified] Oh Gods I don't want to die !! Please no !!! do Globals.clear_patient.emit("terminate") => END ~ release if Patient.abnormal == true - Ndiaye Demba: [#abnormal1] Oooooh he's getting out !! Anansi wants to breathe, Anansi wants to live ! + Hulda Farbror: [#abnormal1] ... He's right here behind me, isn't he ? Please don't leave me alone with him ! Don't leave me !! do Globals.color_change.emit("green") - Ndiaye Demba: [#abnormal2] I AM THE [color=orange]SPIDER GOD[/color], WHO HOLDS ALL THE STORIES OF THE WORLD. MY [color=red]WISDOM[/color] OUTWEIGHS ALL OF CREATION. + Hulda Farbror: [#abnormal2] I'm a [color=orange]BAD GIRL[/color] and it's all my [color=orange]FAULT[/color]. I'm a [color=orange_red]BAD GIRL[/color] and I [color=orange_red]DESERVE IT[/color]. I'm a [color=red]BAD GIRL[/color] and I should [color=red]DIE[/color]. I should [color=red]DIE DIE DIE DIEDIEDIED-[/color] else - Ndiaye Demba: [#elated] Aaaah it's tickling so much it feels sooooo good !! + Hulda Farbror: [#surprised] Are you... releasing me ?? do Globals.color_change.emit("green") - Ndiaye Demba: [#elated] Ahahahahahahhahaaa !!! + Hulda Farbror: [#sadsmiling] Thank you. For believing me. do Globals.clear_patient.emit("release") diff --git a/Dialogues/Patients/patient_40_file.cfg b/Dialogues/Patients/patient_40_file.cfg index 1e80327..b1a16d9 100644 --- a/Dialogues/Patients/patient_40_file.cfg +++ b/Dialogues/Patients/patient_40_file.cfg @@ -1,9 +1,9 @@ -initial_emotion="smiling" +initial_emotion="worried" name="Hulda Farbror" name_meaning = "Hiding Uncle" age="25" profession="Hotel Receptionist" -psychiatric_assessment="SOMATIC HALLUCINATIONS\n\nINSOMNIA" -abnormal_symptoms="SUICIDAL IDEATIONS" +psychiatric_assessment="SOMATIC HALLUCINATIONS\n\nSUICIDAL IDEATIONS" +abnormal_symptoms="PERSECUTORY DELUSIONS" status="random" type="patient" diff --git a/Dialogues/Patients/patient_spy.dialogue b/Dialogues/Patients/patient_spy.dialogue new file mode 100644 index 0000000..a1a06eb --- /dev/null +++ b/Dialogues/Patients/patient_spy.dialogue @@ -0,0 +1,41 @@ +~ encounter_1 + +do Patient.marker.fill(0) +set Patient.dialog_tree = Patient.build_dialog_tree([11,12,13,14,15,21,22,23,24,31,32,33]) + +do Globals.character_label_color_change.emit(Color(0.329, 0.4, 0.376, 1.0)) + +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 +do Patient.spy.spy_rand() + +????: [#neutral] Greetings. We don't have much time, so listen carefully. +????: [#neutral] [color=green]RELEASE[/color] all patients [color=yellow]{{Patient.spy.threshold}}[/color] the age of 40, afflicted with [color=orange_red]{{Patient.spy.symptoms[0]}}[/color] and [color=orange_red]{{Patient.spy.symptoms[1]}}[/color]. +=> part_end + +~ part_end +set Patient.spy.order = true +do Globals.release_display.emit("[color=dark_green]RELEASE[/color]") +do Globals.terminate_display.emit("[color=dark_red]TERMINATE[/color]") +set Globals.buttons_activated = true +????: [#neutral] Now, [color=dark_red]TERMINATE[/color] me. That's an order. +do Globals.console_message.emit("[color=dark_orange]ALLOTED ASSESSMENT TIME ELAPSED[/color]\n\n[color=orange_red]PLEASE MAKE A DECISION[/color]") +=> END + + +~ terminate +do Globals.color_change.emit("red") +????: [#neutral] Do not fail. +do Globals.clear_patient.emit("terminate") +do UI.save_slot_pressed.emit(0) +=> END + + +~ release +do Globals.color_change.emit("green") +????: [#smiling] You dared disobey. Cute. +????: [#irritated] Follow your orders, and I shall disregard what just happened. +do Globals.clear_patient.emit("release") +do UI.save_slot_pressed.emit(0) +=> END \ No newline at end of file diff --git a/Dialogues/Patients/patient_spy.dialogue.import b/Dialogues/Patients/patient_spy.dialogue.import new file mode 100644 index 0000000..9548ed9 --- /dev/null +++ b/Dialogues/Patients/patient_spy.dialogue.import @@ -0,0 +1,16 @@ +[remap] + +importer="dialogue_manager" +importer_version=15 +type="Resource" +uid="uid://cy2aihwjme1uo" +path="res://.godot/imported/patient_spy.dialogue-030d0855fe720168ebc090555d0bc7bd.tres" + +[deps] + +source_file="res://Dialogues/Patients/patient_spy.dialogue" +dest_files=["res://.godot/imported/patient_spy.dialogue-030d0855fe720168ebc090555d0bc7bd.tres"] + +[params] + +defaults=true diff --git a/Dialogues/Patients/patient_spy_file.cfg b/Dialogues/Patients/patient_spy_file.cfg new file mode 100644 index 0000000..fa39065 --- /dev/null +++ b/Dialogues/Patients/patient_spy_file.cfg @@ -0,0 +1,9 @@ +initial_emotion="neutral" +name="--REDACTED--" +name_meaning = "????" +age="--REDACTED--" +profession="--REDACTED--" +psychiatric_assessment="--REDACTED--" +abnormal_symptoms="UNNATURAL BEHAVIOUR" +status="patient" +type="patient" diff --git a/Saves/save_0.json b/Saves/save_0.json index a8ee4ff..964da69 100644 --- a/Saves/save_0.json +++ b/Saves/save_0.json @@ -1 +1 @@ -{"accurate_diagnoses":0,"daily_patient_limit":6,"day_count":1,"diagnoses_quota":2,"event_index":"interfloor","floor_count":-2,"ite_list":["ite_01","ite_02","ite_03","ite_04"],"ite_seen":[],"its_list":["its_01","its_02","its_03","its_04"],"its_seen":[],"journal_entities":"","patient_count":0,"patient_list":[{"patient_43":1},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":2,"patient_48":2,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":2,"patient_47":3,"patient_48":2,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":2,"patient_47":3,"patient_48":2,"patient_49":4,"patient_50":2,"patient_51":2},{"patient_42":2,"patient_43":1,"patient_44":2,"patient_45":2,"patient_47":3,"patient_48":2,"patient_49":4,"patient_50":2,"patient_51":2}],"patients_seen":["patient_46"],"save_date":"06/10/2026, 18:07","supervisor_index":1} \ No newline at end of file +{"accurate_diagnoses":1,"daily_patient_limit":6,"diagnoses_quota":2,"event_index":"next_patient","floor_count":-5,"ite_list":["ite_01","ite_02","ite_03","ite_04"],"ite_seen":[],"its_list":["its_01","its_02","its_03","its_04"],"its_seen":[],"journal_entities":"","misdiagnoses_allowed":2,"patient_count":1,"patient_list":[{"patient_51":1},{"patient_43":2,"patient_46":2,"patient_51":1},{"patient_42":3,"patient_43":2,"patient_46":2,"patient_50":3,"patient_51":1},{"patient_42":3,"patient_43":2,"patient_46":2,"patient_50":3,"patient_51":1},{"patient_42":3,"patient_43":2,"patient_44":5,"patient_46":2,"patient_47":5,"patient_48":5,"patient_49":5,"patient_50":3,"patient_51":1},{"patient_42":3,"patient_43":2,"patient_44":5,"patient_46":2,"patient_47":5,"patient_48":5,"patient_49":5,"patient_50":3,"patient_51":1},{"patient_42":3,"patient_43":2,"patient_44":5,"patient_46":2,"patient_47":5,"patient_48":5,"patient_49":5,"patient_50":3,"patient_51":1},{"patient_42":3,"patient_43":2,"patient_44":5,"patient_45":8,"patient_46":2,"patient_47":5,"patient_48":5,"patient_49":5,"patient_50":3,"patient_51":1},{"patient_42":3,"patient_43":2,"patient_44":5,"patient_45":8,"patient_46":2,"patient_47":5,"patient_48":5,"patient_49":5,"patient_50":3,"patient_51":1}],"patients_seen":["patient_spy"],"save_date":"06/19/2026, 16:35","spy_count":0,"spy_order":true,"supervisor_index":1} \ No newline at end of file diff --git a/Scenes/main/main.gd b/Scenes/main/main.gd index 329841a..8707277 100644 --- a/Scenes/main/main.gd +++ b/Scenes/main/main.gd @@ -65,6 +65,8 @@ func _on_new_game_pressed(): Patient.its_list = Patient.og_its_list Patient.patients_seen.clear() Patient.its_seen.clear() + Patient.spy.order = false + Patient.spy.count = 0 # 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,6 +128,8 @@ func save_game(save_slot_number:int): "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, "save_date": Globals.get_save_date() } @@ -184,6 +188,8 @@ func load_game(load_slot_number:int): 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"] else: print("Failed to parse Loading Data.") diff --git a/Scenes/screening_desk/journal_layer.gd b/Scenes/screening_desk/journal_layer.gd index 8268c7a..f90d594 100644 --- a/Scenes/screening_desk/journal_layer.gd +++ b/Scenes/screening_desk/journal_layer.gd @@ -9,19 +9,23 @@ 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", -"AUDITORY HALLUCINATIONS\nFalse perceptions of external sound"], +"INSOMNIA\nUnrestorative sleep due to difficulties falling or staying asleep"], -["MEGALOMANIAC DELUSIONS\nFalse exaggeration of self-importance or power", -"SOMATIC HALLUCINATIONS\nFalse sensations, from inside the body or on the skin"], +["AUDITORY HALLUCINATIONS\nFalse perceptions of external sound"], -["MYSTICAL DELUSIONS\nFalse certainty of spiritual, divine connection", -"THOUGHT INSERTION\nFalse conviction of having alien thoughts implanted in one's brain"], +["SOMATIC HALLUCINATIONS\nFalse sensations from inside the body or on the skin"], -["CHEMOSENSORY HALLUCINATIONS\nFalse perceptions of smell or taste", -"DISORGANIZED SPEECH\nIncoherent sentences, words and speech"], +["MYSTICAL DELUSIONS\nFalse certainty of spiritual, divine connection"], -["HETERO-AGRESSIVE BEHAVIOUR\nExcessive hostility, verbal agression, threats", -"DISSOCIATIVE IDENTITY\nPresence of two or more alternate personalities"] +["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"], ] diff --git a/Scenes/screening_desk/patient_global.gd b/Scenes/screening_desk/patient_global.gd index 90a23ee..5765cda 100644 --- a/Scenes/screening_desk/patient_global.gd +++ b/Scenes/screening_desk/patient_global.gd @@ -4,6 +4,7 @@ extends Node var dialog_tree: Dictionary var marker: Array[int] var dialogue_resource: Resource +var dialogue_start: String #Patient attributes var texture := TextureRect.new() @@ -13,6 +14,8 @@ var emotions : Dictionary var abnormal: bool var id : String var type: String +var age: String +var symptoms: Array #Patient file var file_text : String @@ -41,10 +44,12 @@ var patients_seen = [] var its_seen = [] var ite_seen = [] - #Supervisor file path var supervisor_name = "siveyan" +#Spy +var spy: Node + # Called when the node enters the scene tree for the first time. func _ready() -> void: @@ -56,10 +61,14 @@ func _ready() -> void: og_patient_list.resize(len(symptoms_arrays)) patient_list.resize(len(symptoms_arrays)) its_list = og_its_list - ite_list = og_ite_list + ite_list = og_ite_list original_color = texture.modulate #Saving original modulation color to reset it after modification + #Adding the spy + spy = Spy.new() + add_child(spy) + func build_dialog_tree(tree_model: Array[int]) -> Dictionary: #Builds the dialog tree for each dialogue @@ -101,11 +110,15 @@ func load_patient(patient_info: Dictionary): #Loads new patient #Setting up Patient File var patient_name = config.get_value("", "name") - var age = config.get_value("", "age") + age = config.get_value("", "age") var profession = config.get_value("", "profession") var psychiatric_assessment = config.get_value("", "psychiatric_assessment") file_text = "NAME: " + patient_name + "\nAGE: " + age + "\n\nPROFESSION: " + profession + "\n\nPRE-SCREENING PSYCHIATRIC ASSESSMENT:\n\n" + "[color=orange_red]" + psychiatric_assessment + "[/color]" + var symptom_list = config.get_value("", "psychiatric_assessment").split("\n", false) + symptoms = symptom_list + symptom_list = config.get_value("", "abnormal_symptoms").split("\n", false) + symptoms.append_array(symptom_list) #Randomizing abnormal status if required var status = config.get_value("", "status") match status: @@ -234,6 +247,7 @@ func next_patient() -> Dictionary: #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: @@ -254,8 +268,9 @@ func next_patient() -> Dictionary: #Decides next patient ID next_id = generate_next_id(next_type) -5: if Globals.patient_count == 0: - next_id = "patient_51" + next_id = "patient_spy" next_type = "patient" + dialogue_start = "encounter_1" else: next_type = next_patient_type() next_id = generate_next_id(next_type) diff --git a/Scenes/screening_desk/screening_desk.gd b/Scenes/screening_desk/screening_desk.gd index 47ad3f3..f911058 100644 --- a/Scenes/screening_desk/screening_desk.gd +++ b/Scenes/screening_desk/screening_desk.gd @@ -23,7 +23,6 @@ extends Control var main: Node - func _ready() -> void: #Referencing main node @@ -110,7 +109,7 @@ func _on_call_next_patient_pressed(): #Brings in next patient and sets up the de #Starting Dialogue and hiding console screen computer.screen.hide() console_screen.hide() - main.start_balloon("screening", "patient", Patient.dialogue_resource, "start") + 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: @@ -148,7 +147,10 @@ func _on_decision_made(choice: String): func _on_clear_patient(choice:String): # Updating middle screen info and accurate_diagnoses value - if (Patient.abnormal == true and choice == "terminate") or (Patient.abnormal == false and choice == "release"): + if Patient.spy.order and Patient.spy.spy_check(): + Globals.accurate_diagnoses += 1 + Patient.spy.count += 1 + 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 @@ -192,7 +194,7 @@ func _on_clear_patient(choice:String): func _on_color_change(color: String): #Modulating backroom and patient colors var new_color: Color - + match color: "red": new_color = Color(1,0.1,0.1,1) @@ -227,17 +229,12 @@ func descend_floor(): #Descends to next floor for node in [middle_screen, computer, console_screen, journal_layer]: node.reset() #Resetting the scene - - - #Autosaving - main.save_game(0) - - #Selecting next event - event_manager() + main.save_game(0) #Autosaving + event_manager() #Selecting next event #Resets to initial state func reset(): - for node in [patient, supervisor, journal_layer, computer, console_screen, middle_screen, release, terminate, + for node in [patient, supervisor, Patient.spy, journal_layer, computer, console_screen, middle_screen, release, terminate, green_button, red_button, room_assets]: node.reset() diff --git a/Scenes/screening_desk/spy.gd b/Scenes/screening_desk/spy.gd new file mode 100644 index 0000000..5705dc4 --- /dev/null +++ b/Scenes/screening_desk/spy.gd @@ -0,0 +1,61 @@ +extends Node + +class_name Spy + +var threshold: String #Spy order's age threshold +var symptoms: Array #Spy order's symptoms +var order: bool #Checks if there is an ongoing spy order +var count: int #Keeps count of the spy successful orders + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +#Randomization of the spy's directives +func spy_rand(): + + threshold = ["BELOW", "ABOVE"].pick_random() + + var floor_index = -Globals.floor_count -1 + var available_symptoms : Array + + for i in range(floor_index+1): #Takes into account only the known symptoms + available_symptoms.append_array(Patient.symptoms_arrays[i]) + print("SPY Symptoms list: " + str(available_symptoms)) + + available_symptoms.shuffle() + print("SPY Symptoms list shuffled: " + str(available_symptoms)) + + symptoms = available_symptoms.slice(0,2) #Returns 2 random symptoms + print("SPY Threshold selected: " + threshold) + print("SPY Symptoms selected: " + str(symptoms)) + + +#Checks if a patient meets the spy order's requirements and returns true or false +func spy_check(): + + var requirements_passed = true + + match threshold: #Check the age requirement + "BELOW": + if int(Patient.age) > 40: + requirements_passed = false + "ABOVE": + if int(Patient.age) < 40: + requirements_passed = false + + for symptom in symptoms: #Check the symptoms requirement + if Patient.symptoms.has(symptom) == false: + requirements_passed = false + print("Symptom not present in Patient: " + str(symptom)) + + print("Requirements_passed: " + str(requirements_passed)) + return requirements_passed + + +#Resets to initial state +func reset(): + threshold = "" + symptoms.clear() + order = false diff --git a/Scenes/screening_desk/spy.gd.uid b/Scenes/screening_desk/spy.gd.uid new file mode 100644 index 0000000..04010ab --- /dev/null +++ b/Scenes/screening_desk/spy.gd.uid @@ -0,0 +1 @@ +uid://dyjxgv18p3e03 diff --git a/project.godot b/project.godot index f2b213f..ef47dad 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/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", "res://Dialogues/ITE/ite_03.dialogue", "res://Dialogues/ITE/ite_04.dialogue", "res://Dialogues/Patients/patient_41.dialogue", "res://Dialogues/Supervisors/supervisor_siveyan.dialogue", "res://Dialogues/Patients/patient_40.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/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", "res://Dialogues/ITE/ite_03.dialogue", "res://Dialogues/ITE/ite_04.dialogue", "res://Dialogues/Patients/patient_41.dialogue", "res://Dialogues/Supervisors/supervisor_siveyan.dialogue", "res://Dialogues/Patients/patient_40.dialogue", "res://Dialogues/Patients/patient_spy.dialogue")