diff --git a/IssixMod.json b/IssixMod.json index eb50d5b..08a2c04 100644 --- a/IssixMod.json +++ b/IssixMod.json @@ -1,8 +1,8 @@ { "name": "Issix Mod", - "description": "\nTags: M/player, M/M (implied), petplay, slavery, corruption (of PC, opt-in), 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.", + "description": "\nTags: M/player, M/M (implied), petplay, slavery, corruption (of PC, opt-in), 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\nWhile the repository is mainly hosted on https://git.frisk.space/Frisk/Issix-mod, everyone is welcome to contribute to the mod over on GitHub's mirror at https://github.com/Friskygote/Issix-mod, changes will be pulled to source repository.", "author": "Frisk", - "repository": "https://github.com/Friskygote/Issix-mod", - "modversion": "0.9.1", + "repository": "https://git.frisk.space/Frisk/Issix-mod", + "modversion": "0.9.5", "gameversion": "0.1.7" } diff --git a/Modules/IssixModule/Events/CornerPriorityEvent.gd b/Modules/IssixModule/Events/CornerPriorityEvent.gd index ebaf343..e7e59a2 100644 --- a/Modules/IssixModule/Events/CornerPriorityEvent.gd +++ b/Modules/IssixModule/Events/CornerPriorityEvent.gd @@ -4,7 +4,7 @@ func _init(): id = "IssixSpecialEvent" -var registered_special_scenes = [['IssixSlaveryIntroCont', 1, {}], ['IssixBringsComicbooks', 2, {"Comic_Books": 1}], ['IssixSlaveryBowlTraing', 2, {}], ['IssixSlaveryBranding', 3, {}]] +var registered_special_scenes = [['IssixSlaveryIntroCont', 0, {}], ['IssixSlaveryBranding', 0, {}], ['IssixBringsComicbooks', 1, {"Comic_Books": 1}], ['IssixSlaveryBowlTraing', 3, {}], ] class CustomSorter: static func sort_by_progressionpoints(a, b): @@ -29,13 +29,15 @@ func checkRequirements(requirements: Dictionary): func shouldBeShownForcedEvent(): var scenes_seen = getModuleFlag("IssixModule", "Misc_Slavery_Info", {"scenes_seen": []}) - var current_progression_points = GM.main.getModuleFlag("IssixModule", "Progression_Points", 0) + var current_progression_points = GM.pc.getSkillsHolder().getSkill("Pet").getLevel() if GM.main.getDays() >= GM.main.getModuleFlag("IssixModule", "Progression_Day_Next", 0) and GM.main.getModuleFlag("IssixModule", "Unwelcome_At_Corner", false) != true: registered_special_scenes.sort_custom(CustomSorter, "sort_by_progressionpoints") for scene in registered_special_scenes: if scene[1] > current_progression_points: return null if scenes_seen["scenes_seen"].find(scene[0]) == -1 and checkRequirements(scene[2]): + if scene[0] == "IssixSlaveryBranding" and GM.main.getDays() < scenes_seen["day_enslaved"]+9: # Special case for branding scene + continue return scene[0] return null diff --git a/Modules/IssixModule/Items/Icons/lucktoken.png b/Modules/IssixModule/Items/Icons/lucktoken.png new file mode 100644 index 0000000..22976cf Binary files /dev/null and b/Modules/IssixModule/Items/Icons/lucktoken.png differ diff --git a/Modules/IssixModule/Items/Icons/lucktoken.png.import b/Modules/IssixModule/Items/Icons/lucktoken.png.import new file mode 100644 index 0000000..efd2ef6 --- /dev/null +++ b/Modules/IssixModule/Items/Icons/lucktoken.png.import @@ -0,0 +1,35 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lucktoken.png-5516dfc21eaeb1814777ede82a76e887.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://Modules/IssixModule/Items/Icons/lucktoken.png" +dest_files=[ "res://.import/lucktoken.png-5516dfc21eaeb1814777ede82a76e887.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 diff --git a/Modules/IssixModule/Scenes/Overwrites/BullyGangScene.gd b/Modules/IssixModule/Scenes/Overwrites/BullyGangScene.gd index 37c9e76..4a6a137 100644 --- a/Modules/IssixModule/Scenes/Overwrites/BullyGangScene.gd +++ b/Modules/IssixModule/Scenes/Overwrites/BullyGangScene.gd @@ -60,7 +60,7 @@ func _run(): else: addDisabledButton("Pay", "Not enough credits") addButton("Intimidate", "Tell them you won’t leave or pay", "intimidate") - if getModuleFlag("IssixModule", "PC_Training_Level", 0) > 0 and getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) == 1: + if getModuleFlag("IssixModule", "PC_Enslavement_Role", 0) == 1 and (GM.pc.getSkillsHolder().getSkill("Pet").getLevel() > 1 or GM.pc.getSkillsHolder().getSkill("Pet").getExperience() > 100): if (GM.pc.getPersonality().getStat(PersonalityStat.Coward) > 0.3): addDisabledButton("Issix", "You are too cowardly to bring up your Master") else: @@ -178,3 +178,6 @@ func getDevCommentary(): func hasDevCommentary(): return true + +func getSceneCreator(): + return "Rahi, Frisk" diff --git a/Modules/IssixModule/Scenes/Overwrites/EatInCanteenScene.gd b/Modules/IssixModule/Scenes/Overwrites/EatInCanteenScene.gd index f3f0e1d..ecacaca 100644 --- a/Modules/IssixModule/Scenes/Overwrites/EatInCanteenScene.gd +++ b/Modules/IssixModule/Scenes/Overwrites/EatInCanteenScene.gd @@ -62,3 +62,6 @@ func _react(_action: String, _args): return setState(_action) + +func getSceneCreator(): + return "Rahi, Frisk" diff --git a/Modules/IssixModule/Scenes/SlaveryFirst/GenericTrainSessionScene.gd b/Modules/IssixModule/Scenes/SlaveryFirst/GenericTrainSessionScene.gd index ed5f1e2..c1c60b7 100644 --- a/Modules/IssixModule/Scenes/SlaveryFirst/GenericTrainSessionScene.gd +++ b/Modules/IssixModule/Scenes/SlaveryFirst/GenericTrainSessionScene.gd @@ -85,8 +85,8 @@ func _run(): addButton("Back", "End today's training session", "endthescene") -func shouldBeInHeavyBondage(): # TODO Skill rebalance - return GM.pc.getSkillsHolder().getSkill("Pet").getLevel() > 2 or GM.pc.getSkillsHolder().getSkill("Pet").getExperience() > 80 +func shouldBeInHeavyBondage(): + return GM.pc.getSkillsHolder().getSkill("Pet").getLevel() > 3 func createButtons(): var trainingLevel = int(getModuleFlag("IssixModule", "PC_Training_Level", 0)) @@ -160,6 +160,7 @@ func _react(_action: String, _args): func _react_scene_end(_tag, _result): if(_tag == "walkies_end"): + goodPoints += 5 if shouldBeInHeavyBondage() else 0 goodPoints += 2 if GM.pc.isMuzzled() else 0 goodPoints += 2 if GM.pc.hasBlockedHands() else 0 destroyBorrowedEquipment() diff --git a/Modules/IssixModule/Scenes/SlaveryFirst/IssixBringsComicbooks.gd b/Modules/IssixModule/Scenes/SlaveryFirst/IssixBringsComicbooks.gd index a3e487f..7c14a45 100644 --- a/Modules/IssixModule/Scenes/SlaveryFirst/IssixBringsComicbooks.gd +++ b/Modules/IssixModule/Scenes/SlaveryFirst/IssixBringsComicbooks.gd @@ -73,7 +73,7 @@ func _react(_action: String, _args): scenes["scenes_seen"].append(sceneID) GM.main.setModuleFlag("IssixModule", "Misc_Slavery_Info", scenes.duplicate(true)) setModuleFlag("IssixModule", "Progression_Day_Next", GM.main.getDays()+3) - increaseModuleFlag("IssixModule", "Progression_Points", 1) + GM.pc.addSkillExperience("Pet", 60) endScene() return diff --git a/Modules/IssixModule/Scenes/SlaveryFirst/PunRew/IssixOralScene.gd b/Modules/IssixModule/Scenes/SlaveryFirst/PunRew/IssixOralScene.gd index f4a6d50..3e6b221 100644 --- a/Modules/IssixModule/Scenes/SlaveryFirst/PunRew/IssixOralScene.gd +++ b/Modules/IssixModule/Scenes/SlaveryFirst/PunRew/IssixOralScene.gd @@ -50,6 +50,9 @@ func _react(_action: String, _args): if _action == "normal2": GM.pc.addLust(20) + if _action == "normal3": + GM.pc.addStamina(-40) + if(_action == "endthescene"): endScene() return diff --git a/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryBrandingScene.gd b/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryBrandingScene.gd index d9a63af..456425a 100644 --- a/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryBrandingScene.gd +++ b/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryBrandingScene.gd @@ -212,7 +212,7 @@ func _react(_action: String, _args): GM.pc.setLocation("hall_ne_corner") timedifference = GM.main.getTimeCap() - GM.main.timeOfDay processTime(timedifference) - increaseModuleFlag("IssixModule", "Progression_Points") + GM.pc.addSkillExperience("Pet", 200) if _action == "brandtalk": attitude = _args[0] diff --git a/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryIntroContScene.gd b/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryIntroContScene.gd index b2dc3c8..973fad7 100644 --- a/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryIntroContScene.gd +++ b/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryIntroContScene.gd @@ -87,8 +87,7 @@ func _react(_action: String, _args): ], "gym_entrance", "crawl"]) if(_action == "endthescene"): - GM.pc.addSkillExperience("Pet", 300) - increaseModuleFlag("IssixModule", "Progression_Points") + GM.pc.addSkillExperience("Pet", 100) increaseModuleFlag("IssixModule", "PC_Training_Level") setModuleFlag("IssixModule", "Hiisi_Protects_PC", true) endScene() diff --git a/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryTrainingBowlScene.gd b/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryTrainingBowlScene.gd index 7a636d2..9fc50c1 100644 --- a/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryTrainingBowlScene.gd +++ b/Modules/IssixModule/Scenes/SlaveryFirst/SlaveryTrainingBowlScene.gd @@ -73,8 +73,7 @@ func _react(_action: String, _args): if(_action == "endthescene"): increaseModuleFlag("IssixModule", "PC_Training_Level") - increaseModuleFlag("IssixModule", "Progression_Points") - GM.pc.addSkillExperience("Pet", 300) + GM.pc.addSkillExperience("Pet", 140) GM.pc.getSkillsHolder().addPerk("BowlTraining") var scenes = GM.main.getModuleFlag("IssixModule", "Misc_Slavery_Info", {"scenes_seen": []}) scenes["scenes_seen"].append(sceneID) diff --git a/Modules/IssixModule/Scenes/SlaveryFirst/WalkiesTrainingScene.gd b/Modules/IssixModule/Scenes/SlaveryFirst/WalkiesTrainingScene.gd index 1c09af6..514cf99 100644 --- a/Modules/IssixModule/Scenes/SlaveryFirst/WalkiesTrainingScene.gd +++ b/Modules/IssixModule/Scenes/SlaveryFirst/WalkiesTrainingScene.gd @@ -293,8 +293,8 @@ func _react(_action: String, _args): -func shouldBeInHeavyBondage(): # TODO Skill rebalance - return GM.pc.getSkillsHolder().getSkill("Pet").getLevel() > 2 or GM.pc.getSkillsHolder().getSkill("Pet").getExperience() > 80 +func shouldBeInHeavyBondage(): + return GM.pc.getSkillsHolder().getSkill("Pet").getLevel() > 3 func rollDestination(): destination = RNG.pick(destinations.keys()) diff --git a/Modules/IssixModule/Scenes/SlaveryInfoScreenScene.gd b/Modules/IssixModule/Scenes/SlaveryInfoScreenScene.gd index 4071bbe..1042f88 100644 --- a/Modules/IssixModule/Scenes/SlaveryInfoScreenScene.gd +++ b/Modules/IssixModule/Scenes/SlaveryInfoScreenScene.gd @@ -103,7 +103,7 @@ func _run(): addDisabledButton("Drone", "Drone is currently unavailable, talk with Master Issix") elif getModuleFlag("IssixModule", "Drone_Task_Timeout", 0) > 0: addDisabledButton("Drone", "New drone has been ordered, however it will take a while before it gets to the prison") - elif getModuleFlag("IssixModule", "Progression_Points", 0) > 5: + elif GM.pc.getSkillsHolder().getSkill("Pet").getLevel() > 5: addButtonWithChecks("Drone", "Help with finding items", "start_drone_task", [], [ButtonChecks.NotBlindfolded, ButtonChecks.NotHandsBlocked]) else: addDisabledButton("????", "You haven't unlocked this yet") diff --git a/Modules/IssixModule/Scenes/SlaveryIntroScene.gd b/Modules/IssixModule/Scenes/SlaveryIntroScene.gd index 48b5018..0a1889c 100644 --- a/Modules/IssixModule/Scenes/SlaveryIntroScene.gd +++ b/Modules/IssixModule/Scenes/SlaveryIntroScene.gd @@ -252,7 +252,6 @@ func _react(_action: String, _args): if _action == "acceptslavery": 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) setModuleFlag("IssixModule", "Issix_Mood", 50) setModuleFlag("IssixModule", "Last_Walk", GM.main.getDays()) diff --git a/Modules/IssixModule/Scenes/Tasks/DroneFinder.gd b/Modules/IssixModule/Scenes/Tasks/DroneFinder.gd index fb4d7e9..cb7dd77 100644 --- a/Modules/IssixModule/Scenes/Tasks/DroneFinder.gd +++ b/Modules/IssixModule/Scenes/Tasks/DroneFinder.gd @@ -21,8 +21,6 @@ func _initScene(_args = []): item_target = RNG.pick(["main_dressing2", "main_green_corridor10", "main_green_secret", "main_dressing1", "main_hallroom5", "med_mental_entrance", "medical_hospitalwards", "medical_storage", "med_corridor_split2", "med_nearshower", "med_researchlab", "med_milkingroom", "eng_corridor_blue3", "eng_airventskip", "eng_robotics", "eng_storage", "eng_corridor6", "eng_corridor3", "eng_assemblylab", "mining_shafts_entering", "eng_bay_nearbreakroom", "cellblock_red_playercell", "cellblock_lilac_nearcell", "cellblock_orange_playercell", "cellblock_corridor_nearstairs"]) strike = 0 flying_back = false - # DEBUG - item_target = "eng_assemblylab" func _run(): if(state == ""): @@ -149,6 +147,10 @@ func _run(): saynn("[say=issix]Here you go[/say]") addButton("Finish", "End the task", "endthescene") + if state == "wrong_location_search": + saynn("You decide to dive lower with the drone to search for "+item+" however you find nothing. You do however get a few creatures trying to catch the drone. This unneeded attention significantly increases the risk of the mission. You refocus, maybe the the vibrations from the controller aren't at their max, and the item is somewhere else?") + addButton("Continue", "Continue the search", "search") + if state == "guard_catch": aimCameraAndSetLocName(location) saynn("As you continue flying out of the sudden a large object appears in your eyes scaring you. The visor flashes in colors before becoming completely dark.") @@ -243,6 +245,28 @@ func _react(_action: String, _args): else: _action = "retrival_failure" + if _action == "search_retrieve": + var endLocation = null + if item_target_type == 1: + endLocation = item_target + else: + endLocation = GM.main.IS.getPawn(item_target).getLocation() + if location != endLocation: + var pawsAtNewLoc = GM.main.IS.getPawnsAt(location) + var is_caught = false + for pawn in pawsAtNewLoc: + if pawn.isGuard(): + if RNG.chance(80): + is_caught = true + if is_caught: + _action = "guard_catch" + elif strike == 2: + _action = "retrival_failure" + else: + strike += 1 + _action = "wrong_location_search" + processTime(60) + if _action == "retrival_failure": strike += 1 if strike > 2: diff --git a/Modules/IssixModule/Skills/Perks/PetSpeech.gd b/Modules/IssixModule/Skills/Perks/PetSpeech.gd index da23684..fc52024 100644 --- a/Modules/IssixModule/Skills/Perks/PetSpeech.gd +++ b/Modules/IssixModule/Skills/Perks/PetSpeech.gd @@ -17,8 +17,7 @@ func getPicture(): return "res://Modules/IssixModule/Skills/Images/petspeech.png" func toggleable(): - var ch = npc if npc != null else GM.pc - return !(ch.getSkillsHolder().hasPerk(self.id)) + return true func unlockable(): return false