@opencharacter/awn-core 0.0.0-stage → 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.
Files changed (354) hide show
  1. package/LICENSE +28 -0
  2. package/README.md +110 -2
  3. package/content/armor/assault-suit.yaml +8 -0
  4. package/content/armor/harmony-armor.yaml +8 -0
  5. package/content/armor/high-tech-street-clothing.yaml +8 -0
  6. package/content/armor/insurgent-armor.yaml +8 -0
  7. package/content/armor/leathers.yaml +9 -0
  8. package/content/armor/military-body-armor.yaml +9 -0
  9. package/content/armor/plate-carrier.yaml +8 -0
  10. package/content/armor/protection-field.yaml +8 -0
  11. package/content/armor/protective-sport-gear.yaml +8 -0
  12. package/content/armor/scrap-mail.yaml +9 -0
  13. package/content/armor/scrap-plate.yaml +9 -0
  14. package/content/armor/shield.yaml +7 -0
  15. package/content/armor/terran-explorer-suit.yaml +9 -0
  16. package/content/armor/vacc-suit.yaml +8 -0
  17. package/content/armor/vanguard-plate.yaml +8 -0
  18. package/content/backgrounds/courtesan.yaml +20 -0
  19. package/content/backgrounds/crafter.yaml +20 -0
  20. package/content/backgrounds/diplomat.yaml +20 -0
  21. package/content/backgrounds/entertainer.yaml +20 -0
  22. package/content/backgrounds/farmer.yaml +20 -0
  23. package/content/backgrounds/healer.yaml +20 -0
  24. package/content/backgrounds/hunter.yaml +20 -0
  25. package/content/backgrounds/noble.yaml +20 -0
  26. package/content/backgrounds/outcast.yaml +20 -0
  27. package/content/backgrounds/priest.yaml +20 -0
  28. package/content/backgrounds/raider.yaml +20 -0
  29. package/content/backgrounds/rider.yaml +20 -0
  30. package/content/backgrounds/savage.yaml +20 -0
  31. package/content/backgrounds/scavenger.yaml +20 -0
  32. package/content/backgrounds/scholar.yaml +20 -0
  33. package/content/backgrounds/scout.yaml +20 -0
  34. package/content/backgrounds/slave.yaml +20 -0
  35. package/content/backgrounds/trader.yaml +20 -0
  36. package/content/backgrounds/wanderer.yaml +20 -0
  37. package/content/backgrounds/warrior.yaml +20 -0
  38. package/content/edges/beacon-of-hope.yaml +8 -0
  39. package/content/edges/cold-blood.yaml +6 -0
  40. package/content/edges/comrade.yaml +2 -0
  41. package/content/edges/educated.yaml +29 -0
  42. package/content/edges/faceless.yaml +10 -0
  43. package/content/edges/focused.yaml +6 -0
  44. package/content/edges/forged-by-fire.yaml +2 -0
  45. package/content/edges/ghost.yaml +4 -0
  46. package/content/edges/hard-to-kill.yaml +9 -0
  47. package/content/edges/hardened-genetics.yaml +25 -0
  48. package/content/edges/killing-blow.yaml +8 -0
  49. package/content/edges/masterful-expertise.yaml +2 -0
  50. package/content/edges/mutant.yaml +22 -0
  51. package/content/edges/mutation-acceleration.yaml +4 -0
  52. package/content/edges/on-target.yaml +8 -0
  53. package/content/edges/prodigy.yaml +27 -0
  54. package/content/edges/survivors-fortune.yaml +2 -0
  55. package/content/edges/systemic-immunity.yaml +8 -0
  56. package/content/edges/theyre-here.yaml +8 -0
  57. package/content/edges/veterans-luck.yaml +2 -0
  58. package/content/foci/alert.yaml +4 -0
  59. package/content/foci/apex-predator.yaml +5 -0
  60. package/content/foci/armsmaster.yaml +19 -0
  61. package/content/foci/assassin.yaml +4 -0
  62. package/content/foci/authority.yaml +4 -0
  63. package/content/foci/close-combatant.yaml +9 -0
  64. package/content/foci/deadeye.yaml +8 -0
  65. package/content/foci/diplomat.yaml +4 -0
  66. package/content/foci/gray-man.yaml +4 -0
  67. package/content/foci/healer.yaml +10 -0
  68. package/content/foci/henchkeeper.yaml +4 -0
  69. package/content/foci/iron-stomach.yaml +13 -0
  70. package/content/foci/natural-immunity.yaml +14 -0
  71. package/content/foci/pathfinder.yaml +4 -0
  72. package/content/foci/road-warrior.yaml +4 -0
  73. package/content/foci/robot-whisperer.yaml +4 -0
  74. package/content/foci/scrapsmith.yaml +4 -0
  75. package/content/foci/shocking-assault.yaml +12 -0
  76. package/content/foci/skilled-combat-rider.yaml +4 -0
  77. package/content/foci/slippery.yaml +9 -0
  78. package/content/foci/snipers-eye.yaml +4 -0
  79. package/content/foci/spark-of-brilliance.yaml +26 -0
  80. package/content/foci/specialist.yaml +56 -0
  81. package/content/foci/strong-back.yaml +12 -0
  82. package/content/foci/survivalist.yaml +13 -0
  83. package/content/foci/tinker.yaml +4 -0
  84. package/content/foci/unarmed-combatant.yaml +7 -0
  85. package/content/foci/unique-gift.yaml +4 -0
  86. package/content/foci/unnumbered-friends.yaml +9 -0
  87. package/content/foci/unstable-mutant.yaml +4 -0
  88. package/content/foci/whirlwind-assault.yaml +4 -0
  89. package/content/foci/zombie-smasher.yaml +2 -0
  90. package/content/gear/alcohol-excellent.yaml +6 -0
  91. package/content/gear/alcohol.yaml +6 -0
  92. package/content/gear/ammo.yaml +5 -0
  93. package/content/gear/antibiotics-powerful.yaml +8 -0
  94. package/content/gear/antibiotics.yaml +8 -0
  95. package/content/gear/arrows.yaml +5 -0
  96. package/content/gear/backpack.yaml +6 -0
  97. package/content/gear/batteries-rechargeable.yaml +5 -0
  98. package/content/gear/batteries.yaml +6 -0
  99. package/content/gear/binoculars.yaml +5 -0
  100. package/content/gear/bounce.yaml +7 -0
  101. package/content/gear/camping-kit.yaml +5 -0
  102. package/content/gear/cash.yaml +4 -0
  103. package/content/gear/clothes-cold-weather.yaml +6 -0
  104. package/content/gear/clothes-fine.yaml +5 -0
  105. package/content/gear/clothes.yaml +6 -0
  106. package/content/gear/compressed-fuel.yaml +5 -0
  107. package/content/gear/crowbar.yaml +5 -0
  108. package/content/gear/depressant-crude.yaml +6 -0
  109. package/content/gear/depressant-refined.yaml +7 -0
  110. package/content/gear/dog.yaml +6 -0
  111. package/content/gear/drone.yaml +6 -0
  112. package/content/gear/energy-cell-a-plus.yaml +6 -0
  113. package/content/gear/energy-cell-a.yaml +7 -0
  114. package/content/gear/energy-cell-b-plus.yaml +5 -0
  115. package/content/gear/energy-cell-b.yaml +6 -0
  116. package/content/gear/first-aid-kit.yaml +5 -0
  117. package/content/gear/flashlight.yaml +6 -0
  118. package/content/gear/gas-mask.yaml +6 -0
  119. package/content/gear/glow.yaml +8 -0
  120. package/content/gear/hallucinogen-crude.yaml +6 -0
  121. package/content/gear/hallucinogen-refined.yaml +7 -0
  122. package/content/gear/hand-cart.yaml +5 -0
  123. package/content/gear/hand-tool.yaml +5 -0
  124. package/content/gear/horse.yaml +6 -0
  125. package/content/gear/jewelry.yaml +4 -0
  126. package/content/gear/keepsake.yaml +4 -0
  127. package/content/gear/lantern.yaml +5 -0
  128. package/content/gear/laptop.yaml +5 -0
  129. package/content/gear/lifestyle.yaml +7 -0
  130. package/content/gear/lighters.yaml +5 -0
  131. package/content/gear/lockpick-kit.yaml +5 -0
  132. package/content/gear/magazine.yaml +6 -0
  133. package/content/gear/morning-after.yaml +7 -0
  134. package/content/gear/mule.yaml +6 -0
  135. package/content/gear/night-vision-gear.yaml +6 -0
  136. package/content/gear/oil-flask.yaml +6 -0
  137. package/content/gear/opioid-crude.yaml +6 -0
  138. package/content/gear/opioid-refined.yaml +7 -0
  139. package/content/gear/panacea.yaml +8 -0
  140. package/content/gear/perpetual-lighter.yaml +5 -0
  141. package/content/gear/preserved-food.yaml +4 -0
  142. package/content/gear/profession-item.yaml +4 -0
  143. package/content/gear/purification-tablets.yaml +5 -0
  144. package/content/gear/radio.yaml +6 -0
  145. package/content/gear/ration.yaml +6 -0
  146. package/content/gear/rope-fiber.yaml +5 -0
  147. package/content/gear/rope.yaml +5 -0
  148. package/content/gear/salvaged-tech.yaml +5 -0
  149. package/content/gear/scrap-tl2.yaml +6 -0
  150. package/content/gear/scrap-tl3.yaml +6 -0
  151. package/content/gear/sleeping-bag.yaml +5 -0
  152. package/content/gear/smartphone.yaml +5 -0
  153. package/content/gear/smile.yaml +7 -0
  154. package/content/gear/snooze.yaml +7 -0
  155. package/content/gear/solar-charger.yaml +5 -0
  156. package/content/gear/stimulant-crude.yaml +6 -0
  157. package/content/gear/stimulant-refined.yaml +7 -0
  158. package/content/gear/surgical-kit.yaml +5 -0
  159. package/content/gear/tarp.yaml +5 -0
  160. package/content/gear/tent.yaml +5 -0
  161. package/content/gear/therapeutic-powerful.yaml +8 -0
  162. package/content/gear/therapeutic.yaml +8 -0
  163. package/content/gear/thunderbolt.yaml +8 -0
  164. package/content/gear/tinderbox.yaml +5 -0
  165. package/content/gear/titan.yaml +8 -0
  166. package/content/gear/toolkit.yaml +5 -0
  167. package/content/gear/torch.yaml +6 -0
  168. package/content/gear/trauma-patch.yaml +7 -0
  169. package/content/gear/walkie-talkie.yaml +6 -0
  170. package/content/gear/water-jug.yaml +5 -0
  171. package/content/gear/water-purifier.yaml +5 -0
  172. package/content/gear/weeper.yaml +7 -0
  173. package/content/gear/zen.yaml +7 -0
  174. package/content/mutations/cognition/augmented-cognition.yaml +19 -0
  175. package/content/mutations/cognition/ballistic-calculator.yaml +6 -0
  176. package/content/mutations/cognition/eidetic-memory.yaml +31 -0
  177. package/content/mutations/cognition/internal-map.yaml +5 -0
  178. package/content/mutations/cognition/intuitive-leap.yaml +10 -0
  179. package/content/mutations/cognition/memory-eater.yaml +5 -0
  180. package/content/mutations/cognition/mental-bifurcation.yaml +5 -0
  181. package/content/mutations/cognition/mind-over-body.yaml +12 -0
  182. package/content/mutations/cognition/omniglot.yaml +9 -0
  183. package/content/mutations/cognition/predictive-analysis.yaml +19 -0
  184. package/content/mutations/exotic/chameleon-field.yaml +10 -0
  185. package/content/mutations/exotic/electrical-generation.yaml +5 -0
  186. package/content/mutations/exotic/hemovore.yaml +5 -0
  187. package/content/mutations/exotic/image-projection.yaml +5 -0
  188. package/content/mutations/exotic/metamorph.yaml +5 -0
  189. package/content/mutations/exotic/molecular-phasing.yaml +5 -0
  190. package/content/mutations/exotic/natural-projectiles.yaml +8 -0
  191. package/content/mutations/exotic/pheromone-cloud.yaml +5 -0
  192. package/content/mutations/exotic/photon-manipulation.yaml +5 -0
  193. package/content/mutations/exotic/sound-generation.yaml +5 -0
  194. package/content/mutations/hybrid/aquatic-adaptation.yaml +5 -0
  195. package/content/mutations/hybrid/arboreal-aptitude.yaml +5 -0
  196. package/content/mutations/hybrid/centauroid.yaml +9 -0
  197. package/content/mutations/hybrid/crushing-jaws.yaml +7 -0
  198. package/content/mutations/hybrid/digitigrade-legs.yaml +9 -0
  199. package/content/mutations/hybrid/functional-wings.yaml +5 -0
  200. package/content/mutations/hybrid/prehensile-limb.yaml +5 -0
  201. package/content/mutations/hybrid/savage-claws.yaml +7 -0
  202. package/content/mutations/hybrid/thick-hide.yaml +12 -0
  203. package/content/mutations/hybrid/venom-glands.yaml +5 -0
  204. package/content/mutations/pseudo-psychic/force-field.yaml +5 -0
  205. package/content/mutations/pseudo-psychic/induce-confusion.yaml +5 -0
  206. package/content/mutations/pseudo-psychic/limited-precognition.yaml +5 -0
  207. package/content/mutations/pseudo-psychic/mental-domination.yaml +5 -0
  208. package/content/mutations/pseudo-psychic/mind-reader.yaml +5 -0
  209. package/content/mutations/pseudo-psychic/neural-lockdown.yaml +5 -0
  210. package/content/mutations/pseudo-psychic/panic-wave.yaml +5 -0
  211. package/content/mutations/pseudo-psychic/spatial-displacement.yaml +5 -0
  212. package/content/mutations/pseudo-psychic/telekinetic-reach.yaml +5 -0
  213. package/content/mutations/pseudo-psychic/thermokinesis.yaml +5 -0
  214. package/content/mutations/sense/accelerated-perception.yaml +5 -0
  215. package/content/mutations/sense/acute-hearing.yaml +6 -0
  216. package/content/mutations/sense/acute-olfaction.yaml +5 -0
  217. package/content/mutations/sense/echolocation.yaml +6 -0
  218. package/content/mutations/sense/empathic-sensitivity.yaml +10 -0
  219. package/content/mutations/sense/night-vision.yaml +6 -0
  220. package/content/mutations/sense/panoptic-vision.yaml +6 -0
  221. package/content/mutations/sense/tactile-analysis.yaml +5 -0
  222. package/content/mutations/sense/telescopic-sight.yaml +6 -0
  223. package/content/mutations/sense/thermal-vision.yaml +6 -0
  224. package/content/mutations/structure/augmented-muscle.yaml +12 -0
  225. package/content/mutations/structure/explosive-exertion.yaml +5 -0
  226. package/content/mutations/structure/hypercontortion.yaml +5 -0
  227. package/content/mutations/structure/improved-joints.yaml +12 -0
  228. package/content/mutations/structure/leaper.yaml +5 -0
  229. package/content/mutations/structure/redundant-organs.yaml +9 -0
  230. package/content/mutations/structure/regenerator.yaml +5 -0
  231. package/content/mutations/structure/reinforced-tissues.yaml +12 -0
  232. package/content/mutations/structure/sealed-systems.yaml +5 -0
  233. package/content/mutations/structure/stamina-reserves.yaml +5 -0
  234. package/content/negative-mutations/animalistic-mentality.yaml +9 -0
  235. package/content/negative-mutations/anosmia.yaml +9 -0
  236. package/content/negative-mutations/attribute-deficiency.yaml +27 -0
  237. package/content/negative-mutations/awkward-mouth.yaml +13 -0
  238. package/content/negative-mutations/bestial-hunger.yaml +4 -0
  239. package/content/negative-mutations/bleeder.yaml +4 -0
  240. package/content/negative-mutations/blindness.yaml +9 -0
  241. package/content/negative-mutations/chronic-seizures.yaml +4 -0
  242. package/content/negative-mutations/clumsy-paws.yaml +4 -0
  243. package/content/negative-mutations/constant-secretions.yaml +13 -0
  244. package/content/negative-mutations/deafness.yaml +9 -0
  245. package/content/negative-mutations/deficient-polycephaly.yaml +19 -0
  246. package/content/negative-mutations/distorted-speech.yaml +13 -0
  247. package/content/negative-mutations/distracted-mind.yaml +4 -0
  248. package/content/negative-mutations/energy-sink.yaml +4 -0
  249. package/content/negative-mutations/feeble-joints.yaml +9 -0
  250. package/content/negative-mutations/feral-mind.yaml +9 -0
  251. package/content/negative-mutations/fragile-system.yaml +13 -0
  252. package/content/negative-mutations/glowbug.yaml +9 -0
  253. package/content/negative-mutations/hemovore.yaml +4 -0
  254. package/content/negative-mutations/insensate-flesh.yaml +9 -0
  255. package/content/negative-mutations/light-sensitivity.yaml +6 -0
  256. package/content/negative-mutations/loose-limbs.yaml +9 -0
  257. package/content/negative-mutations/low-resistances.yaml +4 -0
  258. package/content/negative-mutations/memory-damage.yaml +13 -0
  259. package/content/negative-mutations/miasmic-stench.yaml +9 -0
  260. package/content/negative-mutations/misshapen.yaml +4 -0
  261. package/content/negative-mutations/musclebound.yaml +9 -0
  262. package/content/negative-mutations/narrow-focus.yaml +13 -0
  263. package/content/negative-mutations/overtaxed-physique.yaml +9 -0
  264. package/content/negative-mutations/place-blindness.yaml +4 -0
  265. package/content/negative-mutations/poor-eyesight.yaml +9 -0
  266. package/content/negative-mutations/primitive-cognition.yaml +9 -0
  267. package/content/negative-mutations/sensitive-skin.yaml +9 -0
  268. package/content/negative-mutations/short-lifespan.yaml +4 -0
  269. package/content/negative-mutations/sleep-dependence.yaml +4 -0
  270. package/content/negative-mutations/slow-development.yaml +42 -0
  271. package/content/negative-mutations/spindly.yaml +13 -0
  272. package/content/negative-mutations/vexation-field.yaml +17 -0
  273. package/content/negative-mutations/voracious.yaml +4 -0
  274. package/content/negative-mutations/weak-heart.yaml +13 -0
  275. package/content/templates/unarmed-combatant.yaml +11 -0
  276. package/content/weapons/anti-materiel-rifle.yaml +14 -0
  277. package/content/weapons/automatic-rifle.yaml +14 -0
  278. package/content/weapons/axe.yaml +16 -0
  279. package/content/weapons/big-axe.yaml +14 -0
  280. package/content/weapons/big-club.yaml +14 -0
  281. package/content/weapons/big-sword.yaml +14 -0
  282. package/content/weapons/blackout-rifle.yaml +12 -0
  283. package/content/weapons/club.yaml +15 -0
  284. package/content/weapons/combat-rifle.yaml +15 -0
  285. package/content/weapons/combat-shotgun.yaml +15 -0
  286. package/content/weapons/cutter-rifle.yaml +14 -0
  287. package/content/weapons/demo-charge.yaml +12 -0
  288. package/content/weapons/grenade-flash.yaml +11 -0
  289. package/content/weapons/grenade-frag.yaml +14 -0
  290. package/content/weapons/grenade-gas.yaml +12 -0
  291. package/content/weapons/grenade-launcher.yaml +10 -0
  292. package/content/weapons/grenade-smoke.yaml +11 -0
  293. package/content/weapons/heavy-cutter.yaml +14 -0
  294. package/content/weapons/heavy-machine-gun.yaml +14 -0
  295. package/content/weapons/heavy-pistol.yaml +14 -0
  296. package/content/weapons/knife.yaml +16 -0
  297. package/content/weapons/laser-pistol.yaml +14 -0
  298. package/content/weapons/laser-rifle.yaml +14 -0
  299. package/content/weapons/light-pistol.yaml +14 -0
  300. package/content/weapons/mag-pistol.yaml +13 -0
  301. package/content/weapons/mag-rifle.yaml +14 -0
  302. package/content/weapons/mine-anti-personnel.yaml +10 -0
  303. package/content/weapons/mine-anti-vehicle.yaml +10 -0
  304. package/content/weapons/modern-bow.yaml +15 -0
  305. package/content/weapons/mortar.yaml +14 -0
  306. package/content/weapons/natural/claws.yaml +12 -0
  307. package/content/weapons/natural/jaws.yaml +10 -0
  308. package/content/weapons/natural/projectiles.yaml +13 -0
  309. package/content/weapons/neutron-blaster.yaml +14 -0
  310. package/content/weapons/plasma-projector.yaml +14 -0
  311. package/content/weapons/primitive-bow.yaml +15 -0
  312. package/content/weapons/rifle.yaml +15 -0
  313. package/content/weapons/rocket-launcher.yaml +13 -0
  314. package/content/weapons/semi-auto-shotgun.yaml +15 -0
  315. package/content/weapons/shear-rifle.yaml +14 -0
  316. package/content/weapons/shotgun.yaml +15 -0
  317. package/content/weapons/sniper-rifle.yaml +15 -0
  318. package/content/weapons/spear.yaml +16 -0
  319. package/content/weapons/spike-thrower.yaml +14 -0
  320. package/content/weapons/submachine-gun.yaml +15 -0
  321. package/content/weapons/sword.yaml +13 -0
  322. package/content/weapons/thermal-pistol.yaml +14 -0
  323. package/content/weapons/tl4-big-sword.yaml +14 -0
  324. package/content/weapons/tl4-club.yaml +14 -0
  325. package/content/weapons/tl4-knife.yaml +16 -0
  326. package/content/weapons/tl4-sword.yaml +13 -0
  327. package/content/weapons/unarmed.yaml +10 -0
  328. package/content/weapons/whip-beam.yaml +14 -0
  329. package/dist/i18n/en.d.ts +3 -0
  330. package/dist/i18n/en.js +2 -0
  331. package/dist/i18n/en.json +1181 -0
  332. package/dist/index.d.ts +3 -0
  333. package/dist/index.js +2 -0
  334. package/dist/release.json +31523 -0
  335. package/i18n/en/backgrounds.yaml +21 -0
  336. package/i18n/en/content.yaml +336 -0
  337. package/i18n/en/core.yaml +631 -0
  338. package/i18n/en/text.yaml +193 -0
  339. package/i18n/en.yaml +3 -0
  340. package/pack.yaml +16 -0
  341. package/package.json +58 -3
  342. package/rules/advancement.yaml +443 -0
  343. package/rules/backgrounds.yaml +59 -0
  344. package/rules/checks.yaml +6 -0
  345. package/rules/combat.yaml +146 -0
  346. package/rules/core.yaml +73 -0
  347. package/rules/creation.yaml +449 -0
  348. package/rules/features.yaml +78 -0
  349. package/rules/gear.yaml +210 -0
  350. package/rules/layout.yaml +191 -0
  351. package/rules/mutations.yaml +702 -0
  352. package/rules/skills.yaml +106 -0
  353. package/rules/starting-equipment.yaml +450 -0
  354. package/rules/tags.yaml +71 -0
package/LICENSE ADDED
@@ -0,0 +1,28 @@
1
+ Ashes Without Number (awn-core): an Open Character Format pack
2
+ ================================================================================
3
+
4
+ This pack models the character rules of Ashes Without Number, by Kevin Crawford,
5
+ published by Sine Nomine Publishing. Its text comes from the game's free
6
+ edition and is used with the author's permission (license:
7
+ LicenseRef-sine-nomine-free-edition). Whoever shares the pack's content must
8
+ pass on its credit and notices:
9
+
10
+ Text from Ashes Without Number (Free Edition), © 2025 Sine Nomine Publishing,
11
+ Inc., by Kevin Crawford. Used with the author's permission.
12
+
13
+ The content of the free edition of Ashes Without Number is reproduced here with
14
+ the author's permission; nothing from the game's paid edition is included.
15
+
16
+ Ashes Without Number is a game by Kevin Crawford, published by Sine Nomine
17
+ Publishing. This pack is an unofficial model of its character rules: it is not
18
+ affiliated with or endorsed by Sine Nomine Publishing.
19
+
20
+ The free edition's text, names and tables remain the property of Sine Nomine
21
+ Publishing, Inc.; the permission covers their use in this pack, not a license
22
+ to reuse them elsewhere.
23
+
24
+ The Open Character Format contributors' own work in this pack (its data
25
+ structure, formulas and the labels written for it) is dedicated to the public
26
+ domain under CC0 1.0 Universal, the default for packs in the Open Character
27
+ Format repository that declare no license of their own (packs/LICENSE). CC0
28
+ covers only that work.
package/README.md CHANGED
@@ -1,3 +1,111 @@
1
- # Temporary Holding Version
1
+ # Ashes Without Number
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ `@opencharacter/awn-core` is an unofficial [Open Character Format](https://opencharacterformat.org/)
4
+ pack for the character rules of _Ashes Without Number_, by Kevin Crawford (Sine Nomine
5
+ Publishing). It is for apps that build, show and advance survivors with an OCF engine: attributes,
6
+ backgrounds, skills, edges, foci, mutations, hit points, saves, advancement to 10th level, gear
7
+ and encumbrance.
8
+
9
+ Its text (skill, edge, focus, mutation and background descriptions) comes from the game's free
10
+ edition and is used with the author's permission. Nothing from the paid edition is included.
11
+
12
+ ## Install and load
13
+
14
+ ```sh
15
+ pnpm add @opencharacter/awn-core @opencharacter/engine
16
+ ```
17
+
18
+ ```ts
19
+ import { applyChanges, loadRuleset, startAction } from '@opencharacter/engine';
20
+ import apocalypse from '@opencharacter/awn-core';
21
+
22
+ const loaded = loadRuleset([apocalypse]);
23
+ if (!loaded.ok) throw new Error(loaded.errors.map((e) => e.code).join(', '));
24
+ const { ruleset } = loaded;
25
+
26
+ // A random survivor: every roll and pick made by the engine.
27
+ const blank = {
28
+ specVersion: '0.2.0',
29
+ id: 'survivor',
30
+ packs: [{ id: 'awn-core', version: '0.1.0' }],
31
+ creating: true,
32
+ };
33
+ const run = startAction(ruleset, blank, {
34
+ action: { id: 'awn-core:create-character' },
35
+ params: { random: true },
36
+ policy: { dice: 'auto', choices: 'auto', allocations: 'auto' },
37
+ });
38
+ ```
39
+
40
+ ## License
41
+
42
+ - **License:** `LicenseRef-sine-nomine-free-edition`. The free edition's text is reproduced with
43
+ the author's permission; apps that show the pack's content must pass on its `credit` and
44
+ notices:
45
+
46
+ > Text from Ashes Without Number (Free Edition), © 2025 Sine Nomine Publishing, Inc., by Kevin
47
+ > Crawford. Used with the author's permission.
48
+
49
+ - **Notices:** `permission` (the free edition's content is used with permission; the paid
50
+ edition's is excluded) and `not-affiliated` (the pack is unofficial and not endorsed by Sine
51
+ Nomine Publishing). [`LICENSE`](LICENSE) has them all.
52
+
53
+ ## What's modeled
54
+
55
+ - **Attributes:** the six scores (3–18) and their modifiers. Bonuses "to a maximum of +2"
56
+ (`attributes.*.boost`), uncapped bonuses and penalties (never below −2) are kept apart, so
57
+ every edge, focus and mutation applies the book's caps.
58
+ - **Skills:** the 19 skills at level −1 (untrained) to 4. A skill check rolls 2d6 (more dice,
59
+ best two kept, with Specialist and Healer) plus an attribute modifier and the level.
60
+ - **Creation** (`create-character`), in the book's order: attributes (3d6 in order and a 14, or
61
+ the array), background (d20), its free skill, two picks or three Growth/Learning rolls, the
62
+ underdog rule, two edges, mutations, foci, the edges', foci's and mutations' own picks, the free
63
+ bonus skill, hit points and starting equipment (hapless innocents, you saw it coming, or a
64
+ wasteland warrior with the near-future or wasteland table).
65
+ - `guided` recommends the quick skills, the lowest roll for the 14 and the first option
66
+ elsewhere; `random` rolls every table and draws every free pick.
67
+ - A skill pick past level-1, or a skill a negative mutation forbids, goes to another skill.
68
+ - **Edges, foci and bonus skills:** each edge and focus is a copy (a focus with its level, 1 or
69
+ 2). Their bonus skills are applied by the action that adds them: a skill pick at creation,
70
+ three skill points (kept as credit) later. Edges and foci the level earns are follow-ups.
71
+ - **Mutations:** mutation points from Mutant, Mutation Acceleration and up to three rolled
72
+ negative mutations (d100, with Lightly Touched); the stigma (concealable for a point, and the
73
+ suggestion tables); positive mutations rolled (d6 + d10), rolled two in a category, or picked.
74
+ Negative mutations' attribute penalties, forbidden skills and barred sensory mutations apply;
75
+ Slow Development's favorite skill is a choice on it, and every other skill's `cap` is one
76
+ below the level's usual maximum (at least level-0).
77
+ - **Hit points, attack bonus and saves:** by level, with Hard to Kill, On Target and the
78
+ mutations that change them. `level-up` rerolls hit points (the roll if better, else +1).
79
+ - **Advancement:** experience on the fast or slow table, `level-up`, `improve-skill` and
80
+ `improve-attribute` with the book's costs and minimum levels.
81
+ - **Gear:** armor, ranged, melee, high-tech and portable heavy weapons, survival gear, drugs and
82
+ stims. Each weapon shows its hit bonus, damage bonus and Shock; `attack` rolls it.
83
+ - **Encumbrance:** Readied (equipped) and Stowed loads against Strength, small items bundled
84
+ three to one when stowed, and the slower moves of pushing past the limits. A start that brings
85
+ more than its Strength can haul stows Readied items, then leaves Stowed ones behind, heaviest
86
+ first, until it is within the limits.
87
+ - **Rolled twice:** Weak Heart's Exert checks keep the worse of two 2d6 rolls; Constant
88
+ Secretions (the `grapple` situational choice) and Survivalist (`foraging`) keep the better. An
89
+ attack given its target's view (`participants.target`) rolls laser damage twice against Light
90
+ Sensitivity, the higher kept.
91
+ - **System strain and stress:** maximums with the edges, foci and mutations that change them.
92
+
93
+ ## Rule readings
94
+
95
+ - **Learning picks** may take any skill: every Learning table ends with Any Skill.
96
+ - **Random start:** one Growth and two Learning rolls (the book's example), a d4 for zero to three
97
+ negative mutations, and every mutation point on single rolls.
98
+ - **Rerolls** of a duplicate or barred mutation are a uniform draw among the ones still open,
99
+ which is what rerolling until one fits gives.
100
+ - **An edge's bonus skill after creation** (Mutant or another at 5th level) counts as three skill
101
+ points, as a focus's does.
102
+ - **Stigma details:** the d12 column follows the nature (texture for size, amorphous and
103
+ mineral changes).
104
+
105
+ ## Not modeled
106
+
107
+ Vehicles, mods, the high-tech loot tables (a placeholder item stands for them), psychic scars,
108
+ traumatic hits beyond the trauma target, and the many once-per-scene or narrative powers, which
109
+ are text only. Low Resistances (the day's first Physical, Mental or Evasion save rolled twice)
110
+ is text only too: a roll effect can't end itself once it applies
111
+ ([#68](https://github.com/pixelqueue/opencharacter/issues/68)).
@@ -0,0 +1,8 @@
1
+ id: armor.assault-suit
2
+ type: armor
3
+ tags: [sealed, powered]
4
+ fields:
5
+ ac: 18
6
+ enc: 2
7
+ traumaMod: 2
8
+ techLevel: 4
@@ -0,0 +1,8 @@
1
+ id: armor.harmony-armor
2
+ type: armor
3
+ fields:
4
+ ac: 18
5
+ enc: 0
6
+ traumaMod: 1
7
+ cost: 1500
8
+ techLevel: 4
@@ -0,0 +1,8 @@
1
+ id: armor.high-tech-street-clothing
2
+ type: armor
3
+ fields:
4
+ ac: 13
5
+ enc: 0
6
+ subtle: true
7
+ cost: 200
8
+ techLevel: 4
@@ -0,0 +1,8 @@
1
+ id: armor.insurgent-armor
2
+ type: armor
3
+ fields:
4
+ ac: 18
5
+ enc: 1
6
+ traumaMod: 1
7
+ cost: 1000
8
+ techLevel: 4
@@ -0,0 +1,9 @@
1
+ id: armor.leathers
2
+ type: armor
3
+ tags: [primitive]
4
+ fields:
5
+ ac: 13
6
+ enc: 1
7
+ subtle: true
8
+ cost: 25
9
+ techLevel: 0
@@ -0,0 +1,9 @@
1
+ id: armor.military-body-armor
2
+ type: armor
3
+ tags: [heavy]
4
+ fields:
5
+ ac: 16
6
+ enc: 2
7
+ traumaMod: 1
8
+ cost: 300
9
+ techLevel: 3
@@ -0,0 +1,8 @@
1
+ id: armor.plate-carrier
2
+ type: armor
3
+ fields:
4
+ ac: 14
5
+ enc: 1
6
+ traumaMod: 1
7
+ cost: 200
8
+ techLevel: 3
@@ -0,0 +1,8 @@
1
+ id: armor.protection-field
2
+ type: armor
3
+ tags: [powered]
4
+ fields:
5
+ ac: 18
6
+ enc: 0
7
+ subtle: true
8
+ techLevel: 5
@@ -0,0 +1,8 @@
1
+ id: armor.protective-sport-gear
2
+ type: armor
3
+ tags: [primitive]
4
+ fields:
5
+ ac: 14
6
+ enc: 1
7
+ cost: 50
8
+ techLevel: 3
@@ -0,0 +1,9 @@
1
+ id: armor.scrap-mail
2
+ type: armor
3
+ tags: [primitive, heavy]
4
+ fields:
5
+ ac: 15
6
+ enc: 2
7
+ traumaMod: 1
8
+ cost: 100
9
+ techLevel: 2
@@ -0,0 +1,9 @@
1
+ id: armor.scrap-plate
2
+ type: armor
3
+ tags: [primitive, heavy]
4
+ fields:
5
+ ac: 18
6
+ enc: 3
7
+ traumaMod: 1
8
+ cost: 300
9
+ techLevel: 2
@@ -0,0 +1,7 @@
1
+ id: armor.shield
2
+ type: armor
3
+ tags: [primitive, shield]
4
+ fields:
5
+ ac: 14
6
+ enc: 1
7
+ techLevel: 0
@@ -0,0 +1,9 @@
1
+ id: armor.terran-explorer-suit
2
+ type: armor
3
+ fields:
4
+ ac: 16
5
+ enc: 0
6
+ traumaMod: 1
7
+ subtle: true
8
+ cost: 500
9
+ techLevel: 4
@@ -0,0 +1,8 @@
1
+ id: armor.vacc-suit
2
+ type: armor
3
+ tags: [sealed]
4
+ fields:
5
+ ac: 13
6
+ enc: 1
7
+ cost: 250
8
+ techLevel: 4
@@ -0,0 +1,8 @@
1
+ id: armor.vanguard-plate
2
+ type: armor
3
+ tags: [sealed, powered]
4
+ fields:
5
+ ac: 20
6
+ enc: 2
7
+ traumaMod: 3
8
+ techLevel: 5
@@ -0,0 +1,20 @@
1
+ id: backgrounds.courtesan
2
+ type: background
3
+ fields:
4
+ freeSkill: talk
5
+ quickSkill1: perform
6
+ quickSkill2: connect
7
+ growth1: any-stat-1
8
+ growth2: any-stat-1
9
+ growth3: physical2
10
+ growth4: mental2
11
+ growth5: talk
12
+ growth6: any-skill
13
+ learning1: talk
14
+ learning2: perform
15
+ learning3: connect
16
+ learning4: trade
17
+ learning5: sneak
18
+ learning6: notice
19
+ learning7: heal
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.crafter
2
+ type: background
3
+ fields:
4
+ freeSkill: fix
5
+ quickSkill1: trade
6
+ quickSkill2: connect
7
+ growth1: any-stat-1
8
+ growth2: mental2
9
+ growth3: mental2
10
+ growth4: physical2
11
+ growth5: fix
12
+ growth6: any-skill
13
+ learning1: fix
14
+ learning2: trade
15
+ learning3: connect
16
+ learning4: notice
17
+ learning5: sneak
18
+ learning6: know
19
+ learning7: program
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.diplomat
2
+ type: background
3
+ fields:
4
+ freeSkill: talk
5
+ quickSkill1: lead
6
+ quickSkill2: connect
7
+ growth1: any-stat-1
8
+ growth2: mental2
9
+ growth3: mental2
10
+ growth4: mental2
11
+ growth5: talk
12
+ growth6: any-skill
13
+ learning1: lead
14
+ learning2: talk
15
+ learning3: connect
16
+ learning4: perform
17
+ learning5: know
18
+ learning6: sneak
19
+ learning7: notice
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.entertainer
2
+ type: background
3
+ fields:
4
+ freeSkill: perform
5
+ quickSkill1: lead
6
+ quickSkill2: connect
7
+ growth1: any-stat-1
8
+ growth2: any-stat-1
9
+ growth3: mental2
10
+ growth4: physical2
11
+ growth5: perform
12
+ growth6: any-skill
13
+ learning1: perform
14
+ learning2: lead
15
+ learning3: connect
16
+ learning4: talk
17
+ learning5: trade
18
+ learning6: sneak
19
+ learning7: any-combat
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.farmer
2
+ type: background
3
+ fields:
4
+ freeSkill: work
5
+ quickSkill1: survive
6
+ quickSkill2: exert
7
+ growth1: any-stat-1
8
+ growth2: physical2
9
+ growth3: physical2
10
+ growth4: physical2
11
+ growth5: any-skill
12
+ growth6: any-skill
13
+ learning1: any-combat
14
+ learning2: survive
15
+ learning3: work
16
+ learning4: notice
17
+ learning5: exert
18
+ learning6: heal
19
+ learning7: fix
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.healer
2
+ type: background
3
+ fields:
4
+ freeSkill: heal
5
+ quickSkill1: notice
6
+ quickSkill2: know
7
+ growth1: any-stat-1
8
+ growth2: physical2
9
+ growth3: mental2
10
+ growth4: mental2
11
+ growth5: heal
12
+ growth6: any-skill
13
+ learning1: heal
14
+ learning2: notice
15
+ learning3: know
16
+ learning4: talk
17
+ learning5: administer
18
+ learning6: connect
19
+ learning7: drive
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.hunter
2
+ type: background
3
+ fields:
4
+ freeSkill: survive
5
+ quickSkill1: shoot
6
+ quickSkill2: sneak
7
+ growth1: any-stat-1
8
+ growth2: physical2
9
+ growth3: physical2
10
+ growth4: mental2
11
+ growth5: survive
12
+ growth6: any-skill
13
+ learning1: shoot
14
+ learning2: survive
15
+ learning3: sneak
16
+ learning4: notice
17
+ learning5: drive
18
+ learning6: heal
19
+ learning7: any-combat
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.noble
2
+ type: background
3
+ fields:
4
+ freeSkill: lead
5
+ quickSkill1: notice
6
+ quickSkill2: connect
7
+ growth1: any-stat-1
8
+ growth2: physical2
9
+ growth3: mental2
10
+ growth4: mental2
11
+ growth5: lead
12
+ growth6: any-skill
13
+ learning1: lead
14
+ learning2: connect
15
+ learning3: notice
16
+ learning4: any-combat
17
+ learning5: trade
18
+ learning6: administer
19
+ learning7: talk
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.outcast
2
+ type: background
3
+ fields:
4
+ freeSkill: survive
5
+ quickSkill1: sneak
6
+ quickSkill2: any-combat
7
+ growth1: any-stat-1
8
+ growth2: any-stat-1
9
+ growth3: physical2
10
+ growth4: mental2
11
+ growth5: survive
12
+ growth6: any-skill
13
+ learning1: any-combat
14
+ learning2: survive
15
+ learning3: sneak
16
+ learning4: connect
17
+ learning5: heal
18
+ learning6: exert
19
+ learning7: talk
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.priest
2
+ type: background
3
+ fields:
4
+ freeSkill: lead
5
+ quickSkill1: talk
6
+ quickSkill2: connect
7
+ growth1: any-stat-1
8
+ growth2: mental2
9
+ growth3: mental2
10
+ growth4: mental2
11
+ growth5: connect
12
+ growth6: any-skill
13
+ learning1: lead
14
+ learning2: talk
15
+ learning3: connect
16
+ learning4: perform
17
+ learning5: know
18
+ learning6: heal
19
+ learning7: notice
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.raider
2
+ type: background
3
+ fields:
4
+ freeSkill: any-combat
5
+ quickSkill1: survive
6
+ quickSkill2: notice
7
+ growth1: any-stat-1
8
+ growth2: physical2
9
+ growth3: physical2
10
+ growth4: mental2
11
+ growth5: any-combat
12
+ growth6: any-skill
13
+ learning1: survive
14
+ learning2: notice
15
+ learning3: fix
16
+ learning4: lead
17
+ learning5: sneak
18
+ learning6: connect
19
+ learning7: any-combat
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.rider
2
+ type: background
3
+ fields:
4
+ freeSkill: drive
5
+ quickSkill1: any-combat
6
+ quickSkill2: survive
7
+ growth1: any-stat-1
8
+ growth2: physical2
9
+ growth3: physical2
10
+ growth4: mental2
11
+ growth5: drive
12
+ growth6: any-skill
13
+ learning1: drive
14
+ learning2: any-combat
15
+ learning3: survive
16
+ learning4: notice
17
+ learning5: trade
18
+ learning6: exert
19
+ learning7: connect
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.savage
2
+ type: background
3
+ fields:
4
+ freeSkill: survive
5
+ quickSkill1: any-combat
6
+ quickSkill2: sneak
7
+ growth1: any-stat-1
8
+ growth2: physical2
9
+ growth3: physical2
10
+ growth4: physical2
11
+ growth5: survive
12
+ growth6: any-skill
13
+ learning1: any-combat
14
+ learning2: sneak
15
+ learning3: survive
16
+ learning4: exert
17
+ learning5: notice
18
+ learning6: heal
19
+ learning7: survive
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.scavenger
2
+ type: background
3
+ fields:
4
+ freeSkill: notice
5
+ quickSkill1: fix
6
+ quickSkill2: survive
7
+ growth1: any-stat-1
8
+ growth2: mental2
9
+ growth3: physical2
10
+ growth4: physical2
11
+ growth5: notice
12
+ growth6: any-skill
13
+ learning1: survive
14
+ learning2: drive
15
+ learning3: fix
16
+ learning4: trade
17
+ learning5: sneak
18
+ learning6: notice
19
+ learning7: any-combat
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.scholar
2
+ type: background
3
+ fields:
4
+ freeSkill: know
5
+ quickSkill1: talk
6
+ quickSkill2: administer
7
+ growth1: any-stat-1
8
+ growth2: mental2
9
+ growth3: mental2
10
+ growth4: mental2
11
+ growth5: know
12
+ growth6: any-skill
13
+ learning1: know
14
+ learning2: talk
15
+ learning3: administer
16
+ learning4: connect
17
+ learning5: heal
18
+ learning6: fix
19
+ learning7: program
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.scout
2
+ type: background
3
+ fields:
4
+ freeSkill: sneak
5
+ quickSkill1: notice
6
+ quickSkill2: survive
7
+ growth1: any-stat-1
8
+ growth2: mental2
9
+ growth3: physical2
10
+ growth4: physical2
11
+ growth5: sneak
12
+ growth6: any-skill
13
+ learning1: any-combat
14
+ learning2: sneak
15
+ learning3: notice
16
+ learning4: survive
17
+ learning5: connect
18
+ learning6: exert
19
+ learning7: drive
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.slave
2
+ type: background
3
+ fields:
4
+ freeSkill: exert
5
+ quickSkill1: sneak
6
+ quickSkill2: survive
7
+ growth1: any-stat-1
8
+ growth2: any-stat-1
9
+ growth3: mental2
10
+ growth4: physical2
11
+ growth5: exert
12
+ growth6: any-skill
13
+ learning1: exert
14
+ learning2: sneak
15
+ learning3: survive
16
+ learning4: talk
17
+ learning5: heal
18
+ learning6: perform
19
+ learning7: any-combat
20
+ learning8: any-skill
@@ -0,0 +1,20 @@
1
+ id: backgrounds.trader
2
+ type: background
3
+ fields:
4
+ freeSkill: trade
5
+ quickSkill1: notice
6
+ quickSkill2: connect
7
+ growth1: any-stat-1
8
+ growth2: mental2
9
+ growth3: mental2
10
+ growth4: physical2
11
+ growth5: trade
12
+ growth6: any-skill
13
+ learning1: trade
14
+ learning2: notice
15
+ learning3: connect
16
+ learning4: fix
17
+ learning5: talk
18
+ learning6: administer
19
+ learning7: any-combat
20
+ learning8: any-skill