poi-plugin-compass 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +79 -0
- package/air-status.js +28 -0
- package/assets/compass.css +647 -0
- package/assets/kcnav/icons/map_common/136.png +0 -0
- package/assets/kcnav/icons/map_common/137.png +0 -0
- package/assets/kcnav/icons/map_common/19.png +0 -0
- package/assets/kcnav/icons/map_main/17.png +0 -0
- package/assets/kcnav/icons/map_main/18.png +0 -0
- package/assets/kcnav/icons/map_main/40.png +0 -0
- package/assets/kcnav/icons/map_main/42.png +0 -0
- package/assets/kcnav/icons/map_main/46.png +0 -0
- package/assets/kcnav/icons/map_main/47.png +0 -0
- package/assets/kcnav/icons/map_main/48.png +0 -0
- package/assets/kcnav/icons/map_main/53.png +0 -0
- package/assets/kcnav/icons/map_main/54.png +0 -0
- package/assets/kcnav/icons/map_main/62.png +0 -0
- package/assets/kcnav/maps/1-1.webp +0 -0
- package/assets/kcnav/maps/1-2.webp +0 -0
- package/assets/kcnav/maps/1-3.webp +0 -0
- package/assets/kcnav/maps/1-4.webp +0 -0
- package/assets/kcnav/maps/1-5.webp +0 -0
- package/assets/kcnav/maps/1-6.webp +0 -0
- package/assets/kcnav/maps/2-1.webp +0 -0
- package/assets/kcnav/maps/2-2.webp +0 -0
- package/assets/kcnav/maps/2-3.webp +0 -0
- package/assets/kcnav/maps/2-4.webp +0 -0
- package/assets/kcnav/maps/2-5.webp +0 -0
- package/assets/kcnav/maps/3-1.webp +0 -0
- package/assets/kcnav/maps/3-2.webp +0 -0
- package/assets/kcnav/maps/3-3.webp +0 -0
- package/assets/kcnav/maps/3-4.webp +0 -0
- package/assets/kcnav/maps/3-5.webp +0 -0
- package/assets/kcnav/maps/4-1.webp +0 -0
- package/assets/kcnav/maps/4-2.webp +0 -0
- package/assets/kcnav/maps/4-3.webp +0 -0
- package/assets/kcnav/maps/4-4.webp +0 -0
- package/assets/kcnav/maps/4-5.webp +0 -0
- package/assets/kcnav/maps/5-1.webp +0 -0
- package/assets/kcnav/maps/5-2.webp +0 -0
- package/assets/kcnav/maps/5-3.webp +0 -0
- package/assets/kcnav/maps/5-4.webp +0 -0
- package/assets/kcnav/maps/5-5.webp +0 -0
- package/assets/kcnav/maps/5-6.webp +0 -0
- package/assets/kcnav/maps/6-1.webp +0 -0
- package/assets/kcnav/maps/6-2.webp +0 -0
- package/assets/kcnav/maps/6-3.webp +0 -0
- package/assets/kcnav/maps/6-4.webp +0 -0
- package/assets/kcnav/maps/6-5.webp +0 -0
- package/assets/kcnav/maps/7-1.webp +0 -0
- package/assets/kcnav/maps/7-2.webp +0 -0
- package/assets/kcnav/maps/7-3.webp +0 -0
- package/assets/kcnav/maps/7-4.webp +0 -0
- package/assets/kcnav/maps/7-5.webp +0 -0
- package/data/kc3kai-master-ids.json +1 -0
- package/data/kc3kai-ship-stats.json +21545 -0
- package/data/kcnav-node-types-by-map.json +606 -0
- package/data/kcnav-node-types.json +176 -0
- package/data/los-config.json +42 -0
- package/data/maps.json +590 -0
- package/data/normal-maps.json +1590 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-1/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-1/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-1/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-2/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-2/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-2/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-2/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-3/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-3/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-3/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-3/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-4/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-4/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-4/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-4/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-4/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-4/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-5/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-5/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-5/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-5/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-5/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-5/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-5/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-5/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/1-6/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-1/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-1/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-1/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-1/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-1/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-2/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-2/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-2/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-2/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-2/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-3/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-3/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-3/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-3/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-3/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-3/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-3/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-4/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-4/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-4/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-4/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-4/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-4/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-4/P.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-5/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-5/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-5/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-5/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-5/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-5/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/2-5/O.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-1/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-1/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-1/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-1/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-1/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-2/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-2/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-2/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-2/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-2/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-2/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-3/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-3/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-3/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-3/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-3/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-3/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-4/P.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-5/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-5/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-5/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-5/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-5/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-5/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/3-5/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-1/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-1/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-1/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-1/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-1/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-1/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-1/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-2/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-2/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-2/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-2/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-2/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-2/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-2/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-2/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-3/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-4/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-4/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-4/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-4/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-4/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-4/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-4/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-4/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/O.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/S.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/4-5/T.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-1/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-1/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-1/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-1/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-1/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-1/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-2/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-2/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-2/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-2/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-2/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-2/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-2/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-2/O.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-3/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-3/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-3/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-3/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-3/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-3/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-3/P.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-3/Q.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-4/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-4/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-4/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-4/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-4/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-4/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-4/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-4/P.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/P.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-5/S.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/A1.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/A2.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/C1.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/C2.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/K1.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/K2.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/P.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/Q.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/Q1.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/Q2.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/T.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/U.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/V.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/W.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/X.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/5-6/Z.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-1/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-1/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-1/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-1/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-1/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-1/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-1/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-2/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-2/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-2/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-2/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-2/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-2/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-2/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-3/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-3/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-3/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-3/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-3/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-3/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-4/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/6-5/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-1/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-1/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-1/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-1/F.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-1/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-1/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-1/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-2/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-2/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-2/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-2/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-2/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-2/I.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-2/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-2/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-3/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-3/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-3/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-3/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-3/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-3/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-3/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-3/P.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/H.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-4/P.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/A.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/B.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/C.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/D.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/E.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/G.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/J.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/K.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/L.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/M.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/N.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/Q.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/R.json +1 -0
- package/data/sources/kcnav/enemies/2026-08-11_2026-09-11/7-5/T.json +1 -0
- package/data/sources/kcnav/enemies/manifest.json +2120 -0
- package/data/sources/kcnav/maps/1-1.json +175 -0
- package/data/sources/kcnav/maps/1-2.json +277 -0
- package/data/sources/kcnav/maps/1-3.json +517 -0
- package/data/sources/kcnav/maps/1-4.json +652 -0
- package/data/sources/kcnav/maps/1-5.json +553 -0
- package/data/sources/kcnav/maps/1-6.json +668 -0
- package/data/sources/kcnav/maps/2-1.json +451 -0
- package/data/sources/kcnav/maps/2-2.json +557 -0
- package/data/sources/kcnav/maps/2-3.json +757 -0
- package/data/sources/kcnav/maps/2-4.json +817 -0
- package/data/sources/kcnav/maps/2-5.json +779 -0
- package/data/sources/kcnav/maps/3-1.json +379 -0
- package/data/sources/kcnav/maps/3-2.json +588 -0
- package/data/sources/kcnav/maps/3-3.json +654 -0
- package/data/sources/kcnav/maps/3-4.json +910 -0
- package/data/sources/kcnav/maps/3-5.json +643 -0
- package/data/sources/kcnav/maps/4-1.json +561 -0
- package/data/sources/kcnav/maps/4-2.json +664 -0
- package/data/sources/kcnav/maps/4-3.json +867 -0
- package/data/sources/kcnav/maps/4-4.json +690 -0
- package/data/sources/kcnav/maps/4-5.json +1232 -0
- package/data/sources/kcnav/maps/5-1.json +517 -0
- package/data/sources/kcnav/maps/5-2.json +791 -0
- package/data/sources/kcnav/maps/5-3.json +889 -0
- package/data/sources/kcnav/maps/5-4.json +851 -0
- package/data/sources/kcnav/maps/5-5.json +1070 -0
- package/data/sources/kcnav/maps/5-6.json +3200 -0
- package/data/sources/kcnav/maps/6-1.json +527 -0
- package/data/sources/kcnav/maps/6-2.json +717 -0
- package/data/sources/kcnav/maps/6-3.json +501 -0
- package/data/sources/kcnav/maps/6-4.json +870 -0
- package/data/sources/kcnav/maps/6-5.json +814 -0
- package/data/sources/kcnav/maps/7-1.json +640 -0
- package/data/sources/kcnav/maps/7-2.json +976 -0
- package/data/sources/kcnav/maps/7-3.json +1529 -0
- package/data/sources/kcnav/maps/7-4.json +1000 -0
- package/data/sources/kcnav/maps/7-5.json +1570 -0
- package/data/sources/kcnav/maps/manifest.json +340 -0
- package/data/sources/kcwiki/routes/1-1.wiki +2 -0
- package/data/sources/kcwiki/routes/1-2.wiki +1 -0
- package/data/sources/kcwiki/routes/1-3.wiki +1 -0
- package/data/sources/kcwiki/routes/1-4.wiki +1 -0
- package/data/sources/kcwiki/routes/1-5.wiki +1 -0
- package/data/sources/kcwiki/routes/1-6.wiki +1 -0
- package/data/sources/kcwiki/routes/2-1.wiki +1 -0
- package/data/sources/kcwiki/routes/2-2.wiki +1 -0
- package/data/sources/kcwiki/routes/2-3.wiki +1 -0
- package/data/sources/kcwiki/routes/2-4.wiki +81 -0
- package/data/sources/kcwiki/routes/2-5.wiki +1 -0
- package/data/sources/kcwiki/routes/3-1.wiki +1 -0
- package/data/sources/kcwiki/routes/3-2.wiki +1 -0
- package/data/sources/kcwiki/routes/3-3.wiki +1 -0
- package/data/sources/kcwiki/routes/3-4.wiki +1 -0
- package/data/sources/kcwiki/routes/3-5.wiki +1 -0
- package/data/sources/kcwiki/routes/4-1.wiki +1 -0
- package/data/sources/kcwiki/routes/4-2.wiki +1 -0
- package/data/sources/kcwiki/routes/4-3.wiki +1 -0
- package/data/sources/kcwiki/routes/4-4.wiki +1 -0
- package/data/sources/kcwiki/routes/4-5.wiki +1 -0
- package/data/sources/kcwiki/routes/5-1.wiki +57 -0
- package/data/sources/kcwiki/routes/5-2.wiki +1 -0
- package/data/sources/kcwiki/routes/5-3.wiki +1 -0
- package/data/sources/kcwiki/routes/5-4.wiki +1 -0
- package/data/sources/kcwiki/routes/5-5.wiki +80 -0
- package/data/sources/kcwiki/routes/5-6.wiki +753 -0
- package/data/sources/kcwiki/routes/6-1.wiki +1 -0
- package/data/sources/kcwiki/routes/6-2.wiki +1 -0
- package/data/sources/kcwiki/routes/6-3.wiki +1 -0
- package/data/sources/kcwiki/routes/6-4.wiki +1 -0
- package/data/sources/kcwiki/routes/6-5.wiki +1 -0
- package/data/sources/kcwiki/routes/7-1.wiki +1 -0
- package/data/sources/kcwiki/routes/7-2.wiki +1 -0
- package/data/sources/kcwiki/routes/7-3.wiki +1 -0
- package/data/sources/kcwiki/routes/7-4.wiki +1 -0
- package/data/sources/kcwiki/routes/7-5.wiki +1 -0
- package/data/sources/kcwiki/routes/README.md +11 -0
- package/data/sources/kcwiki/routes/manifest.json +450 -0
- package/docs/research.md +445 -0
- package/docs/sources.md +85 -0
- package/enemies.js +56 -0
- package/exporters.js +182 -0
- package/index.js +1081 -0
- package/logic.js +603 -0
- package/overview.js +54 -0
- package/package.json +66 -0
- package/scripts/cache-kcnav-enemies.js +97 -0
- package/scripts/cache-kcnav-maps.js +109 -0
- package/scripts/cache-kcwiki-routes.js +96 -0
- package/scripts/compact-kcnav-enemies.js +53 -0
- package/scripts/compress-kcnav-maps.js +90 -0
package/README.md
ADDED
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
# poi-plugin-compass
|
|
2
|
+
|
|
3
|
+
舰队罗盘插件的通常海域 MVP。
|
|
4
|
+
|
|
5
|
+
当前版本已包含 poi 运行时代码、纯规则引擎和通常海域地图目录。目标功能是:针对用户选定的舰队(当前默认第一舰队),展示海图、带路条件、各分歧点的路线概率和全局路径概率,并允许在能动分歧点手动选择路线。
|
|
6
|
+
|
|
7
|
+
## 当前结论
|
|
8
|
+
|
|
9
|
+
- 可行,但必须先建立统一的离线规范数据层;不让 poi 运行时依赖 Wiki、NGA 或 TsunKit 的可用性。
|
|
10
|
+
- poi 内置 `fcd.map` 适合作为地图几何和数字节点到字母节点的主来源。当前本地快照版本为 `2026/07/28/02`,包含 136 个海图条目。
|
|
11
|
+
- 带路规则应采用“来源快照 + 规则 AST + 置信度”的结构。无法求值时显示“未知”;只有已知存在多个出口但没有可靠分配概率时才按均等概率计算,并明确标记 `?`。
|
|
12
|
+
- 敌舰实体统一用 master ID;敌方制空优先使用 TsunKit 已给出的门槛数组,同时保留敌舰装备 master ID 作为可复算和审计依据。
|
|
13
|
+
- 第一版先覆盖通常海域;活动图、NGA 手工复核和外部模拟器导出分开推进。
|
|
14
|
+
|
|
15
|
+
## 当前实现
|
|
16
|
+
|
|
17
|
+
- 罗盘订阅 poi Redux 中舰队、舰娘、装备、司令部、服务器、master、出击状态和地图数据的引用变化,换编成(包括解除全部僚舰)、换装、补给等无需点击界面即可刷新;组件卸载时解除订阅。port 响应额外清除上一趟节点/航路记录并刷新,舰队仍以 poi 更新后的 Redux 为唯一来源。顶部索敌旁显示非零舰队制空值,熟练度不确定时显示最小~最大范围。
|
|
18
|
+
|
|
19
|
+
- 非零概率可到访的昼战/航空战节点下方显示制空状态:AL(丧失)、AD(劣势)、AP(均势)、AS(优势)、AS+(确保);多种可能显示最低/最高状态,分别着色。我方制空沿用 poi `getTyku` 的熟练度最小/最大范围,敌方使用本地 KCNav 全部正样本编成的四档门槛。双方均零时不显示,夜战节点不显示;缺失或不确定敌编成影响已知结果时标记问号,完全无数据时不伪造状态。所有节点使用同一当前舰队搭载快照,未模拟沿途损耗、陆航或支援,悬停状态可查看这一限制。
|
|
20
|
+
|
|
21
|
+
- 顶部可选择舰队 1~4(默认 1),同步用于舰娘头像、编成摘要、poi 索敌、带路推演及两站模拟器导出;切换会清除旧舰队的手动路线和导出选择。四组索敌以 poi 电探装备图标显示,右下角描边数字为系数 1~4,对应索敌值在各图标旁常显。海域概览数值放大并区分制空/索敌颜色;侧栏及导出面板不显示解释性段落,仅保留精简状态和错误提示。选择空舰队时明确提示数据不可用,不回退到第一舰队。
|
|
22
|
+
|
|
23
|
+
- `1-1`:完整录入起点到 A 点以及按舰队数量变化的 A 点分歧概率。
|
|
24
|
+
- `1-2`、`1-3`、`1-4`、`1-5`、`1-6`、`2-1`、`2-2`、`2-3`、`2-4`、`3-1`、`3-2`、`3-3`、`3-4`、`3-5`、`4-1`、`4-2`、`4-3`、`4-4`、`4-5`、`5-1`~`5-6`、`6-1`~`6-5`、`7-1`~`7-5`:已加入当前来源中的节点规则和固定边,近似概率保留 `approximate` 标记。
|
|
25
|
+
- `2-5`:已录入出发点、B/C/E/F/G/I/J/L 等节点规则;索敌区间中没有可靠固定分布的部分按均等概率显示并附 `?`。
|
|
26
|
+
- 当前常规图目录覆盖 1-1~1-6、2-1~2-5、3-1~3-5、4-1~4-5、5-1~5-6、6-1~6-5、7-1~7-5。5-6 使用 P1/P2/P3 phase,分别从 1、2、2 起点开始,Boss 分别为 G、N、Z。
|
|
27
|
+
- 地图几何从 poi 的 `fcd.map` 读取,UI 使用 SVG 绘制节点、边、当前节点和全局到达概率;概率直接写在线段中点,边不使用箭头,已经经过的边保持最低加粗线宽,节点下方不重复显示概率或未知。
|
|
28
|
+
- 舰队状态从 poi 第一舰队和 master 数据读取;顶部用 `1BB 1CL 3DD` 形式显示舰种摘要。舰种、实例舰娘的有效速力 `api_soku`、运输桶、电探、大发系、特定舰名/舰娘和 poi 的 `getSaku33` 33 式索敌可参与求值。索敌装备按 poi 的 `api_slotnum`、补强槽 `api_slot_ex`、搭载量 `api_onslot` 组装,出击中已护卫舰按 poi selector 规则排除;舰队有效速力取 poi 舰队页同样使用的舰队最低速力,因此高速+/最速会计入提速装备。
|
|
29
|
+
- 顶部索敌显示 poi 的四组 33 式结果 `C1/C2/C3/C4`,用 `/` 分隔;当前地图的分歧点系数和司令部系数记录在 `data/los-config.json`,并通过 hover 提示。没有索敌分歧的地图标为不适用,6-5 的司令部系数保留资料中的不确定标记。
|
|
30
|
+
- poi 舰队、舰娘、装备或 33 式索敌数据不完整时,界面直接提示“poi 数据不可用”,不再执行本地索敌或其他 fallback。
|
|
31
|
+
- 没有可靠概率但不是能动分歧的出口会按均等概率传播,并在受影响的局部/全局概率后显示 `?`;带有明确近似概率的分歧也会保留 `?` 标记。能动分歧在未选择时直接提示指定方向,不传播伪造的均等概率。
|
|
32
|
+
- 7-2、7-3、7-5 已提供手动 phase 按钮并切换对应 boss 节点;7-2、7-3、7-5 的主要 phase 路径门已接入规则数据,细节条件仍需继续从来源数据拆分和复核。
|
|
33
|
+
- 已核对并录入全部通常图能动分歧:4-5 的 A/C/I、5-3 的 O、5-5 的 F、6-3 的 A、7-4 的 F,以及 7-5 的 F/H/O。能动出口在图上可点击,也可在节点面板中选择;没有 phase 默认规则时,未选择前直接提示指定方向;7-5 等有 phase 默认规则的节点先应用当前 phase 规则,仍可手动覆盖。
|
|
34
|
+
- 当前来源页面将 7-4 记为单一血条海图,暂未伪造 P1/P2 按钮;若后续来源确认存在独立阶段,再复用同一 phase 控件。
|
|
35
|
+
- 规则引擎支持条件 AST、规则优先级、概率传播和手动路线覆盖;手动覆盖只影响当前推演,不修改游戏状态。
|
|
36
|
+
- 界面采用窄标题栏、单行条件、状态图标/颜色和 hover popover,详细说明不占用常驻面板空间。
|
|
37
|
+
- TsunKit 的 37 张通常海图背景已转换为质量 85 的 WebP,和 KCNav 节点图标一起下载到 `assets/kcnav/`;运行时不请求远程图片或路线 API。由于 KCNav 当前图片资源异常,节点图片暂时不在界面中显示。
|
|
38
|
+
- 节点类型仍按 KCNav 的 `nodeTypes` 表映射到颜色和节点说明。37 张通常图的 KCNav 节点类型都已从本地 API 响应快照提取;若某张图未来缓存缺失,未知类型才显示为较小的可交互圆形节点和节点字母。
|
|
39
|
+
- 中文 Wiki 的路线分歧原文已缓存到 `data/sources/kcwiki/routes/*.wiki`,`manifest.json` 同时记录页面标题、page/revision ID、修订时间、抓取时间、来源 URL 和 SHA-256。缓存是校对材料,不在运行时请求 Wiki;需要显式刷新时运行 `npm run cache:kcwiki`。
|
|
40
|
+
- KCNav 地图 API 响应已提供构建期缓存脚本:`npm run cache:kcnav-maps` 会按地图逐张请求 `https://tsunkit.net/api/routing/maps/{mapId}/`,默认请求间隔 15 秒,原始 JSON 保存到 `data/sources/kcnav/maps/`,并从 `result.route[*][2]` 生成 `data/kcnav-node-types-by-map.json`。插件运行时不访问该 API。
|
|
41
|
+
- 规则分类遵循来源原文:`CV系`/`CV*` 使用 `CV_ALL`(CV、CVB、CVL),明确的 `CV+CVB` 使用 `CV_MAIN`;`CL系` 使用 `CL_ALL`,明确的 `CL+CT` 使用 `CL` 与 `CT` 的组合;`BB系` 使用 `BB_ALL`,仅写 `BB` 使用 `BB`(BB/FBB)。
|
|
42
|
+
|
|
43
|
+
## 本地验证
|
|
44
|
+
|
|
45
|
+
节点面板支持显示本地 KCNav 敌编成、阵型、样本占比和空优/空确范围;展开可查看敌舰与装备 master ID、四档制空门槛及陆航门槛。数据只按最近一个自然月的日期范围筛选,不区分司令部等级、磨血、斩杀、血条或 phase;无样本与未缓存分别提示,未知制空不按零处理。
|
|
46
|
+
|
|
47
|
+
运行 `npm run cache:kcnav-enemies` 按 15 秒间隔缓存全部可能战斗的节点,响应和清单保存在 `data/sources/kcnav/enemies/`;响应以紧凑 JSON 保存,结构和 SHA-256 校验不变。中断后重跑会保留原日期范围并跳过已校验文件;`npm run cache:kcnav-enemies -- --refresh` 显式开始刷新。运行时不请求远程接口。
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
npm test
|
|
51
|
+
npm run check:syntax
|
|
52
|
+
npm run compress:kcnav-maps
|
|
53
|
+
npm run compress:kcnav-enemies
|
|
54
|
+
npm run cache:kcwiki # 仅在需要更新 KCWiki 原文快照时运行
|
|
55
|
+
npm run cache:kcnav-maps # 按 15 秒间隔更新 KCNav 地图快照
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 模拟器导出
|
|
59
|
+
|
|
60
|
+
点击地图空白处取消节点选择,右侧显示地图概览(导出模式仍优先显示导出设置)。概览统计当前非零概率可到访节点的最高空优/空确,以及真正影响当前舰队分歧的最高索敌阈值、节点及地图系数;按路径历史求值,排除固定带路覆盖的索敌条件和零概率节点。未知或未指定分歧仅统计此前节点;敌编成缺缓存、无样本或装备不确定时明确标注制空统计不完整。
|
|
61
|
+
|
|
62
|
+
布局为左侧地图、右侧带路条件;打开导出后右侧替换为模拟器设置,可再次点击工具栏「导出」或面板「关闭」返回。敌舰情报独立放在两栏下方,仍跟随所选节点。顶部第一舰队和敌舰列表显示圆形头像,沿用 poi 的 `getShipImgPath` 与 Avatar 裁剪参数;优先本地缓存,缺图时允许请求当前游戏服务器,并传入 shipgraph 图片版本。没有缓存且服务器信息未加载时显示 master ID。此远程访问例外仅限舰船头像,地图资源和敌编成仍使用本地数据。
|
|
63
|
+
|
|
64
|
+
工具栏「导出」展开路线、我方阵型及 noro6 逐节点敌编成选择。默认优先当前阶段 Boss 路线,再按路线概率排序;未指定的能动分歧列为候选但不伪造概率,也不改变地图上的手动选择。noro6 默认选择每节点样本最多的编成;我方默认单纵,纯潜艇战单横,航空战轮形,均可修改。
|
|
65
|
+
|
|
66
|
+
KC3Kai 使用 v2 备份的 LZMA/Base64 链接,保留所有敌编成样本权重;noro6 使用 v4 DeckBuilder `predeck` 链接,每节点一套敌编成。两者均携带第一舰队装备、改修、熟练度、当前搭载及补强槽;点击按钮才在外部浏览器打开,不自动操作游戏。
|
|
67
|
+
|
|
68
|
+
罗盘插件不依赖 WCTF。`data/kc3kai-ship-stats.json` 缓存 KC3Kai 的 1778 个舰船条目的名称、舰种、回避/对潜/索敌成长字段及未知值标记,并记录来源、抓取时间和源文件 SHA-256。KC3Kai 导出省略我方回避、索敌,让目标站按等级推算;未对潜改修时也省略对潜。有对潜改修时使用本地 KC3Kai 成长区间计算裸值并加 `api_kyouka[6]`,缺对应成长数据时明确报错。noro6 同样不传回避/索敌,继续传 poi 的实际总对潜,由其导入器分离装备及额外强化。火雷空甲、运、耐久和装备状态仍保留,敌方 KCNav 面板不变。目标站更新后推算结果可能与本地快照略有差异;运行时不抓取这些数据库。
|
|
69
|
+
|
|
70
|
+
限制:缺少本地敌编成缓存或本月无样本时不能导出。KC3Kai 限 9 战、每节点 12 套敌编成,超限会提示,不静默截断;其已知 master ID 快照记录于 `data/kc3kai-master-ids.json`,未知 ID 会阻止导出。noro6 按敌舰 master ID 使用目标站的默认装备,不采用缓存中的装备差异。未导出陆航、支援舰队或漩涡损耗,需在目标站设置。已用合成编成验证两站导入;尚未在 poi 实际舰队上做端到端验证。
|
|
71
|
+
|
|
72
|
+
## 文档
|
|
73
|
+
|
|
74
|
+
- [调研笔记](docs/research.md)
|
|
75
|
+
- [来源清单与访问记录](docs/sources.md)
|
|
76
|
+
|
|
77
|
+
## 工作边界
|
|
78
|
+
|
|
79
|
+
本仓库不会自动出击、替用户点击游戏,也不会在运行时为了规则、敌编成、带路或图像信息抓取外部网站。通常海域规则目前通过 `data/maps.json` 离线维护;TsunKit 图片作为构建期下载的本地资源随插件分发。未来若加入刷新脚本,脚本应限速、保存原始响应摘要,并生成可审阅的规范数据。
|
package/air-status.js
ADDED
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
'use strict'
|
|
2
|
+
|
|
3
|
+
const states = [
|
|
4
|
+
{ label: 'AL', color: '#ff8585' },
|
|
5
|
+
{ label: 'AD', color: '#ffbd79' },
|
|
6
|
+
{ label: 'AP', color: '#f4df8b' },
|
|
7
|
+
{ label: 'AS', color: '#8fd7a3' },
|
|
8
|
+
{ label: 'AS+', color: '#87d9ff' },
|
|
9
|
+
]
|
|
10
|
+
|
|
11
|
+
function airStateRange(air, data) {
|
|
12
|
+
if (!air || !Number.isFinite(air.min) || !Number.isFinite(air.max) || data.status !== 'ready') return null
|
|
13
|
+
const values = []
|
|
14
|
+
let uncertain = false
|
|
15
|
+
for (const row of data.rows.filter(row => row.count > 0)) {
|
|
16
|
+
if (!row.thresholds) { uncertain = true; continue }
|
|
17
|
+
uncertain ||= Boolean(row.uncertain)
|
|
18
|
+
const t = row.thresholds
|
|
19
|
+
for (const value of [air.min, air.max]) {
|
|
20
|
+
if (value === 0 && t.supremacy === 0) continue
|
|
21
|
+
values.push(value >= t.supremacy ? 4 : value >= t.superiority ? 3 : value >= t.parity ? 2 : value >= t.disadvantage ? 1 : 0)
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
if (!values.length) return null
|
|
25
|
+
return { states: [...new Set([Math.min(...values), Math.max(...values)])].map(index => states[index]), uncertain }
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
module.exports = { airStateRange }
|