10.01 updates

Continued work on Azazel's corruption scene - added Lamia and Issix dialogues
Fixed countless bugs, including perks having wrong skill tier
This commit is contained in:
Frisk 2025-01-10 23:19:05 +01:00
parent 65db9c0970
commit 91be974366
25 changed files with 551 additions and 58 deletions

View file

@ -24,7 +24,7 @@ roomColor = 4
position = Vector2( 0, 64 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part1"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches far away into the darkness ahead."
canWest = false
canEast = false
@ -33,7 +33,7 @@ self_modulate = Color( 1, 0.6, 0.8, 1 )
position = Vector2( 0, 256 )
roomName = "End of Liliac hallway"
roomID = "petsdream_cellblock_pink_playercell"
roomDescription = "((This will be your potential cell))"
roomDescription = "At the end of this hallway is a small chair-throne on which a differently looking Azazel sits."
canWest = false
canEast = false
roomSprite = 1
@ -43,7 +43,7 @@ roomColor = 4
position = Vector2( 0, 128 )
roomName = "Corridor"
roomID = "petsdream_cellblock_nearcells"
roomDescription = "This is where the 3 cell blocks branch off into their own sections, there are always a few inmates of all types milling around. Above you there are a number of guards on the catwalks, walls, and posts. From here, the orange, lilac, and red cell blocks lay further ahead."
roomDescription = "This is where the 3 cell blocks branch off into their own sections. At the center there is a sizable „fountain”, where fluids fall from above, instead from below... From here, the orange, lilac, and red cell blocks lay further ahead."
roomSprite = 7
loctag_NoWallsNear = true
@ -52,7 +52,8 @@ self_modulate = Color( 1, 0.6, 0.6, 1 )
position = Vector2( 64, 128 )
roomName = "High-security cellblock"
roomID = "petsdream_cellblock_red_nearcell"
roomDescription = "A long open space lined with armored windows and clear automatic doors. Unlike most other places in the prison, it is actually pretty dark in this cell block, with a number of unknown stains and trash lining the halls. Dim and broken lights that randomly dot the walls between cells. A large panopticon with guards hangs from the rock ceiling above, casually monitoring the dark atmosphere with a number of spotlights. The Red trim of the large hallway stretches east towards more cells, with even more to be found if you wanted to seek them out."
roomDescription = "A long open space lined with armored windows and clear automatic doors. Unlike most other places in the prison, it is actually pretty dark in this cell block, with a number of unknown stains and trash lining the halls. Dim and broken lights that randomly dot the walls between cells.
The Red trim of the large hallway stretches east towards more cells, with even more to be found if you wanted to seek them out."
canNorth = false
canSouth = false
roomColor = 2
@ -62,7 +63,7 @@ self_modulate = Color( 1, 0.6, 0.6, 1 )
position = Vector2( 128, 128 )
roomName = "End of High-sec hallway"
roomID = "petsdream_cellblock_red_playercell"
roomDescription = "((This will be your potential cell))"
roomDescription = "At the end of this hallway is a small chair-throne on which a canine sits."
canNorth = false
canSouth = false
roomSprite = 1
@ -83,6 +84,7 @@ self_modulate = Color( 1, 0.8, 0.6, 1 )
position = Vector2( -128, 128 )
roomName = "End of General hallway"
roomID = "petsdream_cellblock_orange_playercell"
roomDescription = "At the end of this hallway is a blanket engulfed in flames, on which Lamia lays without care in the world."
canNorth = false
canSouth = false
roomSprite = 1
@ -91,7 +93,7 @@ roomColor = 5
[node name="CellblockRoom1" parent="." index="8" instance=ExtResource( 2 )]
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part2"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches far away into the darkness ahead, you notice how it's becoming darker and yet darker."
canWest = false
canEast = false
@ -99,7 +101,7 @@ canEast = false
position = Vector2( 0, -64 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part3"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches far away into the darkness ahead, most worrying is the fact that you don't see anything indicating there is an end to this dark tunel."
canWest = false
canEast = false
@ -107,7 +109,7 @@ canEast = false
position = Vector2( 0, -128 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part4"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches far away into the darkness ahead. It's also where you can see a wall of... Goo? Isolating further dark tunel from the lightened tunel behind."
canWest = false
canEast = false
@ -115,7 +117,7 @@ canEast = false
position = Vector2( 0, -192 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part5"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches far away into the darkness ahead. Darkness is consuming even more."
canWest = false
canEast = false
@ -123,7 +125,7 @@ canEast = false
position = Vector2( 0, -256 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part6"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches far away into the darkness ahead. You can still see the walls and the floor, but the path continues to be shrouded in darkness. Is there even anything there?"
canWest = false
canEast = false
@ -131,7 +133,7 @@ canEast = false
position = Vector2( 0, -320 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part7"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches far away into the darkness ahead. You realize, that soon you won't even see the floor."
canWest = false
canEast = false
@ -139,7 +141,7 @@ canEast = false
position = Vector2( 0, -384 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part8"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches ahead and behind you."
canWest = false
canEast = false
@ -147,7 +149,7 @@ canEast = false
position = Vector2( 0, -448 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part9"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches ahead, into complete darkness and behind you - where you came from."
canWest = false
canEast = false
@ -155,7 +157,7 @@ canEast = false
position = Vector2( 0, -512 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part10"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube that stretches ahead? You haven't hit a wall - yet."
canWest = false
canEast = false
@ -163,7 +165,7 @@ canEast = false
position = Vector2( 0, -576 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part11"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube, or at least you think you do. It's so dark that it's impossible to tell where exactly are you."
canWest = false
canEast = false
@ -171,7 +173,7 @@ canEast = false
position = Vector2( 0, -640 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part12"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Your standing inside a giant sheet metal tube, or at least you think you do. The light from behind is no longer visible to you, there is no light where you are. You can't tell if you are even walking in the right direction."
canWest = false
canEast = false
@ -179,7 +181,7 @@ canEast = false
position = Vector2( 0, -704 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part13"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "Silence, darkness. Should you continue? No light in sight."
canWest = false
canEast = false
@ -187,7 +189,7 @@ canEast = false
position = Vector2( 0, -768 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part14"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "You persist and walk forward, your effort is soon rewarded with a shimmer of light in front of you!"
canWest = false
canEast = false
@ -195,7 +197,7 @@ canEast = false
position = Vector2( 0, -832 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part15"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "You eagerly follow the shimmer of light as it gets bigger and bigger. While you are still shrouded in darkness, you know if you keep walking further the goal will be within your reach."
canWest = false
canEast = false
@ -203,18 +205,20 @@ canEast = false
position = Vector2( 0, -896 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part16"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "You see it! Just a little bit! You can make out a person from the distance, they are surrounded by purple mass that makes up the walls,ceiling and the floor."
canWest = false
canEast = false
[node name="CellblockRoom25" parent="." index="23" instance=ExtResource( 2 )]
self_modulate = Color( 1, 0.6, 0.8, 1 )
position = Vector2( 0, -960 )
roomName = "Corridor"
roomID = "petsdream_cellblock_corridor_part17"
roomDescription = "Your standing inside a giant sheet metal tube that connects the cellblocks with the rest of the prison. The only noteworthy thing here is the giant open blast door stretched across the hall."
roomDescription = "End of long hallways, filled with incredibly moist and musty air. Walls, ceiling as well as floors are made of purple squirming meaty mass that seemingly lives on its own. Right at one end of this space is a chair where Issix sits, amused at seeing you."
canWest = false
canEast = false
roomSprite = 4
roomColor = 4
[connection signal="onEnter" from="CellblockRoom6" to="." method="_on_CellblockRoom11_onEnter"]
[connection signal="onPreEnter" from="CellblockRoom6" to="." method="_on_CellblockRoom11_onPreEnter"]

View file

@ -1,5 +1,6 @@
const Globals = preload("res://FoxLib/Globals.gd")
static func getSkinWord() -> String:
var character_skin_name = Globals.ofModule("IssixModule").characterCoverage
return character_skin_name
@ -23,11 +24,11 @@ static func hasPermanentChasityOnBoth(characterID: String):
return null
if character.hasPenis():
var item = character.getInventory().getEquippedItem(BodypartSlot.Penis)
if item.isRestraint() and item.getRestraintData() is RestraintUnremovable:
if item != null and item.isRestraint() and item.getRestraintData() is RestraintUnremovable:
blocked_penis = true
if character.hasVagina():
var item = character.getInventory().getEquippedItem(BodypartSlot.Vagina)
if item.isRestraint() and item.getRestraintData() is RestraintUnremovable:
if item != null and item.isRestraint() and item.getRestraintData() is RestraintUnremovable:
if blocked_penis:
return true
blocked_penis = false
@ -67,3 +68,16 @@ static func getPlayerPetName():
return "pony"
else:
return "pet"
# Check if a state exists inside stateKey dict flag storage
static func checkIfAchieved(flagName: String, stateKey: String) -> bool:
return GM.main.getModuleFlag("IssixModule", flagName, {}).has(stateKey)
static func returnValueFromStateFlag(flagName: String, stateKey: String, default=null):
return GM.main.getModuleFlag("IssixModule", flagName, {}).get(stateKey, default)
# Modify state of a state dict flag
static func modifyDictStates(flagName: String, stateKey: String, stateValue):
var states = GM.main.getModuleFlag("IssixModule", flagName, {})
states[stateKey] = stateValue
GM.main.setModuleFlag("IssixModule", flagName, states.duplicate(true))

View file

@ -119,6 +119,8 @@ func _init():
"res://Modules/IssixModule/Events/PetWanderEvent.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/StopsEvent.gd",
"res://Modules/IssixModule/Events/AnnouncerLuckTokenEvent.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/DemonPetsEvent.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/LongCorridorEvent.gd"
]
scenes = [
@ -150,13 +152,20 @@ func _init():
"res://Modules/IssixModule/Scenes/HiisiScenes/HiisiWanderScene3.gd",
"res://Modules/IssixModule/Scenes/IssixDonationScene.gd",
"res://Modules/IssixModule/Scenes/AnnouncerLuckTokensDialogue.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/DemonAzazelTalkScene.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/DemonHiisiTalkScene.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/DemonLamiaTalkScene.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/FountainScene.gd"
]
characters = [
"res://Modules/IssixModule/Characters/AzazelCharacter.gd",
"res://Modules/IssixModule/Characters/HiisiCharacter.gd",
"res://Modules/IssixModule/Characters/IssixCharacter.gd",
"res://Modules/IssixModule/Characters/LamiaCharacter.gd"
"res://Modules/IssixModule/Characters/LamiaCharacter.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/AzazelDemonCharacter.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/HiisiDemonCharacter.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/LamiaDemonCharacter.gd"
]
gameExtenders = [
@ -164,7 +173,8 @@ func _init():
]
worldEdits = [
"res://Modules/IssixModule/IssixWorldEdit.gd"
"res://Modules/IssixModule/IssixWorldEdit.gd",
"res://Modules/IssixModule/Scenes/AzazelCorruption/HackMainScene.gd",
]
items = [
@ -200,8 +210,10 @@ func _init():
]
speechModifiers = [
"res://Modules/IssixModule/SpeechModifiers/CatnipSpeech.gd",
"res://Modules/IssixModule/SpeechModifiers/LamiaMute.gd"
"res://Modules/IssixModule/SpeechModifiers/LamiaMute.gd",
"res://Modules/IssixModule/SpeechModifiers/PetTalk.gd",
]
GlobalRegistry.registerLustTopicFolder("res://Modules/IssixModule/InterestTopics/")
GlobalRegistry.registerSkinsFolder("res://Modules/IssixModule/Skins/")
GlobalRegistry.registerMapFloorFolder("res://Modules/IssixModule/Floors/")

View file

@ -384,6 +384,9 @@ func _react(_action: String, _args):
if _action == "walktocell":
GM.pc.setLocation("cellblock_lilac_nearcell")
if _action == "eagermask":
GM.pc.getInventory().equipItem(GlobalRegistry.createItem("GasMask"))
if(_action == "endthescene"):
setModuleFlag("IssixModule", "Azazel_Corruption_Scene", 4)
endScene()

View file

@ -12,8 +12,14 @@ func _init():
pickedSkinGColor=Color("ff656465")
pickedSkinBColor=Color("ff72005d")
npcSkinData={
"hair": {"r": Color("ff221310"),"g": Color("ff1f1514"),"b": Color("ff28000c"),},
"horns": {"r": Color("ffa9a9a9"),"b": Color("ff606060"),},
"head": {"r": Color("ff72027c"),"g": Color("ff7d0092"),},
"hair": {"r": Color("ff480f04"),"g": Color("ffcc1300"),"b": Color("ff28000c"),},
"horns": {"r": Color("ff7a7575"),"g": Color("ff585656"),"b": Color("ff6a6a6a"),},
"body": {"r": Color("ff722a7f"),"g": Color("ffa90aaa"),"b": Color("ffff0000"),},
"arms": {"r": Color("ff8e21a4"),},
"breasts": {"r": Color("ffac0707"),"g": Color("ffde1fff"),},
"tail": {"r": Color("ff000000"),"g": Color("ff000000"),"b": Color("ff000000"),},
"legs": {"r": Color("ff802c89"),"g": Color("ff6a0076"),},
}
npcPersonality = {
PersonalityStat.Brat: -0.9,
@ -123,7 +129,7 @@ func createBodyparts():
giveBodypartUnlessSame(GlobalRegistry.createBodypart("vagina"))
giveBodypartUnlessSame(GlobalRegistry.createBodypart("anuswomb"))
var tail = GlobalRegistry.createBodypart("demontail")
tail.tailScale = 1.9
tail.tailScale = 1.4
giveBodypartUnlessSame(tail)
giveBodypartUnlessSame(GlobalRegistry.createBodypart("hoofs"))
skillsHolder.addPerk(Perk.FertilityBroodmother)

View file

@ -10,6 +10,8 @@ func _init():
func _run():
if(state == ""):
addCharacter("azazeldemon")
playAnimation(StageScene.Duo, "sit", {pc="azazeldemon", npc="pc"})
saynn("Azazel sits atop of his small throne chair, not in dignified way, his ass is on its edge and his back bent between chair's support and base, he looks as if he has been bored to death by someone's long monologue. This position means his pussy and ass are on the display.")
addButton("Talk", "Talk to Azazel", "talk")
addButton("Appearance", "Check kitty's appearance", "appearance")
@ -18,6 +20,12 @@ func _run():
addDisabledButton("Better", "There is nothing more to be gained in here, move on")
else:
addButton("Better", "Become an ideal Master pet", "better")
addButton("Leave", "Leave", "endthescene")
if state == "appearance":
playAnimation(StageScene.Solo, "sit", {pc="azazeldemon"})
saynn("You take a closer look at {azazeldemon.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 purple with splotch of brighter purple to pink on his chest, his face has deeper color of purple. A set of horns protrudes from his head, it looks different from the one you've seen on him before, they are longer and more segmented. His pupils are oval, like ones you'd see on a goat. On his backside there is now a very large spaded black tail.")
addButton("Back", "Go back", "")
if state == "talk":
saynn("[say=pc]A-azazel? You look like him though... The colors and the tail...[/say]")
@ -48,7 +56,7 @@ func _run():
if state == "talkrefuse":
saynn("[say=azazeldemon]This wasn't a request, it was an order. I'm not the one to instill loyalty into you, but... I think we could do with you being a bit more obedient.[/say]")
saynn("He approaches you. At first you try ta take a step back but... You can't. His eyes look so beautiful. Purple eyes with such a pretty glow. Azazel puts two of his paw fingers on your forehead.")
saynn("[say=azazeldemon][corrupt]Azeryūze[/corrupt][/say]")
saynn("[say=azazeldemon][color=#ac1eff][corrupt]Azeryūze[/corrupt][/color][/say]")
saynn("Instantly as he finishes saying the word that you didn't understand, you felt different. You can't say what changed, but it felt significant.")
saynn("[say=azazeldemon]Lay on the ground for me.[/say]")
@ -56,6 +64,7 @@ func _run():
addButton("Comply", "Comply with Azazel's order", "talklay")
if state == "talklay":
playAnimation(StageScene.SexStart, "defeated", {pc="azazeldemon", npc="pc"})
saynn("You comply with Azazel's order, his purple eyes glowing with intense color making you oblige.")
saynn("[say=azazeldemon]Good "+Globals.getPlayerPetName()+".[/say]")
@ -76,11 +85,12 @@ func _run():
addButton("Continue", "See what Azazel has in store for you", "azazeltattoo")
else:
saynn("[say=azazeldemon]I'll remold you into Master's fuck pet. I'll make you actually useful.[/say]")
saynn("He kneels next to your laying body and moves his paws around your "+("penis" if GM.hasPenis() else "crotch area")+ ". You can feel small tingling near that area.")
saynn("He stands next to your laying body and moves his {azazeldemon.foot} around your "+("penis" if GM.pc.hasPenis() else "crotch area")+ ". You can feel small tingling near that area.")
addButton("Allow", "Allow Azazel to do whatever he intends to do to you (non-permanent body modification)", "allowbodymod")
addButton("Resist", "Call the rest of your mental fortitude to resist Azazel's spell", "denybodymod")
if state == "allowbodymod":
playAnimation(StageScene.SexFeetPlay, "crotch", {pc="pc", npc="azazeldemon", bodyState={hard=true}})
if GM.pc.hasPenis():
saynn("You allow Azazel to do whatever he wants. Shortly after you feel even more heat concentrated on your {pc.penis} as well as arousal to level you've never felt. Your {pc.penis} gets instantly hard.")
saynn("[say=pc]Aahhhh![/say]")
@ -103,7 +113,6 @@ func _run():
if state == "cumafterpenis":
if hadVagina:
saynn("You reach your peak and start cumming. It's probably your most „productive” milking in your life, and from the looks of it, it's also the last one. You look as your throbbing nugget of a penis reclines into your body leaving only your other sex for use, sealing your fate as Master's breeding bitch.")
saynn("[say=azazeldemon]Wonderful job, life is better without that pesky sack of flesh. You can enjoy your life with just pussy, that's all you'll ever need. Now, there is still a few more things to do here before I can let you go.[/say]")
else:
saynn("You reach your peak and start cumming. It's probably your most „productive” milking in your life, and from the looks of it, it's also the last one. You look as your throbbing nugget of a penis reclines into your body and a new body part appears. It's small, but you have no issues recognizing what is your new sex.")
@ -125,7 +134,7 @@ func _run():
if state == "azazeltattoo":
saynn("[say=azazeldemon]A good breeder must be ready for everything. A good breeder should be appropriately marked and be available at Master's command. I want to make you a perfect breeder, a perfect toy for the Master to break.[/say]")
saynn("His paw finger once again hovers over you, this time it's above your {pc.vagina}. Once again, immense heat radiates from where Azazel's paw is, you look at this scene with bewilderment as a new something appears there - a womb tatoo, with each second the lines continue to appear permanenting the sigil inside your skin, the red heart inside takes shape, the dark red shape streaches with tubes connecting the central heart with ovaries - signifying your fertility and advertising yourself as breeding partner. Azazel's mischievous smile appears on his face, he runs his finger over your new tattoo, it feels so good.")
saynn("His paw finger once again hovers over you, this time it's above your {pc.vagina}. Once again, immense heat radiates from where Azazel's paw is, you look at this scene with bewilderment as a new something appears there - a womb tattoo, with each second the lines continue to appear permanenting the sigil inside your skin, the red heart inside takes shape, the dark red shape streaches with tubes connecting the central heart with ovaries - signifying your fertility and advertising yourself as breeding partner. Azazel's mischievous smile appears on his face, he runs his finger over your new tattoo, it feels so good.")
saynn("[say=azazeldemon]This will keep you in service, it will keep you docile, receptive, it will show everyone who you are. When you are pregnant, it will glow. You will be a good mother {pc.girl}.[/say]")
saynn("[say=azazeldemon]Now go, I'll see you soon.[/say]")
@ -153,11 +162,13 @@ func loadData(data):
func _react(_action: String, _args):
if _action == "talklay":
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Got_Molded_By_Azazel", true)
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Got_Azazels_Permission", true)
if _action == "azazeltattoo":
GM.pc.addEffect(StatusEffect.TaviWombMark)
GM.pc.forceIntoHeat()
#warning-ignore:integer_division
GM.pc.addStamina(-int(GM.pc.getMaxStamina()/4))
if _action == "cumafterpenis":
GlobalRegistry.getCharacter("azazeldemon").cummedOnBy("pc", FluidSource.Penis, 1.2)
@ -178,9 +189,7 @@ func _react(_action: String, _args):
else:
var vagina = GlobalRegistry.createBodypart("vagina")
GM.pc.giveBodypartUnlessSame(vagina)
if _action == "better":
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Got_Azazels_Permission", true)
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Got_Molded_By_Azazel", true)
if _action == "talk":
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Talked_With_Azazel", true)

View file

@ -1,15 +1,20 @@
extends SceneBase
const Globals = preload("res://Modules/IssixModule/Globals.gd")
func _init():
sceneID = "DemonHiisiTalk"
func _run():
if(state == ""):
addCharacter("hiisidemon")
playAnimation(StageScene.Duo, "sit", {pc="hiisidemon", npc="pc"})
saynn("Muscular canine body sits a top of a throne placed at the end of the hallway. The dog is residing higher than you, their posture confident, indifferent.")
addButton("Talk", "Talk to Hiisi", "talk")
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Talked_With_Hiisi"):
addButton("Learn", "Learn from Hiisi about how the pet should behave", "learn")
addButton("Appearance", "Take a good look at Hiisi", "appearance")
addButton("Leave", "Get away from here", "endthescene")
if state == "talk":
saynn("[say=pc]Hello Hiisi/[/say]")
@ -28,8 +33,15 @@ func _run():
saynn("[say=hiisidemon]Let me tell you outright, I do not care whether you become Master's pet or not, it is of no concern to me. But considering you are here, I must teach you how a proper pet should behave. When you are ready to be taught, let me know.[/say]")
addButton("Sure", "You will", "")
if state == "appearance":
playAnimation(StageScene.Solo, "sit", {pc="hiisidemon"})
saynn("You take a good look at {hiisidemon.name}, while there is still some husky gray on canine, most of his fur has been changed into bright red, with markings being even brighter. His hair is red as well. Compared to Hiisi you normally know, the Hiisi that sits before you has long straight horns that go upwards, at base start with gray and the tip is colored bright red. The bushy and monochromatic tail that you remember gor replaced with a long spaded tail colored the same as the rest of red canine. The inside of his ears stayed gray.")
saynn("Showing to you is also his penis - a dark canine black tool with red veins")
addButton("Back", "You've stared at the canine long enough", "")
if state == "learn":
playAnimation(StageScene.Duo, "allfours", {pc="pc", npc="hiisi"})
playAnimation(StageScene.Duo, "allfours", {pc="pc", npc="hiisidemon"})
saynn("[say=pc]I'm here to learn from you, Hiisi.[/say]")
saynn("[say=hiisidemon]So be it. On fours then. A pet should know how to walk and how to keep balance on their fours. Crawl on the floor for me like this.[/say]")
saynn("You stand on your fours, it isn't particularly difficult, though it gets tiring really quickly.")
@ -52,20 +64,20 @@ func _run():
addButton("Leave", "", "endthescene")
if state == "beg":
playAnimation(StageScene.Beg, "beg", {pc="pc", npc="hiisi"})
playAnimation(StageScene.Beg, "beg", {pc="pc", npc="hiisidemon"})
saynn("Without giving it any thought you kneel on your twos and curl your paws obediently begging Hiisi for his treat, you hear a click from all around, it makes you happy.")
saynn("[say=hiisidemon]See? It comes to you instinctively now. That's how it should be.[/say]")
addButton("Catch", "Catch the treat", "catch")
if state == "catch":
playAnimation(StageScene.Beg, "pat", {pc="pc", npc="hiisi"})
playAnimation(StageScene.Beg, "pat", {pc="pc", npc="hiisidemon"})
saynn("Hiisi throws a treat at you and you catch it with your mouth.")
saynn("[say=hiisidemon]Good {pc.boy}.[/say]")
saynn("You repeat begging a few more times, and nail it perfectly each.")
addButton("Continue", "Continue the exercises", "sitlay")
if state == "sitlay":
playAnimation(StageScene.Duo, "kneel", {pc="pc", npc="hiisi"})
playAnimation(StageScene.Duo, "kneel", {pc="pc", npc="hiisidemon"})
saynn("[say=hiisidemon]Sit.[/say]")
saynn("You follow his command immediately, hearing a click and feeling rushing endorphins in your blood. It's really your nature now. You don't know when it happened, when did a switch get flipped to make you so receptive to commands, how did that even happen? Right now, no matter what kind of command gets out of Hiisi's mouth you follow it without thinking.")
saynn("[say=hiisidemon]Lay.[/say]")
@ -90,6 +102,10 @@ func _react(_action: String, _args):
if _action == "sitlay":
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Trained_With_Hiisi", true)
#warning-ignore:integer_division
GM.pc.addStamina(-int(GM.pc.getMaxStamina()/4))
GM.pc.getSkillsHolder().addSkillExperience("Pet", 1000)
GM.pc.getSkillsHolder().addPerk("Commands")
if _action == "talk":
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Talked_With_Hiisi", true)

View file

@ -1,5 +1,7 @@
extends SceneBase
const Globals = preload("res://Modules/IssixModule/Globals.gd")
func _init():
sceneID = "DemonLamiaTalk"
@ -8,12 +10,79 @@ func _run():
addCharacter("lamiademon")
saynn("You face Lamia. A fiery fox simply sits atop of a burning blanket, which doesn't seem to concern the fox at all. On the blanket, next to them lies a jar filled with water and many dark segmented worms swimming around and sticking to the glass with their circular opening of the body. On three walls surrounding them are countless drawings decorating the walls, you can see a few pentagrams, horned creatures, fiery hells.")
addButton("Talk", "Talk with the fox", "talk")
if true:
addButton("Speech", "Learn how to speak like a good pet does", "learn")
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Talked_With_Lamia"):
addButton("Speech", "Learn how to speak like a good pet does", "finish")
addButton("Appearance", "Look at the fox", "appearance")
if state == "talk":
playAnimation(StageScene.Duo, "stand", {pc="pc", npc="lamiademon"})
saynn("[say=pc]Hello Lamia, umm, how are you?[/say]")
saynn("Lamia gives you thumbs up.")
saynn("[say=pc]Sooo, any hint on what is this place, how I got here or how I get out?[/say]")
saynn("Lamia thinks, before shaking their head. They point to your side, when you look there is a notebook, it wasn't there before. You pick it up, it's full of drawings, the title page says „{pc.name}'s Manual”")
saynn("As you flip the pages, you realize that the definition of [i]{pc.Name}'s[/i] in the title manual does not refer to it [i]belonging[/i] to you, but rather is a manual for how to use [i]you[/i].")
saynn("First page shows various elements that the pet posesses, there is a general description of you: " + getPlayerDescription())
saynn("Next page says that a „pet” comes with a collar on {pc.his} neck, it shows a basic step of attaching a leash to it.")
saynn("You check your neck, still no collar in sight. Flipping the pages you see more of what one would expect - basic commands the pet should understand, „compatible” bondage gear, your exploitable weaknesses that can be used for further training...")
saynn("The last page in the notebook shows that a pet cannot speak proper words, with the dialogue option coming from you saying „Yip!”. This page seems unfinished - only the general sketch is made, and compared to other pages, it's uncolored. You look at Lamia in bewilderment.")
saynn("[say=pc]Wh- Who- Why?[/say]")
saynn("Lamia gives you a mischievous smile as the flames of the blanket raise. You have a feeling that Lamia may want you to give them permission to finish the notebook.")
addButton("Give in", "Let Lamia finish the manual", "finish")
addButton("Talk", "Return to talk", "")
if state == "appearance":
if state == "finish":
saynn("[say=pc]Well... I did notice the notebook is unfinished, you meant to finish it right?[/say]")
saynn("Lamia nods.")
saynn("[say=pc]Do you need anything from me to finish it?[/say]")
saynn("They nod again.")
saynn("[say=pc]Umm, what is it?[/say]")
saynn("You ask with dread. Lamia writes 4 words with a paw finger in the air, they all leave a red floating smear.")
saynn("YOUR ABILITY TO SPEAK")
saynn("You gulp. To give something so essential to you, for the same of becoming someone's... Pet? Slave? You don't even know anymore. It feels like profound loss of something very important to all conscious beings... Until you remember just with whom you are speaking right now. Lamia never had their voice, and yet, you look at demonic fox, they were able to overcome.")
saynn("A free choice to make a decision is presented to you, what will you do?")
addButton("Agree", "Let Lamia take your speech (temporary speech impairment)", "speechbye")
addButton("Refuse", "Do not let Lamia take away your speech", "speechyes")
if state == "speechyes":
saynn("[say=pc]I'd rather not, speech is quite important to me, I'd rather keep it.[/say]")
saynn("You look at Lamia, he gets saddened, he takes a deep breath and nods to you, before laying on his belly facing the jar he has on his blanke, observing what's inside.")
addButton("Leave", "Doesn't seem like Lamia has anything else to tell you", "endthescene")
if state == "speechbye":
playAnimation(StageScene.Hug, "hug", {pc="pc", npc="lamiademon"})
saynn("[say=pc]Okey, I'm ready. Will it hurt?[/say]")
saynn("Lamia smiles and shakes his head, he stands up and approaches you. You can feel immense heat radiating off him, before he touches you with his paw, the heat seems to dissipate. He takes both of your paws in their own and look at your face.")
saynn("They can feel your uncertainty, fear, and yet they try to put you at ease. Their paws touching yours. Finally, they simply hug you. Their hug so gentle and caring.")
saynn("[say=pc]Awww, thank you Lamia! That's sweet of you.[/say]")
saynn("It calms you down. You stare once again at vulpine face.")
addButton("Continue", "Continue", "speechbye2")
if state == "speechbye2":
playAnimation(StageScene.Hug, "kiss", {pc="pc", npc="lamiademon"})
saynn("Lamia's paw moves towards your throat, it massages it. You feel that this is it, this is when it happens, you let the vulpine do his work.")
saynn("You can feel the bulging, as if whatever you had in your throat changed place or something else happened to it, you try to say something but it doesn't come out, Lamia rests one of his paw fingers on your mouth to shush you up. You understand you shouldn't try doing anything yet. They continue massaging your throat with their paw fingers, the touch electrifying, changing. Once again you can feel the heat radiating from the place they touch.")
saynn("Finally, you think they are done, as his paw lowers its position and he pushes you from the back so you lean forward straight into a kiss, as the vulpine is already waiting prepared.")
saynn("And so you kiss, his mouth opened, gently pushing his tongue into your own mouth. At first it's how you'd expect, but quickly the situation changes, from a regular kiss it becomes something... Different, as Lamia's tongue extends and extends. It becomes longer and explores the entirety of your mouth, at some point it reaches as far as your throat, feeling gag reflexes which dissipate as if on magic command of Lamia.")
saynn("You realize the kiss is yet another part of the process Lamia wanted you to go through, you accept it and continue kissing the fox, the saliva mingling, you ignore any feeling of fear, disgust or anything in between, right now what matters is sharing this intimate moment with a vulpine.")
saynn("It's been a minute, or two, hard to tell, time doesn't matter in this place. You stopped feeling the heat radiating in your mouth as it was changing its internal shape, as Lamia said, there was no pain. Both you and Lamia just enjoyed each other in passion.")
addButton("Continue", "Continue", "speechbye3")
if state == "speechbye3":
playAnimation(StageScene.Hug, "idle", {pc="pc", npc="lamiademon"})
saynn("But it ended, like all things end. Kisses end too. You hug the vulpine and want to thank him for this awesome experience, forgetting what was the purpose of all of this.")
saynn("[say=pc]Thank you Lamia![/say]")
saynn("The sound you hear makes you confused and at first terrifies you. Those are not the words you've said, or, they sound so different?")
saynn("[say=pc]Umm, the quick brown fox jumps over the lazy dog?[/say]")
saynn("You gasp and block your mouth with your paws hearing yourself, you can't speak like you used to anymore, all that comes from your mouth are just... Animal sounds.")
saynn("You look at Lamia, terrified, and he just... Pats your head.")
saynn("[say=pc]Will people still understand me?[/say]")
saynn("Lamia nods, it seems that even though you've lost your speech, somehow you'll still be understandable by others, you don't know how it works, but that's a relief.")
addButton("Leave", "Go your way", "endthescene")
func getDevCommentary():
return ""
@ -22,9 +91,33 @@ func hasDevCommentary():
return false
func _react(_action: String, _args):
func getPlayerDescription() -> String:
var body_parts = GM.pc.getBodyparts()
var text = "\n\n{pc.Name} is a "+Util.getSpeciesName(GM.pc.getSpecies())+". They have "+body_parts[BodypartSlot.Head].getName()+" "+body_parts[BodypartSlot.Arms].getName()+" "+body_parts[BodypartSlot.Legs].getName()+"."
if GM.pc.hasHorns() or GM.pc.hasTail():
text = text + "\nAdditionally, they come equipped with "
if GM.pc.hasHorns():
text = text + body_parts[BodypartSlot.Horns].getName().rstrip("1234567890 ")
if GM.pc.hasTail():
text = text + body_parts[BodypartSlot.Tail].getName().rstrip("1234567890 ")
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Got_Molded_By_Azazel"):
text = text + "SUPER FEATURE: The pet can bear your cubs! They have a breedable {pc.pussyStretch} {pc.vagina} that can be filled with seed, in addition, they've are host to a special Fertility Tattoo making them a perfect breeding bitch just for you!"
text = text + ".\n\n"
return text
func _react(_action: String, _args):
if _action == "speechbye2":
GM.pc.getSkillsHolder().addSkillExperience("Pet", 1000)
GM.pc.getSkillsHolder().addPerk("PetSpeech")
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Lost_Speech", true)
if _action == "finish":
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Got_Lamias_Permission", true)
if _action == "talk":
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Talked_With_Lamia", true)
if(_action == "endthescene"):
endScene()
return

View file

@ -22,7 +22,7 @@ func run(_triggerID, _args):
saynn("In the center here you see a fountain like structure, except the yellow fluid that reaches its base and drains into the metallic crates falls from the ceiling instead of being ejected from the ground like in all other fountains you've seen. The yellow fluid is very strong in smell.")
else:
saynn("In the center here you see a fountain like structure, except the transparent fluid that reaches its base and drains into the metallic crates falls from the ceiling instead of being ejected from the ground like in all other fountains you've seen.")
addButton("Shower", "Go on the fountain and meet wet embrace of whatever falls from the ceiling", "fountain")
addButton("Approach", "Approach the fountain", "fountain")
func getPriority():
return 0

View file

@ -0,0 +1,129 @@
extends SceneBase
const Globals = preload("res://Modules/IssixModule/Globals.gd")
var corruption_level = 0
func _init():
sceneID = "DemonLamiaTalk"
func _initScene(_args = []):
corruption_level = (1 if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Trained_With_Hiisi") else 0) + (1 if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Lost_Speech") else 0) + (1 if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Got_Molded_By_Azazel") else 0)
func _run():
if(state == ""):
addCharacter("issix")
saynn("As you continued walking, the musty air as well as humidity of it reached levels you didn't think you could possibly endure, and yet, you've pulled through without a hitch. The closer you got to the end of the metallic hallway, the less it looked like one. Metal got replaced by meaty tunnel, no longer looking so cubical, but getting irregular shapes, with meaty tendrils here and there.")
saynn("The entire place feels alive, moving ever so slightly, making squelching sounds as you walk and as you don't. There are few smaller tendrils coming out of the ground, searching for something, needing to grab something or [i]someone[/i].")
saynn("While walking on the meaty floor is exhausting, your {pc.feet} overcome the obstacle, your goal in sight now. It's a demon-dragon sitting on a chair, with his arm sitting on chair's support, while the other arm supports dragon's head as he looks forward - at you.")
saynn("You can't tell what's the relationship between the environment and Issix, however it does seem like the demon dragon doesn't mind the surroundings he is in, in fact, the confidence exhibited by him would suggest he is in control. But then, what master would he be, without aura of confidence and control around him.")
saynn("[say=issix]And so have the threads of fate, woven by a sly devil in disguise brought your wandering soul in the need of a strong Master to me - your light. Just like the others, you will too be a lamb -not for the slaughter mind you, but for eternal servitude to me. To follow commands, to let [b]me[/b] be your entire life's purpose.[/say]")
saynn("[say=issix]A slave, a pet, term doesn't matter. You are here because you want it. You yearn for someone else to meld you, to change you, to make you theirs.[/say]")
saynn("[say=issix]And I answer this call. I'll be your Master in exchange for your eternal obedience. I'll bind your flesh, your mind to me, and you will let me, you will beg me to do it. To make you someone as simple as my pet. A pet. A creature that yes - requires care, patience and maybe still has some level of independence. But a pet with his owner. Nobody else will see you as anything more that a thing, with its owner. You'll forever have a tag attached to you saying who to return you if you ever get lost, you'll no longer be seen as an individual but as [i]something lesser[/i] - a creature possessed by someone stronger who makes decisions for them.[/say]")
saynn("[say=issix]Tell me {pc.boy}, am I wrong? Is it you who I'm describing?[/say]")
addButton("Yes", "Say yes (enslavement)", "answeryes")
addButton("No", "Say no", "answerno")
if state == "answerno":
saynn("[say=pc]It's not me.[/say]")
saynn("Issix raises his eyebrows in surprise.")
saynn("[say=issix]Are you not? [/say]")
if state == "answeryes":
saynn("[say=pc]Yes.[/say]")
if GM.pc.getSkillsHolder().hasPerk("PetSpeech"):
saynn("Master smiles and claps his paws in return.")
saynn("[say=issix]Splendid! You speak like proper pet too. How wonderful![/say]")
else:
saynn("[say=issix]Perfect.[/say]")
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Got_Molded_By_Azazel"):
saynn("Issix eyes your body, seeing your new {pc.vagina} and a tattoo.")
saynn("[say=issix]I'm so glad for you so eagerly accepting your place as breeding bitch. I'll put it all to good use, don't worry, you'll enjoy being a mother.[/say]")
saynn("[say=issix]Sit.[/say]")
if Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Trained_With_Hiisi"):
saynn("Your knees fall to the meaty grounds, making you hear a resounding squelch as well as feel wetness on your legs, next - your ass hits the same floor... Feelings are odd, a bit uncomfortable, though the meaty floor feels smooth and inviting. Issix laughs.")
saynn("[say=issix]So obedient.[/say]")
else:
saynn("You hesitate, it sounded like a command, your hesitation leaves as you look into Master's red eyes. You sit on the meaty floor, making squelching sounds as you do, feeling wetness on your nude body.")
saynn("[say=issix]Good.[/say]")
if corruption_level == 3:
saynn("[say=issix]This is what you actively chose, wasn't it? Oh, you are much much more malleable than my other pets. I can feel it.[/say]")
saynn("[say=issix]Such obedience, such eagerness for service must be rewarded.[/say]")
saynn("Issix stands from his chair, he stretches his muscular body, flexing it as he takes 3 slow steps towards you. He stands taller than you, his figure looming like a parent over their child. They hold authority. Natural instinct tells you to keep your head down, you don't deserve to look at someone so much more refined, strong and independent than you.")
saynn("He holds his paw just in front of you, at first empty palm suddenly holding an object that appeared from thin air. A heavy duty metal collar, shining with it's silver metallic color, reflecting purple-red light from the fleshy room around you. On it, there are engraved words „PROPERTY OF ISSIX — PET "+GM.pc.getName().to_upper()+" —”, Collar has a simple sturdy metal ring in front for connecting with a leash or a chain, the collar seems bent, with it not having any clear way to close it around someone's neck, it's a c shaped object, which confuses you, how does Master intend to secure it around your neck?")
saynn("[say=issix]So tell me, are you ready to become mine?[/say]")
addButton("Yes, Master", "Agree to be collared", "collaring")
if state == "collaring":
saynn("[say=pc]Y-yes Master.[/say]")
saynn("[say=issix]Splendid. In that case...[/say]")
saynn("He snaps his paw fingers. Suddenly the surrounding changes. The meaty walls are still meaty walls, however they are now decorated by a lot of white decor, many fancy shapes hang on the meaty walls, seemingly sticking to them by small tendrils holding them. Issix's chair is replaced by a small stage on which you now sit instead after being moved with no effort taken by anyone. Issix continues to stand before you, holding a collar in his paw. You look to your side, on which there still is an incredibly long dark tunnel, but also there are three chairs occupied by three very well known to you creatures - Azazel, Lamia and Hiisi, the first two hold an excited face expression, while the last one observes with interest the two of you on the stage.")
saynn("In a way, the long dark tunnel adds creepiness to what this would otherwise be - a happy ceremony. Because judging by the surrounding decor and furniture - this does remind you of some kind of a old-school wedding.")
saynn("If this wasn't enough, some kind of organ music plays, you don't see the source of the sound, but the intention of the tune is quite apparent. The echo of long corridor making this experience even more bizzare.")
saynn("[say=issix]We all gather here today to celebrate a new pet in my collection. {pc.name} decided to spend the rest of their life in servitude to me. {pc.He} is willingly in mind and body giving {pc.him}self to me, Master Issix as a submissive and recognizing me as his superior - master.[/say]")
saynn("Issix continues in pompous tone, presenting the collar to the audience of three.")
saynn("[say=issix]The collar I hold here is a sign of this subservience, it's an evidence of eternal pact. It's a heavy duty collar that keeps pets in check. The heaviness of its weight reminds them of their place at all times, the look and engraved words serve as banner for everyone else to know who owns this beautiful "+Globals.getPlayerPetName()+" here.[/say]")
saynn("[say=issix]When the collar fits the neck of a pet, it never goes off. The metal welding by itself making impossible to take off ring.[/say]")
saynn("You can feel Issix's look on you.")
saynn("[say=issix]If there isn't any opposition, I'll seal {pc.name}'s fate.[/say]")
addButton("Silence", "Music continues playing, some squelching from the meaty walls around can be heard", "collaring2")
if state == "collaring2":
saynn("[say=issix]Present your neck to me, "+Globals.getPlayerPetName()+".[/say]")
saynn("Intense feelings of hit you like a brick hearing this sentence. „This is it”. It's where you become someone's property, a slave to whims of someone else. You look up at your Master's face, showing your neck to him, granting him full access.\nHe kneels before you supported by one leg giving you a good look at both his smiling face as well as collar that closes in on your neck.")
saynn("Time is slowed down, the metal ends of a collar slip past your throat, you can feel the heat coming from your Master's paws positioning the collar just right, it doesn't touch you yet, as Master continues to hold it in the air. You gulp and close your eyes. Intense feeling of submission, lust and excitement rushes through you, you hear two ends of metal clinging together behind what you can see, the collar gets lowered until it rests on your neck and shoulders, it's heavy. Very heavy. You open your eyes and see face of Master licking his lips in excitement, the cheers coming from the side where his other pets sat down. Master "+("ruffles your hair" if GM.pc.hasHair() else "pets your hairless scalp")+" while attaching the end of a leash to the collar on your neck.")
saynn("[say=issix]Good "+Globals.getPlayerPetName()+".[/say]")
saynn("At one moment all you can see is your Master's face, at another he moves his head to your ear and you see the world around changing, melting? Disappearing. White noise appearing instead of meaty walls. Your Master whispers into your ear as he gives you a hug.")
saynn("[say=issix]My pet. I'll see you soon again, I'll make you mine, for good this time.[/say]")
addButton("Nooo", "Master, noooo!", "noo")
addButton("Blink", "Blink", "blink")
if state in ["noo", "blink"]:
if state == "noo":
saynn("Before you can answer the world starts deconstructing, the meaty walls you see become more and more twisted until they break into sea of white noise. Feeling the dread of losing the precious moment that you just entered moments before you whimper.")
saynn("[say=pc]Noooooo![/say]")
saynn("Your Master speaks in calm voice.")
saynn("[say=issix]Don't despair. Join me soon.[/say]")
saynn("The world you just knew gets replaced by nothingness, the musty heavy air is still the same, the feeling of a collar on your neck - perhaps not as heavy as before stays, the warm embrace of your Master is replaced with a different kind of warm embrace, from Azazel.")
saynn("You open your eyes and see his face, happy, as if he was living through your emotions, through your experiences that you just had, he speaks.")
saynn("[say=azazel]So, how was it? Did you have fun? What did you see?[/say]")
saynn("A barrage of questions for burdened mind just extracted forcefully from a dream full of hope for new living, for new purpose.")
saynn("[say=pc]I... I think I felt it.[/say]")
saynn("Azazel tilts his head in confusion.")
saynn("[say=azazel]Felt what?[/say]")
saynn("[say=pc]Umm.. The..[/say]")
saynn("You attempt to describe what you felt, a concoction of emotions related to becoming a pet, to having an owner, to being molded, shaped, changed. But nothing comes out of your mouth, it's too difficult for you to say that.")
saynn("[say=pc]I think I'd like to have a Master.[/say]")
saynn("[say=azazel]Hehehe. [b]I know[/b]. Don't worry, I'm sure Master would love to have you as his pet. I can't wait to see you in the harem![/say]")
saynn("You feel embarrassed, but at the same time, you feel so wanting, there is an emotional hole inside you that you feel you have to fill in after encounter with Master Issix in whatever dreamy state you've had on drugs.")
func getDevCommentary():
return ""
func hasDevCommentary():
return false
func _react(_action: String, _args):
if _action in ["noo", "blink"]:
GM.main.clearOverridePC()
GM.pc.getInventory().clearSlot(InventorySlot.Eyes)
setModuleFlag("IssixModule", "Azazel_In_Dream", false)
GlobalRegistry.getModule("IssixModule").hackProcessingCharacters()
GM.pc.updateNonBattleEffects()
if(_action == "endthescene"):
endScene()
return
setState(_action)

View file

@ -0,0 +1,80 @@
extends SceneBase
const Globals = preload("res://Modules/IssixModule/Globals.gd")
func _init():
sceneID = "AzazelDreamFountainScene"
func _run():
if(state == ""):
saynn("You approach a „fountain” at the crossing of hallways. It looks out of place, being in the center like this.")
if(OPTIONS.isContentEnabled(ContentType.Watersports)):
saynn("Judging by the smell, the liquid falling from the ceiling is unmistakably urine. You can't wrap your head around the question where does it come from nor how there is just so much of it. At the center there is a a pillar, though the current of urine makes it difficult to make out how it looks like. You could try to come closer but you'd have to sacrifice the dry state of your "+Globals.getSkinWord()+".")
else:
saynn("You look at the „fountain”, there is large amount of water falling from the ceiling. You can't wrap your head around the question where does it come from. At the center there is a a pillar, though the current of water makes it difficult to make out how it looks like. You could try to come closer but you'd have to sacrifice the dry state of your "+Globals.getSkinWord()+".")
if Globals.returnValueFromStateFlag("Azazel_Corr_Dream_State", "Fountain_Checks", 0) < 8:
addButton("Check", "Come closer and check the pillar", "checkthepillar")
else:
addDisabledButton("Check", "Seriously, stop.")
addButton("Leave", "Leave the fountain alone", "endthescene")
if state == "checkthepillar":
saynn("You decide to come closer to the pillar. It's ordained by numerous symbols, none of which you understand.")
sayn("[color=#ac1eff]ᚺᛖᚱ ᛚᛁᛈᛋ ᛒᛖᚷᚨᚾ ᛏᛟ ᛋᚲᛟᚱᚲᚺ,[/color]")
sayn("[color=#ac1eff]ᛏᚺᚨᛏ ᛃᚢᛁᚲᛖ ᚹᚨᛋ ᚹᛟᚱᛗᚹᛟᛟᛞ ᛏᛟ ᚺᛖᚱ ᛏᛟᚾᚷᚢᛖ,[/color]")
sayn("[color=#ac1eff]ᛋᚺᛖ ᛚᛟᚨᛏᚺ’ᛞ ᛏᚺᛖ ᚠᛖᚨᛋᛏ:[/color]")
sayn("[color=#ac1eff]ᚹᚱᛁᛏᚺᛁᚾᚷ ᚨᛋ ᛟᚾᛖ ᛈᛟᛋᛋᛖᛋᛋ’ᛞ ᛋᚺᛖ ᛚᛖᚨᛈ’ᛞ ᚨᚾᛞ ᛋᚢᚾᚷ,[/color]")
sayn("[color=#ac1eff]ᚱᛖᚾᛏ ᚨᛚᛚ ᚺᛖᚱ ᚱᛟᛒᛖ, ᚨᚾᛞ ᚹᚱᚢᚾᚷ[/color]")
sayn("[color=#ac1eff]ᚺᛖᚱ ᚺᚨᚾᛞᛋ ᛁᚾ ᛚᚨᛗᛖᚾᛏᚨᛒᛚᛖ ᚺᚨᛋᛏᛖ,[/color]")
sayn("[color=#ac1eff]ᚨᚾᛞ ᛒᛖᚨᛏ ᚺᛖᚱ ᛒᚱᛖᚨᛋᛏ.[/color]")
sayn("[color=#ac1eff]ᚺᛖᚱ ᛚᛟᚲᚴᛋ ᛋᛏᚱᛖᚨᛗ’ᛞ ᛚᛁᚴᛖ ᛏᚺᛖ ᛏᛟᚱᚲᚺ[/color]")
sayn("[color=#ac1eff]ᛒᛟᚱᚾᛖ ᛒᚤ ᚨ ᚱᚨᚲᛖᚱ ᚨᛏ ᚠᚢᛚᛚ ᛋᛈᛖᛖᛞ,[/color]")
sayn("[color=#ac1eff]ᛟᚱ ᛚᛁᚴᛖ ᛏᚺᛖ ᛗᚨᚾᛖ ᛟᚠ ᚺᛟᚱᛋᛖᛋ ᛁᚾ ᛏᚺᛖᛁᚱ ᚠᛚᛁᚷᚺᛏ,[/color]")
sayn("[color=#ac1eff]ᛟᚱ ᛚᛁᚴᛖ ᚨᚾ ᛖᚨᚷᛚᛖ ᚹᚺᛖᚾ ᛋᚺᛖ ᛋᛏᛖᛗᛋ ᛏᚺᛖ ᛚᛁᚷᚺᛏ[/color]")
sayn("[color=#ac1eff]ᛋᛏᚱᚨᛁᚷᚺᛏ ᛏᛟᚹᚨᚱᛞ ᛏᚺᛖ ᛋᚢᚾ,[/color]")
sayn("[color=#ac1eff]ᛟᚱ ᛚᛁᚴᛖ ᚨ ᚲᚨᚷᛖᛞ ᛏᚺᛁᚾᚷ ᚠᚱᛖᛖᛞ,[/color]")
sayn("[color=#ac1eff]ᛟᚱ ᛚᛁᚴᛖ ᚨ ᚠᛚᚤᛁᚾᚷ ᚠᛚᚨᚷ ᚹᚺᛖᚾ ᚨᚱᛗᛁᛖᛋ ᚱᚢᚾ.[/color]")
saynn("[say=pc]What the fuck.[/say]")
saynn("Deciding that staying in here under the assault of "+("piss" if OPTIONS.isContentEnabled(ContentType.Watersports) else "water")+" from above isn't the best idea, you come back.")
addButton("Leave", "Leave", "")
if state == "playerisbeingsilly":
addCharacter("hiisidemon")
addCharacter("azazeldemon")
saynn("You go against the waterfall of wat fluid for 8th time, wanting to see the runic writing on it. This time the runes pulsate with bright purple color blinding you momentarily, you feel your knees go weak, your entire body collapsing, you lose consciousnesses completely soaked at the bottom of the fountain. While you are unconscious, the following conversation plays around you.")
saynn("[say=hiisidemon]Should we do something? {pc.He} looks kinda miserable in there.[/say]")
saynn("[say=azazeldemon]Nah, I think we should leave {pc.him} alone. they won't drown in this puddle.[/say]")
saynn("[say=hiisidemon]How did that even happen?[/say]")
saynn("[say=azazeldemon]I think, exhaustion? Maybe?[/say]")
saynn("[say=hiisidemon]From what? Just how weak do you have to be to collapse in a fountain like that? What were they even trying to do here? There is nothing here other than this dumb poem.[/say]")
saynn("[say=azazeldemon]It's not dumb, it's a beautiful story... From what I see, there are some traces of corruptive residue on {pc.him}, odd.[/say]")
saynn("[say=hiisidemon]Where did that come from?[/say]")
saynn("[say=azazeldemon]Can't tell. Anyways, lets head back before they wake up, not like we are short on time. The ceremony is going to happen when {pc.he} is ready.[/say]")
saynn("[say=hiisidemon]Okey then, beats me.[/say]")
saynn("* Some time later *")
addButton("Stand up", "There is more to do here", "endthescene")
func getDevCommentary():
return ""
func hasDevCommentary():
return false
func _react(_action: String, _args):
if _action == "checkthepillar":
if(OPTIONS.isContentEnabled(ContentType.Watersports)):
GM.pc.coverBodyWithFluid("Piss", 2000.0)
else:
GM.pc.coverBodyWithFluid("Water", 2000.0)
var fountain_checks = Globals.returnValueFromStateFlag("Azazel_Corr_Dream_State", "Fountain_Checks", 0)
if fountain_checks == 7:
_action = "playerisbeingsilly"
Globals.modifyDictStates("Azazel_Corr_Dream_State", "Fountain_Checks", fountain_checks+1)
if(_action == "endthescene"):
endScene()
return
setState(_action)

View file

@ -0,0 +1,16 @@
extends WorldEditBase
func _init():
id = "AzazelWorldHack"
isRegular = true
# This here is a hack to do something after MainScene applies Minimap changes for blindfold which cannot be changed in event/scene because they are hard overwritten later by MainScene in updateThings(). THIS IS NOT HOW IT SHOULD BE but Game should have a way to modders to better manipulate those effects
func apply(world: GameWorld):
if GM.pc.getLocation().begins_with("petsdream_cellblock_corridor_part"):
var room_id = int(GM.pc.getLocation().substr(33))
if room_id > 1 and room_id < 17:
world.setDarknessVisible(true)
world.setDarknessSize(int(lerp(100, 8, room_id/17.0)))
elif room_id == 1:
world.setDarknessVisible(false)

View file

@ -0,0 +1,21 @@
extends EventBase
const Globals = preload("res://Modules/IssixModule/Globals.gd")
func _init():
id = "LongCorridorEvent"
func registerTriggers(es):
es.addTrigger(self, Trigger.EnteringRoom, "petsdream_cellblock_corridor_part17")
func react(_triggerID, _args):
runScene("IssixWelcomesPet")
return true
func getPriority():
return 0
func onButton(_method, _args):
pass

View file

@ -6,13 +6,27 @@ func _init():
id = "StopPlayerFromLeavingDreamEvent"
func registerTriggers(es):
es.addTrigger(self, Trigger.EnteringRoom, "petsdream_cellblock_corridor_part2")
es.addTrigger(self, Trigger.EnteringRoom, "petsdream_cellblock_corridor_part4")
es.addTrigger(self, Trigger.EnteringRoom, "petsdream_cellblock_corridor_part6")
es.addTrigger(self, Trigger.EnteringRoom, "petsdream_cellblock_corridor_part8")
es.addTrigger(self, Trigger.EnteringRoom, "petsdream_cellblock_lilac_nearcell")
func run(_triggerID, _args):
match GM.pc.getLocation():
"petsdream_cellblock_corridor_part2":
GM.ui.addDisabledButtonAt(6, "North", "You are being blocked")
"petsdream_cellblock_corridor_part4":
if !Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Got_Azazels_Permission"):
GM.ui.addDisabledButtonAt(6, "North", "A strange wall of goo blocks your path, you can't get over it. At the center of the wall is a sculpture of a pregnant person")
"petsdream_cellblock_corridor_part6":
if !Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Got_Hiisis_Permission"):
saynn("A wall blocks your path, on it is sculptured a warrior holding a sword.")
GM.ui.addDisabledButtonAt(6, "North", "A stone wall blocks your path, a warrior sculptured onto it")
"petsdream_cellblock_corridor_part8":
if !Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Got_Lamias_Permission"):
saynn("You can barely see anything here, though it appears that some kind of small object is preventing you from progressing ahead.")
GM.ui.addDisabledButtonAt(6, "North", "A magic ballgag protects further path, any attempt to pass it result in barrage of painful hits on your body")
"petsdream_cellblock_lilac_nearcell":
if !Globals.checkIfAchieved("Azazel_Corr_Dream_State", "Talked_With_Azazel"):
GM.ui.addDisabledButtonAt(6, "North", "Large metal bars restrict you from going in that direction")

View file

@ -458,7 +458,7 @@ func _run():
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 face is of ligher shade of gray. A small set of horns protrudes from his head. On his backside there is a medium sized feline tail.") # TODO Makes no sense player can see that at this point, Azazel is clothed
saynn("You take a closer look at {azazel.name}. He is a very thin and fairly short feline, judging from him sitting he is around " + Util.cmToString(150) + " tall, with no visible muscles, likely not very strong. Overall his body is still mostly masculine, though here and there there are feminine features like his face or shoulders.\nHis fur is in majority dark grey, though his face is of ligher shade of gray. A small set of horns protrudes from his head. On his backside there is a medium sized feline tail.")
addButton("Back", "Do something else", "azazelmain")
if state == "azazelprison":

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.3 KiB

View file

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

View file

@ -0,0 +1,35 @@
[remap]
importer="texture"
type="StreamTexture"
path="res://.import/walkies.png-7b28ff9fb30a07244c8fb86257ac7cf3.stex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://Modules/IssixModule/Skills/Images/walkies.png"
dest_files=[ "res://.import/walkies.png-7b28ff9fb30a07244c8fb86257ac7cf3.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,7 +11,7 @@ func getVisibleDescription():
return "You learned basic commands that others can give you"
func getSkillTier():
return 10
return 2
func getPicture():
return "res://Modules/IssixModule/Skills/Images/commands.png"

View file

@ -11,7 +11,7 @@ func getVisibleDescription():
return "You have unconditional urge to stop what you are doing when you hear a click"
func getSkillTier():
return 10
return 2
func getPicture():
return "res://Modules/IssixModule/Skills/Images/clicker.png"

View file

@ -11,7 +11,7 @@ func getVisibleDescription():
return "You have received a completely new name from your Master - Seir"
func getSkillTier():
return 5
return 1
func getPicture():
return "res://Modules/IssixModule/Skills/Images/name.png"

View file

@ -11,7 +11,7 @@ func getVisibleDescription():
return "You have learned the speech of animals without losing ability to communicate with humanoids"
func getSkillTier():
return 5
return 1
func getPicture():
return "res://Modules/IssixModule/Skills/Images/petspeech.png"
@ -22,3 +22,9 @@ func toggleable():
func unlockable():
return false
func hiddenWhenLocked() -> bool:
return true
func hiddenWhenUnlocked() -> bool:
return false

View file

@ -17,4 +17,4 @@ func getPerkTiers():
]
func scripted():
return true
return false

View file

@ -9,7 +9,7 @@ func _init():
regex.compile("([\\!\\.\\?]*)")
func appliesTo(_speaker: BaseCharacter) -> bool:
return _speaker.hasEffect("PetLanguage") or _speaker.hasPerk("PetSpeech")
return _speaker.hasPerk("PetSpeech")
func modify(_text: String, _speaker: BaseCharacter) -> String:
var species = petNoises[Species.Unknown]
@ -22,9 +22,9 @@ func modify(_text: String, _speaker: BaseCharacter) -> String:
for word in split_text:
if RNG.chance(20): # Don't make a sound
continue
var addition = RNG.choice(species)
if word.length() > addition:
addition = word.substr(0, 0) + word[1].repeat(word.length()-addition.length()+1) + word.substr(2)
var addition = RNG.pick(species)
if word.length() > addition.length():
addition = addition.substr(0, 1) + addition[1].repeat(word.length()-addition.length()+1) + addition.substr(2)
var result = regex.search(word)
return_text = return_text + " " + addition + (result.get_string() if result else "")
if(GM.pc.hasPerk(Perk.BDSMGagTalk)):