Added the journal hunter
This commit is contained in:
parent
f5640da34c
commit
f639e89293
6 changed files with 3656 additions and 3783 deletions
3933
build/app.js
3933
build/app.js
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
|
|
@ -30,14 +30,14 @@ import {
|
|||
|
||||
// ---------------- 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 SOUL_ORB_IMAGE from "../img/soul-orb.png";
|
||||
import NOTCH_IMAGE from "../img/notch.png";
|
||||
import NOTCH_FILLED_IMAGE from "../img/notch-filled.png";
|
||||
import NOTCH_OVERCHARMED_IMAGE from "../img/notch-overcharmed.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 ------------------------------------------------------------------------------------------------------- //
|
||||
|
||||
|
|
@ -48,7 +48,7 @@ const SYMBOL_TRUE = "<i class='icon-ok-squared'></i>"; // "✅ "
|
|||
const SYMBOL_CLOCK = "<i class='icon-clock'></i>"; // "🕑 "
|
||||
const SYMBOL_EMPTY = "<span class='padding-left'></span>";
|
||||
const FLEUR_DIVIDE = "<div class='horizontal-line'></div>";
|
||||
const WIKI_LINK = "https://hollowknight.fandom.com/wiki/";
|
||||
const WIKI_LINK = "https://hollowknightsilksong.wiki.fextralife.com/";
|
||||
|
||||
// ---------------- Variables ------------------------------------------------------------------------------------------------------- //
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ function HKCheckCompletion(jsonObject, benchStart = performance.now()) {
|
|||
|
||||
CheckSilkBar(HK.sections.intro, HKPlayerData.silkMax);
|
||||
|
||||
// ---------------- Charm Notches (Slots) ------------------------------------------------------------------------------------- //
|
||||
// ---------------- Check Crests ------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckCrests(HK.sections.intro, HKPlayerData);
|
||||
|
||||
|
|
@ -149,18 +149,72 @@ function HKCheckCompletion(jsonObject, benchStart = performance.now()) {
|
|||
|
||||
CheckRosary(HK.sections.intro, HKPlayerData.geo, HKPlayerData.HeroCorpseMoneyPool);
|
||||
|
||||
// ---------------- Shell Shards Amount ------------------------------------------------------------------------------------------------ //
|
||||
// ---------------- Shell Shards Amount ------------------------------------------------------------------------------------------------ //
|
||||
|
||||
CheckshellShards(HK.sections.intro, HKPlayerData.ShellShards);
|
||||
|
||||
// ---------------- Crests Crests Crests Crests Crests Crests ---------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.crests, HK.sections.crests.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Needle Upgrades --------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckNeedleUpgrades(HK.sections.NeedleUpgrades, HK.sections.NeedleUpgrades.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Silk Heart --------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.silkHeart, HK.sections.silkHeart.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Tools ---------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.redTools, HK.sections.redTools.entries, HKPlayerData.Tools.savedData);
|
||||
CheckIfDataTrue(HK.sections.blueTools, HK.sections.blueTools.entries, HKPlayerData.Tools.savedData);
|
||||
CheckIfDataTrue(HK.sections.yellowTools, HK.sections.yellowTools.entries, HKPlayerData.Tools.savedData);
|
||||
|
||||
// ---------------- Equipment (Abilities) ------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.equipment, HK.sections.equipment.entries, HKPlayerData.Tools.savedData);
|
||||
|
||||
// ---------------- skills ---------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.skills, HK.sections.skills.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Miscellaneous ---------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.miscellaneous, HK.sections.miscellaneous.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Mask Shards ----------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.maskShards, HK.sections.maskShards.entries, HKPlayerData, HKWorldItems);
|
||||
|
||||
// ---------------- Spool Fragments ------------------------------------------------------------------------------------------ //
|
||||
|
||||
CheckIfDataTrue(HK.sections.spoolFragments, HK.sections.spoolFragments.entries, HKPlayerData, HKWorldItems);
|
||||
|
||||
// ---------------- Crafting Kit Upgrades ------------------------------------------------------------------------------------------ //
|
||||
|
||||
CheckIfDataTrue(HK.sections.craftingKitUpgrades, HK.sections.craftingKitUpgrades.entries, HKPlayerData, HKWorldItems);
|
||||
|
||||
// ---------------- Tool Pouch Upgrades ------------------------------------------------------------------------------------------ //
|
||||
|
||||
CheckIfDataTrue(HK.sections.toolPouchUpgrades, HK.sections.toolPouchUpgrades.entries, HKPlayerData, HKWorldItems);
|
||||
|
||||
// ---------------- flea ---------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.flea, HK.sections.flea.entries, HKPlayerData);
|
||||
|
||||
|
||||
////////////////////////////////////////////////////////// UNDER THIS LINE ARE NOT FINSIHED /////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////// UNDER THIS LINE ARE NOT FINSIHED /////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////// UNDER THIS LINE ARE NOT FINSIHED /////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////// UNDER THIS LINE ARE NOT FINSIHED /////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////// UNDER THIS LINE ARE NOT FINSIHED /////////////////////////////////////////
|
||||
////////////////////////////////////////////////////////// UNDER THIS LINE ARE NOT FINSIHED /////////////////////////////////////////
|
||||
/*
|
||||
// ---------------- Bosses (Base Game) ---------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.bosses, HK.sections.bosses.entries, HKPlayerData, HKWorldItems);
|
||||
|
||||
// ---------------- Charms ---------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.charms, HK.sections.charms.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Colosseum of Fools ---------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.colosseum, HK.sections.colosseum.entries, HKPlayerData);
|
||||
|
|
@ -173,30 +227,11 @@ function HKCheckCompletion(jsonObject, benchStart = performance.now()) {
|
|||
|
||||
CheckIfDataTrue(HK.sections.dreamNail, HK.sections.dreamNail.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Equipment ------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.equipment, HK.sections.equipment.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Nail Upgrades --------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckNailUpgrades(HK.sections.nailUpgrades, HK.sections.nailUpgrades.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Mask Shards ----------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.maskShards, HK.sections.maskShards.entries, HKPlayerData, HKWorldItems);
|
||||
|
||||
// ---------------- Nail Arts ------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckIfDataTrue(HK.sections.nailArts, HK.sections.nailArts.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Spells ---------------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckSpellLevel(HK.sections.spells, HK.sections.spells.entries, HKPlayerData);
|
||||
|
||||
// ---------------- Vessel Fragments ------------------------------------------------------------------------------------------ //
|
||||
|
||||
CheckIfDataTrue(HK.sections.vesselFragments, HK.sections.vesselFragments.entries, HKPlayerData, HKWorldItems);
|
||||
|
||||
// ---------------- Warrior Dreams -------------------------------------------------------------------------------------------- //
|
||||
|
||||
CheckWarriorDreams(HK.sections.warriorDreams, HK.sections.warriorDreams.entries, HKPlayerData);
|
||||
|
|
@ -212,12 +247,12 @@ function HKCheckCompletion(jsonObject, benchStart = performance.now()) {
|
|||
// ---------------- Godmaster Content Pack ------------------------------------------------------------------------------------ //
|
||||
|
||||
CheckIfDataTrue(HK.sections.godmaster, HK.sections.godmaster.entries, HKPlayerData);
|
||||
|
||||
*/
|
||||
// ------------------------- Hunter's Journal --------------------------------------------------------------------------------- //
|
||||
/* Must be checked before Statistics (for correct entry numbers) */
|
||||
|
||||
CheckHuntersJournal(HK, "huntersJournal", HKPlayerData);
|
||||
CheckHuntersJournal(HK, "huntersJournalOptional", HKPlayerData);
|
||||
//CheckHuntersJournal(HK, "huntersJournalOptional", HKPlayerData);
|
||||
|
||||
/*
|
||||
|
||||
|
|
@ -321,13 +356,12 @@ function HKCheckCompletion(jsonObject, benchStart = performance.now()) {
|
|||
|
||||
/* ------------------------- Pantheon Statistics ------------------------------------------------------------------------------ */
|
||||
|
||||
CheckPantheon(HK, "pantheonOfTheMaster", HKPlayerData);
|
||||
CheckPantheon(HK, "pantheonOfTheArtist", HKPlayerData);
|
||||
/*CheckPantheon(HK, "pantheonOfTheArtist", HKPlayerData);
|
||||
CheckPantheon(HK, "pantheonOfTheSage", HKPlayerData);
|
||||
CheckPantheon(HK, "pantheonOfTheKnight", HKPlayerData);
|
||||
CheckPantheon(HK, "pantheonOfHallownest", HKPlayerData);
|
||||
|
||||
CheckHallOfGods(HK, HKPlayerData);
|
||||
CheckHallOfGods(HK, HKPlayerData);*/
|
||||
|
||||
// ------------------------- Hints ---------------------------------------------------------------------------------------------- //
|
||||
|
||||
|
|
@ -431,7 +465,7 @@ function CheckCompletionPercent(section, playerData) {
|
|||
let completionPercentage = Math.round(playerData.completionPercentage);
|
||||
let maxPercent = 0;
|
||||
|
||||
/*
|
||||
|
||||
// Normal (current) game version behaviour: 112%
|
||||
section.maxPercent = section.maxPercentDefault;
|
||||
maxPercent = section.maxPercentDefault;
|
||||
|
|
@ -439,7 +473,7 @@ function CheckCompletionPercent(section, playerData) {
|
|||
|
||||
section.percent = completionPercentage;
|
||||
section.entries.gameCompletion.spoiler = completionPercentage;
|
||||
|
||||
/*
|
||||
// Lifeblood behaviour: 107%
|
||||
if (!playerData.hasOwnProperty("hasGodfinder")) {
|
||||
|
||||
|
|
@ -493,7 +527,8 @@ function CheckExtendedCompletion(db) {
|
|||
case "intro":
|
||||
case "hints":
|
||||
case "huntersJournal":
|
||||
case "huntersJournalOptional":
|
||||
//case "huntersJournalOptional":
|
||||
//case "flea":
|
||||
|
||||
continue;
|
||||
|
||||
|
|
@ -897,7 +932,137 @@ function CheckIfDataTrue(section, dataObject, playerData, worldData = []) {
|
|||
textSuffix = dataObject[i].spoiler;
|
||||
(dataObject[i].hasOwnProperty("wiki")) ? wiki = dataObject[i].wiki: wiki = ""; */
|
||||
|
||||
switch (i) {
|
||||
if (section.id === "hk-redTools"
|
||||
|| section.id === "hk-blueTools"
|
||||
|| section.id === "hk-yellowTools"
|
||||
|| section.id === "hk-equipment")
|
||||
{
|
||||
switch (i)
|
||||
{
|
||||
case "webShot":
|
||||
//check if he have any type of webshot which count as 1% (the player cant have multiple of it)
|
||||
let foundArchitect = playerData.find(playerData => playerData.Name === "WebShot Architect");
|
||||
let foundForge = playerData.find(playerData => playerData.Name === "WebShot Forge");
|
||||
let foundWeaver = playerData.find(playerData => playerData.Name === "WebShot Weaver");
|
||||
((foundArchitect !== undefined && foundArchitect.Data.IsUnlocked === true)
|
||||
|| (foundForge !== undefined && foundForge.Data.IsUnlocked === true)
|
||||
|| (foundWeaver !== undefined && foundWeaver.Data.IsUnlocked === true)
|
||||
) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
|
||||
break;
|
||||
|
||||
case "curveClaws":
|
||||
//check if he have any type of curveClaws which count as 1% (normal or upgraded one)
|
||||
let foundClaws = playerData.find(playerData => playerData.Name === "Curve Claws");
|
||||
let foundClawsUpgrade = playerData.find(playerData => playerData.Name === "Curve Claws Upgraded");
|
||||
((foundClaws !== undefined && foundClaws.Data.IsUnlocked === true)
|
||||
|| (foundClawsUpgrade !== undefined && foundClawsUpgrade.Data.IsUnlocked === true)
|
||||
) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
|
||||
break;
|
||||
|
||||
case "mosscreepTool":
|
||||
//check if he have any type of Mosscreep which count as 1% (normal or upgraded one)
|
||||
let foundMosscreep = playerData.find(playerData => playerData.Name === "Mosscreep Tool 1");
|
||||
let foundMosscreepUpgrade = playerData.find(playerData => playerData.Name === "Mosscreep Tool 2");
|
||||
((foundMosscreep !== undefined && foundMosscreep.Data.IsUnlocked === true)
|
||||
|| (foundMosscreepUpgrade !== undefined && foundMosscreepUpgrade.Data.IsUnlocked === true)
|
||||
) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
|
||||
break;
|
||||
|
||||
case "DazzleBind":
|
||||
//check if he have any type of Dazzle Bind which count as 1% (normal or upgraded one)
|
||||
let foundDazzle = playerData.find(playerData => playerData.Name === "Dazzle Bind");
|
||||
let foundDazzleUpgrade = playerData.find(playerData => playerData.Name === "Dazzle Bind Upgraded");
|
||||
((foundDazzle !== undefined && foundDazzle.Data.IsUnlocked === true)
|
||||
|| (foundDazzleUpgrade !== undefined && foundDazzleUpgrade.Data.IsUnlocked === true)
|
||||
) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
|
||||
break;
|
||||
|
||||
case "deadMansPurse":
|
||||
//check if he have any type of Bomb for normal and steel mod which count as 1% (normal or upgraded one)
|
||||
let foundBombNormal = playerData.find(playerData => playerData.Name === "Dead Mans Purse");
|
||||
let foundBombSteel = playerData.find(playerData => playerData.Name === "Shell Satchel");
|
||||
((foundBombNormal !== undefined && foundBombNormal.Data.IsUnlocked === true)
|
||||
|| (foundBombSteel !== undefined && foundBombSteel.Data.IsUnlocked === true)
|
||||
) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
|
||||
break;
|
||||
|
||||
|
||||
|
||||
default:
|
||||
let foundData = playerData.find(playerData => playerData.Name === dataObject[i].id);
|
||||
(foundData !== undefined && foundData.Data.IsUnlocked === true) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
// CHECK SILK HEART
|
||||
else if (section.id === "hk-silkHeart")
|
||||
{
|
||||
let exist = playerData.scenesVisited.indexOf(i);
|
||||
(exist >= 0) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
}
|
||||
//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")
|
||||
{
|
||||
switch (i) {
|
||||
//buy from sellers
|
||||
case "PurchasedBonebottomHeartPiece":
|
||||
case "MerchantEnclaveShellFragment":
|
||||
case "PurchasedBelltownSpoolSegment":
|
||||
case "MetCaravanTroupeLeaderJudge":
|
||||
case "MerchantEnclaveSpoolPiece":
|
||||
case "purchasedGrindleSpoolPiece":
|
||||
case "PurchasedForgeToolKit":
|
||||
case "PurchasedArchitectToolKit":
|
||||
case "purchasedGrindleToolKit":
|
||||
case "PurchasedPilgrimsRestToolPouch":
|
||||
(playerData[i] === true) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
break;
|
||||
|
||||
//Finishing wishes
|
||||
case "beastflyHuntWish":
|
||||
case "sprintmasterRaceWish":
|
||||
case "destroyThreadCoresWish":
|
||||
case "destroyThreadCoresWish":
|
||||
case "antTrapperWish":
|
||||
case "saveShermaWish":
|
||||
case "crowFeathersWish":
|
||||
case "journalWish":
|
||||
let wishList = playerData.QuestCompletionData.savedData;
|
||||
let foundWish = wishList.find(wishList => wishList.Name === dataObject[i].sceneName);
|
||||
(foundWish !== undefined && foundWish.Data.IsCompleted === true) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
break;
|
||||
|
||||
//I hate that caravan....
|
||||
case "CaravanTroupeLocation":
|
||||
(playerData[i] === 3) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
break;
|
||||
|
||||
//World Scene
|
||||
default:
|
||||
let sceneList = worldData.serializedList;
|
||||
let sceneInfo = sceneList.find(sceneList => sceneList.SceneName === dataObject[i].sceneName && sceneList.ID === dataObject[i].id);
|
||||
(sceneInfo !== undefined && sceneInfo.Value === true) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
break;
|
||||
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
/*switch (i) {
|
||||
case "gotCharm_36":
|
||||
// prevents green checkbox and adding 1% when only got one white fragment
|
||||
(playerData.gotQueenFragment === true && playerData.gotKingFragment === true) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
|
|
@ -916,7 +1081,7 @@ function CheckIfDataTrue(section, dataObject, playerData, worldData = []) {
|
|||
if (playerData.hasOwnProperty(i) === false) {
|
||||
SetIconNone(section, i);
|
||||
dataObject[i].disabled = true;
|
||||
/* textPrefix = `<del>${textPrefix}</del>`; */
|
||||
//textPrefix = `<del>${textPrefix}</del>`;
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -925,7 +1090,7 @@ function CheckIfDataTrue(section, dataObject, playerData, worldData = []) {
|
|||
if (i === "grimmChildLevel") {
|
||||
// (playerData.grimmChildLevel >= 4) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
|
||||
/* Check if Nightmare King or Banishment by looking at grimmChildLevel */
|
||||
// Check if Nightmare King or Banishment by looking at grimmChildLevel
|
||||
switch (playerData[i]) {
|
||||
|
||||
case 4:
|
||||
|
|
@ -1049,7 +1214,7 @@ function CheckIfDataTrue(section, dataObject, playerData, worldData = []) {
|
|||
if (checkText === "PropertyNotFound") {
|
||||
SetIconNone(section, i);
|
||||
dataObject[i].disabled = true;
|
||||
/* textPrefix = `<del>${textPrefix}</del>`; */
|
||||
//textPrefix = `<del>${textPrefix}</del>`;
|
||||
break;
|
||||
|
||||
} else if (checkText === "PantheonCompleted") {
|
||||
|
|
@ -1063,6 +1228,8 @@ function CheckIfDataTrue(section, dataObject, playerData, worldData = []) {
|
|||
|
||||
default:
|
||||
(playerData[i] === true) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
}*/
|
||||
(playerData[i] === true) ? SetIconGreen(section, i): SetIconRed(section, i);
|
||||
}
|
||||
|
||||
/* sFillText += PrepareHTMLString(section, textPrefix, textSuffix, wiki); */
|
||||
|
|
@ -1141,22 +1308,22 @@ function CheckGodmasterDoors(dataObject, playerData) {
|
|||
}
|
||||
|
||||
/**
|
||||
* Verifies the level of player's nail upgrades, and appends HTML accordingly.
|
||||
* Verifies the level of player's needle upgrades, and appends HTML accordingly.
|
||||
* @param {object} section ID of the HTML element for data appending
|
||||
* @param {object} dataObject Object containing nail upgrades data to be verified
|
||||
* @param {object} dataObject Object containing needle upgrades data to be verified
|
||||
* @param {object} playerData Reference/pointer to specific data where to search in the save file
|
||||
*/
|
||||
function CheckNailUpgrades(section, dataObject, playerData) {
|
||||
function CheckNeedleUpgrades(section, dataObject, playerData) {
|
||||
|
||||
// appends "Nail" to every array element
|
||||
// same as names in the database object
|
||||
let nail = ["old", "sharpened", "channeled", "coiled", "pure"].map((element) => element + "Nail");
|
||||
let Needle = ["starting", "sharpened", "shining", "hivesteel", "paleSteel"].map((element) => element + "Needle");
|
||||
|
||||
let sFillText = "";
|
||||
|
||||
for (let i = 0; i < 5; i++) {
|
||||
(playerData.nailSmithUpgrades >= i) ? SetIconGreen(section, nail[i]): SetIconRed(section, nail[i]);
|
||||
sFillText += PrepareHTMLString(section, dataObject[nail[i]].name, dataObject[nail[i]].spoiler, dataObject[nail[i]].wiki);
|
||||
(playerData.nailUpgrades >= i) ? SetIconGreen(section, Needle[i]): SetIconRed(section, Needle[i]);
|
||||
sFillText += PrepareHTMLString(section, dataObject[Needle[i]].name, dataObject[Needle[i]].spoiler, dataObject[Needle[i]].wiki);
|
||||
}
|
||||
if (section.percent) section.percent--; // subject one for the Old Nail
|
||||
}
|
||||
|
|
@ -2017,136 +2184,39 @@ function CheckHuntersJournal(db, sectionName, playerData) {
|
|||
|
||||
let section = db.sections[sectionName];
|
||||
let entries = db.sections[sectionName].entries;
|
||||
let entriesStatistics = db.sections.statistics.entries;
|
||||
//let entriesStatistics = db.sections.statistics.entries; // Alba: disabled for future use
|
||||
let name = "";
|
||||
let nameDefault = "";
|
||||
let amountKillsLeft = 0;
|
||||
let journalPlayerList = playerData.EnemyJournalKillData.list
|
||||
|
||||
for (let entry in entries) {
|
||||
|
||||
name = entries[entry].nameDefault;
|
||||
nameDefault = entries[entry].nameDefault;
|
||||
let MonsterInfo = journalPlayerList.find(journalPlayerList => journalPlayerList.Name === entries[entry].databaseName);
|
||||
|
||||
entries[entry].name = nameDefault;
|
||||
|
||||
/* Entry Shade always unlocked */
|
||||
if (entry === "ShadeJournal") {
|
||||
//recorded and founded and reached to the requirement
|
||||
if (MonsterInfo !== undefined
|
||||
&& MonsterInfo.Record.Kills >= entries[entry].killRequire)
|
||||
{
|
||||
entries[entry].name = entries[entry].gameName;
|
||||
SetIconGreen(section, entry);
|
||||
|
||||
/* Proceed to next entry immediately */
|
||||
continue;
|
||||
}
|
||||
|
||||
if (playerData.hasOwnProperty(`kills${entry}`)) {
|
||||
|
||||
switch (entry) {
|
||||
|
||||
case "GreyPrince":
|
||||
case "ZotelingBalloon":
|
||||
case "ZotelingHopper":
|
||||
case "ZotelingBuzzer":
|
||||
|
||||
/* When Zote == OFF (Neglect route), fade the entry and move to the next iteration */
|
||||
if (playerData.zoteDead === true || (playerData.zoteRescuedBuzzer === false && playerData.hasWalljump === true)) {
|
||||
|
||||
entries[entry].disabled = true;
|
||||
entries[entry].name = nameDefault;
|
||||
SetIconNone(section, entry);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "FlameBearerLarge":
|
||||
|
||||
/* If the troupe was banished and the player didn't defeat any Grimmkin Nightmare, then it's entry cannot be obtained on this save */
|
||||
if (playerData.destroyedNightmareLantern === true && playerData.killedFlameBearerLarge === false) {
|
||||
|
||||
entries[entry].disabled = true;
|
||||
entries[entry].name = nameDefault;
|
||||
SetIconNone(section, entry);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
case "NightmareGrimm":
|
||||
|
||||
/* if the troupe was banished, the Nightmare King entry cannot be obtained on this save */
|
||||
if (playerData.destroyedNightmareLantern === true) {
|
||||
|
||||
entries[entry].disabled = true;
|
||||
entries[entry].name = nameDefault;
|
||||
SetIconNone(section, entry);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
amountKillsLeft = playerData[`kills${entry}`];
|
||||
|
||||
/* When the Hunter's Note is unlocked, the entry has a green symbol */
|
||||
if (amountKillsLeft === 0) {
|
||||
|
||||
SetIconGreen(section, entry);
|
||||
|
||||
/* If not, show how many remain to defeat in the name */
|
||||
} else {
|
||||
|
||||
name += ` (${amountKillsLeft})`;
|
||||
}
|
||||
// didnt reach the limit but at least kill him once.
|
||||
else if (MonsterInfo !== undefined
|
||||
&& MonsterInfo.Record.Kills >= 1)
|
||||
{
|
||||
name = entries[entry].gameName + ` (${(entries[entry].killRequire-MonsterInfo.Record.Kills)})`;
|
||||
entries[entry].name = name;
|
||||
|
||||
/* When killed at least 1, the entry has a gray symbol */
|
||||
if (playerData[`killed${entry}`] === true) {
|
||||
|
||||
SetIconPartialJournal(section, entry);
|
||||
|
||||
/* When not killed, the entry is undiscovered */
|
||||
} else {
|
||||
|
||||
SetIconRed(section, entry);
|
||||
}
|
||||
}
|
||||
|
||||
/* Void Idol backwards compatibility */
|
||||
if (entry === "VoidIdol_1") {
|
||||
if (playerData.killedVoidIdol_1 === false &&
|
||||
(playerData.killedVoidIdol_2 === true || playerData.killedVoidIdol_3 === true)) {
|
||||
|
||||
SetIconGreen(section, entry);
|
||||
entries[entry].name = nameDefault;
|
||||
}
|
||||
}
|
||||
|
||||
/* Earlier save files backwards compatibility (no undefined) */
|
||||
} else {
|
||||
|
||||
amountKillsLeft = 0;
|
||||
entries[entry].disabled = true;
|
||||
entries[entry].name = name;
|
||||
|
||||
/* Subtract one from maximum of journal entries (for extended completion and green icons) */
|
||||
switch (entry) {
|
||||
case "VoidIdol_1":
|
||||
case "VoidIdol_2":
|
||||
case "VoidIdol_3":
|
||||
case "BindingSeal":
|
||||
case "GodseekerMask":
|
||||
|
||||
break;
|
||||
|
||||
default:
|
||||
|
||||
entriesStatistics.journalEntriesCompleted.max--;
|
||||
entriesStatistics.journalNotesCompleted.max--;
|
||||
}
|
||||
|
||||
SetIconNone(section, entry);
|
||||
SetIconPartialJournal(section, entry);
|
||||
}
|
||||
else
|
||||
{
|
||||
name = entries[entry].gameName + ` (${(entries[entry].killRequire)})`;
|
||||
entries[entry].name = name;
|
||||
SetIconRed(section, entry);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
|
|
@ -16,12 +16,6 @@ import MAP from "./hk-dictionary.js";
|
|||
case "hk-hints":
|
||||
break;
|
||||
|
||||
case "hk-equipment":
|
||||
|
||||
// double % for equipment
|
||||
section.percent += 2;
|
||||
break;
|
||||
|
||||
// Hunter's Journal entries
|
||||
case "hk-journal":
|
||||
section.percent++;
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ const SYMBOL_ASCENDED = "<i class='reznoricon-ascended'></i>"; // Ascended
|
|||
const SYMBOL_RADIANT = "<i class='reznoricon-radiant'></i>"; // Radiant
|
||||
const SYMBOL_EMPTY = "<span class='padding-left'></span>"; // No symbol
|
||||
const FLEUR_DIVIDE = "<div class='horizontal-line'></div>";
|
||||
const WIKI_LINK = "https://hollowknight.fandom.com/wiki/";
|
||||
const WIKI_LINK = "https://hollowknightsilksong.wiki.fextralife.com/";
|
||||
|
||||
const ROOT = document.documentElement;
|
||||
const SCROLL_BUTTON = document.querySelector(".scroll-up-button");
|
||||
|
|
@ -191,8 +191,6 @@ function GenerateInnerHTML(db) {
|
|||
let witchCrestImage = `<img src='${WITCH_CREST_IMAGE}' class='crest' alt='Witch image' title='Witch Crest'>`;
|
||||
|
||||
|
||||
SHELL_SHARDS_IMAGE
|
||||
|
||||
/* ############################## create all main entries ########################################################################## */
|
||||
|
||||
|
||||
|
|
@ -206,18 +204,18 @@ function GenerateInnerHTML(db) {
|
|||
switch (section) {
|
||||
|
||||
/* Main % */
|
||||
case "bosses":
|
||||
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>`,
|
||||
//`<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-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-statistics" name="statistics" class="button tab-switch" type="button">Statistics</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-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>`,
|
||||
`</div>`,
|
||||
].join("\n");
|
||||
|
||||
|
|
@ -226,11 +224,11 @@ function GenerateInnerHTML(db) {
|
|||
break;
|
||||
|
||||
/* Essentials % */
|
||||
case "essentialsCollectibles":
|
||||
/*case "essentialsCollectibles":
|
||||
|
||||
textFill += `<div id="tab-essentials" class="large-section">`;
|
||||
|
||||
break;
|
||||
break;*/
|
||||
|
||||
/* Journal */
|
||||
case "huntersJournal":
|
||||
|
|
@ -240,37 +238,37 @@ function GenerateInnerHTML(db) {
|
|||
break;
|
||||
|
||||
/* Collectibles */
|
||||
case "charmNotches":
|
||||
case "flea":
|
||||
|
||||
textFill += `<div id="tab-collectibles" class="large-section">`;
|
||||
|
||||
break;
|
||||
|
||||
/* Geo Caches */
|
||||
case "geoChests":
|
||||
/*case "geoChests":
|
||||
|
||||
textFill += `<div id="tab-geocaches" class="large-section">`;
|
||||
|
||||
break;
|
||||
break;*/
|
||||
|
||||
/* Secrets */
|
||||
case "worldInteractions":
|
||||
/*case "worldInteractions":
|
||||
|
||||
textFill += `<div id="tab-secrets" class="large-section">`;
|
||||
|
||||
break;
|
||||
break;*/
|
||||
|
||||
/* Statistics */
|
||||
case "statistics":
|
||||
/*case "statistics":
|
||||
|
||||
textFill += `<div id="tab-statistics" class="large-section">`;
|
||||
|
||||
break;
|
||||
break;*/
|
||||
|
||||
/* Godmaster */
|
||||
case "godhomeStatistics":
|
||||
/*case "godhomeStatistics":
|
||||
|
||||
textFill += `<div id="tab-godhome" class="large-section">`;
|
||||
textFill += `<div id="tab-godhome" class="large-section">`;*/
|
||||
|
||||
break;
|
||||
}
|
||||
|
|
@ -677,14 +675,18 @@ function GenerateInnerHTML(db) {
|
|||
switch (section) {
|
||||
|
||||
/* ending the tabs */
|
||||
case "godmaster": // Main %
|
||||
case "toolPouchUpgrades": // Main %
|
||||
case "huntersJournal": // Journal
|
||||
case "flea": // Collectibles
|
||||
|
||||
/*case "toolPouchUpgrades": // Main %
|
||||
case "achievementsBosses": // Essentials %
|
||||
case "huntersJournalOptional": // Journal
|
||||
case "huntersJournal": // Journal
|
||||
case "items": // Collectibles
|
||||
case "geoRocks": // Geo Caches
|
||||
case "corniferNotes": // Secrets
|
||||
case "statistics": // Statistics
|
||||
case "hallOfGods": // Godmaster
|
||||
case "hallOfGods": // Godmaster*/
|
||||
|
||||
finalHTMLFill += `</div>`;
|
||||
|
||||
|
|
@ -760,13 +762,25 @@ function CompletionFillNoSave(section) {
|
|||
switch (section.id) {
|
||||
|
||||
case "hk-intro":
|
||||
case "hk-bosses":
|
||||
case "hk-charms":
|
||||
case "hk-crests":
|
||||
case "hk-Needleupgrades":
|
||||
case "hk-redTools":
|
||||
case "hk-blueTools":
|
||||
case "hk-yellowTools":
|
||||
case "hk-equipment":
|
||||
case "hk-skills":
|
||||
case "hk-silkHeart":
|
||||
case "hk-miscellaneous":
|
||||
case "hk-spoolFragments":
|
||||
case "hk-maskshards":
|
||||
case "hk-craftingKitUpgrades":
|
||||
case "hk-toolPouchUpgrades":
|
||||
|
||||
/*case "hk-charms":
|
||||
case "hk-bosses":
|
||||
case "hk-nailupgrades":
|
||||
case "hk-nailarts":
|
||||
case "hk-spells":
|
||||
case "hk-maskshards":
|
||||
case "hk-vesselfragments":
|
||||
case "hk-dreamnail":
|
||||
case "hk-warriordreams":
|
||||
|
|
@ -774,7 +788,7 @@ function CompletionFillNoSave(section) {
|
|||
case "hk-colosseum":
|
||||
case "hk-grimmtroupe":
|
||||
case "hk-lifeblood":
|
||||
case "hk-godmaster":
|
||||
case "hk-godmaster":*/
|
||||
|
||||
symbol = "%";
|
||||
|
||||
|
|
@ -839,9 +853,9 @@ function CompletionFill(section) {
|
|||
if (section.id === "hk-maskshards") {
|
||||
let perc = section.percent;
|
||||
(perc % 4) ? cp = Math.floor(perc / 4): cp = perc / 4;
|
||||
} else if (section.id === "hk-vesselfragments") {
|
||||
} else if (section.id === "hk-spoolFragments") {
|
||||
let perc = section.percent;
|
||||
(perc % 3) ? cp = Math.floor(perc / 3): cp = perc / 3;
|
||||
(perc % 2) ? cp = Math.floor(perc / 2): cp = perc / 2;
|
||||
}
|
||||
|
||||
// switches the box to red when a section (h2) is 0
|
||||
|
|
@ -883,21 +897,34 @@ function CompletionFill(section) {
|
|||
symbol = "%";
|
||||
|
||||
break;
|
||||
case "hk-intro":
|
||||
case "hk-crests":
|
||||
case "hk-Needleupgrades":
|
||||
case "hk-redTools":
|
||||
case "hk-blueTools":
|
||||
case "hk-yellowTools":
|
||||
case "hk-equipment":
|
||||
case "hk-skills":
|
||||
case "hk-silkHeart":
|
||||
case "hk-miscellaneous":
|
||||
case "hk-spoolFragments":
|
||||
case "hk-maskshards":
|
||||
case "hk-craftingKitUpgrades":
|
||||
case "hk-toolPouchUpgrades":
|
||||
|
||||
/*case "hk-charms":
|
||||
case "hk-bosses":
|
||||
case "hk-charms":
|
||||
case "hk-equipment":
|
||||
case "hk-nailupgrades":
|
||||
case "hk-nailarts":
|
||||
case "hk-spells":
|
||||
case "hk-maskshards":
|
||||
case "hk-vesselfragments":
|
||||
case "hk-dreamnail":
|
||||
case "hk-warriordreams":
|
||||
case "hk-dreamers":
|
||||
case "hk-colosseum":
|
||||
case "hk-grimmtroupe":
|
||||
case "hk-lifeblood":
|
||||
case "hk-godmaster":
|
||||
case "hk-nailupgrades":
|
||||
case "hk-nailarts":
|
||||
case "hk-spells":
|
||||
case "hk-vesselfragments":
|
||||
case "hk-dreamnail":
|
||||
case "hk-warriordreams":
|
||||
case "hk-dreamers":
|
||||
case "hk-colosseum":
|
||||
case "hk-grimmtroupe":
|
||||
case "hk-lifeblood":
|
||||
case "hk-godmaster":*/
|
||||
|
||||
symbol = "%";
|
||||
|
||||
|
|
|
|||
Loading…
Reference in a new issue