19.12 updates, a lot of fixes, phrasing improvements, small bits

This commit is contained in:
Frisk 2024-12-20 00:37:21 +01:00
parent f56afe73d5
commit 0ecafd39ea
17 changed files with 465 additions and 83 deletions

View file

@ -1,6 +1,6 @@
{
"name": "Issix Mod",
"description": "Tags: M/player, M/M (implied), petplay, slavery, degradation, watersports (in-game toggle content), parasite (future, opt-in)\n\nIssix is a demonic dragon sick entirely of the world around, finding peace in BDCC facility. His idea of paradise is to own slaves to keep him company, do YOU want to join them?\n\nIssix mod adds 4 characters to the game - Issix as a dominant demonic dragon as well as Azazel, Hiisi and Lamia - his loyal pets. Mod is directed at players who when playing video games prefer to put themselves in submissive roles, as its the player who can join Issix's harem as one of his pets.\n\nCurrent features:\n* 4 characters, all with some interactions coded in, you can help Lamia categorize their artwork, get some drugs for Azazel and play Rock Paper Scissor with Hiisi\n* 17 scenes, sort of meaningless number, but likely enough of content for at least an hour of gameplay with plans for expansion in the future\n* 1 quest leading to player's voluntary enslavement by Issix\n\nPlanned content:\n* More content after player is enslaved which is currently missing\n* Prostitute role\n* \"Hard mode\" with less choice and total submission to Master\n* Alternative route leading to enslavement\n* Expansion of content for all characters\n\nEveryone is welcome to contribute to the mod over on GitHub at https://github.com/Friskygote/Issix-mod.",
"description": "Tags: M/player, M/M (implied), petplay, slavery, degradation, watersports (in-game toggle content), parasite (future, opt-in)\n\nIssix is a demonic dragon sick entirely of the world around, finding peace in BDCC facility. His idea of paradise is to own slaves to keep him company, do YOU want to join them?\n\nIssix mod adds 4 characters to the game - Issix as a dominant demonic dragon as well as Azazel, Hiisi and Lamia - his loyal pets. Mod is directed at players who when playing video games prefer to put themselves in submissive roles, as its the player who can join Issix's harem as one of his pets.\n\nCurrent features:\n* 4 characters, all with some interactions coded in, you can help Lamia categorize their artwork, get some drugs for Azazel and play Rock Paper Scissor with Hiisi\n* 17 scenes, sort of meaningless number, but likely enough of content for at least an hour of gameplay with plans for expansion in the future\n* 1 quest leading to player's voluntary enslavement by Issix\n\nPlanned content:\n* More content after player is enslaved which is currently missing\n* Prostitute role\n* \"Hard mode\" with less choice and total submission to Master\n* Alternative route leading to enslavement\n* Expansion of content for all characters\n\nMod assumes player takes an anthro form, in the future it might be changed but if it's a deal breaker you should know.\n\nEveryone is welcome to contribute to the mod over on GitHub at https://github.com/Friskygote/Issix-mod.",
"author": "Frisk",
"repository": "https://github.com/Friskygote/Issix-mod",
"modversion": "0.8",

View file

@ -24,7 +24,7 @@ func checkRequirements(requirements: Dictionary):
func shouldBeShownForcedEvent():
var scenes_seen = getModuleFlag("IssixModule", "Misc_Slavery_Info", {"scenes_seen": []})
var current_progression_points = GM.main.getModuleFlag("IssixModule", "Progression_Points", 1)
var current_progression_points = GM.main.getModuleFlag("IssixModule", "Progression_Points", 0)
if GM.main.getDays() >= GM.main.getModuleFlag("IssixModule", "Progression_Day_Next", 0) and GM.main.getModuleFlag("IssixModule", "Unwelcome_At_Corner", false) != true:
registered_special_scenes.sort_custom(CustomSorter, "sort_by_progressionpoints")
for scene in registered_special_scenes:

View file

@ -36,9 +36,9 @@ func run(_triggerID, _args):
addButton("Master", "Talk to Master Issix", "talk")
addButton("Pets", "Look at Master's pets", "pets")
match player_enslaved:
1.0: # WHY ARE NUMBER FLAGS FLOATS ASDJASODHASUDHASIDHBASHDASHDOASDJASD kill me
1, 1.0: # WHY ARE NUMBER FLAGS FLOATS ASDJASODHASUDHASIDHBASHDASHDOASDJASD kill me
addButton("Pet tasks", "Get a read on today's pet tasks", "slavery")
2.0:
2, 2.0:
addButton("Prostitution", "Open prostitution info", "slavery")
_:
saynn(player_enslaved)

View file

@ -7,18 +7,15 @@ func getVisibleName():
return "Catnip"
func getDescription():
return "An enticing plant for most of felines. Used as harmfull drug, unless in large quantities. Can have effects on a feline if consumed."
func isFeline(character:BaseCharacter):
return "feline" in character.getSpecies()
return "An enticing plant for most of felines. Used as harmful drug, unless in large quantities. Can have effects on a feline if consumed."
func canUseInCombat():
return isFeline(GM.pc)
return true
func useInCombat(_attacker:Character, _receiver):
if(isFeline(_attacker)):
func useInCombat(_attacker, _receiver):
if "feline" in _attacker.getSpecies():
if(!(_attacker.isPlayer() and GM.main.getFlag("HypnokinkModule.SoftOptIn") == false)):
_attacker.addEffect(StatusEffect.UnderHypnosis)
_attacker.addEffect(StatusEffect.Suggestible, [5])
_attacker.addLust(10)
removeXOrDestroy(1)
return _attacker.getName() + " ate a catnip plant! That feels... Wahhaa."
@ -27,7 +24,6 @@ func useInCombat(_attacker:Character, _receiver):
return _attacker.getName() + " ate a catnip plant! It didn't have any effect."
func getPossibleActions():
if(isFeline(GM.pc)): # We really shouldn't assume the item is being used by a player character, but sadly game does not give us context for the item user :(
return [
{
"name": "Eat one!",
@ -35,8 +31,6 @@ func getPossibleActions():
"description": "Eat the catnip",
},
]
else:
return []
func getPrice():
return 0

View file

@ -34,11 +34,13 @@ func getFlags():
"QuestionnaireQ11": flag(FlagType.Bool),
"Lamia_Is_Hungry": flag(FlagType.Bool),
"Azazel_Sky_Response": flag(FlagType.Bool),
"Azazel_Catnip_given_today": flag(FlagType.Number),
"Received_Portrait_From_Lamia": flag(FlagType.Bool),
"Placed_Portrait_In_Cell": flag(FlagType.Bool),
"Hissi_RPS_data": flag(FlagType.Dict),
"Hiisi_Name_Helped": flag(FlagType.Bool),
"Shared_Marshmallows": flag(FlagType.Bool),
"Saw_Azazel_Naked": flag(FlagType.Bool),
# Slavery related
"PC_Enslavement_Role": flag(FlagType.Number),
@ -242,6 +244,7 @@ func resetFlagsOnNewDay(): # I apologize for abusing this hook, but startNewDay
GM.main.setModuleFlag("IssixModule", "Unwelcome_At_Corner", false)
GM.main.setModuleFlag("IssixModule", "Had_Sex_With_Issix", false)
GM.main.setModuleFlag("IssixModule", "Is_Player_Forced_Today", 0)
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_given_today", 0)
breedSlaveIfNpc()
if GM.main.getModuleFlag("IssixModule", "Helped_Lamia_With_Drawings_Today") != null:
GM.main.setModuleFlag("IssixModule", "Helped_Lamia_With_Drawings_Today", false)

View file

@ -6,6 +6,11 @@ var empty_loots = [
"After putting your paw deep within the shelf you start feeling very unpleasant coldness coming from the tips of your fingers. Oof! You immediately pull out your paw.",
"The entire filling cabinet starts vibrating after opening this shelf. It does not bode well, you immediately close this shelf. The vibration stops. That was odd.",
"When opening the shelf you start hearing voice outside the closet, considering how well the doors are masking the sounds from the hallway they must be really close, perhaps they want to use the closet?\nIn panic you try to find some place to hide to no avail, there is not much space to begin with. You stand terrified until voice goes quiet. After sigh of relief you check the opened shelf, however there isn't anything in there other than various replacement parts to electronic devices.",
"Only a bunch of screws on the bottom of this shelf.",
"The shelf opens and you notice strands of fur flying around, apparently this one is entirely filled with brown fur? Odd...",
"Inside the shelf you find many neatly organized markers and office related items. Nothing of interest to you, though.",
"Old school door hinges can be found in this particular shelve.",
"Pulling this shelve causes a bit of noise, many metal processing units inside are all shuffling around.",
"You pull out a shelf and find a single piece of paper inside. It has only one sentence on it, in large font that fills entire page saying „OH, DID U GET THE BROOM CLOSET ENDING? THEB ROOM CLOSET ENDING WAS MY FAVRITE!1 XD”. The absolute lack of context and randomness of this message fill you with concern. Engineers must have a very strange sense of humor."
]
var cabinet_random = RandomNumberGenerator.new()

View file

@ -14,14 +14,14 @@ func _run():
saynn("What do you wanna do?")
addButton("Take catnip", "Sneak in, grab one and get out", "catnip")
addButton("Take catnip", "Sneak in, grab one and get out", "catnip", [GlobalRegistry.createItem("CatnipPlant")])
addButton("Don't steal", "Too dangerous", "endthescene")
else:
saynn("While staring at plethora of different plants, you recognize one in particular - white flowers and specific smell. Catnip!")
saynn("You find and cut one of many catnip at the bottom of the stem. Time to leave.")
addButton("Continue", "Try to escape without being seen", "caughtcheck")
addButton("Continue", "Try to escape without being seen", "caughtcheck", [GlobalRegistry.createItem("CatnipPlant")])
if state == "catnip":
saynn("While staring at plethora of different plants, you recognize one in particular - white flowers and specific smell. Catnip!")
@ -35,12 +35,13 @@ func _run():
func _react(_action: String, _args):
if _args:
GM.pc.getInventory().addItem(_args[0])
addMessage("You stole catnip plant.")
if(_action == "catnip"):
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_noticed", true)
GM.pc.getInventory().addItem(GlobalRegistry.createItem("CatnipPlant"))
addMessage("You stole catnip plant.")
if(_action == "caughtcheck"):
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_taken_today", true)
processTime(10 * 5)

View file

@ -10,7 +10,7 @@ func _run():
if(state == ""):
playAnimation(StageScene.Duo, "sit", {npc="issix", npcAction="sit"})
if(GM.main.getModuleFlag("IssixModule", "Quest_Status") == 4):
saynn("[say=issix]Alrighty, pet in training. It's the first time I do this, but I'm going to give you a bunch of questions and I expect you to answer them truthfully. Don't dwell too long on them, trust your instinct.\nBlah blah blah, there are no wrong answers something something. You get the drill right? You must have filled a similar one in the past. Tablet will only present you with questions, you answer to me.[/say]")
saynn("[say=issix]Alrighty, pet in training. It's the first time I do this, but I'm going to give you a bunch of questions and I expect you to answer them truthfully. Don't dwell on them for too long, trust your instinct.\nBlah blah blah, there are no wrong answers something something. You get the drill right? You must have filled a similar one in the past. Tablet will only present you with questions, you answer to me.[/say]")
saynn("[say=issix]Also, this will take a bit, here, have a seat.[/say]")
saynn("He pulls a folding chair from behind his and unfolds it in front of himself, you sit and he passes a tablet to you. On it a giant button titled ”Start”.")
addButton("Start", "Start the questionnaire", "q1")
@ -102,7 +102,7 @@ func _run():
var body_part = body_parts[bp]
if body_parts[bp] == null or bp in [BodypartSlot.Body, BodypartSlot.Hair]:
continue
addButton(body_part.getName().capitalize(), "Your "+body_part.getName()+" feels like the most appropriate answer here", "q3answer", [body_part.id])
addButton(body_part.getName().capitalize().rstrip("1234567890"), "Your "+body_part.getName().rstrip("1234567890 ")+" feels like the most appropriate answer here", "q3answer", [body_part.id])
if(state == "q3answer"):
processTime(5*60)
@ -292,7 +292,10 @@ func _run():
processTime(3*60)
saynn("[say=issix]What do we have here... Body parts. Ah yes. It bears no any significance, but thought the answer would be fun.[/say]")
answer = getModuleFlag("IssixModule", "QuestionnaireQ3")
saynn("[say=issix]You said that the body part you are most interested in is... "+answer+"[/say]")
var bodypart = GlobalRegistry.getBodypartRef(answer)
if bodypart == null:
bodypart = GM.pc.getBodypart(BodypartSlot.Anus)
saynn("[say=issix]You said that the body part you are most interested in is... "+bodypart.getName().capitalize().rstrip("1234567890 ")+"[/say]")
saynn("[say=issix]If you are wondering what I'm going to do with this information, I will say - time will tell.[/say]") # no, really, I have no fucking idea lol
answer = getModuleFlag("IssixModule", "QuestionnaireQ4")
var wants_to = getModuleFlag("IssixModule", "QuestionnaireQ9")

View file

@ -37,7 +37,7 @@ func _run():
addButton("Leave", "Be on your way", "endthescene")
if(state == "appearance"):
saynn("Before you, on his ”throne” stands an intimidating figure - a demon-dragon hybrid. His piercing black eyes look distinct from any other inmate. His bright red fur uncommon for a dragon or even inmates, though his color pallette does fit a demon - his fur has three main colors, bright red, dark red and black.\n\nHe can certainly be called muscular, his arms and legs are on the beefier side, not extremely so, but one wouldn't want to pick a fight with him.\nEven though intimidating, his face... Shows kindness and calm.\n\nWhat makes him much different from everyone else is the... Harem? He holds a bundle of 3 leashes attached to his wrist, at the end of each is a creature laying or sitting on a blanket.")
saynn("Before you, on his ”throne” sits an intimidating figure - a demon-dragon hybrid. His piercing black eyes look distinct from any other inmate. His bright red fur uncommon for a dragon or even inmates, though his color pallette does fit a demon - his fur has three main colors, bright red, dark red and black.\n\nHe can certainly be called muscular, his arms and legs are on the beefier side, not extremely so, but one wouldn't want to pick a fight with him.\nEven though intimidating, his face... Shows kindness and calm.\n\nWhat makes him much different from everyone else is the... Harem? He holds a bundle of 3 leashes attached to his wrist, at the end of each is a creature laying or sitting on a blanket.")
addButton("Back", "Go back", "")
if(state == "talk"):
@ -169,10 +169,15 @@ func _run():
saynn("[say=issix]Oh? You think I'm a brute taking strays from the corridors of this prison against their will and making them my own?[/say]")
saynn("He sips the drink from his glass. As he tries to read your very soul through your eyes.")
if GM.main.getPCSlaveAmount() > 0: # Judgement wooho
saynn("[say=issix]Perhaps that's something you'd do. Perhaps you think that taking someone as your own is just a matter of violence and power. Perhaps you think that someone's will is yours to take on your command just like that, just because they walk this prison.[/say]")
saynn("[say=issix]Perhaps that's something you'd do. Perhaps you think that taking someone as your own is just a matter of violence and power. Perhaps you think that someone's will is yours to take, on your command, just like that, just because they walk this prison.[/say]")
saynn("He recoils, you see a sliver of regret in his eyes.")
saynn("[say=issix]No, fuck that. That's amateur hour. This is exactly what just another brute in this prison would think.[/say]")
saynn("[say=ussux]There is more to making someone a pet than simple violence. I don't [/say]")
saynn("[say=issix]There is more to making someone a pet than brute force. There are other slavers in here who only care about shiny income and nothing else, they think a life is its worth in credits and that's all they see. They don't see the person behind eyes, they see money.[/say]")
saynn("[say=pc]So what do you see in your pets?[/say]")
saynn("[say=issix]Living, conscious beings, capable of love and hate, students yearning to learn about how life works, to find their destiny.[/say]")
saynn("[say=pc]Sounds like load of bollocks.[/say]")
saynn("[say=issix]To you, sure. Wouldn't expect you to understand anyways.[/say]")
addButton("Back", "He gestures he is done talking on this topic", "talk")
elif getModuleFlag("RahiModule", "rahiMile7Enslaved") == true:
saynn("[say=issix]Perhaps not. Perhaps I misjudged you. Though, it is strange of you to ask me this question this way, considering you yourself look like someone who would enslave someone else with their own permission, giving themselves to you willingly. Am I mistaken?[/say]")
saynn("His grin is very telling, he knows more than you tell him")
@ -282,8 +287,8 @@ func _run():
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="sit"})
saynn("He smiles briefly.")
saynn("[say=issix]Very well.[/say]")
saynn("He puts his paws on sides of your head and starts scratching you behind your ears. Immediately you feel... Comfortable. Loved. Protected. You closed your eyes in bliss. And then he... Stops, the feeling of his paws is filled with void. You feel empty, unfulfilled. You open your eyes and meet his eyes staring at you again from the above. He looks at you expectendly. You aren't sure what to do, you don't want to fail your Master, but... His black eyes speak to you, yes. They want you to open your mouth. You don't even realize when your mouth opens. You didn't do that by yourself, did you?")
saynn("He takes your tongue in between his paw fingers gently, pulls it out a little. He opens his mouth and he spits. Spit lands right on your tongue, with incredible precision right in the middle. He does it again, using the fact your mouth is still open. It lands deeper inside your mount. He pulls his paw fingers from your tongue and uses his two fingers to pressure your chin from below, giving you a signal to close your mouth.")
saynn("He puts his paws on sides of your head and starts scratching you behind your ears. Immediately you feel... Comfortable. Loved. Protected. You closed your eyes in bliss. And then he... Stops, the feeling of his paws is filled with void. You feel empty, unfulfilled. You open your eyes and meet his eyes staring at you again from the above. He looks at you expectantly. You aren't sure what to do, you don't want to fail your Master, but... His black eyes speak to you, yes. They want you to open your mouth. You don't even realize when your mouth opens. You didn't do that by yourself, did you?")
saynn("He takes your tongue in between his paw fingers gently, pulls it out a little. He opens his mouth and he spits. Spit lands right on your tongue, with incredible precision right in the middle. He does it again, using the fact your mouth is still open. It lands deeper inside your mouth. He pulls his paw fingers from your tongue and uses his two fingers to pressure your chin from below, giving you a signal to close your mouth.")
saynn("You comply. There is nothing other than his eyes staring deep at you, his will is your will. His spit doesn't feel particularly different from yours, perhaps you can pick up some flavor or two, but it's more dignified flavor than one of cum that you are so used to. You keep the spit inside your mouth for a bit, tasting it, feeling it, connecting with its owner. And you swallow it, with a visible gulp.")
saynn("Issix smiles. He ruffles your " + ("hair" if GM.pc.hasHair() else "ears") + " with his paws.")
saynn("[say=issix]Good pet.\nNow, to be MY pet you'll have to prove yourself further. Besides the fact I want my pets to be all famous in this little heaven of ours, I want to make sure they follow my orders. For you my dear, I have a few little tasks, nothing you can't do, I'm sure, but it will be the proof I need you can become MY pet.[/say]")

View file

@ -0,0 +1,180 @@
# Originally from https://github.com/Alexofp/BDCC/blob/3c1dc5f933c54971a60687abf539f8e0a3d15f7f/Modules/GymModule/BullyGangScene.gd modified for sake of mod
extends "res://Scenes/SceneBase.gd"
var gotPayed = false
func _init():
sceneID = "BullyGangScene"
func _run():
if(state == ""):
addCharacter("gymbully")
addCharacter("gymbully2")
addCharacter("gymbully3")
playAnimation(StageScene.Duo, "stand", {npc="gymbully"})
if(state == ""):
# (if first time)
if(!getModuleFlag("GymModule", "Gym_BullyGangIntroduced")):
setModuleFlag("GymModule", "Gym_BullyGangIntroduced", true)
saynn("As you look around the gym area and think about what you wanna do, three inmates approach you from behind. Two guys and a girl. The main guy taps on your shoulder. You hear a very raspy male voice.")
saynn("[say=gymbully]Hey, you. Thats right, Im talking to you.[/say]")
saynn("You turn around and see that they are all wearing red inmate uniforms but also red bands on their heads, probably a sign of being in the same gang.")
saynn("[say=gymbully]Havent seen you here before. You aware of how things work here?[/say]")
saynn("They dont seem to be very kind to newcomers. You shake your head slightly.")
saynn("[say=gymbully]We control this area, kiddo. And if you wanna be here you better pay up. Official price is 5 credits a day.[/say]")
saynn("[say=pc]And what if I dont?[/say]")
saynn("[say=gymbully]Then you leave.[/say]")
saynn("The girl barks at you from over the shoulder of the main guy.")
# (if general inmate)
if(GM.pc.getInmateType() == InmateType.General):
saynn("[say=gymbully3]Thats right, general block bitch. Couldnt even pull a trigger to earn yourself red clothes?[/say]")
# (if red inmate)
elif(GM.pc.getInmateType() == InmateType.HighSec):
saynn("[say=gymbully3]Yeah, pay up or fuck off, bitch.[/say]")
# (if lilac)
elif(GM.pc.getInmateType() == InmateType.SexDeviant):
saynn("[say=gymbully3]You better pay before you get shared between all the inmates here, lilac slut.[/say]")
# (if not the first time)
else:
saynn("Three inmates approach you, the same ones that you remember. They make a circle around you.")
saynn("[say=gymbully]You know why were here. Pay up or leave.[/say]")
if(GM.pc.getCredits() >= 5):
addButton("Pay", "Well, what can you do", "pay")
else:
addDisabledButton("Pay", "Not enough credits")
addButton("Intimidate", "Tell them you wont leave or pay", "intimidate")
if getModuleFlag("IssixModule", "PC_Training_Level", 0) > 0 and getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) == 1:
if (GM.pc.getPersonality().getStat(PersonalityStat.Coward) > 0.3):
addDisabledButton("Issix", "You are too cowardly to bring up your Master")
else:
addButton("Issix", "Issix said you can say his name when dealing with bullies, maybe that'll work?", "issixthreat")
if state == "issixthreat":
saynn("[say=pc]I'm under Master Issix's care, please don't hurt me.[/say]")
if GM.pc.getFluids().hasFluidTypeWithCharID("Piss", "issix"):
saynn("[say=gymbully]Are you? That would explain why you are reeking of him. Are you a good little "+IssixModule.getPlayerPetName()+" for your Master Esshiks? Ohhh, how cute. Why aren't you on a leash then huh, fuck pet?[/say]")
else:
saynn("[say=gymbully]Are you? That would explain why you look like a breeding bitch. Are you a good little "+IssixModule.getPlayerPetName()+" for your Master Esshiks? Ohhh, how cute. Why aren't you on a leash then huh, fuck pet?[/say]")
saynn("Sounds of laughter fills the place, all three of inmates having fun at your expense.")
saynn("[say=gymbully]Do you think your Master would mind if we borrowed you for a few minutes and had fun with you?[/say]")
saynn("The main bully looks at the other two for a seond, all of them are rather satisfied with themselves.")
saynn("[say=gymbully]Whatever. You just look like one of his bitches, and I don't plan to mess around with the big man himself again, 5 credits ain't worth it. See ya later, slave.[/say]")
addButton("Continue", "That... Worked better than expected", "endthescene")
if(state == "pay"):
saynn("You hang them a chip with some credits. The main guy quickly checks it and puts it away before offering you a smile.")
saynn("[say=gymbully]Pleasure doing business with you.[/say]")
saynn("The trio steps away from you and goes to bully someone else.")
# (scene ends)
addButton("Continue", "Sigh", "endthescene")
if(state == "intimidate"):
saynn("[say=pc]Im not leaving. And Im not paying. How about you and your sidekicks go bug someone else.[/say]")
saynn("The main guy chuckles, others growl at you.")
saynn("[say=gymbully]Lets see how you will speak after we fuck your pretty face up.[/say]")
addButton("Fight", "Time to fight", "fight")
if(state == "if_won"):
saynn("The gang members quickly scatter away as you beat their leader.")
addButton("Continue", "Nice", "endthescene")
if(state == "if_lost"):
saynn("Defeated, you drop down to your knees. The gang members then shove you onto the ground and pin you while the main guy searches through your pockets.")
saynn("[say=gymbully]Easy there, sweetheart. Im not taking everything.[/say]")
# (if has 5 credits)
if(gotPayed):
saynn("His hand finds a chip with 5 credits on you and takes it.")
saynn("[say=gymbully]See. Enjoy yourself. For now.[/say]")
# (if not enough)
else:
saynn("His hand was unable to find enough credits on you. He sighs.")
saynn("[say=gymbully]I almost feel pitiful for taking your last credits away. But then again, the experience is worth more than money, aint that true.[/say]")
addButton("Continue", "Ow", "endthescene")
# (scene ends)
func _react(_action: String, _args):
if _action == "issixthreat":
setModuleFlag("IssixModule", "Gym_Bullies_Left_Alone", true)
if(_action == "pay"):
processTime(5 * 60)
GM.pc.addCredits(-5)
if(_action == "fight"):
runScene("FightScene", ["gymbully"], "gymbullyfight")
if(_action == "endthescene"):
endScene()
return
setState(_action)
func saveData():
var data = .saveData()
data["gotPayed"] = gotPayed
return data
func loadData(data):
.loadData(data)
gotPayed = SAVE.loadVar(data, "gotPayed", false)
func _react_scene_end(_tag, _result):
if(_tag == "gymbullyfight"):
processTime(20 * 60)
var battlestate = _result[0]
#var wonHow = _result[1]
if(battlestate == "win"):
setState("if_won")
addExperienceToPlayer(30)
else:
setState("if_lost")
if(GM.pc.getCredits() >= 5):
gotPayed = true
GM.pc.addCredits(-5)
else:
gotPayed = false
#addExperienceToPlayer(5)
func getDevCommentary():
return "I was.. pretty out of it while writing this scene. That's why its so short and doesn't have any sex scenes and is kinda bad.\n\nThis scene is why I shouldn't write anything while I'm sad/depressed, heh. Should I remove it/rewrite it? Maybe. But to get rid of these bullies completely I would probably try to make a quest. Something about you and Nova teaming up and trying to destroy their gang.. or getting gangbanged x3 why not both"
func hasDevCommentary():
return true

View file

@ -1,6 +1,7 @@
extends SceneBase
var answer = null
var did_yoga = false
var strapon_selected = null
var rock_paper_scissors = {1: 3, 2: 1, 3: 2}
var rock_paper_scissors_translation = {1: "Rock", 2: "Paper", 3: "Scissors"}
@ -26,13 +27,13 @@ func _run():
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("[say=issix]Wonderful, 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("He pulls out basket muzzle from behind, you allow him to cover your face with it. His paw reaches behind and fastens the basket 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])
@ -60,7 +61,7 @@ func _run():
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.")
saynn("Issix chuckles, clearly happy with 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]")
@ -88,8 +89,8 @@ func _run():
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. \n\nIssix places a large blanket near the lake and invites his pets (including you) on it. Surprisingly to you 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 his 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.")
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. \n\nIssix 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 his 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 keeps practicing drawing.")
addButton("Azazel", "Talk to Azazel", "azazel")
addButton("Hiisi", "Talk to Hiisi", "hiisi")
addButton("Lamia", "Talk to Lamia", "lamia")
@ -98,7 +99,7 @@ func _run():
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.")
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 keeps practicing drawing.")
addButton("Azazel", "Talk to Azazel", "azazel")
addButton("Hiisi", "Talk to Hiisi", "hiisi")
addButton("Lamia", "Talk to Lamia", "lamia")
@ -106,8 +107,11 @@ func _run():
if state == "azazel":
processTime(1*60)
playAnimation(StageScene.Duo, "kneel", {npc="azazel", npcAction="kneel"}) # TODO We need laying down!
playAnimation(StageScene.Duo, "kneel", {npc="azazel", npcAction="kneel", npcBodyState={naked=true, hard=false}}) # TODO We need laying down!
saynn("Azazel looks at the stars, his face content.")
if getModuleFlag("IssixModule", "Saw_Azazel_Naked", false) == false:
saynn("You realize it's the first time you see Azazel naked. Which means that his {azazel.pussyStretch} vagina is now fully visible to you. Above it you can see a womb tattoo seemingly glowing a bit in shade of red as well as multiple of nipples on his chest.")
saynn("On his lower back words ”PROPERTY OF ISSIX” branded onto the skin - a mark of his master.")
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")
@ -121,9 +125,9 @@ func _run():
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 so 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("[say=azazel]We live for a fraction of time in the general timeline, we have so 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 hatred 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("[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 existential 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])
@ -158,11 +162,11 @@ func _run():
addButton("Back", "Your job is done here", "walkies4")
if state == "hiisi":
playAnimation(StageScene.Duo, "kneel", {npc="hiisi", npcAction="kneel"})
playAnimation(StageScene.Duo, "kneel", {npc="hiisi", npcAction="kneel", npcBodyState={naked=true, hard=false}})
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")
if getModuleFlag("IssixModule", "Hissi_RPS_data") == null:
addButton("Distraction", "Hiisi seems nervious, maybe he'd be up for some temporary distraction?", "hiisirpc")
addButton("Distraction", "Hiisi seems nervous, maybe he'd be up for some temporary distraction?", "hiisirpc")
else:
addDisabledButton("Distraction", "You've distracted Hiisi enough already")
addButton("Back", "End the conversation", "walkies4")
@ -170,7 +174,7 @@ func _run():
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("[say=hiisi]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]")
@ -251,7 +255,7 @@ func _run():
addDisabledButton("Sub Hiisi", "Say you'd like Hiisi to take charge") # TODO, "hiisidomsex"
2:
saynn("[say=hiisi]Let's do it![/say]")
saynn("He exlaims, excited")
saynn("He exclaims, excited")
addButton("Hug", "Hug the doggo", "hiisihug")
3:
saynn("[say=hiisi]Please ask me once when we are back in our corner, I should have one energy drink by then[/say]")
@ -311,7 +315,7 @@ func _run():
playAnimation(StageScene.SexAllFours, "sex", {pc="pc", npc="hiisi", bodyState={naked=true, hard=true}, npcBodyState={naked=true, hard=true}})
saynn("[say=pc]Heere we go, ahh.[/say]")
saynn("[say=hiisi]Mmmphhh.[/say]")
saynn("Hiisi lets another yelp as you push your {pc.strapon} into Hiisi's backdoor. "+("Your stapon" if strapon_selected else "Your penis")+" slid with little issues, and the slickness of the hole increased as you continued to ram Hiisi's backside. It was clear that Hiisi didn't want to make too much noise, which has made his pleasure moans even more cute.")
saynn("Hiisi lets another yelp as you push your {pc.strapon} into Hiisi's backdoor. "+("Your strapon" if strapon_selected else "Your penis")+" slid with little issues, and the slickness of the hole increased as you continued to ram Hiisi's backside. It was clear that Hiisi didn't want to make too much noise, which has made his pleasure moans even more cute.")
saynn("[say=pc]How are you doing cutie? Should I go faster? Slower?[/say]")
saynn("[say=hiisi]Mhhhmm. You are fine.[/say]")
saynn("Barely comprehensible speech of canine could be heard coming from his muzzle on the other side, pleasure melting away ability to speak well. You slightly quicken the pace being close to orgasm.")
@ -327,11 +331,11 @@ func _run():
if state == "hiisisubanal4":
playAnimation(StageScene.SexAllFours, "teaseflop", {pc="pc", npc="hiisi", pcCum=true, npcCum=true, bodyState={naked=true, hard=true}, npcBodyState={naked=true, hard=true}}) # TODO
saynn("Eventually you feel like you are really close to orgasm and pull out of Hiisi's hole, painting it white just half a second after your tip leaves. Similarly, Hiisi leaves plenty of his own jizz on the blanket below. You both moan in ecstasy drawing looks from pets around and Master Issix. Those aren't looks of judgement, but rather just curiosity.")
saynn("Eventually you feel like you are really close to orgasm and pull out of Hiisi's hole, painting it white just half a second after your tip leaves. Similarly, Hiisi leaves plenty of his own jizz on the blanket below. You both moan in ecstasy drawing looks from pets around and Master Issix. Those aren't looks of judgment, but rather just curiosity.")
saynn("[say=hiisi]T-thanks. Was okey.[/say]")
saynn("Very restrained words of thanks from Hiisi. But you still take them.")
saynn("[say=pc]Same. Was fun![/say]")
saynn("After a little required cleanup, Hiisi trying to clean up cumstains both from the blanket as well as excessive cum from his ass, you can consider your session truthfully over.")
saynn("After a little required cleanup, Hiisi trying to clean up cum stains both from the blanket as well as excessive cum from his ass, you can consider your session truthfully over.")
addButton("Finish", "Your little session with Hiisi is over now, time to go back to other stuff", "hiisi")
if state == "hiisidomsex":
@ -344,7 +348,7 @@ func _run():
saynn("He seems somewhat relieved he has won. With a smile on his face he says")
saynn("[say=hiisi]So, regarding my reward. Could you perhaps get one of the Hypnovisors and come to the corner tomorrow? I'd like to test something.[/say]")
saynn("[say=pc]Uhhh, hypnovisors?[/say]")
saynn("[say=hiisi]Yeah, I've seen them around. They seem to be extremaly rare in here, but at least one inmate I saw had one. I'm just curious...[/say]")
saynn("[say=hiisi]Yeah, I've seen them around. They seem to be extremely rare in here, but at least one inmate I saw had one. I'm just curious...[/say]")
saynn("[say=pc]I mean, sure, but are you sure about it? They can make you very vulnerable for a few hours.[/say]")
saynn("[say=hiisi]Well.. I was hoping to mess around with them for a second and use them on you actually...[/say]")
saynn("[say=pc]On me? I'm really not sure about that.[/say]")
@ -355,17 +359,20 @@ func _run():
addButton("Back", "You agreed to Hiisi's Hypnovisor session, the conversation ended here", "hiisi")
if state == "lamia":
playAnimation(StageScene.Duo, "kneel", {npc="lamia", npcAction="kneel"}) # TODO We need laying down!
playAnimation(StageScene.Duo, "kneel", {npc="lamia", npcAction="kneel", npcBodyState={naked=true, hard=false}}) # 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")
if did_yoga == false:
addButton("Do something", "Perhaps you two could do something else?", "lamiaexercise")
else:
addDisabledButton("Do something", "You've done some exercises with Lamia already")
addButton("Back", "End the conversation", "walkies4")
if state == "lamiaexercise":
playAnimation(StageScene.Yoga, "warrior", {pc="lamia", bodyState={naked=true, hard=false}})
playAnimation(StageScene.Yoga, "warrior", {pc="lamia", bodyState={naked=true, hard=false}, npcBodyState={naked=true, hard=false}})
saynn("[say=pc]Would you like to do something? Just to pass the time.[/say]")
saynn("Lamia thinks for a second, he comes to some kind of conclusion, judging from the way they've stood up and invited you with their paw to do the same, which you promptly do.")
@ -381,7 +388,7 @@ func _run():
addButton("Continue", "Continue exercising with Lamia", "lamiaexercise2")
if state == "lamiaexercise2":
playAnimation(StageScene.Yoga, "bridge", {pc="lamia", bodyState={naked=true, hard=false}})
playAnimation(StageScene.Yoga, "bridge", {pc="lamia", bodyState={naked=true, hard=false}, npcBodyState={naked=true, hard=false}})
saynn("[say=pc]Okey, what's next?[/say]")
saynn("Lamia flops on the blanket, and by flops it means they just freefalled that one as if it was nothing, they protected their head, though it still looked painful. Next they raised their torso along with their butt supported by their legs pushing the butt up and down, up and down. Hard not to stare at Lamia's very own... Equipment. But with the exercise shown, you quickly follow not to look like a pervert.")
@ -528,7 +535,7 @@ func _run():
saynn("[say=issix]A bag of „marshmallows” huh? Where did you get it from? Give it to me.[/say]")
saynn("You explain it fell of the pocket of one of the jogging inmates. He opens the bag and takes a sniff.")
saynn("[say=issix]Hmm. That's not an ordinary bag of marshmallows, I've seen things such as those before in this prison. They are a little „extra” you'd say. Pretty sure I know who your jogging inmate was.[/say]")
saynn("He laugs, taking one of the „marshmallows” out of the bag before putting it into his mouth.")
saynn("He laughs, taking one of the „marshmallows” out of the bag before putting it into his mouth.")
saynn("[say=issix]Yeah, it's a fun one. Feel free to share them with other pets, they aren't bad, just a little packed, who knows, maybe it will brighten the mood.[/say]")
saynn("He gives you back the opened bag, before turning around and continuing his feet wetting activity. You come back to the blanket.")
saynn("[say=pc]Master Issix said those are fine, they aren't regular marshmallows as they seem to be with something in them, but they are fine. Who wants one?[/say]")
@ -635,7 +642,17 @@ func _run():
saynn("[say=issix]It's a lesson for the future. I'm glad you took my rejection just fine. Try to focus on needs of others, even in such grim place as this one there are creatures hurting, you always have the power to help them in your own way, don't waste it.[/say]")
addButton("Leave", "You've been rejected, nothing more to do here", "endthescene")
func saveData():
var data = .saveData()
data["did_yoga"] = did_yoga
return data
func loadData(data):
.loadData(data)
did_yoga = SAVE.loadVar(data, "did_yoga", null)
func pet_handle_flag_response(response): # true + true doesn't exist in GDScript :(
if response == null or response == false:
@ -732,6 +749,7 @@ func _react(_action: String, _args):
if _action == "lamiaexercise":
GM.pc.addStamina(-40)
processTime(10*60)
did_yoga = true
if _action == "lamiaexercise2":
processTime(10*60)
@ -771,6 +789,7 @@ func _react(_action: String, _args):
GM.pc.getInventory().removeXOfOrDestroy("Cookie", 1)
if(_action == "endthescene"):
setModuleFlag("IssixModule", "Saw_Azazel_Naked", true)
endScene()
return

View file

@ -100,9 +100,14 @@ func _run():
addButton("Talk", "Talk to Azazel", "azazeltalk")
addButton("Appearance", "Look at Azazel", "azazelappearance")
if(GM.pc.getInventory().hasItemID("CatnipPlant")):
var catnip = GM.main.getModuleFlag("IssixModule", "Azazel_Catnip_given_today", 0)
if catnip > 5:
saynn("{azazel.Name}'s tail swishes left and right, his head tracks you like a predator its pray, with his giant black pupils staring you down. His ass is unable to be steady, as he constantly moves from one position to another, his paws almost dancing on the blanket.")
saynn("[say=azazel]Catnip? Catnip! CAAAATNIP CATNIP CATNIP CATNIP CATNIP CATNIP CATNIP!!! Gib, catnip! Caaaaatnip! GIB![/say]")
else:
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 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")
else:
if getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) == 0:
@ -291,12 +296,23 @@ func _run():
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]")
processTime(1 * 60)
addMessage("You have given away one of the catnip plants you were holding.")
addButton("Back", "End catnip therapy session", "azazelmain")
#setState("azazelmain")
if(state == "azazeltalk"):
var catnip = GM.main.getModuleFlag("IssixModule", "Azazel_Catnip_given_today", 0)
if catnip > 2:
saynn("You notice that Azazel's pupils are abnormally large and his body movement erratic. You start to wonder if the catnip you have given to the cat had any effect?")
elif catnip > 5:
saynn("Azazel is squirming as if his bladder was full and he needed to pee. His pupils are black, giant circles. His face expression ecstatic, too ecstatic, maniac even. That catnip must have done much more than you anticipated...")
if(GM.pc.getInventory().hasItemID("CatnipPlant")):
saynn("You try to talk to Azazel, however he cannot focus with the smell around, if you want to talk with Azazel it's likely wise to do something with the catnip you have on you.")
addButton("Back", "Cat is not focused on talking with catnip in proximity", "azazelmain")
return
var affection = getModuleFlag("IssixModule", "Azazel_Affection_given", 0)
addButton("Prison", "Ask how did he end up in prison?", "azazelprison")
addButton("Life", "Ask Azazel what his day-to-day life looks like nowadays", "azazellife")
addButton("Hobby", "Ask what hobbies does he have", "azazelhobby")
if affection > 2:
addButton("Issix", "Ask what he thinks of his master?", "azazelmaster")
@ -307,26 +323,43 @@ func _run():
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")
addDisabledButton("Fetishes", "He mentioned his fetishes, perhaps he could elaborate? (WIP)")
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")
addDisabledButton("Pussy", "Azazel has a pussy and yet he is rather masculine (WIP)")
else:
addDisabledButton("Pussy", "You don't have good enough relationship with Azazel to ask about his genitalia")
if affection > 22:
addButton("Prison", "Ask how did he end up in prison?", "azazelprison")
else:
addDisabledButton("Prison", "You don't have good enough relationship with Azazel to ask about his past")
if(GM.pc.getInventory().hasItemID("CatnipPlant")):
pass
else:
pass
addButton("Back", "Do something else", "azazelmain")
if state == "azazellife":
saynn("[say=pc]I were wondering, how your life looks like day-to-day? I see you here all the time, don't you work for credits somewhere?[/say]")
saynn("[say=azazel]We don't really work for credits. Master takes care of everything for us. Of course, we still have our needs so we go to toilet whenever we need to, however the three of us prefer to stay at Master's side. It's not a hard requirement though.[/say]")
saynn("[say=pc]Don't you get bored?[/say]")
saynn("[say=azazel]Sometimes? I mean, Master does his best to keep us occupied, but obviously sitting in here all day can get boring, every pet deals it in their own way. Personally I like finding little ways to pull pranks on inmates, they all unaware going through the halls while I'm trickling some water onto them from above, the look on their face is always funny to see, they have no idea![/say]")
saynn("[say=pc]How do you even do that from above?[/say]")
saynn("[say=azazel]I have my own ways.[/say]")
saynn("He strikes a very proud and impish pose.")
saynn("[say=azazel]Lamia somehow can be occupied by drawing at all time, I don't know how he does it. Okey, maybe that's not ALL times, but they are pretty dedicated. As to Hiisi, he watches. He loves observing, others, us, Master, things. He may be pretty silent type but deep down he cares about us all, I think that's why he watches.[/say]")
saynn("[say=pc]What do you mean by that?[/say]")
saynn("[say=azazel]Oh, nothing in particular. He just is pretty observant.[/say]")
addButton("Back", "Ask something else", "azazeltalk")
if(state == "azazelappearance"):
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.") # TODO Makes no sense player can see that at this point, Azazel is clothed
saynn("On his lower back words ”PROPERTY OF ISSIX” branded onto the skin - a mark of his master.")
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 face is of ligher shade of gray. A small set of horns protrudes from his head. On his backside there is a medium sized feline tail.") # TODO Makes no sense player can see that at this point, Azazel is clothed
addButton("Back", "Do something else", "azazelmain")
if state == "azazelprison":
@ -342,7 +375,7 @@ func _run():
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 they guided me through my trauma. I were really happy to become his pet. 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", "azazeltalk")
if state == "azazelhobby":
saynn("[say=pc]What hobbies do you have Azazel?[/say]")
@ -359,7 +392,7 @@ func _run():
saynn("[say=azazel]Maybe... I need to sleep on it. I think. Thanks.[/say]")
saynn("[say=pc]Of course, kitty.[/say]")
saynn("He smiles at you, the conversation has ended.")
addButton("Back", "End this conversation", "azazelmain")
addButton("Back", "End this conversation", "azazeltalk")
if state == "azazelmaster":
saynn("[say=pc]So what do you think of your Master?[/say]")
@ -368,17 +401,17 @@ func _run():
saynn("[say=azazel]Not at all! He is a very understanding Master. He cares about us and does his best to keep us happy. What he asks of us is very little, I know how it sounds... But I speak from the bottom of my heart when I say it! He is a good Master.[/say]")
saynn("[say=pc]Is that so? Hmm. How did you meet him?[/say]")
saynn("He thinks for a second")
saynn("[say=azazel]Well, I remember getting in here, being „processed” with the collar and all and basically pushed into new life. My first few days were spent trying to be quiet as a mouse *laughs*, everyone felt intimidating, and I've seen inmates getting harassed and used against their will. This seems to be the culture of this place, restraints are like free candy. There were one or two incidents I had with some bullies, I were assulted and used. One day Master Issix saw me hiding, he approached me and talked to me a bit, about why am I hiding, what am I doing in here and if someone is after me. From then I visited him daily, he... Grew on me. And one day he gave me a proposition to become his pet. At first I were hesitant, as anyone would be, but at the same time, he let himself be a very sweet person to me, and he never assulted me. So I accepted, and became his first sl- *he coughts* pet.[/say]")
saynn("[say=azazel]Well, I remember getting in here, being „processed” with the collar and all and basically pushed into new life. My first few days were spent trying to be quiet as a mouse *laughs*, everyone felt intimidating, and I've seen inmates getting harassed and used against their will. This seems to be the culture of this place, restraints are like free candy. There were one or two incidents I had with some bullies, I were assaulted and used. One day Master Issix saw me hiding, he approached me and talked to me a bit, about why am I hiding, what am I doing in here and if someone is after me. From then I visited him daily, he... Grew on me. And one day he gave me a proposition to become his pet. At first I were hesitant, as anyone would be, but at the same time, he let himself be a very sweet person to me, and he never assaulted me. So I accepted, and became his first sl- *he coughs* pet.[/say]")
saynn("He smiles at you.")
saynn("[say=azazel]I think he needed me as much as I needed him. So... Yeah. That's about it.[/say]")
addButton("Back", "End this conversation", "azazelmain")
addButton("Back", "End this conversation", "azazeltalk")
if state == "azazelbreeding":
saynn("[say=pc]Are you okey with your position as a breeder... Breeding bitch in the harem?[/say]")
saynn("[say=azazel]Of course! Truth is, I'm the only one who can bear children out of us three... So of course I have huge responsibility. Master says that I'd be a good mother, haha. Can't test that theory in here, but oh well, I don't know. I don't really know why does Master want us to keep breeding, maybe he has something from it? He can't keep them either. Maybe that's just what he likes. Anyways, I don't mind. At this point I'm pretty good at making him litter, and I think he is proud of me too.[/say]")
saynn("[say=oc]Doesn't it get tiring?[/say]")
saynn("[say=pc]Doesn't it get tiring?[/say]")
saynn("[say=azazel]Sometimes? I guess. I have those wants and needs when I'm pregnant, but Master always tries his best to keep me happy either way. And besides, if I'm not bred I tend to get really annoying, haha. Yeah...[/say]")
addButton("Back", "End this conversation", "azazelmain")
addButton("Back", "End this conversation", "azazeltalk")
if state == "lamiahelp":
playAnimation(StageScene.Duo, "kneel", {pc="lamia", npc="pc", npcAction="kneel", bodyState={naked=false, hard=false}})
@ -470,20 +503,20 @@ func _run():
if state == "lamiatalk":
var lamia_affection = getModuleFlag("IssixModule", "Lamia_Times_Helped", 0)
addButton("Try drawing", "You can try and draw something with lamia", "lamiadraw") # TODO
addDisabledButton("Try drawing", "You can try and draw something with Lamia (WIP)") # TODO
addButton("Mute", "Ask if he's been mute since they were born")
if lamia_affection > 2:
addButton("Explicit", "You've noticed Lamia doesn't draw any explicit things, perhaps worth asking about it?", "lamiaexplicit")
addDisabledButton("Explicit", "You've noticed Lamia doesn't draw any explicit things, perhaps worth asking about it?")
if lamia_affection > 6:
addButton("Prison", "Ask Lamia how they ended up in the prison", "lamiaprison")
addDisabledButton("Prison", "Ask Lamia how they ended up in the prison")
else:
addDisabledButton("Prison", "You don't feel like there is enough connection between you two to ask him that")
if lamia_affection > 11:
addButton("Favorite", "Ask Lamia what is their favorite thing to draw", "lamiafavorite")
addDisabledButton("Favorite", "Ask Lamia what is their favorite thing to draw")
else:
addDisabledButton("Favorite", "You don't feel like there is enough connection between you two to ask him that")
if lamia_affection > 17:
addButton("Draw", "Ask Lamia to draw something for you", "lamiadrawforme")
addDisabledButton("Draw", "Ask Lamia to draw something for you")
else:
addDisabledButton("Draw", "You don't feel like there is enough connection between you two to ask him to draw for you something")
addButton("Back", "Do something else", "lamiamain")
@ -614,6 +647,9 @@ func _react(_action: String, _args):
GM.pc.getInventory().removeXOfOrDestroy("CatnipPlant", 1)
GM.main.getCharacter("azazel").addLust(10)
GM.main.increaseModuleFlag("IssixModule", "Azazel_Affection_given")
GM.main.increaseModuleFlag("IssixModule", "Azazel_Catnip_given_today")
if GM.main.getModuleFlag("IssixModule", "Azazel_Catnip_given_today", 0) > 5:
GlobalRegistry.getCharacter("azazel").addEffect("CatnipOverdose")
if _action == "hiisienergy":
markHiisiRewardAsAquired()

View file

@ -7,6 +7,7 @@ func _init():
func _run():
if(state == ""): # TODO Involve Lamia, Azazel and Hiisi
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand"})
addCharacter("issix")
saynn("[say=pc]Master Issix, can we talk about me becoming your pet?[/say]")
saynn("He grins as you say that. His black void eyes once again stare deep down into you, they drill you to the very core. You kneel before your new Master, knowing that mere minutes separate you from losing whatever freedom you have left in this place.")
saynn("Issix stands, walks around you, his eyes studying again every part of your body. He salivates, you can feel it. You are his morsel, pet to be.")
@ -121,7 +122,9 @@ func _run():
if state == "normalroute2":
playAnimation(StageScene.SexMissionary, "sex", {pc="issix", npc="pc", bodyState={naked=true, hard=true}, npcBodyState={naked=true, hard=true}})
saynn("His paw gently ruffles the fur on your chest. All of this beautiful body, mine now. He is delighted by your body. His paws going on the sides of your {pc.thick} body. After he is content, he lays on you, pinning you to the blanket below. His warm reeking with manly musk - alpha musk grinding into your belly. His face so close to yours.") # TODO Fur?
saynn("His paw gently ruffles the fur on your chest.")
saynn("[say=issix]All of this beautiful body, mine now.[/say]")
saynn("He is delighted by your body. His paws going on the sides of your {pc.thick} body. After he is content, he lays on you, pinning you to the blanket below. His warm reeking with manly musk - alpha musk grinding into your belly. His face so close to yours.") # TODO Fur?
if GM.pc.isInHeat():
saynn("[say=issix]I feel your body yearns for me. You're a bitch in heat. You want me to take care of that little problem, do you? You want me to breed you. Is this why you came to me today? Do you need to be bred so much that you are willing to become my pet? No matter. What done is done. You'll be crying for my children in no time.[/say]")
else:
@ -136,7 +139,7 @@ func _run():
saynn("Issix raises one of his paws with a leash in the air, pulling your head higher while he gives you another deep kiss. At the same time, his second paw explores your backdoor. He puts one finger in, using your anal juices, stretching it for his grand entrance, spiraling you further into orgasmic joy.")
saynn("[say=issix]Mmm. A new pet to break in for the first time.[/say]")
saynn("He teases your hole with his relatively large penis, rubbing it. His bod making contact with your fur in every place, your mind losing itself in orgasmic bliss. He whispers sweet promises of what he will do to you in your ear.")
saynn("He teases your hole with his relatively large penis, rubbing it. His body making contact with your fur in every place, your mind losing itself in orgasmic bliss. He whispers sweet promises of what he will do to you in your ear.")
saynn("[say=issix]I hope you are ready, I'm not waiting for you.[/say]")
saynn("Deep inside you already want him to claim you, his prolonged teasing and preparations, while giving you immense amount of pleasure, deny you the grand finale, the climax of it all. You beg for him to enter you.")
saynn("[say=issix]Good pet, you learned how to beg so quickly. This deserves a little reward.[/say]")
@ -174,7 +177,7 @@ func _run():
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand", bodyState={leashedBy="issix"}})
saynn("He stands up, still holding his end of leash connected to a collar on your neck. He puts his foot on your belly to further ingrain in your mind that he has control over you now.")
saynn("[say=issix]That was good. I expect of you to allow me to breed you just like this when I feel like it. Understood?[/say]")
saynn("[say=pc]Yes..,[/say]")
saynn("[say=pc]Yes...[/say]")
saynn("[say=issix]Yes?[/say]")
saynn("[say=pc]Yes Master Issix.[/say]")
saynn("[say=issix]Good "+getPlayerPetName()+".[/say]")
@ -183,7 +186,7 @@ func _run():
saynn("[say=issix]For today there is one more thing for me to do. Azazel, can you tell my new pet what it is?[/say]")
saynn("[say=azazel]Master wants... To leave his mark on you, the other kind of mark.[/say]")
saynn("Issix grins as he slightly tugs on your leash.")
saynn("[say=issix]Very convenient timing, because I were just about to go to toilet before you showed up. Let me just...[/say]")
saynn("[say=issix]Very convenient timing, because I were just about to go to the toilet before you showed up. Let me just...[/say]")
saynn("He takes out the blanket from under your back in a swift manner. A cold, hard floor makes contact with your floor. Those blankets have a very important function after all. Your Master stands above you, his feet on both sides of your body, his penis directed at your head, he is about to pee.")
addButton("Open mouth", "Open your mouth and close your eyes in anticipation of the golden shower", "pissnormalmouth")
addButton("Stay closed", "Don't open your mouth in anticipation of the golden shower", "pissnormal")
@ -193,6 +196,9 @@ func _run():
if state == "pissnormalmouth":
saynn("You open your mouth, close your eyes, showing you don't mind your Master's nectar in your mouth. You want to taste it, to feel it at deeper level. To be marked in as many ways as you can. Seeing this Issix chuckles and you feel impact of his fluid assulting your face. It falls on various parts of your face, sometimes inside, mostly around. The sweet and bitter taste hits you like a train, the aroma of your master in your nose becomes truthfully pungent. You gulp down his piss.")
if getModuleFlag("IssixModule", "QuestionnaireQ5", null) == "watersports":
saynn("[say=issix]I can see you weren't lying and you have some experience in your „favorite” activity. Wonder how many liters of piss have you consumed so far.[/say]")
else:
saynn("[say=issix]Didn't think you have that in you, a natural piss slut. What a treat.[/say]")
saynn("His stream moves towards your lower part of the body, for a brief moment hitting your neck but then staying on chest, arms, your not so private anymore parts as well as your legs. His objective very clear - to cover as much of your body as possible, to mark you - no, to drench you in his smell. As his stream from his hose drains and he stops pissing, while you feel there are still one or two dry spots on your body, the rest is wet with your Master's piss. You reek of your Master stronger than any other of his pets. Is that introductory treatment? Why are you so special? You ask yourself, your questions answered shortly after.")
saynn("[say=issix]Don't be surprised. I like to mark my new pets GOOD, I want you to get used to my smell. And this is the best way I can think of. I expect you to come back tomorrow reeking of day old piss, my piss, do you understand? I don't want you to shower until we meet again.[/say]")
@ -266,9 +272,11 @@ func _react(_action: String, _args):
if(itemRef == null):
return
itemRef.useInSex(GM.pc)
GM.pc.addLust(40)
if _action == "normalroute3":
GM.pc.addStamina(-40)
GM.pc.addLust(40)
if _action == "normalroute4":
GM.pc.addStamina(-40) # A little bit of difference in how it usually works in BDCC, Issix is a demon, he will get his fill in many ways, including life force vampirism during sex (kinda like incubus though he isn't one)
@ -283,11 +291,11 @@ func _react(_action: String, _args):
if _action == "pissnormalmouth":
GM.pc.cummedInMouthBy("issix", FluidSource.Pissing, 0.7)
GM.pc.cummedOnBy("issix", FluidSource.Pissing, 1.5)
GM.pc.cummedOnBy("issix", FluidSource.Pissing, 2.5)
#GM.pc.coverBodyWithFluid()
if _action == "pissnormal":
GM.pc.cummedOnBy("issix", FluidSource.Pissing, 1.5)
GM.pc.cummedOnBy("issix", FluidSource.Pissing, 2.5)
if(_action == "endthescene"):
endScene()

View file

@ -0,0 +1,46 @@
extends SpeechModifierBase
var interruptors = ["hihihi", "*purrrrrrrrr*", "meow", "hiiyyaaa"]
var starters = ["Mrrrowwww!", "Mraahhh!", "Mrrrrrrr.", "Mrrow!"]
func _init():
id = "CatnipSpeech"
priority = 3
func appliesTo(_speaker: BaseCharacter) -> bool:
return _speaker.hasEffect("CatnipOverdose")
func modify(_text: String, _speaker: BaseCharacter) -> String:
var modified_text = _text.split(" ")
var is_caps_mode = false
for index in range(modified_text.size()):
var word = modified_text[index]
# Repeat
if RNG.chance(30):
var word_index = RNG.randi_range(0, word.length()-1)
if word[word_index] != "'":
modified_text[index] = word.substr(0, word_index) + word[word_index].repeat(RNG.randi_range(1, 4)) + word.substr(word_index)
# Interjection
if RNG.chance(2):
modified_text[index] = modified_text[index] + " " + RNG.pick(interruptors)
word = modified_text[index]
if is_caps_mode:
modified_text[index] = word.to_upper()
# CAPS
if RNG.chance(7) and not is_caps_mode:
is_caps_mode = true
if RNG.chance(50):
var word_index = RNG.randi_range(0, word.length()-1)
modified_text[index] = word.substr(0, word_index) + word.substr(word_index).to_upper()
if is_caps_mode and RNG.chance(25):
is_caps_mode = false
if RNG.chance(50):
var word_index = RNG.randi_range(0, word.length()-1)
modified_text[index] = word.substr(0, word_index).to_upper() + word.substr(word_index)
word = modified_text[index]
# Misplaced letter
if RNG.chance(10) and word.length() > 2:
var word_index = RNG.randi_range(1, word.length()-1)
modified_text[index] = word.substr(0, word_index-1) + word[word_index] + word[word_index-1] + word.substr(word_index+1)
return RNG.pick(starters) + " " + " ".join(modified_text).replace(".", "!")

View file

@ -0,0 +1,47 @@
extends StatusEffectBase
func _init():
id = "CatnipOverdose"
isBattleOnly = false
func initArgs(_args = []):
if(_args.size() > 0):
turns = _args[0]
else:
turns = 30*60
func processBattleTurn():
pass
func processTime(_secondsPassed: int):
turns -= _secondsPassed
if(turns <= 0):
stop()
func getEffectName():
return "Catnip overdose"
func getEffectDesc():
return "You feel like you can lift a moon"
func getEffectImage():
return "res://Modules/IssixModule/StatusEffects/catnipoverdose.png"
func getIconColor():
return IconColorGray
func combine(_args = []):
if(_args.size() > 0):
turns = max(_args[0], turns)
func getBuffs():
return [
]
func saveData():
return {
"turns": turns,
}
func loadData(_data):
turns = SAVE.loadVar(_data, "turns", 30*60)

Binary file not shown.

After

Width:  |  Height:  |  Size: 2 KiB

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/brandpain.png-3dc9d540e575255480cf80abdcee852d.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Modules/IssixModule/StatusEffects/brandpain.png"
dest_files=[ "res://.import/brandpain.png-3dc9d540e575255480cf80abdcee852d.stex" ]
[params]
compress/mode=0
compress/lossy_quality=0.7
compress/hdr_mode=0
compress/bptc_ldr=0
compress/normal_map=0
flags/repeat=0
flags/filter=true
flags/mipmaps=false
flags/anisotropic=false
flags/srgb=0
process/fix_alpha_border=true
process/premult_alpha=false
process/HDR_as_SRGB=false
process/invert_color=false
process/normal_map_invert_y=false
stream=false
size_limit=0
detect_3d=false
svg/scale=1.0