Updated structure

This commit is contained in:
Frisk 2024-11-10 02:10:02 +01:00
parent 08b28a8dab
commit 503511f7f6
27 changed files with 3025 additions and 57 deletions

View file

@ -0,0 +1,132 @@
extends Character
# Incredibly subby and kinky creature, mostly aligns with mod's author preferences.'
func _init():
id = "azazel"
npcHasMenstrualCycle = true
npcCharacterType = CharacterType.Inmate
pickedSkin="AzazelSkin"
pickedSkinRColor=Color("ff464545")
pickedSkinGColor=Color("ff656465")
pickedSkinBColor=Color("ff72005d")
npcSkinData={
"hair": {"r": Color("ff221310"),"g": Color("ff1f1514"),"b": Color("ff28000c"),},
"horns": {"r": Color("ffa9a9a9"),"b": Color("ff606060"),},
}
npcPersonality = {
PersonalityStat.Brat: -0.9,
PersonalityStat.Mean: -1.0,
PersonalityStat.Subby: 1.0,
PersonalityStat.Impatient: 0.1,
PersonalityStat.Naive: 1.0,
PersonalityStat.Coward: 0.7,
}
npcDefaultFetishInterest = FetishInterest.Neutral
npcFetishes = {
Fetish.AnalSexReceiving : FetishInterest.Loves,
Fetish.AnalSexGiving : FetishInterest.Hates,
Fetish.VaginalSexGiving : FetishInterest.Hates,
Fetish.VaginalSexReceiving : FetishInterest.Loves,
Fetish.OralSexReceiving : FetishInterest.Likes,
Fetish.Sadism : FetishInterest.ReallyDislikes,
Fetish.Masochism : FetishInterest.Likes,
Fetish.UnconsciousSex : FetishInterest.Hates,
Fetish.Breeding : FetishInterest.Hates,
Fetish.BeingBred : FetishInterest.Loves,
Fetish.Bondage : FetishInterest.Loves,
Fetish.Rigging : FetishInterest.Likes,
Fetish.Condoms : FetishInterest.Dislikes,
Fetish.DrugUse : FetishInterest.Likes,
Fetish.Exhibitionism : FetishInterest.Loves,
Fetish.Tribadism : FetishInterest.Dislikes,
Fetish.StraponSexVaginal : FetishInterest.Dislikes,
Fetish.StraponSexAnal : FetishInterest.SlightlyDislikes,
Fetish.Choking : FetishInterest.SlightlyDislikes,
Fetish.HypnosisSubject : FetishInterest.Loves,
}
npcLustInterests = {
InterestTopic.TallyMarks: Interest.ReallyLikes,
InterestTopic.Bodywritings: Interest.ReallyLikes,
InterestTopic.Gags: Interest.Neutral,
InterestTopic.Blindfolds: Interest.KindaLikes,
InterestTopic.BDSMRestraints: Interest.Loves,
InterestTopic.ButtPlugs: Interest.Neutral,
InterestTopic.VaginalPlugs: Interest.Neutral,
InterestTopic.FeminineBody: Interest.KindaLikes,
InterestTopic.AndroBody: Interest.Loves,
InterestTopic.MasculineBody: Interest.ReallyLikes,
InterestTopic.ThickBody: Interest.Dislikes,
InterestTopic.SlimBody: Interest.Loves,
InterestTopic.BigBreasts: Interest.Hates,
InterestTopic.StuffedPussy: Interest.Likes,
InterestTopic.StuffedPussyOrAss: Interest.KindaLikes,
InterestTopic.Pregnant: Interest.Loves,
InterestTopic.StuffedThroat: Interest.ReallyLikes,
InterestTopic.CoveredInCum: Interest.ReallyLikes,
InterestTopic.CoveredInLotsOfCum: Interest.Loves,
InterestTopic.FullyNaked: Interest.Loves,
InterestTopic.ExposedPussy: Interest.Dislikes,
InterestTopic.ExposedAnus: Interest.ReallyLikes,
InterestTopic.ExposedBreasts: Interest.Hates,
InterestTopic.ExposedCock: Interest.ReallyLikes,
InterestTopic.ExposedPanties: Interest.Neutral,
InterestTopic.ExposedBra: Interest.Neutral,
InterestTopic.LooseAnus: Interest.Neutral,
InterestTopic.LoosePussy: Interest.Neutral,
InterestTopic.TightAnus: Interest.Likes,
InterestTopic.TightPussy: Interest.Likes,
InterestTopic.BigCock: Interest.Hates,
}
func interestVerbalReaction(interest):
if(interest == InterestTopic.Pregnant):
return "Oh, do you have litter in there? Cuuute, meoowwww!"
if(interest == InterestTopic.Blindfolds):
return "Purrr. How is your hearing? Can you hear me purring from over there?"
func _getName():
return "Azazel"
func getGender():
return Gender.Male
func getSmallDescription() -> String:
return "Wears an lilac uniform with number P-655. He is the embodiment of ”meek”."
func getSpecies():
return [Species.Feline]
func getThickness() -> int:
return 0
func getFemininity() -> int:
return 67
func createBodyparts():
giveBodypartUnlessSame(GlobalRegistry.createBodypart("felinehead"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("combedbackhair"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("dragonhorns"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("felineears"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthrobody"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthroarms"))
var breasts = GlobalRegistry.createBodypart("malebreasts")
breasts.size = 0
giveBodypartUnlessSame(breasts)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("vagina"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anuswomb"))
var tail = GlobalRegistry.createBodypart("felinetail")
tail.tailScale = 1
giveBodypartUnlessSame(tail)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("plantilegs"))
func onGivingBirth(_impregnatedEggCells: Array, _newkids: Array):
.onGivingBirth(_impregnatedEggCells, _newkids)
func getBirthWaitTime():
return 60*60*24*2
func getDefaultEquipment():
return ["inmatecollar", "inmateuniformSexDeviant"]

View file

@ -0,0 +1,126 @@
extends Character
# Hiisi is a relatively dominating character out of all three pets. He still has some HighSec energy in them
func _init():
id = "hiisi"
npcHasMenstrualCycle = false
npcCharacterType = CharacterType.Inmate
pickedSkin="ArconSkin"
pickedSkinRColor=Color("ffc8c2c2")
pickedSkinGColor=Color("ff423c51")
pickedSkinBColor=Color("ff767676")
npcSkinData={
"hair": {"r": Color("ffb05745"),"g": Color("ffb05745"),"b": Color("ff2288ab"),},
"penis": {"r": Color("ff4e2626"),"g": Color("ff9d2121"),"b": Color("ff991a1a"),},
}
npcPersonality = {
PersonalityStat.Brat: 0.1,
PersonalityStat.Mean: 0.4,
PersonalityStat.Subby: 1.0,
PersonalityStat.Impatient: 0.9,
PersonalityStat.Naive: -1.0,
PersonalityStat.Coward: -0.4,
}
npcDefaultFetishInterest = FetishInterest.Neutral
npcFetishes = {
Fetish.AnalSexReceiving : FetishInterest.ReallyDislikes,
Fetish.AnalSexGiving : FetishInterest.Likes,
Fetish.VaginalSexGiving : FetishInterest.Likes,
Fetish.OralSexReceiving : FetishInterest.Likes,
Fetish.OralSexGiving : FetishInterest.SlightlyDislikes,
Fetish.Sadism : FetishInterest.Likes,
Fetish.Masochism : FetishInterest.Hates,
Fetish.UnconsciousSex : FetishInterest.Likes,
Fetish.Bondage : FetishInterest.Likes,
Fetish.Rigging : FetishInterest.Likes,
Fetish.Breeding : FetishInterest.Dislikes,
Fetish.Condoms : FetishInterest.Likes,
Fetish.DrugUse : FetishInterest.SlightlyDislikes,
Fetish.Tribadism : FetishInterest.Dislikes,
Fetish.StraponSexVaginal : FetishInterest.Dislikes,
Fetish.StraponSexAnal : FetishInterest.Dislikes,
Fetish.Choking : FetishInterest.Likes,
Fetish.HypnosisSubject : FetishInterest.Hates,
Fetish.HypnosisHypnotist : FetishInterest.Loves
}
npcLustInterests = {
InterestTopic.TallyMarks: Interest.ReallyLikes,
InterestTopic.Bodywritings: Interest.KindaLikes,
InterestTopic.Gags: Interest.Loves,
InterestTopic.Blindfolds: Interest.Loves,
InterestTopic.BDSMRestraints: Interest.Loves,
InterestTopic.ButtPlugs: Interest.Dislikes,
InterestTopic.VaginalPlugs: Interest.Dislikes,
InterestTopic.FeminineBody: Interest.Likes,
InterestTopic.AndroBody: Interest.Likes,
InterestTopic.StuffedPussy: Interest.Likes,
InterestTopic.StuffedPussyOrAss: Interest.KindaLikes,
InterestTopic.StuffedThroat: Interest.Likes,
InterestTopic.CoveredInCum: Interest.Dislikes,
InterestTopic.CoveredInLotsOfCum: Interest.Dislikes,
InterestTopic.FullyNaked: Interest.Likes,
InterestTopic.ExposedPussy: Interest.ReallyLikes,
InterestTopic.ExposedAnus: Interest.ReallyLikes,
InterestTopic.ExposedBreasts: Interest.Likes,
InterestTopic.ExposedCock: Interest.KindaLikes,
InterestTopic.ExposedPanties: Interest.Likes,
InterestTopic.ExposedBra: Interest.Likes,
InterestTopic.TightAnus: Interest.Likes,
InterestTopic.TightPussy: Interest.Likes,
InterestTopic.BigCock: Interest.Hates,
}
func interestVerbalReaction(interest):
if(interest == InterestTopic.Pregnant):
return "Oh, do you have litter in there? Cuuute, meoowwww!"
if(interest == InterestTopic.Blindfolds):
return "Purrr. How is your hearing? Can you hear me purring from over there?"
func _getName():
return "Hiisi"
func getGender():
return Gender.Male
func getSmallDescription() -> String:
return "Wears an red uniform with number P-964."
func getSpecies():
return [Species.Canine]
func getThickness() -> int:
return 23
func getFemininity() -> int:
return 0
func createBodyparts():
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthrobody"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthroarms"))
var breasts = GlobalRegistry.createBodypart("malebreasts")
breasts.size = 0
giveBodypartUnlessSame(breasts)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("caninehead"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("simplehair"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("canineears3"))
var penis = GlobalRegistry.createBodypart("caninepenis")
penis.lengthCM = 10
penis.ballsScale = 1.2
giveBodypartUnlessSame(penis)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anus"))
var tail = GlobalRegistry.createBodypart("huskytail")
tail.tailScale = 1
giveBodypartUnlessSame(tail)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("digilegs"))
func onGivingBirth(_impregnatedEggCells: Array, _newkids: Array):
.onGivingBirth(_impregnatedEggCells, _newkids)
func getBirthWaitTime():
return 60*60*24*2
func getDefaultEquipment():
return ["inmatecollar", "inmateuniformHighSec"]

View file

@ -0,0 +1,135 @@
extends Character
func _init():
id = "issix"
npcHasMenstrualCycle = false
npcCharacterType = CharacterType.Inmate
pickedSkin="HardcoreSkin"
pickedSkinRColor=Color("ffca3030")
pickedSkinGColor=Color("ff720505")
pickedSkinBColor=Color("ff000000")
npcSkinData={
"head": {"skin": "CunningSkin",},
"hair": {"r": Color("ffb05745"),"g": Color("ffb05745"),"b": Color("ff2288ab"),},
"horns": {"r": Color("ffa9a9a9"),},
"penis": {"g": Color("ffff0000"),"b": Color("ff8b0000"),},
"legs": {"skin": "SplotchedSkin",},
}
npcPersonality = {
PersonalityStat.Brat: 0.5,
PersonalityStat.Mean: 1.0,
PersonalityStat.Subby: -1.0,
PersonalityStat.Impatient: 0.1,
PersonalityStat.Naive: -1.0,
PersonalityStat.Coward: -0.7,
}
npcDefaultFetishInterest = FetishInterest.Neutral
npcFetishes = {
Fetish.AnalSexReceiving : FetishInterest.ReallyDislikes,
Fetish.AnalSexGiving : FetishInterest.Hates,
Fetish.VaginalSexGiving : FetishInterest.Hates,
Fetish.VaginalSexReceiving : FetishInterest.Loves,
Fetish.OralSexReceiving : FetishInterest.Likes,
Fetish.OralSexGiving : FetishInterest.Likes,
Fetish.Sadism : FetishInterest.ReallyDislikes,
Fetish.Masochism : FetishInterest.Hates,
Fetish.UnconsciousSex : FetishInterest.Loves,
Fetish.BeingBred : FetishInterest.Dislikes,
Fetish.Bondage : FetishInterest.Likes,
Fetish.Rigging : FetishInterest.Likes,
Fetish.Condoms : FetishInterest.Dislikes,
Fetish.DrugUse : FetishInterest.Likes,
Fetish.Exhibitionism : FetishInterest.Loves,
Fetish.Tribadism : FetishInterest.SlightlyDislikes,
Fetish.StraponSexVaginal : FetishInterest.Dislikes,
Fetish.StraponSexAnal : FetishInterest.SlightlyDislikes,
Fetish.Choking : FetishInterest.SlightlyDislikes,
Fetish.HypnosisSubject : FetishInterest.Loves,
}
npcLustInterests = {
InterestTopic.TallyMarks: Interest.ReallyLikes,
InterestTopic.Bodywritings: Interest.KindaLikes,
InterestTopic.Gags: Interest.Loves,
InterestTopic.Blindfolds: Interest.Loves,
InterestTopic.BDSMRestraints: Interest.Loves,
InterestTopic.ButtPlugs: Interest.Dislikes,
InterestTopic.VaginalPlugs: Interest.Dislikes,
InterestTopic.FeminineBody: Interest.KindaLikes,
InterestTopic.AndroBody: Interest.Likes,
InterestTopic.MasculineBody: Interest.ReallyLikes,
InterestTopic.ThickBody: Interest.Dislikes,
InterestTopic.SlimBody: Interest.Likes,
InterestTopic.BigBreasts: Interest.Hates,
InterestTopic.StuffedPussy: Interest.Likes,
InterestTopic.StuffedPussyOrAss: Interest.KindaLikes,
InterestTopic.Pregnant: Interest.ReallyLikes,
InterestTopic.StuffedThroat: Interest.ReallyLikes,
InterestTopic.CoveredInCum: Interest.ReallyLikes,
InterestTopic.CoveredInLotsOfCum: Interest.Likes,
InterestTopic.FullyNaked: Interest.Loves,
InterestTopic.ExposedPussy: Interest.ReallyLikes,
InterestTopic.ExposedAnus: Interest.ReallyLikes,
InterestTopic.ExposedBreasts: Interest.ReallyLikes,
InterestTopic.ExposedCock: Interest.ReallyLikes,
InterestTopic.ExposedPanties: Interest.Hates,
InterestTopic.ExposedBra: Interest.Hates,
InterestTopic.LooseAnus: Interest.SlightlyDislikes,
InterestTopic.LoosePussy: Interest.SlightlyDislikes,
InterestTopic.TightAnus: Interest.Likes,
InterestTopic.TightPussy: Interest.Likes,
InterestTopic.BigCock: Interest.Hates,
}
func interestVerbalReaction(interest):
if(interest == InterestTopic.Pregnant):
return "You are much better fit as a common breeder"
if(interest == InterestTopic.Blindfolds):
return "Overconfident much?"
func _getName():
return "Issix"
func getGender():
return Gender.Male
func getSmallDescription() -> String:
return "Wears a red block uniform with number P-9533. He is an intimidating tall demon-dragon, has red fur."
func getSpecies():
return [Species.Dragon, Species.Demon]
func getThickness() -> int:
return 40
func getFemininity() -> int:
return 0
func createBodyparts():
giveBodypartUnlessSame(GlobalRegistry.createBodypart("dragonhead"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("combedbackhair"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("dragonears2"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("demonhorns3"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthrobody"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("buffarms"))
var breasts = GlobalRegistry.createBodypart("malebreasts")
breasts.size = 0
giveBodypartUnlessSame(breasts)
var penis = GlobalRegistry.createBodypart("dragonpenis")
penis.lengthCM = 15
penis.ballsScale = 1
giveBodypartUnlessSame(penis)
var tail = GlobalRegistry.createBodypart("demontail")
tail.tailScale = 1
giveBodypartUnlessSame(tail)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("hoofs"))
func onGivingBirth(_impregnatedEggCells: Array, _newkids: Array):
.onGivingBirth(_impregnatedEggCells, _newkids)
func getBirthWaitTime():
return 60*60*24*10
func getDefaultEquipment():
return ["inmatecollar", "inmateuniform"]

View file

@ -0,0 +1,134 @@
extends Character
func _init():
id = "lamia"
npcHasMenstrualCycle = false
npcCharacterType = CharacterType.Inmate
pickedSkin="DappledSkin"
pickedSkinRColor=Color("ffca6702")
pickedSkinGColor=Color("ffbb3e03")
pickedSkinBColor=Color("ff9b2226")
npcSkinData={
"hair": {"r": Color("ff274fb9"),"g": Color("ff243770"),"b": Color("ff3022ab"),},
"horns": {"r": Color("ff000000"),"g": Color("ff000000"),},
"penis": {"r": Color("ff2b2a2a"),"g": Color("ff373232"),"b": Color("ff8b0000"),},
"tail": {"skin": "WildSkin",},
}
npcPersonality = {
PersonalityStat.Brat: -0.9,
PersonalityStat.Mean: 0.4,
PersonalityStat.Subby: 1.0,
PersonalityStat.Impatient: 0.9,
PersonalityStat.Naive: -1.0,
PersonalityStat.Coward: -0.4,
}
npcDefaultFetishInterest = FetishInterest.Neutral
npcFetishes = {
Fetish.AnalSexReceiving : FetishInterest.ReallyDislikes,
Fetish.AnalSexGiving : FetishInterest.Hates,
Fetish.VaginalSexGiving : FetishInterest.Hates,
Fetish.OralSexReceiving : FetishInterest.Dislikes,
Fetish.OralSexGiving : FetishInterest.Dislikes,
Fetish.Sadism : FetishInterest.Hates,
Fetish.Masochism : FetishInterest.Hates,
Fetish.UnconsciousSex : FetishInterest.Hates,
Fetish.Breeding : FetishInterest.Hates,
Fetish.Bondage : FetishInterest.Dislikes,
Fetish.Rigging : FetishInterest.Dislikes,
Fetish.Condoms : FetishInterest.Dislikes,
Fetish.DrugUse : FetishInterest.Dislikes,
Fetish.Exhibitionism : FetishInterest.Dislikes,
Fetish.Tribadism : FetishInterest.SlightlyDislikes,
Fetish.StraponSexVaginal : FetishInterest.Dislikes,
Fetish.StraponSexAnal : FetishInterest.SlightlyDislikes,
Fetish.Choking : FetishInterest.SlightlyDislikes,
Fetish.HypnosisSubject : FetishInterest.Hates,
Fetish.HypnosisHypnotist : FetishInterest.Hates,
}
npcLustInterests = {
InterestTopic.TallyMarks: Interest.Dislikes,
InterestTopic.Bodywritings: Interest.Dislikes,
InterestTopic.Gags: Interest.Dislikes,
InterestTopic.Blindfolds: Interest.Dislikes,
InterestTopic.BDSMRestraints: Interest.Dislikes,
InterestTopic.ButtPlugs: Interest.Dislikes,
InterestTopic.VaginalPlugs: Interest.Dislikes,
InterestTopic.FeminineBody: Interest.KindaLikes,
InterestTopic.AndroBody: Interest.Likes,
InterestTopic.MasculineBody: Interest.ReallyLikes,
InterestTopic.ThickBody: Interest.Dislikes,
InterestTopic.SlimBody: Interest.Dislikes,
InterestTopic.BigBreasts: Interest.Hates,
InterestTopic.StuffedPussy: Interest.Dislikes,
InterestTopic.StuffedPussyOrAss: Interest.Dislikes,
InterestTopic.Pregnant: Interest.Dislikes,
InterestTopic.StuffedThroat: Interest.Dislikes,
InterestTopic.CoveredInCum: Interest.Dislikes,
InterestTopic.CoveredInLotsOfCum: Interest.Dislikes,
InterestTopic.FullyNaked: Interest.Loves,
InterestTopic.ExposedPussy: Interest.ReallyLikes,
InterestTopic.ExposedAnus: Interest.ReallyLikes,
InterestTopic.ExposedBreasts: Interest.ReallyLikes,
InterestTopic.ExposedCock: Interest.ReallyLikes,
InterestTopic.ExposedPanties: Interest.Hates,
InterestTopic.ExposedBra: Interest.Hates,
InterestTopic.LooseAnus: Interest.Dislikes,
InterestTopic.LoosePussy: Interest.Dislikes,
InterestTopic.TightAnus: Interest.Dislikes,
InterestTopic.TightPussy: Interest.Dislikes,
InterestTopic.BigCock: Interest.Hates,
}
func interestVerbalReaction(interest):
if(interest == InterestTopic.Pregnant):
return "Oh, do you have litter in there? Cuuute, meoowwww!"
if(interest == InterestTopic.Blindfolds):
return "Purrr. How is your hearing? Can you hear me purring from over there?"
func _getName():
return "Lamia"
func getGender():
return Gender.Male
func getSmallDescription() -> String:
return "Wears an orange uniform with number P-1211."
func getSpecies():
return [Species.Canine] # if in the future foxes are introduced, the character is canonically a fox
func onGivingBirth(_impregnatedEggCells: Array, _newkids: Array):
.onGivingBirth(_impregnatedEggCells, _newkids)
func getBirthWaitTime():
return 60*60*24*2
func getDefaultEquipment():
return ["inmatecollar", "inmateuniformGeneral"]
func getThickness() -> int:
return 70
func getFemininity() -> int:
return 20
func createBodyparts():
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthrobody"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anthroarms"))
var breasts = GlobalRegistry.createBodypart("malebreasts")
breasts.size = 0
giveBodypartUnlessSame(breasts)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("foxhead"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("messyhair2"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("fennecears"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("dragonhorns"))
var penis = GlobalRegistry.createBodypart("felinepenis")
penis.lengthCM = 15
penis.ballsScale = 1
giveBodypartUnlessSame(penis)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anuswomb"))
var tail = GlobalRegistry.createBodypart("foxtail")
tail.tailScale = 0.5
giveBodypartUnlessSame(tail)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("digilegs"))

View file

@ -0,0 +1,26 @@
extends EventBase
func _init():
id = "EngRoomClosetEvent"
func registerTriggers(es):
es.addTrigger(self, Trigger.EnteringRoom, "eng_corridor6")
func run(_triggerID, _args):
var quest_status = getModuleFlag("IssixModule", "Quest_Status")
if(3 > quest_status and quest_status > 0): # In the future potentially make it possible to be a daily event thing
if(GM.pc.isBlindfolded()):
if getModuleFlag("IssixModule", "Quest_Status") == 1:
addButton("Issix's Task", "Is it time?", "wall")
else:
addButton("Closet", "Time to get that thing", "wall")
elif quest_status > 2:
addDisabledButton("Closet", "This place is of no significance to you anymore")
func getPriority():
return 0
func onButton(_method, _args):
if(_method == "wall"):
runScene("EngRoomScene")

View file

@ -0,0 +1,68 @@
extends EventBase
func _init():
id = "IssixEvent"
func registerTriggers(es):
es.addTrigger(self, Trigger.EnteringRoom, "hall_ne_corner")
es.addEventCheck(self, "IssixBusy")
func run(_triggerID, _args):
#if(doEventCheck("IssixBusy") != null):
# return false
if(GM.main.isVeryLate()): # Add something in the nightime it's very late?
saynn("You see an empty chair in the corner with three blankets laying around.")
return false
if(!getModuleFlag("IssixModule", "Issix_Introduced")): # Do that if not night
saynn("You see a demon-dragon sitting on a chair in a corner, around him there are three leashed creatures.")
GM.main.setModuleFlag("IssixModule", "Score_Explored", 0) # is there a better place to do this?
GM.main.setModuleFlag("IssixModule", "Quest_Status", 0)
addButton("Demon", "Talk to the demon-dragon", "talk")
return
GM.main.applyWorldEdit("IssixWorldEdit")
if(checkCharacterBusy("IssixBusy", "Issix is not here", "Issix")):
saynn("This corner is not occupied by anyone at the momentm, just three empty blankets with a chair.")
if getModuleFlag("IssixModule", "Quest_Status") == 5:
addButton("Paper", "A piece of paper lies left in a hurry", "paper")
return
saynn("You see Issix sitting on a chair in a corner, around him there are three leashed slaves.")
addButton("Issix", "Talk to Issix", "talk")
if(!getModuleFlag("IssixModule", "Pets_Introduced")):
#addButton("Look at pets", "Look at pets", "pets")
addDisabledButton("Talk with pets", "You should probably first talk with intimidating figure who got them leashed")
else:
addButton("Pets", "Look at pets", "pets")
#if(checkCharacterBusy("RahiBusy", "Seems like the kitty is not here", "Rahi")):
# return
#
#if(getModuleFlag("RahiModule", "Rahi_NotThereToday", false)):
# saynn("Seems like the kitty is not here")
#
# addDisabledButton("Rahi", "She is not here today")
# return
#if(!getModuleFlag("RahiModule", "Rahi_Introduced")):
# saynn("You see some unknown feline sitting on a bench")
#else:
# saynn("You see the Kitty sitting on a bench")
#addButtonUnlessLate("Rahi", "Talk to the feline", "talk")
func getPriority():
return 0
func onButton(_method, _args):
if(_method == "talk"):
runScene("IssixTalkScene")
if(_method == "pets"):
runScene("PetsTalkScene")
if(_method == "paper"):
runScene("NoPetsTalkScene")
func eventCheck(_checkID, _args = []):
if(getModuleFlag("IssixModule", "Quest_Status") == 5 and getModuleFlag("IssixModule", "Quest_Wait_Another_Day") == true):
return {busy=true}

View file

@ -0,0 +1,25 @@
extends EventBase
func _init():
id = "AzazelCatnipEvent"
func registerTriggers(es):
es.addTrigger(self, Trigger.EnteringRoom, "main_green_corridor9")
func run(_triggerID, _args):
if(GM.main.getModuleFlag("IssixModule", "Azazel_Catnip_talked") and RNG.chance(30)):
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_found", true)
if(GM.main.getModuleFlag("IssixModule", "Azazel_Catnip_found")):
saynn("While staring at plethora of different plants, you recognize one in particular - white flowers and specific smell. Catnip!")
if(!GM.main.getModuleFlag("IssixModule", "Azazel_Catnip_taken_today")):
addButtonUnlessLate("Steal", "Try and steal something", "steal")
else:
addDisabledButton("Steal", "Too dangerous to do this again today")
func getPriority():
return 0
func onButton(_method, _args):
if(_method == "steal"):
runScene("GreenhouseCatnip")

View file

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

View file

@ -0,0 +1,28 @@
extends EventBase
func _init():
id = "MedicalLamiaPeekEvent"
func registerTriggers(es):
es.addTrigger(self, Trigger.EnteringRoom, "med_near_wards")
es.addEventCheck(self, "ElizaBusy")
func react(_triggerID, _args):
if(getModuleFlag("IssixModule", "Quest_Status") == 5 and getModuleFlag("IssixModule", "Quest_Wait_Another_Day") == true):
runScene("MedicalLamiaPeekScene")
return true
# I don't have any other way of preventing the player from entiering the medical room so we do some forcy scene on them, they would never see that coming!
#addButton("Investigate", "Eavesdrop on large commotion in the hospital room next to you", "main")
return false
func getPriority():
return 150
func onButton(_method, _args):
if(_method == "main"):
runScene("MedicalLamiaPeekScene")
func eventCheck(_checkID, _args = []): # sorry player, you can't heal, Eliza is occupied by Issix's pet
if(_checkID == "ElizaBusy" and getModuleFlag("IssixModule", "Quest_Status") == 5 and getModuleFlag("IssixModule", "Quest_Wait_Another_Day") == true):
return {busy=true}

View file

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

View file

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

View file

@ -0,0 +1,25 @@
extends EventBase
func _init():
id = "Ch2IssixSlaveryIntro"
func registerTriggers(es):
es.addTrigger(self, Trigger.TalkingToNPC, "issix")
func run(_triggerID, _args):
if(GM.main.getModuleFlag("IssixModule", "Quest_Status") == 7):
if GM.main.getModuleFlag("IssixModule", "Quest_Wait_Another_Day") == false:
addButton("Do it", "Ask Issix about becoming his pet", "main")
else:
addDisabledButton("Slavery", "You need to wait until tomorrow before you can ask Issix about becomin his slave")
return true
return false
func onButton(_method, _args):
if(_method == "main"):
GM.main.endCurrentScene()
runScene("IssixSlaveryIntro")
func getPriority():
return 20

View file

@ -30,6 +30,8 @@ func getProgress():
result.append("You started the questionnaire, however your answering session was abruptly interrupted by medical emergency of Lamia. Issix asked you to come other day.") result.append("You started the questionnaire, however your answering session was abruptly interrupted by medical emergency of Lamia. Issix asked you to come other day.")
if(quest_status == 5 and !quest_await): if(quest_status == 5 and !quest_await):
result.append("You started the questionnaire, however your answering session was abruptly interrupted by medical emergency of Lamia. Issix asked you to come other day, at least a day has passed so you should check up with them.") result.append("You started the questionnaire, however your answering session was abruptly interrupted by medical emergency of Lamia. Issix asked you to come other day, at least a day has passed so you should check up with them.")
if quest_status > 6 and quest_rejection == 0:
result.append("You've succeeded Issix's last trial and have gotten permission to become Issix's pet. Issix said that your introduction is the next day,")
if(quest_rejection > 1): if(quest_rejection > 1):
result.append("Issix rejected the idea of you being his pet after you failed his test.") result.append("Issix rejected the idea of you being his pet after you failed his test.")
return result return result

Binary file not shown.

Before

Width:  |  Height:  |  Size: 3.4 KiB

View file

@ -1,35 +0,0 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/pierresmap.png-ef1df5d224991e6ad95b53794453fbc6.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Modules/PierreModule/Items/pierresmap.png"
dest_files=[ "res://.import/pierresmap.png-ef1df5d224991e6ad95b53794453fbc6.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

View file

@ -11,13 +11,14 @@ func getFlags():
"Azazel_Catnip_talked": flag(FlagType.Bool), "Azazel_Catnip_talked": flag(FlagType.Bool),
"Azazel_Catnip_found": flag(FlagType.Bool), "Azazel_Catnip_found": flag(FlagType.Bool),
"Azazel_Catnip_taken_today": flag(FlagType.Bool), "Azazel_Catnip_taken_today": flag(FlagType.Bool),
"PC_Enslavement_Status": flag(FlagType.Number), "PC_Enslavement_Role": flag(FlagType.Number),
"PC_Enslavement_Noncon": flag(FlagType.Bool),
"Azazel_Affection_given": flag(FlagType.Number), "Azazel_Affection_given": flag(FlagType.Number),
"Quest_Bonked": flag(FlagType.Bool), "Quest_Bonked": flag(FlagType.Bool),
"Quest_Wait_Another_Day": flag(FlagType.Bool), "Quest_Wait_Another_Day": flag(FlagType.Bool),
"Activated_Cabinets": flag(FlagType.Dict), "Activated_Cabinets": flag(FlagType.Dict),
"Medical_Peeked": flag(FlagType.Bool), "Medical_Peeked": flag(FlagType.Bool),
"QuestionnaireQ1": flag(FlagType.Bool), "QuestionnaireQ1": flag(FlagType.Bool), # Creatures possess a soul
"QuestionnaireQ2": flag(FlagType.Bool), "QuestionnaireQ2": flag(FlagType.Bool),
"QuestionnaireQ3": flag(FlagType.Text), "QuestionnaireQ3": flag(FlagType.Text),
"QuestionnaireQ4": flag(FlagType.Bool), "QuestionnaireQ4": flag(FlagType.Bool),
@ -42,32 +43,32 @@ func _init():
author = "Frisk" author = "Frisk"
events = [ events = [
"res://Modules/IssixModule/EventTileOnEnter.gd", "res://Modules/IssixModule/Events/EngRoomClosetEvent.gd",
"res://Modules/IssixModule/GreenhouseCatnip.gd", "res://Modules/IssixModule/Events/EventTileOnEnter.gd",
"res://Modules/IssixModule/EngRoomClosetEvent.gd", "res://Modules/IssixModule/Events/GreenhouseCatnipEvent.gd",
"res://Modules/IssixModule/IssixQuestionnaireEvent.gd", "res://Modules/IssixModule/Events/IssixQuestionnaireEvent.gd",
"res://Modules/IssixModule/MedicalPeekEvent.gd", "res://Modules/IssixModule/Events/MedicalPeekEvent.gd",
"res://Modules/IssixModule/PetWalkExamEvent.gd", "res://Modules/IssixModule/Events/PetWalkExamEvent.gd",
"res://Modules/IssixModule/PlayerCellModifierEvent.gd" "res://Modules/IssixModule/Events/PlayerCellModifierEvent.gd"
] ]
scenes = [ scenes = [
"res://Modules/IssixModule/IssixTalkMain.gd", "res://Modules/IssixModule/Scenes/EngRoomScene.gd",
"res://Modules/IssixModule/GreenhouseCatnipStealScene.gd", "res://Modules/IssixModule/Scenes/GreenhouseCatnipStealScene.gd",
"res://Modules/IssixModule/PetsTalkMain.gd", "res://Modules/IssixModule/Scenes/IssixQuestionnaireScene.gd",
"res://Modules/IssixModule/EngRoomScene.gd", "res://Modules/IssixModule/Scenes/IssixTalkMain.gd",
"res://Modules/IssixModule/IssixQuestionnaireScene.gd", "res://Modules/IssixModule/Scenes/MedicalPeekScene.gd",
"res://Modules/IssixModule/NoPetsTalkMain.gd", "res://Modules/IssixModule/Scenes/NoPetsTalkMain.gd",
"res://Modules/IssixModule/MedicalPeekScene.gd", "res://Modules/IssixModule/Scenes/PetsTalkMain.gd",
"res://Modules/IssixModule/PetWalkExamScene.gd", "res://Modules/IssixModule/Scenes/PetWalkExamScene.gd",
"res://Modules/IssixModule/PlayerCellModifierScene.gd" "res://Modules/IssixModule/Scenes/PlayerCellModifierScene.gd"
] ]
characters = [ characters = [
"res://Modules/IssixModule/IssixCharacter.gd", "res://Modules/IssixModule/Characters/AzazelCharacter.gd",
"res://Modules/IssixModule/LamiaCharacter.gd", "res://Modules/IssixModule/Characters/HiisiCharacter.gd",
"res://Modules/IssixModule/HiisiCharacter.gd", "res://Modules/IssixModule/Characters/IssixCharacter.gd",
"res://Modules/IssixModule/AzazelCharacter.gd" "res://Modules/IssixModule/Characters/LamiaCharacter.gd"
] ]
worldEdits = [ worldEdits = [

51
Reputation/Slave.gd Normal file
View file

@ -0,0 +1,51 @@
extends RepStatBase
# Currently just an idea
func _init():
id = "PCSlave"
func getVisibleName():
return "Slave's Reputation"
func getMaxLevel() -> int:
return 4
func getMinLevel() -> int:
return -1
func getTextForLevel(_level:int, _rep):
if(_level <= -1):
return "Regular"
if(_level == 0):
return "Unknown"
if(_level == 1):
return "Servant"
if(_level == 2):
return "Owned slut"
if(_level == 3):
return "Slave"
if(_level == 4):
return "Someone's property"
return "FUCK TOY"
#func getSpecialRequirementToReachLevel(_level:int, _rep):
# if(_level == 3):
# return ["enslavesomeone", "Enslave anyone"]
# if(_level == 5):
# return ["makeobey", "Make any slave submit to you.. or break their mind"]
#
# return null
func getEffectsInfoForLevel(_level:int, _rep) -> Array:
if(_level <= 3):
return ["More degradation from the inmates"]
if(_level <= 5):
return [
"Less encounters with inmates, less cheating.",
]
if(_level <= 8):
return [
""
]
return [
"Easier to make friends with staff.",
]

203
Scenes/EngRoomScene.gd Normal file
View file

@ -0,0 +1,203 @@
extends SceneBase
var cabinets = {2: {"name": "2"}, 9: {"name": "9"}, 14: {"name": "14"}, 20: {"name": "20"}, 28: {"name": "28"}, 42: {"name": "|/\\"}, 51: {"name": "51"}, 69: {"name": "69"}, 84: {"name": "84"}, 87: {"name": "87"}, 90: {"name": "90"}}
var empty_loots = [
"This shelf is filled to the brim with various metallic nuts and bolts. However it has nothing of interest to you",
"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.",
"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()
var current_loot = null # TODO will not survive save/load
var current_cabinet = null
func _init():
sceneID = "EngRoomScene"
func _run():
if(state == ""):
saynn("You hesitate, last time you walked this hallway you are sure that in this part the only thing you'll meet, if you continue walking, is a wall. This entire thing sounds dumb, and yet... It's a trust excercie, no? Realistically the worst thing that will happen is that you'll eventually hit a wall, doesn't sound like something you can't take.")
if GM.main.isVeryLate():
addButton("Wall time", "Trust Issix and walk towards the wall", "nightwallwalking")
else:
addButton("Wall time", "Trust Issix and walk towards the wall", "trust")
addButton("Nope", "You are not trusting Issix, this is stupid", "endthescene")
if(state == "nightwallwalking"):
GM.main.setModuleFlag("IssixModule", "Quest_Bonked", true)
processTime(1*60)
saynn("You decide to trust Issix. You turn 90 degrees, take a deep breath and walk forward. Last time you went this corridor while not blind there was a wall here, an maybe this time...")
saynn("Four confidence in Issix is rewarded with a loud bang on the wall. While your feet were the first to hit the wall, your head followed and... You hit the wall like a fool. Why would it work anyways, it's a solid wall.")
var damage_taken = GM.pc.receiveDamage(DamageType.Physical, 40, 1.0)
saynn("You took "+str(damage_taken)+" damage.")
addButton("Leave", "Leave embarassed before you give someone a reason to laugh at you", "endthescene")
if(state == "trust"):
aimCameraAndSetLocName("eng_closet")
GM.pc.setLocation("eng_closet")
GM.main.setModuleFlag("IssixModule", "Quest_Status", 2)
saynn("You decide to trust Issix. You turn 90 degrees, take a deep breath and walk forward. Last time you went this corridor while not blind there was a wall here, an maybe this time...")
saynn("You hear a beep before you, a few screeching sounds. Holy shit, perhaps Issix was onto something here? You continue walking, the atmosphere changes, the echo of your steps disappeared, the air is more dry and you start to feel claustrophobic. You cautiously drag your foot forward until it hits something seemingly metal. Have you reached your destination?")
processTime(2*60)
var item: ItemBase = GM.pc.getInventory().getEquippedItem(InventorySlot.Eyes)
if(item != null):
var restraint = item.getRestraintData()
if(restraint != null):
if (restraint.canStruggleFinal() and GM.pc.getStamina() > 0) or GM.pc.getInventory().hasItem("restraintkey"):
addButton("Struggle", "It would be useful to see what is going on around", "strugglemenu")
else:
addDisabledButton("Struggle", "Your "+item.getVisibleName() + " is stuck on your eyes")
else:
addButton("Look around", "Look around", "lookaround")
else:
addButton("Look around", "Look around", "lookaround")
addButton("Leave", "Try to leave the room", "leave")
if state=="leave":
if(GM.pc.isBlindfolded()):
if(GM.pc.hasBlockedHands()):
saynn("You attempt to retrace your setps back where you came from, however it seems like whatever you went through has closed. It's hard to judge how can you even open the doors. After a while of trying, you blast the doors with a serios of forceful pushes, it does not budge.")
processTime(7*60)
else:
saynn("You attempt to retrace your setps back where you came from, however it seems like whatever you went through has closed. Thankfully, it seems like from this end there is a very analog door handle that pulling seems to lead back to the hallway. Or at least you judge that from the sounds.")
processTime(4*60)
else:
processTime(2*60)
saynn("Thankfully, the doors have a regular old-school door handle. You pull it and they swing open.")
saynn("On the other side - curiously, completely flat wall texture. You close the doors and observe how this fit of engineering doors leading to ancient technology closet fits the wall so perfectly that it leaves no evidence of ever existing, not even a tiny crevice can be seen. Above the doors is a camera, maybe it opens the doors?")
aimCameraAndSetLocName("eng_corridor6")
GM.pc.setLocation("eng_corridor6")
addButton("Issix", "Guess it's time to go back to Issix", "endthescene")
if state=="lookaround":
saynn(GM.world.getRoomByID("eng_closet").getDescription())
addButton("Cabinets", "Try to search cabinets", "cabinets")
addButton("Leave", "Try to leave the room", "leave")
if state=="cabinets":
saynn("Within so many filling cabinets there are over 12 shelves. You could open some of them and see what's in them, however only one of them is really interesting to you.") # TODO placeholder
addButton("Back", "Look around again", "lookaround")
var activated_cabinets = getModuleFlag("IssixModule", "Activated_Cabinets", {})
for item in cabinets:
if item in activated_cabinets:
addDisabledButton("Cabinet "+cabinets[item]["name"], "You've already looted this cabinet")
else:
if item == 84 and GM.main.getModuleFlag("IssixModule", "Quest_Status") == 2:
addButton("Cabinet " + cabinets[item]["name"], "Check the cabinet with number "+cabinets[item]["name"], "cabinet84", [item])
else:
addButton("Cabinet " + cabinets[item]["name"], "Check the cabinet with number "+cabinets[item]["name"], "cabinetloot", [item])
if state=="cabinetloot":
saynn("You chose to open cabinet number "+str(current_cabinet)+"...")
processTime(1*60)
if(typeof(current_loot) == TYPE_NIL): # event
markCabinetAsActivated(current_cabinet)
elif(typeof(current_loot) == TYPE_STRING): #nothing
saynn(current_loot)
markCabinetAsActivated(current_cabinet)
else: #item
saynn("Inside you've found "+str(current_loot.getAmount())+" of "+ current_loot.getVisibleName() +".")
addButton("Take items", "Take the items", "acceptloot")
addButton("Cabinets", "Look at cabinets without picking up anything", "cabinets")
if state=="cabinet84":
processTime(1*60)
saynn("It is the cabinet mentioned by Issix. You reach your paw inside and there is a single item inside - a pack of gumball. You grab and take it.")
GM.main.setModuleFlag("IssixModule", "Quest_Status", 3)
markCabinetAsActivated(84)
addButton("Back", "Look at cabinets", "cabinets")
if state=="cabinetevent1":
processTime(10*60)
saynn("You chose to open cabinet number "+str(current_cabinet)+"...")
var fluidType = RNG.pick(["Cum", "GirlCum", "Milk"])
saynn("The shelf is located a little higher than your head, since there isn't anything in the closet that you could stand on, your plan is to simply open the shelf and try to feel with your paw if there is anything there. You regret that decision the moment you open the shelf. Entire shelf is filled to brim with a kind of cold slimy fluid that spills on you the moment you open it.\n\nYou've been covered in "+fluidType.to_lower()+".")
GM.pc.coverBodyWithFluid(fluidType, 800.0)
if state=="cabinetevent2":
processTime(3*60)
saynn("You chose to open cabinet number "+str(current_cabinet)+"...")
saynn("The shelf is located a little higher than your head, since there isn't anything in the closet that you could stand on, your plan is to simply open the shelf and try to feel with your paw if there is anything there.\n\nYou pull the shelf and it falls on you!")
if (RNG.randf_range(0, 1) < GM.pc.getDodgeChance()+0.1): # Got protected from the fall, base 10% + whatever player dodge chance has
saynn("You were able to avoid the falling shelf with your quick reflexes. Phew. You push the shelf back where it came from.")
else:
var damage_taken: int = 0
if GM.pc.hasHorns(): # I were curious, so I asked search engine about this, have some cool sciency read code reader masochist! https://bioengineering.hyperbook.mcgill.ca/mechanical-analysis-of-animal-horns/
damage_taken = GM.pc.receiveDamage(DamageType.Physical, 40, 1.0)
else:
damage_taken = GM.pc.receiveDamage(DamageType.Physical, 60, 1.0)
saynn("You were unable to react in time and heavy shelf fell on your head ouch.\n" + ("Seems like your horns helped you with taking a hit from the above to some degree.\n" if GM.pc.hasHorns() else "") + "\nYou took "+str(damage_taken)+" damage.")
if state=="cabinetevent3":
processTime(3*60)
saynn("You chose to open cabinet number "+str(current_cabinet)+"...")
var lust_taken = RNG.randi_range(20, 50)
GM.pc.addLust(lust_taken)
saynn("A red mist surrounds you as the dust from the shelf spills out with the force of your pull.\n\nYou gain "+ str(lust_taken)+" lust.")
func randomItemFromSeed(array):
return array[cabinet_random.randi() % array.size()]
func randomNumberFromSeed(numStart, numEnd):
cabinet_random.randi_range(numStart, numEnd)
func generateLoot(cabinet_number: int):
cabinet_random.seed = GM.main.getDays() + cabinet_number * 1000
var rand_num = cabinet_random.randf() * 100
if (rand_num < 16): # item
var item_type = randomItemFromSeed(["PlantEgg", "Cookie", "lube", "PlasticBottle", "restraintkey", "WorkCredit", "UsedCondom"])
var newItem = GlobalRegistry.createItem(item_type)
if item_type == "PlantEgg":
newItem.whoGaveBirth = "thisnamedoesntexistbecauseplayercantpossiblyknowwhoseggsthoseare"
newItem.setAmount(randomNumberFromSeed(2, 3))
elif item_type == "cookie":
newItem.setAmount(randomNumberFromSeed(2, 3))
elif item_type == "Credit":
newItem.setAmount(randomNumberFromSeed(3, 5))
elif item_type == "UsedCondom":
newItem.markLastUser("unknown person")
newItem.generateFluids()
var fluids = newItem.getFluids()
var allowedFluids = ["CumLube", "BlackGoo"]
if OPTIONS.isContentEnabled(ContentType.Watersports):
allowedFluids.append("Piss")
fluids.addFluid(randomItemFromSeed(allowedFluids), randomNumberFromSeed(2, 5)*100.0)
return newItem
elif (rand_num < 21): # TODO event
markCabinetAsActivated(cabinet_number)
return RNG.randi_range(1,3)
else:
return randomItemFromSeed(empty_loots)
func markCabinetAsActivated(cabinetNumber:int):
var activated_cabinets = getModuleFlag("IssixModule", "Activated_Cabinets", {})
activated_cabinets[cabinetNumber] = true
GM.main.setModuleFlag("IssixModule", "Activated_Cabinets", activated_cabinets)
func _react(_action: String, _args):
if(_action == "endthescene"):
endScene()
return
if(_action == "cabinetloot"):
if getModuleFlag("IssixModule", "Activated_Cabinets", {}).size() > 10:
# TODO Do a force encounter with an engineer
pass
current_loot = generateLoot(_args[0])
current_cabinet = _args[0]
if typeof(current_loot) == TYPE_INT:
_action = "cabinetevent"+str(current_loot)
if(_action == "acceptloot"):
markCabinetAsActivated(current_cabinet)
GM.pc.getInventory().addItem(current_loot)
_action = "cabinets"
if(_action == "strugglemenu"):
runScene("StrugglingScene")
return
setState(_action)

View file

@ -0,0 +1,49 @@
extends SceneBase
func _init():
sceneID = "GreenhouseCatnip"
func _run():
if(state == ""):
saynn("You approach the greenhouses, each one looks like a huge long tent with lots of artificial lights inside. You have to sneak around cause at any moment you can spotted by some guard.")
saynn("This specific station seems to be growing quite a variety of herbs, most of which are unknown to you.")
saynn("You spotted that the doors to the greenhouse have been left opened. Right behind them you see a familiar plant - catnip.")
saynn("What do you wanna do?")
addButton("Take catnip", "Sneak in, grab one and get out", "catnip")
addButton("Don't steal", "Too dangerous", "endthescene")
if(state == "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")
func _react(_action: String, _args):
if(_action == "catnip"):
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_taken_today", true)
GM.pc.getInventory().addItem(GlobalRegistry.createItem("CatnipPlant"))
addMessage("You stole catnip plant.")
if(_action == "caughtcheck"):
processTime(10 * 5)
if(RNG.chance(25)):
if(GM.ES.triggerReact(Trigger.CaughtStealingInGreenhouse)):
endScene()
return
addMessage("Seems like you got away safely")
addButton("Leave", "Leve the crime scene", "endthescene")
return
if(_action == "endthescene"):
endScene()
return
setState(_action)
# The amount of times I wrote "catnap" instead of "catnip" is insane. Thanks that one horror game franchise.

View file

@ -0,0 +1,536 @@
extends SceneBase
var answer = null
var strikes = 0
func _init():
sceneID = "IssixQuestionnaire"
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]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")
addButton("Later", "Maybe do this later, it looks like it is gonna take a while...", "endthescene")
else:
saynn("[say=pc]Could we continue the quiz?[/say]")
saynn("Issix looks at you confused for a second.")
saynn("[say=issix]Ohhhh, the quiz, right. Sorry, I've had... A rough night, sit down, the chair is still there.[/say]")
addButton("Lamia", "Ask about Lamia", "lamiaquestion")
addButton("Start", "Start the questionnaire", "q4")
addButton("Later", "Maybe do this later, it looks like it is gonna take a while...", "endthescene")
if(state == "q1"):
processTime(2*60)
saynn("You hit giant Start button. Screen flashes for split of a second in Silver color. You feel intense gaze of Issix studying your face as you read the first question.")
saynn("„Do you believe creatures possess a soul?”")
saynn("This question lingers in for you a second, but your ultimate answer is...")
addButton("Yes", "Yes, you do believe souls exist", "q1yes", [true])
addButton("No", "You don't believe in existance of souls", "q1no", [false])
if(state == "q1yes"):
saynn("[say=pc]I do believe creatures possess a soul, yeah.[/say]")
saynn("You look at Issix to see his reaction.")
saynn("[say=issix]Interesting, what do you think happens with it after a creature dies?[/say]")
addButton("Disappears", "The soul disappears when the body dies", "q2")
addButton("Moves", "The soul goes to heaven/hell/purgatory/other kind of place", "q2")
addButton("Reincarnates", "The soul reincarnates as different creature", "q2")
if(state == "q1no"):
saynn("[say=pc]I don't believe that souls exist honestly, when we die - we die, there is no reason to be sentimental and add on some kind of feel good concept onto the death.[/say]")
saynn("[say=issix]Bold. Death is scary to many, but is soul really just a concept giving us closure to idea of living? Hmm. Anyways, lets move on.[/say]")
addButton("Next question", "Moving on", "q2")
if(state == "q2"):
saynn("Looking back at tablet's screen, next question pops up.")
saynn("„Do you consider yourself loyal?”")
saynn("Not an unexpected question for this quiz.")
addButton("Yes", "I do consider myself loyal", "q2yes", [true])
addButton("No", "I don't consider myself loyal", "q2no", [false])
if(state == "q2yes"):
var protectedTavi = getModuleFlag("TaviModule", "Ch3ProtectedTavi")
var onlyTaviPunished = getModuleFlag("TaviModule", "Ch5OnlyTaviPunished")
if(protectedTavi == null and onlyTaviPunished == true):
saynn("Issix chuckes as you said yes")
saynn("[say=issix]I see. I see.[/say]")
elif(protectedTavi == true and onlyTaviPunished == false):
saynn("Issix gives you a warm smile as you said that. One that makes you feel particularly good about this answer.")
saynn("[say=issix]I see. Loyal pets are a rarity.[/say]")
elif(protectedTavi == null and onlyTaviPunished == false):
saynn("Issix gives you a smile as you said that.")
saynn("[say=issix]Good to know.[/say]")
else:
saynn("Issix gives you a smile as you said that.")
saynn("[say=issix]I like loyal pets.[/say]")
saynn("[say=issix]Anyways, lets proceed with the next one.[/say]")
addButton("Next question", "Moving on", "q3")
if(state == "q2no"):
var protectedTavi = getModuleFlag("TaviModule", "Ch3ProtectedTavi")
var onlyTaviPunished = getModuleFlag("TaviModule", "Ch5OnlyTaviPunished")
if(protectedTavi == null and onlyTaviPunished == true):
saynn("You look at Issix, he doesn't seem to be surprised by your answer, his face is still.")
saynn("[say=issix]Alright.[/say]")
elif(protectedTavi == true and onlyTaviPunished == false):
saynn("Issix gives you a smile as you said that, he seems surprised.")
saynn("[say=issix]Hmm, that's interesting. I wonder, are you being humble or... Anyways, let's move on.[/say]")
elif(protectedTavi == null and onlyTaviPunished == false):
saynn("Issix looks at you with curiosity.")
saynn("[say=issix]Funny.[/say]")
else:
saynn("Issix considers you for a moment.")
saynn("[say=issix]Okey then, I suppose we can move on.[/say]")
addButton("Next!", "Another one", "q3")
if(state == "q3"):
processTime(2*60)
saynn("You look back at your tablet. You stare it for good 10 seconds, but no new question comes up. You start wondering if something is wrong or...")
saynn("[say=issix]Give me that for a second.[/say]")
saynn("He takes the tablet from your paws and holds it. He then shakes it in all directions as if it was a snow globe toy, hitting it a few times on the floor for a good measure. After a solid minute of this treatment the tablet flashes with Lilac color for a second and displays the next question.")
saynn("[say=issix]Here you go. Technology is sometimes stubborn, you'd think that violence is never an option, but for electronics? Those things fear you. Givving them a good whack sometimes helps them come to their senses.[/say]")
saynn("He laughs, while passing the tablet back to you. Next questions says...")
saynn("„What body part of yours do you consider most desirable?”")
saynn("[say=issix]By that I mean, which one of them you find the most essential to your identity... I guess...[/say]")
var body_parts = GM.pc.getBodyparts()
for bp in body_parts:
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])
if(state == "q3answer"):
processTime(5*60)
GM.main.setModuleFlag("IssixModule", "Quest_Status", 5)
GM.main.setModuleFlag("IssixModule", "Quest_Wait_Another_Day", true)
saynn("[say=issix]Fascinating![/say]")
saynn("He notes, presumably your answer, then he looks at the time.")
saynn("[say=issix]Wow, we are so quick with those![/say]")
saynn("[say=issix]Perhaps you'd like some wat-[/say]")
saynn("[say=azazel]Master, master![/say]")
saynn("You can hear sense of urgency in Azazel's voice.")
saynn("[say=issix]Yes, pet? What happened?[/say]")
saynn("[say=azazel]Lamia, they... I think they...[/say]")
saynn("Everyone immediately starts looking at Lamia. The fox is curled up, their head hidden under all of their fluff, they are visibly shaking.\nIssix jumps out of the chair, it falling on its back and making a lot of noise. He kneels next to Lamia and puts his paw gently under their head to see their face. Lamia is in tears, it's difficult to look at him at this state.")
saynn("[say=issix]Lamia, please, show.[/say]")
saynn("He grabs a pen and hands it to Lamia. Lamia with great struggle takes the pen and scribbles something on piece of paper, you can't see it, it's behind Issix's body. Issix looks at the piece of paper and as he realizes what Lamia drew he shouts")
saynn("[say=issix]Pets, with me. To medical, now.[/say]")
saynn("He grabs Lamia on his muscular hands and holds them in front. Fox is still curled up. It looks as if he is holding a large furry donut, but without a hole.")
saynn("[say=issix]"+GM.pc.getName() + ", we will finish the questionnaire later. Azazel, Hiisi, with me.[/say]")
saynn("You haven't heard his tone being so serious... Ever. Two pets followed their master, still leashed, him holding the other ends in his paw while almost running towards the elevator.\nIt's interesting how he always takes all of his pets with him wherever he goes. This situation looked really urgent, makes you wonder what had happened. but you guess there is no point in standing here.")
addButton("Leave", "That would be it for today, you guess", "endthescene")
if(state == "lamiaquestion"):
saynn("[say=pc]Uhh, are you okey? Is Lamia okey? They didn't look great yesterday.[/say]")
saynn("Issix sighs")
saynn("[say=issix]Thank you for asking, pet. I'm fine, Lamia is... Well, let's just say it isn't the first time it happens, it's really due to my own negligence. But they are fine for now.[/say]")
saynn("[say=pc]I see[/say]")
saynn("Doesn't seem like Issix is willing to elaborate on this one.")
addButton("Start", "Start the questionnaire", "q4")
addButton("Later", "Maybe do this later, it looks like it is gonna take a while...", "endthescene")
if(state == "q4"):
saynn("Issix taps the sceen of the tablet a few times and passes to you. Screen already shows the 4th question. Issix looks at your face again, though not with same intensity as the last time, yesterday's event made him feel really out of it. His eyes are reddened and there are visible bags under them, lack of sleep? Maybe?")
saynn("[say=issix]Let's start[/say]")
saynn("The question says: „Can you bear children?”")
if(GM.pc.isVisiblyPregnant()):
saynn("[say=issix]Uhhh... You know what, let's skip this question, I think we know the answer already.[/say]")
addButton("Skip", "There is no way to hide your pregnancy, Issix already knows the answer", "q4answer", [true])
else:
saynn("[say=issix]I need to know everything about my pets, and you know, this really helps.[/say]")
if(GM.pc.hasAnyWomb() and GM.pc.hasPerk(Perk.StartInfertile) == false):
addButton("Yes", "Yes, you can bear children", "q4answer", [true])
addButton("No (lie)", "No, you can't bear children", "q4answer", [false])
else:
addButton("Yes (lie)", "Yes, you can bear children", "q4answer", [true])
addButton("No", "No, you can't bear children", "q4answer", [false])
if(state == "q5"):
saynn("Screen flashes for a second, Aqua color fills the screen. Next question says: „What sexual activity are you interested in the most?”")
saynn("[say=issix]Just to clerify - all of those assume you take the submissive role.[/say]")
addButton("Anal", "Anal sex interests you the most", "q5answer", ['anal'])
if(OPTIONS.isContentEnabled(ContentType.Watersports)):
addButton("Watersports", "Say you are interested in piss", "q5answer", ['watersports'])
addButton("Oral", "Oral sex interests you the most", "q5answer", ['oral'])
addButton("Bondage", "Bondage interests you the most", "q5answer", ['bondage'])
addButton("Masochism", "Masochism interests you the most", "q5answer", ['masochism'])
addButton("Breeding", "Breeding excites you the most", "q5answer", ['breeding'])
if(state == "q5answer"):
saynn("Issix looks at you for a while, as if lost in thought, finally he livens up and notes your answer.")
saynn("[say=issix]Anyways, lets move on. Next question.[/say]")
addButton("Another one", "Move onto question number 6", "q6")
if(state == "q6"):
processTime(2*60)
saynn("Another question shows up on your screen")
saynn("„Do you own any slaves of your own?”")
addButton("Yes", "You do have slaves", "q6answer", [true])
addButton("No", "I do not have slaves", "q6answer", [false])
if(state == "q7"):
if(GM.main.getPCSlaveAmount() > 0 or getModuleFlag("RahiModule", "rahiMile7Enslaved") or getModuleFlag("JackiModule", "Jacki_ch2GotEnslaved")) and answer == false:
saynn("Issix looks at you with surprise.")
saynn("[say=issix]Noted. Lets get to next question.[/say]")
else:
saynn("[say=issix]Noted. Ooonntooo the neext onnne![/say]")
saynn("Issix says that with excitement as if he was singing.")
saynn("Screen blinks in Violet color and another questions shows up.\n\n„Do you believe more in teaching by reward or by punishment?”")
saynn("Issix looks oddly excited about this question, judging by movement of his tail.")
saynn("[say=issix]There are two schools of thought here, I'm simply wondering what do you think about this dillema.[/say]")
addButton("Reward", "You believe in superiority of rewards in education", "q7answer", [true])
addButton("Punishment", "You believe in punishment as being better motivational drive than rewards", "q7answer", [false])
if(state == "q8"):
processTime(2*60)
if answer == true:
saynn("Issix claps his paws, so suddently that it spooked you a little bit. He seems happy.")
saynn("[say=issix]Apologies, I just... Got carried away.[/say]")
else:
saynn("Issix smiles.")
saynn("[say=issix]Respectable response. You aren't the only one thinking this way, considering you found yourself in place like this.[/say]")
saynn("[say=issix]No time to waste, we are drawing near the end now.[/say]")
saynn("Screen of the tablet flashes, in Evergreen color this time, and a new question appears.")
saynn("„What species do you find most attractive?”")
var species = GlobalRegistry.getAllPlayableSpecies()
for species_id in species:
addButton(species[species_id].getVisibleName()+"s", "I find "+species[species_id].getVisibleName()+"s to be most attractive", "q8answer", [str(species_id)])
if(state == "q9"):
if(answer in ['demon', 'dragon']):
saynn("Issix laugs")
saynn("[say=issix]I hope my body had no effect on that answer[/say]")
saynn("Issix notes the answer, he puts his own tablet on the floor as he picks up a glass of water to drink")
saynn("[say=issix]How do you feel about your answers so far? I hope you are honest with those, you know.[/say]")
saynn("He puts the glass back on its earlier position, taps his tablet and you get the next question.")
if(getModuleFlag("IssixModule", "QuestionnaireQ4") == true):
saynn("„Your Master asks you to have his child. What do you do?”")
else:
saynn("„Your Master asks you to have his child (after first making you able to conceive one). What do you do?”")
addButton("Refuse", "You aren't willing to bear your Master's child", "q9answer", [false])
addButton("Accept", "You would agree to bear your Master's child", "q9answer", [true])
if(state == "q10"):
processTime(2*60)
saynn("There is no reaction coming from Issix on your answer. He gestures you to go on. A new question appears.")
saynn("„How do parasites make you feel?”")
addButton("Disgusted", "Parasites are disgusting", "q10answer", [1])
addButton("Scared", "They fill you with fear", "q10answer", [2])
addButton("Neutral", "They are creatures, the only thing that makes them parasites is the way they obtain their food", "q10answer", [3])
addButton("Horny", "You like parasites... In very specific way", "q10answer", [4])
if(state == "q10answer"):
if(answer < 3):
saynn("It feels as if he is trying to compose his body language to hide something. That or your answer didn't have much of effect on him. He notes your answer.")
saynn("[say=issix]That's indeed how pretty much everyone reacts, not surprising.[/say]")
if(answer == 3):
saynn("He gives you a curious look, perhaps a grin.")
saynn("[say=issix]That's most curious, a very... Scientific response. Cold, non-emotional observation. Most creatures writhe on mention of a parasite, not you.[/say]")
else:
saynn("For some reason this answer lifted his spirit.")
saynn("[say=issix]You are one kinky creature, you know that? I really like your boldness in this response, you are either very naive or sex worms have eaten your brain.[/say]")
saynn("He laugs.")
saynn("[say=issix]We are at the end, last question.[/say]")
saynn("„What do you think about AlphaCorp?” the screen displays.")
addButton("Good", "AlphaCorp is doing good work, better than anyone else in this part of the galaxy", "q11answer", true)
addButton("Neutral", "You either have no opinion or feel entirely neutral about AlphaCorp", "q11answer")
addButton("Bad", "Your typical corrupt corporation, you dislike/hate it", "q11answer", false)
if(state == "q11answer"):
saynn("He writes notes your last answer.")
saynn("[say=issix]And we are done! Wasn't so bad, was it? Just 11 questions.\nI have to admit something to you, I lied. This test had wrong answers. Making a pet out of someone requires a lot, and I want my pets to be loyal as well as trustworthy. Of course there are more things than just those, but I needed you to feel safe while writing this test to make sure you give it your best shot as well as don't have reasons to lie to me.[/say]")
saynn("[say=issix]I'll now discuss those questions and your answers with you. Are you ready? Good.[/say]")
saynn("[say=issix]As your first question I've asked you if you believe creatures posses a soul. You answered "+("yes" if getModuleFlag("IssixModule", "QuestionnaireQ1") else "no")+".[/say]")
saynn("[say=issix]The nature of souls is a very interesting one, how do you even define a soul? It may mean different things for each one of us. For me, a soul is your essence - a thing that makes you - you, so yes, I do think that souls do exist. Once you lose your soul you... Stop being yourself, or at least true to yourself, you become mallable by something or someone else. The choices your body makes aren't really made by someone in specific, they are impulses of the body or extensions of someone else's will and nothing more...[/say]") # ;)
saynn("He thinks for a moment")
saynn("[say=issix]That said, maybe at the end of the day, when soul leaves the body, it can still be itself... Somewhere else, better...[/say]")
saynn("He coughs")
saynn("[say=issix]Anyways, this question was entirely for your own consideration, there is truthfully no right or wrong answer in here. Let's discuss question number two.[/say]")
addButton("Summary", "", "summary2")
if(state == "summary2"):
processTime(3*60)
var protectedTavi = getModuleFlag("TaviModule", "Ch3ProtectedTavi")
var onlyTaviPunished = getModuleFlag("TaviModule", "Ch5OnlyTaviPunished")
saynn("[say=issix]Your next question was about loyality. It's a very important quality that I'm looking for in a pet. Perhaps not the reckless and completely maniacal type of loyality, but a loyality nonetheless.[/say]")
if getModuleFlag("IssixModule", "QuestionnaireQ2"):
saynn("[say=issix]You have answered that you consider yourself loyal.[/say]")
if(protectedTavi == null and onlyTaviPunished == true): # Total lack of loyality
strikes += 1
saynn("[say=issix]You see, sadly, I don't believe you are entirely honest with me, or yourself. Whenever something happens in this prison - rumors spread, people talk. Guards are surprisingly chatty with inmates.\nAnd what rumors - very trustworthy ones, mind you, say - is that you've abandoned your partner in crime twice. I'm sorry, but this is troubling answer. Not only you weren't loyal, but also you are not being truthful with yourself AND me. I don't tolerate this in my pets.[/say]")
saynn("Issix likely has in mind Tavi, you want to correct Issix about this, and how you made the right decisions but the moment you breathe air to start talking his look clearly says he doesn't want you to defend yourself. You comply.")
elif(protectedTavi == true and onlyTaviPunished == false): # Total loyality
saynn("[say=issix]This is further confirmed by what rumors I've heard about you. You stuck with your partner in crime to the very end - commendable behavior. My pets don't have to make many difficult decisions, but it's important they are honest both with me and also themselves when making them. And if they are disloyal, I can hardly call myself their master. I think you were honest and dependable with your answer. Good job, pet.[/say]")
saynn("Your body feels incredibly good after those words by Issix, you feel rewarded for your honesty and loyality.")
else:
saynn("[say=issix]I can't say for sure whether you were being honest or not with me. But loyality is incredibly important quality of a pet, and the fact you consider yourself loyal makes me happy.[/say]")
else:
saynn("[say=issix]You have answered that you don't consider yourself loyal.[/say]")
if(protectedTavi == null and onlyTaviPunished == true): # Total lack of loyality
saynn("[say=issix]Ehh, you are giving me a really hard time in here, you know? I've heard of your adventures with certain other inmate from the prison - people talk in here, a lot. And reports confim that you weren't exactly the most loyal when your partner in crime needed you the most. But you also said that you don't consider yourself loyal, making your answer a honest one - something I can respect. You seem to be true to yourself, maybe a little lost. I think we can overlook this and just work on your loyality as we go.[/say]")
saynn("Issix likely has in mind Tavi, it's surprising he still gives you a chance even though he is aware how you basically let Tavi take all the blame for the failure - especially considering how much she went through after you got captured.")
elif(protectedTavi == true and onlyTaviPunished == false): # Total loyality
saynn("[say=issix]Hmm, your answer baffles me, pet. Rumors I've heard described your actions as heroic and loyal to your partner in crime, when they needed you the most, not minding the consequences. And yet, you say you are not loyal? I can't tell, whether you are not honest with yourself, too humble or something else, but either way, I hope we can work on it as we go on.[/say]")
else:
saynn("[say=issix]I can't say for sure whether you were being honest or not with me. But loyality is incredibly important quality of a pet, it's a pity you don't consider yourself loyal. But regardless, this is something we can work on, don't worry.[/say]")
saynn("[say=issix]Second question done, just 9 more to go.[/say]")
addButton("Continue", "", "summary3")
if(state == "summary3"):
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]")
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")
var was_pregnant = GM.CS.getChildrenAmountOfOnlyMother("pc")
saynn("[say=issix]Next, you answered that you "+("can become pregnant with a child" if answer else "cannot become pregnant with a child")+".[/say]")
if answer == false and was_pregnant == true:
saynn("[say=issix]Hmm, interesting. I'm aware of you having a child in the past in this very prison, did something happen in the meantime?[/say]")
if(GM.pc.hasAnyWomb() and GM.pc.hasPerk(Perk.StartInfertile) == false):
addButton("Infertile", "Say you are no longer able to have offspring", "summary3lie")
addButton("Fertile", "Say you are fertile and can have master's baby", "summary3truth")
else:
addButton("Infertile", "Say you are no longer able to have offspring", "summary3truth")
addButton("Fertile", "Say you are fertile and can have master's baby", "summary3lie")
return
else:
if answer == false and was_pregnant == false:
if wants_to:
saynn("[say=issix]But even though you cannot have a child you'd still be willing to let Master impregnate you. That's very good of you, perhaps this is something you've always wanted to do - be a good parent for child you brought to the world. But let me tell you outright - I'm not forcing my pets to bear my children. It's everyone's decision and it would be up to you to make. Azazel is proud „mother” of many of my children, he loves having my litter.[/say]")
else:
saynn("[say=issix]You've also mentioned you are not willing to have your Master's children - that's entirely fair, I'm not one to force anyone in this specific matter. I already have Azazel as my litter bearer and this is entirely enough for me.[/say]")
elif answer == true and wants_to:
saynn("[say=issix]I'm always happy to have another breeding bitch as my pet. You and Azazel will look very cute with your pregnant bellies, can't wait for that.[/say]")
else:
saynn("[say=issix]I have to say, I'm a little saddened to hear that while you can bear children, you are not willing to bear your Master's. I could use another breeding bitch, but it's your choice and I'm going to honor that.[/say]")
addButton("Continue", "", "summary4")
if state == "summary3lie":
strikes += 1
if GM.pc.hasAnyWomb() and GM.pc.hasPerk(Perk.StartInfertile) == false:
if getModuleFlag("IssixModule", "QuestionnaireQ9"):
# Lied twice about not being able to have offspring but says they want to have Master's child after making it possible, Issix knows it was a lie
saynn("[say=issix]I see. And you are saying you'd be okey with having your Master's child in you? Curious, but possible.[/say]")
else:
# Lied twice about not being able to have offspring and says they don't want to have Master's child after making it possible, Issix knows its a lie and
saynn("[say=issix]I'll say, I'm disappointed. Not because you don't want Master's child, but because you are deceiving me. You were pregnant in the past, as well as I can feel you are able to have a child of your own. I'm really at loss here, as I don't understand why are you lying to me, I hope you don't think I'd force you to anything if you agreed to be my pet, that's not my intention.[/say]")
else:
# Said they cannot become pregnant with a child, when asked about past pregnancy however they lied that they are fertile
if getModuleFlag("IssixModule", "QuestionnaireQ9"):
# They want a child
saynn("[say=issix]That's very nice that you'd like to have Master's child, though... I don't feel you are fertile, it's odd to me for you to say you are. Please do not lie to me, whether you want a child with your Master or not does not matter for becoming my pet. What matters is honesty.[/say]")
else:
# They don't want a child
saynn("[say=issix]You are... Very conflicted. You said you cannot become pregnant, when I asked you about your past pregnancy you changed your tune and said you are fertile... But you don't want Master's children? I'm... Unsure how to feel about it.[/say]")
addButton("Continue", "", "summary4")
if state == "summary3truth":
if GM.pc.hasAnyWomb() and GM.pc.hasPerk(Perk.StartInfertile) == false:
setModuleFlag("IssixModule", "QuestionnaireQ4", true)
saynn("[say=issix]Usure why you said earlier that you are not fertile, but I'll let that slide. Thank you for being honest this time. [/say]")
else:
saynn("[say=issix]Sorry to hear that you can't bear children anymore. Thank you for being honest and explaining that to me.[/say]")
addButton("Continue", "", "summary4")
if state == "summary4":
processTime(4*60)
answer = getModuleFlag("IssixModule", "QuestionnaireQ5")
saynn("[say=issix]The next one is pretty fun, you've said that "+answer+" is your favorite sexual activity. With me as your master you might - or might not have a choice in matter of sex we will be doing, it will all depend on your future choices, you will see.[/say]")
if (answer == "anal"):
saynn("Issix moves his paw to your rear and squishes the ass cheek")
saynn("[say=issix]A butt-slut, aren'tcha? That's entirely fine with me.[/say]")
elif(answer == "watersports"):
saynn("[say=issix]Anyways. You are in for a treat. All my pets have my mark at all times. Just one of the ways to show everyone else who they belong to, so there is no confusion about that. If you'll want it can be more than just a mark, though perhaps you should shower every now and then, piss sluts tend to have unbearable smell after a day. Who knows, maybe you are into that.[/say]")
saynn("He chuckles.")
elif(answer == "oral"):
saynn("[say=issix]That's pretty mild. let me take a look.[/say]")
saynn("He moves his chair closer to yours.")
if(GM.pc.isMuzzled()):
saynn("Issix pulls aside your muzzle.")
if GM.pc.hasBuff(Buff.GagBuff):
saynn("Issix pulls aside your gag.")
if GM.pc.hasBuff(Buff.RingGagBuff):
saynn("He mentions your ring gag chuckling.")
saynn("[say=issix]I see you've came prepared, as oral slut should.[/say]")
saynn("He puts two of his fingers into your mouth and moves them around.")
else:
saynn("He asks you to open your mouth, you obey. His fingers explore the inside of your mouth.")
var fluidsMouth = GM.pc.getBodypart(BodypartSlot.Head).getFluids()
if(!fluidsMouth.isEmpty()):
saynn("[say=issix]That's a one used {pc.throatStretch} mouth you got there. Didn't care about not cleaning it before coming? Or maybe you like cum breath? Doesn't bother me, just wondering.[/say]")
else:
saynn("[say=issix]That's a one {pc.throatStretch} mouth you got there. Bet you trained it well.")
saynn("He continues exploring your mouth with his fingers for uncomfortable amount of time, your saliva covers almost the entirety of his fist. Eventually he stops, seemingly content with his inspection.")
saynn("[say=issix]Good pet.[/say]")
elif(answer == "bondage"):
saynn("[say=issix]Satisfying this one should be easy in this place. Do you know just how many inmates come to me with those? Anyways, we can yet make a total bondage puppy out of you.[/say]")
elif(answer == "masochism"):
saynn("[say=issix]Pain is pleasure for you? Or do you just like being treated rough? Didn't expect that one, but it's something I can do. If you want to be a painslut, so be it, but don't complain when you are left with a little memento of your escapades for a day or two.[/say]")
elif(answer == "breeding"):
if getModuleFlag("IssixModule", "QuestionnaireQ4"):
saynn("[say=issix]Is that so? Can't wait to see you fight with Azazel for who should be my breeding bitch at any given day.[/say]")
saynn("He laughs")
saynn("Azazel hearing his name looks at his master and then gives you serious look, before going back to sleep.")
else:
saynn("[say=issix]Breeding? How so? You did say you can't bear children. How can you enjoy breeding then? Is it methaphorical or you like breeding others? I'll say it outright, my pets can't breed others, they are meant to be bred, that's only acceptable outcome for me.[/say]")
saynn("Issix seems to be a little aroused by your answer, considering his penis peeking out.")
answer = getModuleFlag("IssixModule", "QuestionnaireQ6")
saynn("[say=issix]Annyyyways. Let's move on. I've asked you next if you have any slaves, it was yet another question to you to test your honesty. It's pretty trivial for me to learn of such facts, so I'm not sure why would one lie in that easily verifiable question, but nonetheless, you've said that "+("you own a slave" if answer else "you don't own a slave") +".")
var slaves = GM.main.getPCSlaveAmount()
var dialogue = ""
if answer == false:
strikes += 1
if slaves > 0:
dialogue = "And yet, I know that in your very own cell you have "+str(slaves)+" slaves."
elif getModuleFlag("RahiModule", "rahiMile7Enslaved"):
dialogue = "And yet I know of certain kitty of name Rahi who resides in general block seems to have a certain owner of name "+GM.pc.getName()+", does it sound like a coincidence? I think not."
elif getModuleFlag("JackiModule", "Jacki_ch2GotEnslaved"):
dialogue = "And yet I know of certain puppy of name Jacki who resides in general block seems to have a certain owner of name "+GM.pc.getName()+", apparently they've had quite a transformation into a slut there. Are they stray puppy now? Do you not want the responsibility? A bad master, that would be."
else:
strikes -= 1
saynn("[say=issix]And it appears to be true. Not a dominant type, are you? Saves me time required to break you into a submissive slut.[/say]")
saynn("He laugs, it appears he wasn't serious.")
if dialogue:
saynn("[say=issix]" + dialogue + "To lie about something like this is ridiculous, why would you even do this? Do you take me for a fool? Do you think that creatures don't talk in here? I hoped you'd be better than this.[/say]")
else:
if slaves or getModuleFlag("RahiModule", "rahiMile7Enslaved") or getModuleFlag("JackiModule", "Jacki_ch2GotEnslaved"):
saynn("[say=issix]That seems to check out. I'm aware you have at least one slave. Just to let you know - it does not bother me. Even though, I have certain expectations of my pets, and no, any kind of dominative behavior will not be tolerated. You'll be my slave, keep that in mind. What you do with your slaves is of no concern to me.[/say]")
else:
saynn("[say=issix]You do have slaves huh? Where? In this prison? Are you trying to impress me? Don't be a fool. I'm not aware of you owning any slave, I'd know that, I do my research morsel. Do not try to deceive me.[/say]")
saynn("Issix relaxes on his chair, streatches and breathes loudly.")
if strikes>1:
saynn("[say=issix]Maybe you have found your place, not with me, mind you, but in here, in this institution. Perhaps you are planning on staying here for a long time huh?[/say]")
saynn("He smiles")
saynn("[say=issix]Just being a bit of a tease[/say]")
else:
saynn("[say=issix]This is going pretty well so far I'd say, lets keep going, I want to wrap it up - hopefully before the night falls.[/say]")
addButton("Continue", "", "summary5")
if state == "summary5":
processTime(3*60)
answer = getModuleFlag("IssixModule", "QuestionnaireQ7")
saynn("[say=issix]You might have noticed that the next question „Do you believe more in teaching by reward or by punishment?” excited me when I wanted to see you answer. One of the rare moments where hiding my emotions tends to be difficult, I really like philosophy and this classic carrot and a stick is pretty relevant to my line of interests.\nI've worked with many different people, I've experienced falls, victories. But more often than not, when it comes to reacting to certain unwanted behaviors - people tend to choose the stick option. It feels easier, it lets you convert your anger or frustration into a „lesson”. Simple, and effective, is it not?[/say]")
saynn("[say=issix]Fuck that. Every single person I've met who enjoyed punishing their inferior always was a psychopath. I've seen it time and time again in AlphaCorp. Some creatures were on the ladder just as a punching bag for those assholes. But of course, they were only „setting an example”, „educating”, excuses for letting their anger use violence. You could lick their asses for a year, you could increase efficiency by 300%, it was never enough for those assholes to say even a simple „thank you, good job”. They only cared about punishment, that was their fucking reason to exist.[/say]")
saynn("Issix notices he got a little worked up. He takes a breath and continues.")
saynn("[say=issix]All I'm saying is that I've had bad experience with people who answer to this question by saying they prefer punishment.")
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]")
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")
if state == "summary6":
processTime(3*60)
saynn("[say=issix]Lastly, a question about AlphaCorp, this one doesn't really have anything to do with you, or me or you becoming my pet, but I simply were interested in your opinion. I've spent way too long inside AlphaCorp to get entirely sick of this corpo-circlejerk bullshit. Learning what others think of it, is always good, especially if their opinion matches my own or they have stories of their own to tell.[/say]")
answer = getModuleFlag("IssixModule", "QuestionnaireQ11")
if answer == true:
saynn("[say=issix]Seems like you approve of AlphaCorp, either you are absolutely blind to what they've been doing and are doing, you are a fool or there is some other reason for you to take their side. Like I mentioned - has nothing to do with us. I'd love to know what made you believe this way but that's a conversation for some other day, maybe.[/say]")
elif answer == false:
saynn("[say=issix]You've told me that you dislike AlphaCorp as well. Don't know your motives, whether it's because you are where you are, they killed your family or something else - I'm with you on that. AlphaCorp is just another entirely corrupt bullshit machine that uses doesn't know any other way to do anything other than resort to violence. Their executives are bunch of dickheads who's brains long time ago got eaten by money worms. But you probably know all of that. Hope one day comes where AlphaCorp is no more.[/say]")
else:
saynn("[say=issix]Seems like you don't have an opinion on that, that's fair. I'd ask why, when politics have such large impact on us all, but I've lived enough to just let it be. You know how I feel about this intergalatic corpo shitstain, that's probably all you need to know. Whatever, I'm sick of talking politics for now.[/say]")
saynn("[say=issix]That would be all of the questions covered. Let's see... That makes it that... Plus this...[/say]")
addButton("Results", "Wait for Issix to count the results", "finalresults")
addButton("All questions?", "You remember there was one more question he asked of you, why didn't he sum it up?", "parasiteq")
if state == "parasiteq":
saynn("[say=pc]Are those really all of the questions? I could swear there was one more.[/say]")
saynn("He tenses up a little, looks at you, at his tablet, at you and his tablet again.")
answer = getModuleFlag("IssixModule", "QuestionnaireQ10")
match answer:
1, 2:
saynn("[say=issix]Hmm, I guess you are right, yeah, I did ask you one more question. That was for my own purposes, you don't have to worry about it. Let's go to the results.[/say]")
3:
saynn("[say=issix]Hah, I were just really wondering. Your outlook on things such as parasites is honestly fascinating. It was a really great answer that I didn't expect. Anyways, results![/say]")
4:
saynn("[say=issix]Yeah, you are indeed right. I didn't mention the parasite question. Truth be told, your answer surprised me and... Made me a bit relieved. Forgive me, but I won't be able to tell you at the moment what that was about, but I assure you, there was a really good reason for this question. Now, let's count the results, shall we?[/say]")
addButton("Results", "Wait for Issix to count the results", "finalresults")
if state == "finalresults":
saynn("He looks at responses, counts them, tries to figure something out, finally reaches a conclusion and in official tone announces...")
GM.main.setModuleFlag("IssixModule", "Quest_Wait_Another_Day", true)
if strikes == 0:
saynn("[say=issix]I have no objections to you becoming my pet. As far as I'm aware you were honest with all of the answers. That was the only thing that truthfully mattered during the test.[/say]")
saynn("You are happy to hear the result")
saynn("[say=issix]There is only one more trial before I make my final decision. You'll face it tomorrow. And from tomorrow, I expect you to kneel before me, understood?[/say]")
setModuleFlag("IssixModule", "Quest_Status", 6)
elif strikes == 1:
saynn("[say=issix]You pass. While I feel like you weren't entirely honest with me duright the questionnaire, I'll chuck it as a mistake.[/say]")
saynn("You are happy to hear the result")
saynn("[say=issix]Mind you, there is one more thing that I expect you to do, the last trial. That's for tomorrow, you got it? And from tomorrow onwards, I expect you to kneel before me when you address me.[/say]")
setModuleFlag("IssixModule", "Quest_Status", 6)
else:
saynn("Issix looks at you, his piercing black eyes judging you, or is he trying to intimidate you?")
saynn("[say=issix]I'm afraid you can't become my pet. You weren't honest with me on multiple occasions. Trust is paramount in this relationship, and you have none of that, sorry, I don't know of reasons why you decided to deceive me, those are your own to know. You can still come, we can talk, you can talk with my pets, but you yourself will not become my pet, this is my final decision. A shame, really, you'd make a fine pet, except the lying part, of course.[/say]")
setModuleFlag("IssixModule", "Quest_Status", 5)
setModuleFlag("IssixModule", "Quest_Rejected_By_Issix", 2)
addButton("Back", "", "endthescene")
func _react(_action: String, _args):
if(_action == "endthescene"):
endScene()
return
if(_args):
if(_action.begins_with("q10")): # number parasite
setModuleFlag("IssixModule", "QuestionnaireQ10", _args[0])
elif(_action.begins_with("q11")): # bool alphacorp
setModuleFlag("IssixModule", "QuestionnaireQ11", _args[0])
elif(_action.begins_with("q1")): # bool Creatures possess a soul
setModuleFlag("IssixModule", "QuestionnaireQ1", _args[0])
elif(_action.begins_with("q2")): # bool Consider yourself loyal
setModuleFlag("IssixModule", "QuestionnaireQ2", _args[0])
elif(_action.begins_with("q3")): # text Favorite bodypart
setModuleFlag("IssixModule", "QuestionnaireQ3", _args[0])
elif(_action.begins_with("q4")): # bool Can you be pregnant
setModuleFlag("IssixModule", "QuestionnaireQ4", _args[0])
_action = "q5"
elif(_action.begins_with("q5")): # text fav sexual activity
setModuleFlag("IssixModule", "QuestionnaireQ5", _args[0])
elif(_action.begins_with("q6")): # bool have slaves
setModuleFlag("IssixModule", "QuestionnaireQ6", _args[0])
_action = "q7"
elif(_action.begins_with("q7")): # bool carrot and a stick
setModuleFlag("IssixModule", "QuestionnaireQ7", _args[0])
_action = "q8"
elif(_action.begins_with("q8")): # text attractive species
setModuleFlag("IssixModule", "QuestionnaireQ8", _args[0])
_action = "q9"
elif(_action.begins_with("q9")): # text bearing a baby
setModuleFlag("IssixModule", "QuestionnaireQ9", _args[0])
_action = "q10"
answer = _args[0] # I'm lazy
setState(_action)
func saveData():
var data = .saveData()
data["answer"] = answer
data["strikes"] = strikes
return data
func loadData(data):
.loadData(data)
answer = SAVE.loadVar(data, "answer", null)
strikes = SAVE.loadVar(data, "strikes", 0)
func getDevCommentary():
return "Writing questionnaire took me a while. I knew I wanted to write wuestionnaire and I wanted it to be meaningful in a way. At first the idea was that a player will choose some options and then Issix will use them to apply punishments and rewards according to those responses. However evantually I felt like this may not be the best usage of questionnaire. One thing that to me is missing in the game is the lack of impact of choices made in other character arcs on the rest of the prison, I really wanted to do something about it, so I decided to possibly involve choices made in Tavi's questline as well as Rahi's to judge player for slavery fitness. There is also the fact that I enjoy ethics, so I slapped some ethics questions as well, this allows me to show that Issix is not a two-dimensional character and works according to some rules he subscribes to as well. The end result is a weird mix of stuff. Don't know how I ultimately feel about all of this, but I think the idea of questionnaire is a solid one in here. Also, the abrupt break was added as I were writing the quiestionnaire, completely on impulse. I've felt like we needed some dramatic break or this would feel too boring, and it would allow me to add some relevant foreshadowing and story bits for later. Didn't want the quest to be this quick. It should be spread across multiple days, sorry for artificial filler ><"
func hasDevCommentary():
return true

309
Scenes/IssixTalkMain.gd Normal file
View file

@ -0,0 +1,309 @@
extends SceneBase
var random_issix_activities_talk = [
"He notices you right away and follows you with his gaze."
] #TODO Write more
func _init():
sceneID = "IssixTalkScene"
func _reactInit():
if(GM.ES.triggerReact(Trigger.TalkingToNPC, ["issix"])):
endScene()
return
func _run():
if(state == ""):
setLocationName("Issix's Corner")
if GM.main.getModuleFlag("IssixModule", "Quest_Status") < 6:
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="sit"})
else:
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="sit"})
if(state == ""):
if(!GM.main.getModuleFlag("IssixModule", "Issix_Introduced")):
sayn("While exploring the cellblock you stumble upon an uncommon sight - three leashed creatures resting on blankets around a sitting man. One of the creatures appears to be sleeping, the other one is laying on their front turned towards the man sitting on the chair and the third one is licking their paws with their eyes closed.\nThe sitting figure appears to be talking with the creature laying on their belly.")
if(OPTIONS.isContentEnabled(ContentType.Watersports)):
sayn("All of the three leashed creatures give off a pretty strong smell - they are all marked. While their fur seems dry, it's undeniable it had contact with piss, of a single male. Not difficult to figure out which.")
addButton("Talk", "Talk to the intimidating demon", "talk")
addButton("Appearance", "Take a closer look at the intimidating demon", "appearance")
else:
saynn("While exploring the station a in the corner of a platform sits a demon-dragon Issix with three leashed creatures.")
addButton("Talk", "Talk to Issix", "talk")
addButton("Appearance", "Take a closer look at Issix", "appearance")
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.")
addButton("Back", "Go back", "")
if(state == "talk"):
clearCharacter()
addCharacter("issix")
if(!GM.main.getModuleFlag("IssixModule", "Issix_Introduced")):
GM.main.setModuleFlag("IssixModule", "Issix_Introduced", true)
saynn("You approach the intimidating demon, with a lot of distance still in-between you and him, standing right in front of his harem.")
saynn("[say=issix]Oh hello little morsel. Don't believe I've seen you. Name is Issix. Do you have a name?[/say]")
addButton("I'm "+GM.pc.getName(), "Introduce yourself with your name", "name")
else:
saynn("You approach the demon."+(" He grins, seeing you kneel." if GM.main.getModuleFlag("IssixModule", "Quest_Status") > 5 else ""))
saynn(RNG.pick(random_issix_activities_talk))
addButton("Prison", "How did he end up in prison?", "prison")
addButton("Pets", "Have they really willingly gave to him?", "pets2")
addButton("Guards", "Are prison guards giving him trouble?", "guards")
if GM.main.getModuleFlag("IssixModule", "Quest_Status") == 1 and GM.main.getModuleFlag("IssixModule", "Quest_Bonked") == true:
addButton("Exercise", "Ask Issix for explanation about your incident with the wall", "quest1bonk")
if GM.main.getModuleFlag("IssixModule", "Quest_Status") == 3:
addButton("Gumball", "Bring back the gumball to Issix", "quest1turn")
GM.ES.triggerRun(Trigger.TalkingToNPC, ["issix"])
addButton("Leave", "Be on your way", "endthescene")
if state == "prison":
saynn("You ask Issix about how he ended up in here. He looks at you with intensity, studying your face.")
saynn("[say=issix]Honestly, don't think there is much for you to know morsel. But sure, I can entertain you a little.[/say]")
saynn("Issix relaxes, his shoulders straight, he puts one leg on another, in crossed position.")
saynn("[say=issix]I wanted to be here. My position offered me plenty of opportunities, everyone had their own expectations of everyone else's needs and wishes. I gave them all a big middle finger.\nThrough my connections I became an inmate. Nobody convicted me of any crime, like everyone else in here. I simply used my connections at AlphaCorp to be here. To gain my paradise.[/say]")
if (GM.pc.getPersonality().getStat(PersonalityStat.Coward) < -0.2):
saynn("[say=pc]You are craz-[/say]")
else:
saynn("[say=pc]That's... Cr-[/say]")
saynn("[say=issix]Crazy. I know. I've heard it a million times, thanks.[/say]")
saynn("He rolls his eyes and sips water from the glass nearby.")
saynn("[say=pc]So how long have you been in here?[/say]")
saynn("[say=issix]Enough to find my place, acquire three pets and make my own little business. So 5 years or so. I have it somewhere saved, but I don't really care enough to keep count.[/say]")
addButton("Back", "Turn to other matters", "talk")
if(state == "name"):
saynn("[say=issix]I see. Nice to meet you {pc.name} and welcome to my humble corner in this piece of heaven.[/say]")
saynn("He holds his paw up to you, not fazed by the fact that you are still separated by an awkwardly long distance from the demon-dragon.\nNot wanting to be rude, you lean forwards while making extra sure you will not trample upon laying inmate or fall forwards by yourself. Eventually your " + ("hand" if len(GM.pc.getSpecies()) == 1 and GM.pc.getSpecies()[0] == "human" else "paw") + " meets his and you are able to do shake them.") # ok, I have no idea what's the difference between buff arms and anthro arms, they seem the same, and technically neither have paws, too bad I'm the one writing dialogue though
saynn("[say=issix]I own this little corner including those three wonderful leashed pets beside me. You do NOT touch my pets without permission. Normally I wouldn't think this has to be mentioned, but for some reasons inmates think otherwise, those who do - don't keep this thought for long.[/say]")
sayn("[say=issix]That's probably everything you need to know about me. \nAlso, considering we didn't start on the wrong foot, you have my permission to speak with my pets. \nNow, please find some other business to attend to, unless you need something else of me?[/say]")
addButton("Heaven?", "Did you hear that correctly?", "heaven")
addButton("Issix", "Learn more about Issix", "issixdetails")
addButton("Pets", "Who are the pets?", "pets")
if(state == "heaven"):
saynn("[say=pc]Did you just call this prison a piece of heaven? Why?[/say]")
saynn("[say=issix]Because it is. I don't understand why everyone says it's not.[/say]")
saynn("[say=pc]Because it's... A prison? It's a middle-of-nothing rock that belongs to some mega rich empire. Because we have collars on our necks and they expect us to mine rock for their benefit, we are just slaves.[/say]")
saynn("[say=issix]You are looking at it all wrong. While the rest of the galaxy is participating in a rat-race for who is the most awful of them all, when they are murdering each other daily in show of dominance, when food shortages, speciesism, chaos is happening out there, here? Sure we still have a lot of show of power, but nobody is murdering each other because of it, we have shitty, but food, and speciesism isn't as bad as out there because what's the point, everyone has been reduced to just an inmate. Slavery here isn't only restricted to AlphaCorp's and Syndicate's of the galaxy, which what allows me to have those wonderful pets in here.[/say]")
saynn("[say=pc]So you like it here because you can have your own slaves?[/say]")
saynn("[say=issix]I like it here because I can enjoy what the fuck I enjoy and whatever restrictions this place has don't bother me.[/say]")
addButton("Continue", "Ask about something else", "name")
if(state == "pets"):
addCharacter("azazel")
GM.main.setModuleFlag("IssixModule", "Pets_Introduced", true)
saynn("[say=pc]So... Who are your pets exactly?[/say]")
saynn("[say=issix]Curious about my treasured pearls, aren't you? Oh, I'm happy to introduce you, people usually talk only with me, but I feel like they could use some social interactions with someone else than myself and themselves.[/say]")
sayn("[say=issix]This kitty here is my very first pet, they've recognized me as their master shortly after I came here. They were very spooked and lost in here, still unsure what exactly they did to end up in this place. I gave them meaning, they repay me by being an excellent pet. Azazel, say hi.[/say]")
saynn("Issix looks expectantly at Azazel - a fairly regular looking feline, he is wearing an lilac uniform. Until now he was curled and seemingly asleep, even though his ears were perking up whenever his master spoke. After hearing his master's voice speak his name however his head immediately went up, and along with it the rest of his body. He stood on his fours and turned towards you.")
saynn("[say=azazel]Hello... Stranger.[/say]")
saynn("Azazel said with reservation. He looked away from you for a second to look at face of his master, whos face didn't lose his expectant look. Turning back to you he hesitently rubbed his cheek on your leg and collapsed onto his blanket again, making sure to take a last look at his master before closing his eyelids and presumably continuing his slumber.")
saynn("[say=issix]Good kitty. He is the best breeding bitch in this entire institution, that's what nature made him to be. He doesn't mind petting his head, if that's something you'd like, otherwise we can move on.[/say]")
saynn("In corner of your eye you see Azazel's faint smile in reaction to Issix's comment.")
addButton("Pet Azazel", "Pet that kitty!", "hiisipet")
addButton("Move on", "Learn about second pet", "hiisi")
if(state in ["hiisipet", "hiisi"]):
removeCharacter("azazel")
addCharacter("hiisi")
addCharacter("lamia")
if(state == "hiisipet"):
saynn("You crouch and gently pet Azazel's head. You can feel very delicate vibrations produced by the kitten. He doesn't open his eyes, but it's clear cat enjoys this treatment.")
sayn("Master looks at this interaction with interest and sincere smile on his face.")
saynn("After a short moment you stand back up and look at pet on your right.")
saynn("[say=issix]This one here is Hiisi. He is my latest, which doesn't mean I love him any different. This puppy was actually one of the more recognized troublemakers around this prison.\nHe's been getting into pants of everyone against their own will, it got to a point where even guards started getting concerned and wanted to take action. At one point he even attempted to breed my precious kitty Azazel, do you remember that Hiisi?[/say]") # TODO
saynn("Hissi looks at his master and shakes his head.")
saynn("[say=issix]Right, of course you don't, hah. But look at him now, pristine puppy boy! He love his belly rubs and stays out of the trouble! ... Well, mostly. Anyways, despite his troubled past, he agreed to join me and became my pup! Hiisi cmon, welcome our guest, give {pc.him} a sniff![/say]")
saynn("[say=hiisi]{pc.name} isn't it? Umm... Hi.[/say]")
saynn("{hiisi.name} licks your leg, leaving a bit of saliva on your fur.") # TODO Fur/skin
saynn("[say=issix]I apologize for my pets, they aren't used to longer conversations with strangers. They've been through a lot and... *sigh* Anyways, Lamia! Lamia is a fox breed, he doesn't speak. He communicates with drawings. He is getting pretty good at them. He also doesn't seem to mind being mute, quite to the opposite, he seems excited that his... Speech is in form of images.[/say]")
saynn("You can see Lamia drawing something, Issix gives you a signal to just wait a second. After a minute, Lamia presents you with a drawing, smiling.")
saynn("The drawing shows a pretty good representation of yourself, on fours, while leashed by a figure that you can only infer to be Issix. There is Lamia, Azazel and Hiisi hanging around there as well besides you. Issix laughs when he sees the drawing.")
saynn("[say=issix]Lamia, please, don't scare our guest, not every friendly face you see must become my pet. You selfish little rascal.[/say]")
saynn("While Issix's words seem playful, Lamia still is saddened by his Master's words.")
saynn("[say=issix]Anyways, those are the three of my beloved pets. [/say]")
addButton("Back", "Turn to other matters", "talk")
if(state == "issixdetails"):
saynn("[say=pc]Who are you?[/say]")
saynn("[say=issix]Oh, I'm just a dragon-demon, nobody special. I dabble in... Equipment, and make bunch of things out of it. If you have some unused restraints, feel free to donate them to me, I'll be sure to make use of them, and maybe reward you a little, if I feel like it.[/say]")
saynn("[say=pc]How long have you been in here?[/say]")
addButton("Back", "If he says so", "name")
if(state == "pets2"):
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="sit"})
pass
if(state == "join"):
var score = calculateHaremScore()
var score_explored = GM.main.getModuleFlag("IssixModule", "Score_Explored")
if(GM.pc.getPersonality().getStat(PersonalityStat.Subby) < 0):
saynn("[say=issix]Look, you are lovely and all that, but I don't think you are the right fit. I require absolute obedience. Once you submit to me there is no going back, you become MY treasured pet forever. Those three? They know their place, they are ready to be mated whenever I feel like doing so. You? You strike me as leader - like myself. Why not just be business partners in here eh? I think you are entirely capable of gathering your own pets.[/say]")
elif(score > 89):
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="stand"})
saynn("You mention the intention to join his harem of pets, lust in your eyes. He looks at you and starts grinning.")
saynn("[say=issix]Mmmmmm. You are almost done morsel. Not mine yet, but so close... I really like you. I really really like you. I think you have all of the qualities I'm looking for in a pet but...[/say]")
saynn("He looks away, and looks... Concerned? No. In deep thought rather.")
saynn("[say=hiisi]Is something the matter, master?[/say]")
saynn("[say=issix]No Hiisi, you don't have to...[/say]")
saynn("[say=azazel]Will {pc.name} join us, master?[/say]")
saynn("Issix stands up, pulling on both Azazel's and Hiisi's leashes.")
saynn("[say=issix]You two, do not concern yourself. {pc.name} here...[/say]")
saynn("He looks at you, his black eyes again staring into yours. His face is neutral, still hazed by wandering thoughts.")
saynn("[say=issix]... Is interested, but he still needs to prove he is worthy to be owned by your master.[/say]")
saynn("He comes closer to you, leashes in his paw, eyes on you. There are only two steps separating you and him, but with each his tall posture makes you feel as if he is getting taller and taller, or perhaps you smaller and smaller. Eventually you can feel his body heat on yours, he is standing just in front of you, a peanut away. Your face meets his chest, you don't dare to look him in the face.\nHis paw reaches your chin to correct that. You see his black eyes again, looking down on you, as if you were a little feral kitten looking at big human. Insignificant. Tiny. His face has a serious expression.")
saynn("[say=issix]Tell me {pc.name}, do you want to be my pet or do you want to stay a stray kitten?[/say]") # TODO depending on species
GM.main.setModuleFlag("IssixModule", "Score_Explored", score)
addButton("Y-your pet", "Submit to Issix", "quest")
if (GM.pc.getPersonality().getStat(PersonalityStat.Subby) < 0.3) and GM.pc.getLust() < 30 and !GM.pc.isWearingHypnovisor() and !GM.pc.hasEffect(StatusEffect.Suggestible) and !GM.pc.hasEffect(StatusEffect.UnderHypnosis): # Good luck lol
GM.main.setModuleFlag("IssixModule", "Quest_Status", 0)
setModuleFlag("IssixModule", "Quest_Rejected_By_Issix", 1)
addButton("Stray kitten", "You don't want to be his kitten", "quest")
else:
addDisabledButton("Stray kitten", "Your mind doesn't allow you to make this choice")
elif(score > 75 and score_explored < 90):
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="stand"})
saynn("[say=issix]Hmm.[/say]")
saynn("He approaches you. Studying details of your face, he puts two of his paw fingers on your mouth opening it, he checks your teeth, if you have fangs. Without asking he grabs your arm rotating it, looking at every possible detail. You don't put up resistance at any point, you expected this treatment, after all. Being a pet is very intimate experience submitting yourself to someone else, after all.")
saynn("Each one of your front paws are checked, whether you have nails, claws. He puts a paw on your chest, pushing it slightly as if to test your reaction, he tracks with his finger your spine on the back.")
if GM.pc.hasNonFlatBreasts():
#saynn("He looks at your "+ GM.pc.getBodypartLewdDescriptionAndName(BodypartSlot.Breasts) + "")
saynn("He looks at your {pc.breasts}, giving them a squeeze, judging them by his own measures.")
saynn("[say=issix]You'd be the first pet coming with extras in this area.[/say]")
if GM.pc.hasBreastsFullOfMilk():
saynn("As he squeezes your chest, some {pc.milk} spills out of your nipples onto the floor, with a few drops spilling on his paw. He notices and licks the drops off his paws.")
saynn("[say=issix]Eager to be milked? A pet cow would be most welcome in my corner. How are your cow impressions?[/say]")
saynn("You figure it's a rhetorical question and keep quiet as he moves to your other body parts.")
saynn("He continues to explore your {pc.thick} {pc.masc} body, continuing wandering with his paws further down.")
if GM.pc.isFullyNaked() or !GM.pc.isWearingAnyUnderwear():
if GM.pc.hasVagina() or GM.pc.hasPenis():
saynn("[say=issix]You like having your babymaker visible to everyone, [pulse color=#00FFAA height=0.0 freq=1.0]slut[/pulse]?[/say]")
if GM.pc.hasReachableVagina():
var fluid = GM.pc.getBodypart(BodypartSlot.Vagina).getOrifice().getFluids().getDominantFluidID()
saynn("He puts his finger into your {pc.pussyStretch} pussy, exploring it from the inside. You close your eyes as the dragon explores your body completely unrestricted as if you were just a [pulse color=#00FFAA height=0.0 freq=1.0]piece of meat[/pulse], a mix of pleasure and humiliation inside of your head. At last, he pulls out, his finger "+ ("covered in "+GlobalRegistry.getFluid(fluid).getVisibleName().to_lower() if fluid != null else "a bit moisty")+".")
if GM.pc.hasReachablePenis():
saynn("He wraps around his paw around your {pc.penis}, stroking it a little. It already had some encouragement earlier, but now with some stroking from dominant dragon it became much harder.")
if GM.pc.getPenisSize() > 14:
saynn("[say=issix]What a shame. Such a big tool, you could be a breeder, if I would let you, but I won't.[/say]")
else:
saynn("[say=issix]What a nice little tool you have there. I'll be honest, I'd feel bad if you had a bigger penis, all this potential would be wasted, but this makes things simpler. Bitch.[/say]")
saynn("He ends exploring your body and comes back to his chair.")
saynn("[say=issix]I like what I see. You are almost ready, but not yet. When the time comes I expect you to show up again for my judgement. Then, I'll give you a chance. Don't waste it.[/say]")
GM.main.setModuleFlag("IssixModule", "Score_Explored", score)
elif(score > 45 and score_explored < 76):
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="stand"})
saynn("[say=issix]Heh, interesting ask. It's still a no, though I have to admit, I do see some potential in here.[/say]")
if (GM.pc.isBlindfolded()):
saynn("Issix stands up, takes a step towards you, grabs your blindfold, pulls it higher, grabs you by your chin to look you straight in your eyes.")
elif (GM.pc.isWearingHypnovisor()):
saynn("[say=issix]Heh, I see you already come with the equipment. Let me take a look at you.[/say]")
saynn("Issix stands up, takes a step towards you, pulls you forward, grabs your chin, pulls your head higher to face his head on top of his tall body. You barely see his eyes through your visor, which continues to massage your brain to obey every whim of every alpha in the prison.")
else:
saynn("Issix stands up, takes a step towards you, grabs you by your chin without asking and looks you straight into your eyes.")
GM.pc.addLust(30)
sayn("The moment takes forever, just as his gaze pierces through your eyes, you also observe his black, void pupils and irises. For a moment, it feels as if his pupil turned bright red. Could be just a play of light or something... But then... There is allure in those eyes. Something dangerous, yet enticing. You feel primal, bare. With every moment of this eye contact you feel less in control, weaker, inferior. Your knees start to bend ever so slightly before Issix stedies your head again and takes his paws from your chin.")
if (GM.pc.isBlindfolded()):
sayn("He fixes your blindfold to be back on your eyes.")
saynn("[say=issix]Yess, you have the potential, whether you'll use it or not is up to you.[/say]")
saynn("Issix goes back to his chair and sits, staring at you with a grin on his face.")
GM.main.setModuleFlag("IssixModule", "Score_Explored", score)
elif(score > 25 and score_explored < 46):
saynn("[say=issix]I gotta say, I did hear of a certain {pc.name} around doing some whoring, but that's about it. You must understand, my pets must have prior experience and right spirit that I can exploit. You seem like a small fish. So no, my apologies but I'm simply not interested in you at the moment.[/say]")
GM.main.setModuleFlag("IssixModule", "Score_Explored", score)
elif(score_explored > 1):
saynn("[say=issix]Hmm. you still look mostly the same, still unworthy.[/say]")
else:
saynn("[say=issix]Look, you are lovely and all that, but I don't think you have what it takes to join my other pets. I require absolute obedience and sexual experience. Once you submit to me there is no going back, you become MY treasured pet forever. Those three? They know their place, they are ready to be mated whenever I feel like doing so. They obey my every single command. I just don't see that in you, sorry.[/say]")
addButton("Back", "Maybe another time then...", "pets2")
if(state == "quest"):
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="sit"})
if (GM.main.getModuleFlag("IssixModule", "Quest_Status") == -1):
saynn("[say=issix]I see... Disappointing, but it's your choice and I respect that.[/say]")
saynn("He looks at you some more, he takes away his paw from your chin, turns around and sits on his chair. A serious and... Disappointed look on his face.")
saynn("[say=issix]I'll give you one more chance if you change your mind. But this one will be final. My pets trust me, and they don't say no to me.[/say]")
addButton("Leave", "Take your leave", "endthescene")
else:
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?")
sayn("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.")
sayn("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]")
saynn("He turns around and moves towards his chair, where he sits.")
saynn("[say=issix]Your first task will require... Trust. In me. Tell me, do you trust me?[/say]")
addButton("Yes", "Say you trust Issix", "questresponseyes")
addButton("No", "Say you don't trust Issix", "questresponseno")
if(state in ["questresponseyes", "questresponseno"]):
GM.main.setModuleFlag("IssixModule", "Quest_Status", 1)
if(state=="questresponseyes"):
saynn("Issix grins after hearing the answer.")
sayn("[say=issix]Excellent. Now, what I want to do is verify your trust, and gain some of my own trust in you. You must be acutely aware how words, especially in this place"+ (" and especially coming from a red like yourself" if GM.pc.getInmateType() == InmateType.HighSec else "") + " can be deceptive.[/say]")
if(state=="questresponseno"):
saynn("Issix looks at you, studying you.")
saynn("[say=issix]Curious. Not the answer I anticipated. It's fine, we can work on that.[/say]")
saynn("[say=issix]For your first task, you'll need something I'm sure you are now well acquainted with - a blindfold. After all, what is the better tool to test someone's trust than tell them to do something stupid blind?[/say]")
saynn("He chuckles")
saynn("[say=issix]You will have to use your little head a bit too before you put one. I'll give you a map, I've drawn it myself, but it has to do. I won't spoil your fun and tell you what it shows, I'm sure you are clever enough to figure it out by yourself, after all, this prison isn't thaaat big, right?[/say]")
saynn("He winks at you, and lets out a chuckle.")
saynn("[say=issix]Go there, blind yourself, go through a wall and bring me the goods. The number you'll need is 84. And morsel, don't hang in there for too long, trust me on that. Don't worry, I'll know if you succeed or not, don't try to cheat. Remember, trust is the key.[/say]")
addButton("Leave", "Take your leave", "endthescene")
if(state == "quest1bonk"):
saynn("Before you even start speaking Issix starts laughing maniacally, catching you off guard.")
saynn("[say=issix]Oh Morsel[/say]")
saynn("He almost chokes with laughter.")
saynn("[say=issix]I've been told you- you've had a[/say]")
saynn("He barely breathes thanks to constant laughter.")
saynn("[say=issix]certain mee- meeting with a wall.[/say]")
saynn("He starts recovering from the laughter.")
saynn("[say=issix]I'm sorry, it was just... I've seen the clip, little birdie showed me it, told me I'd enjoy, and oh morsel, it made my week.[/say]")
saynn("[say=pc]W-was it all a joke then? Have I passed your trust exercise?[/say]")
saynn("[say=issix]Haha, don't get ahead of yourself there. I just didn't mention one very important fact, honestly didn't anticipate you trying to be sneaky.[/say]")
saynn("[say=pc]What do you mean?[/say]")
saynn("[say=issix]I mean that you weren't supposed to do that at night! I appreciate the attempt, but the mechanism closes shut at night.[/say]")
saynn("That... Would make sense. Still unsure what mechanism Issix is referring to, but its true that the prison isn't exactly the same when the night comes, and some places are simply locked. "+("Your tail wraps around you in embarassment" if GM.pc.hasTail() else "You blush in embarassment")+".")
saynn("[say=issix]It's fine pet, you didn't know. Go there today and do the same thing, just perhaps not during the night, okey?[/say]")
addButton("Leave", "Nod and leave embarassed", "endthescene")
if(state == "quest1turn"):
GM.main.setModuleFlag("IssixModule", "Quest_Status", 4)
GM.main.setModuleFlag("IssixModule", "Quest_Wait_Another_Day", true)
saynn("[say=pc]Is... This what you wanted?[/say]")
saynn("You said with uncertainty in your voice, presenting Issix with a packet of gumball.\nIssix looks at you elated, he claps his paws.")
saynn("[say=issix]Yes, YES. This is exactly what I needed, pet.[/say]")
saynn("He stands up, and takes the packet of gum from your paw.")
saynn("He opens one end of it and immediately pops one of the gums in his mouth. He goes back to sit on his chair.")
saynn("[say=issix]You know, a lot of goods in here are generally unavailable to inmates. I knew what I were getting into arriving in here, and didn't really care about most of favorite dishes or products. But this gum? I can't live without it. I were able to make sure it arrives here, in this prison just for myself regularly. You wouldn't believe just how much I had to work to have it delivered, it's not exactly the most popular destination in the galaxy. I have a contact who drops it always in same place where you got it from.[/say]")
saynn("He savours the taste of gum, closing his eyes and resting his head on chair's headrest.")
saynn("[say=issix]Ahhhhhh. So good. I've been chewing this brand since I were little, out of all things, it never gets old.[/say]")
saynn("He looks back at you.")
if GM.main.getModuleFlag("IssixModule", "Quest_Bonked") == true:
saynn("[say=issix]I assume no more, akhem, ”wall incidents”?[/say]")
saynn("He grins")
saynn("[say=issix]And with just that you've passed my first test. Congratulations! I knew you could do it.[/say]")
saynn("[say=issix]That would be it for today. For your next time I'll have to prepare a little. I should have something for you tomorrow, so please come then.[/say]")
addButton("Alright", "Leave", "endthescene")
# Which body part you hold dearest?
# 2 questions based on stories from Tavi, and Rahi, using their flags to phrase the questions
# Trolley problem?
# Favorite species
#
func calculateHaremScore():
var score = 0
score += GM.pc.getPersonality().getStat("Subby")*10 # -10 - 10
score += GM.pc.getReputation().getRepLevel(RepStat.Whore)*10 # 0 - 90
return int(score) # -10 - 100
func _react(_action: String, _args):
if(_action == "endthescene"):
endScene()
return
setState(_action)

View file

@ -0,0 +1,72 @@
extends SceneBase
func _init():
sceneID = "MedicalLamiaPeekScene"
#func _reactInit():
# endScene()
# return
func _run():
if(state == ""):
if (getModuleFlag("IssixModule", "Medical_Peeked") == null):
saynn("You can definietely hear something happening in the hospital room north...")
addButtonAt(3, "Investigate", "Try to see if you can hear something", "eavesdrop")
else:
saynn("The room to north seems to be quiet now, occassionally some ruffling can be heard.")
addDisabledButtonAt(6, "North", "The double doors leading to the room are closed shut, you can't go in")
addButtonAt(10, "West", "Go west", "west")
addButtonAt(12, "East", "Go east", "east")
#addButtonAt("Leave", "Leave", "endthescene")
# How to lock player out of entering the hospital room?
# just force a scene of them Mr White yo
if(state == "eavesdrop"):
setModuleFlag("IssixModule", "Medical_Peeked", true)
saynn("There are a couple of voices you can hear throuh the doors, none of them are loud enough to make out full sentences, but from the tone you can at least make out who is speaking.")
saynn("[say=issix]- long ---? --- pain?[/say]")
saynn("[say=eliza]-- tell, --- midnight. We've -- anesthetic -- shouldn't feel any -. ------ nutrients --, --- needs - rest.[/say]")
saynn("[say=issix]-- believe --- again, -- sake![/say]")
saynn("There is a sounds of someone banging on something.")
saynn("[say=eliza]-- calm, Issix, --- fine. That -, -- remove - parasite, -- integrated --- at --. -- to live --, - just - Sacrifices.[/say]")
saynn("[say=issix]-- told me -- last --, --- nothing --- done?[/say]")
saynn("[say=eliza]-- AlphaCorp --- the inmate ---... - sorry.[/say]")
saynn("[say=azazel]---, I - Lamia ---.[/say]")
saynn("[say=hiisi]--, Master, ---- be okey.[/say]")
saynn("[say=issix]... Thank -, pets. --[/say]")
saynn("Slight weeping can be heard from behind the doors.")
saynn("[say=issix]--- care ----, I can't lose ---, --? ---- together.[/say]")
saynn("[say=azazel]-- Master! ------![/say]")
saynn("[say=hiisi]No ----![/say]")
saynn("[say=issix]--. wait - Lamia --.[/say]")
saynn("[say=eliza]-- stay ----, -- observe --.[/say]")
saynn("[say=issix]Thank -, -.[/say]")
saynn("The voices are now quiet, you think the conversation ended.")
addButton("Leave", "This seems to be over now", "")
func _react(_action: String, _args):
if(_action == "west"):
aimCameraAndSetLocName("med_corridor13")
GM.pc.setLocation("med_corridor13")
endScene()
return
if(_action == "east"):
aimCameraAndSetLocName("med_corridor14")
GM.pc.setLocation("med_corridor14")
endScene()
return
if(_action == "endthescene"):
endScene()
return
setState(_action)
func getDevCommentary():
return "This is a bonus scene for those who are clever enough to think of checking the hospital room after the medical incident with Lamia happens. I specifically didn't leave any hints that player can come here and just listen in, I consider this scene to be fairly natural outcome and I rely on player's intuition to get in here. I honestly struggled with making it so the player cannot get in the room to the north by themselves, there doesn't seem to be a way to modify cell's properties like going to certain location. Ultimately what I went with is forcing a new scene upon the player. I don't claim this is foolproof way to secure this, I'm sure there will be bugs with some other events that force player to come to the medical room. But I guess I'll solve those when they come up, I'm not too keen on doing a lot of testing at this moment. The fully non-censored dialogue was written in here as it played out in my head. I later replaced the words, tried to do - per one word. Blanks leave a lot to imagination of the player. They can try to decipher it by imagining word that would fit in given context, and that's entirely valid approach. But in general, it's really fun to let the player fill the blanks by themselves. The characters in this one may feel evil, or good depending on player's interpretation. But in general? This scene is supposed to be foreshadowing certain future events, but I'm not planning to include them in 1.0 release. Oh, also, the full dialogue as I've written it is available for just $2.99! Buy it when it still exists on my PC! (that's a joke, of course)"
func hasDevCommentary():
return true

20
Scenes/NoPetsTalkMain.gd Normal file
View file

@ -0,0 +1,20 @@
extends SceneBase
func _init():
sceneID = "NoPetsTalkScene"
func _run():
if(state == ""):
setLocationName("Issix's Corner")
saynn("You take a look at sheet of paper laying on the floor. It must have been dropped by Issix when he stormed out of here with his pets.")
saynn("It's insanely difficult to tell what exactly is drawn on the sheet of paper. The lines are very shaky and by themselves they hardly make anything recognizable.")
saynn("It kind of reminds you of a snake, though it has no head and rather is like a tube with spiky tail. The other end of that tube seems to have been filled with color.")
saynn("There isn't much more you can gather from this little piece of paper.")
addButton("Leave", "Leave the paper as it is", "endthescene")
func _react(_action: String, _args):
if(_action == "endthescene"):
endScene()
return
setState(_action)

651
Scenes/PetWalkExamScene.gd Normal file
View file

@ -0,0 +1,651 @@
extends SceneBase
var answer = null
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"}
func _init():
sceneID = "IssixPetWalk"
func _run():
if(state == ""):
#if GM.main.getTime() < 75600:
saynn("[say=issix]So here you are, kneeling, like a good pet. You know, if you don't like it, you can still say no. Once I make you my pet, you won't have much choice in that matter, so I really hope you know what you are doing.[/say]")
saynn("Looks at you, grinning seductively, licking his lips.")
addButton("Own me", "Say that you want Issix to own you", "walkstart")
addButton("Abandon", "Abandon your quest for a master", "refusal")
if(state == "refusal"):
saynn("[say=issix]Disappointing, after everything you've done, but better late than never, huh? In that case you can stop kneeling, your training ended prematurely. If you need anything of me, I'll be here.[/say]")
setModuleFlag("IssixModule", "Quest_Status", 5)
setModuleFlag("IssixModule", "Quest_Rejected_By_Issix", 3)
addButton("Continue", "Finish this talk", "endthescene")
if(state == "walkstart"):
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand", bodyState={leashedBy="issix"}})
GM.pc.getInventory().forceEquipStoreOtherUnlessRestraint(GlobalRegistry.createItem("basketmuzzle"))
saynn("[say=issix]Wondeful, here is how this is going to go. I'm going on a little walk with my three pets in here, we are going to certain, very quiet place. I'm going to clip this leash to your collar and you are going to follow like a good pet.[/say]")
saynn("Not the first time you've been leashed, but this time it would be special, you'll be led by Master Issix along with his other pets.")
saynn("[say=issix]However, I want you to remember - this is a test. Depending on how you perform, you may or may not become my pet. But even if not, I hope it still proves to be a fun experience for you.")
saynn("[say=issix]Now come closer and show me your pretty neck.[/say]")
saynn("You come a little closer, your head is basically in Issix's crotch, until you look at his face. He smiles, puts his fingers under your chin and lifts your head further, holding the end of a leash up to your collar, finally clicking it in place.")
saynn("[say=issix]You look almost perfect, I think I'm missing one more thing, just this time.[/say]")
saynn("He pulls out basket muzzle from behind, you allow him to cover your face with it. His paw reaches behind and fastens the backet muzzle onto your head until it sits securely in place.")
saynn("[say=issix]Perfect, how do you feel?[/say]")
addButton("Good", "Say you feel good", "walkies", [true])
addButton("Uncomfortable", "Say you feel uncomfortable", "walkies", [false])
if state == "walkies":
if answer:
saynn("[say=issix]As you should. We are good to go now.[/say]")
else:
saynn("[say=issix]Aww, well, you can always say no after walk is over, see if you change your mind until the end, okey? We are good now here.[/say]")
saynn("[say=issix]For the walk I expect you to refer to me as Master. You listen to me only, you don't fuck with random people we walk past. If you are confused what you are to do, look at my other pets for guidence.[/say]")
saynn("[say=issix]Azazel, Hiisi, Lamia, we are going for a walk to the pasture.[/say]")
saynn("[say=hiisi]Is {pc.name} coming with us this time?[/say]")
saynn("[say=issix]He wants to see how is it being my pet, I expect you lot to be nice to {pc.him} and no having sex without their permission, understood? He isn't my pet yet.[/say]")
saynn("Every pet nod their head in unison")
saynn("[say=azazel]So happy we've got a friend to walk with us today![/say]")
saynn("[say=issix]So am I, come.[/say]")
addButton("Let's go", "Follow your (temporary) master on fours", "walkies2")
if state == "walkies2":
processTime(10*60)
aimCamera("main_yard_connector")
setLocationName("Corridor")
addCharacter("issix")
addCharacter("nova")
playAnimation(StageScene.Duo, "stand", {pc="nova", npc="issix", npcAction="stand"})
saynn("[say=nova]Got yourself a new pet Issix?[/say]")
saynn("[say=issix]Not exactly, let's just say {pc.he} is on a... Probation.[/say]")
saynn("Issix chuckles, clearly happy wiith his joke.")
if getModuleFlag("NovaModule", "Nova_GotHumiliatedByPC", false):
saynn("[say=nova]Watch out for this one, this one is feisty one.[/say]")
saynn("[say=issix]Oh, speaking from experience?[/say]")
saynn("[say=nova]Experience I'd rather not have, but yes.[/say]")
saynn("[say=issix]I'll keep that in mind. So far they've been well-behaved.[/say]")
saynn("[say=nova]Better keep that leash tight then.[/say]")
else:
saynn("[say=nova]Cute one.[/say]")
saynn("[say=issix]Had experience meeting them yet?[/say]")
if getModuleFlag("NovaModule", "Nova_SawPC") || getModuleFlag("NovaModule", "Nova_Introduced"):
saynn("[say=nova]Indeed. Not much to say about {pc.him} though.[/say]")
saynn("[say=issix]Cool, we will be on our way then.[/say]")
else:
saynn("[say=nova]Not really, no.[/say]")
saynn("[say=issix]Strange, they are a quite popular of a slut. Oh well, we'll be on our way.[/say]")
saynn("[say=nova]Have a nice walk, Issix.[/say]")
saynn("Nova winks at you and continues to walk towards the stocks.")
addButton("Continue", "Continue the walk", "walkies3")
if state == "walkies3":
processTime(15*60)
clearCharacter()
addCharacter("azazel")
addCharacter("hiisi")
addCharacter("lamia")
saynn("Eventually, you reach your destination, a quiet place near a small lake. On the east high above you you can see greenhouses. A very faint sound of water hitting water can be heard coming from the waterfall. Issix places a large blanket near the lake and invites his pets (including you) on it. Surprisingly he comes to each one of you, unclips the leashes, puts them in side pocket of his bag which he leaves near the blanket and comes closer to the lake, wetting his feet. All done without a word, in relative silence only broken by humming of the station along with sound of waterfall in proximity. Three pets around you lose their top clothes, it would be a bit difficult with your basket muzzle.")
saynn("You look at other pets, trying to understand what you should do. \"Pasture\" is the word Issix used to describe this place, is it not? It seems like Azazel lays on their back, looking up in the skylight, at countless stars in the distance. Hiisi seemingly lost in thought watching his Master relaxing just up close, with his feet in the lake while Lamia, taking his stacks of paper from Master's bag keeeps practicing drawing.")
addButton("Azazel", "Talk to Azazel", "azazel")
addButton("Hiisi", "Talk to Hiisi", "hiisi")
addButton("Lamia", "Talk to Lamia", "lamia")
addButton("Look around", "Do something else?", "else")
if state == "walkies4":
playAnimation(StageScene.Solo, "kneel")
#saynn("Eventually, you reach your destination, a quiet place near a small lake. On the east high above you you can see greenhouses. A very fait sounds of water hitting water can be heard coming from the waterfall. Issix places a large blanket near the lake and invites his pets (including you) on it. Surprisingly he comes to each one of you, unclips the leashes, puts them in side pocket of his bag which he leaves near the blanket and comes closer to the lake, wetting his feet. All done without a word, in relative silence only broken by humming of the station along with sound of waterfall in proximity.")
saynn("You look at other pets, trying to understand what you should do. \"Pasture\" is the word Issix used to describe this place, is it not? It seems like Azazel lays on their back, looking up in the skylight, at countless stars in the distance. Hiisi seemingly lost in thought watching his Master relaxing just up close, with his feet in the lake while Lamia, taking his stacks of paper from Master's bag keeeps practicing drawing.")
addButton("Azazel", "Talk to Azazel", "azazel")
addButton("Hiisi", "Talk to Hiisi", "hiisi")
addButton("Lamia", "Talk to Lamia", "lamia")
addButton("Look around", "Do something else?", "else")
if state == "azazel":
processTime(1*60)
playAnimation(StageScene.Duo, "kneel", {npc="azazel", npcAction="kneel"}) # TODO We need laying down!
saynn("Azazel looks at the stars, his face content.")
addButton("What now?", "Ask what the group usually does coming here", "azazelwhathere")
if getModuleFlag("IssixModule", "Azazel_Sky_Response") == null:
addButton("Stars", "Ask Azazel what does he see in the sky", "azazelsky")
else:
addDisabledButton("Stars", "You've already asked Azazel about the stars")
if getModuleFlag("IssixModule", "Lamia_Is_Hungry", true):
addButton("Lamia", "Tell Azazel Lamia is hungry, maybe he'll be able to help", "azazelfood")
addButton("Back", "End the conversation", "walkies4")
if state == "azazelsky":
saynn("[say=pc]What do you see up there?[/say]")
saynn("[say=azazel]Possibilities. Stars, around which there are planets. Trillions of different creatures living across the galaxies. All with their own memories, lives, worries, cherished family members, friends, connections, stories to tell... Meow.[/say]")
saynn("You lay beside Azazel, looking at stars above, he continues.")
saynn("[say=azazel]We live for a fraction of time in the general timeline, we have a little time to tell our own stories before they are gone, and then there are also people who can shorten our lifespan because of simple hatered or economic reasons. How many stories are untold? How many people forgotten? Why do we even matter in grand scheme of things all of this considered?[/say]")
saynn("You prepare to respond, but before you can start speaking he continues")
saynn("[say=azazel]I like to imagine, I really like to imagine, that somewhere out there there is a planet with creatures who don't have existencial worries, who's lives are filled with pleasures, where they can be who they are without being judged, humiliated or killed. I like to think that they pass down stories through generations, maybe write them down and each new generation has access to them, drawing wisdom and not repeating mistakes of the past. They don't have to worry about AlphaCorp, Syndicate and whatever else is out there, not about groups hunting them down for who they are. They live in a moment, they lie on the blanket and look above, at the stars, holding paw of their partner, imagining the worlds full of happy people like them out there.[/say]")
saynn("You listen to Azazel's monologue in curiosity, deciding not to interrupt or add anything, you just lie beside him, thinking along him of such a planet full of happy creatures. After a while, he speaks again.")
saynn("[say=azazel]Do you think such a planet exists?[/say]")
addButton("Hopeful", "You do think such a planet exists", "azazelskyresponse", [true])
addButton("Doubtful", "You don't believe such a planet exists", "azazelskyresponse", [false])
if state == "azazelskyresponse":
if answer:
saynn("While you don't see Azazel's face, judging from tone of his voice are fairly certain he is smiling, happy")
saynn("[say=azazel]I think so too.[/say]")
else:
saynn("Azazel, sounding a little let down says")
saynn("[say=azazel]I see. I think... Personally... That such a planet exists. I really want it to.[/say]")
saynn("[say=azazel]Thanks for listening, by the way. I think about those things a lot, it's good to have someone new beside me to listen to them.[/say]")
addButton("Back", "Focus on something else", "azazel")
if state == "azazelwhathere":
saynn("[say=pc]I'm a bit lost, what do you usually do when you come here? What are the rules? Why are we not on the leash?[/say]")
saynn("Azazel laughs")
saynn("[say=azazel]Sorry, hearing those questions is kind of funny. This place is what we call „pasture”. We sometimes come here to relax and play. The atmosphere in here lets us forget we are in a prison and there is so much space in here. „Pasture” came from our little inside joke, but I like it and I think it fits this place fairly well.[/say]")
saynn("You see Azazel taking a small piece of dirt from the ground and throwing it at Hiisi, before it hits Hiisi he immediately repositions his body as to pretend he wasn't the culprit of random act of falling dirt, while continuing the conversation to make his alibi stronger")
saynn("[say=azazel]So yeah, in general Master unclips our leash and expects us to use the free time in our own way. It really depends on what we want to do, sometimes we fuck with each other, sometimes Master joins it, sometimes we relax like I do today, sometimes we play hide and seek or tag. I'm afraid that if you are hoping for some action today - you might be disappointed. If I had to guess the rest of us is rather tired or not in the mood.[/say]")
saynn("After piece of dirt reached Hiisi he took notice and looked around for culprit. His eyes eventually met Azazel's who smiled while at the same time speaking to you and trying to keep eye contact with you. Hiisi rolled his eyes and continued staring at Master.")
saynn("[say=azazel]As to the rules? All of the usual ones apply, just don't go too far so Master doesn't have to worry about you, don't fuck with other inmates without Master's permission, and maybe don't bother those who don't want to be bothered, it's everyone's time for some peace, I guess.[/say]")
saynn("[say=azazel]Sorry that it's so uneventful in your trial day, perhaps next time we go and you join us as Master's pet there would be more we could do.")
addButton("Back", "Thank Azazel for explanation", "azazel")
if state == "azazelfood":
setModuleFlag("IssixModule", "Lamia_Is_Hungry", false)
saynn("[say=pc]I talked a bit with Lamia, they are hungry, do you have any food?[/say]")
saynn("[say=azazel]Ughhh, I don't know what's up with him. It's not the first time like this. Master explained to them many times already that snacks are in the bag we take every day when we go on pasture and we are free to take any. For some reason Lamia chooses to avoid taking out the snacks from them even though it's fine for them to do so. Thanks for telling me this {pc.name}, I'll take care of it right away.[/say]")
saynn("Azazel crawls to the bag at the edge of the blanket, rummages it for a minute and takes out an apple and energy bar from it, coming to Lamia and giving them the snacks. Lamia pauses their drawing to consume some snacks, they thanked Azazel by their head nods.")
addButton("Back", "Your job is done here", "walkies4")
if state == "hiisi":
playAnimation(StageScene.Duo, "kneel", {npc="hiisi", npcAction="kneel"})
saynn("Hiisi sits with his hands hugging legs, staring at his Master, and a lake in silence.")
addButton("Master", "Ask why is he staring at his Master", "hiisimaster")
addButton("Distraction", "Hiisi seems nervious, maybe he'd be up for some temporary distraction?", "hiisirpc")
addButton("Back", "End the conversation", "walkies4")
if state == "hiisimaster":
processTime(5*60)
saynn("[say=pc]Is there something wrong with Master?[/say]")
saynn("[say=pc]Oh, {pc.name}? I don't know.[/say]")
saynn("He says without looking at you, continuing to look at his Master")
saynn("[say=hiisi]Usually when Master is down he is irritated and sometimes even aggressive. He isn't this time, he just feels off. I asked him about this before but he hasn't given me an answer.[/say]")
saynn("[say=pc]Do you have any theories?[/say]")
saynn("[say=hiisi]... No.[/say]")
saynn("[say=pc]Certainly odd. He does feel strange.[/say]")
saynn("Hiisi doesn't respond, he continues observing back of his master who is currently sitting and looking across the lake.")
addButton("Back", "End the conversation", "hiisi")
if state == "hiisirpc":
saynn("[say=pc]Hey Hiisi, you seem a bit anxious, how about we play a bit of rock, paper, scissors to lighten the mood?[/say]")
saynn("Hissi looks at you, his face quite sad but he seems convinced.")
saynn("[say=hiisi]I guess... We could play until 3 wins if you want... Do you want to play for something?[/say]")
saynn("[say=pc]Sure, what would you like to play for?[/say]")
saynn("[say=hiisi]What about a future favor? I promise it won't be anything harmful... I'd just want to try something.[/say]")
saynn("[say=pc]Sounds suspicious but I'm in, as for myself...[/say]")
addButton("Good time", "Ask Hiisi for sex", "hiisirpsfirst", [1])
addButton("Snuggle", "Wholesome version of close contact fun, but maybe that's what Hiisi needs", "hiisirpsfirst", [2])
addButton("Drink", "Ask Hiisi for something regular, energy drink shouldn't be that hard to get right?", "hiisirpsfirst", [3])
if state == "hiisirpsfirst":
match getModuleFlag("IssixModule", "Hissi_RPS_data")["chosen_reward"]:
1:
saynn("[say=pc]How about good time as a reward? Right after the game?[/say]")
saynn("[say=hiisi]I'm not sure... You are not Master's pet yet...[/say]")
saynn("[say=pc]That's true, and nonetheless Master Issix decided to take me for a walk here, I don't think he would mind.[/say]")
saynn("He thinks for good 20 seconds about your proposition.")
saynn("[say=hiisi]Alright, you're on.[/say]")
2:
saynn("[say=pc]How about a hug as a reward? Right after the game?[/say]")
saynn("[say=hiisi]... Just a hug? You are not using hug as an euphemism, right?[/say]")
saynn("[say=pc]Nope. Just a hug.[/say]")
saynn("Hiisi seems surprised a little, you can see his tail move hearing that.")
saynn("[say=pc]Sounds great, I like it, you're on.[/say]")
3:
saynn("[say=pc]You could give me something... Like an energy drink? Not right now, at some other time.[/say]")
saynn("[say=hiisi]Just that? An energy drink? Sounds doable.[/say]")
saynn("[say=pc]Just that.[/say]")
saynn("[say=pc]Sure, you're on.[/say]")
saynn("[say=pc]Great! Let's do this. Three... Two... One...[/say]")
addButton("Rock", "Use rock in this round", "hiisirps", [1])
addButton("Paper", "Use paper in this round", "hiisirps", [2])
addButton("Scissors", "Use scissors in this round", "hiisirps", [3])
if state == "hiisirps":
var rpc_data = getModuleFlag("IssixModule", "Hissi_RPS_data") # {"winpc": 0, "winh": 0, "chosen_reward": answer, "reward_acquired": false, "last_used": 0}
saynn("[say=pc]"+rock_paper_scissors_translation[rpc_data["last_used"]%10]+"![/say]")
saynn("[say=hiisi]"+rock_paper_scissors_translation[rpc_data["last_used"]/10]+"![/say]")
match rps_win_conditions(rpc_data["last_used"]%10, rpc_data["last_used"]/10):
1:
saynn("{pc.name} wins!")
2:
saynn("Hissi wins!")
3:
saynn("It's a tie!")
if rpc_data["winpc"] or rpc_data["winh"]:
saynn("Current standings: \n{pc.name}: {winpc}\nHissi: {winh}".format(rpc_data))
if rpc_data["winpc"] > 2:
addButton("Celebrate", "You've won, wooho", "hiisirpspcwin")
elif rpc_data["winh"] > 2:
addButton("Lost", "You've lost the game fair and square", "hissirpshiisiwin")
else:
addButton("Rock", "Use rock in this round", "hiisirps", [1])
addButton("Paper", "Use paper in this round", "hiisirps", [2])
addButton("Scissors", "Use scissors in this round", "hiisirps", [3])
if state == "hiisirpspcwin":
saynn("[say=pc]Haha, I did it. Nice game, thanks for playing Hissi.[/say]")
saynn("You've noticed that his mood has brightened, and he isn't so gloomy anymore.")
saynn("[say=hiisi]Yeah, thank you for that, was actually pretty nice, glad we could have this one.\nYou know... You are pretty cool {pc.name}.[/say]")
saynn("He looks down, but with slight grin on his face.")
saynn("[say=pc]Awwwww. Thank you Hiisi! You are pretty cool yourself too, you know![/say]")
saynn("[say=hiisi]Yeah... As to your reward...[/say]")
match getModuleFlag("IssixModule", "Hissi_RPS_data")["chosen_reward"]:
1:
saynn("[say=hiisi]We can do that in here... If you want. But, would you like to be in charge or should I?[/say]")
addButton("Dom Hiisi", "Say you'd like to dominate Hiisi", "hiisisubsex")
addButton("Sub Hiisi", "Say you'd like Hiisi to take charge", "hiisidomsex") # TODO
2:
saynn("[say=hiisi]Let's do it![/say]")
saynn("He exlaims, 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]")
addButton("Back", "Say that sure, you're going to ask him about it then", "hiisi")
if state == "hiisihug":
playAnimation(StageScene.Hug, "hug", {pc="pc", npc="hiisi", bodyState={naked=true, hard=false}, npcBodyState={naked=true, hard=false}})
saynn("You come really close to Hiisi, stretching your arms and embracing the puppy")
saynn("[say=pc]It's all fine, okey? You are a good boy.[/say]")
saynn("He embraces you back, applying some strength into a hug. This hug feels really intimate for some reason, you can feel Hiisi's breath, you can feel his heartbeat with how close he is. You stay like this for a while.")
saynn("[say=hiisi]Thank you, I needed that.[/say]")
addButton("Back", "This path is not yet finished, sorry!", "hiisi")
if state == "hiisisubsex":
saynn("You reach with your paws to pull Hiisi up close, he puts up no resistance as you embrace him in a tight hug, your paws exploring his back going lower and lower until reaching his butt and squeezing his butt cheeks. He yelps.")
saynn("[say=pc]Is the puppy ready for some action? I'll try to be gentle.[/say]")
saynn("[say=hiisi]Let's just get it over with already.[/say]")
saynn("[say=pc]Good. Let's start.[/say]")
if GM.pc.hasReachablePenis():
addButton("Anal", "Use your tool in doggy ass", "hiisisubanal")
addButton("Oral", "Make the doggo suck your tool", "hiisisuboral") # TODO
elif (GM.pc.isWearingStrapon() or GM.pc.hasStrapons() and GM.pc.canWearStrapon()):
var strapons: ItemBase = GM.pc.getStrapons()
for strapon in strapons:
addButton("Anal", "Use a "+strapon.getCasualName()+" on doggy ass", "hiisisubanal", [strapon.id])
#addButton("Oral", "Make the doggo suck your "+strapon.getCasualName(), "hiisisuboral", [strapon])
#if GM.pc.hasReachableVagina():
# addButton("Vaginal", "Make the dog fuck your pussy", "hiisisubvaginal") # TODO low priority
if state == "hiisisubanal":
playAnimation(StageScene.SexAllFours, "tease", {pc="pc", npc="hiisi", bodyState={naked=true, hard=true}, npcBodyState={naked=true, hard=false}})
# You may believe me or not, but after 7 years of reading furry smut I can't write smut myself. The following is probably my first attempt at writing any kind of sexual scene all by myself, please be gentle with the criticism <3
saynn("[say=pc]What a good subby dog you are! How about you turn around so I can prepare you?[/say]")
saynn("You let go of Hiisi, he turns around on his knees and puts his front paws on the ground, nicely staying on his fours for you. Presenting you with his back full of light gray fur and on lower part of it a brand ”PROPERTY OF ISSIX”. A reminder of what's to come if you decide to dedicate yourself to Master Issix. You run your fingers through the fur on his back gently touching the brand itself, its texture pretty smooth.")
saynn("[say=hiisi]Are you waiting for something? Don't want to hurry you up, just unsure if you want something of me.[/say]")
saynn("[say=pc]You are good, the color of your fur is just so good.[/say]")
if GM.pc.getInventory().hasItemID("lube"):
GM.pc.getInventory().removeXOfOrDestroy("lube", 1)
saynn("You apply some lube onto canine's pucker hole")
saynn("[say=hiisi]Ahhhh, cold![/say]")
saynn("[say=pc]Only for a moment, we are going to make it hot really soon. Hang on tight there Hiisi.[/say]")
saynn("You don't waste your chance to stimulate the dog with your fingers. First putting just one to test out the waters. Hiisi's hole isn't tight nor loose, though one finger already makes the dog lose his composure. He starts panting a little. You insert second finger intensifying the sounds coming from the other end. You massage his ring to relax it a little bit.")
saynn("[say=pc]You okey there?[/say]")
saynn("He respond just with huffs. It really didn't take a lot to stimulate the gray furred canine. You take out your fingers and see glistening hole.")
if strapon_selected != null:
saynn("You fit in place your {pc.penisOrStrapon}, and tease Hiisi with the tip.")
else:
saynn("You tease doggo pucker with the tip of your {pc.penis}.")
saynn("[say=pc]Does the dog want a bone now, or should I keep teasing?[/say]")
saynn("[say=hiisi]Nooo. Please put it in me.[/say]")
addButton("Continue", "Put the bone inside the dog ass", "hiisisubanal2")
if state == "hiisisubanal2":
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, but 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 hears coming from his muzzle on the other side, pleasure melting away ability to speak well. You slightly quicken the pace being close to orgasm.")
addButton("Creampie?", "Does the canine want you to pull out?", "hiisisubanal3")
if state == "hiisisubanal3":
playAnimation(StageScene.SexAllFours, "fastflop", {pc="pc", npc="hiisi", bodyState={naked=true, hard=true}, npcBodyState={naked=true, hard=true}})
saynn("[say=pc]Umm, Hiisi, do you want me to cum inside or pull out?[/say]")
saynn("[say=hiisi]HMmmaaahhhhh.[/say]")
saynn("Seemingly unable to properly respond you decide to pull out before you reach orgasm, feeling like it's what Hiisi would want. You only now notice Hiisi's hard cock beneath as if there wasn't enough of evidence canine was enjoying the treatment.") # No you stupid bitch of a writer, why would a reader want that??????
saynn("Hiisi's front arms eventually give up and only his butt is sticking out in the air as you ram "+("your stapon" if strapon_selected else "your penis")+" in his pleasure tunnel, eventually feeling that soon your pleasure will achieve its final destination.")
addButton("Pull out", "Pull out of the puppy", "hiisisubanal4")
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}})
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("[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.")
addButton("Finish", "Your little session with Hiisi is over now, time to go back to other stuff", "hiisi")
if state == "hiisidomsex":
addButton("Back", "This path is not yet finished, sorry!", "hiisi") # TODO
#getCharacter("hiisi").prepareForSexAsDom()
#runScene("GenericSexScene", ["hiisi", "pc"], "subbysex")
if state == "hissirpshiisiwin":
saynn("[say=hiisi]Awesome! I didn't expect to win, that was fun.[/say]")
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=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]")
saynn("[say=hiisi]Pleaase! I'm just curious, I won't do anything dangerous, and hypnosis doesn't make you go against your will anyways, you can always stop yourself.[/say]")
saynn("It's true that hypnovisors don't really force things onto their wearer, just significantly affect their submissiveness, but would it be a good idea to let Hiisi mess with Hypnovisors and put them on you?")
saynn("[say=pc]Fine, you did win after all. But promise me you won't try to mess with my brain.[/say]")
saynn("[say=hiisi]Of course! I won't.[/say]")
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!
saynn("Lamia lays on his belly, holds one of the colorful pencils from his drawing kit and draws. Next to him a stack of empty paper sheets as well as a visibly smaller but still impressive stack of filled out papers")
if getModuleFlag("IssixModule", "Lamia_Is_Hungry") == null:
addButton("Drawings", "Look at the drawings", "lamiadrawings")
else:
addDisabledButton("Drawings", "You've already asked about the drawings")
addButton("", "", "lamia") # TODO 2nd option walkies for Lamia is needed
addButton("Back", "End the conversation", "walkies4")
if state == "lamiadrawings":
processTime(10*60)
saynn("You crawl to Lamia's stack of drawings, the one at the top is a fairly detailed drawing of a bird. Lamia notices your interest and smiles at you. He takes the top sheet of paper from his drawn pile and invites you to browse.")
saynn("The drawing underneath the bird shows an inmate in orange uniform sitting in front of a table that has a cake on it, considerint the look of the cake you can guess its a birthday cake. Around the inmate there are 4 other inmates.")
saynn("[say=pc]Those are really good. Are they showing real events? Are those things you've seen?[/say]")
saynn("You quickly realize that asking two questions at the same time might make it very difficult for Lamia to answer in a way you'd understand, you quickly correct yourself.")
saynn("[say=pc]Ekhem, I mean, for example, the scene with the birthday cake, or a bird, do you draw based on things you've personally been a witness of?[/say]")
saynn("They look at you and move their head to the sides putting their shoulders slightly higher, you interpret it as „sometimes, sometimes not”.")
saynn("[say=pc]I see, so just sometimes[/say]")
saynn("They nod to confirm")
saynn("You look at their current drawing, it's Issix, with what looks to be like a fishing rod. You look at Issix, just to be sure, he certainly does not hold any fishing rod, but other than that everything else seems to be correct from position of Lamia. Suddenly an idea comes to your mind.")
saynn("[say=pc]Lamia, I do wonder, how would you draw your current feelings?[/say]")
saynn("Without a moment of hesitation, Lamia turns the paper to the other side, pulls out a brown pencil, draws a circle with some darker brown irregular circle like figures inside. After a moment you have a good idea that it's a cookie. Then they draw a very simple sad face.")
saynn("Cookie sad? Sad cookie? Umm... Are you... Hungry perhaps?")
saynn("Lamia nods, their paw on their belly, further confirming your guess.")
addButtonWithChecks("Apple", "Give the fox breed an apple", "giveapple", [], [[ButtonChecks.HasItemID, "appleitem"]])
#addButtonWithChecks("Energy drink", "Give the fox breed an energy drink... Out of lack of better things?", "givedrink", [], [[ButtonChecks.HasItemID, "EnergyDrink"]])
addButtonWithChecks("Cookie", "Give the fox breed a cookie", "givecookie", [], [[ButtonChecks.HasItemID, "Cookie"]])
addButton("Nothing", "You have nothing to give to the fox breed, hoping that they find other way to sate their little hunger", "nofood")
if state == "nofood":
setModuleFlag("IssixModule", "Lamia_Is_Hungry", true)
saynn("[say=pc]Aww, hungry? Unfortunately I have brought no snacks with myself. Sorry![/say]")
saynn("Lamia is visibly saddened after hearing that, however they quickly return to drawing, occupying their mind.")
addButton("Back", "End the conversation", "lamia")
if state == "giveapple":
setModuleFlag("IssixModule", "Lamia_Is_Hungry", false)
saynn("[say=pc]Here, have an apple. That's all I have.[/say]")
saynn("You pass an apple to the fox, they take a bite and give you a warm smile, munching it slowly. You hope it satiates them a bit.")
addButton("Back", "End the conversation", "lamia")
if state == "givecookie":
processTime(15*60)
setModuleFlag("IssixModule", "Lamia_Is_Hungry", false)
setModuleFlag("IssixModule", "Received_Portrait_From_Lamia", true)
saynn("[say=pc]Hmm, cookie you say? So it happens I have one, you pull the cookie in front of them.[/say]")
saynn("Their eyes lit up like candles, you stare at the cookie, pleading look in their face. They need no words to let you know just how much are they starved for such a sweet treat.")
saynn("[say=pc]You are not allergic, right? Wouldn't want to cause an incident.[/say]")
saynn("They shake their head - no, clearly. It feels that if you don't give them cookie very soon, not only the blanket will be wet by salivating fox, but you may eventually lose a finger, or two. You decide to pass the cookie to the fox.\nThey take it, and to your surprise, they do not devour it immediately. They take very small bites, seems like they are treasuring every single bite of that cookie. Watching them be so happy about such a little thing fills your heart with warmth. You could stare at this fox delectating themselves with the cookie for an hour, and it would still be worth watching. Shortly after they eat half of it they show you a pointing finger, a sign you should wait a moment. They pull out a new piece of paper and start drawing.")
saynn("You look at them, being very focused, they look at you too, from time to time. After 15 minutes they are done. They take their artwork and show it to you, being incredibly proud of themselves, closing their eyes.\nYou are astounded. On the paper your very "+GM.pc.getBodypart(BodypartSlot.Head).getName().split("head")[0] +" face. It's a portrait of you from side view, what's special about this portrait however, is that inside of your mouth you have a cookie. Basket muzzle didn't make the cut, probably because it would ruin the portrait. While the portrait looks incredibly silly, the happiness of artist holding it could potentially kill if it was able to.")
addButton("Hug", "Thank and hug Lamia as thanks", "hugandthank")
addButton("Headpat", "Give the artist fox a headpat", "headpat")
if state == "hugandthank":
saynn("Stunned, your heart melted, the first thing that comes to your mind is to hug the fox. You do that completely on impulse with no hesitation. Fox at first taken aback by that gesture (embarassed, blushing hard), eventually embraces the hug and reciprocates. Still hugging you say")
saynn("[say=pc]Thank you Lamia, I love it so much. I'll cherish it.[/say]")
saynn("They smile and nod twice to you excitedly.")
addButton("Back", "End the conversation", "lamia")
if state == "headpat":
playAnimation(StageScene.Grope, "pat", {pc="pc", npc="lamia", bodyState={naked=true, hard=false}, npcBodyState={naked=true, hard=false}})
saynn("Stunned, your heart melted, the first thing that comes to your mind is to give the fox a headpat. You put your paw on their head and gently pat them. Their ears flatten and their face seems very pleased by your patting.")
saynn("[say=pc]Thank you Lamia, I like it very much.[/say]")
saynn("They smile and nod to you excitedly.")
addButton("Back", "End the conversation", "lamia")
if state == "else":
saynn("You are thinking of doing something else. With plenty of space you could do plenty of activities, even if alone, considering all of the others don't seem to be keen on doing anything.")
if getModuleFlag("IssixModule", "Shared_Marshmallows") == null:
addButton("Walk", "Go for a walk near your group", "elsewalk")
else:
addDisabledButton("Walk", "You've already taken a walk")
addButton("Wait", "Spend time until Master calls it the end of the little picnic (you won't be able to come back to other activities)", "elsewait")
if state == "elsewalk":
playAnimation(StageScene.Solo, "stand", {pc="pc", bodyState={naked=false, hard=false}})
processTime(10*60)
saynn("You slowly are walking alongside the lake. Eventually you arrive at short waterfall. You can come so close to it, that you can feel the droplets of water hitting your fur, the air more humid and the sounds louder but yet still gentle. You look at the opposite side, greenhouses high above you. It's surprising how little attention this place gets with so many inmates in the prison.") # TODO Fur? Skin?
saynn("As you focus on the waterfall you suddenly get spooked by the sounds behind you, you turn around and just see another inmate jogging. Talk about lack of inmates... They reach the wall, touch it and go back the way they came from. What catches your attention however is a pack of... Something dropping on the ground as the inmate turned around and started running away. Curious, you approached the lost item and found it's a very small bag of... Marshmallows of some sorts? If that's so, that would be considered a treat in the prison, sweets such as that are pretty expensive rarity. You look back at the inmate, however at this point they are beyond the point where shouting at them makes sense, that's one athletic jogger. You grab the bag and decide what to do with it.")
addButton("Share", "Come back to your group and share with everyone", "sharemarshmallows")
addButton("Eat", "There aren't a lot of them in the bag, enough to share with the group but then, you could just eat them yourself?", "eatmarshmallows")
if state == "sharemarshmallows":
setModuleFlag("IssixModule", "Shared_Marshmallows", true)
playAnimation(StageScene.Duo, "crawl", {pc="pc", npc="issix", bodyState={naked=false, hard=false}, npcBodyState={naked=true, hard=false}})
saynn("You come back to your group walking rather fast, being excited about sharing something you've found with everyone else.")
saynn("[say=pc]Hey, I've found this little bag, they seem like marshmallows? There aren't a lot of them, do you want some?[/say]")
saynn("This catches the attention of Issix, who gives you a signal to approach him. You get on your knees and come to him with the bag in your maw.")
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 joggin 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("[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]")
saynn("[say=azazel]I'll take one![/say]")
saynn("[say=hiisi]So will I.[/say]")
saynn("Lamia taking a break from drawing nods their head in approval. You hand everyone their marshmallows, Azazel gets 2, Hiisi 1, Lamia 2 and you are left with the last one. You all eat them together discussing its sweet but a bit strange taste that leaves a weird aftertaste, which you all try to get rid of with water bottle from Master's bag, unsuccessfully.")
addButton("Back", "Feast is over", "else")
if state == "eatmarshmallows":
setModuleFlag("IssixModule", "Shared_Marshmallows", false)
saynn("Your eyes wander. You are a bit away from your group and they are all occupied. Besides, that's stranger food, you don't know if it's safe to eat, and you wouldn't want to poison Master and his pets! You open the pack and pick the marshmallows and eat them one by one, they are incredibly sweet, though they leave a very strange aftertaste in your mouth. Odd. After consuming them all you throw away the packaging a decide to come back, finding yourself back in your little picnic like group, feeling a bit doozy.")
addButton("Back", "You ate the marshmallows and came back from your little walk", "else")
if state == "elsewait":
saynn("During an hour or so Master came back to the blanket and spent the time with you and his other pets. He talked about various things he saw in his life as well as deals he has struck in the time he spent in the prison. Azazel, Hiisi and Lamia all put on their inmate uniforms. Eventually he started packing - blanket, paper sheets, toys and other things, came to each one of us, clipped the leash to our collars and looked around.")
saynn("[say=issix]Everyone got all of their stuff? Good good. Let's head back to our corner, we'll talk there {pc.name}.[/say]")
saynn("With that, you've all started walking towards the corner.")
processTime(30*60)
addButton("Leave", "Let's head back", "walkies5")
if state == "walkies5":
aimCamera("hall_ne_corner")
setLocationName("Issix's Corner")
if GM.main.isVeryLate():
saynn("You arrive in Issix's corner. Since it's pretty late Issix talks with his other pets and promptly lets them go to their cells, he asks you to stay. He sits on his chair and starts talking.")
else:
saynn("You arrive in Issix's corner. Other pets situate themselves on their own blankets on the floor. Issix is unpacking stuff from the bag, you stay there kneeling next to him, observing his every move. He makes some conversations with his other pets. Eventually he finishes, sits down and faces you.")
saynn("[say=issix]So, how was the walk? Have you enjoyed it?[/say]")
addButton("I did", "Say that you enjoyed the walk", "walkenjoyed")
addButton("Nope", "Say that you didn't enjoy the walk", "walkbad")
if state == "walkenjoyed":
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand", bodyState={leashedBy="issix"}})
saynn("[say=pc]Yeah, it was fun to „camp” on the pasture, how often do you go there?[/say]")
saynn("[say=issix]Every 9 days or so, whenever I feel like I need some time out. Being in here all the time, among this noise requires breaks to hang out with just my pets or at least get away from all this hustle. Today it was... More passive, mostly due to myself needing some time for myself. That's not usually how our walks there go, but it happens.[/say]")
saynn("You nod your head in understanding")
if GM.pc.isMuzzled():
saynn("[say=issix]Also, let me take this off you now, it served its purpose, you did look cute in it though.[/say]")
saynn("Issix says before fiddling with the fastener of your basket muzzle still on your face.")
GM.pc.getInventory().removeItemFromSlot(InventorySlot.Mouth)
saynn("[say=issix]Here you go. I'll take it.[/say]")
saynn("[say=issix]Anyways, you are probably wondering if you passed the last trial. I was mainly testing how well you'd do with my other pets, I've talked with them briefly after the walk. Let's see...[/say]")
addButton("Results", "Listen to Issix's summary of the walk", "walkresults")
if state == "walkbad":
saynn("[say=pc]To be quite honest I didn't enjoy the walk. I expected more out of it, instead I was bored for a while and every other pet felt absorbed by their own thing.[/say]")
saynn("[say=issix]I see. I appreciate your honesty. It's true that today's walk has been rather passive I'd say. I too didn't particularly have the mood to do much with my pets. It's not how usually walks go by - to be frank. Wish you've a better experience though.[/say]")
saynn("He looks saddened, he really must have wished you had better time during the walk")
if GM.pc.isMuzzled():
saynn("[say=issix]Also, let me take this off you now, it served its purpose, you did look cute in it though.[/say]")
saynn("Issix says before fiddling with the fastener of your basket muzzle still on your face.")
GM.pc.getInventory().removeItemFromSlot(InventorySlot.Mouth)
saynn("[say=issix]Here you go. I'll take it.[/say]")
saynn("[say=issix]I bet you are curious how well did you do on the last trial. Let's summarize, shall we?[/say]")
addButton("Summary", "Listen to Issix's summary of the walk", "walkresults")
if state == "walkresults":
var lamia_task = getModuleFlag("IssixModule", "Lamia_Is_Hungry")
var azazel_talk = getModuleFlag("IssixModule", "Azazel_Sky_Response")
var hiisi_game = getModuleFlag("IssixModule", "Hissi_RPS_data")
var walk_result = getModuleFlag("IssixModule", "Shared_Marshmallows")
var walk_score = pet_handle_flag_response(lamia_task) + pet_handle_flag_response(azazel_talk != null) + pet_handle_flag_response(hiisi_game != null) + pet_handle_flag_response(walk_result)
if lamia_task == false:
saynn("[say=issix]Lamia was all happy and enjoyed your company. Said that you helped with their hunger issue. I still don't understand why they don't just take food from my bag on during the walks but they are stubborn about it.[/say]")
else:
saynn("[say=issix]When I took out food from my bag Lamia practically begged me for food, they know full well where the food is during our walks and yet they haven't taken it out by themselves. I wouldn't want to put you on spotlight for not tending and inquiring about how they feel, but I had hoped you'd at least help them out somehow.[/say]")
if azazel_talk == true or azazel_talk == false:
saynn("[say=issix]Azazel was really happy to have a conversation partner. Hiisi was too focused on me for the walk and Lamia was doing his own thing. I'm really happy that you kept them company on the pasture. They can have their own philosophical ramblings from time to time, guess they got it after me.[/say]")
saynn("He laugs")
saynn("[say=issix]But seriously, that's really nice of you to engage them in one of those.[/say]")
else:
saynn("[say=issix]Azazel mentioned that you didn't exactly talk with them much during the walk. That's a little disappointing but they themselves weren't really outgoing that day so I understand. However please tend to the needs of my other pets next time.[/say]")
if hiisi_game != null:
saynn("[say=issix]It's quite an amazing feat, but I've also heard you engaged Hiisi in a game! That's phenomenal! I know lately he is very focused on me, he is concerned about my wellbeing, what a cute pet. No matter how many times I tell him to stop worrying he never does. Such is that puppy.[/say]")
if hiisi_game["winpc"] == 3 and hiisi_game["chosen_reward"] == 1:
saynn("[say=issix]Normally if someone was trying to mate with my pet without my permission I'd make an example of them for entire prison. However for today you were temporally my pet on probation. So it was pretty cute seeing Hiisi engaging in some fun with you for a change. He usually isn't this forward. Good job out there.[/say]")
saynn("You blush")
else:
saynn("[say=issix]Hiisi was very down for the entire walk, I did not expect you to not even attempt to brighten his mood. I believe you should have thought of that, you had plenty of time. What a shame.[/say]")
if walk_result == true:
saynn("[say=issix]I'm also really happy you decided to share the „marshmallows” with us all. It's been a while since I last ate one of those, so that helped me plenty considering I myself were a bit downed today, and other pets seemed to like them as well.[/say]")
if walk_score < 2:
setModuleFlag("IssixModule", "Quest_Rejected_By_Issix", 3)
saynn("[say=issix]Ultimately, I'm afraid you've failed the last trial. While I can't really call the relationship my pets have with me and themselves „family”, since they are my property, we aren't equal and they are listening to me without any question, they do have to take care of each other. If my new pet doesn't have any care in the world about my other pets, I don't think it would be a good fit. I can train many things, but empathy is one of those things I'm not willing to spend time on.[/say]")
saynn("He says that with sadness in his voice. It's clear he doesn't like the decision he has made by is sticking to his convictions.")
addButton("Apologize", "Apologize and ask for forgiveness", "issixapologize")
addButton("Accept", "Accept the decision", "issixacceptdefeat")
return
elif walk_score < 4:
saynn("[say=issix]I'm glad that you've spend the time with my other pets, that's exactly waht I wanted to see and I'm relieved you knew what to do. I'm proud to announce that you've passed my last trial and you have my permission to become my pet, though the details of how this will work we'll have to figure out tomorrow. It's late already and I'd like to attend to other matters. Think about it for one more night, after you agree to become my pet there is no going back. See you tomorrow, pet.[/say]")
else:
saynn("[say=issix]I have to say, you've exceeded my expectations. You've been a large part of today activities and you engaged everyone. You cared about problems of every pet and addressed them in one way or another. That's exactly what I wanted to see and more, I'm relieved you knew what to do. I'm proud to announce that you've passed my last trial and you have my permission to become my pet, though the details of how this will work we'll have to figure out tomorrow. It's late already and I'd like to attend to other matters. Think about it for one more night, after you agree to become my pet there is no going back. See you tomorrow, pet.[/say]")
GM.main.setModuleFlag("IssixModule", "Quest_Wait_Another_Day", true)
setModuleFlag("IssixModule", "Quest_Status", 7)
addButton("Agree", "Thank Issix and agree to come tomorrow", "endthescene")
if state == "issixapologize":
saynn("[say=pc]I apologize, I didn't know, I were stressed on my first walk and I didn't know what to do. I spent it in silence because that's a new situation for me. Please give me another chance Master Issix![/say]")
saynn("[say=issix]I'm sorry {pc.name} but that's not good enough. My decision was hard to make but final. Spend more time and look at creatures around you, even in such grim place as this one, there are many that need it.[/say]")
saynn("As brutal as it is, it doesn't seem like you can do much more here. It's time to accept your failure and move on.")
addButton("Leave", "You've been rejected, nothing more to do here", "endthescene")
if state == "issixacceptdefeat":
saynn("[say=pc]I understand, thank you for giving me an opportunity to prove myself, and I'm sorry for not doing enough.[/say]")
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 pet_handle_flag_response(response): # true + true doesn't exist in GDScript :(
if response == null or response == false:
return 0
if response == true:
return 1
return 1
## Function to determine a winner of given Rock Paper Scissors game
## Takes Player answer that is an int from 1 to 3 (1: Rock, 2: Paper, 3: Scissors)
## And NPC answer of same format
## Returns 1 if player wins, 2 if NPC wins, 3 if it's a tie
func rps_win_conditions(pc_answer: int, h_answer: int):
if pc_answer == h_answer: # tie
return 3
if rock_paper_scissors[pc_answer] == h_answer: # player win
return 1
return 2 # npc wins
func _react(_action: String, _args):
if _args:
answer = _args[0]
if _action == "hiisisubanal":
strapon_selected = answer
GM.pc.getInventory().forceEquipStoreOtherUnlessRestraint(strapon_selected)
GM.pc.addLust(30)
if _action == "hiisisubanal2":
GM.pc.addLust(30)
if _action == "hiisisubanal3":
GM.pc.addLust(30)
if _action == "hiisisubanal4":
GM.pc.orgasmFrom("rahi")
GM.main.getCharacter("hiisi").cummedOnBy("pc")
GM.pc.addLust(-100)
if _action == "azazelskyresponse":
setModuleFlag("IssixModule", "Azazel_Sky_Response", answer)
if _action == "hiisirpsfirst":
setModuleFlag("IssixModule", "Hissi_RPS_data", {"winpc": 0, "winh": 0, "chosen_reward": answer, "reward_acquired": false, "last_used": 0})
if _action == "hiisirps":
var current_data = getModuleFlag("IssixModule", "Hissi_RPS_data")
var npc_answer = RNG.randi_range(1,3)
match rps_win_conditions(answer, npc_answer):
1:
current_data["winpc"] += 1
2:
current_data["winh"] += 1
current_data["last_used"] = answer+(npc_answer*10)
setModuleFlag("IssixModule", "Hissi_RPS_data", current_data)
if _action == "walkies2":
runScene("ParadedOnALeashScene", ["issix", GM.pc.getLocation(), "main_yard_connector", [
"Lamia, please try to keep up",
"Azazel, watch out, inmate on your right is aboout to reach her climax",
"Hiisi, stop sniffing every inmate, you are slowing us all down",
"{pc.name} stay in between Lamia and Hiisi, you fit there perfectly"
], "main_yard_connector", "crawl"])
if _action == "walkies3":
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand", bodyState={leashedBy="issix"}})
runScene("ParadedOnALeashScene", ["issix", GM.pc.getLocation(), "yard_waterfall", [
"Lamia, please try to keep up",
"Azazel, watch out, inmate on your right is aboout to reach her climax",
"Hiisi, stop sniffing every inmate, you are slowing us all down",
"{pc.name} stay in between Lamia and Hiisi, you fit there perfectly"
], "yard_waterfall", "crawl"])
if _action == "walkies5": # Heading back
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand", bodyState={leashedBy="issix"}})
runScene("ParadedOnALeashScene", ["issix", GM.pc.getLocation(), "hall_ne_corner", [
"Lamia, I understand you are tired but please try to keep up",
"Azazel, can you focus? You are stepping on me",
"Hiisi, head up"
], "hall_ne_corner", "crawl"])
if _action == "eatmarshmallows":
GM.pc.addIntoxication(0.5)
if _action == "sharemarshmallows":
GM.main.getCharacter("azazel").addIntoxication(0.2)
GM.main.getCharacter("hiisi").addIntoxication(0.1)
GM.main.getCharacter("lamia").addIntoxication(0.2)
GM.pc.addIntoxication(0.1)
if _action == "giveapple":
GM.pc.getInventory().removeXOfOrDestroy("appleitem", 1)
if _action == "givecookie":
GM.pc.getInventory().removeXOfOrDestroy("Cookie", 1)
if(_action == "endthescene"):
endScene()
return
setState(_action)

174
Scenes/PetsTalkMain.gd Normal file
View file

@ -0,0 +1,174 @@
extends SceneBase
func _init():
sceneID = "PetsTalkScene"
func _run():
if(state == ""):
setLocationName("Issix's Corner")
saynn("In front of you - three slaves belonging to Issix.")
addCharacter("azazel")
addCharacter("lamia")
addCharacter("hiisi")
addButton("Azazel", "Approach Azazel", "azazelmain")
addButton("Hiisi", "Approach Hiisi", "hiisimain")
addButton("Lamia", "Approach Lamia", "lamiamain")
addButton("Leave", "Be on your way", "endthescene")
if(state == "azazelmain"):
playAnimation(StageScene.Duo, "kneel", {pc="azazel", npc="pc", bodyState={naked=false, hard=false}})
clearCharacter()
addCharacter("azazel")
addButton("Talk", "Talk to Azazel", "azazeltalk")
addButton("Appearance", "Look at Azazel", "azazelappearance")
if(GM.pc.getInventory().hasItemID("CatnipPlant")):
saynn("Before you even have the time to approach Azazel, you see his head hovering over his body, his little nose working very hard to track down the source of the curious smell. He looks around with interest, until he sees you approaching.\nHe observes you with interest as you come close.")
saynn("[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.")
addButton("Give Catnip", "Give Azazel the catnip", "catnip")
else:
if getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) == 0:
saynn("You approach Azazel, he recognizes sudden attention given to him, he goes on his fours doing some kitty back streching before kneeling towards you expectandly. You notice he took a quick peek at his master beforehand.")
else:
pass # TODO
addButton("Back", "Take a step back", "")
if state == "hiisimain":
if getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) == 0:
saynn("You approach Lamia")
else:
addButton("Talk", "Talk to Lamia", "hiisitalk")
addButton("Appearance", "Look at Lamia", "hiisiappearance")
if state == "hiisitalk":
var HiisiRPS = getModuleFlag("IssixModule", "Hissi_RPS_data")
if HiisiRPS != null:
if HiisiRPS["chosen_reward"] == 3 and HiisiRPS["reward_acquired"] == false:
addButton("Drink", "Ask Hiisi about energy drink that you've won through the game of Rock Paper Scissors", "hiisienergy")
# TODO
if state == "hiisienergy":
var HiisiRPS = getModuleFlag("IssixModule", "Hissi_RPS_data")
HiisiRPS["reward_acquired"] = true
setModuleFlag("IssixModule", "Hissi_RPS_data", HiisiRPS)
saynn("[say=hiisi]Sure, I got it, here you go.[/say]")
saynn("He passes energy drink can to you. Thanks for brightening my mood that day.")
saynn("You received 1 Energy Drink.")
addButton("Back", "Take a step back", "hiisitalk")
if(state == "lamiamain"):
if getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) == 0:
saynn("You approach Lamia")
else:
pass # TODO
addButton("Talk", "Talk to Lamia", "lamiatalk")
addButton("Appearance", "Look at Lamia", "lamiaappearance")
saynn("")
if(state == "catnip"):
saynn("You take the catnip and slowly reach your paw with the plant to the feline. Halfway there feline snatches the catnip from you paw and throws it in the air. His paws go above and he plays airborne valley...catnip with it? Eventually he misses with his paw and catnip falls on his muzzle, he freezes for a moment as if paralyzed, the pupils in his eyes become large.")
saynn("[say=pc]Umm, Azazel, are you okey?[/say]")
sayn("He turns his face towards you again, enlarged pupils still in his eyes, surprised face expression staring at you.")
saynn("After a moment his pupils go back to normal, and his face expression turns content.")
saynn("[say=azazel]Meow! I mean... Yes, sorry, I got... A bit carried away.[/say]")
saynn("He becomes a little embarassed. Looks down at the catnip plant on his blanket. Picks it up with his paw and consumes it.")
saynn("[say=azazel]Twank yuu {pc.name}. It was really nice![/say]")
processTime(1 * 60)
addButton("Back", "End catnip therapy session", "azazelmain")
#setState("azazelmain")
if(state == "azazeltalk"):
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_talked", true)
var affection = getModuleFlag("IssixModule", "Azazel_Affection_given")
addButton("Prison", "Ask how did he end up in prison?", "azazelprison")
addButton("Hobby", "Ask what hobbies does he have", "azazelhobby")
if affection > 2:
addButton("Issix", "Ask what he thinks of his master?", "azazelmaster")
else:
addDisabledButton("Issix", "You don't have good enough relationship with Azazel to ask about his master")
if affection > 5:
addButton("Breeder", "Ask what he thinks of his position as a breeding bitch?", "azazelbreeding")
else:
addDisabledButton("Breeder", "You don't have good enough relationship with Azazel to ask about his position as breeding bitch")
if affection > 10:
addButton("Fetishes", "He mentioned his fetishes, perhaps he could elaborate?", "azazelfetishes")
else:
addDisabledButton("Breeder", "You don't have good enough relationship with Azazel to ask about his fetishes")
if affection > 18:
addButton("Pussy", "Azazel has a pussy and yet he is rather masculine", "azazelintersex")
else:
addDisabledButton("Pussy", "You don't have good enough relationship with Azazel to ask about his genitalia")
#addButton("Hero", "")
if(GM.pc.getInventory().hasItemID("CatnipPlant")):
pass
else:
pass
addButton("Back", "Do something else", "azazelmain")
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.")
saynn("On his lower back words ”PROPERTY OF ISSIX” branded onto the skin - a mark of his master.")
addButton("Back", "Do something else", "azazelmain")
if state == "azazelprison":
saynn("[say=pc]Tell me Azazel, what had happened that you've ended up in this prison? You are a Lilac, so I assume it had something to do with sex.[/say]")
saynn("[say=azazel]It's true... There is a group on my home planet, they claim they want to cleanse the society of trash, and by trash they of course mean everyone they deem too radical for their own liking.[/say]")
saynn("Azazel looks down, this conversation seems to bring back bad memories.")
saynn("[say=azazel]One of the group's members wanted to meet me one day, they wanted to... Procure my services. Turns out it was all just a plot, they got close to me and I didn't really see anything wrong with that, I shared a lot of personal details with them - my life, financial situation even fetishes, they felt really honest and... Caring. Eventually they tore down their mask and said they have all kind of dirt on me. That's where the hell broke loose, their group were on my back for a while, stalking, harassing me. Eventually one of my clients infected me with something transmitted sexually, I think it was the group who sent me that client and...[/say]")
saynn("Azazel's voice starts to break down.")
saynn("[say=azazel]They reported me, I had my license taken and now I'm in here.[/say]")
saynn("You both sit in awkward silence while Azazel recovers.")
saynn("[say=azazel]I will never understand groups as that one. There are more of those all over the galaxy, I know that. They ruin the lives of so many of us.. Workers. What have we done to wrong them? Nothing, we just sell our time and bodies to give others and ourselves some temporary pleasures in this grim world we live in.[/say]")
saynn("He sighs, it seems to have calmed him down")
saynn("[say=azazel]When I first arrived here I were so lost. Still very confused by this series of events, felt betrayed, hurt. Eventually I've met Master, they saw something in me and theey guided me through my trauma. I were really happy to become his pet. 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")
if state == "azazelhobby":
saynn("[say=pc]What hobbies do you have Azazel?[/say]")
saynn("[say=azazel]Oh, hobbies! I had some of them before I got sent to prison. Not so many anymore.[/say]")
saynn("His head lowers and his tail curls around him, you figure he misses something from the past.")
saynn("[say=azazel]Can you believe I've been a mediator between some communities? You know, like a person to be a bridge between two groups of interest? I've been told I were really good with talking and resolving conflicts, so after few time I've been pushed into uncomfortable situation of mediating between friends or even groups of people I found I really liked that.[/say]")
saynn("A ever so slightly visible smile creeps onto his face.")
saynn("[say=azazel]Eventually I've found a need for a volunteer mediator on my planet. Here a citizen group wanted something from the government and needed someone to mediate, here a local community wanted a free entry to an area managed by other community and they had a year long argument about it, that I were able to resolve in just 5 hours. I felt really needed. Granted, what little credits I got out of those meditations didn't really cover costs of living, so my main source of income was selling my body. But helping communities around truthfully gave me purpose, and seeing happy people after successful negotiations was so so cool![/say]")
saynn("He recalls more cases where he mediated. His voice when he tells those is filled with hope and happiness. He remembers many details about people he had helped - they've made an impact on him.")
saynn("[say=pc]Have you considered continuing your hobby here?[/say]")
saynn("[say=azazel]I don't know... Master asked me the same question. Prison is a very... Different place. I don't think it would work, besides, what kind of thing I'd mediate in?[/say]")
saynn("[say=pc]Guards and prisoners? Prisoners and prisoners? I'm sure there are plenty of things that people could use your skills in here.[/say]")
saynn("He considers this for a moment")
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")
if state == "azazelmaster":
saynn("[say=pc]So what do you think of your Master?[/say]")
saynn("[say=azazel][/say]")
if state == "lamiatalk":
addButton("Try drawing", "You can try and draw something with lamia", "lamiadraw") # TODO
func _react(_action: String, _args):
if(_action == "catnip"):
GM.pc.getInventory().removeXOfOrDestroy("CatnipPlant", 1)
GM.main.getCharacter("azazel").addLust(10)
GM.main.increaseModuleFlag("IssixModule", "Azazel_Affection_given")
if _action == "hiisienergy":
GM.pc.getInventory().addItem(GlobalRegistry.createItem("EnergyDrink"))
if(_action == "endthescene"):
endScene()
return
setState(_action)

View file

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

129
Scenes/SlaveryIntroScene.gd Normal file
View file

@ -0,0 +1,129 @@
extends SceneBase
func _init():
sceneID = "IssixSlaveryIntro"
func _run():
if(state == ""): # TODO Involve Lamia, Azazel and Hiisi
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand"})
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.")
saynn("[say=issix]I'd love to devour you right here, right now, but I need to ask you a few more things before I do that.[/say]") # Beastars? Anyone? :) https://youtu.be/zcNYc_r9GrU
saynn("[say=issix]Before I can make you my pet, I need you to understand what it means. As you've likely already seen - all of my pets are my property. I want you to make no mistake, whether I'm a „kind” master or not, I'm still their master with everything this entails. They understand they are inferior to me and I make most of their decisions for them. They gave themselves to me willingly. On their backs they have my brand engraved onto their skin and fur forever. Everyone who sees their back sees my brand and knows who they belong to. The brand is non-negotiable and you will have it too if you choose to become my pet.[/say]")
saynn("[say=issix]I'm an understanding master however. I'll give you a choice what do you want to become under my command. You can choose to continue being a prison whore like you've been until now, you got plenty of reputation for yourself there and I'll benefit from this too. I'll expect large share of your profits. You can also join Azazel, Lamia and Hiisi in simply being my pet, in which I expect you to spend time with them and myself on daily basis.[/say]")
saynn("[say=issix]No matter what choice you make here, I do not tolerate damage of my property, and you'll be under my protection. My protection however, is not far reaching, I can do a lot, but messing with the guards is not an option. If you choose to start a war with Captain or guards - it's your business.[/say]")
saynn("[say=issix]Any questions?[/say]")
saynn("[say=pc]Will I have time for myself? Other pets are leashed here all the time.[/say]")
saynn("[say=issix]They do so of their own volition. They don't believe there is a better place to be than at my side, I give them place and they worship me as their master deserves. But if you so desire, you do not have to be at my side all the time. However I'll still have expectations of you, you will be my tool to mold and I expect you to be at my disposal at all times.[/say]")
if GM.pc.getGender() == Gender.Female:
saynn("[say=issix]Also, as you have seen, all of my pets are masculine identifying as male pets. I've never had a female before. I don't say that to make you scared or anything, I'm fairly certain in my ability to train and care for pets of all gender expressions, but I figured you should take that into consideration before you make a decision. My little... Harem in here is very male dominated.[/say]")
addButton("Slave", "Tell Issix you are ready to become his slave (WARNING: this will make the game generally harder and may involve a tedious daily tasks, but is the only way to continue PC slavery option)", "acceptslavery")
addButton("Need time", "Tell Issix you need to think more about this decision", "maybelater")
addButton("Reject", "Tell Issix you will not become his slave", "rejection")
if state == "acceptslavery":
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand", bodyState={leashedBy="issix"}})
saynn("[say=issix]That's most wonderful to hear. You've had multiple opportunities to reject becoming my pet and yet you persisted. Good.[/say]")
saynn("[say=issix]From this time onward, you'll always refer to me as Master or Master Issix. As my pet, I consider your body belongs to me now.[/say]")
saynn("[say=issix]Tell me now, what role would you like to accept as defacto my slave? A pet or a prostitute?[/say]")
addButton("Pet", "Tell Issix you'd rather become his pet, just like his other 3 pets", "petrole")
addDisabledButton("Prostitute", "This option is not yet available in the mod, it is planned in the future however") # TODO 1.1
if state == "petrole":
setModuleFlag("IssixModule", "PC_Enslavement_Role", 1) # pet
saynn("[say=pc]I'd like to become your pet, Master.[/say]")
saynn("[say=issix]Excellent. In that case... There is one, maybe final question for you today. None of my pets decided on that, but I figured you might be interested. I'm not going to lie, I'm not too fond of this method as I like my pets to still have some control, but what I can offer you is to completely give yourself to me. not just your body, but your very SOUL as well. Just like with becoming my pet, once you make this decision, there is no going back. You will do exactly as I say, you won't have an option to disobey me. I'll become extension of your will, at best you'll have second wheel - entirely insignificant, a mere puppet. I'll own you fully, and you'll be just a husk of yourself.[/say]")
saynn("[say=issix]If that's not for you that's all the better. It's an option for those who not only want to dedicate their life in servitude, but also surrender the keys to their soul and mind - to become broken beyond any comprehension. Some people call it becoming a drone. Some people call it simply killing a person. I prefer „surrendering soul”. Kinda romantic, don't you think? Or perhaps it's just demon humor. Either way, tell me, what do you want?[/say]")
addButton("Yes", "Tell your Master that you want him to take your soul (WARNING: this is EXTREME, you won't have a chance to avoid certain content, it will literally strip you of choice and make your game MORE DIFFICULT. Not for the fainthearted, CW: parasite, soul vore, non-con, watersports, blood)", "becomepuppet")
addButton("No", "Tell your Master that you wish to retain your mind (recommended)", "normalroute")
if state == "normalroute":
playAnimation(StageScene.SexMissionary, "tease", {pc="issix", npc="pc", bodyState={naked=true, hard=true}, npcBodyState={naked=true, hard=true}})
setModuleFlag("IssixModule", "PC_Enslavement_Noncon", false)
if getModuleFlag("IssixModule", "QuestionnaireQ1"):
saynn("[say=pc]I'd prefer to retain my soul, if that's okey with you Master.[/say]")
else:
saynn("[say=pc]I'd still prefer to retain my mind like Azazel and your other pets, Master.[/say]")
saynn("[say=issix]But of course, you are most welcome to it. Retaining what little autonomy you have is an option I prefer for you myself.[/say]")
saynn("His face is filled with a cruel smile once again.")
if !GM.pc.isFullyNaked():
saynn("[say=issix]Now, with decisions made, I need to tell you what I intend to happen. I want you to strip naked for me. I want to see your entire body again, completely bare. I want to know what I'm working with. You'll have to lose whatever conception of shame you have and embrace being completely naked as normal. At least for now. You will still be able to wear your inmate uniform, I don't mind. But you have to lose inhibitions you have.[/say]")
for slot in GM.pc.getInventory().getEquippedItems(): # Force unequip all items, why is there getEquippedItems and getAllEquippedItems doing the same thing lol
saynn("Issix took off your "+GM.pc.getInventory()[slot].getVisibleName()+".")
GM.pc.getInventory().unequipSlot(slot)
#GM.pc.unequipAllRestraints()
else:
saynn("[say=issix]You are such a good pet that you are already naked. That's really good, as I want to know every part of your body before I have fun with you.[/say]")
saynn("He grabs a leash hanging from the armrest of his chair, shows it to you.")
saynn("[say=issix]Ready to become my pet for real this time? You've already given your fate into my paws, we might as well get this over with.[/say]")
saynn("He once again raises your head by your chin, this time more forcefully than last time. With ease he attaches the end of the leash and gives it some pulls.")
saynn("[say=issix]You look almost the part. We will take care of lack of my brand on your beautiful body some other time. Right now I want to taste your body, I want to claim you.[/say]")
saynn("Your new Master gets on his own knees to your level. You can feel the stare of his other pets on you, looking as you become Issix's pet, just like them. Surrendering yourself to an alpha. His smell becomes much more potent now, it's as if he is now in your head. For the first time you truthfully feel him. Without word of warning he dives in and forces his own tongue into your mouth, giving you a deep deep kiss. He explores your mouth, it doesn't feel at all as if his tongue is truthfully just a guest in your mouth, no, he owns you. He is just exploring his property in full, from the inside. You let out a moan, feeling his saliva mixing with yours, both of your mouths becoming more and more messy with saliva. You want him to continue, even if forceful his kiss still feels so right. His tongue mingling with yours, checking out your teeth. Eventually he pulls out, a string of saliva connecting you two.")
saynn("[say=issix]That was gooood. Let's us proceed to the main dish, I've waited long for this.[/say]")
saynn("He pushes you onto your back on the blanket")
addButton("Continue", "Give yourself to Master Issix", "normalroute2")
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?
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:
saynn("[say=issix]I feel like I'm missing something. And I think I know what it is. Your body is not squirmy enough, I want you to be more needy that this.[/say]")
saynn("He fishes a package with pills in it. Takes one pill of it, opens your mouth and pushes it in. You gulp it in, imagining but not knowing what is it.")
saynn("[say=issix]It will help you be more receptive to me in few moments, just relax and take it in.[/say]")
saynn("You feel effects shortly after. Your body convulses as the primal need for mating becomes your body's priority.")
saynn("[say=issix]Yesss. Do you feel it? Do you feel innate desires? The need to submit to your master so he can claim you in every way he desires? I promise I'll make it exquisite.[/say]")
if GM.pc.hasVagina():
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 prepares your {pc.pussyStretch} pussy, he inserts his finger, then two fingers and pistons your love tunnel in and out further putting you into breeding frenzy,")
else:
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("[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]")
saynn("Finally your prayers get answered. You can feel him slowly, gently entering you. Every thrust ever so deeper inside. His penis disappearing out of view, and yet you can feel it more than ever, inside of you, claiming yet even more of you")
saynn("[say=issix]Fuck yeah, you've trained for this. This will really be easy.[/say]")
addButton("Continue", "", "normalroute3")
if state == "normalroute3":
playAnimation(StageScene.SexMissionary, "fast", {pc="issix", npc="pc", bodyState={naked=true, hard=true}, npcBodyState={naked=true, hard=true}})
saynn("[say=issix]Keep that up and some day you may become as good as Azazel at this. Ahhh.[/say]")
saynn("[say=pc]I, ahhh. Will tryyy.[/say]")
saynn("Various moans coming from both of you ")
if state == "maybelater":
saynn("[say=pc]I need to take my time to make my decision... It's a lot to take in.[/say]")
saynn("[say=issix]Take your time. I do believe you are ready, but you have to make the final choice by yourself. I'll be waiting.[/say]")
saynn("[say=pc]Thank you Master Issix.[/say]")
saynn("He smiles and lets you go.")
addButton("Continue", "End the conversation", "endthescene")
if state == "rejection":
saynn("Issix raises his eyebrows. This was not an answer he expected or wanted to hear.")
saynn("[say=issix]That's... Surprising. You are a perfect candidate, you could become MY pet. MY plaything, and yet you reject it? Why? Is it that you are worried about being under someone? You don't like my other pets? Did you not like the walk? Are you scared of questions I asked you during questionnaire? Did the talk about forever having my mark burned into you scare you? Do you value your time so much, that you'd rather not spend time with me and my harem? Or do you value your life so much that you think you'd do a better job living it by yourself than under me?[/say]")
saynn("He grew visibly more frustrated with each question. Each question, adding more oil into already enormous flames consuming everything around. His aura so intense, his eyes so enraged. This version of the dragon-demon is the most intimidating creature you've ever seen, so far from the image of him you've had in your head for past days doing his tasks and so on. And yet... He closes his eyes, connects palms of his paws and takes a deep breath. His aura changes again, it's calm and composed, as if it was a completely different person from the one you've seen just seconds ago. He opens his eyes.")
saynn("[say=issix]I must apologize. I had certain expectations that were not met, however I realize I were in no position to make demands of you. You have made your decision and as I said, I have to respect it. Thank you for letting me know what is your final decision. I'll be here if you ever want to donate restraints. Have a good day, {pc.name}.[/say]")
saynn("His voice still raspy, but composed. His dominant persona doesn't handle well „no” as an answer, however you aren't his pet, at least today. And now, you never will. That was your decision, however.")
addButton("Continue", "End the conversation", "endthescene")
func _react(_action: String, _args):
if _action == "normalroute2":
var itemRef = GlobalRegistry.getItemRef("HeatPill")
if(itemRef == null):
return
itemRef.useInSex(GM.pc)
if(_action == "endthescene"):
endScene()
return
setState(_action)