Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
107 changes: 62 additions & 45 deletions Game/KinkyDungeonRestraints.js
Original file line number Diff line number Diff line change
Expand Up @@ -1386,45 +1386,66 @@ 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;
} else {
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;
Expand All @@ -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);
Expand Down Expand Up @@ -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,
Expand All @@ -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,
Expand Down