23.12 additional update - adding more computer stuff as well as milking

This commit is contained in:
Frisk 2024-12-24 01:52:08 +01:00
parent 5538dc1b19
commit 9259860487
6 changed files with 50 additions and 23 deletions

View file

@ -150,6 +150,7 @@ func _init():
GlobalRegistry.registerAttackFolder("res://Modules/IssixModule/Attacks/", true)
func postInit():
# Overwrite scenes for dealing with bullies, they need to be initiated in here due to module initialization order overwriting our modules
GlobalRegistry.registerScene("res://Modules/IssixModule/Scenes/Overwrites/BullyGangScene.gd", "Rahi") # Still consider it mostly Rahi's creation'
GlobalRegistry.registerEvent("res://Modules/IssixModule/Events/Overwrites/BullyGangEvent.gd")

View file

@ -2,13 +2,30 @@ extends ComputerBase
var connectedTo = ""
var loggedAsAdmin = false
var records = {"533": "ID: 533\nfirstname: Issix\nlastname: [corrupt]Solomon[/corrupt]\n\nnotes: Issix, or rather [b]Gaap[/b] as his real real name goes, is a special case in BDCC, staff is NOT to take any punitive action in regards to this individual without first consulting with the director. He has not been convicted of any illegal activities, but rather has been introduced to prison based on order o[corrupt]f general Sonno[/corrupt]fer. \nOfficially - he is an inmate, unofficially he is is untouchable. Let him do whatever the fuck he wants, unless you don't value your own life. Incarcerated in [corrupt]4292 32 11[/corrupt].",\
"655": "ID: 655\nfirstname: Azazel\nlastname: Dreemurr\nPast inhabitant of planet [b]Pueri Meritorii[/b], sentenced for sex work with untreated STD. Original sentence was 10 years, it has been extended to indefinite due to circumstances in the prison.\nNOTE: THIS INMATE IS OWNED BY INMATE 533, PLEASE REFER TO MENTIONED INMATE ABOUT ALL MATTERS PERTAINING TO THIS INMATE",\
""}
func _init():
id = "ClosetComputer"
func reactToCommand(_command:String, _args:Array, _commandStringRaw:String):
if (connectedTo == "inmates.db"):
pass
if _command == "help":
if _args.size() == 3:
if _args[0].to_upper() == "SELECT":
if _args[1].to_lower() == "inmates":
var record = records.get(_args[2])
if record == null:
return "No record with primary key of `"+_args[1]+"` has been found!"
return printRecord(record)
else:
return "Table `"+_args[1]+"` couldn't be found!"
else:
return "`sqleasy` supports only read operations using SELECT."
else:
return "sqleasy makes SQL easy for you! Instead of knowing all this useless syntax, you only need to know the table name, ID from the primary key and SELECT!\n\nSyntax: SELECT <table name> <ID>\n\nIt will show you all columns corresponding to a record with given ID!\n©Lain (YOU ARE USING UNLICENSED COPY, PLEASE ACTIVATE YOUR VERSION WITH LICENSE!)"
if(connectedTo == "127.0.223"): # TODO Finish computer UwU
if(_command == "help"):
@ -23,15 +40,15 @@ func reactToCommand(_command:String, _args:Array, _commandStringRaw:String):
return "This command outputs the contents of your harddrive"
elif(tolearn == "cat"):
return "This command outputs file's contents into the console.\nSyntax 'cat <FILE INDEX>' where file index is a [b]number[/b] that can be obtained by using the ls command"
elif(tolearn == "sqlopen"):
return "This command opens a database file for simple operations\nSyntax 'sqlopen <FILE INDEX>' where file index is a [b]number[/b] that can be obtained by using the ls command"
elif(tolearn == "sqleasy"):
return "This command opens a database file for simple operations\nSyntax 'sqleasy <FILE INDEX>' where file index is a [b]number[/b] that can be obtained by using the ls command"
return "No help found for that command"
learnCommand("disconnect")
learnCommand("login")
learnCommand("ls")
learnCommand("cat")
learnCommand("sqlopen")
return "Available commands:\ndisconnect\nlogin\nls\ncat\nsqlopen"
learnCommand("sqleasy")
return "Available commands:\ndisconnect\nlogin\nls\ncat\nsqleasy"
if(_command == "disconnect"):
if(_args.size() == 0):
@ -41,16 +58,19 @@ func reactToCommand(_command:String, _args:Array, _commandStringRaw:String):
else:
return "'disconnect' command expects 0 arguments"
if(_command == "sqlopen"):
if(_command == "sqleasy"):
if(_args.size() == 1):
var fileIndex = _args[0]
if(fileIndex in ["1", "inmates.db"]):
connectedTo = "inmates.db"
return "Opening inmates.db... Opened successfully."
if loggedAsAdmin:
connectedTo = "inmates.db"
return "Opening inmates.db... Opened successfully."
else:
return "sqleasy: inmates.db: Permission denied"
else:
return "Error. File with such index wasn't found"
else:
return "'sqlopen' command expects 1 argument"
return "'sqleasy' command expects 1 argument"
if(_command == "login"):
if(loggedAsAdmin):
@ -74,7 +94,7 @@ func reactToCommand(_command:String, _args:Array, _commandStringRaw:String):
var fileIndex = _args[0]
if(fileIndex in ["1", "inmates.db"]):
if loggedAsAdmin:
return "<EFBFBD>v<EFBFBD>KtablefilesfilesCREATE TABLE inmates (\nid INTEGER NOT NULL, \nfirst_name TEXT, \nlast_name TEXT, \ndescription TEXT, \nPRIMARY KEY (id)\n#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{uoic]WQKE?93-'! smga[UOIC=71+% [corrupt]garbaaaageeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee[/corrupt]\n"
return "<EFBFBD>v<EFBFBD>KtablefilesfilesCREATE TABLE inmates (\nid INTEGER NOT NULL, \nfirst_name TEXT, \nlast_name TEXT, \nnotes TEXT, \nPRIMARY KEY (id)\n#<23><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>{uoic]WQKE?93-'! smga[UOIC=71+% [corrupt]garbaaaageeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee[/corrupt]\n"
else:
return "cat: inmates.db: Permission denied"
else:
@ -154,6 +174,10 @@ func reactToCommand(_command:String, _args:Array, _commandStringRaw:String):
learnCommand("help")
return "Error, unknown command. Use 'help' to list all available commands"
def printRecord(record:String) -> String:
return ""
func saveData():
var data = .saveData()

View file

@ -78,6 +78,7 @@ var odd_lamia_art = [
var crossword_puzzles = [["Sex in 11 letters", "Intercourse"], ["Subfamily of goats and sheep", "Caprinae"], ["Lacking the authority or capacity to act", "Powerless"], ["Male heir to the throne", "Prince"], ["Fantasy art of bringing creatures from death to living", "Necromancy"]]
# OWNERSHIP
func _init():
sceneID = "PetsTalkScene"

View file

@ -62,7 +62,7 @@ func _run():
addDisabledButton("Walk", "Too late for a walk")
addButton("Pass", "Pass the time (placeholder button for now, supposed to be actions with pets/master later)", "passtime")
if getModuleFlag("IssixModule", "Comic_Book_Unlocked", false) == true and getModuleFlag("IssixModule", "Comic_Books", 0) > 0:
addButton("Comic", "Read one of "+ str(getModuleFlag("IssixModule", "Comic_Books", 0)) +" comic books", "readabook")
addButtonWithChecks("Comic", "Read one of "+ str(getModuleFlag("IssixModule", "Comic_Books", 0)) +" comic books", "readabook", [], [ButtonChecks.NotBlindfolded])
if not (GM.main.getModuleFlag("IssixModule", "Is_Player_Forced_Today", 0) > (getTimeSpent())) or GM.main.isVeryLate():
addButton("Leave", "Leave", "endthescene")
@ -503,11 +503,6 @@ func _react(_action: String, _args):
GM.pc.addLust(100)
azazel_teased_motherhood = true
if _action == "after_sex_issix":
setModuleFlag("IssixModule", "Had_Sex_With_Issix", true)
processTime(20*60)
addIssixMood(5)
if _action == "readabook":
processTime(20*60)
increaseModuleFlag("IssixModule", "Comic_Books", -1)
@ -547,9 +542,11 @@ func onTextBoxEnterPressed(_new_text:String):
GM.main.pickOption("littercountresult", [])
func _react_scene_end(_tag, _result):
if _tag == "subbysexissix":
setModuleFlag("IssixModule", "Had_Sex_With_Issix", true)
processTime(20*60)
addIssixMood(5)
setState("after_sex_issix")
@ -566,7 +563,7 @@ func saveData():
func loadData(data):
.loadData(data)
milk_result = SAVE.loadVar(data, "milk_result", [])
pet_time_start = SAVE.loadVar(data, "petTimeStart", null)
azazel_teased_motherhood = SAVE.loadVar(data, "azazelTease", false)
reply_litter = SAVE.loadVar(data, "reply_litter", 0)
milk_result = SAVE.loadVar(data, "milk_result", [])

View file

@ -30,7 +30,7 @@ func _run():
saynn("[say=issix]That's most wonderful to hear. You've had multiple opportunities to reject becoming my pet and yet you persisted. Good.[/say]")
saynn("[say=issix]From this time onward, you'll always refer to me as Master or Master Issix. As my pet, I consider your body belongs to me now.[/say]")
saynn("[say=issix]Tell me now, what role would you like to accept as defacto my slave? A pet or a prostitute?[/say]")
addMessage("You gained 100 experience for completing „Becoming something lesser” quest")
addMessage("You gained 500 experience for completing „Becoming something lesser” quest")
addButton("Pet", "Tell Issix you'd rather become his pet, just like his other 3 pets", "petrole")
addDisabledButton("Prostitute", "This option is not yet available in the mod, it is planned in the future however") # TODO 1.1
@ -260,7 +260,7 @@ func _react(_action: String, _args):
# GM.pc.getInventory().forceEquipStoreOther(cuff)
if _action == "acceptslavery":
GM.pc.addExperience(100)
GM.pc.addExperience(500)
setModuleFlag("IssixModule", "Misc_Slavery_Info", {"day_enslaved": GM.main.getDays(), "scenes_seen": []})
setModuleFlag("IssixModule", "Progression_Points", 1)
setModuleFlag("IssixModule", "Progression_Day_Next", GM.main.getDays()+1)

View file

@ -6,24 +6,26 @@ A mod for Broken Dreams Correctional Center. Introduces Issix and his harem of s
## Disclaimer
The mod and contents in it is - surprise surprise - a work of fiction. Author does not support, condone, advocate for, endorse, stand up for non-consensual activities, relationships or violence.
# Existing content (assuming I don't get lazy before 1.0)
# Existing content
- 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 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 an overall rather "nice" type of enslavement), there are a bunch of fun elements in it, like figuring out an ASCII map or filling a questionnaire
- Each (ok, only Azazel and Lamia) pet has their own mechanic that increases their trust/affection towards the player
- 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
- Some branches of choices and situations.
- Hopefully at least around an hour of additional gameplay? Haven't tested yet
What isn't there is basically a lot of post-enslavement content. This is major focus of current work on the mod for it to grow to 1.0 release.
In tags: M/player, M/M (implied), petplay, slave, watersports, parasite
# 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. In addition - worth noting that the entire harem of pets is male.
What you **shouldn't expect** from the mod at the moment is for it to be heavy on non-con or roughness. While the "non-con" is one of the ideas I have, it is planned to be implemented at later time if I have enough motivation.
What you **shouldn't expect** from the mod at the moment is for it to be heavy on non-con or roughness. While the "non-con non-con" (instead of current voluntary non-con) is one of the ideas I have, it is planned to be implemented at later time if I have enough motivation. It should feature both a way to get enslaved by Issix forcefully as well as be an option when advancing slavery in Issix's harem so anyone can get some non-con action. In fact, current content for many could even be seen as not slavery related enough with it being so easy on player, I'm open to feedback.
## 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.
@ -40,6 +42,8 @@ Here is a list of planned content:
- Making use of existing system to improve affection with pets
- Including ability to make love with Hiisi and Azazel
I'm currently undecided whether to prioritize alternative route of enslavement/improvement of existing content/prostitute role or non-con role. If you have good arguments for any, feel free to let me know!
## Technical stuff
The goal is to create a mod with as little of overwriting the core modules to preserve compatibility and not have a dance every time base game gets an update. This means that we'll try to use as many of mechanics that already exist in the game as possible. Granted, while I'm a coder, I'm unsure I can properly implement complex system in Godot, so I might need some help with that.