@opencharacter/awn-core 0.1.0 → 0.2.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 +48 -3
- package/content/edges/educated.yaml +11 -0
- package/content/edges/focused.yaml +1 -0
- package/content/edges/forged-by-fire.yaml +1 -0
- package/content/edges/hardened-genetics.yaml +1 -0
- package/content/edges/mutant.yaml +17 -0
- package/content/edges/mutation-acceleration.yaml +24 -0
- package/content/edges/prodigy.yaml +1 -0
- package/content/foci/unstable-mutant.yaml +14 -0
- package/content/mutation-categories/cognition.yaml +2 -0
- package/content/mutation-categories/exotic.yaml +2 -0
- package/content/mutation-categories/hybrid.yaml +2 -0
- package/content/mutation-categories/pseudo-psychic.yaml +2 -0
- package/content/mutation-categories/sense.yaml +2 -0
- package/content/mutation-categories/structure.yaml +2 -0
- package/content/mutations/cognition/augmented-cognition.yaml +1 -1
- package/content/mutations/cognition/ballistic-calculator.yaml +1 -1
- package/content/mutations/cognition/eidetic-memory.yaml +1 -1
- package/content/mutations/cognition/internal-map.yaml +1 -1
- package/content/mutations/cognition/intuitive-leap.yaml +1 -1
- package/content/mutations/cognition/memory-eater.yaml +1 -1
- package/content/mutations/cognition/mental-bifurcation.yaml +1 -1
- package/content/mutations/cognition/mind-over-body.yaml +1 -1
- package/content/mutations/cognition/omniglot.yaml +1 -1
- package/content/mutations/cognition/predictive-analysis.yaml +1 -1
- package/content/mutations/exotic/chameleon-field.yaml +1 -1
- package/content/mutations/exotic/electrical-generation.yaml +1 -1
- package/content/mutations/exotic/hemovore.yaml +1 -1
- package/content/mutations/exotic/image-projection.yaml +1 -1
- package/content/mutations/exotic/metamorph.yaml +1 -1
- package/content/mutations/exotic/molecular-phasing.yaml +1 -1
- package/content/mutations/exotic/natural-projectiles.yaml +1 -1
- package/content/mutations/exotic/pheromone-cloud.yaml +1 -1
- package/content/mutations/exotic/photon-manipulation.yaml +1 -1
- package/content/mutations/exotic/sound-generation.yaml +1 -1
- package/content/mutations/hybrid/aquatic-adaptation.yaml +1 -1
- package/content/mutations/hybrid/arboreal-aptitude.yaml +1 -1
- package/content/mutations/hybrid/centauroid.yaml +1 -1
- package/content/mutations/hybrid/crushing-jaws.yaml +1 -1
- package/content/mutations/hybrid/digitigrade-legs.yaml +1 -1
- package/content/mutations/hybrid/functional-wings.yaml +1 -1
- package/content/mutations/hybrid/prehensile-limb.yaml +1 -1
- package/content/mutations/hybrid/savage-claws.yaml +1 -1
- package/content/mutations/hybrid/thick-hide.yaml +1 -1
- package/content/mutations/hybrid/venom-glands.yaml +1 -1
- package/content/mutations/pseudo-psychic/force-field.yaml +1 -1
- package/content/mutations/pseudo-psychic/induce-confusion.yaml +1 -1
- package/content/mutations/pseudo-psychic/limited-precognition.yaml +1 -1
- package/content/mutations/pseudo-psychic/mental-domination.yaml +1 -1
- package/content/mutations/pseudo-psychic/mind-reader.yaml +1 -1
- package/content/mutations/pseudo-psychic/neural-lockdown.yaml +1 -1
- package/content/mutations/pseudo-psychic/panic-wave.yaml +1 -1
- package/content/mutations/pseudo-psychic/spatial-displacement.yaml +1 -1
- package/content/mutations/pseudo-psychic/telekinetic-reach.yaml +1 -1
- package/content/mutations/pseudo-psychic/thermokinesis.yaml +1 -1
- package/content/mutations/sense/accelerated-perception.yaml +1 -1
- package/content/mutations/sense/acute-hearing.yaml +1 -1
- package/content/mutations/sense/acute-olfaction.yaml +1 -1
- package/content/mutations/sense/echolocation.yaml +1 -1
- package/content/mutations/sense/empathic-sensitivity.yaml +1 -1
- package/content/mutations/sense/night-vision.yaml +1 -1
- package/content/mutations/sense/panoptic-vision.yaml +1 -1
- package/content/mutations/sense/tactile-analysis.yaml +1 -1
- package/content/mutations/sense/telescopic-sight.yaml +1 -1
- package/content/mutations/sense/thermal-vision.yaml +1 -1
- package/content/mutations/structure/augmented-muscle.yaml +1 -1
- package/content/mutations/structure/explosive-exertion.yaml +1 -1
- package/content/mutations/structure/hypercontortion.yaml +1 -1
- package/content/mutations/structure/improved-joints.yaml +1 -1
- package/content/mutations/structure/leaper.yaml +1 -1
- package/content/mutations/structure/redundant-organs.yaml +1 -1
- package/content/mutations/structure/regenerator.yaml +1 -1
- package/content/mutations/structure/reinforced-tissues.yaml +1 -1
- package/content/mutations/structure/sealed-systems.yaml +1 -1
- package/content/mutations/structure/stamina-reserves.yaml +1 -1
- package/content/prepared/backpack.yaml +5 -0
- package/content/prepared/binoculars.yaml +4 -0
- package/content/prepared/camping-kit.yaml +4 -0
- package/content/prepared/cash.yaml +4 -0
- package/content/prepared/cold-weather-clothes.yaml +5 -0
- package/content/prepared/criminal-firearm.yaml +7 -0
- package/content/prepared/first-aid-kit.yaml +4 -0
- package/content/prepared/flashlight.yaml +4 -0
- package/content/prepared/heavy-pistol.yaml +7 -0
- package/content/prepared/knife.yaml +5 -0
- package/content/prepared/laptop.yaml +4 -0
- package/content/prepared/light-pistol.yaml +7 -0
- package/content/prepared/lighters.yaml +4 -0
- package/content/prepared/lockpick-kit.yaml +4 -0
- package/content/prepared/preserved-food.yaml +4 -0
- package/content/prepared/profession-item.yaml +4 -0
- package/content/prepared/purification-tablets.yaml +4 -0
- package/content/prepared/radio.yaml +4 -0
- package/content/prepared/rifle.yaml +7 -0
- package/content/prepared/shotgun.yaml +7 -0
- package/content/prepared/sleeping-bag.yaml +4 -0
- package/content/prepared/smartphone.yaml +4 -0
- package/content/prepared/solar-charger.yaml +4 -0
- package/content/prepared/tent.yaml +4 -0
- package/content/prepared/toolkit.yaml +4 -0
- package/content/prepared/walkie-talkies.yaml +5 -0
- package/content/prepared/water-purifier.yaml +4 -0
- package/content/weapons/primitive-bow.yaml +1 -0
- package/dist/i18n/en.js +1 -1
- package/dist/i18n/en.json +101 -34
- package/dist/index.js +1 -1
- package/dist/release.json +2008 -1434
- package/i18n/en/content.yaml +49 -0
- package/i18n/en/core.yaml +52 -34
- package/pack.yaml +2 -2
- package/package.json +2 -2
- package/rules/advancement.yaml +41 -42
- package/rules/backgrounds.yaml +17 -16
- package/rules/checks.yaml +5 -1
- package/rules/combat.yaml +1 -1
- package/rules/creation.yaml +71 -25
- package/rules/features.yaml +9 -4
- package/rules/gear.yaml +20 -1
- package/rules/layout.yaml +2 -0
- package/rules/mutations.yaml +50 -26
- package/rules/skills.yaml +8 -4
- package/rules/starting-equipment.yaml +24 -101
- package/rules/tags.yaml +13 -0
package/i18n/en/content.yaml
CHANGED
|
@@ -76,6 +76,12 @@ foci.specialist.choices.skill.options.trade.name: Trade
|
|
|
76
76
|
foci.specialist.choices.skill.options.work.name: Work
|
|
77
77
|
foci.unstable-mutant.prerequisites.mutant: Mutant
|
|
78
78
|
templates.unarmed-combatant.name: '{base} (Unarmed Combatant)'
|
|
79
|
+
mutation-categories.cognition.name: Cognition
|
|
80
|
+
mutation-categories.exotic.name: Exotic
|
|
81
|
+
mutation-categories.hybrid.name: Hybrid
|
|
82
|
+
mutation-categories.pseudo-psychic.name: Pseudo-psychic
|
|
83
|
+
mutation-categories.sense.name: Sense
|
|
84
|
+
mutation-categories.structure.name: Structure
|
|
79
85
|
mutations.structure.augmented-muscle.name: Augmented Muscle
|
|
80
86
|
mutations.structure.explosive-exertion.name: Explosive Exertion
|
|
81
87
|
mutations.structure.hypercontortion.name: Hypercontortion
|
|
@@ -334,3 +340,46 @@ gear.titan.name: Titan
|
|
|
334
340
|
gear.trauma-patch.name: Trauma patch
|
|
335
341
|
gear.weeper.name: Weeper
|
|
336
342
|
gear.zen.name: Zen
|
|
343
|
+
types.prepared.name: Prepared survivor's pick
|
|
344
|
+
prepared.light-pistol.name: Light pistol
|
|
345
|
+
prepared.heavy-pistol.name: Heavy pistol
|
|
346
|
+
prepared.rifle.name: Rifle
|
|
347
|
+
prepared.shotgun.name: Shotgun
|
|
348
|
+
prepared.criminal-firearm.name: A criminal's non-military firearm
|
|
349
|
+
prepared.knife.name: Knife
|
|
350
|
+
prepared.smartphone.name: Smartphone
|
|
351
|
+
prepared.preserved-food.name: 7 days' preserved food
|
|
352
|
+
prepared.camping-kit.name: Camping kit
|
|
353
|
+
prepared.first-aid-kit.name: First aid kit
|
|
354
|
+
prepared.tent.name: Tent
|
|
355
|
+
prepared.toolkit.name: Toolkit
|
|
356
|
+
prepared.flashlight.name: Flashlight
|
|
357
|
+
prepared.cold-weather-clothes.name: Cold weather clothing
|
|
358
|
+
prepared.sleeping-bag.name: Sleeping bag
|
|
359
|
+
prepared.cash.name: '$1,000 in small bills'
|
|
360
|
+
prepared.laptop.name: Laptop
|
|
361
|
+
prepared.walkie-talkies.name: A pair of walkie-talkies
|
|
362
|
+
prepared.solar-charger.name: Solar charger
|
|
363
|
+
prepared.radio.name: Portable ham radio
|
|
364
|
+
prepared.lockpick-kit.name: Lockpick kit
|
|
365
|
+
prepared.lighters.name: 20 disposable lighters
|
|
366
|
+
prepared.purification-tablets.name: 100 water purification tablets
|
|
367
|
+
prepared.profession-item.name: An item from your background
|
|
368
|
+
prepared.backpack.name: Backpack
|
|
369
|
+
prepared.binoculars.name: Binoculars
|
|
370
|
+
prepared.water-purifier.name: Water purifier
|
|
371
|
+
types.prepared.fields.gear.name: Item
|
|
372
|
+
types.prepared.fields.quantity.name: Quantity
|
|
373
|
+
types.prepared.fields.equipped.name: Readied
|
|
374
|
+
types.prepared.fields.extra.name: Comes with
|
|
375
|
+
types.prepared.fields.extraQuantity.name: How many come with it
|
|
376
|
+
types.weapon.fields.kitAmmo.name: Starting ammunition
|
|
377
|
+
types.edge.fields.gainPart.name: Brings more when taken
|
|
378
|
+
types.focus.fields.gainPart.name: Brings more when taken
|
|
379
|
+
edges.educated.actions.gain-part.name: Educated's earlier skill points
|
|
380
|
+
edges.mutant.actions.gain-part.name: Mutate
|
|
381
|
+
edges.mutation-acceleration.actions.gain-part.name: Spend the new mutation points
|
|
382
|
+
foci.unstable-mutant.actions.gain-part.name: Roll a free mutation
|
|
383
|
+
edges.mutant.actions.gain-part.params.random.name: Random
|
|
384
|
+
edges.mutation-acceleration.actions.gain-part.params.random.name: Random
|
|
385
|
+
foci.unstable-mutant.actions.gain-part.params.random.name: Random
|
package/i18n/en/core.yaml
CHANGED
|
@@ -12,13 +12,7 @@ actions.bonus-skill.results.gained.name: Gained
|
|
|
12
12
|
actions.buy-mutation.name: Spend mutation points
|
|
13
13
|
actions.buy-mutation.options.category.name: Roll two in one category (3 points)
|
|
14
14
|
actions.buy-mutation.options.chosen.name: Pick one mutation (3 points)
|
|
15
|
-
actions.buy-mutation.options.cognition.name: Cognition
|
|
16
|
-
actions.buy-mutation.options.exotic.name: Exotic
|
|
17
|
-
actions.buy-mutation.options.hybrid.name: Hybrid
|
|
18
|
-
actions.buy-mutation.options.pseudo-psychic.name: Pseudo-psychic
|
|
19
15
|
actions.buy-mutation.options.random.name: Roll one mutation (1 point)
|
|
20
|
-
actions.buy-mutation.options.sense.name: Sense
|
|
21
|
-
actions.buy-mutation.options.structure.name: Structure
|
|
22
16
|
actions.buy-mutation.params.random.name: Random
|
|
23
17
|
actions.buy-mutation.results.bought.name: Bought
|
|
24
18
|
actions.buy-mutation.steps.category.prompt: Category
|
|
@@ -61,6 +55,7 @@ actions.create-character.steps.roll3.name: Table roll
|
|
|
61
55
|
actions.create-character.steps.skillMethod.prompt: Background skills
|
|
62
56
|
actions.create-character.steps.split.prompt: Divide three rolls
|
|
63
57
|
actions.create-character.steps.stowArmor.prompt: Stow armor (over the Readied limit)
|
|
58
|
+
actions.create-character.steps.readyGear.prompt: Ready gear (over the Stowed limit)
|
|
64
59
|
actions.create-character.steps.stowGear.prompt: Stow gear (over the Readied limit)
|
|
65
60
|
actions.create-character.steps.stowWeapon.prompt: Stow a weapon (over the Readied limit)
|
|
66
61
|
actions.create-character.steps.str.name: Strength
|
|
@@ -74,9 +69,34 @@ actions.gain-benefit.options.int.name: Intelligence
|
|
|
74
69
|
actions.gain-benefit.options.wis.name: Wisdom
|
|
75
70
|
actions.gain-benefit.options.cha.name: Charisma
|
|
76
71
|
actions.gain-benefit.params.entry.name: Entry
|
|
72
|
+
actions.gain-benefit.params.entry.values.administer.name: Administer
|
|
73
|
+
actions.gain-benefit.params.entry.values.connect.name: Connect
|
|
74
|
+
actions.gain-benefit.params.entry.values.drive.name: Drive
|
|
75
|
+
actions.gain-benefit.params.entry.values.exert.name: Exert
|
|
76
|
+
actions.gain-benefit.params.entry.values.fix.name: Fix
|
|
77
|
+
actions.gain-benefit.params.entry.values.heal.name: Heal
|
|
78
|
+
actions.gain-benefit.params.entry.values.know.name: Know
|
|
79
|
+
actions.gain-benefit.params.entry.values.lead.name: Lead
|
|
80
|
+
actions.gain-benefit.params.entry.values.notice.name: Notice
|
|
81
|
+
actions.gain-benefit.params.entry.values.perform.name: Perform
|
|
82
|
+
actions.gain-benefit.params.entry.values.program.name: Program
|
|
83
|
+
actions.gain-benefit.params.entry.values.punch.name: Punch
|
|
84
|
+
actions.gain-benefit.params.entry.values.shoot.name: Shoot
|
|
85
|
+
actions.gain-benefit.params.entry.values.sneak.name: Sneak
|
|
86
|
+
actions.gain-benefit.params.entry.values.stab.name: Stab
|
|
87
|
+
actions.gain-benefit.params.entry.values.survive.name: Survive
|
|
88
|
+
actions.gain-benefit.params.entry.values.talk.name: Talk
|
|
89
|
+
actions.gain-benefit.params.entry.values.trade.name: Trade
|
|
90
|
+
actions.gain-benefit.params.entry.values.work.name: Work
|
|
91
|
+
actions.gain-benefit.params.entry.values.any-combat.name: Any combat skill
|
|
92
|
+
actions.gain-benefit.params.entry.values.any-skill.name: Any skill
|
|
93
|
+
actions.gain-benefit.params.entry.values.any-stat-1.name: +1 any attribute
|
|
94
|
+
actions.gain-benefit.params.entry.values.physical2.name: +2 physical attributes
|
|
95
|
+
actions.gain-benefit.params.entry.values.mental2.name: +2 mental attributes
|
|
77
96
|
actions.gain-benefit.params.prefer.name: Preferred skills
|
|
78
97
|
actions.gain-benefit.params.random.name: Random
|
|
79
98
|
actions.gain-benefit.results.gained.name: Gained
|
|
99
|
+
actions.gain-benefit.results.none.name: Every skill at its cap
|
|
80
100
|
actions.gain-benefit.steps.stat.prompt: Attribute bonus
|
|
81
101
|
actions.gain-edge.name: Gain an edge
|
|
82
102
|
actions.gain-edge.params.random.name: Random
|
|
@@ -114,6 +134,7 @@ actions.gain-skill.params.prefer.name: Preferred skills
|
|
|
114
134
|
actions.gain-skill.params.random.name: Random
|
|
115
135
|
actions.gain-skill.params.skills.name: Skills
|
|
116
136
|
actions.gain-skill.results.gained.name: Gained
|
|
137
|
+
actions.gain-skill.results.none.name: Every skill at its cap
|
|
117
138
|
actions.gain-skill.steps.skill.prompt: Skill
|
|
118
139
|
actions.improve-attribute.name: Improve an attribute
|
|
119
140
|
actions.improve-attribute.params.attribute.name: Attribute
|
|
@@ -225,6 +246,7 @@ actions.skill-points-toward.params.points.name: Points
|
|
|
225
246
|
actions.skill-points-toward.params.random.name: Random
|
|
226
247
|
actions.skill-points-toward.params.skills.name: Skills
|
|
227
248
|
actions.skill-points-toward.results.spent.name: Spent
|
|
249
|
+
actions.skill-points-toward.results.none.name: Every skill at level-4
|
|
228
250
|
actions.skill-points-toward.steps.skill.prompt: Skill
|
|
229
251
|
actions.starting-equipment.name: Starting equipment
|
|
230
252
|
actions.starting-equipment.options.1.name: Entry 1
|
|
@@ -247,39 +269,12 @@ actions.starting-equipment.options.6.name: Entry 6
|
|
|
247
269
|
actions.starting-equipment.options.7.name: Entry 7
|
|
248
270
|
actions.starting-equipment.options.8.name: Entry 8
|
|
249
271
|
actions.starting-equipment.options.9.name: Entry 9
|
|
250
|
-
actions.starting-equipment.options.backpack.name: Backpack
|
|
251
|
-
actions.starting-equipment.options.binoculars.name: Binoculars
|
|
252
|
-
actions.starting-equipment.options.camping-kit.name: Camping kit
|
|
253
|
-
actions.starting-equipment.options.cash.name: '$1,000 in small bills'
|
|
254
|
-
actions.starting-equipment.options.cold-weather-clothes.name: Cold weather clothing
|
|
255
|
-
actions.starting-equipment.options.criminal-firearm.name: A criminal's non-military firearm
|
|
256
|
-
actions.starting-equipment.options.first-aid-kit.name: First aid kit
|
|
257
|
-
actions.starting-equipment.options.flashlight.name: Flashlight
|
|
258
|
-
actions.starting-equipment.options.heavy-pistol.name: Heavy pistol
|
|
259
272
|
actions.starting-equipment.options.innocents.name: Hapless innocents
|
|
260
|
-
actions.starting-equipment.options.knife.name: Knife
|
|
261
|
-
actions.starting-equipment.options.laptop.name: Laptop
|
|
262
|
-
actions.starting-equipment.options.light-pistol.name: Light pistol
|
|
263
|
-
actions.starting-equipment.options.lighters.name: 20 disposable lighters
|
|
264
|
-
actions.starting-equipment.options.lockpick-kit.name: Lockpick kit
|
|
265
273
|
actions.starting-equipment.options.near-future.name: 'Wasteland warrior: near-future survivor'
|
|
266
274
|
actions.starting-equipment.options.pick.name: Pick one item
|
|
267
275
|
actions.starting-equipment.options.prepared.name: You saw it coming
|
|
268
|
-
actions.starting-equipment.options.preserved-food.name: 7 days' preserved food
|
|
269
|
-
actions.starting-equipment.options.profession-item.name: An item from your background
|
|
270
|
-
actions.starting-equipment.options.purification-tablets.name: 100 water purification tablets
|
|
271
|
-
actions.starting-equipment.options.radio.name: Portable ham radio
|
|
272
|
-
actions.starting-equipment.options.rifle.name: Rifle
|
|
273
276
|
actions.starting-equipment.options.roll.name: Roll three times
|
|
274
|
-
actions.starting-equipment.options.shotgun.name: Shotgun
|
|
275
|
-
actions.starting-equipment.options.sleeping-bag.name: Sleeping bag
|
|
276
|
-
actions.starting-equipment.options.smartphone.name: Smartphone
|
|
277
|
-
actions.starting-equipment.options.solar-charger.name: Solar charger
|
|
278
|
-
actions.starting-equipment.options.tent.name: Tent
|
|
279
|
-
actions.starting-equipment.options.toolkit.name: Toolkit
|
|
280
|
-
actions.starting-equipment.options.walkie-talkies.name: A pair of walkie-talkies
|
|
281
277
|
actions.starting-equipment.options.wasteland.name: 'Wasteland warrior: wasteland wanderer'
|
|
282
|
-
actions.starting-equipment.options.water-purifier.name: Water purifier
|
|
283
278
|
actions.starting-equipment.params.random.name: Random
|
|
284
279
|
actions.starting-equipment.results.equipped.name: Equipped
|
|
285
280
|
actions.starting-equipment.steps.entry.prompt: Table entry
|
|
@@ -460,7 +455,7 @@ fields.xp.next.name: Next level at
|
|
|
460
455
|
fields.xp.rate.name: Advancement rate
|
|
461
456
|
fields.xp.rate.values.fast.name: Fast
|
|
462
457
|
fields.xp.rate.values.slow.name: Slow
|
|
463
|
-
groups.advancement-actions.label: Advancement
|
|
458
|
+
groups.advancement-actions.label: Advancement actions
|
|
464
459
|
groups.advancement.label: Advancement
|
|
465
460
|
groups.armor.label: Armor
|
|
466
461
|
groups.attacks.label: Attacks
|
|
@@ -490,6 +485,7 @@ situational.versus.values.other.name: Anything else
|
|
|
490
485
|
situational.versus.values.poison.name: Poison
|
|
491
486
|
situational.versus.values.radiation.name: Radiation
|
|
492
487
|
tags.advancement.name: Advancement
|
|
488
|
+
tags.advancement.level.name: New level
|
|
493
489
|
tags.animal.name: Animal
|
|
494
490
|
tags.attack.melee.name: Melee attack
|
|
495
491
|
tags.attack.name: Attack
|
|
@@ -516,6 +512,9 @@ tags.bundleable.name: Bundles three to one
|
|
|
516
512
|
tags.burst.name: Burst fire
|
|
517
513
|
tags.check.name: Skill check
|
|
518
514
|
tags.creation.name: Creation
|
|
515
|
+
tags.creation.finish.name: Creation finish
|
|
516
|
+
tags.creation.kit.name: Starting equipment pick
|
|
517
|
+
tags.creation.mutation.name: Mutation point spending
|
|
519
518
|
tags.damage.name: Damage
|
|
520
519
|
tags.drug.name: Drug
|
|
521
520
|
tags.energy.name: Energy weapon
|
|
@@ -564,6 +563,12 @@ tags.suppress.name: Suppressive fire
|
|
|
564
563
|
tags.thrown.name: Thrown
|
|
565
564
|
tags.two-handed.name: Two-handed
|
|
566
565
|
tags.vision.name: Improves sight
|
|
566
|
+
tags.repeatable.name: Taken more than once
|
|
567
|
+
tags.first-edge.name: Only as the first edge
|
|
568
|
+
tags.needs-mutant.name: Mutants only
|
|
569
|
+
tags.makes-mutant.name: Makes a mutant
|
|
570
|
+
tags.not-mutant.name: Not for mutants
|
|
571
|
+
tags.not-underdog.name: Not under the underdog rule
|
|
567
572
|
types.armor.fields.ac.name: AC
|
|
568
573
|
types.armor.fields.cost.name: Cost
|
|
569
574
|
types.armor.fields.enc.name: Encumbrance
|
|
@@ -596,6 +601,7 @@ types.focus.fields.bonusSkill2.name: Second bonus skill options
|
|
|
596
601
|
types.focus.fields.maxLevel.name: Levels
|
|
597
602
|
types.focus.fields.specialty.name: Bonus skill is the specialised skill
|
|
598
603
|
types.focus.fields.multiple.name: May be taken more than once
|
|
604
|
+
types.focus.state.level.name: Level
|
|
599
605
|
types.focus.name: Focus
|
|
600
606
|
types.gear.fields.cost.name: Cost
|
|
601
607
|
types.gear.fields.enc.name: Encumbrance
|
|
@@ -603,10 +609,12 @@ types.gear.fields.healSkill.name: Heal skill to apply
|
|
|
603
609
|
types.gear.fields.techLevel.name: Tech level
|
|
604
610
|
types.gear.fields.wornFree.name: No encumbrance while worn
|
|
605
611
|
types.gear.name: Gear
|
|
612
|
+
types.mutationCategory.name: Mutation category
|
|
606
613
|
types.mutation.fields.bonusSkill.name: Bonus skill options
|
|
607
614
|
types.mutation.fields.category.name: Category
|
|
608
615
|
types.mutation.fields.roll.name: d10 roll
|
|
609
616
|
types.mutation.name: Positive mutation
|
|
617
|
+
types.mutation.state.origin.name: How it was gained
|
|
610
618
|
types.mutation.state.origin.values.category.name: Rolled in a category
|
|
611
619
|
types.mutation.state.origin.values.chosen.name: Chosen
|
|
612
620
|
types.mutation.state.origin.values.free.name: Free
|
|
@@ -614,6 +622,7 @@ types.mutation.state.origin.values.random.name: Rolled
|
|
|
614
622
|
types.mutation.state.origin.values.unstable.name: Unstable Mutant
|
|
615
623
|
types.negative.fields.roll.name: d100 roll
|
|
616
624
|
types.negative.name: Negative mutation
|
|
625
|
+
types.negative.state.light.name: Lightly touched
|
|
617
626
|
types.weapon.fields.attributes.name: Attributes
|
|
618
627
|
types.weapon.fields.cost.name: Cost
|
|
619
628
|
types.weapon.fields.damage.name: Damage
|
|
@@ -629,3 +638,12 @@ types.weapon.fields.techLevel.name: Tech level
|
|
|
629
638
|
types.weapon.fields.traumaDie.name: Trauma die
|
|
630
639
|
types.weapon.fields.traumaRating.name: Trauma rating
|
|
631
640
|
types.weapon.name: Weapon
|
|
641
|
+
types.weapon.state.shots.name: Shots loaded
|
|
642
|
+
types.weapon.computed.skillLevel.name: Skill level
|
|
643
|
+
types.weapon.computed.attributeMod.name: Attribute modifier
|
|
644
|
+
types.weapon.computed.armed.name: Armed melee
|
|
645
|
+
types.weapon.computed.close.name: Close combat
|
|
646
|
+
types.weapon.computed.hit.name: Hit bonus
|
|
647
|
+
types.weapon.computed.damage.name: Damage bonus
|
|
648
|
+
types.weapon.computed.shockDamage.name: Shock damage
|
|
649
|
+
types.weapon.computed.shockAnyAc.name: Shock against any AC
|
package/pack.yaml
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opencharacter/awn-core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"description": "Unofficial Open Character Format pack for Ashes Without Number's character rules, with free-edition text used by the author's permission.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"ashes-without-number",
|
|
@@ -52,7 +52,7 @@
|
|
|
52
52
|
"access": "public"
|
|
53
53
|
},
|
|
54
54
|
"devDependencies": {
|
|
55
|
-
"@opencharacter/engine": "0.
|
|
55
|
+
"@opencharacter/engine": "0.3.0"
|
|
56
56
|
},
|
|
57
57
|
"engines": {
|
|
58
58
|
"node": ">=22"
|
package/rules/advancement.yaml
CHANGED
|
@@ -22,12 +22,13 @@ actions:
|
|
|
22
22
|
# old maximum plus one. Saves and attack bonus follow the level.
|
|
23
23
|
- id: level-up
|
|
24
24
|
tags: [advancement]
|
|
25
|
-
available: '!character.creating && level < 10'
|
|
25
|
+
available: '!character.creating && level < 10 && xp.current >= xp.next'
|
|
26
26
|
params:
|
|
27
27
|
random: { type: boolean, default: false }
|
|
28
28
|
results: [advanced]
|
|
29
29
|
steps:
|
|
30
30
|
- id: up
|
|
31
|
+
tags: [advancement.level]
|
|
31
32
|
kind: changes
|
|
32
33
|
changes:
|
|
33
34
|
- { type: set, field: level, value: level + 1 }
|
|
@@ -85,6 +86,7 @@ actions:
|
|
|
85
86
|
# A new edge, with what it brings: its bonus skill (a pick at creation, three skill points
|
|
86
87
|
# later), Educated's points for earlier levels, a later Mutant's mutations.
|
|
87
88
|
- id: gain-edge
|
|
89
|
+
available: edges.count < edges.allowed
|
|
88
90
|
tags: [advancement]
|
|
89
91
|
params:
|
|
90
92
|
random: { type: boolean, default: false }
|
|
@@ -97,12 +99,12 @@ actions:
|
|
|
97
99
|
content:
|
|
98
100
|
type: edge
|
|
99
101
|
where: >-
|
|
100
|
-
(!(item.id in edges.held) ||
|
|
101
|
-
&& (
|
|
102
|
-
&& (
|
|
103
|
-
&& (
|
|
104
|
-
&& (
|
|
105
|
-
&& (
|
|
102
|
+
(!(item.id in edges.held) || 'repeatable' in item.tags)
|
|
103
|
+
&& (!('first-edge' in item.tags) || (character.creating && edges.count == 0))
|
|
104
|
+
&& !('needs-mutant' in item.tags && !mutations.mutant)
|
|
105
|
+
&& !('makes-mutant' in item.tags && mutations.barred)
|
|
106
|
+
&& !('not-mutant' in item.tags && mutations.mutant)
|
|
107
|
+
&& !('not-underdog' in item.tags && edges.underdog)
|
|
106
108
|
random: params.random
|
|
107
109
|
recommend: options[0]
|
|
108
110
|
changes:
|
|
@@ -113,31 +115,13 @@ actions:
|
|
|
113
115
|
when: size(steps.edge.item.bonusSkill) > 0
|
|
114
116
|
use: bonus-skill
|
|
115
117
|
params: { skills: steps.edge.item.bonusSkill, random: params.random }
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
when: '!character.creating && steps.edge.picked == @edges.educated'
|
|
119
|
-
changes:
|
|
120
|
-
- { type: adjust, field: skills.points, by: level - 1 }
|
|
121
|
-
- id: mutate
|
|
122
|
-
kind: action
|
|
123
|
-
when: '!character.creating && steps.edge.picked == @edges.mutant'
|
|
124
|
-
use: mutate
|
|
125
|
-
params: { random: params.random }
|
|
126
|
-
- id: accelerate1
|
|
127
|
-
kind: action
|
|
128
|
-
sheet: proposed
|
|
129
|
-
when: >-
|
|
130
|
-
!character.creating && steps.edge.picked == @edges.mutation-acceleration
|
|
131
|
-
&& mutations.points.left >= 1
|
|
132
|
-
use: buy-mutation
|
|
133
|
-
params: { random: params.random }
|
|
134
|
-
- id: accelerate2
|
|
118
|
+
# What the edge itself brings when taken (its own `gain-part`).
|
|
119
|
+
- id: part
|
|
135
120
|
kind: action
|
|
136
121
|
sheet: proposed
|
|
137
|
-
when:
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
use: buy-mutation
|
|
122
|
+
when: steps.edge.item.gainPart
|
|
123
|
+
entry: 'steps.edge.added[0]'
|
|
124
|
+
use: gain-part
|
|
141
125
|
params: { random: params.random }
|
|
142
126
|
- id: result
|
|
143
127
|
kind: outcome
|
|
@@ -146,6 +130,7 @@ actions:
|
|
|
146
130
|
# A focus level: a new focus at level 1 with its bonus skills (a pick each at creation, three
|
|
147
131
|
# skill points each later), or the second level of one the character has.
|
|
148
132
|
- id: gain-focus
|
|
133
|
+
available: foci.count < foci.allowed
|
|
149
134
|
tags: [advancement]
|
|
150
135
|
params:
|
|
151
136
|
random: { type: boolean, default: false }
|
|
@@ -161,7 +146,7 @@ actions:
|
|
|
161
146
|
(countCopies(copy.item == item.id) == 0 || item.multiple
|
|
162
147
|
|| countCopies(copy.item == item.id && copy.state.level < item.maxLevel) > 0)
|
|
163
148
|
&& !(item.id in foci.held && countCopies(copy.item == item.id) == 0)
|
|
164
|
-
&& (
|
|
149
|
+
&& !('needs-mutant' in item.tags && !mutations.mutant)
|
|
165
150
|
random: params.random
|
|
166
151
|
recommend: options[0]
|
|
167
152
|
# Specialist again: a second level of a held one, or another skill.
|
|
@@ -230,17 +215,21 @@ actions:
|
|
|
230
215
|
when: flags.new && size(steps.focus.item.bonusSkill2) > 0
|
|
231
216
|
use: bonus-skill
|
|
232
217
|
params: { skills: steps.focus.item.bonusSkill2, random: params.random }
|
|
233
|
-
|
|
218
|
+
# What a new focus itself brings (its own `gain-part`).
|
|
219
|
+
- id: part
|
|
234
220
|
kind: action
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
221
|
+
sheet: proposed
|
|
222
|
+
when: flags.new && steps.focus.item.gainPart
|
|
223
|
+
entry: 'steps.add.added[0]'
|
|
224
|
+
use: gain-part
|
|
225
|
+
params: { random: params.random }
|
|
238
226
|
- id: result
|
|
239
227
|
kind: outcome
|
|
240
228
|
result: "'gained'"
|
|
241
229
|
|
|
242
230
|
# A bonus skill: a skill pick at creation, three skill points toward it afterwards.
|
|
243
231
|
- id: bonus-skill
|
|
232
|
+
listed: false
|
|
244
233
|
params:
|
|
245
234
|
skills: { type: set, of: string, default: [] }
|
|
246
235
|
random: { type: boolean, default: false }
|
|
@@ -263,11 +252,12 @@ actions:
|
|
|
263
252
|
# Skill points spent toward one skill, raising it as far as they go with its credit; what's
|
|
264
253
|
# left stays as credit. A skill at level-4 can't take them, so another is chosen.
|
|
265
254
|
- id: skill-points-toward
|
|
255
|
+
listed: false
|
|
266
256
|
params:
|
|
267
257
|
skills: { type: set, of: string, default: [] }
|
|
268
258
|
points: { type: integer, default: 3, min: 0 }
|
|
269
259
|
random: { type: boolean, default: false }
|
|
270
|
-
results: [spent]
|
|
260
|
+
results: [spent, none]
|
|
271
261
|
steps:
|
|
272
262
|
- id: offer
|
|
273
263
|
kind: branch
|
|
@@ -288,6 +278,11 @@ actions:
|
|
|
288
278
|
size(flags.open) > 0 ? flags.open
|
|
289
279
|
: filterList(keysOf('skill'),
|
|
290
280
|
fieldOf('skills.{skill}.level', x) < fieldOf('skills.{skill}.cap', x))
|
|
281
|
+
# Every skill at level-4: nothing to spend on.
|
|
282
|
+
- id: none
|
|
283
|
+
kind: outcome
|
|
284
|
+
when: size(flags.offered) == 0
|
|
285
|
+
result: "'none'"
|
|
291
286
|
- id: skill
|
|
292
287
|
kind: choice
|
|
293
288
|
options: { values: { formula: flags.offered } }
|
|
@@ -326,10 +321,10 @@ actions:
|
|
|
326
321
|
kind: changes
|
|
327
322
|
changes:
|
|
328
323
|
- type: set
|
|
329
|
-
field: { formula: "'skills.'
|
|
324
|
+
field: { formula: "fieldId('skills.{skill}.level', steps.skill.picked)" }
|
|
330
325
|
value: flags.level3
|
|
331
326
|
- type: set
|
|
332
|
-
field: { formula: "'skills.'
|
|
327
|
+
field: { formula: "fieldId('skills.{skill}.credit', steps.skill.picked)" }
|
|
333
328
|
value: flags.credit3
|
|
334
329
|
- id: result
|
|
335
330
|
kind: outcome
|
|
@@ -340,10 +335,12 @@ actions:
|
|
|
340
335
|
# level-1 2, level-2 3 (from 3rd level), level-3 4 (from 6th), level-4 5 (from 9th).
|
|
341
336
|
- id: improve-skill
|
|
342
337
|
tags: [advancement]
|
|
343
|
-
available:
|
|
338
|
+
available: >-
|
|
339
|
+
!character.creating && (skills.points > 0 || maxList(keysOf('skill'), fieldOf('skills.{skill}.credit', x)) > 0)
|
|
344
340
|
params:
|
|
345
341
|
skill:
|
|
346
342
|
type: enum
|
|
343
|
+
open: true
|
|
347
344
|
values:
|
|
348
345
|
[
|
|
349
346
|
administer,
|
|
@@ -395,10 +392,10 @@ actions:
|
|
|
395
392
|
kind: changes
|
|
396
393
|
changes:
|
|
397
394
|
- type: set
|
|
398
|
-
field: { formula: "'skills.'
|
|
395
|
+
field: { formula: "fieldId('skills.{skill}.level', params.skill)" }
|
|
399
396
|
value: flags.level + 1
|
|
400
397
|
- type: set
|
|
401
|
-
field: { formula: "'skills.'
|
|
398
|
+
field: { formula: "fieldId('skills.{skill}.credit', params.skill)" }
|
|
402
399
|
value: flags.credit - flags.fromCredit
|
|
403
400
|
- { type: adjust, field: skills.points, by: 'flags.fromCredit - flags.cost' }
|
|
404
401
|
- id: result
|
|
@@ -409,7 +406,9 @@ actions:
|
|
|
409
406
|
# the first two from 2nd level, the others from 3rd, 6th and 9th. Not for underdogs.
|
|
410
407
|
- id: improve-attribute
|
|
411
408
|
tags: [advancement]
|
|
412
|
-
available:
|
|
409
|
+
available: >-
|
|
410
|
+
!character.creating && !edges.underdog && attributes.boosts < 5
|
|
411
|
+
&& skills.points > attributes.boosts && level >= [2, 2, 3, 6, 9][attributes.boosts]
|
|
413
412
|
params:
|
|
414
413
|
attribute: { type: enum, values: [str, dex, con, int, wis, cha] }
|
|
415
414
|
results: [improved, maxed, level-too-low, not-enough-points]
|
package/rules/backgrounds.yaml
CHANGED
|
@@ -8,6 +8,7 @@ contentTypes:
|
|
|
8
8
|
freeSkill:
|
|
9
9
|
{
|
|
10
10
|
type: enum,
|
|
11
|
+
open: true,
|
|
11
12
|
values:
|
|
12
13
|
&entries [
|
|
13
14
|
administer,
|
|
@@ -37,22 +38,22 @@ contentTypes:
|
|
|
37
38
|
],
|
|
38
39
|
required: true,
|
|
39
40
|
}
|
|
40
|
-
quickSkill1: { type: enum, values: *entries, required: true }
|
|
41
|
-
quickSkill2: { type: enum, values: *entries, required: true }
|
|
42
|
-
growth1: { type: enum, values: *entries, required: true }
|
|
43
|
-
growth2: { type: enum, values: *entries, required: true }
|
|
44
|
-
growth3: { type: enum, values: *entries, required: true }
|
|
45
|
-
growth4: { type: enum, values: *entries, required: true }
|
|
46
|
-
growth5: { type: enum, values: *entries, required: true }
|
|
47
|
-
growth6: { type: enum, values: *entries, required: true }
|
|
48
|
-
learning1: { type: enum, values: *entries, required: true }
|
|
49
|
-
learning2: { type: enum, values: *entries, required: true }
|
|
50
|
-
learning3: { type: enum, values: *entries, required: true }
|
|
51
|
-
learning4: { type: enum, values: *entries, required: true }
|
|
52
|
-
learning5: { type: enum, values: *entries, required: true }
|
|
53
|
-
learning6: { type: enum, values: *entries, required: true }
|
|
54
|
-
learning7: { type: enum, values: *entries, required: true }
|
|
55
|
-
learning8: { type: enum, values: *entries, required: true }
|
|
41
|
+
quickSkill1: { type: enum, values: *entries, required: true, open: true }
|
|
42
|
+
quickSkill2: { type: enum, values: *entries, required: true, open: true }
|
|
43
|
+
growth1: { type: enum, values: *entries, required: true, open: true }
|
|
44
|
+
growth2: { type: enum, values: *entries, required: true, open: true }
|
|
45
|
+
growth3: { type: enum, values: *entries, required: true, open: true }
|
|
46
|
+
growth4: { type: enum, values: *entries, required: true, open: true }
|
|
47
|
+
growth5: { type: enum, values: *entries, required: true, open: true }
|
|
48
|
+
growth6: { type: enum, values: *entries, required: true, open: true }
|
|
49
|
+
learning1: { type: enum, values: *entries, required: true, open: true }
|
|
50
|
+
learning2: { type: enum, values: *entries, required: true, open: true }
|
|
51
|
+
learning3: { type: enum, values: *entries, required: true, open: true }
|
|
52
|
+
learning4: { type: enum, values: *entries, required: true, open: true }
|
|
53
|
+
learning5: { type: enum, values: *entries, required: true, open: true }
|
|
54
|
+
learning6: { type: enum, values: *entries, required: true, open: true }
|
|
55
|
+
learning7: { type: enum, values: *entries, required: true, open: true }
|
|
56
|
+
learning8: { type: enum, values: *entries, required: true, open: true }
|
|
56
57
|
|
|
57
58
|
constraints:
|
|
58
59
|
- id: creation-background
|
package/rules/checks.yaml
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
resultBands:
|
|
2
2
|
# A skill check succeeds at or over its difficulty; without one, the total is the result.
|
|
3
3
|
check:
|
|
4
|
-
- {
|
|
4
|
+
- {
|
|
5
|
+
id: success,
|
|
6
|
+
when: 'has(params.difficulty) && roll.total >= params.difficulty',
|
|
7
|
+
success: true,
|
|
8
|
+
}
|
|
5
9
|
- { id: failure, when: has(params.difficulty) }
|
|
6
10
|
- { id: rolled, when: true }
|
package/rules/combat.yaml
CHANGED