10 KiB
Weapon Icon Mapping Audit
Summary
The frontend weapon icon source of truth is now frontend/assets/js/current-match-weapon-icons.js, backed only by local SVG files from frontend/assets/img/weapons/black/.
The audit focused on avoiding broken image loads, replacing legacy typo filenames, and reusing the same black SVG resolver in the current match kill feed and historical match detail weapon lists.
Asset Path
- Runtime path:
./assets/img/weapons/black/ - Filesystem path:
frontend/assets/img/weapons/black/ - Fallback behavior: if the shared resolver is not available, views render a text fallback instead of loading an old asset path.
- Unknown fallback:
UNKNOWN -> precision_strike_black.svg
Local SVG Files Included
The current local set contains 123 SVG files:
60l_supply_black.svg60l_transport_black.svgat_mine_gs_mk_v_black.svgba10_black.svgbazooka_black.svgbedford_oyd_supply_black.svgbedford_oyd_transport_black.svgbishop_sp_25pdr_black.svgbombing_run_black.svgboys_anti_tank_rifle_black.svgbren_gun_black.svgbrowning_m1919_black.svgcanadian_sten_mk_ii_black.svgchurchill_mk_iii_avre_black.svgchurchill_mk_iii_black.svgchurchill_mk_vii_black.svgcolt_1911_black.svgcromwell_black.svgcrusader_mk_iii_black.svgenfield_no2_mk_i_black.svgfeldspaten_black.svgfg42_black.svgfg42_x4_black.svgfirefly_black.svgflammenwerfer41_black.svgflare_gun_black.svgfn_inglis_no2_mk_i_black.svggewehr_black.svggmc_cckw_353_supply_black.svggmc_cckw_363_supply_black.svggmc_cckw_363_transport_black.svghalf_track_black.svgis_1_black.svgjeep_black.svgjeep_willys_black.svgkar98k_black.svgkar98k_x8_black.svgkubelwagen_black.svgkv2_black.svglanchester_black.svglee_enfield_jungle_carbine_black.svglee_enfield_n4_black.svglee_enfield_pattern_1914_black.svglee_enfield_pattern_1914_sniper_black.svglewis_gun_black.svgluger_p08_black.svgm1903_springfield_black.svgm1903_springfield_sniper_black.svgm1918a2_bar_black.svgm1_57mm_cannon_black.svgm1_carbine_black.svgm1_garand_black.svgm1a1_at_mine_black.svgm24_stielhandgranate_black.svgm2_ap_mine_black.svgm2_flamethrower_black.svgm3_grease_gun_black.svgm3_half_track_black.svgm3_knife_black.svgm43_stielhandgranate_black.svgm4a3_105mm_black.svgm8_greyhound_black.svgm97_black.svgmg34_black.svgmg42_black.svgmills_bomb_black.svgmk2_grenade_black.svgmosin_nagant_1891_black.svgmosin_nagant_9130_black.svgmosin_nagant_m38_black.svgmp40_black.svgmpl50_spade_black.svgnagant_m1895_black.svgno82_grenade_black.svgopel_blitz_supply_black.svgopel_blitz_transport_black.svgpak_40_75mm_black.svgpanzer_iii_ausf_n_black.svgpanzerschreck_black.svgpiat_black.svgpomz_ap_mine_black.svgppsh41_black.svgppsh_41w_drum_black.svgprecision_strike_black.svgptrs41_black.svgqf_6_pounder_black.svgrg42_grenade_black.svgrifle_no4_mk_i_black.svgrifle_no4_mk_i_sniper_black.svgrifle_no5_mk_i_black.svgs_mine_black.svgsatchel_charge_black.svgscoped_mosin_nagant_9130_black.svgscoped_svt40_black.svgsdkfz_121_luchs_black.svgsdkfz_161_panzer_iv_black.svgsdkfz_171_panther_black.svgsdkfz_181_tiger_1_black.svgsdkfz_234_puma_black.svgsdkfz_251_half_track_black.svgsherman_m4a3_75w_black.svgsherman_m4a3e2_76_black.svgsherman_m4a3e2_black.svgsmle_no1_mk_iii_black.svgsten_gun_black.svgsten_gun_mk_ii_black.svgstg44_black.svgstrafing_run_black.svgstuart_m5a1_black.svgsturmpanzer_iv_black.svgsvt40_black.svgt34_76_black.svgt70_black.svgtellermine_43_black.svgtetrarch_black.svgthompson_black.svgtm35_at_mine_black.svgtokarev_tt33_black.svgwalther_p38_black.svgwebley_revolver_black.svgzis2_57mm_cannon_black.svgzis5_supply_black.svgzis5_transport_black.svg
Inventory Findings
- Tracked SVGs modified in
black/: 29 existing SVGs. - Tracked SVGs deleted in
black/:browing_m1919_black.svg,dp27_black.svg,flammenwefer41_black.svg,m1_carabine_black.svg,mosing_nagant_1891_black.svg,mosing_nagant_9130_black.svg,mosing_nagant_m38_black.svg,panzerchreck_black.svg,sten_mk_v_black.svg. - New/untracked SVGs in
black/: 94 files, including corrected names and expanded vehicle, mine, commander, British, Canadian, Soviet and US assets. - Duplicate by hash:
lee_enfield_jungle_carbine_black.svgandrifle_no5_mk_i_black.svg. - Suspicious legacy typo names are intentionally not used by runtime JS:
browing,mosing,panzerchreck,flammenwefer,m1_carabine.
Mapping Corrections
browing_m1919_black.svgis replaced bybrowning_m1919_black.svg.m1_carabine_black.svgis replaced bym1_carbine_black.svg.panzerchreck_black.svgis replaced bypanzerschreck_black.svg.flammenwefer41_black.svgis replaced byflammenwerfer41_black.svg.mosing_nagant_*_black.svgfiles are replaced bymosin_nagant_*_black.svg.sten_mk_v_black.svgis replaced by the availablesten_gun_black.svgshared fallback.dp27_black.svgno longer exists;DP-27currently maps tolewis_gun_black.svgas the closest local top-feed LMG silhouette.- The old
weapons/white/fallback inpartida-actual.jswas removed from the operational path. historico-partida.htmlnow loads the shared weapon resolver beforehistorico-partida.js.historico-partida.jsnow renders local black icons for historicaltop_weaponsanddeath_bylists when names resolve.
RCON Names Covered
The runtime covers the 220 explicit RCON/AdminLog names in CURRENT_MATCH_RCON_WEAPON_ICON_ENTRIES, including:
- Infantry examples:
GEWEHR 43,KARABINER 98K,KARABINER 98K x8,FG42,FG42 x4,M1 GARAND,M1 CARBINE,BROWNING M1919,STG44,MP40,MG34,MG42,BAZOOKA,PANZERSCHRECK,PIAT,PTRS-41,M1918A2 BAR,M3 GREASE GUN,M97 TRENCH GUN,M1A1 THOMPSON,M1928A1 THOMPSON. - Soviet examples:
MOSIN NAGANT 1891,MOSIN NAGANT 91/30,MOSIN NAGANT M38,SCOPED MOSIN NAGANT 91/30,SCOPED SVT40,SVT40,PPSH 41,PPSH 41 W/DRUM,TOKAREV TT33,NAGANT M1895. - British/Canadian examples:
Bren Gun,Boys Anti-tank Rifle,Sten Gun,Sten Gun Mk.II,Sten Gun Mk.V,Canadian Sten Mk.II,Lanchester,SMLE No.1 Mk III,Rifle No.4 Mk I,Rifle No.4 Mk I Sniper,Rifle No.5 Mk I,PIAT,Mills Bomb,No.82 Grenade. - Vehicles and mounted weapons:
Sd.Kfz.121 Luchs,Sd.Kfz.161 Panzer IV,Sd.Kfz.171 Panther,Sd.Kfz.181 Tiger 1,Sd.Kfz.234 Puma,Sd.Kfz 251 Half-track,Sherman M4A3(75)W,Sherman M4A3E2,Sherman M4A3E2(76),Stuart M5A1,M3 Stuart Honey,M8 Greyhound,T34/76,T70,IS-1,KV-2,BA-10,Churchill Mk.III,Churchill Mk.VII,Cromwell,Firefly,Tetrarch. - Commander, explosives and mines:
BOMBING RUN,STRAFING RUN,PRECISION STRIKE,SATCHEL,SATCHEL CHARGE,M1A1 AT MINE,M2 AP MINE,TELLERMINE 43,S-MINE,POMZ AP MINE,TM-35 AT MINE,A.T. Mine G.S. Mk V. - Logistics vehicles:
GMC CCKW 353 (Supply),GMC CCKW 363 (Supply),GMC CCKW 363 (Transport),Opel Blitz (Supply),Opel Blitz (Transport),ZIS-5 (Supply),ZIS-5 (Transport),Bedford OYD (Supply),Bedford OYD (Transport),Jeep,Jeep Willys,Kubelwagen,60L (Supply),60L (Transport). - Unknown:
UNKNOWN.
The full exact list remains in frontend/assets/js/current-match-weapon-icons.js and is validated by scripts/validate-weapon-icon-mapping.js.
Pending Names Without Dedicated Icon
These are covered by controlled fallbacks but should get dedicated SVGs later if visual accuracy matters:
UNKNOWNMOLOTOVNo.77DaimlerGAZ-67DP-27FairbairnSykes122MM HOWITZER [M1938 (M-30)]150MM HOWITZER [sFH 18]155MM HOWITZER [M114]- Generic towed artillery entries that currently reuse closest field-gun or vehicle silhouettes.
Alias Decisions
- Important aliases remain explicit for common normalized names such as
g43,kar98k,kar98k x8,mp 40,m1 garand,m1 carbine,m1919,fg42 scoped,fg42 sniper,ppsh drum,scoped svt40,sniper mosin,m1a1 thompson,m1928 thompson. - Legacy typo filenames are not used as asset references.
- Runtime normalization is case-insensitive and strips accents, punctuation, hyphens, brackets and repeated separators into a stable lookup key.
- Vehicle-mounted weapons map to the specific platform icon when a platform SVG exists.
- Shared fallbacks are documented instead of guessed through broad substring matching.
Production/API Sampling
Commands executed against production:
Invoke-RestMethod "https://comunidadhll.devzamode.es/api/current-match/kills?server=comunidad-hispana-01&limit=100"
Invoke-RestMethod "https://comunidadhll.devzamode.es/api/current-match/kills?server=comunidad-hispana-02&limit=100"
Invoke-RestMethod "https://comunidadhll.devzamode.es/api/current-match/players?server=comunidad-hispana-01"
Invoke-RestMethod "https://comunidadhll.devzamode.es/api/current-match/players?server=comunidad-hispana-02"
Invoke-RestMethod "https://comunidadhll.devzamode.es/api/historical/matches/detail?server=comunidad-hispana-01&match=1781023156:1781028555:purpleheartlanewarfare"
The endpoints responded, but at the time of this audit they did not expose weapon names in the sampled payloads. The implemented coverage therefore relies on the repository RCON weapon universe from the previous mapping work plus current frontend usage.
Validation Commands
node --check frontend/assets/js/current-match-weapon-icons.js
node --check frontend/assets/js/partida-actual.js
node --check frontend/assets/js/historico-partida.js
node scripts/validate-weapon-icon-mapping.js
git status --short --untracked-files=all
git diff --name-only
Scope Confirmation
- No backend file was modified for weapon icons.
- No RCON host, port, server config,
27001, Elo/MMR or Comunidad Hispana #03 setting was changed. - No clan asset was modified by this task.
- No asset outside
frontend/assets/img/weapons/black/was modified for weapon icons. frontend/assets/img/weapons/black - copia/andfrontend/assets/img/weapons/black.zipwere not included.tmp/was not included.ai/system-metrics.mdwas not touched by this task; it remains a pre-existing local modification.