Updates before merge with master

This commit is contained in:
Frisk 2024-12-22 19:41:56 +01:00
parent f1b778df0a
commit 3dcddb08af
8 changed files with 86 additions and 11 deletions

3
.gitignore vendored Normal file
View file

@ -0,0 +1,3 @@
Notes.md
various cool shit that might be useful later.txt
medicaldialogue.txt

View file

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

View file

@ -43,6 +43,8 @@ func getFlags():
"Saw_Azazel_Naked": flag(FlagType.Bool),
"Lamia_Chosen_Drawing": flag(FlagType.Text),
"PC_Saw_Artwork_At_Lamias": flag(FlagType.Bool),
"Hiisi_Crossword_IDs_Used": flag(FlagType.Dict),
"Hiisi_Helped_Today": flag(FlagType.Bool),
# Slavery related
"PC_Enslavement_Role": flag(FlagType.Number),
@ -162,7 +164,7 @@ static func getPlayerRole():
return "pet" if GM.main.getModuleFlag("IssixModule", "PC_Enslavement_Role", 1) == 1 else "prostitute"
static func playerToFuck():
return not (int(GM.main.getDays()) % 2 != 0) and GM.main.getModuleFlag("IssixModule", "Todays_Bred_Slave", "") == "pc"
return (int(GM.main.getDays()) % 2 == 1) and GM.main.getModuleFlag("IssixModule", "Todays_Bred_Slave", "") == "pc" # every uneven day
static func getPlayerPetName():
if Species.Canine in GM.pc.getSpecies():
@ -176,7 +178,7 @@ static func getPlayerPetName():
func breedSlaveIfNpc():
## Function to process breeding by Master on randomly selected TODO maybe do that during the day as an event?
if not (int(GM.main.getDays()) % 2 != 0): # Breed only every second day?
if (int(GM.main.getDays()) % 2 == 0): # Breed only every second day?
GM.main.setModuleFlag("IssixModule", "Todays_Bred_Slave", "thischardoesntexist")
return
var available_slaves = ['azazel', 'pc', 'hiisi']
@ -201,7 +203,7 @@ func breedSlaveIfNpc():
func calculateDailyScore() -> int:
## For calculating player's daily activities at the end of the day
var score = 0
if playerToFuck():
if playerToFuck(): # TODO Need to check when this hook is run because likely wrong day
if GM.main.getModuleFlag("IssixModule", "Had_Sex_With_Issix", false) == false:
score -= 5
else:

View file

@ -343,8 +343,6 @@ func _run():
addButton("Leave", "Nod and leave embarassed", "endthescene")
if(state == "quest1turn"):
GM.main.setModuleFlag("IssixModule", "Quest_Status", 4)
GM.main.setModuleFlag("IssixModule", "Quest_Wait_Another_Day", true)
saynn("[say=pc]Is... This what you wanted?[/say]")
saynn("You said with uncertainty in your voice, presenting Issix with a packet of gumball.\nIssix looks at you elated, he claps his paws.")
saynn("[say=issix]Yes, YES. This is exactly what I needed, morsel.[/say]")
@ -372,6 +370,11 @@ func _react(_action: String, _args):
if _action in ["questresponseno", "questresponseyes"]:
GM.pc.getInventory().addItem(GlobalRegistry.createItem("IssixsMap"))
if _action == "quest1turn":
GM.main.setModuleFlag("IssixModule", "Quest_Status", 4)
GM.main.setModuleFlag("IssixModule", "Quest_Wait_Another_Day", true)
#GM.pc.getInventory().removeFirstOf("IssixsMap") - might be useful for later?
if(_action == "endthescene"):
endScene()
return

View file

@ -4,6 +4,7 @@ var artwork = null
var pc_pose = null
var arts_reviewed = 0
var arts_correct = 0
var hiisi_help_type = []
var pick_up_lamia_art = [
"You pick up another art from the stash",
@ -18,7 +19,9 @@ var humanoids_lamia_art = [
"a dragon person sitting inside the elevator, reading newspapers in her paws",
"portrait of a snake person with particularly long fangs sticking out from their maw",
"an anthro zebra dancing on a strip pole",
"multiple versions of legs belonging to a bovine anthro, likely drawn for practice"
"multiple versions of legs belonging to a bovine anthro, likely drawn for practice",
"anthropomorphic deer cuddling with a giant plush of a shark",
"three dark figures in black robes, with their faces hidden inside long hoods looming above a ritualistic slab made out of stone where an anthropomorphic feline lies unconscious"
]
var animal_flora_lamia_art = [
@ -73,6 +76,8 @@ var odd_lamia_art = [
"at first what seems like a tube of some sorts, though later you notice that this tube ends with a hole on one end, around the „hole” a bunch of yellowish protrusions extending from the fleshy tube"
]
var crossword_puzzles = [["Sex in 11 letters", "intercourse"], ["Subfamily of goats and sheep", "caprinae"], []]
func _init():
sceneID = "PetsTalkScene"
@ -141,8 +146,43 @@ func _run():
addDisabledButton("Name", "You already asked Hiisi about his name")
else:
addButton("Name", "Ask Hiisi about his name", "hiisiname")
if getModuleFlag("IssixModule", "Hiisi_Helped_Today", false) == false:
addButton("Help", "Ask if you can help the canine in something", "hiisihelp")
else:
addDisabledButton("Help", "You've helped Hiisi today already")
addButton("Back", "Do something else", "hiisimain")
if state == "hiisihelp":
saynn("[say=pc]Hey Hiisi, anything you'd like help with? I'd be happy to do something for you![/say]")
if hiisi_help_type == 1:
saynn("[say=hiisi]Actually, yeah, I'd have something for you, this little padlock recently got stuck and I've been trying to open it without much luck, perhaps you'd be able to do something about it?[/say]")
saynn("You look at the padlock, it connects two pieces of chain together, and even though its in unlocked position, the metal shackle is stuck inside the body. For a moment you try sheer brute force, though you imagine Hiisi already tried it considering his musculature. Your next strategy involves jigging the shackle in all direction, after a while the strategy proves successful and you manage to open the padlock.")
saynn("[say=pc]Here you go, needed some jiggling.[/say]")
saynn("[say=hiisi]Wow, I'm surprised you did it, I've been trying to open it for past hour and couldn't do it. Thanks {pc.name}![/say]")
addButton("Back", "You've helped the canine today, padlock open with two chains escaping their shackles", "hiisitalk")
elif hiisi_help_type == 2:
saynn("[say=hiisi]Oh, sorry, not today. I don't think I have anything for you to help me with.[/say]")
saynn("[say=pc]Oh, I see. In that case... Could I give you a hug?[/say]")
saynn("Hiisi gives you a reluctant nod with a little bit embarrassed face expression. You embrace Hiisi in a hug, his tail moves behind swiftly as you do.")
saynn("[say=hiisi]Thank you, that's very nice of you.[/say]")
addButton("Back", "You've helped the canine today, in one of many ways", "hiisitalk")
elif hiisi_help_type == 3:
saynn("[say=hiisi]Hmm. Actually, yeah, if you are willing to... I've been trying to solve a bunch of riddles lately and stumbled upon question that I'm not exactly sure how to answer, perhaps you could know. It reads as follows: "+ hiisi_help_type[1][0]+". Any idea what could it be?[/say]")
addButton(hiisi_help_type[1][1], "Answer this", "hiisihelpresponse")
elif hiisi_help_type == 4:
saynn("[say=hiisi]Yeah, I do need help with something. Give me a second...[/say]")
saynn("He fetches a plastic cylinder from the nearby bag along with a lid that has a small metallic looking pipe coming out of it.")
saynn("[say=hiisi]Can you please hold this one like that? It's difficult to pit it together without second person.[/say]")
saynn("He grabs the cylinder and shows you how to hold it before passing it onto you. You replicate how he held it as he grabs another few parts and starts putting them on.")
saynn("[say=pc]Hmm, couldn't you ask Azazel or Lamia about this?[/say]")
saynn("[say=hiisi]I could, but you came just in time so I figured you could be the one helping me today.[/say]")
saynn("Fe finishes and pulls the assembled thing from your paws.")
saynn("[say=pc]What is it anyways?[/say]")
saynn("[say=hiisi]Some kind of a dispenser, I don't know. found the parts somewhere, could be useful.[/say]")
saynn("He puts the assembled dispenser back into the bag and thanks you for your help.")
addButton("Back", "You've helped the canine today, by helping them assemble a dispenser of some sorts", "hiisitalk")
if state == "hiisiappearance":
saynn("You approach a kneeling Hiisi, in many ways his fur coloring reminds you of huskies but... Backwards? The black coloring visible on his face and bottom of his canine tail, the tail so bushy and monochromatic that it reminds you of a skunk. The inside of his ears dark gray as well, along with the tip, with the pleasant light gray outline.\nWholly brighter palette on the back and his legs.")
saynn("His hair, with exception of one blue colored stripe at the front is ginger, or some close color - a little bit simple, short maybe a bit messy.")
@ -654,6 +694,24 @@ func verify_response(response: int):
return response == 3
return response == 4
func saveData():
var data = .saveData()
data["artwork"] = artwork
data["arts_reviewed"] = arts_reviewed
data["arts_correct"] = arts_correct
data["hiisi_help_type"] = hiisi_help_type
return data
func loadData(data):
.loadData(data)
artwork = SAVE.loadVar(data, "artwork", null)
arts_reviewed = SAVE.loadVar(arts_reviewed, "arts_reviewed", null)
arts_correct = SAVE.loadVar(arts_correct, "arts_correct", null)
hiisi_help_type = SAVE.loadVar(hiisi_help_type, "hiisi_help_type", null)
func markHiisiRewardAsAquired():
var HiisiRPS = getModuleFlag("IssixModule", "Hissi_RPS_data", {})
HiisiRPS["reward_acquired"] = true
@ -683,6 +741,13 @@ func _react(_action: String, _args):
setModuleFlag("IssixModule", "Hiisi_Name_Helped", true)
processTime(5*60)
if _action == "hiisihelp":
increaseModuleFlag("IssixModule", "Hiisi_Affection", 1)
setModuleFlag("IssixModule", "Hiisi_Helped_Today", true)
hiisi_help_type = [RNG.randi_range(1,4)]
if hiisi_help_type[0] == 3:
hiisi_help_type.append()
if _action == "hiisisilence":
setModuleFlag("IssixModule", "Hiisi_Name_Helped", true)
processTime(8*60)
@ -731,7 +796,7 @@ func _react(_action: String, _args):
if _action == "artminigame":
# 1 - humanoids and items, 2 - feral animals and flora, 3 - backgrounds, 4 - others/electronic devices
var art_rand = RNG.pickWeighted([[1], [2], [3], [4], [1, 2], [1, 3], [2, 3], [1, 2, 3]], [15, 15, 15, 5, 15, 15, 5, 4])
var art_rand = RNG.pickWeighted([[1], [2], [3], [4], [1, 2], [1, 3], [2, 3], [1, 2, 3]], [15, 15, 15, 5, 10, 10, 5, 4])
artwork = [art_rand.duplicate(), generate_artwork_desc(art_rand), RNG.randi_range(1,151) == 50] # Here Frisk learned about how Godot variables lifespan ends with the end of _react leaving a very empty array after this function ends. Gave me quite a lot of confusion, but was fun to debug I suppose, Python would track the reference to a variable, Godot doesn't, sad.
if _action == "artminigameae": # Don't reroll new artwork

View file

@ -164,6 +164,8 @@ func _run():
if state == "afterbrandingwakeup":
aimCamera("hall_ne_corner")
clearCharacter()
addCharacter("issix")
saynn("Your eyes open, first thing that you feel is disorientation, you can see the blurry legs of red dragon in front of you, things slowly getting sharper, you are on your left side? You grumble moving your head a little to look around, you see your Master nearby who also starts looking at you seeing your woke up.")
saynn("[say=issix]Hello there, what a timing, how are you feeling?[/say]")
saynn("[say=pc]Ummm.. I don't know. Confused? Where are the others?[/say]")

View file

@ -12,7 +12,7 @@ func _run():
if (GM.pc.getStamina() / GM.pc.getMaxStamina()) < 0.8:
saynn("[say=issix]You do seem to be a little beaten up, that's great, because today I expect you to re-learn how you are supposed to eat.[/say]")
else:
saynn("[say=issix]Doesn't seem like you need much food, but no matter. Today I'll teach you how I expect you to eat from now on.[/say]")
saynn("[say=issix]Doesn't seem like you are hungry, but no matter. Today I'll teach you how I expect you to eat from now on.[/say]")
saynn("[say=issix]I'm sure you are used to eating food given to you on a plate. This is how anthros eat. But as you must have noticed - my pets don't eat like this. So from now on I'd want you to learn how to eat like a pet. From a bowl.[/say]")
saynn("He grabs a bowl. It looks like a very standard pet bowl, with the lowered ridge. On one side of it your name displayed. At the bottom of the empty bowl there is a pawprint symbol.")
saynn("[say=issix]Hope you like it. This one is yours.[/say]")

View file

@ -357,7 +357,7 @@ func getMood():
static func playerToFuck():
return not (int(GM.main.getDays()) % 2 != 0) and GM.main.getModuleFlag("IssixModule", "Todays_Bred_Slave", "") == "pc"
return (int(GM.main.getDays()) % 2 == 1) and GM.main.getModuleFlag("IssixModule", "Todays_Bred_Slave", "") == "pc"
func getDays():
var days_enslaved = getModuleFlag("IssixModule", "Misc_Slavery_Info", {})["day_enslaved"]