Fix the Dojo daily job deleting owner locks on release

Instead of just blanket-releasing the player, just remove the two
assets we've put on. Technically, the dialog should also restore the
player's initial appearance, since they also get CharacterNaked called
upon them, but that's more involved.
This commit is contained in:
Jean-Baptiste Emmanuel Zorg 2025-03-26 22:21:02 +01:00
parent 36d5bb532f
commit 5b10ed50e7
3 changed files with 22 additions and 7 deletions
BondageClub
Screens
MiniGame/DojoStruggle
Room/DailyJob
Scripts

View file

@ -39,7 +39,6 @@ function DojoStruggleRun() {
// The game ends after 71 seconds with a victory
if (MiniGameTimer >= 71000) {
CharacterRelease(Player);
MiniGameVictory = true;
MiniGameEnded = true;
} else {

View file

@ -201,10 +201,10 @@ function DailyJobPuppyPlayer() {
* @returns {void} - Nothing
*/
function DailyJobDojoRestrainPlayer() {
InventoryWear(Player, "HempRope", "ItemArms", "Default", 7);
if (InventoryGet(Player, "ItemTorso") == null) {
const item = InventoryWear(Player, "HempRopeHarness", "ItemTorso", "Default", 7);
TypedItemSetOptionByName(Player, item, "Harness");
InventoryWear(Player, "HempRope", "ItemArms", "Default", undefined, undefined, undefined, false);
if (!InventoryGet(Player, "ItemTorso")) {
const item = InventoryWear(Player, "HempRopeHarness", "ItemTorso", "Default", undefined, undefined, undefined, false);
TypedItemSetOptionByName(Player, item, "Harness", false);
}
CharacterRefresh(Player);
}
@ -223,9 +223,24 @@ function DailyJobDojoGameStart() {
*/
function DailyJobDojoGameEnd() {
CommonSetScreen("Room", "DailyJob");
DailyJobDojoTeacher.Stage = (MiniGameVictory) ? "100" : "200";
CharacterSetCurrent(DailyJobDojoTeacher);
if (MiniGameVictory) IntroductionJobDone();
if (MiniGameVictory) {
IntroductionJobDone();
let refresh = false;
if (InventoryGet(Player, "ItemArms")?.Asset.Name === "HempRope") {
InventoryRemove(Player, "ItemArms", false);
refresh = true;
}
if (InventoryGet(Player, "ItemTorso")?.Asset.Name === "HempRopeHarness") {
InventoryRemove(Player, "ItemTorso", false);
refresh = true;
}
if (refresh) {
CharacterRefresh(Player);
}
}
IntroductionMaid.Stage = "0";
DailyJobDojoTeacher.CurrentDialog = DialogFind(DailyJobDojoTeacher, (MiniGameVictory) ? "DojoStruggleVictory" : "DojoStruggleDefeat");
}

View file

@ -809,7 +809,8 @@ var InventoryWearCraft = /** @type {never} */(function() { return; });
function InventoryWear(C, AssetName, AssetGroup, ItemColor, Difficulty, MemberNumber, Craft, Refresh=true) {
const A = AssetGet(C.AssetFamily, AssetGroup, AssetName);
if (!A) return null;
const item = CharacterAppearanceSetItem(C, AssetGroup, A, (ItemColor == null || ItemColor == "Default") ? [...A.DefaultColor] : ItemColor, Difficulty, MemberNumber, false);
const color = (ItemColor == null || ItemColor == "Default") ? [...A.DefaultColor] : ItemColor;
const item = CharacterAppearanceSetItem(C, AssetGroup, A, color, Difficulty, MemberNumber, false);
/**
* TODO: grant tighter control over setting expressions.