Files
RingBRP/tools/icons.mjs
T
slaguru666andClaude Opus 5 e2d0ed5bb2 A player briefing, and the historical range
The generator was already writing the timeline, the cast and the texture and
filing all of it behind the GM screen. New PLAYERS page: a read-aloud opening,
what it is like there, what is known so far, who is there and what they want —
but never what they lie about. Page ownership is now declared by the page rather
than guessed from its index, which would have hidden any second player page.

Historical range: 38 weapons (from 6) and 14 armours (from 2), each with its
period stated, from arming swords and longbows through matchlocks and Brown Bess
to the Lee-Enfield and a trench club. Five new skills to hang them on, including
Firearm (Muzzle-loader), because a muzzle-loader is not a rifle.

275 icons; every weapon maps to a real skill and every item has art. Catalogue is
206 items across four eras.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-10 23:02:20 +01:00

185 lines
12 KiB
JavaScript

/** Item key -> [glyph, family, hue shift]. Shifts keep same-family items distinct. */
export const ICON_MAP = {
// weapons
punch:["hand","melee",0], baton:["club","melee",-8,"modern"], dagger:["blade","melee",8,"antique"],
prybar:["bar","melee",-14], machete:["sword","melee",16,"antique"], spear1h:["spear","melee",-20,"antique"],
grasp:["claw","melee",24], shortbow:["bow","weapon",30,"antique"],
pistol_light:["pistol","weapon",-6], pistol_med:["pistol","weapon",0], pistol_heavy:["pistol","weapon",6],
smg:["rifle","weapon",-12], rifle_med:["rifle","weapon",12], rifle_heavy:["rifle","weapon",18],
shotgun:["shotgun","weapon",24], cutter:["blade","device",0,"anomalous"],
lance:["beam","device",-14,"anomalous"], unmaker:["lattice","device",14,"anomalous"],
/* ---- ANTIQUE: brought back, or never left ---- */
flintlock:["flintlock","weapon",-16,"antique"], musket:["musket","weapon",-22,"antique"],
duelling_sword:["sword","melee",4,"antique"], boarding_axe:["axe","melee",-10,"antique"],
crossbow:["crossbow","weapon",34,"antique"], cudgel:["club","melee",-26,"antique"],
oil_lantern:["lantern","gear",-36,"antique"], tallow_candle:["candle","gear",-42,"antique"],
brass_compass:["compass","gear",40,"antique"], pocket_watch:["pocketwatch","gear",-46,"antique"],
spectacles:["spectacles","gear",46,"antique"], chirurgeon_kit:["syringe","gear",-52,"antique"],
oilcloth_coat:["jacket","armour",-28,"antique"], brigandine:["mail","armour",28,"antique"],
wax_tablet:["book","gear",-56,"antique"], iron_manacles:["manacles","gear",52,"antique"],
/* ---- MODERN: agency issue, already covered above, plus ---- */
revolver:["revolver","weapon",-30], carbine:["rifle","weapon",-24],
gas_mask:["mask_gas","gear",-60], evidence_tape:["tape","gear",56],
entrenching_tool:["handaxe_tool","melee",-34], dictaphone:["radio","gear",60],
/* ---- FUTURE: recovered from somewhere ahead ---- */
gauss_pistol:["gauss","weapon",-40,"future"], gauss_rifle:["gauss","weapon",44,"future"],
monoblade:["blade","melee",40,"future"], survey_drone:["drone","gear",-66,"future"],
optic_visor:["visor","gear",66,"future"], data_wafer:["chip","gear",-70,"future"],
breather:["mask_gas","gear",70,"future"], sealed_cannister:["cannister","gear",-74,"future"],
hardsuit:["suit","armour",-34,"future"], field_net:["net","gear",74,"future"],
/* ---- ANOMALOUS: should not exist ---- */
threshold_key:["aperture","device",-32,"anomalous"],
quiet_ledger:["ledger","device",34,"anomalous"],
/* ---- POWERS: the Quiet Arts ---- */
power_thread:["thread","power",0], power_echo:["echo","power",14],
power_hollow:["hollow","power",-14], power_witness:["witness","power",28],
power_unmake:["unmake","power",-28], power_ledger:["ledger","power",42],
// armour
jacket:["jacket","armour",-10], stab_vest:["vest","armour",-4], soft_armour:["vest","armour",4],
hide:["jacket","armour",12,"antique"], mail:["mail","armour",-16,"antique"], plate:["plate","armour",16,"antique"],
impact_vest:["vest","armour",10], breach_suit:["suit","armour",-20],
envsuit:["suit","armour",20], salvage_plate:["plate","device",8,"anomalous"],
// gear
field_kit:["flask","gear",-12], handset:["radio","gear",8], trauma_unit:["kit","gear",-20],
fieldmedic:["syringe","gear",14], medkit:["kit","gear",0], toolkit:["cog","gear",-6],
scanner:["scanner","gear",20], power_cell:["cell","gear",-26], cover_id:["folder","gear",26],
anchor:["ring","talent",0], key:["key","device",20,"anomalous"],
torch:["bolt","gear",34], rope:["rope","gear",-32], rations:["pack","gear",30],
water:["flask","gear",24], camera:["camera","gear",-16], sample_case:["vial","gear",-24],
restraints:["manacles","gear",16], beacon:["radio","gear",-30], binocs:["binocs","gear",32],
notebook:["book","gear",4], geiger:["geiger","gear",28], climbing_kit:["bolt","gear",-8],
spare_cells:["cell","gear",12], survey_kit:["cog","gear",34], ward:["aperture","device",-24,"anomalous"],
// device
crossing_regulator:["regulator","device",-8,"anomalous"],
// skills, by category
skill_melee:["blade","skill",-14], skill_ranged:["target","skill",-7],
skill_phys:["boot","skill",0], skill_manip:["hand","skill",7],
skill_mental:["brain","skill",14], skill_percep:["eye","skill",21],
skill_comm:["wave","skill",28],
// talents
talent_generic:["thread","talent",0], talent_species:["triune","talent",18],
talent_agency:["ledger","talent",-18], talent_field:["compass","talent",9],
portrait_b0:["figure","actor",-330],
portrait_b1:["figure","actor",-300],
portrait_b2:["figure","actor",-270],
portrait_b3:["figure","actor",-210],
portrait_b4:["figure","actor",-155],
portrait_b5:["figure","actor",-120],
portrait_b6:["figure","actor",-80],
portrait_b7:["figure","actor",-40],
portrait_b8:["figure","actor",-10],
portrait_b9:["figure","actor",15],
portrait_v0:["mask","actor",-315],
portrait_v1:["mask","actor",-240],
portrait_v2:["mask","actor",-170],
portrait_v3:["mask","actor",-100],
portrait_v4:["mask","actor",-30],
portrait_c0:["triune","actor",-285],
portrait_c1:["triune","actor",-195],
portrait_c2:["triune","actor",-130],
portrait_c3:["triune","actor",-65],
portrait_c4:["triune","actor",5],
portrait_n0:["mask","threat",-355],
portrait_n1:["mask","threat",-315],
portrait_n2:["mask","threat",-275],
portrait_n3:["mask","threat",-155],
portrait_n4:["mask","threat",-75],
// actors + misc
actor_pc:["figure","actor",0], actor_npc:["mask","threat",0],
actor_case:["folder","case",0], table:["disc","case",18],
journal:["book","case",-18], discovery:["lens","device",30],
project:["book","device",-30], material:["ring","armour",0], group:["mask","actor",20],
door:["door","device",0],
/* ---- stores: standing issue and the rest ---- */
warrant_card:["folder","gear",8], dressings:["kit","gear",-4], chalk:["bolt","gear",44],
whistle:["wave","gear",-38], carbon_book:["book","gear",-12], date_stamp:["disc","gear",18],
seals:["ring","gear",-18], cordon_kit:["tape","gear",22], clipboard:["folder","gear",-22],
uv_lamp:["lens","gear",-44], signal_mirror:["disc","gear",-30], probe:["bar","gear",38],
thermometer:["vial","gear",26], stopwatch:["pocketwatch","gear",14], specimen_jars:["vial","gear",-26],
swab_kit:["kit","gear",34], lock_rakes:["key","gear",-14], bolt_croppers:["handaxe_tool","gear",-34],
master_keys:["key","gear",20], door_wedges:["door","gear",30], groundsheet:["pack","gear",-40],
vacuum_flask:["flask","gear",10], blanket:["pack","gear",42], analgesics:["syringe","gear",6],
wake_tablets:["vial","gear",48], barrier_gloves:["hand","gear",-48], ear_defenders:["ear","gear",16],
site_overalls:["suit","gear",-10],
/* ---- antique stores ---- */
tinderbox:["candle","gear",-50,"antique"], quill_ink:["book","gear",50,"antique"],
sealing_wax:["ring","gear",-54,"antique"], spyglass:["binocs","gear",54,"antique"],
lamp_oil:["flask","gear",-58,"antique"], laudanum:["vial","gear",58,"antique"],
lodestone:["compass","gear",-62,"antique"], sand_glass:["pocketwatch","gear",62,"antique"],
/* ---- future stores ---- */
wound_foam:["kit","gear",-16,"future"], cold_light:["bolt","gear",-20,"future"],
field_slate:["chip","gear",24,"future"], locator_tags:["target","gear",-24,"future"],
density_scanner:["scanner","gear",28,"future"], seal_foam:["cannister","gear",-28,"future"],
assist_sleeve:["hand","gear",32,"future"],
/* ---- anomalous stores: transposed, and priced ---- */
black_mirror:["aperture","device",36,"anomalous"], wrong_compass:["compass","device",-36,"anomalous"],
returning_coin:["disc","device",40,"anomalous"], attendance_register:["ledger","device",-40,"anomalous"],
handbell:["wave","device",44,"anomalous"],
/* ---- transport ---- */
pool_car:["disc","gear",-6], pool_van:["pack","gear",-2], land_rover:["cog","gear",6],
site_lorry:["cannister","gear",-32], motorcycle:["bolt","gear",-44], launch:["wave","gear",12],
helicopter:["drone","gear",-12], hand_cart:["bar","gear",-60,"antique"],
trap:["rope","gear",60,"antique"], flycycle:["drone","gear",36,"future"],
lifter:["pack","gear",40,"future"], crawler:["suit","gear",-44,"future"],
stepping_frame:["door","device",48,"anomalous"], wrong_carriage:["disc","device",-48,"anomalous"],
/* ---- transport stores ---- */
tow_line:["rope","gear",18], jack_plates:["bar","gear",-38], jerry_can:["flask","gear",-42],
vehicle_spares:["cog","gear",-50], wheel_clamps:["manacles","gear",44], vehicle_log:["book","gear",30],
roof_lamp:["lens","gear",52], recovery_strop:["rope","gear",-52],
/* ---- the forward stores ---- */
stepping_disc:["aperture","device",-56,"future"], stasis_box:["cannister","gear",56,"future"],
autodoc:["kit","gear",-60,"future"], impact_suit:["vest","armour",44,"future"],
shadow_cloth:["jacket","gear",-64,"future"], grav_harness:["rope","gear",64,"future"],
sonic_probe:["wave","gear",-68,"future"], pressure_tent:["pack","gear",68,"future"],
cell_stack:["cell","gear",-72,"future"], translator_pin:["ear","gear",72,"future"],
medical_ram:["syringe","gear",-76,"future"], hull_patch:["kit","gear",76,"future"],
beacon_hard:["radio","gear",-80,"future"], sensor_stakes:["target","gear",80,"future"],
/* ---- further out, and worse for you ---- */
general_hull:["aperture","device",-20,"anomalous"], pleasure_tap:["brain","device",20,"anomalous"],
long_ledger:["ledger","device",-44,"anomalous"],
/* ---- borrowed authority ---- */
authority:["folder","device",0], authority_flagged:["folder","device",26],
authority_burned:["folder","device",-26],
/* ---- the historical range: medieval ---- */
arming_sword:["sword","melee",-4,"antique"], longsword:["sword","melee",-12,"antique"],
falchion:["sword","melee",20,"antique"], war_hammer:["club","melee",-30,"antique"],
mace:["club","melee",30,"antique"], flail:["club","melee",-36,"antique"],
poleaxe:["axe","melee",-18,"antique"], halberd:["spear","melee",-26,"antique"],
billhook:["axe","melee",26,"antique"], pike:["spear","melee",34,"antique"],
quarterstaff:["bar","melee",-22,"antique"], dirk:["blade","melee",-16,"antique"],
longbow:["bow","weapon",-30,"antique"], arbalest:["crossbow","weapon",-24,"antique"],
sling:["rope","weapon",38,"antique"], javelin:["spear","weapon",18,"antique"],
/* ---- early modern ---- */
rapier:["sword","melee",-40,"antique"], main_gauche:["blade","melee",40,"antique"],
matchlock:["musket","weapon",-34,"antique"], wheellock:["flintlock","weapon",28,"antique"],
blunderbuss:["shotgun","weapon",-44,"antique"], boarding_pike:["spear","melee",-32,"antique"],
/* ---- Napoleonic, Victorian, and the Great War ---- */
sabre:["sword","melee",44,"antique"], smallsword:["sword","melee",-48,"antique"],
cutlass:["sword","melee",48,"antique"], brown_bess:["musket","weapon",36,"antique"],
baker_rifle:["musket","weapon",-38,"antique"], bayonet:["blade","melee",32,"antique"],
martini:["rifle","weapon",-42,"antique"], webley:["revolver","weapon",42,"antique"],
lee_enfield:["rifle","weapon",46,"antique"], trench_club:["club","melee",22,"antique"],
/* ---- historical armour ---- */
gambeson:["jacket","armour",-16,"antique"], maille_shirt:["mail","armour",-22,"antique"],
coat_of_plates:["vest","armour",-30,"antique"], cuirass:["plate","armour",16,"antique"],
harness:["plate","armour",-36,"antique"], buff_coat:["jacket","armour",34,"antique"],
sallet:["mask","armour",-42,"antique"], lobster_pot:["mask","armour",42,"antique"],
jack_of_plate:["vest","armour",24,"antique"], cuirassier:["plate","armour",-48,"antique"],
brodie:["mask","armour",30,"antique"], flak_jacket:["vest","armour",-24,"antique"]
};
/** Skill category -> icon key. */
export const SKILL_ICON = { melee:"skill_melee", ranged:"skill_ranged", phys:"skill_phys",
manip:"skill_manip", mental:"skill_mental", percep:"skill_percep", comm:"skill_comm" };