From 8badd26f5f28b8bf258fd5a8b3024481c6b556f8 Mon Sep 17 00:00:00 2001 From: KittenTM Date: Sun, 15 Mar 2026 07:51:12 +0100 Subject: [PATCH] fix up how icons show, edit existing icons --- assets/ability/Blank.png | Bin 0 -> 189 bytes assets/ability/ParameterIcon^q.png | Bin 1083 -> 2120 bytes assets/mapping/ability.json | 2 +- equipment/equipment.js | 47 +++++++++++++++++++++-------- 4 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 assets/ability/Blank.png diff --git a/assets/ability/Blank.png b/assets/ability/Blank.png new file mode 100644 index 0000000000000000000000000000000000000000..8fd35691f795f843686743db7f1c4d2dafe5f1a8 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=EuJopAr*0NuQCcU81OJ{e00C0 zwdUCZ8Ohy0qW}C8ZeTki?4S_GFkgX*1H#g7U|{;lBG4gzfJ>pl!G@9L5$gsf4g~>! lhQc)I$ztaD0e0ssQ5H68!} literal 0 HcmV?d00001 diff --git a/assets/ability/ParameterIcon^q.png b/assets/ability/ParameterIcon^q.png index f016bad49f7b16e97416bb09c0e089c6474d2fae..c55d7de4c5495c27e83bfcdbfbe616576f3ee842 100644 GIT binary patch delta 2108 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 fetch(url).then(r => r.ok ? r.json() : []); - const [clothing, headgear, shoes, weapons] = await Promise.all([ + const [clothing, headgear, shoes, weapons, abilities] = await Promise.all([ fetchJson('/assets/mapping/clothing.json'), fetchJson('/assets/mapping/headgear.json'), fetchJson('/assets/mapping/shoes.json'), - fetchJson('/assets/mapping/weapons.json') + fetchJson('/assets/mapping/weapons.json'), + fetchJson('/assets/mapping/ability.json') ]); - const getImg = (list, id, folder) => { - if (!id) return "/assets/weapons/NotFound^w.png"; - const item = list.find(i => i.id == id); - return (item && item.image) ? `../assets/${folder}/${item.image}` : "/assets/weapons/NotFound^w.png"; + const getImg = (list, id, folder, isAbility = false) => { + const fallback = isAbility ? "../assets/ability/ParameterIcon^q.png" : "/assets/weapons/NotFound^w.png"; + if (id === undefined || id === null) return fallback; + const item = list.find(i => String(i.id) === String(id)); + return (item && item.image) ? `../assets/${folder}/${item.image}` : fallback; }; const weaponImg = getImg(weapons, equipped.weapon, 'weapons'); const headImg = getImg(headgear, equipped.Gear_Head, 'headgear'); const clothesImg = getImg(clothing, equipped.Gear_Clothes, 'clothing'); const shoesImg = getImg(shoes, equipped.Gear_Shoes, 'shoes'); + + const headMain = getImg(abilities, equipped.Gear_Head_Skill0, 'ability', true); + const headSub1 = getImg(abilities, equipped.Gear_Head_Skill1, 'ability', true); + const headSub2 = getImg(abilities, equipped.Gear_Head_Skill2, 'ability', true); + + const clothesMain = getImg(abilities, equipped.Gear_Clothes_Skill0, 'ability', true); + const clothesSub1 = getImg(abilities, equipped.Gear_Clothes_Skill1, 'ability', true); + const clothesSub2 = getImg(abilities, equipped.Gear_Clothes_Skill2, 'ability', true); + + const shoesMain = getImg(abilities, equipped.Gear_Shoes_Skill0, 'ability', true); + const shoesSub1 = getImg(abilities, equipped.Gear_Shoes_Skill1, 'ability', true); + const shoesSub2 = getImg(abilities, equipped.Gear_Shoes_Skill2, 'ability', true); await Promise.all([ preloadImage(miiImgUrl), @@ -104,21 +118,30 @@ window.loadHeader(function(headerContainer) {
+
- +
+
+ " /> +
+
- +
+
+ " /> +
+
- +
-
-
-
+
+ " /> +
`;