From b5cb416f73499be099c306c363e913dec542f259 Mon Sep 17 00:00:00 2001 From: Edison Date: Wed, 24 May 2023 22:56:05 -0700 Subject: [PATCH] Add some basic logging for escape chance --- Game/KinkyDungeonRestraints.js | 107 +++++++++++++++++++-------------- 1 file changed, 62 insertions(+), 45 deletions(-) diff --git a/Game/KinkyDungeonRestraints.js b/Game/KinkyDungeonRestraints.js index 5023c73c4..9f03e428c 100644 --- a/Game/KinkyDungeonRestraints.js +++ b/Game/KinkyDungeonRestraints.js @@ -1386,30 +1386,51 @@ function KDGetRestraintAffinity(item, data) { * */ function KDGetEscapeChance(restraint, StruggleType, escapeChancePre, limitChancePre, ApplyGhost, ApplyPlayerBonus, Msg) { - let escapeChance = escapeChancePre != undefined ? escapeChancePre : KDRestraint(restraint).escapeChance[StruggleType] != undefined ? KDRestraint(restraint).escapeChance[StruggleType] : 1.0; - let limitChance = limitChancePre != undefined ? limitChancePre : (KDRestraint(restraint).limitChance != undefined && KDRestraint(restraint).limitChance[StruggleType] != undefined) ? KDRestraint(restraint).limitChance[StruggleType] : + let data = { + restraint: restraint, + get escapeChance() { + return this._escapeChance + }, + set escapeChance(chance) { + const callerInfo = Error().stack.split("\n")[2] + console.log(`KDGetEscapeChance Update escape chance: ${this._escapeChance} > ${chance} at ${callerInfo}`) + this._escapeChance = chance + }, + _escapeChance: escapeChancePre, + limitChance: limitChancePre, + struggleType: StruggleType, + escapeChancePre: escapeChancePre, + limitChancePre: limitChancePre, + ApplyGhost: ApplyGhost, + ApplyPlayerBonus: ApplyPlayerBonus, + GoddessBonus: 0, + Msg: Msg, + + }; + data.escapeChance = escapeChancePre != undefined ? escapeChancePre : KDRestraint(restraint).escapeChance[StruggleType] != undefined ? KDRestraint(restraint).escapeChance[StruggleType] : 1.0; + data.limitChance = limitChancePre != undefined ? limitChancePre : (KDRestraint(restraint).limitChance != undefined && KDRestraint(restraint).limitChance[StruggleType] != undefined) ? KDRestraint(restraint).limitChance[StruggleType] : ((StruggleType == "Unlock" || StruggleType == "Pick") ? 0 : 0.05); if ((!ApplyGhost || !(KinkyDungeonHasGhostHelp() || KinkyDungeonHasAllyHelp())) && !ApplyPlayerBonus) { if (StruggleType == "Pick") { - if (KinkyDungeonStatsChoice.get("Locksmith")) escapeChance += KDLocksmithBonus; - if (KinkyDungeonStatsChoice.get("Clueless")) escapeChance += KDCluelessBonus; + if (KinkyDungeonStatsChoice.get("Locksmith")) data.escapeChance += KDLocksmithBonus; + if (KinkyDungeonStatsChoice.get("Clueless")) data.escapeChance += KDCluelessBonus; } else if (StruggleType == "Remove" || StruggleType == "Unlock") { - if (KinkyDungeonStatsChoice.get("Flexible")) escapeChance += KDFlexibleBonus; - if (KinkyDungeonStatsChoice.get("Inflexible")) escapeChance *= KDInflexibleMult; + if (KinkyDungeonStatsChoice.get("Flexible")) data.escapeChance += KDFlexibleBonus; + if (KinkyDungeonStatsChoice.get("Inflexible")) data.escapeChance *= KDInflexibleMult; } else if (StruggleType == "Struggle") { - if (KinkyDungeonStatsChoice.get("Strong")) escapeChance += KDStrongBonus; - if (KinkyDungeonStatsChoice.get("Weak")) escapeChance += KDWeakBonus; + if (KinkyDungeonStatsChoice.get("Strong")) data.escapeChance += KDStrongBonus; + if (KinkyDungeonStatsChoice.get("Weak")) data.escapeChance += KDWeakBonus; } } if (KinkyDungeonStatsChoice.get("Unchained") && KDRestraint(restraint).shrine && KDRestraint(restraint).shrine.includes("Metal")) - escapeChance += KDUnchainedBonus; + data.escapeChance += KDUnchainedBonus; if (KinkyDungeonStatsChoice.get("Damsel") && KDRestraint(restraint).shrine && KDRestraint(restraint).shrine.includes("Metal")) { - if (escapeChance > 0) - escapeChance /= 1.5; - if (StruggleType != "Pick" && StruggleType != "Unlock" && limitChance > 0 && limitChance < KDDamselBonus) - limitChance = KDDamselBonus; + if (data.escapeChance > 0) + data.escapeChance /= 1.5; + if (StruggleType != "Pick" && StruggleType != "Unlock" && data.limitChance > 0 && data.limitChance < KDDamselBonus) + data.limitChance = KDDamselBonus; } if (KinkyDungeonStatsChoice.get("HighSecurity")) { KinkyDungeonKeyPickBreakAmount = KDDamselPickAmount; @@ -1417,14 +1438,14 @@ function KDGetEscapeChance(restraint, StruggleType, escapeChancePre, limitChance KinkyDungeonKeyPickBreakAmount = KinkyDungeonKeyPickBreakAmountBase; } - if (KinkyDungeonStatsChoice.get("FreeSpirit") && (KDRestraint(restraint).chastity || KDRestraint(restraint).chastitybra)) escapeChance += 0.5; + if (KinkyDungeonStatsChoice.get("FreeSpirit") && (KDRestraint(restraint).chastity || KDRestraint(restraint).chastitybra)) data.escapeChance += 0.5; if (KinkyDungeonStatsChoice.get("Artist") && KDRestraint(restraint).shrine && KDRestraint(restraint).shrine.includes("Rope")) - escapeChance += KDArtistBonus; + data.escapeChance += KDArtistBonus; if (KinkyDungeonStatsChoice.get("Bunny") && KDRestraint(restraint).shrine && KDRestraint(restraint).shrine.includes("Rope")) { - if (escapeChance > 0) - escapeChance /= 1.5; - if (StruggleType != "Pick" && StruggleType != "Unlock" && limitChance > 0 && limitChance < KDBunnyBonus) - limitChance = KDBunnyBonus; + if (data.escapeChance > 0) + data.escapeChance /= 1.5; + if (StruggleType != "Pick" && StruggleType != "Unlock" && data.limitChance > 0 && data.limitChance < KDBunnyBonus) + data.limitChance = KDBunnyBonus; } if (KinkyDungeonStatsChoice.get("ShoddyKnives")) { KinkyDungeonKnifeBreakAmount = KDBunnyKnifeAmount; @@ -1435,37 +1456,23 @@ function KDGetEscapeChance(restraint, StruggleType, escapeChancePre, limitChance } if (KinkyDungeonStatsChoice.get("Slippery") && KDRestraint(restraint).shrine && KDRestraint(restraint).shrine.includes("Latex")) - escapeChance += KDSlipperyBonus; + data.escapeChance += KDSlipperyBonus; else if (KinkyDungeonStatsChoice.get("Doll") && KDRestraint(restraint).shrine && KDRestraint(restraint).shrine.includes("Latex")) { - if (escapeChance > 0) - escapeChance /= 1.5; - if (StruggleType != "Pick" && StruggleType != "Unlock" && limitChance > 0 && limitChance < KDDollBonus) - limitChance = KDDollBonus; + if (data.escapeChance > 0) + data.escapeChance /= 1.5; + if (StruggleType != "Pick" && StruggleType != "Unlock" && data.limitChance > 0 && data.limitChance < KDDollBonus) + data.limitChance = KDDollBonus; } if (KinkyDungeonStatsChoice.get("Escapee") && KDRestraint(restraint).shrine && KDRestraint(restraint).shrine.includes("Leather")) - escapeChance += KDEscapeeBonus; + data.escapeChance += KDEscapeeBonus; else if (KinkyDungeonStatsChoice.get("Dragon") && KDRestraint(restraint).shrine && KDRestraint(restraint).shrine.includes("Leather")) { - if (escapeChance > 0) - escapeChance /= 1.5; - if (StruggleType != "Pick" && StruggleType != "Unlock" && limitChance > 0 && limitChance < KDDragonBonus) - limitChance = KDDragonBonus; + if (data.escapeChance > 0) + data.escapeChance /= 1.5; + if (StruggleType != "Pick" && StruggleType != "Unlock" && data.limitChance > 0 && data.limitChance < KDDragonBonus) + data.limitChance = KDDragonBonus; } - let data = { - restraint: restraint, - escapeChance: escapeChance, - limitChance: limitChance, - struggleType: StruggleType, - escapeChancePre: escapeChancePre, - limitChancePre: limitChancePre, - ApplyGhost: ApplyGhost, - ApplyPlayerBonus: ApplyPlayerBonus, - GoddessBonus: 0, - Msg: Msg, - - }; - let GoddessBonus = KDGetItemGoddessBonus(restraint, data); //if (data.escapeChance > 0) //data.escapeChance *= Math.max(0, 1 + GoddessBonus); @@ -1553,7 +1560,9 @@ function KinkyDungeonStruggle(struggleGroup, StruggleType, index) { * restraint: item, * struggleType: string, * struggleGroup: string, - * escapeChance: number, + * get escapeChance(): number + * set escapeChance(number) + * _escapeChance: number, * origEscapeChance: number, * helpChance: number, * limitChance: number, @@ -1574,7 +1583,15 @@ function KinkyDungeonStruggle(struggleGroup, StruggleType, index) { restraint: restraint, struggleType: StruggleType, struggleGroup: struggleGroup, - escapeChance: restraintEscapeChancePre, + get escapeChance() { + return this._escapeChance + }, + set escapeChance(chance) { + const callerInfo = Error().stack.split("\n")[2] + console.log(`KinkyDungeonStruggle Update escape chance: ${this._escapeChance} > ${chance} at ${callerInfo}`) + this._escapeChance = chance + }, + _escapeChance: restraintEscapeChancePre, origEscapeChance: restraintEscapeChancePre, limitChance: limitChance, helpChance: helpChance,