add CheckHallOfGods

This commit is contained in:
ReznoRMichael 2021-08-05 11:35:05 +02:00
parent b42d3347dc
commit 30f836d7f4
2 changed files with 86 additions and 41 deletions

View file

@ -1,10 +1,10 @@
/* eslint-disable no-prototype-builtins */ /* eslint-disable no-prototype-builtins */
/* ---------------- Load main Hollow Knight database files ----------------- */ /* ---------------- Load main Hollow Knight database files ------------------------------------------------------------------------ */
import HK from "./hk-database.js"; import HK from "./hk-database.js";
/* ----------------- Helper functions --------------------------------------- */ /* ----------------- Helper functions --------------------------------------------------------------------------------------------- */
import { import {
GenerateInnerHTML, GenerateInnerHTML,
@ -27,7 +27,7 @@ import {
TranslateMapName TranslateMapName
} from "./hk-functions.js"; } from "./hk-functions.js";
// ---------------- Load image files (necessary for Webpack) ----------------- // // ---------------- Load image files (necessary for Webpack) ----------------------------------------------------------------------- //
import HEALTH_MASK_IMAGE from "../img/health-mask.png"; import HEALTH_MASK_IMAGE from "../img/health-mask.png";
import HEALTH_MASK_STEEL_IMAGE from "../img/health-mask-steel.png"; import HEALTH_MASK_STEEL_IMAGE from "../img/health-mask-steel.png";
@ -38,7 +38,7 @@ import NOTCH_OVERCHARMED_IMAGE from "../img/notch-overcharmed.png";
import GEO_IMAGE from "../img/geo.png"; import GEO_IMAGE from "../img/geo.png";
import GEO_SHADE_IMAGE from "../img/geo-shade.png"; import GEO_SHADE_IMAGE from "../img/geo-shade.png";
// ---------------- Constants ----------------- // // ---------------- Constants ------------------------------------------------------------------------------------------------------- //
// const DATA_UNKNOWN = "Data unknown"; // const DATA_UNKNOWN = "Data unknown";
const SYMBOL_FALSE = "<i class='icon-cancel'></i>"; // "❌ " const SYMBOL_FALSE = "<i class='icon-cancel'></i>"; // "❌ "
@ -49,7 +49,7 @@ const SYMBOL_EMPTY = "<span class='padding-left'></span>";
const FLEUR_DIVIDE = "<div class='horizontal-line'></div>"; const FLEUR_DIVIDE = "<div class='horizontal-line'></div>";
const WIKI_LINK = "https://hollowknight.fandom.com/wiki/"; const WIKI_LINK = "https://hollowknight.fandom.com/wiki/";
// ---------------- Variables ----------------- // // ---------------- Variables ------------------------------------------------------------------------------------------------------- //
// let currentData = DATA_UNKNOWN; // let currentData = DATA_UNKNOWN;
let completionSymbol = SYMBOL_FALSE; let completionSymbol = SYMBOL_FALSE;
@ -70,7 +70,7 @@ let pSpan = "<span class='p-left-small'></span>";
/* let benchHKCCBegin, benchHKCCEnd; */ /* let benchHKCCBegin, benchHKCCEnd; */
/* -------------------------- Functions ----------------------------- */ /* -------------------------- Functions ------------------------------------------------------------------------------------------- */
/** /**
* Main Function. Checks Hollow Knight game completion by analyzing the save file * Main Function. Checks Hollow Knight game completion by analyzing the save file
@ -112,119 +112,119 @@ function HKCheckCompletion(jsonObject, benchStart = performance.now()) {
// Prevents adding current percent data after each function call and resets what the analyzing has done to the original object. Prevents wrong data display after subsequent save analyzing. // Prevents adding current percent data after each function call and resets what the analyzing has done to the original object. Prevents wrong data display after subsequent save analyzing.
ResetCompletion(HK); ResetCompletion(HK);
// ================================================================================== // // ============================================================================================================================= //
// ---------------- Time Played ----------------- // // ---------------- Time Played ----------------------------------------------------------------------------------------------- //
CheckPlayTime(HK.sections.intro, HKPlayerData.playTime); CheckPlayTime(HK.sections.intro, HKPlayerData.playTime);
// ---------------- Game Completion Status ----------------- // // ---------------- Game Completion Status ------------------------------------------------------------------------------------ //
CheckCompletionPercent(HK.sections.intro, HKPlayerData); CheckCompletionPercent(HK.sections.intro, HKPlayerData);
// ---------------- Game Completion Status ----------------- // // ---------------- Game Completion Status ------------------------------------------------------------------------------------ //
CheckSaveFileVersion(HK.sections.intro, HKPlayerData.version); CheckSaveFileVersion(HK.sections.intro, HKPlayerData.version);
// ---------------- Health Masks ----------------- // // ---------------- Health Masks ---------------------------------------------------------------------------------------------- //
CheckHealthMasks(HK.sections.intro, HKPlayerData.maxHealthBase, HKPlayerData.permadeathMode); CheckHealthMasks(HK.sections.intro, HKPlayerData.maxHealthBase, HKPlayerData.permadeathMode);
// ---------------- Soul Orbs ----------------- // // ---------------- Soul Orbs ------------------------------------------------------------------------------------------------- //
CheckSoulOrbs(HK.sections.intro, HKPlayerData.maxMP + HKPlayerData.MPReserveMax); CheckSoulOrbs(HK.sections.intro, HKPlayerData.maxMP + HKPlayerData.MPReserveMax);
// ---------------- Charm Notches (Slots) ----------------- // // ---------------- Charm Notches (Slots) ------------------------------------------------------------------------------------- //
CheckNotches(HK.sections.intro, HKPlayerData.charmSlots, HKPlayerData.charmSlotsFilled); CheckNotches(HK.sections.intro, HKPlayerData.charmSlots, HKPlayerData.charmSlotsFilled);
// ---------------- Geo Amount ----------------- // // ---------------- Geo Amount ------------------------------------------------------------------------------------------------ //
CheckGeo(HK.sections.intro, HKPlayerData.geo, HKPlayerData.geoPool); CheckGeo(HK.sections.intro, HKPlayerData.geo, HKPlayerData.geoPool);
// ---------------- Bosses (Base Game) --------------------- // // ---------------- Bosses (Base Game) ---------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.bosses, HK.sections.bosses.entries, HKPlayerData, HKWorldItems); CheckIfDataTrue(HK.sections.bosses, HK.sections.bosses.entries, HKPlayerData, HKWorldItems);
// ---------------- Charms --------------------- // // ---------------- Charms ---------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.charms, HK.sections.charms.entries, HKPlayerData); CheckIfDataTrue(HK.sections.charms, HK.sections.charms.entries, HKPlayerData);
// ---------------- Colosseum of Fools --------------------- // // ---------------- Colosseum of Fools ---------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.colosseum, HK.sections.colosseum.entries, HKPlayerData); CheckIfDataTrue(HK.sections.colosseum, HK.sections.colosseum.entries, HKPlayerData);
// ---------------- Dreamers --------------------- // // ---------------- Dreamers -------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.dreamers, HK.sections.dreamers.entries, HKPlayerData); CheckIfDataTrue(HK.sections.dreamers, HK.sections.dreamers.entries, HKPlayerData);
// ---------------- Dream Nail and Essence --------------------- // // ---------------- Dream Nail and Essence ------------------------------------------------------------------------------------ //
CheckIfDataTrue(HK.sections.dreamNail, HK.sections.dreamNail.entries, HKPlayerData); CheckIfDataTrue(HK.sections.dreamNail, HK.sections.dreamNail.entries, HKPlayerData);
// ---------------- Equipment --------------------- // // ---------------- Equipment ------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.equipment, HK.sections.equipment.entries, HKPlayerData); CheckIfDataTrue(HK.sections.equipment, HK.sections.equipment.entries, HKPlayerData);
// ---------------- Nail Upgrades --------------------- // // ---------------- Nail Upgrades --------------------------------------------------------------------------------------------- //
CheckNailUpgrades(HK.sections.nailUpgrades, HK.sections.nailUpgrades.entries, HKPlayerData); CheckNailUpgrades(HK.sections.nailUpgrades, HK.sections.nailUpgrades.entries, HKPlayerData);
// ---------------- Mask Shards --------------------- // // ---------------- Mask Shards ----------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.maskShards, HK.sections.maskShards.entries, HKPlayerData, HKWorldItems); CheckIfDataTrue(HK.sections.maskShards, HK.sections.maskShards.entries, HKPlayerData, HKWorldItems);
// ---------------- Nail Arts --------------------- // // ---------------- Nail Arts ------------------------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.nailArts, HK.sections.nailArts.entries, HKPlayerData); CheckIfDataTrue(HK.sections.nailArts, HK.sections.nailArts.entries, HKPlayerData);
// ---------------- Spells --------------------- // // ---------------- Spells ---------------------------------------------------------------------------------------------------- //
CheckSpellLevel(HK.sections.spells, HK.sections.spells.entries, HKPlayerData); CheckSpellLevel(HK.sections.spells, HK.sections.spells.entries, HKPlayerData);
// ---------------- Vessel Fragments --------------------- // // ---------------- Vessel Fragments ------------------------------------------------------------------------------------------ //
CheckIfDataTrue(HK.sections.vesselFragments, HK.sections.vesselFragments.entries, HKPlayerData, HKWorldItems); CheckIfDataTrue(HK.sections.vesselFragments, HK.sections.vesselFragments.entries, HKPlayerData, HKWorldItems);
// ---------------- Warrior Dreams --------------------- // // ---------------- Warrior Dreams -------------------------------------------------------------------------------------------- //
CheckWarriorDreams(HK.sections.warriorDreams, HK.sections.warriorDreams.entries, HKPlayerData); CheckWarriorDreams(HK.sections.warriorDreams, HK.sections.warriorDreams.entries, HKPlayerData);
// ---------------- Grimm Troupe Content Pack --------------------- // // ---------------- Grimm Troupe Content Pack --------------------------------------------------------------------------------- //
CheckIfDataTrue(HK.sections.grimmTroupe, HK.sections.grimmTroupe.entries, HKPlayerData); CheckIfDataTrue(HK.sections.grimmTroupe, HK.sections.grimmTroupe.entries, HKPlayerData);
// ---------------- Lifeblood Content Pack --------------------- // // ---------------- Lifeblood Content Pack ------------------------------------------------------------------------------------ //
CheckIfDataTrue(HK.sections.lifeblood, HK.sections.lifeblood.entries, HKPlayerData); CheckIfDataTrue(HK.sections.lifeblood, HK.sections.lifeblood.entries, HKPlayerData);
// ---------------- Godmaster Content Pack --------------------- // // ---------------- Godmaster Content Pack ------------------------------------------------------------------------------------ //
CheckIfDataTrue(HK.sections.godmaster, HK.sections.godmaster.entries, HKPlayerData); CheckIfDataTrue(HK.sections.godmaster, HK.sections.godmaster.entries, HKPlayerData);
// ------------------------- Hunter's Journal ----------------------------- // // ------------------------- Hunter's Journal --------------------------------------------------------------------------------- //
/* Must be checked before Statistics (for correct entry numbers) */ /* Must be checked before Statistics (for correct entry numbers) */
CheckHuntersJournal(HK, "huntersJournal", HKPlayerData); CheckHuntersJournal(HK, "huntersJournal", HKPlayerData);
CheckHuntersJournal(HK, "huntersJournalOptional", HKPlayerData); CheckHuntersJournal(HK, "huntersJournalOptional", HKPlayerData);
// ------------------------- Essential Things ----------------------------- // // ------------------------- Essential Things --------------------------------------------------------------------------------- //
CheckAdditionalThings(HK.sections.essential, HK.sections.essential.entries, HKPlayerData, HKWorldItems); CheckAdditionalThings(HK.sections.essential, HK.sections.essential.entries, HKPlayerData, HKWorldItems);
// ------------------------- Achievements ----------------------------- // // ------------------------- Achievements ------------------------------------------------------------------------------------- //
CheckAdditionalThings(HK.sections.achievements, HK.sections.achievements.entries, HKPlayerData, HKWorldItems); CheckAdditionalThings(HK.sections.achievements, HK.sections.achievements.entries, HKPlayerData, HKWorldItems);
// ------------------------- Game Statistics ----------------------------- // // ------------------------- Game Statistics ---------------------------------------------------------------------------------- //
CheckAdditionalThings(HK.sections.statistics, HK.sections.statistics.entries, HKPlayerData, HKWorldItems, HKSceneData); CheckAdditionalThings(HK.sections.statistics, HK.sections.statistics.entries, HKPlayerData, HKWorldItems, HKSceneData);
// ------------------------- Godhome Statistics ----------------------------- // // ------------------------- Godhome Statistics ------------------------------------------------------------------------------- //
CheckAdditionalThings(HK.sections.godhomeStatistics, HK.sections.godhomeStatistics.entries, HKPlayerData, HKWorldItems, HKSceneData); CheckAdditionalThings(HK.sections.godhomeStatistics, HK.sections.godhomeStatistics.entries, HKPlayerData, HKWorldItems, HKSceneData);
/* ------------------------- Pantheon Statistics ----------------------------- */ /* ------------------------- Pantheon Statistics ------------------------------------------------------------------------------ */
CheckPantheon(HK, "pantheonOfTheMaster", HKPlayerData); CheckPantheon(HK, "pantheonOfTheMaster", HKPlayerData);
CheckPantheon(HK, "pantheonOfTheArtist", HKPlayerData); CheckPantheon(HK, "pantheonOfTheArtist", HKPlayerData);
@ -232,20 +232,22 @@ function HKCheckCompletion(jsonObject, benchStart = performance.now()) {
CheckPantheon(HK, "pantheonOfTheKnight", HKPlayerData); CheckPantheon(HK, "pantheonOfTheKnight", HKPlayerData);
CheckPantheon(HK, "pantheonOfHallownest", HKPlayerData); CheckPantheon(HK, "pantheonOfHallownest", HKPlayerData);
// ------------------------- Hints ----------------------------- // CheckHallOfGods(HK, HKPlayerData);
// ------------------------- Hints ---------------------------------------------------------------------------------------------- //
CheckHintsTrue(HK.sections.hints, HK.sections.hints.entries, HKPlayerData, HKWorldItems); CheckHintsTrue(HK.sections.hints, HK.sections.hints.entries, HKPlayerData, HKWorldItems);
// ------------------------- Extended game completion check ----------------------------- // // ------------------------- Extended game completion check --------------------------------------------------------------------- //
/* Percent completion is filled inside GenerateInnerHTML() using CompletionFill() */ /* Percent completion is filled inside GenerateInnerHTML() using CompletionFill() */
CheckExtendedCompletion(HK); CheckExtendedCompletion(HK);
// ------------------------- Indicate that the save file was loaded and analyzed correctly ----------------------------- // // ------------------------- Indicate that the save file was loaded and analyzed correctly -------------------------------------- //
HK.saveAnalyzed = true; HK.saveAnalyzed = true;
// ------------------------- Generate everything on the page with updated values ----------------------------- // // ------------------------- Generate everything on the page with updated values ------------------------------------------------ //
GenerateInnerHTML(HK); GenerateInnerHTML(HK);
@ -2012,6 +2014,50 @@ function CheckPantheon(db, sectionName, playerData) {
} }
function CheckHallOfGods(db, playerData) {
let section = db.sections.hallOfGods;
let entries = db.sections.hallOfGods.entries;
let check = {};
for (let entry in entries) {
check = playerData[entry];
if (check.completedTier3 === true) {
SetIcon(section, entry, "radiant");
entries[entry].name = entries[entry].nameRadiant;
entries[entry].spoiler = entries[entry].spoilerUnlocked;
}
else if (check.completedTier2 === true) {
SetIcon(section, entry, "ascended");
entries[entry].name = entries[entry].nameAscended;
entries[entry].spoiler = entries[entry].spoilerUnlocked;
}
else if (check.completedTier1 === true) {
SetIcon(section, entry, "attuned");
entries[entry].name = entries[entry].nameAttuned;
entries[entry].spoiler = entries[entry].spoilerUnlocked;
}
else if (check.isUnlocked === true) {
SetIcon(section, entry, "partial");
entries[entry].name = entries[entry].nameUnlocked;
entries[entry].spoiler = entries[entry].spoilerUnlocked;
}
else {
SetIconRed(section, entry);
entries[entry].name = entries[entry].nameDefault;
entries[entry].spoiler = entries[entry].spoilerDefault;
}
}
}
/** /**
* Checks, validates and shows hints to the player depending on their save progression, in chronological order. Shows only hint for the last uncompleted event. If Hollow Knight is defeated, shows a dummy text. * Checks, validates and shows hints to the player depending on their save progression, in chronological order. Shows only hint for the last uncompleted event. If Hollow Knight is defeated, shows a dummy text.

View file

@ -3374,14 +3374,13 @@ const HK = {
statueStateGruzMother: { statueStateGruzMother: {
name: "P1 Gruz Mother", name: "P1 Gruz Mother",
nameDefault: "P1 Gruz Mother", nameDefault: "P1 Gruz Mother",
nameSeen: "P1 Gruz Mother: Seen",
nameUnlocked: "P1 Gruz Mother: Unlocked", nameUnlocked: "P1 Gruz Mother: Unlocked",
nameAttuned: "P1 Gruz Mother: Attuned", nameAttuned: "P1 Gruz Mother: Attuned",
nameAscended: "P1 Gruz Mother: Ascended", nameAscended: "P1 Gruz Mother: Ascended",
nameRadiant: "P1 Gruz Mother: Radiant", nameRadiant: "P1 Gruz Mother: Radiant",
spoiler: "I sleep amongst winding roads", spoiler: "I sleep amongst winding roads",
spoilerDefault: "I sleep amongst winding roads", spoilerDefault: "I sleep amongst winding roads",
spoilerSeen: "Slumbering god of fertility", spoilerUnlocked: "Slumbering god of fertility",
wiki: "Hall_of_Gods#Gruz_Mother" wiki: "Hall_of_Gods#Gruz_Mother"
}, },
}, },