@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.
Files changed (123) hide show
  1. package/README.md +48 -3
  2. package/content/edges/educated.yaml +11 -0
  3. package/content/edges/focused.yaml +1 -0
  4. package/content/edges/forged-by-fire.yaml +1 -0
  5. package/content/edges/hardened-genetics.yaml +1 -0
  6. package/content/edges/mutant.yaml +17 -0
  7. package/content/edges/mutation-acceleration.yaml +24 -0
  8. package/content/edges/prodigy.yaml +1 -0
  9. package/content/foci/unstable-mutant.yaml +14 -0
  10. package/content/mutation-categories/cognition.yaml +2 -0
  11. package/content/mutation-categories/exotic.yaml +2 -0
  12. package/content/mutation-categories/hybrid.yaml +2 -0
  13. package/content/mutation-categories/pseudo-psychic.yaml +2 -0
  14. package/content/mutation-categories/sense.yaml +2 -0
  15. package/content/mutation-categories/structure.yaml +2 -0
  16. package/content/mutations/cognition/augmented-cognition.yaml +1 -1
  17. package/content/mutations/cognition/ballistic-calculator.yaml +1 -1
  18. package/content/mutations/cognition/eidetic-memory.yaml +1 -1
  19. package/content/mutations/cognition/internal-map.yaml +1 -1
  20. package/content/mutations/cognition/intuitive-leap.yaml +1 -1
  21. package/content/mutations/cognition/memory-eater.yaml +1 -1
  22. package/content/mutations/cognition/mental-bifurcation.yaml +1 -1
  23. package/content/mutations/cognition/mind-over-body.yaml +1 -1
  24. package/content/mutations/cognition/omniglot.yaml +1 -1
  25. package/content/mutations/cognition/predictive-analysis.yaml +1 -1
  26. package/content/mutations/exotic/chameleon-field.yaml +1 -1
  27. package/content/mutations/exotic/electrical-generation.yaml +1 -1
  28. package/content/mutations/exotic/hemovore.yaml +1 -1
  29. package/content/mutations/exotic/image-projection.yaml +1 -1
  30. package/content/mutations/exotic/metamorph.yaml +1 -1
  31. package/content/mutations/exotic/molecular-phasing.yaml +1 -1
  32. package/content/mutations/exotic/natural-projectiles.yaml +1 -1
  33. package/content/mutations/exotic/pheromone-cloud.yaml +1 -1
  34. package/content/mutations/exotic/photon-manipulation.yaml +1 -1
  35. package/content/mutations/exotic/sound-generation.yaml +1 -1
  36. package/content/mutations/hybrid/aquatic-adaptation.yaml +1 -1
  37. package/content/mutations/hybrid/arboreal-aptitude.yaml +1 -1
  38. package/content/mutations/hybrid/centauroid.yaml +1 -1
  39. package/content/mutations/hybrid/crushing-jaws.yaml +1 -1
  40. package/content/mutations/hybrid/digitigrade-legs.yaml +1 -1
  41. package/content/mutations/hybrid/functional-wings.yaml +1 -1
  42. package/content/mutations/hybrid/prehensile-limb.yaml +1 -1
  43. package/content/mutations/hybrid/savage-claws.yaml +1 -1
  44. package/content/mutations/hybrid/thick-hide.yaml +1 -1
  45. package/content/mutations/hybrid/venom-glands.yaml +1 -1
  46. package/content/mutations/pseudo-psychic/force-field.yaml +1 -1
  47. package/content/mutations/pseudo-psychic/induce-confusion.yaml +1 -1
  48. package/content/mutations/pseudo-psychic/limited-precognition.yaml +1 -1
  49. package/content/mutations/pseudo-psychic/mental-domination.yaml +1 -1
  50. package/content/mutations/pseudo-psychic/mind-reader.yaml +1 -1
  51. package/content/mutations/pseudo-psychic/neural-lockdown.yaml +1 -1
  52. package/content/mutations/pseudo-psychic/panic-wave.yaml +1 -1
  53. package/content/mutations/pseudo-psychic/spatial-displacement.yaml +1 -1
  54. package/content/mutations/pseudo-psychic/telekinetic-reach.yaml +1 -1
  55. package/content/mutations/pseudo-psychic/thermokinesis.yaml +1 -1
  56. package/content/mutations/sense/accelerated-perception.yaml +1 -1
  57. package/content/mutations/sense/acute-hearing.yaml +1 -1
  58. package/content/mutations/sense/acute-olfaction.yaml +1 -1
  59. package/content/mutations/sense/echolocation.yaml +1 -1
  60. package/content/mutations/sense/empathic-sensitivity.yaml +1 -1
  61. package/content/mutations/sense/night-vision.yaml +1 -1
  62. package/content/mutations/sense/panoptic-vision.yaml +1 -1
  63. package/content/mutations/sense/tactile-analysis.yaml +1 -1
  64. package/content/mutations/sense/telescopic-sight.yaml +1 -1
  65. package/content/mutations/sense/thermal-vision.yaml +1 -1
  66. package/content/mutations/structure/augmented-muscle.yaml +1 -1
  67. package/content/mutations/structure/explosive-exertion.yaml +1 -1
  68. package/content/mutations/structure/hypercontortion.yaml +1 -1
  69. package/content/mutations/structure/improved-joints.yaml +1 -1
  70. package/content/mutations/structure/leaper.yaml +1 -1
  71. package/content/mutations/structure/redundant-organs.yaml +1 -1
  72. package/content/mutations/structure/regenerator.yaml +1 -1
  73. package/content/mutations/structure/reinforced-tissues.yaml +1 -1
  74. package/content/mutations/structure/sealed-systems.yaml +1 -1
  75. package/content/mutations/structure/stamina-reserves.yaml +1 -1
  76. package/content/prepared/backpack.yaml +5 -0
  77. package/content/prepared/binoculars.yaml +4 -0
  78. package/content/prepared/camping-kit.yaml +4 -0
  79. package/content/prepared/cash.yaml +4 -0
  80. package/content/prepared/cold-weather-clothes.yaml +5 -0
  81. package/content/prepared/criminal-firearm.yaml +7 -0
  82. package/content/prepared/first-aid-kit.yaml +4 -0
  83. package/content/prepared/flashlight.yaml +4 -0
  84. package/content/prepared/heavy-pistol.yaml +7 -0
  85. package/content/prepared/knife.yaml +5 -0
  86. package/content/prepared/laptop.yaml +4 -0
  87. package/content/prepared/light-pistol.yaml +7 -0
  88. package/content/prepared/lighters.yaml +4 -0
  89. package/content/prepared/lockpick-kit.yaml +4 -0
  90. package/content/prepared/preserved-food.yaml +4 -0
  91. package/content/prepared/profession-item.yaml +4 -0
  92. package/content/prepared/purification-tablets.yaml +4 -0
  93. package/content/prepared/radio.yaml +4 -0
  94. package/content/prepared/rifle.yaml +7 -0
  95. package/content/prepared/shotgun.yaml +7 -0
  96. package/content/prepared/sleeping-bag.yaml +4 -0
  97. package/content/prepared/smartphone.yaml +4 -0
  98. package/content/prepared/solar-charger.yaml +4 -0
  99. package/content/prepared/tent.yaml +4 -0
  100. package/content/prepared/toolkit.yaml +4 -0
  101. package/content/prepared/walkie-talkies.yaml +5 -0
  102. package/content/prepared/water-purifier.yaml +4 -0
  103. package/content/weapons/primitive-bow.yaml +1 -0
  104. package/dist/i18n/en.js +1 -1
  105. package/dist/i18n/en.json +101 -34
  106. package/dist/index.js +1 -1
  107. package/dist/release.json +2008 -1434
  108. package/i18n/en/content.yaml +49 -0
  109. package/i18n/en/core.yaml +52 -34
  110. package/pack.yaml +2 -2
  111. package/package.json +2 -2
  112. package/rules/advancement.yaml +41 -42
  113. package/rules/backgrounds.yaml +17 -16
  114. package/rules/checks.yaml +5 -1
  115. package/rules/combat.yaml +1 -1
  116. package/rules/creation.yaml +71 -25
  117. package/rules/features.yaml +9 -4
  118. package/rules/gear.yaml +20 -1
  119. package/rules/layout.yaml +2 -0
  120. package/rules/mutations.yaml +50 -26
  121. package/rules/skills.yaml +8 -4
  122. package/rules/starting-equipment.yaml +24 -101
  123. package/rules/tags.yaml +13 -0
package/README.md CHANGED
@@ -15,6 +15,9 @@ edition and is used with the author's permission. Nothing from the paid edition
15
15
  pnpm add @opencharacter/awn-core @opencharacter/engine
16
16
  ```
17
17
 
18
+ This release needs spec 0.3: `@opencharacter/engine` 0.3.0 or later. An engine for an older
19
+ spec refuses it (`spec-version-unsupported`).
20
+
18
21
  ```ts
19
22
  import { applyChanges, loadRuleset, startAction } from '@opencharacter/engine';
20
23
  import apocalypse from '@opencharacter/awn-core';
@@ -25,9 +28,9 @@ const { ruleset } = loaded;
25
28
 
26
29
  // A random survivor: every roll and pick made by the engine.
27
30
  const blank = {
28
- specVersion: '0.2.0',
31
+ specVersion: '0.3.0',
29
32
  id: 'survivor',
30
- packs: [{ id: 'awn-core', version: '0.1.0' }],
33
+ packs: [{ id: 'awn-core', version: '0.2.0' }],
31
34
  creating: true,
32
35
  };
33
36
  const run = startAction(ruleset, blank, {
@@ -83,13 +86,55 @@ const run = startAction(ruleset, blank, {
83
86
  - **Encumbrance:** Readied (equipped) and Stowed loads against Strength, small items bundled
84
87
  three to one when stowed, and the slower moves of pushing past the limits. A start that brings
85
88
  more than its Strength can haul stows Readied items, then leaves Stowed ones behind, heaviest
86
- first, until it is within the limits.
89
+ first, until it is within the limits. A guided player picks which, but can't stop early.
87
90
  - **Rolled twice:** Weak Heart's Exert checks keep the worse of two 2d6 rolls; Constant
88
91
  Secretions (the `grapple` situational choice) and Survivalist (`foraging`) keep the better. An
89
92
  attack given its target's view (`participants.target`) rolls laser damage twice against Light
90
93
  Sensitivity, the higher kept.
91
94
  - **System strain and stress:** maximums with the edges, foci and mutations that change them.
92
95
 
96
+ ## Add-on packs
97
+
98
+ A pack that depends on `awn-core` can add content of its types, and creation and advancement offer
99
+ it with the core's, in the guided picks and the random draws:
100
+
101
+ - **Edges and foci** join every pick. Their limits are tags, not IDs: `repeatable`, `first-edge`
102
+ (Forged By Fire), `needs-mutant`, `makes-mutant`, `not-mutant`, `not-underdog`. One with
103
+ `gainPart: true` runs its own `gain-part` action (`listed: false`) when taken, as Educated,
104
+ Mutant, Mutation Acceleration and Unstable Mutant do; an edge's mutation points are an effect on
105
+ `mutations.points.edges`.
106
+ - **Prepared survivors' picks** are content of the type `prepared`: the item (`gear`, by ID;
107
+ another pack's qualified), its quantity, readied or not, and what comes with it (`extra`).
108
+ - **Weapons:** a wasteland warrior's weapon is any primitive melee weapon, or a primitive one with
109
+ `kitAmmo` (the bow and its arrows), which comes with that ammunition.
110
+ - **Mutations** join the chosen and the fallback picks; the d6 category and d10 tables, and the
111
+ d100 negative table, keep the book's odds.
112
+ - **Mutation categories** are content of the type `mutationCategory`, which a mutation names in
113
+ `category`. An added category joins the "two in one category" pick; its mutations' `roll` is
114
+ their d10 roll within it.
115
+ - **Tagged steps** take an add-on's rules-level `option` and `changes` effects: `creation.kit`
116
+ (the starting equipment option: an added option is another way to equip), `creation.mutation`
117
+ (how mutation points are spent), `creation.finish` (the last step of creation) and
118
+ `advancement.level` (each new level's level and skill points).
119
+
120
+ - **Open enums:** the stigma fields (`stigma.part`, `stigma.part2`, `stigma.nature`,
121
+ `stigma.detail`), for more suggestions to set by hand; the rolled tables keep the book's.
122
+ - **Naming what an add-on adds:** it names each added value, option or key in its own text,
123
+ under the key this pack would use, and `createText` finds it there when the app passes the
124
+ ruleset's `enumOrigins`, `optionOrigins` and `familyOrigins`. For example,
125
+ `tail` added to `awn-core:fields.stigma.part` is
126
+ `fields.stigma.part.values.tail.name: Tail` (through `enumOrigins`).
127
+
128
+ - **Skills** are the `skill` family: an add-on adds one (`families: { 'awn-core:skill': [<key>] }`)
129
+ and declares its `skills.<key>.level` (tagged `skill` and `skill.<key>`), `.credit` and `.cap`
130
+ (tagged `skill-cap` and `skill.<key>`). The core's changes reach them through `fieldId`, so
131
+ creation, `improve-skill`, skill points and a forbidding mutation gain, raise and lower it as the
132
+ core's. A background's entries (`freeSkill`, `quickSkill1`, `quickSkill2`, `growth1`–`growth6`,
133
+ `learning1`–`learning8`) and the parameters `improve-skill.skill` and `gain-benefit.entry` are
134
+ open enums that take its key.
135
+
136
+ The near-future and wasteland d20 tables are the book's own tables.
137
+
93
138
  ## Rule readings
94
139
 
95
140
  - **Learning picks** may take any skill: every Learning table ends with Any Skill.
@@ -1,6 +1,7 @@
1
1
  id: edges.educated
2
2
  type: edge
3
3
  fields:
4
+ gainPart: true
4
5
  bonusSkill:
5
6
  [
6
7
  administer,
@@ -27,3 +28,13 @@ effects:
27
28
  - target: skills.perLevel
28
29
  op: add
29
30
  value: 1
31
+ actions:
32
+ # Taken after 1st level: the bonus skill points of the levels before.
33
+ - id: gain-part
34
+ listed: false
35
+ steps:
36
+ - id: points
37
+ kind: changes
38
+ when: '!character.creating'
39
+ changes:
40
+ - { type: adjust, field: skills.points, by: level - 1 }
@@ -1,5 +1,6 @@
1
1
  id: edges.focused
2
2
  type: edge
3
+ tags: [repeatable]
3
4
  effects:
4
5
  - target: foci.bonus
5
6
  op: add
@@ -1,2 +1,3 @@
1
1
  id: edges.forged-by-fire
2
2
  type: edge
3
+ tags: [first-edge]
@@ -1,5 +1,6 @@
1
1
  id: edges.hardened-genetics
2
2
  type: edge
3
+ tags: [not-mutant]
3
4
  prerequisites:
4
5
  - { id: not-mutant, when: '!mutations.mutant' }
5
6
  effects:
@@ -1,5 +1,10 @@
1
1
  id: edges.mutant
2
2
  type: edge
3
+ tags: [makes-mutant]
4
+ fields:
5
+ gainPart: true
6
+ effects:
7
+ - { target: mutations.points.edges, op: add, value: 2 }
3
8
  choices:
4
9
  # After the mutations: one attribute with a modifier of -1 or better takes -1.
5
10
  - id: penalty
@@ -20,3 +25,15 @@ choices:
20
25
  }
21
26
  op: add
22
27
  value: -1
28
+ actions:
29
+ # Taken after creation: the mutations come at once.
30
+ - id: gain-part
31
+ listed: false
32
+ params:
33
+ random: { type: boolean, default: false }
34
+ steps:
35
+ - id: mutate
36
+ kind: action
37
+ when: '!character.creating'
38
+ use: mutate
39
+ params: { random: params.random }
@@ -1,4 +1,28 @@
1
1
  id: edges.mutation-acceleration
2
2
  type: edge
3
+ tags: [needs-mutant]
3
4
  prerequisites:
4
5
  - { id: mutant, when: mutations.mutant }
6
+ fields:
7
+ gainPart: true
8
+ effects:
9
+ - { target: mutations.points.edges, op: add, value: 2 }
10
+ actions:
11
+ # Taken after creation: its two points are spent at once.
12
+ - id: gain-part
13
+ listed: false
14
+ params:
15
+ random: { type: boolean, default: false }
16
+ steps:
17
+ - id: buy1
18
+ kind: action
19
+ sheet: proposed
20
+ when: '!character.creating && mutations.points.left >= 1'
21
+ use: buy-mutation
22
+ params: { random: params.random }
23
+ - id: buy2
24
+ kind: action
25
+ sheet: proposed
26
+ when: '!character.creating && mutations.points.left >= 1'
27
+ use: buy-mutation
28
+ params: { random: params.random }
@@ -1,5 +1,6 @@
1
1
  id: edges.prodigy
2
2
  type: edge
3
+ tags: [not-underdog]
3
4
  prerequisites:
4
5
  - { id: not-underdog, when: '!edges.underdog' }
5
6
  choices:
@@ -1,4 +1,18 @@
1
1
  id: foci.unstable-mutant
2
2
  type: focus
3
+ tags: [needs-mutant]
3
4
  prerequisites:
4
5
  - { id: mutant, when: mutations.mutant }
6
+ fields:
7
+ gainPart: true
8
+ actions:
9
+ # A new level-1 focus: one free positive mutation, rolled.
10
+ - id: gain-part
11
+ listed: false
12
+ params:
13
+ random: { type: boolean, default: false }
14
+ steps:
15
+ - id: mutation
16
+ kind: action
17
+ use: roll-mutation
18
+ params: { origin: "'unstable'", random: params.random }
@@ -0,0 +1,2 @@
1
+ id: mutation-categories.cognition
2
+ type: mutationCategory
@@ -0,0 +1,2 @@
1
+ id: mutation-categories.exotic
2
+ type: mutationCategory
@@ -0,0 +1,2 @@
1
+ id: mutation-categories.hybrid
2
+ type: mutationCategory
@@ -0,0 +1,2 @@
1
+ id: mutation-categories.pseudo-psychic
2
+ type: mutationCategory
@@ -0,0 +1,2 @@
1
+ id: mutation-categories.sense
2
+ type: mutationCategory
@@ -0,0 +1,2 @@
1
+ id: mutation-categories.structure
2
+ type: mutationCategory
@@ -1,7 +1,7 @@
1
1
  id: mutations.cognition.augmented-cognition
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 1
6
6
  choices:
7
7
  - id: attribute
@@ -1,6 +1,6 @@
1
1
  id: mutations.cognition.ballistic-calculator
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 2
6
6
  bonusSkill: [shoot]
@@ -1,7 +1,7 @@
1
1
  id: mutations.cognition.eidetic-memory
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 3
6
6
  bonusSkill:
7
7
  [
@@ -1,5 +1,5 @@
1
1
  id: mutations.cognition.internal-map
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 4
@@ -1,7 +1,7 @@
1
1
  id: mutations.cognition.intuitive-leap
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 5
6
6
  bonusSkill: [notice]
7
7
  effects:
@@ -1,5 +1,5 @@
1
1
  id: mutations.cognition.memory-eater
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 6
@@ -1,5 +1,5 @@
1
1
  id: mutations.cognition.mental-bifurcation
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 7
@@ -1,7 +1,7 @@
1
1
  id: mutations.cognition.mind-over-body
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 8
6
6
  effects:
7
7
  - target: hp.attributeMod
@@ -1,7 +1,7 @@
1
1
  id: mutations.cognition.omniglot
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 9
6
6
  effects:
7
7
  - target: attributes.cha.bonus
@@ -1,7 +1,7 @@
1
1
  id: mutations.cognition.predictive-analysis
2
2
  type: mutation
3
3
  fields:
4
- category: cognition
4
+ category: mutation-categories.cognition
5
5
  roll: 10
6
6
  choices:
7
7
  - id: attribute
@@ -1,7 +1,7 @@
1
1
  id: mutations.exotic.chameleon-field
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 1
6
6
  bonusSkill: [sneak]
7
7
  effects:
@@ -1,5 +1,5 @@
1
1
  id: mutations.exotic.electrical-generation
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 2
@@ -1,5 +1,5 @@
1
1
  id: mutations.exotic.hemovore
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 3
@@ -1,5 +1,5 @@
1
1
  id: mutations.exotic.image-projection
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 4
@@ -1,5 +1,5 @@
1
1
  id: mutations.exotic.metamorph
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 5
@@ -1,5 +1,5 @@
1
1
  id: mutations.exotic.molecular-phasing
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 6
@@ -1,7 +1,7 @@
1
1
  id: mutations.exotic.natural-projectiles
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 7
6
6
  bonusSkill: [shoot]
7
7
  standardCopies:
@@ -1,5 +1,5 @@
1
1
  id: mutations.exotic.pheromone-cloud
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 8
@@ -1,5 +1,5 @@
1
1
  id: mutations.exotic.photon-manipulation
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 9
@@ -1,5 +1,5 @@
1
1
  id: mutations.exotic.sound-generation
2
2
  type: mutation
3
3
  fields:
4
- category: exotic
4
+ category: mutation-categories.exotic
5
5
  roll: 10
@@ -1,5 +1,5 @@
1
1
  id: mutations.hybrid.aquatic-adaptation
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 1
@@ -1,5 +1,5 @@
1
1
  id: mutations.hybrid.arboreal-aptitude
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 2
@@ -1,7 +1,7 @@
1
1
  id: mutations.hybrid.centauroid
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 3
6
6
  effects:
7
7
  - target: move.base
@@ -1,7 +1,7 @@
1
1
  id: mutations.hybrid.crushing-jaws
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 4
6
6
  standardCopies:
7
7
  - { type: weapon, where: 'item.id == @weapons.natural.jaws' }
@@ -1,7 +1,7 @@
1
1
  id: mutations.hybrid.digitigrade-legs
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 5
6
6
  effects:
7
7
  - target: move.base
@@ -1,5 +1,5 @@
1
1
  id: mutations.hybrid.functional-wings
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 6
@@ -1,5 +1,5 @@
1
1
  id: mutations.hybrid.prehensile-limb
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 7
@@ -1,7 +1,7 @@
1
1
  id: mutations.hybrid.savage-claws
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 8
6
6
  standardCopies:
7
7
  - { type: weapon, where: 'item.id == @weapons.natural.claws' }
@@ -1,7 +1,7 @@
1
1
  id: mutations.hybrid.thick-hide
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 9
6
6
  effects:
7
7
  - target: ac.armor
@@ -1,5 +1,5 @@
1
1
  id: mutations.hybrid.venom-glands
2
2
  type: mutation
3
3
  fields:
4
- category: hybrid
4
+ category: mutation-categories.hybrid
5
5
  roll: 10
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.force-field
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 1
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.induce-confusion
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 2
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.limited-precognition
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 3
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.mental-domination
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 4
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.mind-reader
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 5
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.neural-lockdown
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 6
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.panic-wave
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 7
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.spatial-displacement
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 8
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.telekinetic-reach
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 9
@@ -1,5 +1,5 @@
1
1
  id: mutations.pseudo-psychic.thermokinesis
2
2
  type: mutation
3
3
  fields:
4
- category: pseudo-psychic
4
+ category: mutation-categories.pseudo-psychic
5
5
  roll: 10
@@ -1,5 +1,5 @@
1
1
  id: mutations.sense.accelerated-perception
2
2
  type: mutation
3
3
  fields:
4
- category: sense
4
+ category: mutation-categories.sense
5
5
  roll: 1
@@ -2,5 +2,5 @@ id: mutations.sense.acute-hearing
2
2
  type: mutation
3
3
  tags: [hearing]
4
4
  fields:
5
- category: sense
5
+ category: mutation-categories.sense
6
6
  roll: 2
@@ -1,5 +1,5 @@
1
1
  id: mutations.sense.acute-olfaction
2
2
  type: mutation
3
3
  fields:
4
- category: sense
4
+ category: mutation-categories.sense
5
5
  roll: 3
@@ -2,5 +2,5 @@ id: mutations.sense.echolocation
2
2
  type: mutation
3
3
  tags: [hearing]
4
4
  fields:
5
- category: sense
5
+ category: mutation-categories.sense
6
6
  roll: 4
@@ -1,7 +1,7 @@
1
1
  id: mutations.sense.empathic-sensitivity
2
2
  type: mutation
3
3
  fields:
4
- category: sense
4
+ category: mutation-categories.sense
5
5
  roll: 5
6
6
  effects:
7
7
  - target: { rolls: [check] }
@@ -2,5 +2,5 @@ id: mutations.sense.night-vision
2
2
  type: mutation
3
3
  tags: [vision]
4
4
  fields:
5
- category: sense
5
+ category: mutation-categories.sense
6
6
  roll: 6
@@ -2,5 +2,5 @@ id: mutations.sense.panoptic-vision
2
2
  type: mutation
3
3
  tags: [vision]
4
4
  fields:
5
- category: sense
5
+ category: mutation-categories.sense
6
6
  roll: 7