diff --git a/HKCheckCompletion.js b/HKCheckCompletion.js
index 3a9a641..c576a4f 100644
--- a/HKCheckCompletion.js
+++ b/HKCheckCompletion.js
@@ -7,16 +7,14 @@ const SYMBOL_INFO = ""; // "ℹ ";
// ---------------- Variables ----------------- //
-var isCompleted = "";
-var isNotCompleted = "";
-var currentData = DATA_UNKNOWN;
-var completionSymbol = SYMBOL_FALSE;
+let currentData = DATA_UNKNOWN;
+let completionSymbol = SYMBOL_FALSE;
-var divStart = [
+let divStart = [
"
"
].join("\n");
-var divEnd = [
+let divEnd = [
"
"
].join("\n");
@@ -380,6 +378,10 @@ function HKCheckCompletion(jsonObject) {
CheckIfDataTrue(DIV_ID.bosses, HK_BOSSES_temp, HKPlayerData);
+ // ---------------- Gruz Mother and Mawlek (World Map) --------------------- //
+
+ CheckWorldDataTrue(DIV_ID.bosses, "Battle Scene", HK_BOSSES_WORLD_temp, HKWorldItems);
+
// ---------------- Charms --------------------- //
CheckIfDataTrue(DIV_ID.charms, HK_CHARMS_temp, HKPlayerData);
@@ -400,18 +402,37 @@ function HKCheckCompletion(jsonObject) {
CheckIfDataTrue(DIV_ID.equipment, HK_EQUIPMENT_temp, HKPlayerData);
+ // ---------------- Nail Upgrades --------------------- //
+
+ for (let i = 0, length = HK_NAILUPGRADES_temp.length; i < length; i++) {
+ (HKPlayerData.nailSmithUpgrades >= i) ? CurrentDataTrue(): CurrentDataFalse();
+ FillHTML(DIV_ID.nailUpgrades, HK_NAILUPGRADES_temp[i][0], HK_NAILUPGRADES_temp[i][1]);
+ }
+
// ---------------- Mask Shards --------------------- //
CheckIfDataTrue(DIV_ID.maskShards, HK_MASKSHARDS_temp, HKPlayerData);
+ // ---------------- Mask Shards (World Map) --------------------- //
+
+ CheckWorldDataTrue(DIV_ID.maskShards, "Heart Piece", HK_MASKSHARDS_WORLD_temp, HKWorldItems);
+
// ---------------- Nail Arts --------------------- //
CheckIfDataTrue(DIV_ID.nailArts, HK_NAILARTS_temp, HKPlayerData);
+ // ---------------- Spells --------------------- //
+
+ CheckSpellLevel(DIV_ID.spells, HK_SPELLS_temp, HKPlayerData);
+
// ---------------- Vessel Fragments --------------------- //
CheckIfDataTrue(DIV_ID.vesselFragments, HK_VESSELFRAGMENTS_temp, HKPlayerData);
+ // ---------------- Vessel Fragments (World Map) --------------------- //
+
+ CheckWorldDataTrue(DIV_ID.vesselFragments, "Vessel Fragment", HK_VESSELFRAGMENTS_WORLD_temp, HKWorldItems);
+
// ---------------- Warrior Dreams --------------------- //
CheckWarriorDreams(DIV_ID.warriorDreams, HK_WARRIORDREAMS_temp, HKPlayerData);
@@ -420,6 +441,9 @@ function HKCheckCompletion(jsonObject) {
CheckIfDataTrue(DIV_ID.grimmTroupe, HK_GRIMMTROUPE_temp, HKPlayerData);
+ (HKPlayerData.grimmChildLevel >= 4) ? CurrentDataTrue(): CurrentDataFalse();
+ FillHTML(DIV_ID.grimmTroupe, "Nightmare King Grimm / Banishment", "Dirtmouth or Howling Cliffs");
+
// ---------------- Lifeblood Content Pack --------------------- //
CheckIfDataTrue(DIV_ID.lifeblood, HK_LIFEBLOOD_temp, HKPlayerData);
@@ -428,65 +452,15 @@ function HKCheckCompletion(jsonObject) {
CheckIfDataTrue(DIV_ID.godmaster, HK_GODMASTER_temp, HKPlayerData);
+ for (let i = 1; i <= 4; i++) {
+ (HKPlayerData["bossDoorStateTier" + i].completed === true) ? CurrentDataTrue(): CurrentDataFalse();
+ FillHTML(DIV_ID.godmaster, HK_GODMASTER_DOORS_temp[i - 1][0], HK_GODMASTER_DOORS_temp[i - 1][1]);
+ }
+
// ------------------------- Hints ----------------------------- //
CheckHintsTrue(DIV_ID.hints, HK_HINTS_temp, HKPlayerData, HKWorldItems);
- for (let i in HKPlayerData) {
- completionSymbol = SYMBOL_FALSE;
- currentData = DATA_UNKNOWN;
-
- // ---------------- Nail Upgrades --------------------- //
-
- if (i === "nailSmithUpgrades") {
- for (let j = 0; j < HK_NAILUPGRADES_temp.length; j++) {
- (HKPlayerData.nailSmithUpgrades >= j) ? CurrentDataTrue(): CurrentDataFalse();
- FillHTML(DIV_ID.nailUpgrades, HK_NAILUPGRADES_temp[j][0], HK_NAILUPGRADES_temp[j][1]);
- }
- }
-
- // ---------------- Spells --------------------- //
-
- if (HK_SPELLS_temp) CheckSpellLevel(DIV_ID.spells, HK_SPELLS_temp, HKPlayerData);
-
-
-
- if (i === "grimmChildLevel") {
- (HKPlayerData.grimmChildLevel >= 4) ? CurrentDataTrue(): CurrentDataFalse();
- FillHTML(DIV_ID.grimmTroupe, "Nightmare King Grimm / Banishment", "Dirtmouth or Howling Cliffs");
- }
-
-
-
- if (HK_GODMASTER_DOORS_temp.length) {
- for (let j = 1; j <= 4; j++) {
- CurrentDataFalse();
- if (i === ("bossDoorStateTier" + j)) {
- if (HKPlayerData["bossDoorStateTier" + j].completed === true) CurrentDataTrue();
- FillHTML(DIV_ID.godmaster, HK_GODMASTER_DOORS_temp[0][0], HK_GODMASTER_DOORS_temp[0][1]);
- HK_GODMASTER_DOORS_temp.shift()
- }
- }
- }
-
- } // end for (let i in HKPlayerData)
-
-
-
- // Outside playerData checks
-
- // ---------------- Gruz Mother and Mawlek (World Map) --------------------- //
-
- CheckWorldDataTrue(DIV_ID.bosses, "Battle Scene", HK_BOSSES_WORLD_temp, HKWorldItems);
-
- // ---------------- Mask Shards (World Map) --------------------- //
-
- CheckWorldDataTrue(DIV_ID.maskShards, "Heart Piece", HK_MASKSHARDS_WORLD_temp, HKWorldItems);
-
- // ---------------- Vessel Fragments (World Map) --------------------- //
-
- CheckWorldDataTrue(DIV_ID.vesselFragments, "Vessel Fragment", HK_VESSELFRAGMENTS_WORLD_temp, HKWorldItems);
-
// finish and show benchmark
let countEnd = new Date();
console.info("HKCheckCompletion() time (ms) =", countEnd - countBegin);
@@ -545,18 +519,16 @@ function FillHTML(divId, textPrefix = "Unknown Completion Element: ", textSuffix
* Switches global variables to a "completed" symbol
* @param {string} textData Optional completion name for use in HTML
*/
-function CurrentDataTrue(textData = isCompleted) {
+function CurrentDataTrue() {
completionSymbol = SYMBOL_TRUE;
- currentData = textData;
}
/**
* Switches global variables to a "not completed" symbol
* @param {string} textData Optional completion name for use in HTML
*/
-function CurrentDataFalse(textData = isNotCompleted) {
+function CurrentDataFalse() {
completionSymbol = SYMBOL_FALSE;
- currentData = textData;
}
/**
@@ -626,7 +598,6 @@ function CheckSpellLevel(divId, dataObject, playerData) {
(playerData[i] >= j) ? CurrentDataTrue(): CurrentDataFalse();
FillHTML(divId, dataObject[i][j][0], dataObject[i][j][1]);
}
- delete dataObject[i];
}
}
@@ -640,7 +611,7 @@ function CheckWarriorDreams(divId, dataObject, playerData) {
for (let i in dataObject) {
(playerData[i] > 0) ? CurrentDataTrue(): CurrentDataFalse();
FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
+ // delete dataObject[i];
}
}
@@ -690,77 +661,52 @@ function CheckHintsTrue(divId, dataObject, playerData, worldData) {
for (let i in dataObject) {
CurrentDataFalse();
- for (let j in playerData) {
- if (i === j) {
- if (playerData[i] === true) {
- if (i === "killedHollowKnight") {
- hollowKnightDefeated = true;
- }
- CurrentDataTrue();
- // FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
- } else if (i === "fireballLevel") {
- if (playerData[i] >= 1) {
- CurrentDataTrue();
- // FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
- } else {
- CurrentDataFalse();
- FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
- }
- } else {
- CurrentDataFalse();
- FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
- }
+ if (playerData[i] === true) {
+ if (i === "killedHollowKnight") {
+ hollowKnightDefeated = true;
+ break;
}
- }
-
- if (i === "Crossroads_04") {
+ CurrentDataTrue();
+ continue;
+ } else if (i === "fireballLevel") {
+ if (playerData[i] >= 1) {
+ CurrentDataTrue();
+ continue;
+ } else {
+ CurrentDataFalse();
+ FillHTML(divId, dataObject[i][0], dataObject[i][1]);
+ break;
+ }
+ } else if (i === "Crossroads_04") {
for (let k = 0, length = worldData.length; k < length; k++) {
if (worldData[k].id === "Battle Scene" && worldData[k].sceneName === "Crossroads_04" && worldData[k].activated === true) {
CurrentDataTrue();
- // FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
break;
}
}
if (completionSymbol === SYMBOL_FALSE) {
FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
}
- }
-
- if (i === "dungDefenderOrHornet2") {
+ } else if (i === "dungDefenderOrHornet2") {
for (let k in playerData) {
if (k === "defeatedDungDefender" && playerData[k] === true) {
CurrentDataTrue();
- // FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
break;
} else if (k === "hornetOutskirtsDefeated" && playerData[k] === true) {
CurrentDataTrue();
- // FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
break;
} else if ((k === "defeatedDungDefender" && playerData[k] === false) &&
(k === "hornetOutskirtsDefeated" && playerData[k] === false)) {
CurrentDataFalse();
FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
break;
}
}
- }
-
- if (i === "ismaTearOrShadeCloak") {
+ } else if (i === "ismaTearOrShadeCloak") {
for (let k in playerData) {
if (k === "hasAcidArmour") {
if (playerData[k] === true) {
- CurrentDataTrue();
- // FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
+ CurrentDataTrue();
break;
}
} else if (k === "hasKingsBrand") {
@@ -769,13 +715,10 @@ function CheckHintsTrue(divId, dataObject, playerData, worldData) {
if (l === "hasShadowDash") {
if (playerData[l] === true) {
CurrentDataTrue();
- // FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
break;
} else {
CurrentDataFalse();
FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
break;
}
}
@@ -783,18 +726,16 @@ function CheckHintsTrue(divId, dataObject, playerData, worldData) {
} else {
CurrentDataFalse();
FillHTML(divId, dataObject[i][0], dataObject[i][1]);
- delete dataObject[i];
break;
}
}
}
- }
-
- // show only the last uncompleted hint
- if (completionSymbol === SYMBOL_FALSE) {
+ } else {
+ CurrentDataFalse();
+ FillHTML(divId, dataObject[i][0], dataObject[i][1]);
break;
}
- } // end for (let i in dataObject)
+ } // end: for (let i in dataObject)
// prevents showing hints when player already has seen the credits
if (hollowKnightDefeated) {