05.11 update

This commit is contained in:
Frisk 2024-11-06 00:23:15 +01:00
parent 1bf2854a16
commit b53c6adab3
9 changed files with 573 additions and 45 deletions

View file

@ -456,6 +456,7 @@ func _run():
if state == "finalresults": if state == "finalresults":
saynn("He looks at responses, counts them, tries to figure something out, finally reaches a conclusion and in official tone announces...") saynn("He looks at responses, counts them, tries to figure something out, finally reaches a conclusion and in official tone announces...")
GM.main.setModuleFlag("IssixModule", "Quest_Wait_Another_Day", true)
if strikes == 0: if strikes == 0:
saynn("[say=issix]I have no objections to you becoming my pet. As far as I'm aware you were honest with all of the answers. That was the only thing that truthfully mattered during the test.[/say]") saynn("[say=issix]I have no objections to you becoming my pet. As far as I'm aware you were honest with all of the answers. That was the only thing that truthfully mattered during the test.[/say]")
saynn("You are happy to hear the result") saynn("You are happy to hear the result")

View file

@ -14,8 +14,10 @@ func _reactInit():
func _run(): func _run():
if(state == ""): if(state == ""):
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="sit"}) if GM.main.getModuleFlag("IssixModule", "Quest_Status") < 6:
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="sit"})
else:
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="sit"})
if(state == ""): if(state == ""):
if(!GM.main.getModuleFlag("IssixModule", "Issix_Introduced")): if(!GM.main.getModuleFlag("IssixModule", "Issix_Introduced")):
@ -35,13 +37,15 @@ func _run():
addButton("Back", "Go back", "") addButton("Back", "Go back", "")
if(state == "talk"): if(state == "talk"):
clearCharacter()
addCharacter("issix")
if(!GM.main.getModuleFlag("IssixModule", "Issix_Introduced")): if(!GM.main.getModuleFlag("IssixModule", "Issix_Introduced")):
GM.main.setModuleFlag("IssixModule", "Issix_Introduced", true) GM.main.setModuleFlag("IssixModule", "Issix_Introduced", true)
saynn("You approach the intimidating demon, with a lot of distance still in-between you and him, standing right in front of his harem.") saynn("You approach the intimidating demon, with a lot of distance still in-between you and him, standing right in front of his harem.")
saynn("[say=issix]Oh hello little morsel. Don't believe I've seen you. Name is Issix. Do you have a name?[/say]") saynn("[say=issix]Oh hello little morsel. Don't believe I've seen you. Name is Issix. Do you have a name?[/say]")
addButton("I'm "+GM.pc.getName(), "Introduce yourself with your name", "name") addButton("I'm "+GM.pc.getName(), "Introduce yourself with your name", "name")
else: else:
saynn("You approach the demon.") saynn("You approach the demon."+(" He grins, seeing you kneel." if GM.main.getModuleFlag("IssixModule", "Quest_Status") > 5 else ""))
saynn(RNG.pick(random_issix_activities_talk)) saynn(RNG.pick(random_issix_activities_talk))
addButton("Prison", "How did he end up in prison?", "prison") addButton("Prison", "How did he end up in prison?", "prison")
addButton("Pets", "Have they really willingly gave to him?", "pets2") addButton("Pets", "Have they really willingly gave to him?", "pets2")
@ -53,8 +57,23 @@ func _run():
GM.ES.triggerRun(Trigger.TalkingToNPC, ["issix"]) GM.ES.triggerRun(Trigger.TalkingToNPC, ["issix"])
addButton("Leave", "Be on your way", "endthescene") addButton("Leave", "Be on your way", "endthescene")
if state == "prison":
saynn("You ask Issix about how he ended up in here. He looks at you with intensity, studying your face.")
saynn("[say=issix]Honestly, don't think there is much for you to know morsel. But sure, I can entertain you a little.[/say]")
saynn("Issix relaxes, his shoulders straight, he puts one leg on another, in crossed position.")
saynn("[say=issix]I wanted to be here. My position offered me plenty of opportunities, everyone had their own expectations of everyone else's needs and wishes. I gave them all a big middle finger.\nThrough my connections I became an inmate. Nobody convicted me of any crime, like everyone else in here. I simply used my connections at AlphaCorp to be here. To gain my paradise.[/say]")
if (GM.pc.getPersonality().getStat(PersonalityStat.Coward) < -0.2):
saynn("[say=pc]You are craz-[/say]")
else:
saynn("[say=pc]That's... Cr-[/say]")
saynn("[say=issix]Crazy. I know. I've heard it a million times, thanks.[/say]")
saynn("He rolls his eyes and sips water from the glass nearby.")
saynn("[say=pc]So how long have you been in here?[/say]")
saynn("[say=issix]Enough to find my place, acquire three pets and make my own little business. So 5 years or so. I have it somewhere saved, but I don't really care enough to keep count.[/say]")
addButton("Back", "Turn to other matters", "talk")
if(state == "name"): if(state == "name"):
addCharacter("issix")
saynn("[say=issix]I see. Nice to meet you "+GM.pc.getName()+" and welcome to my humble corner in this piece of heaven.[/say]") saynn("[say=issix]I see. Nice to meet you "+GM.pc.getName()+" and welcome to my humble corner in this piece of heaven.[/say]")
saynn("He holds his paw up to you, not fazed by the fact that you are still separated by an awkwardly long distance from the demon-dragon.\nNot wanting to be rude, you lean forwards while making extra sure you will not trample upon laying inmate or fall forwards by yourself. Eventually your " + ("hand" if len(GM.pc.getSpecies()) == 1 and GM.pc.getSpecies()[0] == "human" else "paw") + " meets his and you are able to do shake them.") # ok, I have no idea what's the difference between buff arms and anthro arms, they seem the same, and technically neither have paws, too bad I'm the one writing dialogue though saynn("He holds his paw up to you, not fazed by the fact that you are still separated by an awkwardly long distance from the demon-dragon.\nNot wanting to be rude, you lean forwards while making extra sure you will not trample upon laying inmate or fall forwards by yourself. Eventually your " + ("hand" if len(GM.pc.getSpecies()) == 1 and GM.pc.getSpecies()[0] == "human" else "paw") + " meets his and you are able to do shake them.") # ok, I have no idea what's the difference between buff arms and anthro arms, they seem the same, and technically neither have paws, too bad I'm the one writing dialogue though
saynn("[say=issix]I own this little corner including those three wonderful leashed pets beside me. You do NOT touch my pets without permission. Normally I wouldn't think this has to be mentioned, but for some reasons inmates think otherwise, those who do - don't keep this thought for long.[/say]") saynn("[say=issix]I own this little corner including those three wonderful leashed pets beside me. You do NOT touch my pets without permission. Normally I wouldn't think this has to be mentioned, but for some reasons inmates think otherwise, those who do - don't keep this thought for long.[/say]")
@ -66,11 +85,14 @@ func _run():
if(state == "heaven"): if(state == "heaven"):
saynn("[say=pc]Did you just call this prison a piece of heaven? Why?[/say]") saynn("[say=pc]Did you just call this prison a piece of heaven? Why?[/say]")
saynn("[say=issix]Because it is. I don't understand why everyone says it's not.[/say]") saynn("[say=issix]Because it is. I don't understand why everyone says it's not.[/say]")
saynn("[say=pc]Because it's... A prison? It's a middle-of-nothing rock that belongs to some mega rich empire. Because we have collars on our necks.[/say]") saynn("[say=pc]Because it's... A prison? It's a middle-of-nothing rock that belongs to some mega rich empire. Because we have collars on our necks and they expect us to mine rock for their benefit, we are just slaves.[/say]")
saynn("[say=issix]You are looking at it all wrong [/say]") # TODO saynn("[say=issix]You are looking at it all wrong. While the rest of the galaxy is participating in a rat-race for who is the most awful of them all, when they are murdering each other daily in show of dominance, when food shortages, speciesism, chaos is happening out there, here? Sure we still have a lot of show of power, but nobody is murdering each other because of it, we have shitty, but food, and speciesism isn't as bad as out there because what's the point, everyone has been reduced to just an inmate. Slavery here isn't only restricted to AlphaCorp's and Syndicate's of the galaxy, which what allows me to have those wonderful pets in here.[/say]")
saynn("[say=pc]So you like it here because you can have your own slaves?[/say]")
saynn("[say=issix]I like it here because I can enjoy what the fuck I enjoy and whatever restrictions this place has don't bother me.[/say]")
addButton("Continue", "Ask about something else", "name") addButton("Continue", "Ask about something else", "name")
if(state == "pets"): if(state == "pets"):
addCharacter("azazel")
GM.main.setModuleFlag("IssixModule", "Pets_Introduced", true) GM.main.setModuleFlag("IssixModule", "Pets_Introduced", true)
saynn("[say=pc]So... Who are your pets exactly?[/say]") saynn("[say=pc]So... Who are your pets exactly?[/say]")
saynn("[say=issix]Curious about my treasured pearls, aren't you? Oh, I'm happy to introduce you, people usually talk only with me, but I feel like they could use some social interactions with someone else than myself and themselves.[/say]") saynn("[say=issix]Curious about my treasured pearls, aren't you? Oh, I'm happy to introduce you, people usually talk only with me, but I feel like they could use some social interactions with someone else than myself and themselves.[/say]")
@ -84,6 +106,9 @@ func _run():
addButton("Move on", "Learn about second pet", "hiisi") addButton("Move on", "Learn about second pet", "hiisi")
if(state in ["hiisipet", "hiisi"]): if(state in ["hiisipet", "hiisi"]):
removeCharacter("azazel")
addCharacter("hiisi")
addCharacter("lamia")
if(state == "hiisipet"): if(state == "hiisipet"):
saynn("You crouch and gently pet Azazel's head. You can feel very delicate vibrations produced by the kitten. He doesn't open his eyes, but it's clear cat enjoys this treatment.") saynn("You crouch and gently pet Azazel's head. You can feel very delicate vibrations produced by the kitten. He doesn't open his eyes, but it's clear cat enjoys this treatment.")
sayn("Master looks at this interaction with interest and sincere smile on his face.") sayn("Master looks at this interaction with interest and sincere smile on his face.")
@ -101,21 +126,10 @@ func _run():
saynn("[say=issix]Anyways, those are the three of my beloved pets. ") saynn("[say=issix]Anyways, those are the three of my beloved pets. ")
addButton("Back", "Turn to other matters", "talk") addButton("Back", "Turn to other matters", "talk")
if(state == "lamia"):
saynn("You take a step towards Lamia to give him a pawshake. He sits on a blanket, next to him a stack of empty paper sheets, and a smaller pile of ")
if(state == "issixdetails"): if(state == "issixdetails"):
saynn("You ask Issix about himself. He looks at you with intensity, studying your face.") saynn("[say=pc]Who are you?[/say]")
saynn("[say=issix]Honestly, don't think there is much for you to know morsel. But sure, I can entertain you a little.[/say]") saynn("[say=issix]Oh, I'm just a dragon-demon, nobody special. I dabble in... Equipment, and make bunch of things out of it. If you have some unused restraints, feel free to donate them to me, I'll be sure to make use of them, and maybe reward you a little, if I feel like it.[/say]")
saynn("Issix relaxes, his shoulders straight, he puts one leg on another, in crossed position.") saynn("[say=pc]How long have you been in here?[/say]")
saynn("[say=issix]I wanted to be here. My position offered me plenty of opportunities, everyone had their own expectations of everyone else's needs and wishes. I gave them all a big middle finger.\nThrough my connections I became an inmate. Nobody convicted me of any crime, like everyone else in here. I simply used my connections at AlphaCorp to be here. To gain my paradise.[/say]")
if (GM.pc.getPersonality().getStat(PersonalityStat.Coward) < -0.2):
saynn("[say=pc]You are craz-[/say]")
else:
saynn("[say=pc]That's... Cr-[/say]")
saynn("[say=issix]Crazy. I know. I've heard it a million times, thanks.[/say]")
saynn("He rolls his eyes and sips water from the glass nearby.")
saynn("[say=issix]Anyways, this short story will have to do, morsel. I've talked enough about myself.[/say]")
addButton("Back", "If he says so", "name") addButton("Back", "If he says so", "name")
if(state == "pets2"): if(state == "pets2"):

View file

@ -12,7 +12,7 @@ func getFlags():
"Azazel_Catnip_found": flag(FlagType.Bool), "Azazel_Catnip_found": flag(FlagType.Bool),
"Azazel_Catnip_taken_today": flag(FlagType.Bool), "Azazel_Catnip_taken_today": flag(FlagType.Bool),
"PC_Enslavement_Status": flag(FlagType.Number), "PC_Enslavement_Status": flag(FlagType.Number),
"Azazel_Catnips_given": flag(FlagType.Number), "Azazel_Affection_given": flag(FlagType.Number),
"Quest_Bonked": flag(FlagType.Bool), "Quest_Bonked": flag(FlagType.Bool),
"Quest_Wait_Another_Day": flag(FlagType.Bool), "Quest_Wait_Another_Day": flag(FlagType.Bool),
"Activated_Cabinets": flag(FlagType.Dict), "Activated_Cabinets": flag(FlagType.Dict),
@ -27,7 +27,12 @@ func getFlags():
"QuestionnaireQ8": flag(FlagType.Text), "QuestionnaireQ8": flag(FlagType.Text),
"QuestionnaireQ9": flag(FlagType.Bool), "QuestionnaireQ9": flag(FlagType.Bool),
"QuestionnaireQ10": flag(FlagType.Number), "QuestionnaireQ10": flag(FlagType.Number),
"QuestionnaireQ11": flag(FlagType.Bool) "QuestionnaireQ11": flag(FlagType.Bool),
"Lamia_Is_Hungry": flag(FlagType.Bool),
"Azazel_Sky_Response": flag(FlagType.Bool),
"Received_Portrait_From_Lamia": flag(FlagType.Bool),
"Placed_Portrait_In_Cell": flag(FlagType.Bool),
"Hissi_RPS_data": flag(FlagType.Dict)
} }
@ -40,7 +45,9 @@ func _init():
"res://Modules/IssixModule/GreenhouseCatnip.gd", "res://Modules/IssixModule/GreenhouseCatnip.gd",
"res://Modules/IssixModule/EngRoomClosetEvent.gd", "res://Modules/IssixModule/EngRoomClosetEvent.gd",
"res://Modules/IssixModule/IssixQuestionnaireEvent.gd", "res://Modules/IssixModule/IssixQuestionnaireEvent.gd",
"res://Modules/IssixModule/MedicalPeekEvent.gd" "res://Modules/IssixModule/MedicalPeekEvent.gd",
"res://Modules/IssixModule/PetWalkExamEvent.gd",
"res://Modules/IssixModule/PlayerCellModifierEvent.gd"
] ]
scenes = [ scenes = [
@ -50,7 +57,9 @@ func _init():
"res://Modules/IssixModule/EngRoomScene.gd", "res://Modules/IssixModule/EngRoomScene.gd",
"res://Modules/IssixModule/IssixQuestionnaireScene.gd", "res://Modules/IssixModule/IssixQuestionnaireScene.gd",
"res://Modules/IssixModule/NoPetsTalkMain.gd", "res://Modules/IssixModule/NoPetsTalkMain.gd",
"res://Modules/IssixModule/MedicalPeekScene.gd" "res://Modules/IssixModule/MedicalPeekScene.gd",
"res://Modules/IssixModule/PetWalkExamScene.gd",
"res://Modules/IssixModule/PlayerCellModifierScene.gd"
] ]
characters = [ characters = [
@ -74,6 +83,11 @@ func _init():
"res://Modules/IssixModule/IssixPetQuest.gd" "res://Modules/IssixModule/IssixPetQuest.gd"
] ]
# External
# "res://Scenes/ParadedOnALeashScene.gd"
# "res://Game/World/Floors/Closet.gd"
# "res://Game/World/Floors/Closet.tscn"
func resetFlagsOnNewDay(): func resetFlagsOnNewDay():
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_taken_today", false) GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_taken_today", false)
GM.main.setModuleFlag("IssixModule", "Activated_Cabinets", {}) GM.main.setModuleFlag("IssixModule", "Activated_Cabinets", {})

25
PetWalkExamEvent.gd Normal file
View file

@ -0,0 +1,25 @@
extends EventBase
func _init():
id = "Ch1IssixQuestWalk"
func registerTriggers(es):
es.addTrigger(self, Trigger.TalkingToNPC, "issix")
func run(_triggerID, _args):
if(GM.main.getModuleFlag("IssixModule", "Quest_Status") == 6):
if GM.main.getModuleFlag("IssixModule", "Quest_Wait_Another_Day") == false:
addButton("Next task", "Ask Issix about next task", "main")
else:
addDisabledButton("Next task", "You need to wait until tomorrow")
return true
return false
func onButton(_method, _args):
if(_method == "main"):
GM.main.endCurrentScene()
runScene("IssixPetWalk")
func getPriority():
return 20

377
PetWalkExamScene.gd Normal file
View file

@ -0,0 +1,377 @@
extends SceneBase
var answer = null
var rock_paper_scissors = {1: 3, 2: 1, 3: 2} # 1 = rock, 2 = paper, 3 = scissors
var rock_paper_scissors_translation = {1: "Rock", 2: "Paper", 3: "Scissors"}
func _init():
sceneID = "IssixPetWalk"
func _run():
if(state == ""):
#if GM.main.getTime() < 75600:
saynn("[say=issix]So here you are, kneeling, like a good pet. You know, if you don't like it, you can still say no. Once I make you my pet, you won't have much choice in that matter, so I really hope you know what you are doing.[/say]")
saynn("Looks at you, grinning seductively, licking his lips.")
addButton("Own me", "Say that you want Issix to own you", "walkstart")
addButton("Abandon", "Abandon your quest for a master", "refusal")
if(state == "refusal"):
saynn("[say=issix]Disappointing, after everything you've done, but better late than never, huh? In that case you can stop kneeling, your training ended prematurely. If you need anything of me, I'll be here.[/say]")
setModuleFlag("IssixModule", "Quest_Status", 5)
setModuleFlag("IssixModule", "Quest_Rejected_By_Issix", 3)
addButton("Continue", "Finish this talk", "endthescene")
if(state == "walkstart"):
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand", bodyState={leashedBy="issix"}})
GM.pc.getInventory().forceEquipStoreOtherUnlessRestraint(GlobalRegistry.createItem("basketmuzzle"))
saynn("[say=issix]Wondeful, here is how this is going to go. I'm going on a little walk with my three pets in here, we are going to certain, very quiet place. I'm going to clip this leash to your collar and you are going to follow like a good pet.[/say]")
saynn("Not the first time you've been leashed, but this time it would be special, you'll be led by Master Issix along with his other pets.")
saynn("[say=issix]However, I want you to remember - this is a test. Depending on how you perform, you may or may not become my pet. But even if not, I hope it still proves to be a fun experience for you.")
saynn("[say=issix]Now come closer and show me your pretty neck.[/say]")
saynn("You come a little closer, your head is basically in Issix's crotch, until you look at his face. He smiles, puts his fingers under your chin and lifts your head further, holding the end of a leash up to your collar, finally clicking it in place.")
saynn("[say=issix]You look almost perfect, I think I'm missing one more thing, just this time.[/say]")
saynn("He pulls out basket muzzle from behind, you allow him to cover your face with it. His paw reaches behind and fastens the backet muzzle onto your head until it sits securely in place.")
saynn("[say=issix]Perfect, how do you feel?[/say]")
addButton("Good", "Say you feel good", "walkies", [true])
addButton("Uncomfortable", "Say you feel uncomfortable", "walkies", [false])
if state == "walkies":
if answer:
saynn("[say=issix]As you should. We are good to go now.[/say]")
else:
saynn("[say=issix]Aww, well, you can always say no after walk is over, see if you change your mind until the end, okey? We are good now here.[/say]")
saynn("[say=issix]For the walk I expect you to refer to me as Master. You listen to me only, you don't fuck with random people we walk past. If you are confused what you are to do, look at my other pets for guidence.[/say]")
saynn("[say=issix]Azazel, Hiisi, Lamia, we are going for a walk to the pasture.[/say]")
saynn("[say=hiisi]Is {pc.name} coming with us this time?[/say]")
saynn("[say=issix]He wants to see how is it being my pet, I expect you lot to be nice to {pc.him} and no having sex without their permission, understood? He isn't my pet yet.[/say]")
saynn("Every pet nod their head in unison")
saynn("[say=azazel]So happy we've got a friend to walk with us today![/say]")
saynn("[say=issix]So am I, come.[/say]")
addButton("Let's go", "Follow your (temporary) master on fours", "walkies2")
if state == "walkies2":
processTime(10*60)
aimCamera("main_yard_connector")
setLocationName("Corridor")
addCharacter("issix")
addCharacter("nova")
playAnimation(StageScene.Duo, "stand", {pc="nova", npc="issix", npcAction="stand"})
saynn("[say=nova]Got yourself a new pet Issix?[/say]")
saynn("[say=issix]Not exactly, let's just say {pc.he} is on a... Probation.[/say]")
saynn("Issix chuckles, clearly happy wiith his joke.")
if getModuleFlag("NovaModule", "Nova_GotHumiliatedByPC", false):
saynn("[say=nova]Watch out for this one, this one is feisty one.[/say]")
saynn("[say=issix]Oh, speaking from experience?[/say]")
saynn("[say=nova]Experience I'd rather not have, but yes.[/say]")
saynn("[say=issix]I'll keep that in mind. So far they've been well-behaved.[/say]")
saynn("[say=nova]Better keep that leash tight then.[/say]")
else:
saynn("[say=nova]Cute one.[/say]")
saynn("[say=issix]Had experience meeting them yet?[/say]")
if getModuleFlag("NovaModule", "Nova_SawPC") || getModuleFlag("NovaModule", "Nova_Introduced"):
saynn("[say=nova]Indeed. Not much to say about {pc.him} though.[/say]")
saynn("[say=issix]Cool, we will be on our way then.[/say]")
else:
saynn("[say=nova]Not really, no.[/say]")
saynn("[say=issix]Strange, they are a quite popular of a slut. Oh well, we'll be on our way.[/say]")
saynn("[say=nova]Have a nice walk, Issix.[/say]")
saynn("Nova winks at you and continues to walk towards the stocks.")
addButton("Continue", "Continue the walk", "walkies3")
if state == "walkies3":
processTime(15*60)
clearCharacter()
addCharacter("azazel")
addCharacter("hiisi")
addCharacter("lamia")
saynn("Eventually, you reach your destination, a quiet place near a small lake. On the east high above you you can see greenhouses. A very faint sound of water hitting water can be heard coming from the waterfall. Issix places a large blanket near the lake and invites his pets (including you) on it. Surprisingly he comes to each one of you, unclips the leashes, puts them in side pocket of his bag which he leaves near the blanket and comes closer to the lake, wetting his feet. All done without a word, in relative silence only broken by humming of the station along with sound of waterfall in proximity. Three pets around you lose their top clothes, it would be a bit difficult with your basket muzzle.")
saynn("You look at other pets, trying to understand what you should do. \"Pasture\" is the word Issix used to describe this place, is it not? It seems like Azazel lays on their back, looking up in the skylight, at countless stars in the distance. Hiisi seemingly lost in thought watching his Master relaxing just up close, with his feet in the lake while Lamia, taking his stacks of paper from Master's bag keeeps practicing drawing.")
addButton("Azazel", "Talk to Azazel", "azazel")
addButton("Hiisi", "Talk to Hiisi", "hiisi")
addButton("Lamia", "Talk to Lamia", "lamia")
addButton("Look around", "Do something else?", "else")
if state == "walkies4":
playAnimation(StageScene.Solo, "kneel")
#saynn("Eventually, you reach your destination, a quiet place near a small lake. On the east high above you you can see greenhouses. A very fait sounds of water hitting water can be heard coming from the waterfall. Issix places a large blanket near the lake and invites his pets (including you) on it. Surprisingly he comes to each one of you, unclips the leashes, puts them in side pocket of his bag which he leaves near the blanket and comes closer to the lake, wetting his feet. All done without a word, in relative silence only broken by humming of the station along with sound of waterfall in proximity.")
saynn("You look at other pets, trying to understand what you should do. \"Pasture\" is the word Issix used to describe this place, is it not? It seems like Azazel lays on their back, looking up in the skylight, at countless stars in the distance. Hiisi seemingly lost in thought watching his Master relaxing just up close, with his feet in the lake while Lamia, taking his stacks of paper from Master's bag keeeps practicing drawing.")
addButton("Azazel", "Talk to Azazel", "azazel")
addButton("Hiisi", "Talk to Hiisi", "hiisi")
addButton("Lamia", "Talk to Lamia", "lamia")
addButton("Look around", "Do something else?", "else")
if state == "azazel":
processTime(1*60)
playAnimation(StageScene.Duo, "kneel", {npc="azazel", npcAction="kneel"}) # TODO We need laying down!
saynn("Azazel looks at the stars, his face content.")
addButton("What now?", "Ask what the group usually does coming here", "azazelwhathere")
if getModuleFlag("IssixModule", "Azazel_Sky_Response") == null:
addButton("Stars", "Ask Azazel what does he see in the sky", "azazelsky")
else:
addDisabledButton("Stars", "You've already asked Azazel about the stars")
if getModuleFlag("IssixModule", "Lamia_Is_Hungry", false):
addButton("Lamia", "Tell Azazel Lamia is hungry, maybe he'll be able to help", "azazelfood")
addButton("Back", "End the conversation", "walkies4")
if state == "azazelsky":
saynn("[say=pc]What do you see up there?[/say]")
saynn("[say=azazel]Possibilities. Stars, around which there are planets. Trillions of different creatures living across the galaxies. All with their own memories, lives, worries, cherished family members, friends, connections, stories to tell... Meow.[/say]")
saynn("You lay beside Azazel, looking at stars above, he continues.")
saynn("[say=azazel]We live for a fraction of time in the general timeline, we have a little time to tell our own stories before they are gone, and then there are also people who can shorten our lifespan because of simple hatered or economic reasons. How many stories are untold? How many people forgotten? Why do we even matter in grand scheme of things all of this considered?[/say]")
saynn("You prepare to respond, but before you can start speaking he continues")
saynn("[say=azazel]I like to imagine, I really like to imagine, that somewhere out there there is a planet with creatures who don't have existencial worries, who's lives are filled with pleasures, where they can be who they are without being judged, humiliated or killed. I like to think that they pass down stories through generations, maybe write them down and each new generation has access to them, drawing wisdom and not repeating mistakes of the past. They don't have to worry about AlphaCorp, Syndicate and whatever else is out there, not about groups hunting them down for who they are. They live in a moment, they lie on the blanket and look above, at the stars, holding paw of their partner, imagining the worlds full of happy people like them out there.[/say]")
saynn("You listen to Azazel's monologue in curiosity, deciding not to interrupt or add anything, you just lie beside him, thinking along him of such a planet full of happy creatures. After a while, he speaks again.")
saynn("[say=azazel]Do you think such a planet exists?[/say]")
addButton("Hopeful", "You do think such a planet exists", "azazelskyresponse", [true])
addButton("Doubtful", "You don't believe such a planet exists", "azazelskyresponse", [false])
if state == "azazelskyresponse":
if answer:
saynn("While you don't see Azazel's face, judging from tone of his voice are fairly certain he is smiling, happy")
saynn("[say=azazel]I think so too.[/say]")
else:
saynn("Azazel, sounding a little let down says")
saynn("[say=azazel]I see. I think... Personally... That such a planet exists. I really want it to.[/say]")
saynn("[say=azazel]Thanks for listening, by the way. I think about those things a lot, it's good to have someone new beside me to listen to them.[/say]")
addButton("Back", "Focus on something else", "azazel")
if state == "azazelwhathere":
saynn("[say=pc]I'm a bit lost, what do you usually do when you come here? What are the rules? Why are we not on the leash?[/say]")
saynn("Azazel laughs")
saynn("[say=azazel]Sorry, hearing those questions is kind of funny. This place is what we call „pasture”. We sometimes come here to relax and play. The atmosphere in here lets us forget we are in a prison and there is so much space in here. „Pasture” came from our little inside joke, but I like it and I think it fits this place fairly well.[/say]")
saynn("You see Azazel taking a small piece of dirt from the ground and throwing it at Hiisi, before it hits Hiisi he immediately repositions his body as to pretend he wasn't the culprit of random act of falling dirt, while continuing the conversation to make his alibi stronger")
saynn("[say=azazel]So yeah, in general Master unclips our leash and expects us to use the free time in our own way. It really depends on what we want to do, sometimes we fuck with each other, sometimes Master joins it, sometimes we relax like I do today, sometimes we play hide and seek or tag. I'm afraid that if you are hoping for some action today - you might be disappointed. If I had to guess the rest of us is rather tired or not in the mood.[/say]")
saynn("After piece of dirt reached Hiisi he took notice and looked around for culprit. His eyes eventually met Azazel's who smiled while at the same time speaking to you and trying to keep eye contact with you. Hiisi rolled his eyes and continued staring at Master.")
saynn("[say=azazel]As to the rules? All of the usual ones apply, just don't go too far so Master doesn't have to worry about you, don't fuck with other inmates without Master's permission, and maybe don't bother those who don't want to be bothered, it's everyone's time for some peace, I guess.[/say]")
saynn("[say=azazel]Sorry that it's so uneventful in your trial day, perhaps next time we go and you join us as Master's pet there would be more we could do.")
addButton("Back", "Thank Azazel for explanation", "azazel")
if state == "azazelfood":
setModuleFlag("IssixModule", "Lamia_Is_Hungry", false)
saynn("[say=pc]I talked a bit with Lamia, they are hungry, do you have any food?[/say]")
saynn("[say=azazel]Ughhh, I don't know what's up with him. It's not the first time like this. Master explained to them many times already that snacks are in the bag we take every day when we go on pasture and we are free to take any. For some reason Lamia chooses to avoid taking out the snacks from them even though it's fine for them to do so. Thanks for telling me this {pc.name}, I'll take care of it right away.[/say]")
saynn("Azazel crawls to the bag at the edge of the blanket, rummages it for a minute and takes out an apple and energy bar from it, coming to Lamia and giving them the snacks. Lamia pauses their drawing to consume some snacks, they thanked Azazel by their head nods.")
addButton("Back", "Your job is done here", "walkies4")
if state == "hiisi":
playAnimation(StageScene.Duo, "kneel", {npc="hiisi", npcAction="kneel"})
saynn("Hiisi sits with his hands hugging legs, staring at his Master, and a lake in silence.")
addButton("Master", "Ask why is he staring at his Master", "hiisimaster")
addButton("Distraction", "Hiisi seems nervious, maybe he'd be up for some temporary distraction?", "hiisirpc")
addButton("Back", "End the conversation", "walkies4")
if state == "hiisimaster":
processTime(5*60)
saynn("[say=pc]Is there something wrong with Master?[/say]")
saynn("[say=pc]Oh, {pc.name}? I don't know.[/say]")
saynn("He says without looking at you, continuing to look at his Master")
saynn("[say=hiisi]Usually when Master is down he is irritated and sometimes even aggressive. He isn't this time, he just feels off. I asked him about this before but he hasn't given me an answer.[/say]")
saynn("[say=pc]Do you have any theories?[/say]")
saynn("[say=hiisi]... No.[/say]")
saynn("[say=pc]Certainly odd. He does feel strange.[/say]")
saynn("Hiisi doesn't respond, he continues observing back of his master who is currently sitting and looking across the lake.")
addButton("Back", "End the conversation", "hiisi")
if state == "hiisirpc":
saynn("[say=pc]Hey Hiisi, you seem a bit anxious, how about we play a bit of rock, paper, scissors to lighten the mood?[/say]")
saynn("Hissi looks at you, his face quite sad but he seems convinced.")
saynn("[say=hiisi]I guess... We could play until 3 wins if you want... Do you want to play for something?[/say]")
saynn("[say=pc]Sure, what would you like to play for?[/say]")
saynn("[say=hiisi]What about a future favor? I promise it won't be anything harmful... I'd just want to try something.[/say]")
saynn("[say=pc]Sounds suspicious but I'm in, as for myself...[/say]")
addButton("Good time", "Ask Hiisi for sex", "hiisirpsfirst", [1])
addButton("Snuggle", "Wholesome version of close contact fun, but maybe that's what Hiisi needs", "hiisirpsfirst", [2])
addButton("Drink", "Ask Hiisi for something regular, energy drink shouldn't be that hard to get right?", "hiisirpsfirst", [3])
if state == "hiisirpsfirst":
match getModuleFlag("IssixModule", "Hissi_RPS_data")["chosen_reward"]:
1:
saynn("[say=pc]How about good time as a reward? Right after the game?[/say]")
saynn("[say=hiisi]I'm not sure...[/say]")
saynn("He thinks for good 20 seconds about your proposition.")
saynn("[say=hiisi]Alright, you're on.[/say]")
2:
saynn("[say=pc]How about a hug as a reward? Right after the game?[/say]")
saynn("[say=hiisi]... Just a hug? You are not using hug as an euphemism, right?[/say]")
saynn("[say=pc]Nope. Just a hug.[/say]")
saynn("Hiisi seems surprised a little, you can see his tail move hearing that.")
saynn("[say=pc]Sounds great, I like it, you're on.[/say]")
3:
saynn("[say=pc]You could give me something... Like an energy drink? Not right now, at some other time.[/say]")
saynn("[say=hiisi]Just that? An energy drink? Sounds doable.[/say]")
saynn("[say=pc]Just that.[/say]")
saynn("[say=pc]Sure, you're on.[/say]")
saynn("[say=pc]Great! Let's do this. Three... Two... One...[/say]")
addButton("Rock", "Use rock in this round", "hiisirps", [1])
addButton("Paper", "Use paper in this round", "hiisirps", [2])
addButton("Scissors", "Use scissors in this round", "hiisirps", [3])
if state == "hiisirps":
var rpc_data = getModuleFlag("IssixModule", "Hissi_RPS_data") # {"winpc": 0, "winh": 0, "chosen_reward": answer, "reward_acquired": false, "last_used": 0}
saynn("[say=pc]"+rock_paper_scissors_translation[rpc_data["last_used"]%10]+"![/say]")
saynn("[say=hiisi]"+rock_paper_scissors_translation[rpc_data["last_used"]/10]+"![/say]")
match rps_win_conditions(rpc_data["last_used"]%10, rpc_data["last_used"]/10):
1:
saynn("{pc.name} wins!")
2:
saynn("Hissi wins!")
3:
saynn("It's a tie!")
if rpc_data["winpc"] or rpc_data["winh"]:
saynn("Current standings: \n{pc.name}: {winpc}\nHissi: {winh}".format(rpc_data))
if rpc_data["winpc"] > 2:
addButton("Celebrate", "You've won, wooho", "hissirpspcwin")
elif rpc_data["winh"] > 2:
addButton("Lost", "You've lost the game fair and square", "hissirpshiisiwin")
else:
addButton("Rock", "Use rock in this round", "hiisirps", [1])
addButton("Paper", "Use paper in this round", "hiisirps", [2])
addButton("Scissors", "Use scissors in this round", "hiisirps", [3])
if state == "hissirpspcwin":
saynn("[say=pc]Haha, I did it. Nice game, thanks for playing Hissi.[/say]")
saynn("You've noticed that his mood has brightened, and he isn't so gloomy anymore.")
saynn("[say=hiisi]Yeah, thank you for that, was actually pretty nice, glad we could have this one.\nYou know... You are pretty cool {pc.name}.[/say]")
saynn("He looks down, but with slight grin on his face.")
saynn("[say=pc]Awwwww. Thank you Hiisi! You are pretty cool yourself too, you know![/say]")
# TODO
if state == "hissirpshiisiwin":
saynn("T")
# TODO
if state == "lamia":
playAnimation(StageScene.Duo, "kneel", {npc="lamia", npcAction="kneel"}) # TODO We need laying down!
saynn("Lamia lays on his belly, holds one of the colorful pencils from his drawing kit and draws. Next to him a stack of empty paper sheets as well as a visibly smaller but still impressive stack of filled out papers")
if getModuleFlag("IssixModule", "Lamia_Is_Hungry") == null:
addButton("Drawings", "Look at the drawings", "lamiadrawings")
else:
addDisabledButton("Drawings", "You've already asked about the drawings")
addButton("Try drawing", "Try drawing something", "lamia")
addButton("Back", "End the conversation", "walkies4")
if state == "lamiadrawings":
processTime(10*60)
saynn("You crawl to Lamia's stack of drawings, the one at the top is a fairly detailed drawing of a bird. Lamia notices your interest and smiles at you. He takes the top sheet of paper from his drawn pile and invites you to browse.")
saynn("The drawing underneath the bird shows an inmate in orange uniform sitting in front of a table that has a cake on it, considerint the look of the cake you can guess its a birthday cake. Around the inmate there are 4 other inmates.")
saynn("[say=pc]Those are really good. Are they showing real events? Are those things you've seen?[/say]")
saynn("You quickly realize that asking two questions at the same time might make it very difficult for Lamia to answer in a way you'd understand, you quickly correct yourself.")
saynn("[say=pc]Ekhem, I mean, for example, the scene with the birthday cake, or a bird, do you draw based on things you've personally been a witness of?[/say]")
saynn("They look at you and move their head to the sides putting their shoulders slightly higher, you interpret it as „sometimes, sometimes not”.")
saynn("[say=pc]I see, so just sometimes[/say]")
saynn("They nod to confirm")
saynn("You look at their current drawing, it's Issix, with what looks to be like a fishing rod. You look at Issix, just to be sure, he certainly does not hold any fishing rod, but other than that everything else seems to be correct from position of Lamia. Suddenly an idea comes to your mind.")
saynn("[say=pc]Lamia, I do wonder, how would you draw your current feelings?[/say]")
saynn("Without a moment of hesitation, Lamia turns the paper to the other side, pulls out a brown pencil, draws a circle with some darker brown irregular circle like figures inside. After a moment you have a good idea that it's a cookie. Then they draw a very simple sad face.")
saynn("Cookie sad? Sad cookie? Umm... Are you... Hungry perhaps?")
saynn("Lamia nods, their paw on their belly, further confirming your guess.")
addButtonWithChecks("Apple", "Give the fox breed an apple", "giveapple", [], [[ButtonChecks.HasItemID, "appleitem"]])
#addButtonWithChecks("Energy drink", "Give the fox breed an energy drink... Out of lack of better things?", "givedrink", [], [[ButtonChecks.HasItemID, "EnergyDrink"]])
addButtonWithChecks("Cookie", "Give the fox breed a cookie", "givecookie", [], [[ButtonChecks.HasItemID, "Cookie"]])
addButton("Nothing", "You have nothing to give to the fox breed, hoping that they find other way to sate their little hunger", "nofood")
if state == "nofood":
setModuleFlag("IssixModule", "Lamia_Is_Hungry", true)
saynn("[say=pc]Aww, hungry? Unfortnetely I have brought no snacks with myself. Sorry![/say]")
saynn("Lamia is visibly saddened after hearing that, however they quickly return to drawing, occupying their mind.")
addButton("Back", "End the conversation", "lamia")
if state == "giveapple":
setModuleFlag("IssixModule", "Lamia_Is_Hungry", false)
saynn("[say=pc]Here, have an apple. That's all I have.[/say]")
saynn("You pass an apple to the fox, they take a bite and give you a warm smile, munching it slowly. You hope it satiates them a bit.")
addButton("Back", "End the conversation", "lamia")
if state == "givecookie":
processTime(15*60)
setModuleFlag("IssixModule", "Lamia_Is_Hungry", false)
setModuleFlag("IssixModule", "Received_Portrait_From_Lamia", true)
saynn("[say=pc]Hmm, cookie you say? So it happens I have one, you pull the cookie in front of them.[/say]")
saynn("Their eyes lit up like candles, you stare at the cookie, pleading look in their face. They need no words to let you know just how much are they starved for such a sweet treat.")
saynn("[say=pc]You are not allergic, right? Wouldn't want to cause an incident.[/say]")
saynn("They shake their head - no, clearly. It feels that if you don't give them cookie very soon, not only the blanket will be wet by salivating fox, but you may eventually lose a finger, or two. You decide to pass the cookie to the fox.\nThey take it, and to your surprise, they do not devour it immediately. They take very small bites, seems like they are treasuring every single bite of that cookie. Watching them be so happy about such a little thing fills your heart with warmth. You could stare at this fox delectating themselves with the cookie for an hour, and it would still be worth watching. Shortly after they eat half of it they show you a pointing finger, a sign you should wait a moment. They pull out a new piece of paper and start drawing.")
saynn("You look at them, being very focused, they look at you too, from time to time. After 15 minutes they are done. They take their artwork and show it to you, being incredibly proud of themselves, closing their eyes.\nYou are astounded. On the paper your very "+GM.pc.getBodypart(BodypartSlot.Head).getName().split("head")[0] +" face. It's a portrait of you from side view, what's special about this portrait however, is that inside of your mouth you have a cookie. Basket muzzle didn't make the cut, probably because it would ruin the portrait. While the portrait looks incredibly silly, the happiness of artist holding it could potentially kill if it was able to.")
addButton("Hug", "Thank and hug Lamia as thanks", "hugandthank")
addButton("Headpat", "Give the artist fox a headpat", "headpat")
# TODO Make it so the player can put it on the wall in their cell
if state == "hugandthank":
saynn("Stunned, your heart melted, the first thing that comes to your mind is to hug the fox. You do that completely on impulse with no hesitation. Fox at first taken aback by that gesture (embarassed, blushing hard), eventually embraces the hug and reciprocates. Still hugging you say")
saynn("[say=pc]Thank you Lamia, I love it so much. I'll cherish it.[/say]")
saynn("They smile and nod twice to you excitedly.")
addButton("Back", "End the conversation", "lamia")
if state == "headpat":
saynn("Stunned, your heart melted, the first thing that comes to your mind is to give the fox a headpat. You put your paw on their head and gently pat them. Their ears flatten and their face seems very pleased by your patting.")
saynn("[say=pc]Thank you Lamia, I like it very much.[/say]")
saynn("They smile and nod to you excitedly.")
addButton("Back", "End the conversation", "lamia")
if state == "else":
saynn("You are thinking of doing something else. With plenty of space you could do plenty of activities, even if alone, considering all of the others don't seem to be keen on doing anything.")
addButton("Walk", "Go for a walk near your group", "elsewalk")
addButton("")
## Function to determine a winner of given Rock Paper Scissors game
## Takes Player answer that is an int from 1 to 3 (1: Rock, 2: Paper, 3: Scissors)
## And NPC answer of same format
## Returns 1 if player wins, 2 if NPC wins, 3 if it's a tie
func rps_win_conditions(pc_answer: int, h_answer: int):
if pc_answer == h_answer: # tie
return 3
if rock_paper_scissors[pc_answer] == h_answer: # player win
return 1
return 2 # npc wins
func _react(_action: String, _args):
if _args:
answer = _args[0]
if _action == "azazelskyresponse":
setModuleFlag("IssixModule", "Azazel_Sky_Response", answer)
if _action == "hiisirpsfirst":
setModuleFlag("IssixModule", "Hissi_RPS_data", {"winpc": 0, "winh": 0, "chosen_reward": answer, "reward_acquired": false, "last_used": 0})
if _action == "hiisirps":
var current_data = getModuleFlag("IssixModule", "Hissi_RPS_data")
var npc_answer = RNG.randi_range(1,3)
match rps_win_conditions(answer, npc_answer):
1:
current_data["winpc"] += 1
2:
current_data["winh"] += 1
current_data["last_used"] = answer+(npc_answer*10)
setModuleFlag("IssixModule", "Hissi_RPS_data", current_data)
if _action == "walkies2":
runScene("ParadedOnALeashScene", ["issix", GM.pc.getLocation(), "main_yard_connector", [
"Lamia, please try to keep up",
"Azazel, watch out, inmate on your right is aboout to reach her climax",
"Hiisi, stop sniffing every inmate, you are slowing us all down",
"{pc.name} stay in between Lamia and Hiisi, you fit there perfectly"
], "main_yard_connector", "crawl"])
if _action == "walkies3":
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand", bodyState={leashedBy="issix"}})
runScene("ParadedOnALeashScene", ["issix", GM.pc.getLocation(), "yard_waterfall", [
"Lamia, please try to keep up",
"Azazel, watch out, inmate on your right is aboout to reach her climax",
"Hiisi, stop sniffing every inmate, you are slowing us all down",
"{pc.name} stay in between Lamia and Hiisi, you fit there perfectly"
], "yard_waterfall", "crawl"])
if _action == "giveapple":
GM.pc.getInventory().removeXOfOrDestroy("appleitem", 1)
if _action == "givecookie":
GM.pc.getInventory().removeXOfOrDestroy("Cookie", 1)
if(_action == "endthescene"):
endScene()
return
setState(_action)

View file

@ -7,32 +7,36 @@ func _run():
if(state == ""): if(state == ""):
saynn("In front of you - three slaves belonging to Issix.") saynn("In front of you - three slaves belonging to Issix.")
addCharacter("azazel")
addCharacter("lamia")
addCharacter("hiisi")
addButton("Azazel", "Approach Azazel", "azazelmain") addButton("Azazel", "Approach Azazel", "azazelmain")
addButton("Hiisi", "Approach Hiisi", "hiisimain") addButton("Hiisi", "Approach Hiisi", "hiisimain")
addButton("Lamia", "Approach Lamia", "lamiamain") addButton("Lamia", "Approach Lamia", "lamiamain")
addButton("Leave", "Be on your way", "endthescene") addButton("Leave", "Be on your way", "endthescene")
if(state == "paper"):
saynn("deez balls")
if(state == "azazelmain"): if(state == "azazelmain"):
playAnimation(StageScene.Duo, "stand", {npc="azazel", npcAction="sit"}) # TODO There is better sitting pose, like in gym, but need to find where poses are stored playAnimation(StageScene.Duo, "kneel", {pc="azazel", npc="pc", bodyState={naked=false, hard=false}})
if GM.main.getModuleFlag("IssixModule", "PC_Enslavement_Status") == 0: clearCharacter()
saynn("You approach Azazel, he recognizes sudden attention given to him, raises on his fours and streches his back before sitting towards you expectandly. You notice he took a quick peek at his master beforehand.") addCharacter("azazel")
else:
pass # TODO
addButton("Talk", "Talk to Azazel", "azazeltalk") addButton("Talk", "Talk to Azazel", "azazeltalk")
addButton("Appearance", "Look at Azazel", "azazelappearance") addButton("Appearance", "Look at Azazel", "azazelappearance")
if(GM.pc.getInventory().hasItemID("CatnipPlant")): if(GM.pc.getInventory().hasItemID("CatnipPlant")):
saynn("Before you even have the time to approach Azazel, you see his head hovering over his body, his little nose working very hard to track down the source of the curious smell. He looks around with interest, until he sees you approaching.\nHe observes you with interest as you come close.") saynn("Before you even have the time to approach Azazel, you see his head hovering over his body, his little nose working very hard to track down the source of the curious smell. He looks around with interest, until he sees you approaching.\nHe observes you with interest as you come close.")
saynn("[say=azazel]Meow! You really smell of a cat nip, do you have catnip? Do you??[/say]") saynn("[say=azazel]Meow! You really smell of a catnip, do you have catnip? Do you??[/say]")
saynn("{azazel.name} becomes really excited, as exemplified by his tail stretching high as if it was a broom stick. His body constantly sways.") saynn("{azazel.name} becomes really excited, as exemplified by his tail stretching high as if it was a broom stick. His body constantly sways.")
addButton("Give Catnip", "Give Azazel the catnip", "catnip") addButton("Give Catnip", "Give Azazel the catnip", "catnip")
else:
if getModuleFlag("IssixModule", "PC_Enslavement_Status", 0) == 0:
saynn("You approach Azazel, he recognizes sudden attention given to him, he goes on his fours doing some kitty back streching before kneeling towards you expectandly. You notice he took a quick peek at his master beforehand.")
else:
pass # TODO
addButton("Back", "Take a step back", "") addButton("Back", "Take a step back", "")
if(state == "lamiamain"): if(state == "lamiamain"):
if GM.main.getModuleFlag("IssixModule", "PC_Enslavement_Status") == 0: if getModuleFlag("IssixModule", "PC_Enslavement_Status", 0) == 0:
saynn("You approach Lamia") saynn("You approach Lamia")
addButton("Try drawing", "You can try and draw something with lamia", "lamiadraw") # TODO
else: else:
pass # TODO pass # TODO
saynn("") saynn("")
@ -45,20 +49,32 @@ func _run():
saynn("[say=azazel]Meow! I mean... Yes, sorry, I got... A bit carried away.[/say]") saynn("[say=azazel]Meow! I mean... Yes, sorry, I got... A bit carried away.[/say]")
saynn("He becomes a little embarassed. Looks down at the catnip plant on his blanket. Picks it up with his paw and consumes it.") saynn("He becomes a little embarassed. Looks down at the catnip plant on his blanket. Picks it up with his paw and consumes it.")
saynn("[say=azazel]Twank yuu {pc.name}. It was really nice![/say]") saynn("[say=azazel]Twank yuu {pc.name}. It was really nice![/say]")
processTime(10 * 5) processTime(1 * 60)
addButton("Back", "End catnip therapy session", "azazelmain") addButton("Back", "End catnip therapy session", "azazelmain")
#setState("azazelmain") #setState("azazelmain")
if(state == "azazeltalk"): if(state == "azazeltalk"):
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_talked", true) GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_talked", true)
addButton("Prison", "How did he end up in prison?", "azazelprison") var affection = getModuleFlag("IssixModule", "Azazel_Affection_given")
addButton("Issix", "What he thinks of his master?", "azazelmaster") addButton("Prison", "Ask how did he end up in prison?", "azazelprison")
addButton("Breeder", "What he thinks of his position as a breeding bitch?", "azazelbreeding") addButton("Hobby", "Ash what hobbies does he have", "azazelhobby")
addButton("Fetishes", "He mentioned his fetishes, perhaps he could elaborate?", "azazelfetishes") if affection > 2:
addButton("Hobby", "Does he do anything other than sex???", "azazelhobby") addButton("Issix", "Ask what he thinks of his master?", "azazelmaster")
addButton("Pussy", "Azazel has a pussy and yet he is rather masculine", "azazelintersex") else:
addButton("Hero", "") addDisabledButton("Issix", "You don't have good enough relationship with Azazel to ask about his master")
if affection > 5:
addButton("Breeder", "Ask what he thinks of his position as a breeding bitch?", "azazelbreeding")
else:
addDisabledButton("Breeder", "You don't have good enough relationship with Azazel to ask about his position as breeding bitch")
if affection > 10:
addButton("Fetishes", "He mentioned his fetishes, perhaps he could elaborate?", "azazelfetishes")
else:
addDisabledButton("Breeder", "You don't have good enough relationship with Azazel to ask about his fetishes")
if affection > 18:
addButton("Pussy", "Azazel has a pussy and yet he is rather masculine", "azazelintersex")
else:
addDisabledButton("Pussy", "You don't have good enough relationship with Azazel to ask about his genitalia")
#addButton("Hero", "")
if(GM.pc.getInventory().hasItemID("CatnipPlant")): if(GM.pc.getInventory().hasItemID("CatnipPlant")):
pass pass
else: else:
@ -66,14 +82,34 @@ func _run():
addButton("Back", "Do something else", "azazelmain") addButton("Back", "Do something else", "azazelmain")
if(state == "azazelappearance"): if(state == "azazelappearance"):
saynn("You take a closer look at {azazel.name}. He is a very thin and fairly short feline, judging from him sitting he is around " + Util.cmToString(150) + " tall, with no visible muscles, likely not very strong. Overall his body is still mostly masculine, though here and there there are feminine features like his face or shoulders.\nHis fur is in majority dark grey, though his belly and face are of ligher shade of gray. A small set of horns protrudes from his head. On his backside there is a medium sized feline tail.\n\nOne significant detail is that he does not possess a penis, in its place there is a {azazel.pussyStretch} vagina, above which you can see words ”ISSIX'S PROPERTY” branded onto the skin.") if(OPTIONS.isContentEnabled(ContentType.Watersports)):
saynn("When approaching there are two distinct smells coming from Azazel - his own pheromones advertising his fertility to everyone around, as well another strong smell of his master. Azazel has been marked, in more ways than one.")
else:
saynn("When approaching there is one distinct smell coming from Azazel - his own pheromones advertising his fertility to everyone around.")
saynn("You take a closer look at {azazel.name}. He is a very thin and fairly short feline, judging from him sitting he is around " + Util.cmToString(150) + " tall, with no visible muscles, likely not very strong. Overall his body is still mostly masculine, though here and there there are feminine features like his face or shoulders.\nHis fur is in majority dark grey, though his belly and face are of ligher shade of gray. A small set of horns protrudes from his head. On his backside there is a medium sized feline tail.\n\nOne significant detail is that he does not possess a penis, in its place there is a {azazel.pussyStretch} vagina, above which you can see a womb tattoo seemingly glowing a bit in shade of red.")
saynn("On his back words ”ISSIX'S PROPERTY” branded onto the skin - a mark of his master.")
addButton("Back", "Do something else", "azazelmain")
if state == "azazelprison":
saynn("[say=pc]Tell me Azazel, what had happened that you've ended up in this prison? You are a Lilac, so I assume it had something to do with sex.[/say]")
saynn("[say=azazel]It's true... There is a group on my home planet, they claim they want to cleanse the society of trash, and by trash they of course mean everyone they deem too radical for their own liking.[/say]")
saynn("Azazel looks down, this conversation seems to bring back bad memories.")
saynn("[say=azazel]One of the group's members wanted to meet me one day, they wanted to... Procure my services. Turns out it was all just a plot, they got close to me and I didn't really see anything wrong with that, I shared a lot of personal details with them - my life, financial situation even fetishes, they felt really honest and... Caring. Eventually they tore down their mask and said they have all kind of dirt on me. That's where the hell broke loose, their group were on my back for a while, stalking, harassing me. Eventually one of my clients gave me the bug, I think it was the group who sent me that client and...[/say]")
saynn("Azazel's voice starts to break down.")
saynn("[say=azazel]They reported me, I had my license taken and now I'm in here.[/say]")
saynn("You both sit in awkward silence while Azazel recovers.")
saynn("[say=azazel]I will never understand groups as that one. There are more of those all over the galaxy, I know that. They ruin the lives of so many of us.. Workers. What have we done to wrong them? Nothing, we just sell our time and bodies to give others and ourselves some temporary pleasures in this grim world we live in.[/say]")
saynn("He sighs, it seems to have calmed him down")
saynn("[say=azazel]When I first arrived here I were so lost. Still very confused by this series of events, felt betrayed, hurt. Eventually I've met Master, they saw something in me and theey guided me through my trauma. I were really happy to become his pet, I've finally understood what it really means to care for someone. And honestly? It's not so bad, I have food, shelter and Master who takes care of me. And my heats.[/say]")
saynn("He says the last one, showing you his tongue at you in a grin")
saynn("[say=azazel]So... Yeah... That's how I ended up here. Not a happy story, but I doubt anyone's is. Ironically, I think I'm better here, and I can still engage in sex without any stupid license.[/say]")
addButton("Back", "Do something else", "azazelmain") addButton("Back", "Do something else", "azazelmain")
func _react(_action: String, _args): func _react(_action: String, _args):
if(_action == "catnip"): if(_action == "catnip"):
GM.pc.getInventory().removeXOfOrDestroy("CatnipPlant", 1) GM.pc.getInventory().removeXOfOrDestroy("CatnipPlant", 1)
GM.main.getCharacter("azazel").addLust(10) GM.main.getCharacter("azazel").addLust(10)
GM.main.increaseModuleFlag("IssixModule", "Azazel_Catnips_given") GM.main.increaseModuleFlag("IssixModule", "Azazel_Affection_given")
if(_action == "endthescene"): if(_action == "endthescene"):
endScene() endScene()

View file

@ -0,0 +1,22 @@
extends EventBase
func _init():
id = "ArtworkModifyingPlayerCell"
func registerTriggers(es):
es.addTrigger(self, Trigger.EnteringPlayerCell)
func run(_triggerID, _args):
if getModuleFlag("IssixModule", "Placed_Portrait_In_Cell", false):
saynn("On the wall you can see a vertical sheet of paper with your face holding a cookie in the mouth. Drawn by Lamia.")
return
if getModuleFlag("IssixModule", "Received_Portrait_From_Lamia", false) and getModuleFlag("IssixModule", "Placed_Portrait_In_Cell") == null:
addButton("Portrait", "You can choose to put a portrait you've received from Lamia on the wall of your cell", "portrait")
func onButton(_method, _args):
if(_method == "portrait"):
runScene("PlayerCellLamiaPortraitScene")
func getPriority():
return 11

View file

@ -0,0 +1,33 @@
extends SceneBase
func _init():
sceneID = "PlayerCellLamiaPortraitScene"
#func _reactInit():
# endScene()
# return
func _run():
if(state == ""):
saynn("You can choose to put up Lamia's portrait of you in your cell if you so choose.")
addButton("Put", "Put the portrait on your wall", "putportrait")
addButton("Don't put", "Don't hang your portrait on the wall (won't ask in the future)", "dontput")
addButton("Ignore", "Don't do anything with it for now", "endthescene")
if(state == "putportrait"):
setModuleFlag("IssixModule", "Placed_Portrait_In_Cell", true)
saynn("You grab your portrait you got from Lamia, find some scraps of a tape in your stash and hang it on the wall. It looks wonderful. Reminds you of a great moment you shared with Lamia... And shows everyone who comes near who's cell it is.")
addButton("Back", "Job well done", "endthescene")
if state == "dontput":
setModuleFlag("IssixModule", "Placed_Portrait_In_Cell", false)
saynn("You grab your portrait you got from Lamia and stash it.")
addButton("Back", "Job well done", "endthescene")
func _react(_action: String, _args):
if(_action == "endthescene"):
endScene()
return
setState(_action)

View file

@ -1,3 +1,5 @@
[![libera manifesto](https://img.shields.io/badge/libera-manifesto-lightgrey.svg)](https://liberamanifesto.com)
# Pierre # Pierre
A mod for Broken Dreams Correctional Center. Introduces Pierre (name will be changed later on for compatibility reasons) and his harem of sl- pets. A mod for Broken Dreams Correctional Center. Introduces Pierre (name will be changed later on for compatibility reasons) and his harem of sl- pets.
@ -19,6 +21,8 @@ Mod is directed pretty much exclusively at players who are submissive. In game t
I think there is a reason why there are dozens of harem-management games where player becomes harem's owner and manages slave instead of being one. I think in large part there isn't much of a way to make the player be a slave and keep the gameplay entertaining. If becoming a slave means less choice - the game may become boring. In this mod I'm trying my best to still feel like player is enslaved while at the same time let them continue playing the game. This is not an easy task to do, but probably better than eternity of being stuck in one time playing card game with another pet. I think there is a reason why there are dozens of harem-management games where player becomes harem's owner and manages slave instead of being one. I think in large part there isn't much of a way to make the player be a slave and keep the gameplay entertaining. If becoming a slave means less choice - the game may become boring. In this mod I'm trying my best to still feel like player is enslaved while at the same time let them continue playing the game. This is not an easy task to do, but probably better than eternity of being stuck in one time playing card game with another pet.
## Planned content ## Planned content
Mod is driven by BDCC players [giving](https://github.com/Friskygote/Issix-mod/discussions) mod's author headpats and calling him a good boy, without those author might run out of motivation ;)
Here is a list of planned content:
- Some parasite related content (already foreshadowed) - Some parasite related content (already foreshadowed)
- Expanded slavery scenes/systems - Expanded slavery scenes/systems
- Alternative route of enslavement for players who are the type of people that completes Undertale's genocide run 5 times just for fun *stares with judgement* - Alternative route of enslavement for players who are the type of people that completes Undertale's genocide run 5 times just for fun *stares with judgement*
@ -29,6 +33,8 @@ The goal is to create a mod with as little of overwriting the core modules to pr
# Contributing # Contributing
Anyone is encouraged to contribute! If you think you have a good idea the issue tracker is there, I welcome pull requests, if you are unsure whether what you like would fit the mod feel free to join a discussion, I don't bite and no kink grosses me out really *wink wink*! Anyone is encouraged to contribute! If you think you have a good idea the issue tracker is there, I welcome pull requests, if you are unsure whether what you like would fit the mod feel free to join a discussion, I don't bite and no kink grosses me out really *wink wink*!
Please however, do not use generative AI to contribute to the project. None of the work in here has been generated by gen AI and I'd like to keep it this way. Thank you!
# Usage # Usage
I also license the mod on the same license base game is licensed on, it's a nod both to game's developer who I insanely respect for creating such a big, organized, **open-source**, kinky project. I give my permission to use any part if not the entirety in other projects, including base game if one so desires. If you want to be extra sure you use my work in a way that I'd be alright with, you can also look at my [acceptable use policy for my fursona character](https://frisk.space/about/fursona-use/#specific-terms), even though my fursona is not part of the mod, the terms described in there are generally applicable, even if not enforceable. Of course, if you use my work, please credit my name appropriately. I also license the mod on the same license base game is licensed on, it's a nod both to game's developer who I insanely respect for creating such a big, organized, **open-source**, kinky project. I give my permission to use any part if not the entirety in other projects, including base game if one so desires. If you want to be extra sure you use my work in a way that I'd be alright with, you can also look at my [acceptable use policy for my fursona character](https://frisk.space/about/fursona-use/#specific-terms), even though my fursona is not part of the mod, the terms described in there are generally applicable, even if not enforceable. Of course, if you use my work, please credit my name appropriately.