Version 0.2.0:

- Added Memory Locket
- Added Craftmetal
- Added Keys
- Fixed loodie toolkit issue (Thank you Lilu)
This commit is contained in:
Alba6rek 2025-10-09 23:57:32 +03:00
parent 67fdb56e62
commit 28e0da5e57
13 changed files with 747 additions and 27 deletions

View file

@ -21393,6 +21393,18 @@ function HKCheckCompletion(jsonObject) {
CheckIfDataTrue(_hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.toolPouchUpgrades, _hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.toolPouchUpgrades.entries, HKPlayerData, HKWorldItems); CheckIfDataTrue(_hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.toolPouchUpgrades, _hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.toolPouchUpgrades.entries, HKPlayerData, HKWorldItems);
// ---------------- Essentials % -> Memory Locket ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(_hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.essentialsMemoryLocket, _hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.essentialsMemoryLocket.entries, HKPlayerData, HKWorldItems);
// ---------------- Essentials % -> Craftmetal ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(_hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.essentialsCraftmetal, _hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.essentialsCraftmetal.entries, HKPlayerData, HKWorldItems);
// ---------------- Essentials % -> Keys ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(_hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.essentialsKeys, _hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.essentialsKeys.entries, HKPlayerData, HKWorldItems);
// ---------------- flea ---------------------------------------------------------------------------------------------------- // // ---------------- flea ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(_hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.flea, _hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.flea.entries, HKPlayerData); CheckIfDataTrue(_hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.flea, _hk_database_js__WEBPACK_IMPORTED_MODULE_0__["default"].sections.flea.entries, HKPlayerData);
@ -22126,9 +22138,9 @@ function CheckIfDataTrue(section, dataObject, playerData) {
exist >= 0 ? (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconGreen)(section, i) : (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconRed)(section, i); exist >= 0 ? (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconGreen)(section, i) : (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconRed)(section, i);
} }
//CHECK SILK HEART MASK AND SPOOL SILK (they change it from old design) //CHECK SILK HEART MASK AND SPOOL SILK (they change it from old design)
else if (section.id === "hk-maskshards" || section.id === "hk-spoolFragments" || section.id === "hk-toolPouchUpgrades" || section.id === "hk-craftingKitUpgrades") { else if (section.id === "hk-maskshards" || section.id === "hk-spoolFragments" || section.id === "hk-toolPouchUpgrades" || section.id === "hk-craftingKitUpgrades" || section.id === "hk-essentials-craftmetal" || section.id === "hk-essentials-keys" || section.id === "hk-essentials-memoryLocket") {
switch (i) { switch (i) {
//buy from sellers //buy from sellers, defeating enemies, or collected items
case "PurchasedBonebottomHeartPiece": case "PurchasedBonebottomHeartPiece":
case "MerchantEnclaveShellFragment": case "MerchantEnclaveShellFragment":
case "PurchasedBelltownSpoolSegment": case "PurchasedBelltownSpoolSegment":
@ -22139,18 +22151,46 @@ function CheckIfDataTrue(section, dataObject, playerData) {
case "PurchasedArchitectToolKit": case "PurchasedArchitectToolKit":
case "purchasedGrindleToolKit": case "purchasedGrindleToolKit":
case "PurchasedPilgrimsRestToolPouch": case "PurchasedPilgrimsRestToolPouch":
case "PurchasedBonebottomToolMetal":
case "MerchantEnclaveToolMetal":
case "MerchantEnclaveSimpleKey":
case "CollectedDustCageKey":
case "HasSlabKeyA":
case "HasSlabKeyB":
case "HasSlabKeyC":
case "collectedWardBossKey":
case "BelltownGreeterHouseFullDlg":
case "PurchasedArchitectKey":
case "BallowGivenKey":
case "PurchasedPilgrimsRestMemoryLocket":
case "PurchasedBelltownMemoryLocket":
playerData[i] === true ? (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconGreen)(section, i) : (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconRed)(section, i); playerData[i] === true ? (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconGreen)(section, i) : (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconRed)(section, i);
break; break;
//White Key Condition
case "wardKey":
playerData["MerchantEnclaveWardKey"] === true || playerData["collectedWardKey"] === true ? (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconGreen)(section, i) : (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconRed)(section, i);
break;
//check crow summons if ther are appeared or not, (but not picked up cuz still idk how and im lazy to search :3)
case "CrowSummonsAppearedScene":
playerData[i] !== undefined && playerData[i] !== "" ? (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconGreen)(section, i) : (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconRed)(section, i);
break;
//simplekey from pebb or gringle
case "purchasedGrindleSimpleKey":
playerData["purchasedGrindleSimpleKey"] === true || playerData["PurchasedBonebottomFaithToken"] === true ? (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconGreen)(section, i) : (0,_hk_functions_js__WEBPACK_IMPORTED_MODULE_2__.SetIconRed)(section, i);
break;
//Finishing wishes //Finishing wishes
case "beastflyHuntWish": case "beastflyHuntWish":
case "sprintmasterRaceWish": case "sprintmasterRaceWish":
case "destroyThreadCoresWish": case "destroyThreadCoresWish":
case "destroyThreadCoresWish":
case "antTrapperWish": case "antTrapperWish":
case "saveShermaWish": case "saveShermaWish":
case "crowFeathersWish": case "crowFeathersWish":
case "journalWish": case "journalWish":
case "rockRollersWish":
var wishList = playerData.QuestCompletionData.savedData; var wishList = playerData.QuestCompletionData.savedData;
var foundWish = wishList.find(function (wishList) { var foundWish = wishList.find(function (wishList) {
return wishList.Name === dataObject[i].sceneName; return wishList.Name === dataObject[i].sceneName;
@ -24511,6 +24551,10 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, { /* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__) /* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ }); /* harmony export */ });
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
function _defineProperty(e, r, t) { return (r = _toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
function _toPropertyKey(t) { var i = _toPrimitive(t, "string"); return "symbol" == _typeof(i) ? i : i + ""; }
function _toPrimitive(t, r) { if ("object" != _typeof(t) || !t) return t; var e = t[Symbol.toPrimitive]; if (void 0 !== e) { var i = e.call(t, r || "default"); if ("object" != _typeof(i)) return i; throw new TypeError("@@toPrimitive must return a primitive value."); } return ("string" === r ? String : Number)(t); }
// ---------------- Hollow Knight Data Constant Objects ----------------- // // ---------------- Hollow Knight Data Constant Objects ----------------- //
/* /*
This is the whole database for the tool, based on the .json save file data This is the whole database for the tool, based on the .json save file data
@ -25666,6 +25710,317 @@ var HK = {
} }
} }
}, },
/* ################ Essentials % -> Memory Locket ################### */
essentialsMemoryLocket: {
h2: "Memory Locket",
id: "hk-essentials-memoryLocket",
description: "Memory Locket that don't count directly towards Game Completion, but are required to achieve the completion.",
percent: 0,
maxPercent: 20,
entries: {
marrowMemoryLocket: {
name: "#1 Memory Locket",
spoiler: "Marrow, northeast of the Bellway station, Cling Grip required",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Bone_18"
},
hunterMarchMemoryLocket: {
name: "#2 Memory Locket",
spoiler: "Hunter's March, below the Chapel of the Beast",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Ant_20"
},
PurchasedPilgrimsRestMemoryLocket: {
name: "#3 Memory Locket",
spoiler: "Mort: 150 rosaries or Grindle: 250 rosaries (Act3)",
wiki: "Memory+Locket",
id: "",
sceneName: ""
},
greymoorMemoryLocket01: {
name: "#4 Memory Locket",
spoiler: "Greymoor, West of the Bellway",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Greymoor_16"
},
rockRollersWish: {
name: "#5 Memory Locket",
spoiler: "Bone Bottom, complet Volatile Flintbeetles Wish",
wiki: "Memory+Locket",
id: "",
sceneName: "Rock Rollers"
},
PurchasedBelltownMemoryLocket: {
name: "#6 Memory Locket",
spoiler: "Frey: 330 rosaries, complete Threadspun Town",
wiki: "Memory+Locket",
id: "",
sceneName: ""
},
blastedStepsMemoryLocket: {
name: "#7 Memory Locket",
spoiler: "Blasted Steps, require Cling Grip",
wiki: "Memory+Locket",
id: "Collectable Item Pickup (1)",
sceneName: "Coral_02"
},
wormwaysMemoryLocket: {
name: "#8 Memory Locket",
spoiler: "Wormways, Southwest, require Simple Key",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Crawl_09"
},
bilewaterMemoryLocket01: {
name: "#9 Memory Locket",
spoiler: "Bilewater, hidden room northwest of the Bellway",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Shadow_20"
},
choralChambersMemoryLocket: {
name: "#10 Memory Locket",
spoiler: "Choral Chambers, Bellway Station, accessed from Exhaust Organ",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Bellway_City"
},
underworksMemoryLocket: {
name: "#11 Memory Locket",
spoiler: "Underworks, hidden entrance above benches by the confessional",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Under_08"
},
deepDocksMemoryLocket: {
name: "#12 Memory Locket",
spoiler: "Deep Docks, west of the diving bell",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Dock_13"
},
whisperingVaultsMemoryLocket: {
name: "#13 Memory Locket",
spoiler: "Whispering Vaults, below the exit to the outside area",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Library_08"
},
sandsOfKarakMemoryLocket: {
name: "#14 Memory Locket",
spoiler: "Sands of Karak, Southwest, Clawline required",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Coral_23"
},
greymoorMemoryLocket02: {
name: "#15 Memory Locket",
spoiler: "Greymoor, Halfway Home, above the left-hand door",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Halfway_01"
},
MemoriumMemoryLocket: {
name: "#16 Memory Locket",
spoiler: "Memorium, central area, parkour",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Arborium_05"
},
slabMemoryLocket: {
name: "#17 Memory Locket",
spoiler: "Slab, shortcut cave between the Bellway area and the upper areas",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Slab_Cell_Quiet"
},
BilewaterMemoryLocket02: {
name: "#18 Memory Locket",
spoiler: "Bilewater, west of hidden bench, inside breakable cocoon",
wiki: "Memory+Locket",
id: "Sack Corpse Pickup",
sceneName: "Shadow_27"
},
bellhartMemoryLocket: {
name: "#19 Memory Locket",
spoiler: "Bellhart, above the Bellhome, require Silk Soar (Act3)",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Belltown"
},
farFieldsMemoryLocket: {
name: "#20 Memory Locket",
spoiler: "Far Fields, hidden in east of Skarrsinger Karmelita entrance (Act3)",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Bone_East_25"
}
}
},
/* ################ Essentials % -> Craftmetal ################### */
essentialsCraftmetal: {
h2: "Craftmetal",
id: "hk-essentials-craftmetal",
description: "Craftmetal that don't count directly towards Game Completion, but are required to achieve the completion.",
percent: 0,
maxPercent: 8,
entries: {
PurchasedBonebottomToolMetal: {
name: "#1 Craftmetal",
spoiler: "Pebb: 60 Rosaries",
wiki: "Craftmetal",
id: "",
sceneName: ""
},
marrowCraftmetal: {
name: "#2 Craftmetal",
spoiler: "Marrow, Larg room in east room, bottomleft corner",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Bone_07"
},
deepDocksCraftmetal: {
name: "#3 Craftmetal",
spoiler: "Deep Docks, behind locked room, inside chest",
wiki: "Craftmetal",
id: "City Shard Chest",
sceneName: "Dock_03"
},
blastedStepsCraftmetal: {
name: "#4 Craftmetal",
spoiler: "Blasted Steps, hole before the Last Judge",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Coral_32"
},
MerchantEnclaveToolMetal: {
name: "#5 Craftmetal",
spoiler: "Jubilana: 180 Rosaries, complete Lost Merchant wish",
wiki: "Craftmetal",
id: "",
sceneName: ""
},
wispThicketCraftmetal: {
name: "#6 Craftmetal",
spoiler: "Wisp Thicket, behind a breakable ceiling",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Wisp_05"
},
underworksCraftmetal: {
name: "#7 Craftmetal",
spoiler: "Underworks, central, south of where Clawline can be found",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Under_19b"
},
putrifiedDuctsCraftmetal: {
name: "#8 Craftmetal",
spoiler: "Putrified Ducts, far eastern end of the Pale Lake",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Aqueduct_05"
}
}
},
/* ################ Essentials % -> Keys ################### */
essentialsKeys: {
h2: "Keys",
id: "hk-essentials-keys",
description: "Keys that don't count directly towards Game Completion, but are required to achieve the completion.",
percent: 0,
maxPercent: 11,
entries: _defineProperty(_defineProperty({
purchasedGrindleSimpleKey: {
name: "Sample Key #1",
spoiler: "Pebb: 500 rosaries (Act1&2), or Grindle: 600 rosaries (Act3)",
wiki: "Simple+Key",
id: "",
sceneName: ""
},
CollectedDustCageKey: {
name: "Sample Key #2",
spoiler: "Sinner's Road, northeast, defeat Roachkeeper",
wiki: "Simple+Key",
id: "",
sceneName: ""
},
MerchantEnclaveSimpleKey: {
name: "Sample Key #3",
spoiler: "Jubilana: 650 rosaries, complete Wandering Merchant wish",
wiki: "Simple+Key",
id: "",
sceneName: ""
},
bellshrineCoralSimpleKey: {
name: "Sample Key #4",
spoiler: "Sands of Karak, east, in bench",
wiki: "Simple+Key",
id: "Collectable Item Pickup",
sceneName: "Bellshrine_Coral"
},
HasSlabKeyA: {
name: "Key of Indolent",
spoiler: "Slab, middle west, hanging inside a room",
wiki: "Key+of+Indolent",
id: "",
sceneName: ""
},
HasSlabKeyB: {
name: "Key of Heretic",
spoiler: "Slab, after defeating enemies in northwest room",
wiki: "Key+of+Heretic",
id: "",
sceneName: ""
},
HasSlabKeyC: {
name: "Key of Apostate",
spoiler: "Putrified Ducts, west of Huntress's home",
wiki: "Key+of+Apostate",
id: "",
sceneName: ""
},
collectedWardBossKey: {
name: "White Key",
spoiler: "Songclave, far right edge, or Jubilana: 220 after Wandering Merchant wish",
wiki: "White+Key",
id: "",
sceneName: ""
},
BelltownGreeterHouseFullDlg: {
name: "Bellhome Key",
spoiler: "Pavo: complete Bellhart's Glory wish and 2 of wishes on Bellhart Wishwall ",
wiki: "Bellhome+Guide",
id: "",
sceneName: ""
},
BallowGivenKey: {
name: "Diving Bell Key",
spoiler: "(Act 3), The Dark Below Quest, Deep Docks, talk to Ballow",
wiki: "Diving+Bell+Key",
id: "",
sceneName: ""
}
}, "BallowGivenKey", {
name: "Diving Bell Key",
spoiler: "(Act 3), The Dark Below Quest, Deep Docks, talk to Ballow",
wiki: "Diving+Bell+Key",
id: "",
sceneName: ""
}), "CrowSummonsAppearedScene", {
name: "Craw Summons",
spoiler: "(Act 3), completed Awaiting the End, and hit the lever inside the Craw house on Craw Lake, there is a chance to summon evertime rests at certain benches",
wiki: "Craw+Summons",
id: "",
sceneName: ""
})
},
/* ################ Hunter's Journal ################### */ /* ################ Hunter's Journal ################### */
huntersJournal: { huntersJournal: {
@ -34598,8 +34953,7 @@ function GenerateInnerHTML(db) {
switch (section) { switch (section) {
/* Main % */ /* Main % */
case "crests": case "crests":
textFill += ["<div class=\"tab-switch-buttons\">", "<button id=\"button-switch-main\" name=\"main\" class=\"button tab-switch\" type=\"button\">Main %</button>", //`<button id="button-switch-essentials" name="essentials" class="button tab-switch" type="button">Essentials %</button>`, textFill += ["<div class=\"tab-switch-buttons\">", "<button id=\"button-switch-main\" name=\"main\" class=\"button tab-switch\" type=\"button\">Main %</button>", "<button id=\"button-switch-essentials\" name=\"essentials\" class=\"button tab-switch\" type=\"button\">Essentials %</button>", "<button id=\"button-switch-journal\" name=\"journal\" class=\"button tab-switch\" type=\"button\">Journal</button>", "<button id=\"button-switch-collectibles\" name=\"collectibles\" class=\"button tab-switch\" type=\"button\">Collectibles</button>", //`<button id="button-switch-geocaches" name="geocaches" class="button tab-switch" type="button">Geo Caches</button>`,
"<button id=\"button-switch-journal\" name=\"journal\" class=\"button tab-switch\" type=\"button\">Journal</button>", "<button id=\"button-switch-collectibles\" name=\"collectibles\" class=\"button tab-switch\" type=\"button\">Collectibles</button>", //`<button id="button-switch-geocaches" name="geocaches" class="button tab-switch" type="button">Geo Caches</button>`,
//`<button id="button-switch-secrets" name="secrets" class="button tab-switch" type="button">Secrets</button>`, //`<button id="button-switch-secrets" name="secrets" class="button tab-switch" type="button">Secrets</button>`,
//`<button id="button-switch-godhome" name="godhome" class="button tab-switch" type="button">Godmaster</button>`, //`<button id="button-switch-godhome" name="godhome" class="button tab-switch" type="button">Godmaster</button>`,
//`<button id="button-switch-statistics" name="statistics" class="button tab-switch" type="button">Statistics</button>`, //`<button id="button-switch-statistics" name="statistics" class="button tab-switch" type="button">Statistics</button>`,
@ -34608,9 +34962,9 @@ function GenerateInnerHTML(db) {
break; break;
/* Essentials % */ /* Essentials % */
/*case "essentialsCollectibles": case "essentialsMemoryLocket":
textFill += `<div id="tab-essentials" class="large-section">`; textFill += "<div id=\"tab-essentials\" class=\"large-section\">";
break;*/ break;
/* Journal */ /* Journal */
case "huntersJournal": case "huntersJournal":
@ -34977,8 +35331,9 @@ function GenerateInnerHTML(db) {
/* ending the tabs */ /* ending the tabs */
case "toolPouchUpgrades": // Main % case "toolPouchUpgrades": // Main %
case "huntersJournal": // Journal case "huntersJournal": // Journal
case "flea": case "flea": // Collectibles
// Collectibles case "essentialsKeys":
// Essentials %
/*case "toolPouchUpgrades": // Main % /*case "toolPouchUpgrades": // Main %
case "achievementsBosses": // Essentials % case "achievementsBosses": // Essentials %

File diff suppressed because one or more lines are too long

View file

@ -299,7 +299,7 @@
<div style="margin-bottom: 20px;"></div> <div style="margin-bottom: 20px;"></div>
<p class="smalltext"> <p class="smalltext">
v0.1.0. Work-In-Progress. <!--Ideas &amp; Bug Reports: <a v0.2.0. Work-In-Progress. <!--Ideas &amp; Bug Reports: <a
href="https://steamcommunity.com/app/367520/discussions/0/2915472677711090083/" target="_blank"><i href="https://steamcommunity.com/app/367520/discussions/0/2915472677711090083/" target="_blank"><i
class="simpleicon-steam"></i>Steam Discussions</a> <a class="simpleicon-steam"></i>Steam Discussions</a> <a
href="https://steamcommunity.com/sharedfiles/filedetails/?id=2209910193" target="_blank"><i href="https://steamcommunity.com/sharedfiles/filedetails/?id=2209910193" target="_blank"><i

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

4
package-lock.json generated
View file

@ -1,12 +1,12 @@
{ {
"name": "hollow-knight-silksong-completion-check", "name": "hollow-knight-silksong-completion-check",
"version": "0.1.0", "version": "0.2.0",
"lockfileVersion": 0, "lockfileVersion": 0,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "hollow-knight-silksong-completion-check", "name": "hollow-knight-silksong-completion-check",
"version": "0.1.0", "version": "0.2.0",
"license": "GPL-3.0", "license": "GPL-3.0",
"dependencies": { "dependencies": {
"core-js": "^3.18.3" "core-js": "^3.18.3"

View file

@ -1,6 +1,6 @@
{ {
"name": "hollow-knight-silksong-completion-check", "name": "hollow-knight-silksong-completion-check",
"version": "0.1.0", "version": "0.2.0",
"description": "Hollow Knight: Silksong Save Game Completion Analyzer Web Tool", "description": "Hollow Knight: Silksong Save Game Completion Analyzer Web Tool",
"main": "index.html", "main": "index.html",
"scripts": { "scripts": {

View file

@ -184,7 +184,7 @@
<div style="margin-bottom: 20px;"></div> <div style="margin-bottom: 20px;"></div>
<p class="smalltext"> <p class="smalltext">
v0.1.0. Work-In-Progress. <!--Ideas &amp; Bug Reports: <a v0.2.0. Work-In-Progress. <!--Ideas &amp; Bug Reports: <a
href="https://steamcommunity.com/app/367520/discussions/0/2915472677711090083/" target="_blank"><i href="https://steamcommunity.com/app/367520/discussions/0/2915472677711090083/" target="_blank"><i
class="simpleicon-steam"></i>Steam Discussions</a> <a class="simpleicon-steam"></i>Steam Discussions</a> <a
href="https://steamcommunity.com/sharedfiles/filedetails/?id=2209910193" target="_blank"><i href="https://steamcommunity.com/sharedfiles/filedetails/?id=2209910193" target="_blank"><i

View file

@ -199,6 +199,19 @@ function HKCheckCompletion(jsonObject, benchStart = performance.now()) {
CheckIfDataTrue(HK.sections.toolPouchUpgrades, HK.sections.toolPouchUpgrades.entries, HKPlayerData, HKWorldItems); CheckIfDataTrue(HK.sections.toolPouchUpgrades, HK.sections.toolPouchUpgrades.entries, HKPlayerData, HKWorldItems);
// ---------------- Essentials % -> Memory Locket ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.essentialsMemoryLocket, HK.sections.essentialsMemoryLocket.entries, HKPlayerData, HKWorldItems);
// ---------------- Essentials % -> Craftmetal ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.essentialsCraftmetal, HK.sections.essentialsCraftmetal.entries, HKPlayerData, HKWorldItems);
// ---------------- Essentials % -> Keys ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.essentialsKeys, HK.sections.essentialsKeys.entries, HKPlayerData, HKWorldItems);
// ---------------- flea ---------------------------------------------------------------------------------------------------- // // ---------------- flea ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.flea, HK.sections.flea.entries, HKPlayerData); CheckIfDataTrue(HK.sections.flea, HK.sections.flea.entries, HKPlayerData);
@ -1014,10 +1027,13 @@ function CheckIfDataTrue(section, dataObject, playerData, worldData = []) {
else if (section.id === "hk-maskshards" else if (section.id === "hk-maskshards"
|| section.id === "hk-spoolFragments" || section.id === "hk-spoolFragments"
|| section.id === "hk-toolPouchUpgrades" || section.id === "hk-toolPouchUpgrades"
|| section.id === "hk-craftingKitUpgrades") || section.id === "hk-craftingKitUpgrades"
|| section.id === "hk-essentials-craftmetal"
|| section.id === "hk-essentials-keys"
|| section.id === "hk-essentials-memoryLocket")
{ {
switch (i) { switch (i) {
//buy from sellers //buy from sellers, defeating enemies, or collected items
case "PurchasedBonebottomHeartPiece": case "PurchasedBonebottomHeartPiece":
case "MerchantEnclaveShellFragment": case "MerchantEnclaveShellFragment":
case "PurchasedBelltownSpoolSegment": case "PurchasedBelltownSpoolSegment":
@ -1028,18 +1044,47 @@ function CheckIfDataTrue(section, dataObject, playerData, worldData = []) {
case "PurchasedArchitectToolKit": case "PurchasedArchitectToolKit":
case "purchasedGrindleToolKit": case "purchasedGrindleToolKit":
case "PurchasedPilgrimsRestToolPouch": case "PurchasedPilgrimsRestToolPouch":
case "PurchasedBonebottomToolMetal":
case "MerchantEnclaveToolMetal":
case "MerchantEnclaveSimpleKey":
case "CollectedDustCageKey":
case "HasSlabKeyA":
case "HasSlabKeyB":
case "HasSlabKeyC":
case "collectedWardBossKey":
case "BelltownGreeterHouseFullDlg":
case "PurchasedArchitectKey":
case "BallowGivenKey":
case "PurchasedPilgrimsRestMemoryLocket":
case "PurchasedBelltownMemoryLocket":
(playerData[i] === true) ? SetIconGreen(section, i): SetIconRed(section, i); (playerData[i] === true) ? SetIconGreen(section, i): SetIconRed(section, i);
break; break;
//White Key Condition
case "wardKey":
(playerData["MerchantEnclaveWardKey"] === true || playerData["collectedWardKey"] === true) ? SetIconGreen(section, i): SetIconRed(section, i);
break;
//check crow summons if ther are appeared or not, (but not picked up cuz still idk how and im lazy to search :3)
case "CrowSummonsAppearedScene":
(playerData[i] !== undefined && playerData[i] !== "" ) ? SetIconGreen(section, i): SetIconRed(section, i);
break;
//simplekey from pebb or gringle
case "purchasedGrindleSimpleKey":
(playerData["purchasedGrindleSimpleKey"] === true || playerData["PurchasedBonebottomFaithToken"] === true) ? SetIconGreen(section, i): SetIconRed(section, i);
break;
//Finishing wishes //Finishing wishes
case "beastflyHuntWish": case "beastflyHuntWish":
case "sprintmasterRaceWish": case "sprintmasterRaceWish":
case "destroyThreadCoresWish": case "destroyThreadCoresWish":
case "destroyThreadCoresWish":
case "antTrapperWish": case "antTrapperWish":
case "saveShermaWish": case "saveShermaWish":
case "crowFeathersWish": case "crowFeathersWish":
case "journalWish": case "journalWish":
case "rockRollersWish":
let wishList = playerData.QuestCompletionData.savedData; let wishList = playerData.QuestCompletionData.savedData;
let foundWish = wishList.find(wishList => wishList.Name === dataObject[i].sceneName); let foundWish = wishList.find(wishList => wishList.Name === dataObject[i].sceneName);
(foundWish !== undefined && foundWish.Data.IsCompleted === true) ? SetIconGreen(section, i): SetIconRed(section, i); (foundWish !== undefined && foundWish.Data.IsCompleted === true) ? SetIconGreen(section, i): SetIconRed(section, i);

View file

@ -1096,7 +1096,6 @@ const HK = {
}, },
}, },
/* ################ Crafting Kit Upgrades ################### */ /* ################ Crafting Kit Upgrades ################### */
craftingKitUpgrades: { craftingKitUpgrades: {
@ -1179,6 +1178,326 @@ const HK = {
} }
}, },
/* ################ Essentials % -> Memory Locket ################### */
essentialsMemoryLocket: {
h2: "Memory Locket",
id: "hk-essentials-memoryLocket",
description: "Memory Locket that don't count directly towards Game Completion, but are required to achieve the completion.",
percent: 0,
maxPercent: 20,
entries: {
marrowMemoryLocket: {
name: "#1 Memory Locket",
spoiler: "Marrow, northeast of the Bellway station, Cling Grip required",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Bone_18"
},
hunterMarchMemoryLocket: {
name: "#2 Memory Locket",
spoiler: "Hunter's March, below the Chapel of the Beast",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Ant_20"
},
PurchasedPilgrimsRestMemoryLocket: {
name: "#3 Memory Locket",
spoiler: "Mort: 150 rosaries or Grindle: 250 rosaries (Act3)",
wiki: "Memory+Locket",
id: "",
sceneName: ""
},
greymoorMemoryLocket01: {
name: "#4 Memory Locket",
spoiler: "Greymoor, West of the Bellway",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Greymoor_16"
},
rockRollersWish: {
name: "#5 Memory Locket",
spoiler: "Bone Bottom, complet Volatile Flintbeetles Wish",
wiki: "Memory+Locket",
id: "",
sceneName: "Rock Rollers"
},
PurchasedBelltownMemoryLocket: {
name: "#6 Memory Locket",
spoiler: "Frey: 330 rosaries, complete Threadspun Town",
wiki: "Memory+Locket",
id: "",
sceneName: ""
},
blastedStepsMemoryLocket: {
name: "#7 Memory Locket",
spoiler: "Blasted Steps, require Cling Grip",
wiki: "Memory+Locket",
id: "Collectable Item Pickup (1)",
sceneName: "Coral_02"
},
wormwaysMemoryLocket: {
name: "#8 Memory Locket",
spoiler: "Wormways, Southwest, require Simple Key",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Crawl_09"
},
bilewaterMemoryLocket01: {
name: "#9 Memory Locket",
spoiler: "Bilewater, hidden room northwest of the Bellway",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Shadow_20"
},
choralChambersMemoryLocket: {
name: "#10 Memory Locket",
spoiler: "Choral Chambers, Bellway Station, accessed from Exhaust Organ",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Bellway_City"
},
underworksMemoryLocket: {
name: "#11 Memory Locket",
spoiler: "Underworks, hidden entrance above benches by the confessional",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Under_08"
},
deepDocksMemoryLocket: {
name: "#12 Memory Locket",
spoiler: "Deep Docks, west of the diving bell",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Dock_13"
},
whisperingVaultsMemoryLocket: {
name: "#13 Memory Locket",
spoiler: "Whispering Vaults, below the exit to the outside area",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Library_08"
},
sandsOfKarakMemoryLocket: {
name: "#14 Memory Locket",
spoiler: "Sands of Karak, Southwest, Clawline required",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Coral_23"
},
greymoorMemoryLocket02: {
name: "#15 Memory Locket",
spoiler: "Greymoor, Halfway Home, above the left-hand door",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Halfway_01"
},
MemoriumMemoryLocket: {
name: "#16 Memory Locket",
spoiler: "Memorium, central area, parkour",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Arborium_05"
},
slabMemoryLocket: {
name: "#17 Memory Locket",
spoiler: "Slab, shortcut cave between the Bellway area and the upper areas",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Slab_Cell_Quiet"
},
BilewaterMemoryLocket02: {
name: "#18 Memory Locket",
spoiler: "Bilewater, west of hidden bench, inside breakable cocoon",
wiki: "Memory+Locket",
id: "Sack Corpse Pickup",
sceneName: "Shadow_27"
},
bellhartMemoryLocket: {
name: "#19 Memory Locket",
spoiler: "Bellhart, above the Bellhome, require Silk Soar (Act3)",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Belltown"
},
farFieldsMemoryLocket: {
name: "#20 Memory Locket",
spoiler: "Far Fields, hidden in east of Skarrsinger Karmelita entrance (Act3)",
wiki: "Memory+Locket",
id: "Collectable Item Pickup",
sceneName: "Bone_East_25"
},
},
},
/* ################ Essentials % -> Craftmetal ################### */
essentialsCraftmetal: {
h2: "Craftmetal",
id: "hk-essentials-craftmetal",
description: "Craftmetal that don't count directly towards Game Completion, but are required to achieve the completion.",
percent: 0,
maxPercent: 8,
entries: {
PurchasedBonebottomToolMetal: {
name: "#1 Craftmetal",
spoiler: "Pebb: 60 Rosaries",
wiki: "Craftmetal",
id: "",
sceneName: ""
},
marrowCraftmetal: {
name: "#2 Craftmetal",
spoiler: "Marrow, Larg room in east room, bottomleft corner",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Bone_07"
},
deepDocksCraftmetal: {
name: "#3 Craftmetal",
spoiler: "Deep Docks, behind locked room, inside chest",
wiki: "Craftmetal",
id: "City Shard Chest",
sceneName: "Dock_03"
},
blastedStepsCraftmetal: {
name: "#4 Craftmetal",
spoiler: "Blasted Steps, hole before the Last Judge",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Coral_32"
},
MerchantEnclaveToolMetal: {
name: "#5 Craftmetal",
spoiler: "Jubilana: 180 Rosaries, complete Lost Merchant wish",
wiki: "Craftmetal",
id: "",
sceneName: ""
},
wispThicketCraftmetal: {
name: "#6 Craftmetal",
spoiler: "Wisp Thicket, behind a breakable ceiling",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Wisp_05"
},
underworksCraftmetal: {
name: "#7 Craftmetal",
spoiler: "Underworks, central, south of where Clawline can be found",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Under_19b"
},
putrifiedDuctsCraftmetal: {
name: "#8 Craftmetal",
spoiler: "Putrified Ducts, far eastern end of the Pale Lake",
wiki: "Craftmetal",
id: "Collectable Item Pickup - Tool Metal",
sceneName: "Aqueduct_05"
},
},
},
/* ################ Essentials % -> Keys ################### */
essentialsKeys: {
h2: "Keys",
id: "hk-essentials-keys",
description: "Keys that don't count directly towards Game Completion, but are required to achieve the completion.",
percent: 0,
maxPercent: 11,
entries: {
purchasedGrindleSimpleKey: {
name: "Sample Key #1",
spoiler: "Pebb: 500 rosaries (Act1&2), or Grindle: 600 rosaries (Act3)",
wiki: "Simple+Key",
id: "",
sceneName: ""
},
CollectedDustCageKey: {
name: "Sample Key #2",
spoiler: "Sinner's Road, northeast, defeat Roachkeeper",
wiki: "Simple+Key",
id: "",
sceneName: ""
},
MerchantEnclaveSimpleKey: {
name: "Sample Key #3",
spoiler: "Jubilana: 650 rosaries, complete Wandering Merchant wish",
wiki: "Simple+Key",
id: "",
sceneName: ""
},
bellshrineCoralSimpleKey: {
name: "Sample Key #4",
spoiler: "Sands of Karak, east, in bench",
wiki: "Simple+Key",
id: "Collectable Item Pickup",
sceneName: "Bellshrine_Coral"
},
HasSlabKeyA: {
name: "Key of Indolent",
spoiler: "Slab, middle west, hanging inside a room",
wiki: "Key+of+Indolent",
id: "",
sceneName: ""
},
HasSlabKeyB: {
name: "Key of Heretic",
spoiler: "Slab, after defeating enemies in northwest room",
wiki: "Key+of+Heretic",
id: "",
sceneName: ""
},
HasSlabKeyC: {
name: "Key of Apostate",
spoiler: "Putrified Ducts, west of Huntress's home",
wiki: "Key+of+Apostate",
id: "",
sceneName: ""
},
collectedWardBossKey: {
name: "White Key",
spoiler: "Songclave, far right edge, or Jubilana: 220 after Wandering Merchant wish",
wiki: "White+Key",
id: "",
sceneName: ""
},
BelltownGreeterHouseFullDlg: {
name: "Bellhome Key",
spoiler: "Pavo: complete Bellhart's Glory wish and 2 of wishes on Bellhart Wishwall ",
wiki: "Bellhome+Guide",
id: "",
sceneName: ""
},
BallowGivenKey: {
name: "Diving Bell Key",
spoiler: "(Act 3), The Dark Below Quest, Deep Docks, talk to Ballow",
wiki: "Diving+Bell+Key",
id: "",
sceneName: ""
},
BallowGivenKey: {
name: "Diving Bell Key",
spoiler: "(Act 3), The Dark Below Quest, Deep Docks, talk to Ballow",
wiki: "Diving+Bell+Key",
id: "",
sceneName: ""
},
CrowSummonsAppearedScene: {
name: "Craw Summons",
spoiler: "(Act 3), completed Awaiting the End, and hit the lever inside the Craw house on Craw Lake, there is a chance to summon evertime rests at certain benches",
wiki: "Craw+Summons",
id: "",
sceneName: ""
},
},
},
/* ################ Hunter's Journal ################### */ /* ################ Hunter's Journal ################### */
huntersJournal: { huntersJournal: {

View file

@ -209,7 +209,7 @@ function GenerateInnerHTML(db) {
textFill += [ textFill += [
`<div class="tab-switch-buttons">`, `<div class="tab-switch-buttons">`,
`<button id="button-switch-main" name="main" class="button tab-switch" type="button">Main %</button>`, `<button id="button-switch-main" name="main" class="button tab-switch" type="button">Main %</button>`,
//`<button id="button-switch-essentials" name="essentials" class="button tab-switch" type="button">Essentials %</button>`, `<button id="button-switch-essentials" name="essentials" class="button tab-switch" type="button">Essentials %</button>`,
`<button id="button-switch-journal" name="journal" class="button tab-switch" type="button">Journal</button>`, `<button id="button-switch-journal" name="journal" class="button tab-switch" type="button">Journal</button>`,
`<button id="button-switch-collectibles" name="collectibles" class="button tab-switch" type="button">Collectibles</button>`, `<button id="button-switch-collectibles" name="collectibles" class="button tab-switch" type="button">Collectibles</button>`,
//`<button id="button-switch-geocaches" name="geocaches" class="button tab-switch" type="button">Geo Caches</button>`, //`<button id="button-switch-geocaches" name="geocaches" class="button tab-switch" type="button">Geo Caches</button>`,
@ -224,11 +224,11 @@ function GenerateInnerHTML(db) {
break; break;
/* Essentials % */ /* Essentials % */
/*case "essentialsCollectibles": case "essentialsMemoryLocket":
textFill += `<div id="tab-essentials" class="large-section">`; textFill += `<div id="tab-essentials" class="large-section">`;
break;*/ break;
/* Journal */ /* Journal */
case "huntersJournal": case "huntersJournal":
@ -678,6 +678,7 @@ function GenerateInnerHTML(db) {
case "toolPouchUpgrades": // Main % case "toolPouchUpgrades": // Main %
case "huntersJournal": // Journal case "huntersJournal": // Journal
case "flea": // Collectibles case "flea": // Collectibles
case "essentialsKeys": // Essentials %
/*case "toolPouchUpgrades": // Main % /*case "toolPouchUpgrades": // Main %
case "achievementsBosses": // Essentials % case "achievementsBosses": // Essentials %

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long