Fixes and changes to Azazel's corruption route, added PC fight interruption when enslaved
This commit is contained in:
parent
91be974366
commit
fd9420cd3b
|
@ -103,6 +103,16 @@ func interestVerbalReaction(interest):
|
|||
return "You are so slim! Just like myself! That's super cool!"
|
||||
if(interest == InterestTopic.AverageMassBody):
|
||||
return "Haha, you've got a bit more meat there than I do, it's more fun to fuck you this way!"
|
||||
if(interest == InterestTopic.Bodywritings):
|
||||
return "You have entire story written on your body! Though I guess it only calls you what you are."
|
||||
if(interest == InterestTopic.LactatingBreasts):
|
||||
return "Milky, aren't you? Master could use some..."
|
||||
if(interest == InterestTopic.BDSMRestraints):
|
||||
return "You look pretty in those, I have a nice pile of restraints in my room, super fun to play around with them, especially when you have a partner."
|
||||
if(interest == InterestTopic.NoCock):
|
||||
return "No cock? Awww, I really like getting rammed in my {pussy} with a real meat, but no matter, there are more ways to have fun than just with a {penis}"
|
||||
if(interest == InterestTopic.StuffedPussy):
|
||||
return "Purrr. You must love having your {pussy} stuffed, I know I do."
|
||||
|
||||
func _getName():
|
||||
return "Azazel"
|
||||
|
@ -113,6 +123,9 @@ func getGender():
|
|||
func getSmallDescription() -> String:
|
||||
return "Wears an lilac uniform with number P-655. He is the embodiment of ”meek”."
|
||||
|
||||
func getInmateNumber() -> String:
|
||||
return "655"
|
||||
|
||||
func getSpecies():
|
||||
return [Species.Feline]
|
||||
|
||||
|
|
|
@ -77,10 +77,19 @@ func _init():
|
|||
}
|
||||
|
||||
func interestVerbalReaction(interest):
|
||||
if(interest == InterestTopic.Pregnant):
|
||||
return "Oh, do you have litter in there? Cuuute, meoowwww!"
|
||||
if(interest == InterestTopic.BigCock):
|
||||
return "Fuck, I hate monsters like that."
|
||||
if(interest == InterestTopic.Blindfolds):
|
||||
return "Purrr. How is your hearing? Can you hear me purring from over there?"
|
||||
return "Really like it when you don't see what I do."
|
||||
if(interest == InterestTopic.BDSMRestraints):
|
||||
return "The less you can do the better, squirm all you want."
|
||||
if(interest == InterestTopic.CoveredInCum):
|
||||
return "Should really have cleaned yourself beforehand, you look disgusting."
|
||||
if(interest == InterestTopic.ExposedPussy):
|
||||
return "I like what I see."
|
||||
if(interest == InterestTopic.Gags):
|
||||
return "If we have to do that, better to do that without you complaining."
|
||||
|
||||
|
||||
func _getName():
|
||||
return "Hiisi"
|
||||
|
@ -100,6 +109,9 @@ func getThickness() -> int:
|
|||
func getFemininity() -> int:
|
||||
return 0
|
||||
|
||||
func getInmateNumber() -> String:
|
||||
return "964"
|
||||
|
||||
func createBodyparts():
|
||||
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthrobody"))
|
||||
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthroarms"))
|
||||
|
|
|
@ -122,6 +122,9 @@ func _getAttacks():
|
|||
func getSmallDescription() -> String:
|
||||
return "Wears a red block uniform with number P-533. He is an intimidating tall demon-dragon, has red fur."
|
||||
|
||||
func getInmateNumber() -> String:
|
||||
return "533"
|
||||
|
||||
func getSpecies():
|
||||
return [Species.Dragon, Species.Demon]
|
||||
|
||||
|
|
|
@ -103,6 +103,9 @@ func getGender():
|
|||
func getSmallDescription() -> String:
|
||||
return "Wears an orange uniform with number P-790."
|
||||
|
||||
func getInmateNumber() -> String:
|
||||
return "790"
|
||||
|
||||
func getSpecies():
|
||||
return [Species.Canine] # if in the future foxes are introduced, the character is canonically a fox
|
||||
|
||||
|
|
|
@ -1,10 +1,13 @@
|
|||
extends GameExtender
|
||||
|
||||
const Globals = preload("res://Modules/IssixModule/Globals.gd")
|
||||
|
||||
func _init():
|
||||
id = "IssixModGE"
|
||||
|
||||
func register(_GES:GameExtenderSystem):
|
||||
_GES.register(self, ExtendGame.pcProcessTime)
|
||||
_GES.register(self, ExtendGame.pcProcessBattleTurn)
|
||||
|
||||
func pcProcessTime(_pc:Player, _seconds):
|
||||
# Don't progress time while in a dream
|
||||
|
@ -12,3 +15,19 @@ func pcProcessTime(_pc:Player, _seconds):
|
|||
GM.main.timeOfDay -= _seconds
|
||||
|
||||
|
||||
func pcProcessBattleTurn(_pc: Player):
|
||||
if GM.main.getModuleFlag("IssixModule", "Hiisi_Protects_PC") == true:
|
||||
if RNG.chance(100):
|
||||
var scene = GM.main.getCurrentScene()
|
||||
# Make sure we are in generic FightScene and it's the player defending themselves not starting a fight'
|
||||
if scene.sceneID != "FightScene" or scene.sceneTag != "interaction_fight_pcdef":
|
||||
return
|
||||
# Make sure that enemy is not a guard
|
||||
var pawn = GM.main.IS.getPawn(scene.enemyID)
|
||||
if pawn == null:
|
||||
return
|
||||
if !pawn.isInmate():
|
||||
return
|
||||
#scene.endScene(["win", "pain"]) # TODO We may want to change the sceneTag and handle the pawn interactions by ourselves so the player doesn't get XP & rep change'
|
||||
GM.main.runScene("RescueFromFight", [scene.enemyID, scene])
|
||||
|
||||
|
|
|
@ -69,6 +69,10 @@ static func getPlayerPetName():
|
|||
else:
|
||||
return "pet"
|
||||
|
||||
# If player is enslaved
|
||||
static func checkIfPCEnslaved() -> bool:
|
||||
return GM.main.getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) >= 1
|
||||
|
||||
# Check if a state exists inside stateKey dict flag storage
|
||||
static func checkIfAchieved(flagName: String, stateKey: String) -> bool:
|
||||
return GM.main.getModuleFlag("IssixModule", flagName, {}).has(stateKey)
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
██????██
|
||||
██????██
|
||||
██████████████████^^^^██████████████████████████████
|
||||
██████ ████████ ████████████████████MMMM██████
|
||||
██████ ████████ ████████████████████MMMM██████
|
||||
██████ ████████ ████████████████████MINE██████
|
||||
██████ ████████ ████████████████████MINE██████
|
||||
██ | ██
|
||||
██ | ██
|
||||
██████████ ████████████ | ████████EEEE██████
|
||||
|
|
|
@ -58,6 +58,7 @@ func getFlags():
|
|||
"Azazel_Player_Donated_Gasmask": flag(FlagType.Bool),
|
||||
"Azazel_In_Dream": flag(FlagType.Bool),
|
||||
"Azazel_Corr_Dream_State": flag(FlagType.Dict),
|
||||
"Azazel_Corr_BDSM_Gear": flag(FlagType.Bool),
|
||||
"Hiisi_Encounter_scene": flag(FlagType.Number),
|
||||
"Hiisi_Had_Encounter_Scene_Today": flag(FlagType.Bool),
|
||||
"Issix_Donation_Meter": flag(FlagType.Number),
|
||||
|
@ -95,6 +96,8 @@ func getFlags():
|
|||
"Trained_With_Hiisi_Combat": flag(FlagType.Bool),
|
||||
"PC_Pet_Didnt_Fullfill_Daily": flag(FlagType.Bool),
|
||||
"PC_Pet_Didnt_Mate": flag(FlagType.Bool),
|
||||
"PC_Bad_Sex": flag(FlagType.Number),
|
||||
"Hiisi_Protects_PC": flag(FlagType.Bool)
|
||||
#"Gym_Bullies_Left_Alone": flag(FlagType.Bool) Currently cannot change the behavior of this :(
|
||||
}
|
||||
|
||||
|
@ -155,7 +158,9 @@ func _init():
|
|||
"res://Modules/IssixModule/Scenes/AzazelCorruption/DemonAzazelTalkScene.gd",
|
||||
"res://Modules/IssixModule/Scenes/AzazelCorruption/DemonHiisiTalkScene.gd",
|
||||
"res://Modules/IssixModule/Scenes/AzazelCorruption/DemonLamiaTalkScene.gd",
|
||||
"res://Modules/IssixModule/Scenes/AzazelCorruption/FountainScene.gd"
|
||||
"res://Modules/IssixModule/Scenes/AzazelCorruption/FountainScene.gd",
|
||||
"res://Modules/IssixModule/Scenes/AzazelCorruption/FinalIssixDrugScene.gd",
|
||||
"res://Modules/IssixModule/Scenes/SlaveryFirst/RescueFromFightScene.gd"
|
||||
]
|
||||
|
||||
characters = [
|
||||
|
@ -225,6 +230,11 @@ func postInit():
|
|||
GlobalRegistry.registerEvent("res://Modules/IssixModule/Events/Overwrites/BullyGangEvent.gd")
|
||||
#GM.ES.registerEventTrigger("OpeningSlaveryScreen", EventTriggerLocation.new()) # TODO Find a way to do that
|
||||
|
||||
static func handleUpdates():
|
||||
if (GM.main.getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) >= 1): # if enslaved
|
||||
if GM.main.getModuleFlag("IssixModule", "Hiisi_Protects_PC") == null: # Hiisi protecting the player by default if enslaved
|
||||
GM.main.setModuleFlag("IssixModule", "Hiisi_Protects_PC", true)
|
||||
|
||||
static func addSceneToWatched(scene: String):
|
||||
var scenes = GM.main.getModuleFlag("IssixModule", "Misc_Slavery_Info", {"scenes_seen": []})
|
||||
scenes["scenes_seen"].append(scene)
|
||||
|
|
|
@ -37,6 +37,7 @@ func _run():
|
|||
saynn("You pass the token to the announcer.")
|
||||
saynn("[say=pc]Pleasure doing business.[/say]")
|
||||
saynn("[say=announcer]Likewise babe.[/say]")
|
||||
addButton("Leave", "Leave", "endthescene")
|
||||
|
||||
func calculateCost(item):
|
||||
return int(ceil((45 if getModuleFlag("IssixModule", "Announcer_PC_Naive") else 95)*item.getQuality()))
|
||||
|
|
|
@ -5,8 +5,6 @@ extends SceneBase
|
|||
|
||||
const Globals = preload("res://Modules/IssixModule/Globals.gd")
|
||||
|
||||
var geared_up = false
|
||||
|
||||
func _init():
|
||||
sceneID = "AzazelCorruption4"
|
||||
|
||||
|
@ -125,7 +123,7 @@ func _run(): # TODO Those corruption scenes don't really work when player is bl
|
|||
addButton("Don't allow", "Don't allow Azazel to restrict you", "foreplay", [false])
|
||||
|
||||
if state == "foreplay":
|
||||
if geared_up:
|
||||
if getModuleFlag("IssixModule", "Azazel_Corr_BDSM_Gear", false):
|
||||
saynn("Azazel puts multiple restraints on you, including heavy metal ankle cuffs that he connected to somewhere below the bed, heavy metal wrist cuffs, bondage mittens, he also connects your collar with a chain underneath the bed. To top it off, he dresses you up in a cute pink rope harness.")
|
||||
saynn("[say=azazel]You look so good now, awwwwwwwwwwwwwwwwww.[/say]")
|
||||
saynn("His paws wander around your body, testing the restraints, teasing you.")
|
||||
|
@ -169,7 +167,7 @@ func _run(): # TODO Those corruption scenes don't really work when player is bl
|
|||
saynn("He lets a laugh.")
|
||||
|
||||
saynn("Azazel gives your {pc.penis} little strokes, they aren't a lot, but it's certainly a nice start. He spits on your {pc.penis} to lubricate it a little and gradually picks up the pace pawing you off.")
|
||||
if geared_up:
|
||||
if getModuleFlag("IssixModule", "Azazel_Corr_BDSM_Gear", false):
|
||||
saynn("You get more aroused by the minute, staring at Azazel's pucker and increasingly wetting vagina just underneath. Unfortunately with your collar being attached to a chain you can't move your head close enough to give it rimming, curse the feline being so small!")
|
||||
else:
|
||||
saynn("You get more aroused by the minute, staring at Azazel's pucker and increasingly wetting vagina just underneath, they looks hypnotizing and make you want to help them get even more wet.")
|
||||
|
@ -260,8 +258,8 @@ func _run(): # TODO Those corruption scenes don't really work when player is bl
|
|||
saynn("[say=azazel]Hihi, here it is then![/say]")
|
||||
saynn("Azazel comes onto you again, his elbows on sides next to your neck and he covers your face with the gas mask, his paws fiddle with the device securing it with a strap behind your face.")
|
||||
saynn("[say=azazel]Does it feel tight? Is it sealed around your face?[/say]")
|
||||
if geared_up:
|
||||
saynn("You nod, as much as your restratins you have on you allow you to.")
|
||||
if getModuleFlag("IssixModule", "Azazel_Corr_BDSM_Gear", false):
|
||||
saynn("You nod, as much as your restraints you have on you allow you to.")
|
||||
else:
|
||||
saynn("You nod.")
|
||||
|
||||
|
@ -293,19 +291,6 @@ func _run(): # TODO Those corruption scenes don't really work when player is bl
|
|||
addButton("Stand up", "Stand up", "endthescene")
|
||||
|
||||
|
||||
func saveData():
|
||||
var data = .saveData()
|
||||
|
||||
data["geared_up"] = geared_up
|
||||
|
||||
return data
|
||||
|
||||
|
||||
func loadData(data):
|
||||
.loadData(data)
|
||||
geared_up = SAVE.loadVar(data, "geared_up", false)
|
||||
|
||||
|
||||
func getDevCommentary():
|
||||
return ""
|
||||
|
||||
|
@ -359,7 +344,8 @@ func _react(_action: String, _args):
|
|||
|
||||
if _action == "foreplay":
|
||||
processTime(10*60)
|
||||
geared_up = _args[0]
|
||||
var geared_up = _args[0]
|
||||
setModuleFlag("IssixModule", "Azazel_Corr_BDSM_Gear", geared_up)
|
||||
if geared_up: # Dress up time
|
||||
var item = GlobalRegistry.createItem("ropeharness")
|
||||
var inventory = GM.pc.getInventory()
|
||||
|
@ -388,7 +374,6 @@ func _react(_action: String, _args):
|
|||
GM.pc.getInventory().equipItem(GlobalRegistry.createItem("GasMask"))
|
||||
|
||||
if(_action == "endthescene"):
|
||||
setModuleFlag("IssixModule", "Azazel_Corruption_Scene", 4)
|
||||
endScene()
|
||||
return
|
||||
|
||||
|
|
|
@ -31,7 +31,7 @@ func _run():
|
|||
saynn("[say=pc]A-azazel? You look like him though... The colors and the tail...[/say]")
|
||||
saynn("[say=azazeldemon]Hehe. Welcome, little „morsel”.[/say]")
|
||||
saynn("[say=pc]Are you Azazel? Where, what is this place?[/say]")
|
||||
saynn("[say=azazeldemon]Curiosity killed the "+Util.getSpeciesName(GM.pc.getSpecies())+".[/say]")
|
||||
saynn("[say=azazeldemon]Curiosity killed the "+Util.getSpeciesName(GM.pc.getSpecies()).to_lower()+".[/say]")
|
||||
saynn("He laughs")
|
||||
saynn("[say=azazeldemon]Am I Azazel? Who's to say. What makes Azazel Azazel? Do I check all the boxes?... Probably not. I'm part of Azazel, but I'm not whole.[/say]")
|
||||
saynn("[say=pc]What?[/say]")
|
||||
|
|
|
@ -13,6 +13,7 @@ func _run():
|
|||
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Talked_With_Lamia"):
|
||||
addButton("Speech", "Learn how to speak like a good pet does", "finish")
|
||||
addButton("Appearance", "Look at the fox", "appearance")
|
||||
addButton("Leave", "Get away from here", "endthescene")
|
||||
|
||||
if state == "talk":
|
||||
playAnimation(StageScene.Duo, "stand", {pc="pc", npc="lamiademon"})
|
||||
|
@ -31,7 +32,9 @@ func _run():
|
|||
addButton("Talk", "Return to talk", "")
|
||||
|
||||
if state == "appearance":
|
||||
|
||||
saynn("Lamia is very visibly a fox breed, their fur has very vivid and unusual orange/red pallette. Red mostly visible on their arms, tip of their tail and a little bit on their legs. To contrast that, their hair is painted in shades of blue. They are wearing a general block inmate uniform.")
|
||||
saynn("There are two slightly curved horns protruding from their head with black base and red endings.")
|
||||
addButton("Talk", "Return to talk", "")
|
||||
|
||||
if state == "finish":
|
||||
saynn("[say=pc]Well... I did notice the notebook is unfinished, you meant to finish it right?[/say]")
|
||||
|
|
|
@ -4,7 +4,7 @@ const Globals = preload("res://Modules/IssixModule/Globals.gd")
|
|||
var corruption_level = 0
|
||||
|
||||
func _init():
|
||||
sceneID = "DemonLamiaTalk"
|
||||
sceneID = "FinalIssixDrugScene"
|
||||
|
||||
func _initScene(_args = []):
|
||||
corruption_level = (1 if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Trained_With_Hiisi") else 0) + (1 if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Lost_Speech") else 0) + (1 if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Got_Molded_By_Azazel") else 0)
|
||||
|
@ -12,6 +12,7 @@ func _initScene(_args = []):
|
|||
func _run():
|
||||
if(state == ""):
|
||||
addCharacter("issix")
|
||||
playAnimation(StageScene.Duo, "sit", {pc="issix", npc="pc"})
|
||||
saynn("As you continued walking, the musty air as well as humidity of it reached levels you didn't think you could possibly endure, and yet, you've pulled through without a hitch. The closer you got to the end of the metallic hallway, the less it looked like one. Metal got replaced by meaty tunnel, no longer looking so cubical, but getting irregular shapes, with meaty tendrils here and there.")
|
||||
saynn("The entire place feels alive, moving ever so slightly, making squelching sounds as you walk and as you don't. There are few smaller tendrils coming out of the ground, searching for something, needing to grab something or [i]someone[/i].")
|
||||
saynn("While walking on the meaty floor is exhausting, your {pc.feet} overcome the obstacle, your goal in sight now. It's a demon-dragon sitting on a chair, with his arm sitting on chair's support, while the other arm supports dragon's head as he looks forward - at you.")
|
||||
|
@ -21,15 +22,30 @@ func _run():
|
|||
saynn("[say=issix]And I answer this call. I'll be your Master in exchange for your eternal obedience. I'll bind your flesh, your mind to me, and you will let me, you will beg me to do it. To make you someone as simple as my pet. A pet. A creature that yes - requires care, patience and maybe still has some level of independence. But a pet with his owner. Nobody else will see you as anything more that a thing, with its owner. You'll forever have a tag attached to you saying who to return you if you ever get lost, you'll no longer be seen as an individual but as [i]something lesser[/i] - a creature possessed by someone stronger who makes decisions for them.[/say]")
|
||||
saynn("[say=issix]Tell me {pc.boy}, am I wrong? Is it you who I'm describing?[/say]")
|
||||
addButton("Yes", "Say yes (enslavement)", "answeryes")
|
||||
addButton("No", "Say no", "answerno")
|
||||
if corruption_level < 2:
|
||||
addButton("No", "Say no", "answerno")
|
||||
else:
|
||||
addDisabledButton("No", "You have taken opportunity to become a pet more than once, this wouldn't be your true answer")
|
||||
|
||||
if state == "answerno":
|
||||
saynn("[say=pc]It's not me.[/say]")
|
||||
saynn("Issix raises his eyebrows in surprise.")
|
||||
saynn("[say=issix]Are you not? [/say]")
|
||||
saynn("[say=issix]Are you really not?[/say]")
|
||||
saynn("[say=issix]You are not interested in the slightest? Hmm... Is the life of eternal pet not something you'd wish? Or is it something in me that you hate? I'll give you one more chance to indulge. If you say yes, you can still see yourself as a pet, the dream of eternal servitude realized. If not... Well, I can't blame you, it's not for everyone. Give me your answer.[/say]")
|
||||
addButton("Reconsider", "Say yes", "answeryes")
|
||||
addButton("Still no", "Say no", "stillno")
|
||||
|
||||
if state == "stillno":
|
||||
saynn("He ponders.")
|
||||
saynn("[say=issix]Then, perhaps its just not meant to be.[/say]")
|
||||
saynn("He snaps his paw fingers. Everything starts shaking, the walls crumble as Issix taking his sight off you, stares in the distance of the corridor.")
|
||||
saynn("[say=pc]What is happening?! What the fuck? Is the world...[/say]")
|
||||
saynn("[say=issix]Crumbling? Yes. It had a sole purpose that disappeared with the moment you rejected the life of a pet.[/say]")
|
||||
saynn("White noise. White noise all around. You feel tingling all over your body. The rumbling becomes more and more vicious as you see Issix disappearing along with everything around you. White noise wherever you look.")
|
||||
addButton("Continue", "Wake up", "finalstagenopet")
|
||||
|
||||
if state == "answeryes":
|
||||
playAnimation(StageScene.Duo, "stand", {pc="issix", npc="pc", npcBodyState="kneel"})
|
||||
saynn("[say=pc]Yes.[/say]")
|
||||
if GM.pc.getSkillsHolder().hasPerk("PetSpeech"):
|
||||
saynn("Master smiles and claps his paws in return.")
|
||||
|
@ -61,6 +77,7 @@ func _run():
|
|||
|
||||
|
||||
if state == "collaring":
|
||||
playAnimation(StageScene.Duo, "sit", {pc="issix", npc="pc", npcBodyState="kneel"})
|
||||
saynn("[say=pc]Y-yes Master.[/say]")
|
||||
saynn("[say=issix]Splendid. In that case...[/say]")
|
||||
saynn("He snaps his paw fingers. Suddenly the surrounding changes. The meaty walls are still meaty walls, however they are now decorated by a lot of white decor, many fancy shapes hang on the meaty walls, seemingly sticking to them by small tendrils holding them. Issix's chair is replaced by a small stage on which you now sit instead after being moved with no effort taken by anyone. Issix continues to stand before you, holding a collar in his paw. You look to your side, on which there still is an incredibly long dark tunnel, but also there are three chairs occupied by three very well known to you creatures - Azazel, Lamia and Hiisi, the first two hold an excited face expression, while the last one observes with interest the two of you on the stage.")
|
||||
|
@ -86,12 +103,17 @@ func _run():
|
|||
addButton("Blink", "Blink", "blink")
|
||||
|
||||
if state in ["noo", "blink"]:
|
||||
clearCharacter()
|
||||
addCharacter("azazel")
|
||||
aimCamera("cellblock_lilac_nearcell")
|
||||
setLocationName("Azazel's cell")
|
||||
playAnimation(StageScene.Sleeping, "idle", {pc="pc", npc="azazel", bodyState={naked=true}, npcBodyState={naked=true, hard=false}})
|
||||
if state == "noo":
|
||||
saynn("Before you can answer the world starts deconstructing, the meaty walls you see become more and more twisted until they break into sea of white noise. Feeling the dread of losing the precious moment that you just entered moments before you whimper.")
|
||||
saynn("[say=pc]Noooooo![/say]")
|
||||
saynn("Your Master speaks in calm voice.")
|
||||
saynn("[say=issix]Don't despair. Join me soon.[/say]")
|
||||
saynn("The world you just knew gets replaced by nothingness, the musty heavy air is still the same, the feeling of a collar on your neck - perhaps not as heavy as before stays, the warm embrace of your Master is replaced with a different kind of warm embrace, from Azazel.")
|
||||
saynn("The world you just knew gets replaced by nothingness, the musty heavy air is still the same, the feeling of a collar on your neck - perhaps not as heavy as before stays, the warm embrace of your Master is replaced with a different kind of warm embrace, from Azazel. You no longer have a gas mask on you, it must have been taken off.")
|
||||
saynn("You open your eyes and see his face, happy, as if he was living through your emotions, through your experiences that you just had, he speaks.")
|
||||
saynn("[say=azazel]So, how was it? Did you have fun? What did you see?[/say]")
|
||||
saynn("A barrage of questions for burdened mind just extracted forcefully from a dream full of hope for new living, for new purpose.")
|
||||
|
@ -103,7 +125,100 @@ func _run():
|
|||
saynn("[say=pc]I think I'd like to have a Master.[/say]")
|
||||
saynn("[say=azazel]Hehehe. [b]I know[/b]. Don't worry, I'm sure Master would love to have you as his pet. I can't wait to see you in the harem![/say]")
|
||||
saynn("You feel embarrassed, but at the same time, you feel so wanting, there is an emotional hole inside you that you feel you have to fill in after encounter with Master Issix in whatever dreamy state you've had on drugs.")
|
||||
addButton("Yeah", "Yeah, I hope so too", "finishstage")
|
||||
|
||||
if state == "finishstage":
|
||||
playAnimation(StageScene.Duo, "stand", {pc="pc", npc="azazel", bodyState={naked=true}})
|
||||
saynn("[say=pc]I guess so... I've seen you, Hiisi and Lamia, and your Master-[/say]")
|
||||
saynn("[say=azazel]Oh oh! What were we doing?![/say]")
|
||||
saynn("[say=pc]You had bigger horns, and your fur was purple-[/say]")
|
||||
saynn("[say=azazel]WOOOOAHHHH, I really wonder how I looked like! I think purple would love lovely on me![/say]")
|
||||
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Got_Molded_By_Azazel"):
|
||||
if GM.pc.hasPenis() and !GM.pc.hasVagina():
|
||||
saynn("[say=pc]- you also magically removed my penis and made me have a vagina as well as creating sort of fertility tattoo on me...[/say]")
|
||||
saynn("He looks at you in awe.")
|
||||
saynn("[say=azazel]Noooo wayyyyy, I wish I could do that! I think this kind of tech will be available only some time in the future...[/say]") # TODO Remove when TF update hits
|
||||
elif !GM.pc.hasPenis() and !GM.pc.hasVagina():
|
||||
saynn("[say=pc]- you also changed my body in such a way that I've had a vagina and you created a fertility tattoo on me....[/say]")
|
||||
saynn("He looks at you in awe.")
|
||||
saynn("[say=azazel]Noooo wayyyyy, I wish I could do that! I think this kind of tech will be available only some time in the future...[/say]")
|
||||
elif GM.pc.hasPenis() and GM.pc.hasVagina():
|
||||
saynn("[say=pc]- you also magically removed my penis as well as creating sort of fertility tattoo on me...[/say]")
|
||||
saynn("He looks at you in awe.")
|
||||
saynn("[say=azazel]Noooo wayyyyy, I wish I could do that! I think this kind of tech will be available only some time in the future...[/say]")
|
||||
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Trained_With_Hiisi"):
|
||||
saynn("In addition Hiisi made me command trained so each time he said something like Sit I obeyed without even noticing.")
|
||||
saynn("[say=azazel]Hehe, that's so cool, you were a nice obedient "+Globals.getPlayerPetName()+"! Normally Master teaches us how to obey, but Hiisi is a second best figure to do that I think.[/say]")
|
||||
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Lost_Speech"):
|
||||
saynn("[say=pc]There was also Lamia who took away my ability to speak like we do, they made me communicate in animal speech but somehow everyone else understood me just fine.[/say]")
|
||||
saynn("[say=azazel]That's fascinating! Sounds super cool, I bet you were a very cute pet after that![/say]")
|
||||
|
||||
saynn("[say=azazel]So, where were you? What happened next?[/say]")
|
||||
saynn("[say=pc]Instead of our hall that leads to stairs there was a loooong dark corridor that ended with a place that had meaty walls, ceiling and floor, there was where I found Master Issix.[/say]")
|
||||
saynn("[say=azazel]Meaty place? Fuuuuuck, why I never had such a trip![/say]")
|
||||
saynn("[say=pc]And it all ended with him... Umm... Collaring me...[/say]")
|
||||
saynn("[say=azazel]Hahaha, that's so sexy! Sounds wonderful. Man. That must have been so cool. Well, I'm glad to hear you enjoyed the experience, thing thing really makes the best trips huh.[/say]")
|
||||
saynn("You still ponder what you've experienced and left kitten's words unanswered.")
|
||||
if getModuleFlag("IssixModule", "Azazel_Corr_BDSM_Gear", false):
|
||||
saynn("[say=azazel]Well, time to get you off this cute gear, I need to go shortly.[/say]")
|
||||
saynn("Azazel takes off your restraints")
|
||||
saynn("[say=azazel]Back onto the piile. Thanks for entertaining me today {pc.Name}, been fun! Visit us often in the corner, will you?[/say]")
|
||||
else:
|
||||
saynn("[say=azazel]Thanks for entertaining me today {pc.Name}, been fun! Visit us often in the corner, will you?[/say]")
|
||||
|
||||
saynn("[say=pc]Y-yeah... Sure....[/say]")
|
||||
|
||||
saynn("He gives you a kiss on your cheek using the fact you are still in his bed and he doesn't have to use tricks to get to your tall head.")
|
||||
saynn("[say=azazel]See ya![/say]")
|
||||
saynn("[say=pc]See.. Ya...[/say]")
|
||||
|
||||
saynn("Azazel leaves his cell in haste, leaving you there, still processing what actually happened.")
|
||||
addMessage("This is the end of Azazel's corruption story line!")
|
||||
addButton("Leave", "Leave the cell", "endthescene")
|
||||
|
||||
if state == "finalstagenopet":
|
||||
clearCharacter()
|
||||
addCharacter("azazel")
|
||||
aimCamera("cellblock_lilac_nearcell")
|
||||
setLocationName("Azazel's cell")
|
||||
playAnimation(StageScene.Sleeping, "idle", {pc="pc", npc="azazel", bodyState={naked=true}, npcBodyState={naked=true, hard=false}})
|
||||
saynn("The world you just knew gets replaced by nothingness, the musty heavy air is still the same, but not much else. You no longer have a gas mask on you, it must have been taken off.")
|
||||
saynn("You open your eyes and see his face, happy, he speaks.")
|
||||
saynn("[say=azazel]So, how was it? Did you have fun? What did you see?[/say]")
|
||||
saynn("A barrage of questions for burdened mind just extracted forcefully from a dream full of hope for new living, for new purpose.")
|
||||
saynn("[say=pc]It was... Interesting? I guess?[/say]")
|
||||
saynn("[say=azazel]You guess? What happened? You didn't like it?[/say]")
|
||||
saynn("[say=pc]I think it was too much... There was you, Lamia, Hiisi - you all looked kind of different. And there was Master, he wanted to collar me-[/say]")
|
||||
saynn("[say=azazel]Woooahhhh, that's so cool![/say]")
|
||||
saynn("[say=pc]-and I refused, and then the world disappeared and I woke up.[/say]")
|
||||
saynn("[say=azazel]Aw, you didn't like the look of the collar or I KNOW! Master actually looked like a monster with 74 tentacles like in some horror stories! I mean, I wouldn't refuse even them, I'm sure that those tentacles would be super fun to play around, and maybe their slime would be better than any lube I ever tried and-[/say]")
|
||||
saynn("Seeing that feline starts a new fantasy playing in his head you interrupt him.")
|
||||
saynn("[say=pc]No, not any of them, it's just that I didn't feel like it would be for me, you know?[/say]")
|
||||
saynn("[say=azazel]Huh? What would be?[/say]")
|
||||
saynn("[say=pc]You know, life as a pet...[/say]")
|
||||
saynn("He looks confused, then saddened.")
|
||||
saynn("[say=azazel]Oh... I... Sorry to hear that.[/say]")
|
||||
if getModuleFlag("IssixModule", "Azazel_Corr_BDSM_Gear", false):
|
||||
saynn("[say=azazel]I thought you'd love that, and... Ah, nevermind, let me get you off those.[/say]")
|
||||
saynn("He points at bondage gear still in your body")
|
||||
addButton("Get stripped", "Let Azazel strip your BDSM gear", "nostrip")
|
||||
else:
|
||||
saynn("[say=azazel]I thought you'd love that, and... Ah, nevermind oh well, guess that would be it for now, I have to go. Take care of yourself {pc.name}, and please, do visit us from time to time.[/say]")
|
||||
saynn("[say=pc]Uh, sure, I guess.[/say]")
|
||||
saynn("He leaves his cell, his tail drags on the floor in despair.")
|
||||
addMessage("This is the end of Azazel's corruption story line!")
|
||||
addButton("Leave too", "Leave the cell", "endthescene")
|
||||
|
||||
if state == "nostrip":
|
||||
saynn("Azazel takes his sweet time unstrapping you from all the bondage gear he got you in, finally, you are free of everything.")
|
||||
|
||||
saynn("[say=azazel]So yeah, here you go... Umm.. You don't hate me, right? For you know... Basically drugging you?[/say]")
|
||||
|
||||
saynn("[say=pc]Nah, don't worry about it.[/say]")
|
||||
saynn("[say=azazel]Okey... Sorry.[/say]")
|
||||
saynn("He throws all of the bondage hear he recovered back onto the pile, and without further comments he... Leaves, the feline tail miserably dragging behind him, the disappointment is clear to you.")
|
||||
addMessage("This is the end of Azazel's corruption story line!")
|
||||
addButton("Leave", "Leave too", "endthescene")
|
||||
|
||||
|
||||
|
||||
|
@ -115,14 +230,28 @@ func hasDevCommentary():
|
|||
|
||||
|
||||
func _react(_action: String, _args):
|
||||
if _action in ["noo", "blink"]:
|
||||
if _action in ["noo", "blink", "finalstagenopet"]:
|
||||
GM.pc.setLocation("cellblock_lilac_nearcell")
|
||||
GM.main.clearOverridePC()
|
||||
GM.pc.getInventory().clearSlot(InventorySlot.Eyes)
|
||||
setModuleFlag("IssixModule", "Azazel_In_Dream", false)
|
||||
GlobalRegistry.getModule("IssixModule").hackProcessingCharacters()
|
||||
GM.pc.updateNonBattleEffects()
|
||||
processTime(40*60)
|
||||
GM.pc.addStamina(-40)
|
||||
GM.pc.addLust(-300)
|
||||
|
||||
if _action in ["finishstage", "nostrip"]:
|
||||
if getModuleFlag("IssixModule", "Azazel_Corr_BDSM_Gear", false):
|
||||
GM.pc.getInventory().clearSlot(InventorySlot.Torso)
|
||||
GM.pc.getInventory().clearSlot(InventorySlot.Hands)
|
||||
GM.pc.getInventory().clearSlot(InventorySlot.Wrists)
|
||||
GM.pc.getInventory().clearSlot(InventorySlot.Ankles)
|
||||
processTime(10*60)
|
||||
processTime(8*60)
|
||||
|
||||
if(_action == "endthescene"):
|
||||
setModuleFlag("IssixModule", "Azazel_Corruption_Scene", 5)
|
||||
endScene()
|
||||
return
|
||||
|
||||
|
|
|
@ -107,7 +107,7 @@ func getBirthWaitTime():
|
|||
return 60*60*24*2
|
||||
|
||||
func getDefaultEquipment():
|
||||
return ["oldcollar", "Leotard", "sportyBriefs"]
|
||||
return ["oldcollar", "LeatherJacket", "sportyBriefs"]
|
||||
|
||||
func getThickness() -> int:
|
||||
return 70
|
||||
|
|
|
@ -9,7 +9,7 @@ func registerTriggers(es):
|
|||
es.addTrigger(self, Trigger.EnteringRoom, "petsdream_cellblock_corridor_part17")
|
||||
|
||||
func react(_triggerID, _args):
|
||||
runScene("IssixWelcomesPet")
|
||||
runScene("FinalIssixDrugScene")
|
||||
return true
|
||||
|
||||
func getPriority():
|
||||
|
|
|
@ -434,7 +434,7 @@ func _run():
|
|||
if answer:
|
||||
saynn("[say=issix]Ultimately, even if you said that you prefer punishment that still wouldn't make you necessarily like them, but you chose reward, and that, in my eyes is good to hear. My relationsip with pets does have elements of punishment, but reward or lack of it is much better tool to control pets, it's not just much more effective but it's also better in every other angle. I'm using punishment only in specific cases. Hope it doesn't come to that.[/say]")
|
||||
else:
|
||||
saynn("[say=issix]And no, just because you've said you prefer punishment as education method doesn't put them on the same spot as those fuckers. There is more to being who they were than just that, That said, while my relationsip with pets does have elements of punishment, the reward or lack of it is much better tool to control pets, it's not just much more effective but it's also better in every other angle. I'm using punishment only in specific cases. Hope it doesn't come to that.[/say]")
|
||||
saynn("[say=issix]And no, just because you've said you prefer punishment as education method doesn't put them on the same spot as those fuckers. There is more to being who they were than just that. That said, while my relationship with pets does have elements of punishment, the reward or lack of it is much better tool to control pets, it's not just much more effective but it's also better in every other angle. I'm using punishment only in specific cases. Hope it doesn't come to that.[/say]")
|
||||
answer = getModuleFlag("IssixModule", "QuestionnaireQ8")
|
||||
saynn("[say=issix]Next I asked you about which species you find most attractive, this was entirely for fun and my own research. You've mentioned you do find "+answer+"s most attractive, that's great.")
|
||||
addButton("Continue", "", "summary6")
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
extends SceneBase
|
||||
|
||||
const Globals = preload("res://Modules/IssixModule/Globals.gd")
|
||||
|
||||
var artwork = null # array[array[int numbers of chosen artwork combos], str[description], bool[whether odd art overwrite is active], array[previous art ids, chosen art ids]]
|
||||
var pc_pose = null
|
||||
var arts_reviewed = 0
|
||||
|
@ -157,8 +159,36 @@ func _run():
|
|||
addButton("Help", "Ask if you can help the canine in something", "hiisihelp")
|
||||
else:
|
||||
addDisabledButton("Help", "You've helped Hiisi today already")
|
||||
var hiisi_affection = getModuleFlag("IssixModule", "Hiisi_Affection", 0)
|
||||
if hiisi_affection > 4:
|
||||
addButton("Prison", "Ask him how he ended up in the prison", "hiisiprison")
|
||||
addButton("Sex", "Ask him about his relation with sex", "hiisisex")
|
||||
addButton("Back", "Do something else", "hiisimain")
|
||||
|
||||
if state == "hiisisex":
|
||||
saynn("[say=pc]How do you feel about sex?[/say]")
|
||||
saynn("[say=hiisi]Don't care.[/say]")
|
||||
saynn("[say=pc]Uhhh, you don't care? Could you elaborate?[/say]")
|
||||
saynn("[say=hiisi]Ehhh. I know it's rare in this debauched place, but I'm indifferent to having sex. It's not that I don't like it, it does nothing for me. If Master wants of me then sure - I'll have some sexy time, but overall? I do not participate unless I need to.[/say]")
|
||||
saynn("[say=pc]That's interesting.[/say]")
|
||||
if Globals.checkIfPCEnslaved():
|
||||
saynn("[say=hiisi]If you want any, there is Azazel, I'm sure he'd love to help. Master may want to use you from time to time as well, could ask him too.[/say]")
|
||||
else:
|
||||
saynn("[say=hiisi]This entire prison is full of people who would love to fuck with you, sometimes metaphorically. ou have plenty of choice, go ask. Just don't try to do that with any of us, Master wouldn't like.[/say]")
|
||||
addButton("Back", "Do something else", "hiisitalk")
|
||||
|
||||
if state == "hiisiprison":
|
||||
saynn("[say=pc]How have you ended up in the prison?[/say]")
|
||||
saynn("[say=hiisi]What's your business in it?[/say]")
|
||||
saynn("[say=pc]I were just.. Curious, if you don't want to talk about it, that's fine...[/say]")
|
||||
saynn("He regards you for few seconds, ending with sigh.")
|
||||
saynn("[say=hiisi]I don't know.[/say]")
|
||||
saynn("[say=pc]Huh?[/say]")
|
||||
saynn("[say=hiisi]Look, I just don't know, okey? I don't remember. End of the story.[/say]")
|
||||
saynn("He seems defensive over this...")
|
||||
addButton("Back", "Do something else", "hiisitalk")
|
||||
|
||||
|
||||
if state == "hiisihelp":
|
||||
saynn("[say=pc]Hey Hiisi, anything you'd like help with? I'd be happy to do something for you![/say]")
|
||||
match hiisi_help_type[0]:
|
||||
|
|
258
Modules/IssixModule/Scenes/SlaveryFirst/RescueFromFightScene.gd
Normal file
258
Modules/IssixModule/Scenes/SlaveryFirst/RescueFromFightScene.gd
Normal file
|
@ -0,0 +1,258 @@
|
|||
extends SceneBase
|
||||
|
||||
const Globals = preload("res://Modules/IssixModule/Globals.gd")
|
||||
|
||||
var enemyID := ""
|
||||
var fightScene: SceneBase = null
|
||||
|
||||
func _init():
|
||||
sceneID = "RescueFromFight"
|
||||
|
||||
func _initScene(_args = []):
|
||||
enemyID = _args[0]
|
||||
fightScene = _args[1]
|
||||
|
||||
func resolveCustomCharacterName(_charID):
|
||||
if(_charID == "npc"):
|
||||
return enemyID
|
||||
|
||||
func _run():
|
||||
if(state == ""): # TODO If enemy is especially powerful summon Issix instead
|
||||
playAnimation(StageScene.Duo, "stand", {pc="hiisi", npc=enemyID, npcAction="stand"}) # TODO Make an animation with 3 people
|
||||
addCharacter("hiisi")
|
||||
addCharacter(enemyID)
|
||||
saynn("Before fight can continue, all of the sudden Hiisi appears on the scene, he looks a little out of breath but either way, he separates you from {npc.name}.")
|
||||
saynn("[say=npc]The fuck are you doing here?[/say]")
|
||||
saynn("[say=hiisi]None of your business, scram.[/say]")
|
||||
saynn("[say=npc]And why should I?[/say]")
|
||||
saynn("[say=hiisi]Because the alternative is that you eat shit.[/say]")
|
||||
if GlobalRegistry.getCharacter(enemyID).getPersonality().getStat(PersonalityStat.Coward) > 0.2:
|
||||
saynn("[say=npc]Fine, your "+boyfriend()+" is not worth a fight anyways.[/say]")
|
||||
saynn("{npc.Name} leaves the place. Hiisi leads him with his eyes before turning back to you.")
|
||||
saynn("[say=hiisi]Everything fine? Sorry for being late.[/say]")
|
||||
addButton("Fine", "Tell Hiisi you are fine", "sayfine")
|
||||
addButton("Been better", "Tell Hiisi you've been better", "saybetter")
|
||||
if GM.pc.getPain() > 50:
|
||||
addButton("Hurt", "Tell Hiisi you've been hurt", "sayhurt")
|
||||
else:
|
||||
addDisabledButton("Hurt", "You are not hurt badly enough to mention being hurt")
|
||||
else:
|
||||
saynn("[say=npc]Oh, you sure about that? Try me bitch.[/say]")
|
||||
saynn("{npc.He} raises his fist readying to fight. Hiisi gestures you to go away.")
|
||||
addButton("Observe", "Observe from a distance", "fightalone")
|
||||
addButton("Push Hiisi", "Tell Hiisi that you've got this and he doesn't have to be doing this", "fightpc")
|
||||
addButton("Leave", "Let the experienced canine handle this", "leave")
|
||||
|
||||
if state == "sayfine":
|
||||
playAnimation(StageScene.Duo, "stand", {pc="hiisi", npc="pc", npcAction="stand"})
|
||||
saynn("[say=pc]I'm fine, thank you Hiisi.[/say]")
|
||||
saynn("[say=hiisi]Don't mention it, we need to stick together. I'll go, don't get into trouble again.[/say]")
|
||||
saynn("[say=pc]Can't promise.[/say]")
|
||||
addButton("Leave", "Leave as well", "endthescene")
|
||||
|
||||
if state == "saybetter":
|
||||
playAnimation(StageScene.Duo, "stand", {pc="hiisi", npc="pc", npcAction="stand"})
|
||||
saynn("[say=pc]Eh, I've been better.[/say]")
|
||||
saynn("[say=hiisi]Hmm, are you hurt? Do you need help?[/say]")
|
||||
saynn("[say=pc]No, no, not really. Thanks Hiisi, you saved by hide there.[/say]")
|
||||
saynn("[say=hiisi]Don't mention it, we need to stick together. I'll go, don't get into trouble again.[/say]")
|
||||
saynn("[say=pc]Can't promise.[/say]")
|
||||
addButton("Leave", "Leave as well", "endthescene")
|
||||
|
||||
if state == "sayhurt":
|
||||
playAnimation(StageScene.Duo, "kneel", {pc="hiisi", npc="pc", npcAction="kneel"})
|
||||
saynn("[say=pc]Actually, I think I might need some medical attention, I've been bruised pretty badly.[/say]")
|
||||
saynn("[say=hiisi]Shit, show.[/say]")
|
||||
saynn("You show the canine damage on your body, hissing when he touches a place on your "+Globals.getSkinWord()+".")
|
||||
if GM.pc.hasEffect(StatusEffect.Wounded): # TODO Do that only when there is direct path to medical, check with shit
|
||||
|
||||
saynn("[say=hiisi]You are looking really bad, we will have to get you out of here. Follow m- actually, nevermind, let me hold you.[/say]")
|
||||
if GM.pc.isVisiblyPregnant():
|
||||
saynn("Canine picks up your entire body, taking extra care not to hurt your offspring, as he moves you towards the infirmary.")
|
||||
else:
|
||||
saynn("Canine picks up your entire body and takes you to the infirmary.")
|
||||
addButton("Infirmary", "See what happens next", "infirmary")
|
||||
else:
|
||||
saynn("[say=hiisi]Pretty bad, but I have just a thing.[/say]")
|
||||
saynn("{hiisi.He} takes a sort of a small bottle with long nozzle as he moves it closer to places that are hurting you. A few drops of some strange liquid later and him massaging the place you feel much better, not feeling much actually. He also gives you a pill that you take to further deal with the pain.")
|
||||
saynn("[say=hiisi]How is that?[/say]")
|
||||
saynn("[say=pc]Better, thank you, I don't know what's this but it's pretty magic.[/say]")
|
||||
saynn("[say=hiisi]Just some next level medicine, can't heal deep wounds but bruises you've had are easy to deal with. You can stand right?[/say]")
|
||||
saynn("[say=pc]Yeah, no problem.[/say]")
|
||||
saynn("[say=hiisi]Good. Feel free to come back to the harem if you need further help, alright?[/say]")
|
||||
saynn("[say=pc]Yup, thanks again![/say]")
|
||||
saynn("Canine simply leaves you as he moves back towards the corner.")
|
||||
addButton("Leave", "Leave as well", "endthescene")
|
||||
|
||||
if state in ["fightalone", "fightalonedefeat"]:
|
||||
if state == "fightalone":
|
||||
saynn("You decide to observe Hiisi's fight from the distance.")
|
||||
else:
|
||||
saynn("You watch how Hiisi approaches the victorious inmate.")
|
||||
saynn("[say=hiisi]You will learn that Issix's pets can fight back.[/say]")
|
||||
saynn("[say=npc]You are fucking full of it.[/say]")
|
||||
saynn("[say=hiisi]You'll change your tune.[/say]")
|
||||
saynn("They continue fighting, at the end, Hiisi emerges victorious sending many punches towards {npc.name} and having no problem taking them down. The difference in power was quite significant.")
|
||||
saynn("[say=npc]Fuck. Fine. Just leave me fucking be.[/say]")
|
||||
saynn("[say=hiisi]Learn the smell of my Master and avoid his pets next time, fucker.[/say]")
|
||||
saynn("[say=npc]Ugh...[/say]")
|
||||
saynn("Hiisi leaves like that the inmate on his knees recovering {npc.himself}")
|
||||
addButton("Leave", "Leave", "endthescene") # TODO Expand
|
||||
|
||||
if state == "fightpc":
|
||||
saynn("[say=pc]Hey Hiisi, don't worry, I can handle this.[/say]")
|
||||
if GM.pc.hasEffect(StatusEffect.Wounded):
|
||||
saynn("[say=hiisi]No way I'm letting you, you are badly wounded, you are not going anywhere except the infirmary.[/say]")
|
||||
saynn("[say=pc]No, really I ca-[/say]")
|
||||
saynn("[say=hiisi]Shut the fuck up and watch, do not move, lay on the ground.[/say]")
|
||||
saynn("Hiisi is having none of that, he makes you lay on the ground and wait for him to finish the fight.")
|
||||
else:
|
||||
saynn("[say=hiisi]Are you absolutely positive you can handle this?[/say]")
|
||||
saynn("[say=pc]Yes, I'm.[/say]")
|
||||
saynn("[say=hiisi]*sigh* Fine, go at it.[/say]")
|
||||
saynn("He steps aside so you can continue fighting.")
|
||||
addButton("Continue", "Resume the fight", "resumefight")
|
||||
|
||||
if state == "hiisi_congratulates":
|
||||
saynn("[say=hiisi]Good job. I'll go now.[/say]")
|
||||
saynn("[say=pc]You observed?[/say]")
|
||||
saynn("[say=hiisi]Just making sure you are not in trouble.[/say]")
|
||||
saynn("[say=pc]... Thanks.[/say]")
|
||||
saynn("He waves at you as he continues slowly walking towards the harem. You are now free to do with {npc.name} as you wish.")
|
||||
addButton(GlobalRegistry.getCharacter(enemyID).getName(), "See what you can do with them", "endthescene")
|
||||
|
||||
if state == "hiisi_takesover":
|
||||
saynn("[say=hiisi]Let me take this over alright? Have some rest.[/say]")
|
||||
saynn("Says Hiisi as he finishes the job with the inmate.")
|
||||
addButton("Watch", "Watch what happens next", "fightalonedefeat")
|
||||
|
||||
if state == "leave":
|
||||
saynn("You decide to leave the fight to a more experienced fighter, you are pretty sure Hiisi can handle it.")
|
||||
addButton("Leave", "Leave the fight scene", "endthescene")
|
||||
|
||||
if state == "infirmary":
|
||||
playAnimation(StageScene.Duo, "stand", {npc="eliza", npcAction="stand", bodyState={naked=true}})
|
||||
aimCameraAndSetLocName("med_lobbymain")
|
||||
addCharacter("eliza")
|
||||
|
||||
saynn("You arrive in the medical lobby seeing Eliza.")
|
||||
saynn("[say=hiisi]Good day, I need help with {pc.Name}, they are badly hurt.[/say]")
|
||||
saynn("[say=eliza]And where does it hurt?[/say]")
|
||||
|
||||
saynn("[say=pc]Inside.[/say]")
|
||||
|
||||
saynn("[say=eliza]Alright, can you walk by yourself?[/say]")
|
||||
saynn("[say=pc]I think so.[/say]")
|
||||
saynn("[say=eliza]Alright, come with me then. Inmate number {hiisi.inmateNumber}, you can now leave, I'll take care of this. As for the payment, your Master I'm sure will cover.[/say]")
|
||||
saynn("[say=hiisi]Of course, Eliza. You are in good paws {pc.name}, come to our corner later, okey? Good luck.[/say]")
|
||||
saynn("[say=pc]Thanks Hiisi.[/say]")
|
||||
|
||||
saynn("Eliza clips leash to your collar and leads you to the lab.")
|
||||
addButton("Continue", "", "cryopodtreatment")
|
||||
|
||||
if state == "cryopodtreatment":
|
||||
playAnimation(StageScene.Cryopod, "idle", {bodyState={naked=true}})
|
||||
if getModuleFlag("MedicalModule", "Medical_FirstTimeHealedHappened"):
|
||||
saynn("You step after Eliza until you arrive at the lab, Eliza unclasps your leash and begins to tap on machines keyboard, preparing it for your session.")
|
||||
else: #TODO Expand?
|
||||
saynn("You eventually arrive in large sterile room with large amount of expensive equipment around. {eliza.She} unclasps your leash and begins to tap on machines keyboard, preparing it for your session.")
|
||||
addButton()
|
||||
|
||||
|
||||
|
||||
func boyfriend():
|
||||
match GM.pc.getGender():
|
||||
Gender.Male:
|
||||
return "boyfriend"
|
||||
Gender.Female:
|
||||
return "girlfriend"
|
||||
_:
|
||||
return "lover"
|
||||
|
||||
func cleanupFight():
|
||||
var pawn:CharacterPawn = GM.main.IS.getPawn("pc")
|
||||
var interaction:PawnInteractionBase = pawn.getInteraction()
|
||||
var pawn_ids = interaction.getInvolvedPawnIDs()
|
||||
pawn_ids.erase("pc")
|
||||
GM.main.IS.getPawn(pawn_ids[0]).satisfyAnger()
|
||||
interaction.stopMe() # Force stop interaction with no gains
|
||||
fightScene.parentSceneUniqueID = -1 # Nullify previous scene so the react is sent nowhere
|
||||
GM.main.removeScene(fightScene) # Remove fighting scene as if it never happened
|
||||
|
||||
func continueFight(): # Hijack parent of FightScene, reorder scene order (so our scene is parent of fight scene, change so Hiisi doesn't interrupt and rerun fighting scene)
|
||||
var ourCurrentScene = GM.main.sceneStack.pop_back() # Remove our current scene from the SceneStack and save its reference to a variable
|
||||
fightScene.parentSceneUniqueID = ourCurrentScene.uniqueSceneID # Change parent scene of fightScene so we get a callback when FightScene is over
|
||||
ourCurrentScene.parentSceneUniqueID = GM.main.sceneStack[-2].uniqueSceneID # Set our parent scene to WorldScene, not needed but makes things neat I guess?
|
||||
GM.main.sceneStack.insert(GM.main.sceneStack.size()-1, ourCurrentScene) # Reorder stack scene, move this scene to be between WorldScene and FightScene
|
||||
GM.main.sceneStack.back().sceneTag = "interaction_fight_pcdef_hijacked" # So GameExtender doesn't hijak the scene once again
|
||||
GM.main.reRun()
|
||||
|
||||
func saveData():
|
||||
var data = .saveData()
|
||||
|
||||
data["enemyID"] = enemyID
|
||||
#warning-ignore:incompatible_ternary
|
||||
data["fightScene"] = fightScene.uniqueSceneID if is_instance_valid(fightScene) else null
|
||||
|
||||
return data
|
||||
|
||||
func loadData(data):
|
||||
.loadData(data)
|
||||
|
||||
enemyID = SAVE.loadVar(data, "enemyID", null)
|
||||
var fight_scene_maybe = SAVE.loadVar(data, "fightScene", null)
|
||||
if fight_scene_maybe:
|
||||
fightScene = GM.main.getSceneByUniqueID(fight_scene_maybe) # We might need to find the ID of this one
|
||||
else:
|
||||
for scene in GM.main.sceneStack:
|
||||
if scene.sceneID == "FightScene":
|
||||
fight_scene_maybe = scene.uniqueSceneID
|
||||
if fight_scene_maybe == null: # Fail safe
|
||||
endScene()
|
||||
return
|
||||
fightScene = GM.main.getSceneByUniqueID(fight_scene_maybe)
|
||||
|
||||
func _react_scene_end(_tag, _result):
|
||||
if(_tag == "interaction_fight_pcdef_hijacked"):
|
||||
var battlestate = _result[0]
|
||||
var parent_scene = GM.main.sceneStack[-2]
|
||||
var ignore_func_calls := false
|
||||
if parent_scene == null or parent_scene.sceneID != "WorldScene":
|
||||
ignore_func_calls = true
|
||||
if(battlestate == "win"):
|
||||
if !ignore_func_calls:
|
||||
parent_scene.sendStatusToInteraction({"won":false})
|
||||
setState("hiisi_congratulates")
|
||||
else:
|
||||
# Nullify the interaction
|
||||
var pawn:CharacterPawn = GM.main.IS.getPawn("pc")
|
||||
var interaction:PawnInteractionBase = pawn.getInteraction()
|
||||
interaction.stopMe()
|
||||
setState("hiisi_takesover")
|
||||
|
||||
func _react(_action: String, _args):
|
||||
if _action == "cryopodtreatment":
|
||||
processTime(120*60)
|
||||
|
||||
if _action == "infirmary":
|
||||
GM.pc.setLocation("med_lobbymain")
|
||||
processTime(15*60)
|
||||
|
||||
if _action in ["sayfine", "saybetter", "sayhurt", "fightalone", "leave"]:
|
||||
processTime(3*60)
|
||||
cleanupFight()
|
||||
|
||||
if _action == "resumefight":
|
||||
continueFight()
|
||||
|
||||
if _action == "sayhurt":
|
||||
if !GM.pc.hasEffect(StatusEffect.Wounded):
|
||||
GM.pc.addPain(-35)
|
||||
GM.pc.addIntoxication(0.15)
|
||||
processTime(5*60)
|
||||
|
||||
if(_action == "endthescene"):
|
||||
endScene()
|
||||
return
|
||||
|
||||
setState(_action)
|
|
@ -90,6 +90,7 @@ func _react(_action: String, _args):
|
|||
GM.pc.addSkillExperience("Pet", 300)
|
||||
increaseModuleFlag("IssixModule", "Progression_Points")
|
||||
increaseModuleFlag("IssixModule", "PC_Training_Level")
|
||||
setModuleFlag("IssixModule", "Hiisi_Protects_PC", true)
|
||||
endScene()
|
||||
return
|
||||
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
extends SceneBase
|
||||
|
||||
const Globals = preload("res://Modules/IssixModule/Globals.gd")
|
||||
|
||||
var rng_per_day = null
|
||||
var pet_time_start = null
|
||||
var reply_litter = null
|
||||
|
@ -155,7 +157,7 @@ func _run():
|
|||
else:
|
||||
addDisabledButton("Learn", "You are already a master of Azazel's craft of sexual servitude")
|
||||
if GlobalRegistry.getCharacter("azazel").isPregnant() or GM.pc.isVisiblyPregnant():
|
||||
if GM.pc.getSkillLevel(Skill.Fertility) < 10:
|
||||
if GM.pc.getSkillLevel(Skill.Fertility) < 10 and GM.pc.hasAnyWomb():
|
||||
addDisabledButton("Learn fertility", "Learn about being harem's breeder (WIP)") # , "azazellearnfertility"
|
||||
else:
|
||||
addDisabledButton("Learn", "You already know everything about bearing children")
|
||||
|
@ -288,13 +290,39 @@ func _run():
|
|||
addDisabledButton("Learn", "There isn't anything more you can learn from Hiisi about combat")
|
||||
|
||||
addDisabledButton("Sex", "Ask for sex with Hiisi (WIP)") # , "hiisisexrequest"
|
||||
if getModuleFlag("IssixModule", "Hiisi_Protects_PC", true):
|
||||
addButton("Don't protect", "Tell Hiisi to stop protecting you in case of assault by an inmate", "hiisidontprotect")
|
||||
else:
|
||||
addButton("Protect", "Tell Hiisi to again protect you from assults of inmates", "hiisiprotect")
|
||||
addButton("Back", "Go back", "")
|
||||
|
||||
if state == "hiisidontprotect":
|
||||
saynn("[say=pc]Hey, Hiisi, could you please stop following me? I should be able to deal with inmates on my own.[/say]")
|
||||
if GM.pc.getSkillLevel(Skill.Combat) < 16:
|
||||
if getModuleFlag("IssixModule", "Trained_With_Hiisi_Combat") == null: # Low skill and never trained with Hiisi
|
||||
saynn("[say=hiisi]Are you sure? No offense, but you don't look like someone capable of defending {pc.himself}.[/say]")
|
||||
saynn("[say=pc]Yeah, I'll be fine, trust me.[/say]")
|
||||
saynn("[say=hiisi]Alright, I can do that, but please take care of yourself okey?[/say]")
|
||||
else:
|
||||
saynn("[say=hiisi]Are you sure? We did some combat training, but I'd say that you still need some more.[/say]")
|
||||
saynn("[say=pc]Yup, I'm sure I'll be fine, trust me.[/say]")
|
||||
saynn("[say=hiisi]Okey, sure. But please, be cautious, not a great place to live in.[/say]")
|
||||
else:
|
||||
saynn("[say=hiisi]Alright, if you say you are fine without my help then so be it. You do look capable if I had to say just... Please watch over yourself, okey?[/say]")
|
||||
saynn("[say=pc]Don't worry, I will![/say]")
|
||||
addButton("Finish", "End this conversation", "hiisipetmenu")
|
||||
|
||||
if state == "hiisiprotect":
|
||||
saynn("[say=pc]Hey Hiisi, I'd like you to... Umm... Help me with other inmates again...[/say]")
|
||||
saynn("[say=hiisi]Of course. Don't worry, I'll do my best, okey?[/say]")
|
||||
saynn("[say=pc]Thank you Hiisi![/say]")
|
||||
addButton("Finish", "End this conversation", "hiisipetmenu")
|
||||
|
||||
|
||||
if state == "hiisilearncombatfirst":
|
||||
playAnimation(StageScene.Yoga, "warrior", {pc="hiisi", bodyState={naked=true}})
|
||||
saynn("Figuring Hiisi might need an encouragement to teach you something, you prepare an energy drink to further convince the canine to teach you combat.")
|
||||
saynn("[say=pc]Hey Hissi, I were wondering, you seem to know how to fight, any chance you could perhaps teach me something?[/say]")
|
||||
saynn("[say=pc]Hey Hiisi, I were wondering, you seem to know how to fight, any chance you could perhaps teach me something?[/say]")
|
||||
saynn("Hiisi looks at you, surprised a little.")
|
||||
saynn("[say=hiisi]Teach? Combat... I'm not so sure, I don't think I'm a good teacher material.[/say]")
|
||||
saynn("[say=pc]I think you'd do great Hiisi.[/say]")
|
||||
|
@ -472,6 +500,16 @@ func _run():
|
|||
saynn("[say=issix]You did good today, pet. Thank you.[/say]")
|
||||
addButton("Back", "Go back", "")
|
||||
|
||||
if state == "after_sex_issix_unhappy":
|
||||
if getModuleFlag("IssixModule", "PC_Bad_Sex", 1) <= 1:
|
||||
saynn("[say=issix]That was bad. You should learn from Azazel how to do it correctly. Don't make me disappointed again.[/say]")
|
||||
addButton("Back", "Go back", "")
|
||||
else:
|
||||
saynn("[say=issix]I told you to stop disappointing me with this pathetic excuse of what you call sex. I'm going to have to make sure you do not disappoint me again.[/say]")
|
||||
addMessage("You've been assigned punishment by your Master.") # TODO
|
||||
addButton("Back", "Go back", "")
|
||||
|
||||
|
||||
if state == "readabook":
|
||||
saynn("You read one of the comic books, 20 minutes pass.") # TODO Expand on this
|
||||
addButton("Back", "Go back", "")
|
||||
|
@ -493,6 +531,9 @@ func getTimeSpentReadable():
|
|||
return "[color=red]0 minutes[/color]"
|
||||
return "[color="+("green" if isTimeOkey() else "red")+"]"+ Util.getTimeStringHumanReadable(getTimeSpent()) + "[/color]"
|
||||
|
||||
func supportsSexEngine():
|
||||
return true
|
||||
|
||||
func getSituationalMessage():
|
||||
var responses = []
|
||||
if GM.pc.isWearingHypnovisor():
|
||||
|
@ -589,6 +630,12 @@ func _react(_action: String, _args):
|
|||
GlobalRegistry.getCharacter("issix").addPain(-50)
|
||||
runScene("GenericSexScene", ["issix", "pc"], "subbysexissix")
|
||||
|
||||
if _action == "hiisidontprotect":
|
||||
setModuleFlag("IssixModule", "Hiisi_Protects_PC", false)
|
||||
|
||||
if _action == "hiisiprotect":
|
||||
setModuleFlag("IssixModule", "Hiisi_Protects_PC", true)
|
||||
|
||||
if _action == "lamiapetrequest":
|
||||
GM.pc.addPain(-10)
|
||||
GM.pc.addStamina(5)
|
||||
|
@ -724,8 +771,16 @@ func _react_scene_end(_tag, _result):
|
|||
if _tag == "subbysexissix":
|
||||
setModuleFlag("IssixModule", "Had_Sex_With_Issix", true)
|
||||
processTime(20*60)
|
||||
addIssixMood(5)
|
||||
setState("after_sex_issix")
|
||||
var issix_sex_result = _result[0].get("doms", {}).get("issix", {})
|
||||
var pc_sex_result = _result[0].get("subs", {}).get("pc", {})
|
||||
if pc_sex_result.get("isUnconscious"):
|
||||
addIssixMood(5)
|
||||
elif issix_sex_result.get("satisfaction") < 0.8:
|
||||
increaseModuleFlag("IssixModule", "PC_Bad_Sex")
|
||||
setState("after_sex_issix_unhappy")
|
||||
else:
|
||||
addIssixMood(5)
|
||||
setState("after_sex_issix")
|
||||
|
||||
|
||||
func saveData():
|
||||
|
|
Loading…
Reference in a new issue