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>
185 lines
12 KiB
JavaScript
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" };
|