05.12 updates
This commit is contained in:
parent
a2b72fefa8
commit
7271b46632
|
@ -28,6 +28,7 @@ func _init():
|
|||
npcBaseLust = 80
|
||||
npcBaseStamina = 80
|
||||
npcDefaultFetishInterest = FetishInterest.Neutral
|
||||
|
||||
npcFetishes = {
|
||||
Fetish.AnalSexReceiving : FetishInterest.Loves,
|
||||
Fetish.AnalSexGiving : FetishInterest.Hates,
|
||||
|
@ -124,6 +125,7 @@ func createBodyparts():
|
|||
tail.tailScale = 1
|
||||
giveBodypartUnlessSame(tail)
|
||||
giveBodypartUnlessSame(GlobalRegistry.createBodypart("plantilegs"))
|
||||
skillsHolder.addPerk(Perk.FertilityBroodmother)
|
||||
|
||||
|
||||
func onGivingBirth(_impregnatedEggCells: Array, _newkids: Array):
|
||||
|
|
|
@ -28,7 +28,13 @@ func _init():
|
|||
npcBasePain = 500
|
||||
npcBaseLust = 500
|
||||
npcBaseStamina = 500
|
||||
|
||||
npcArmor = {
|
||||
DamageType.Physical: 15,
|
||||
DamageType.Lust: 30,
|
||||
}
|
||||
npcStats = {
|
||||
Stat.Strength: 40,
|
||||
}
|
||||
npcDefaultFetishInterest = FetishInterest.Neutral
|
||||
npcFetishes = {
|
||||
Fetish.AnalSexReceiving : FetishInterest.ReallyDislikes,
|
||||
|
|
|
@ -26,8 +26,12 @@ func _init():
|
|||
npcDefaultFetishInterest = FetishInterest.Neutral
|
||||
npcLevel = 20
|
||||
npcBasePain = 180
|
||||
npcBaseLust = 2000
|
||||
npcBaseLust = 1000
|
||||
npcBaseStamina = 100
|
||||
npcArmor = {
|
||||
DamageType.Lust: 100,
|
||||
}
|
||||
|
||||
npcFetishes = {
|
||||
Fetish.AnalSexReceiving : FetishInterest.ReallyDislikes,
|
||||
Fetish.AnalSexGiving : FetishInterest.Hates,
|
||||
|
@ -137,3 +141,4 @@ func createBodyparts():
|
|||
giveBodypartUnlessSame(tail)
|
||||
giveBodypartUnlessSame(GlobalRegistry.createBodypart("digilegs"))
|
||||
skillsHolder.addPerk(Perk.StartInfertile)
|
||||
skillsHolder.addPerk(Perk.StartNoHeat)
|
||||
|
|
|
@ -3,6 +3,6 @@
|
|||
"description": "Adds 4 characters, a questline and a system where the player can become enslaved by the character",
|
||||
"author": "Frisk",
|
||||
"repository": "https://github.com/Friskygote/Issix-mod",
|
||||
"modversion": "1.0",
|
||||
"modversion": "0.8",
|
||||
"gameversion": "0.1.6"
|
||||
}
|
||||
|
|
21
Module.gd
21
Module.gd
|
@ -1,6 +1,8 @@
|
|||
extends Module
|
||||
class_name IssixModule
|
||||
|
||||
const APPROX_WALK_DELAY = 9
|
||||
|
||||
func getFlags():
|
||||
return {
|
||||
"Issix_Introduced": flag(FlagType.Bool),
|
||||
|
@ -14,6 +16,7 @@ func getFlags():
|
|||
"Azazel_Affection_given": flag(FlagType.Number),
|
||||
"Lamia_Times_Helped": flag(FlagType.Number),
|
||||
"Hiisi_Affection": flag(FlagType.Number),
|
||||
"Hiisi_Put_Sabotaged_Headvisors": flag(FlagType.Bool),
|
||||
"Helped_Lamia_With_Drawings_Today": flag(FlagType.Bool),
|
||||
"Quest_Bonked": flag(FlagType.Bool),
|
||||
"Quest_Wait_Another_Day": flag(FlagType.Bool),
|
||||
|
@ -51,7 +54,9 @@ func getFlags():
|
|||
"Taught_To_Use_Bowl": flag(FlagType.Bool),
|
||||
"Issix_Branded_PC": flag(FlagType.Bool),
|
||||
"Pet_Time_Interaction_Today": flag(FlagType.Number),
|
||||
"Is_Player_Forced_Today": flag(FlagType.Number) # If player is forced to stay in harem this will have amount of seconds player needs to spend in the harem today
|
||||
"Is_Player_Forced_Today": flag(FlagType.Number), # If player is forced to stay in harem this will have amount of seconds player needs to spend in the harem today
|
||||
"Last_Walk": flag(FlagType.Number),
|
||||
"Eaten_Today": flag(FlagType.Bool)
|
||||
}
|
||||
|
||||
|
||||
|
@ -114,6 +119,7 @@ func _init():
|
|||
GlobalRegistry.registerStatusEffectFolder("res://Modules/IssixModule/StatusEffects/")
|
||||
GlobalRegistry.sortRegisteredStatusEffectsByPriority()
|
||||
GlobalRegistry.registerMapFloorFolder("res://Modules/IssixModule/Floors/")
|
||||
GlobalRegistry.registerSpeechModifiersFolder("res://Modules/IssixModule/SpeechModifiers/")
|
||||
|
||||
# External
|
||||
# "res://Scenes/ParadedOnALeashScene.gd"
|
||||
|
@ -128,6 +134,9 @@ static func addSceneToWatched(scene: String):
|
|||
static func addIssixMood(mood: int):
|
||||
GM.main.setModuleFlag("IssixModule", "Issix_Mood", clamp(GM.main.getModuleFlag("IssixModule", "Issix_Mood", 50)+mood, 0, 100))
|
||||
|
||||
static func getWalkDelay():
|
||||
return APPROX_WALK_DELAY
|
||||
|
||||
static func getPlayerRole():
|
||||
return "pet" if GM.main.getModuleFlag("IssixModule", "PC_Enslavement_Role", 1) == 1 else "prostitute"
|
||||
|
||||
|
@ -146,6 +155,12 @@ func breedSlaveIfNpc():
|
|||
else: # hiisi
|
||||
current_slave.cummedInAnusBy("issix")
|
||||
|
||||
func tickDay():
|
||||
breedSlaveIfNpc()
|
||||
addIssixMood(RNG.randi_range(-7, 7))
|
||||
if GM.main.getDays() - GM.getModuleFlag("IssixModule", "Last_Day_Visited_Master", GM.main.getDays()) > 1:
|
||||
addIssixMood(-10)
|
||||
|
||||
func resetFlagsOnNewDay():
|
||||
GM.main.setModuleFlag("IssixModule", "Azazel_Catnip_taken_today", false)
|
||||
GM.main.setModuleFlag("IssixModule", "Activated_Cabinets", {})
|
||||
|
@ -154,5 +169,7 @@ func resetFlagsOnNewDay():
|
|||
GM.main.setModuleFlag("IssixModule", "Todays_Bred_Slave", RNG.pick(['azazel', 'pc', 'hiisi']))
|
||||
if GM.main.getModuleFlag("IssixModule", "Helped_Lamia_With_Drawings_Today") != null:
|
||||
GM.main.setModuleFlag("IssixModule", "Helped_Lamia_With_Drawings_Today", false)
|
||||
addIssixMood(RNG.randi_range(-7, 7))
|
||||
GM.main.setModuleFlag("IssixModule", "Pet_Time_Interaction_Today", 0)
|
||||
if GM.main.getDays()-GM.main.getModuleFlag("IssixModule", "Last_Walk", GM.main.getDays()) == APPROX_WALK_DELAY:
|
||||
GM.main.setModuleFlag("IssixModule", "Last_Walk", GM.main.getDays())
|
||||
GM.main.setModuleFlag("IssixModule", "Eaten_Today", false)
|
||||
|
|
|
@ -8,9 +8,9 @@ The mod and contents in it is - surprise surprise - a work of fiction. Author do
|
|||
|
||||
# Existing content (assuming I don't get lazy before 1.0)
|
||||
- Issix - a dragon-demon hybrid, he owns 3 pets, all of them have some story that you can uncover (and which may be expanded in the future)
|
||||
- Azazel - a feline breeding bitch
|
||||
- Hiisi - a troubled pup
|
||||
- Lamia - a mute fox
|
||||
- Azazel - a kind feline breeding bitch
|
||||
- Hiisi - a troubled pup - guardian angel of the harem (after Issix)
|
||||
- Lamia - a mute and sexually absent fox
|
||||
- One quest that leads to your enslavement by Issix (currently only implemented voluntary enslavement as a pet, this is a sweet type of enslavement), there are a bunch of fun elements in it, like figuring out an ASCII map or filling a questionnaire with a possible little twist
|
||||
- Each pet has their own mechanic that increases their trust/affection towards the player
|
||||
- Finally, voluntary enslavement, if you eventually get enslaved it may make your game a bit more difficult
|
||||
|
@ -19,7 +19,7 @@ The mod and contents in it is - surprise surprise - a work of fiction. Author do
|
|||
|
||||
# Goals
|
||||
## Mod's audience
|
||||
Mod is directed pretty much exclusively at players who are submissive. In game there are already a bunch of ways the player can effectively submit to other creatures - recentlishly added hypnokink is a great example of that, Tavi's questline also has a route/revolves around player submitting to Tavi as their pet. Those things are wonderful and I love them, but in-game slave system is definitely directed at dominant players. This mod tries to address that by adding a character that can enslave **the player**. It features degradation, pet-play content, watersports (for those who switch it on), branding.
|
||||
Mod is directed pretty much exclusively at players who are submissive. In game there are already a bunch of ways the player can effectively submit to other creatures - recentlishly added hypnokink is a great example of that, Tavi's questline also has a route/revolves around player submitting to Tavi as their pet. Those things are wonderful and I love them, but in-game slave system is definitely directed at dominant players. This mod tries to address that by adding a character that can enslave **the player**. It features degradation, pet-play content, watersports (for those who switch it on), branding. In addition - worth noting that the entire harem of pets is male.
|
||||
|
||||
## Slavery
|
||||
I think there is a reason why there are dozens of harem-management games where player becomes harem's owner and manages slave instead of being one. I think in large part there isn't much of a way to make the player be a slave and keep the gameplay entertaining. If becoming a slave means less choice - the game may become boring. In this mod I'm trying my best to still feel like player is enslaved while at the same time let them continue playing the game with full functionality. This is not an easy task to do, but probably better than eternity of being stuck in one time playing card game with another pet.
|
||||
|
|
|
@ -168,8 +168,13 @@ func _run():
|
|||
|
||||
if(state == "q6"):
|
||||
processTime(2*60)
|
||||
saynn("Another question shows up on your screen")
|
||||
saynn("„Do you own any slaves of your own?”")
|
||||
saynn("Another question shows up on your screen, along with it an ominous screaming face momentarily appears on the screen, you flinch, which doesn't go unnoticed.")
|
||||
saynn("[say=issix]Everything alright? You looked as if you saw a ghost.[/say]")
|
||||
saynn("He looks at the screen of the tablet, not seeing anything wrong.")
|
||||
saynn("[say=issix]Something wrong with the question?[/say]")
|
||||
saynn("[say=pc]Uhhh, no, I thought I saw something on the screen but it's not there anymore.[/say]")
|
||||
saynn("[say=issix]... Odd. But well, it's certainly not there anymore, just a boring question, go ahead, respond to it.[/say]")
|
||||
saynn("Question reads „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])
|
||||
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
extends SceneBase
|
||||
|
||||
var random_issix_activities_talk = [
|
||||
"He notices you right away and follows you with his gaze."
|
||||
"He notices you right away and follows you with his gaze.",
|
||||
"He is busy tinkering with some metal parts before noticing you.",
|
||||
"He sings a song to himself while gesticulating with his paws keeping the eyes closed, until he sees you approach.",
|
||||
|
||||
] #TODO Write more
|
||||
|
||||
func _init():
|
||||
|
|
|
@ -730,14 +730,17 @@ func _react(_action: String, _args):
|
|||
], "hall_ne_corner", "crawl"])
|
||||
|
||||
if _action == "lamiaexercise":
|
||||
GM.pc.addStamina(-40)
|
||||
processTime(10*60)
|
||||
|
||||
if _action == "lamiaexercise2":
|
||||
processTime(10*60)
|
||||
GM.pc.addStamina(-40)
|
||||
GM.pc.addEffect(StatusEffect.Yoga)
|
||||
GM.main.getCharacter("lamia").addEffect(StatusEffect.Yoga)
|
||||
|
||||
if _action == "lamiaexercise3":
|
||||
GM.pc.addStamina(-20)
|
||||
processTime(10*60)
|
||||
GM.pc.addLust(10)
|
||||
|
||||
|
|
|
@ -78,6 +78,7 @@ func _init():
|
|||
func _run():
|
||||
|
||||
if(state == ""):
|
||||
playAnimation(StageScene.Solo, "stand", {pc="pc", bodyState={naked=false, hard=false}, npcBodyState={naked=false, hard=false}})
|
||||
setLocationName("Issix's Corner")
|
||||
saynn("In front of you - three slaves belonging to Issix.")
|
||||
addCharacter("azazel")
|
||||
|
@ -126,7 +127,7 @@ func _run():
|
|||
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")
|
||||
if HiisiRPS["winh"] > 2 and HiisiRPS["reward_acquired"] == false:
|
||||
addButtonWithChecks("Hypnovisor", "Ask Hiisi to fulfill his request with hypnovisors", "hiisihypnovisors", [], [[ButtonChecks.HasItemID, "HypnovisorMk0"]])
|
||||
addButtonWithChecks("Hypnovisor", "Ask Hiisi to fulfill his request with hypnovisors", "hiisihypnovisors", [], [[ButtonChecks.HasItemWithTag, ItemTag.Hypnovisor]])
|
||||
if not getModuleFlag("IssixModule", "Hiisi_Name_Helped", false):
|
||||
addDisabledButton("Name", "You already asked Hiisi about his name")
|
||||
else:
|
||||
|
@ -173,18 +174,16 @@ func _run():
|
|||
addButton("Leave", "You aren't welcome here for now", "endthescene")
|
||||
|
||||
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 == "hiisihypnovisors":
|
||||
playAnimation(StageScene.Duo, "kneel", {pc="hiisi", npc="pc", npcAction="kneel", bodyState={naked=false, hard=false}, npcBodyState={naked=false, hard=false}})
|
||||
saynn("[say=pc]Umm, I have those, you wanted me to wear those the other day, right?[/say]")
|
||||
|
||||
saynn("hHiisi gives you a grin")
|
||||
saynn("Hiisi gives you a grin")
|
||||
saynn("[say=hiisi]Yeah, I did. Can you pass them to me for a moment?[/say]")
|
||||
saynn("[say=pc]Sure?[/say]")
|
||||
saynn("You hand the Hypnovisor to Hiisi, he pulls out a small box out of nowhere and swipes it near the hypnovisors, he skillfully baps and presses a few places on the hypnovisors and turns them on for a second as if to confirm something. Satisfied he turns them off and passes back to you.")
|
||||
|
@ -192,6 +191,54 @@ func _run():
|
|||
addButton("Refuse", "Say that you feel uncomfortable putting the hypnovisors on with those changes", "hiisihypnono")
|
||||
addButton("Put on", "Put the hypnovisors on yourself and turn them on", "hiisihypnoyes")
|
||||
|
||||
if state == "hiisihypnono":
|
||||
saynn("[say=pc]Sorry, Hiisi, but I'm not comfortable putting them on after you tinkered with them.[/say]")
|
||||
saynn("[say=hiisi]Oh cmoon, you agreed to doing something for me! I just wanted to test something![/say]")
|
||||
saynn("[say=pc]That's still a no.[/say]")
|
||||
saynn("[say=hiisi]Oh fucking hell. Fine then, be an asshole. I've won fair and square and you treat me like this. Fuck off.[/say]")
|
||||
saynn("He is not having any of it, seems like he is sulking now. You are left with the hypnovisors, you attempt to set them to fabric settings and you seemingly succeed. You have your unsabotaged hypnovisors back.")
|
||||
addButton("Continue", "Hiisi continues to sulk", "")
|
||||
|
||||
if state == "hiisihypnoyes":
|
||||
saynn("[say=pc]Are you sure it's safe?[/say]")
|
||||
saynn("[say=hiisi]Yeah...[/say]")
|
||||
saynn("He doesn't sound sure about that himself, though you did promise him and he won fair and square.")
|
||||
saynn("[say=pc]Okeeeyy, in that case here I go.[/say]")
|
||||
saynn("You put on the Hypnovisors. They don't feal any different from regularly working hypnovisors, at least at first. As the time goes you start feeling stressed, anxious even fearful, and despite it, you are [pulse color=#00FFAA height=0.0 freq=1.0]drawn to it[/pulse]. Like moth to the flame, you want to [pulse color=#00FFAA height=0.0 freq=1.1]continue[/pulse]. You allow more of that [pulse color=#00FFAA height=0.0 freq=1.2]violent poison[/pulse] into you, the visor on your face [pulse color=#00FFAA height=0.0 freq=1.3]deciding for you[/pulse]. You have never felt such strong desire to [pulse color=#00FFAA height=0.0 freq=1.4]destroy what you are made of[/pulse]. To [pulse color=#00FFAA height=0.0 freq=1.5]let others make use of you[/pulse]. Your brain is a mush, you are drifting on the sea where the sea has all of the [pulse color=#00FFAA height=0.0 freq=1.6]control[/pulse], every movement is dictated by the waves. The sea [pulse color=#00FFAA height=0.0 freq=1.9]controls you[/pulse] with fear, fear of taking everything of yours...")
|
||||
addButton("Black out", "You lose consciousness", "hiisihypnodone")
|
||||
|
||||
if state == "hiisihypnodone":
|
||||
playAnimation(StageScene.Duo, "kneel", {pc="issix", npc="pc", npcAction="kneel", bodyState={naked=false, hard=false}, npcBodyState={naked=false, hard=false}})
|
||||
saynn("[say=issix]{pc.Name}, {pc.name}? You there?[/say]")
|
||||
saynn("You hear your name being called, are you asleep? You open your eyes and see Issix's face.")
|
||||
saynn("[say=issix]Oh thank galactic squid you are okey. Fuck.[/say]")
|
||||
saynn("Memories flood back to you, you were putting headvisors and all then felt all of those unpleasant and pleasant feelings, but you can't remember what exactly were they, or what they meant or really anything else.")
|
||||
if GM.main.getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) == 1: # is a pet
|
||||
saynn("[say=issix]I'm sorry my pet, I should have noticed sooner that something was amiss. Hiisi was doing some experimentation on his own, and clearly it got out of control. How many fingers do you see?[/say]")
|
||||
saynn("He shows 2 fingers")
|
||||
saynn("[say=pc]Two.[/say]")
|
||||
saynn("[say=issix]Okey, your sight looks fine. Can you recall who am I? Where you are? Who you are?[/say]")
|
||||
saynn("[say=pc]I think so. You are my Master, name is Issix. I'm {pc.name} and we are in the corner of the main hall of the prison.[/say]")
|
||||
saynn("[say=issix]That checks out, good good. I think that even though you lost consciousness, *cough* for whatever reason, you seem just fine. Hiisi![/say]")
|
||||
saynn("He looks at the sad leashed pup with anger, tugging on his leash.")
|
||||
saynn("[say=hiisi]I'm sorry {pc.name}. I shouldn't have experimented on you.[/say]")
|
||||
saynn("[say=issix]I do NOT want to see this happen again, understood?[/say]")
|
||||
saynn("[say=hiisi]Yes, Master.[/say]")
|
||||
saynn("Pup, with curled ears, completely in submission to his master responds.")
|
||||
else:
|
||||
saynn("[say=issix]I apologize for my pet Hiisi, I should have known something was amiss. Hiisi was doing some experimentation on his own, and clearly it got out of control. How many fingers do you see?[/say]")
|
||||
saynn("He shows 2 fingers")
|
||||
saynn("[say=pc]Two.[/say]")
|
||||
saynn("[say=issix]Okey, your sight looks fine. Can you recall who am I? Where you are? Who you are?[/say]")
|
||||
saynn("[say=pc]I think so. You are Issix, I'm {pc.name} and we both are imprisoned.[/say]")
|
||||
saynn("[say=issix]Good good. Sounds about correct. Hiisi![/say]")
|
||||
saynn("He looks at the sad leashed pup with anger, tugging on his leash.")
|
||||
saynn("[say=hiisi]I'm sorry {pc.name}. I shouldn't have experimented on you.[/say]")
|
||||
saynn("[say=issix]I do NOT want to see this happen again, understood?[/say]")
|
||||
saynn("[say=hiisi]Yes, Master.[/say]")
|
||||
saynn("Pup, with curled ears, completely in submission to his master responds.")
|
||||
addButton("Back", "Well, that happened, end the conversation", "")
|
||||
|
||||
|
||||
if(state == "lamiamain"):
|
||||
clearCharacter()
|
||||
|
@ -487,6 +534,10 @@ func verify_response(response: int):
|
|||
return response == 3
|
||||
return response == 4
|
||||
|
||||
func markHiisiRewardAsAquired():
|
||||
var HiisiRPS = getModuleFlag("IssixModule", "Hissi_RPS_data", {})
|
||||
HiisiRPS["reward_acquired"] = true
|
||||
setModuleFlag("IssixModule", "Hissi_RPS_data", HiisiRPS)
|
||||
|
||||
func _react(_action: String, _args):
|
||||
if _action in ["blueboxlamia1", "redboxlamia2", "greenboxlamia3", "purpleboxlamia4"]:
|
||||
|
@ -513,6 +564,23 @@ func _react(_action: String, _args):
|
|||
if _action == "hiisisilence":
|
||||
setModuleFlag("IssixModule", "Hiisi_Name_Helped", true)
|
||||
|
||||
if _action == "hiisihypnono":
|
||||
markHiisiRewardAsAquired()
|
||||
setModuleFlag("IssixModule", "Hiisi_Put_Sabotaged_Headvisors", false)
|
||||
increaseModuleFlag("IssixModule", "Hiisi_Affection", -3)
|
||||
|
||||
if _action == "hiisihypnoyes":
|
||||
markHiisiRewardAsAquired()
|
||||
GM.pc.addConsciousness(-0.6)
|
||||
GM.pc.inventory.forceEquipStoreOther(GM.pc.inventory.getItemsWithTag(ItemTag.Hypnovisor)[0])
|
||||
setModuleFlag("IssixModule", "Hiisi_Put_Sabotaged_Headvisors", true)
|
||||
increaseModuleFlag("IssixModule", "Hiisi_Affection", 3)
|
||||
|
||||
if _action == "hiisihypnodone":
|
||||
processTime(20*60)
|
||||
GM.pc.inventory.unequipSlot(InventorySlot.Eyes)
|
||||
GM.pc.addConsciousness(1.0)
|
||||
|
||||
if _action == "artminigamegoodend":
|
||||
increaseModuleFlag("IssixModule", "Lamia_Times_Helped")
|
||||
|
||||
|
@ -533,6 +601,7 @@ func _react(_action: String, _args):
|
|||
GM.main.increaseModuleFlag("IssixModule", "Azazel_Affection_given")
|
||||
|
||||
if _action == "hiisienergy":
|
||||
markHiisiRewardAsAquired()
|
||||
GM.pc.getInventory().addItem(GlobalRegistry.createItem("EnergyDrink"))
|
||||
|
||||
if(_action == "endthescene"):
|
||||
|
|
|
@ -0,0 +1,32 @@
|
|||
extends SceneBase
|
||||
|
||||
|
||||
func _init():
|
||||
sceneID = "IssixFoundPlayer"
|
||||
|
||||
func _run():
|
||||
if(state == ""):
|
||||
playAnimation(StageScene.Duo, "stand", {npc="issix", npcAction="stand"})
|
||||
|
||||
saynn("[say=issix]Hey there pet! Now, care to explain why haven't you visited for past XX days?[/say]")
|
||||
saynn("Issix almost running stops you with haste before the guard checkpoint. His face is a mix of concern and anger.")
|
||||
addButton("Excuse", "Think of an excuse to escape this awkward situation", "excuse")
|
||||
addButton("Honest", "Tell your Master that you just haven't had the time", "honest")
|
||||
addButton("Not a pet", "Tell your Master that you no longer wish to be his pet", "rejection")
|
||||
addButton("Walk away", "Just keep walking", "leave")
|
||||
|
||||
if state == "excuse":
|
||||
saynn("[say=pc]I'm sorry, I were working on something really hard lately and...[/say]")
|
||||
saynn("[say=issix]Enough. I'm not interested in hearing any of this. [/say]")
|
||||
|
||||
|
||||
|
||||
func _react(_action: String, _args):
|
||||
processTime(2*60)
|
||||
|
||||
|
||||
if(_action == "endthescene"):
|
||||
endScene()
|
||||
return
|
||||
|
||||
setState(_action)
|
|
@ -81,6 +81,7 @@ func _react(_action: String, _args):
|
|||
|
||||
if(_action == "endthescene"):
|
||||
increaseModuleFlag("IssixModule", "PC_Training_Level")
|
||||
setModuleFlag("IssixModule", "Last_Walk", GM.main.getDays())
|
||||
endScene()
|
||||
return
|
||||
|
||||
|
|
|
@ -7,16 +7,18 @@ func _init():
|
|||
|
||||
func _run():
|
||||
if(state == ""):
|
||||
var last_walk = getModuleFlag("IssixModule", "Last_Walk", 0)
|
||||
playAnimation(StageScene.Duo, "kneel", {npc="issix", npcAction="stand"})
|
||||
if pet_time_start == null:
|
||||
pet_time_start = GM.main.getTime()
|
||||
saynn("WARNING: A lot of the content in here is a placeholder. It will change, it will break, it will cause calamities. Treat it as a sneek peek into the (potential) future.")
|
||||
saynn("Your slave role: "+IssixModule.getPlayerRole())
|
||||
saynn("Your training: "+trainingCheck())
|
||||
saynn("Master's mood: "+getMood())
|
||||
saynn("Issix's slave for "+str(getDays())+" days")
|
||||
match GM.main.getModuleFlag("IssixModule", "PC_Enslavement_Role", 1):
|
||||
1:
|
||||
saynn("Amount of time spent in Master's harem today: "+str(getTimeSpent()) + " minutes")
|
||||
saynn("Amount of time spent in Master's harem today: "+str(getTimeSpentReadable()))
|
||||
2:
|
||||
saynn("To pay Master for sluttying around yesterday: " + str(GM.main.getModuleFlag("IssixModule", "Prostituation_fee_yesterday", 0) + GM.main.getModuleFlag("IssixModule", "Prostituation_flat_fee", 0)))
|
||||
_:
|
||||
|
@ -26,16 +28,96 @@ func _run():
|
|||
addButton("Azazel", "Actions in relation to Azazel", "azazelpetmenu")
|
||||
addButton("Hiisi", "Actions in relation to Hiisi", "hiisipetmenu")
|
||||
addButton("Lamia", "Actions in relation to Lamia", "lamiapetmenu")
|
||||
if not (GM.main.getModuleFlag("IssixModule", "Is_Player_Forced_Today", 0) > (getModuleFlag("IssixModule", "Pet_Time_Interaction_Today", 0)+(GM.main.getTime()-pet_time_start))) or GM.main.isVeryLate():
|
||||
if getModuleFlag("IssixModule", "Taught_To_Use_Bowl", false) == true:
|
||||
if getModuleFlag("IssixModule", "Eaten_Today", false) == false:
|
||||
addButton("Eat", "Eat from your bowl of food", "haremeat")
|
||||
else:
|
||||
addDisabledButton("Eat", "You've already eaten today")
|
||||
if GM.pc.getStamina() > 100: # TODO Add some other event as precondition for this being available?
|
||||
addButton("Play", "Play with other pets.", "haremplay")
|
||||
else:
|
||||
addDisabledButton("Play", "You are too tired to play with other pets.")
|
||||
if GM.main.getDays()-last_walk == IssixModule.getWalkDelay(): # TODO Walks
|
||||
if GM.main.getTime() < 54000:
|
||||
addDisabledButton("Walk", "Walks are unimplemented at the moment, possibly in future releases!")
|
||||
else:
|
||||
addDisabledButton("Walk", "Too late for a walk")
|
||||
if not (GM.main.getModuleFlag("IssixModule", "Is_Player_Forced_Today", 0) > (getTimeSpent())) or GM.main.isVeryLate():
|
||||
addButton("Leave", "Leave", "endthescene")
|
||||
addButton("Pass", "Pass the time (placeholder button for now, supposed to be actions with pets/master later)", "passtime")
|
||||
|
||||
if state == "issixpetmenu":
|
||||
saynn("[say=issix]"+getMoodMessage()+"[/say]")
|
||||
saynn("Is there anything you want to do with Master?")
|
||||
addButton("Sex", "Ask for sex with Master", "issixsexrequest")
|
||||
addButton("Walk", "Ask when he plans the next walk to the pasture", "issixwalkquestion")
|
||||
addButton("Tasks", "Ask for extra tasks", "issixtaskquestion")
|
||||
addButton("Options", "Ask your Master to change how he treats you", "issixoptions") # Pet etiquette, make player communicate via animalistic sounds, unlocks optional training
|
||||
addButton("Back", "Go back", "")
|
||||
|
||||
if state == "haremeat":
|
||||
saynn("You approach your bowl on the edge of your blanket, full of the gelatinous mass your Master fills it with and start munching its contents like a real pet would, without using tools or paws.")
|
||||
if GM.pc.getMaxStamina()*0.8 > GM.pc.getStamina():
|
||||
saynn("It doesn't make you feel very satiated but it's batter than nothing.")
|
||||
else:
|
||||
saynn("It makes you feel pretty full. That was good.")
|
||||
addButton("Back", "Go back", "")
|
||||
|
||||
if state == "azazelpetmenu":
|
||||
if GM.pc.getSkillLevel(Skill.SexSlave) < 15:
|
||||
addButton("Learn sex", "Learn about sexual slavery from Azazel", "azazellearnslavery")
|
||||
else:
|
||||
addDisabledButton("Learn", "You are already a master of Azazel's craft of sexual servitude")
|
||||
if GlobalRegistry.getCharacter("azazel").isPregnant() or GM.pc.isVisiblyPregnant():
|
||||
if GM.pc.getSkillLevel(Skill.Fertility) < 10:
|
||||
addButton("Learn fert.", "Learn about being harem's breeder", "azazellearnfertility")
|
||||
else:
|
||||
addDisabledButton("Learn", "You already know everything about bearing children")
|
||||
if GlobalRegistry.getCharacter("azazel").isHeavilyPregnant():
|
||||
addButton("Guess litter", "Ask Azazel about his pregnancy", "azazelguesslitter")
|
||||
addButton("Sex", "Ask for sex with Azazel", "azazelsexrequest")
|
||||
addButton("Back", "Go back", "")
|
||||
|
||||
if state == "hiisipetmenu":
|
||||
if GM.pc.getSkillLevel(Skill.Combat) < 16:
|
||||
addButton("Learn", "Learn something from Hiisi", "hiisilearncombat")
|
||||
else:
|
||||
addDisabledButton("Learn", "There isn't anything more you can learn from Hiisi about combat")
|
||||
|
||||
addButton("Sex", "Ask for sex with Hiisi", "hiisisexrequest")
|
||||
addButton("Back", "Go back", "")
|
||||
|
||||
if state == "lamiapetmenu":
|
||||
addButton("Placeholder", "Placeholder for activities", "")
|
||||
addButton("Pets", "Ask for pets", "lamiapetrequest")
|
||||
addButton("Back", "Go back", "")
|
||||
|
||||
if state == "issixwalkquestion":
|
||||
var last_walk = getModuleFlag("IssixModule", "Last_Walk", 0)
|
||||
if last_walk + 5 > GM.main.getDays():
|
||||
saynn("[say=issix]We've just been on a walk pretty recently, so you'll have to be a little bit more patient my pet.[/say]")
|
||||
else:
|
||||
saynn("[say=issix]Hmm, soonish, probably in around {0} days. Are you excited for the next walk?[/say]".format(IssixModule.getWalkDelay()-(GM.main.getDays()-last_walk)))
|
||||
addButton("Back", "Go back", "issixpetmenu")
|
||||
|
||||
|
||||
|
||||
func getTimeSpent():
|
||||
return Util.getTimeStringHumanReadable(getModuleFlag("IssixModule", "Pet_Time_Interaction_Today", 0)+(GM.main.getTime()-pet_time_start))
|
||||
return getModuleFlag("IssixModule", "Pet_Time_Interaction_Today", 0)+(GM.main.getTime()-pet_time_start)
|
||||
|
||||
func isTimeOkey():
|
||||
var forced = GM.main.getModuleFlag("IssixModule", "Is_Player_Forced_Today", 0)
|
||||
if forced > 0:
|
||||
if getTimeSpent() < forced:
|
||||
return false
|
||||
elif getTimeSpent() < 60*60:
|
||||
return false
|
||||
return true
|
||||
|
||||
func getTimeSpentReadable():
|
||||
if getTimeSpent() == 0:
|
||||
return "[color=red]0 minutes[/color]"
|
||||
return "[color="+("green" if isTimeOkey() else "red")+"]"+ Util.getTimeStringHumanReadable(getTimeSpent()) + "[/color]"
|
||||
|
||||
func getMoodMessage():
|
||||
var issix_mood = getModuleFlag("IssixModule", "Issix_Mood", 50)
|
||||
|
@ -72,7 +154,7 @@ func getMood():
|
|||
return "[color=green]excellent[/color]"
|
||||
|
||||
func getDays():
|
||||
var days_enslaved = getModuleFlag("IssixModule", "PC_Training_Level", {})["day_enslaved"]
|
||||
var days_enslaved = getModuleFlag("IssixModule", "Misc_Slavery_Info", {})["day_enslaved"]
|
||||
return GM.main.getDays() - days_enslaved
|
||||
|
||||
func trainingCheck():
|
||||
|
@ -89,6 +171,15 @@ func trainingCheck():
|
|||
return "very good"
|
||||
|
||||
func _react(_action: String, _args):
|
||||
if _action == "haremeat":
|
||||
processTime(10*60)
|
||||
GM.pc.addStamina(60)
|
||||
GM.pc.addPain(-10)
|
||||
setModuleFlag("IssixModule", "Eaten_Today", true)
|
||||
|
||||
if _action == "passtime":
|
||||
processTime(15*60)
|
||||
_action = ""
|
||||
|
||||
if(_action == "endthescene"):
|
||||
# increaseModuleFlag("IssixModule", "PC_Training_Level")
|
||||
|
|
|
@ -256,7 +256,11 @@ func _react(_action: String, _args):
|
|||
return
|
||||
itemRef.useInSex(GM.pc)
|
||||
|
||||
if _action == "normalroute3":
|
||||
GM.pc.addStamina(-40)
|
||||
|
||||
if _action == "normalroute4":
|
||||
GM.pc.addStamina(-40) # A little bit of difference in how it usually works in BDCC, Issix is a demon, he will get his fill in many ways, including life force vampirism during sex (kinda like incubus though he isn't one)
|
||||
if GM.pc.hasVagina():
|
||||
GM.pc.cummedInVaginaBy("issix", FluidSource.Penis, 1.1)
|
||||
var item = GlobalRegistry.createItem("vaginalplug")
|
||||
|
|
11
SpeechModifiers/LamiaMute.gd
Normal file
11
SpeechModifiers/LamiaMute.gd
Normal file
|
@ -0,0 +1,11 @@
|
|||
extends SpeechModifierBase
|
||||
|
||||
func _init(): # Assure that Lamia never is assigned any kind of dialogue by the game
|
||||
id = "LamiaMute"
|
||||
priority = 1001
|
||||
|
||||
func appliesTo(_speaker: BaseCharacter) -> bool:
|
||||
return _speaker.getID() == "lamia"
|
||||
|
||||
func modify(_text: String, _speaker: BaseCharacter) -> String:
|
||||
return "..."
|
|
@ -8,7 +8,7 @@ func initArgs(_args = []):
|
|||
if(_args.size() > 0):
|
||||
turns = _args[0]
|
||||
else:
|
||||
turns = 72*60*60
|
||||
turns = 48*60*60
|
||||
|
||||
func processBattleTurn():
|
||||
pass
|
||||
|
|
Loading…
Reference in a new issue