@opencharacter/orc-sf-2e 0.1.1 → 0.3.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 (110) hide show
  1. package/README.md +58 -15
  2. package/content/backgrounds/raised-by-belief.yaml +4 -1
  3. package/content/classes/envoy.yaml +2 -52
  4. package/content/classes/mystic/connections/akashic.yaml +1 -1
  5. package/content/classes/mystic/connections/elemental.yaml +62 -1
  6. package/content/classes/mystic/connections/healing.yaml +1 -1
  7. package/content/classes/mystic/connections/rhythm.yaml +1 -1
  8. package/content/classes/mystic/connections/shadow.yaml +1 -1
  9. package/content/classes/mystic.yaml +2 -51
  10. package/content/classes/operative.yaml +1 -44
  11. package/content/classes/solarian.yaml +1 -44
  12. package/content/classes/soldier.yaml +2 -51
  13. package/content/classes/witchwarper/anchors/core-memories.yaml +4 -216
  14. package/content/classes/witchwarper/anchors/focal-point.yaml +1 -1
  15. package/content/classes/witchwarper/anchors/tangible-object.yaml +1 -1
  16. package/content/classes/witchwarper/paradoxes/analyst.yaml +1 -1
  17. package/content/classes/witchwarper/paradoxes/anomaly.yaml +1 -1
  18. package/content/classes/witchwarper/paradoxes/lost-history.yaml +1 -1
  19. package/content/classes/witchwarper/paradoxes/precog.yaml +1 -1
  20. package/content/classes/witchwarper.yaml +3 -55
  21. package/content/effects/treated-disease.yaml +4 -0
  22. package/content/effects/treated-poison.yaml +4 -0
  23. package/content/feats/ancestry/android-lore.yaml +4 -8
  24. package/content/feats/ancestry/barathu-lore.yaml +4 -8
  25. package/content/feats/ancestry/borai-lore.yaml +4 -8
  26. package/content/feats/ancestry/extra-devotion.yaml +4 -8
  27. package/content/feats/ancestry/fixation.yaml +15 -1
  28. package/content/feats/ancestry/harmonic-sensitivity.yaml +16 -6
  29. package/content/feats/ancestry/kasatha-lore.yaml +4 -8
  30. package/content/feats/ancestry/lashunta-lore.yaml +10 -8
  31. package/content/feats/ancestry/pahtra-lore.yaml +4 -8
  32. package/content/feats/ancestry/prismeni-lore.yaml +4 -8
  33. package/content/feats/ancestry/shirren-lore.yaml +4 -8
  34. package/content/feats/ancestry/skittermander-lore.yaml +4 -8
  35. package/content/feats/ancestry/ysoki-lore.yaml +4 -8
  36. package/content/feats/archetype/envoy/envoy-dedication.yaml +2 -88
  37. package/content/feats/envoy/effortless-influencer.yaml +4 -0
  38. package/content/feats/mystic/new-epiphany.yaml +1 -1
  39. package/content/feats/mystic/realized-epiphany.yaml +1 -1
  40. package/content/feats/mystic/syncretic-epiphany.yaml +1 -1
  41. package/content/feats/skill/additional-lore.yaml +54 -391
  42. package/content/feats/skill/assurance.yaml +3 -30
  43. package/content/feats/skill/skill-training.yaml +1 -57
  44. package/content/features/envoy/style/from-the-front.yaml +1 -1
  45. package/content/features/envoy/style/from-the-shadows.yaml +2 -2
  46. package/content/features/envoy/style/guns-blazing.yaml +1 -1
  47. package/content/features/envoy/style/in-the-spotlight.yaml +1 -1
  48. package/content/features/envoy/style/infosphere-director.yaml +1 -1
  49. package/content/features/envoy/style/through-desperate-times.yaml +1 -1
  50. package/content/features/solarian/re-forge-solar-weapon.yaml +19 -24
  51. package/content/features/soldier/style/action-hero.yaml +1 -1
  52. package/content/features/soldier/style/armor-storm.yaml +1 -1
  53. package/content/features/soldier/style/bombard.yaml +1 -1
  54. package/content/features/soldier/style/close-quarters.yaml +1 -1
  55. package/content/features/soldier/style/erudite-warrior.yaml +1 -1
  56. package/content/features/spellcasting/archetype-repertoire.yaml +1 -1
  57. package/content/gear/comm-unit.yaml +1 -0
  58. package/content/heritages/warblood-vesk.yaml +18 -1
  59. package/content/spells/elemental-barrier.yaml +2 -1
  60. package/content/spells/elemental-weapon.yaml +10 -1
  61. package/content/spells/guidance.yaml +2 -0
  62. package/content/spells/shield.yaml +1 -0
  63. package/content/spells/sure-strike.yaml +8 -1
  64. package/content/spells/true-target.yaml +2 -0
  65. package/content/templates/elemental/air.yaml +6 -0
  66. package/content/templates/elemental/earth.yaml +6 -0
  67. package/content/templates/elemental/fire.yaml +6 -0
  68. package/content/templates/elemental/metal.yaml +6 -0
  69. package/content/templates/elemental/water.yaml +6 -0
  70. package/content/templates/elemental/wood.yaml +6 -0
  71. package/dist/i18n/en.js +1 -1
  72. package/dist/i18n/en.json +51 -73
  73. package/dist/index.js +1 -1
  74. package/dist/release.json +6191 -8327
  75. package/i18n/en/ancestries.yaml +1 -0
  76. package/i18n/en/ancestry-feats.yaml +4 -0
  77. package/i18n/en/archetypes.yaml +2 -2
  78. package/i18n/en/core.yaml +8 -2
  79. package/i18n/en/headline.yaml +4 -0
  80. package/i18n/en/mystic.yaml +12 -0
  81. package/i18n/en/sf-core.yaml +0 -11
  82. package/i18n/en/skills.yaml +6 -3
  83. package/i18n/en/tags.yaml +2 -0
  84. package/i18n/en/types.yaml +1 -0
  85. package/i18n/en/witchwarper.yaml +0 -54
  86. package/i18n/en.yaml +14 -1
  87. package/pack.yaml +2 -2
  88. package/package.json +2 -2
  89. package/rules/advancement.yaml +1 -0
  90. package/rules/afflictions.yaml +4 -5
  91. package/rules/archetypes.yaml +1 -0
  92. package/rules/building.yaml +7 -1
  93. package/rules/checks.yaml +1 -1
  94. package/rules/conditions.yaml +1 -0
  95. package/rules/core.yaml +1 -0
  96. package/rules/creation.yaml +18 -0
  97. package/rules/equipment.yaml +7 -2
  98. package/rules/heritages.yaml +1 -1
  99. package/rules/layout.yaml +62 -4
  100. package/rules/mystic.yaml +24 -1
  101. package/rules/skill-actions-stealth.yaml +1 -1
  102. package/rules/skills.yaml +254 -81
  103. package/rules/solarian.yaml +1 -2
  104. package/rules/spellcasting.yaml +89 -25
  105. package/rules/spells-high.yaml +3 -3
  106. package/rules/strikes.yaml +9 -92
  107. package/rules/tags.yaml +6 -0
  108. package/rules/witchwarper.yaml +7 -7
  109. package/upgrades/0.1.1-to-0.2.0.yaml +18 -0
  110. package/upgrades/0.2.0-to-0.3.0.yaml +12 -0
@@ -28,8 +28,7 @@ tags:
28
28
 
29
29
  display:
30
30
  fields:
31
- solarian.attunement:
32
- { groups: [turn], priority: 0, showWhen: 'countCopies(copy.item == @classes.solarian) > 0' }
31
+ solarian.attunement: { groups: [turn], priority: 0, showWhen: class.has.solarian }
33
32
  solarian.perfect: { hidden: true }
34
33
  solarian.rampart: { hidden: true }
35
34
  solarian.forms: { hidden: true }
@@ -250,6 +250,7 @@ contentTypes:
250
250
  damage: { type: dice, default: 0d6 }
251
251
  damageBonus: { type: integer, default: 0 }
252
252
  damageType:
253
+ open: true
253
254
  type: enum
254
255
  values:
255
256
  [
@@ -274,6 +275,7 @@ contentTypes:
274
275
  damageTypeChoice: { type: boolean, default: false }
275
276
  damage2: { type: dice, default: 0d6 }
276
277
  damage2Type:
278
+ open: true
277
279
  type: enum
278
280
  values:
279
281
  [
@@ -303,6 +305,7 @@ contentTypes:
303
305
  persistent: { type: dice, default: 0d6 }
304
306
  persistentBonus: { type: integer, default: 0, min: 0 }
305
307
  persistentType:
308
+ open: true
306
309
  type: enum
307
310
  values:
308
311
  [
@@ -350,13 +353,14 @@ contentTypes:
350
353
  applyTo: { type: enum, values: [none, self, ally, target], default: none }
351
354
  applyAt: { type: integer, default: 2, min: 1, max: 3 }
352
355
  stabilizes: { type: boolean, default: false }
353
- copyTemplates: { type: set, of: string }
356
+ copyTemplates: { type: list, of: string, unique: true }
354
357
  state:
355
358
  rank: { type: integer, default: item.rank, min: 1, max: 10 }
356
359
  source: { type: string, default: '' }
357
360
  outcome: { type: integer, default: 2, min: 0, max: 3 }
358
361
  value: { type: integer, default: 1, min: 0 }
359
362
  damageType:
363
+ open: true
360
364
  type: enum
361
365
  values:
362
366
  [
@@ -379,6 +383,7 @@ contentTypes:
379
383
  default: fire
380
384
  copy: { type: string, default: '' }
381
385
  form: { type: string, default: '' }
386
+ element: { type: string, default: '' }
382
387
  actions:
383
388
  - use: cast-spell
384
389
 
@@ -391,10 +396,12 @@ actions:
391
396
  ac: { type: integer, optional: true }
392
397
  copy: { type: string, optional: true }
393
398
  form: { type: string, optional: true }
399
+ element: { type: enum, optional: true, values: [air, earth, fire, metal, water, wood] }
394
400
  source: { type: string, optional: true }
395
401
  damageType:
396
402
  type: enum
397
403
  optional: true
404
+ open: true
398
405
  values:
399
406
  [
400
407
  acid,
@@ -891,6 +898,7 @@ actions:
891
898
  damageType: flags.damageType
892
899
  copy: flags.copy
893
900
  form: "has(params.form) ? params.form : ''"
901
+ element: "has(params.element) ? params.element : ''"
894
902
  - id: onCaster
895
903
  kind: changes
896
904
  tags: [spell.caster]
@@ -1004,10 +1012,6 @@ actions:
1004
1012
  - { type: set, when: focus.spent > 0, field: focus.spent, value: 0 }
1005
1013
  - { type: set, when: vitality.spent > 0, field: vitality.spent, value: 0 }
1006
1014
  - { type: setState, picks: { where: self.used }, key: used, value: false }
1007
- - type: setState
1008
- picks: { where: has(self.fanUses) && self.fanUses > 0 }
1009
- key: fanUses
1010
- value: 0
1011
1015
  - type: set
1012
1016
  forEach: keysOf('archetypeSource')
1013
1017
  when: fieldOf('spellSlots.archetype.{archetypeSource}.rank{archetypeRank}.used', x, 1) > 0
@@ -1156,36 +1160,96 @@ display:
1156
1160
  }
1157
1161
  spells.autoRank: { groups: [spellcasting], priority: 2 }
1158
1162
  spellcasting.maxRank: { groups: [spell-slots], priority: 1 }
1159
- spellSlots.rank1.max: { groups: [spell-slots], priority: 0 }
1163
+ spellSlots.rank1.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank1.max > 0 }
1160
1164
  spellSlots.rank1.used:
1161
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank1.max, as: max }] }
1162
- spellSlots.rank2.max: { groups: [spell-slots], priority: 0 }
1165
+ {
1166
+ groups: [spell-slots],
1167
+ priority: 0,
1168
+ showWhen: spellSlots.rank1.max > 0,
1169
+ with: [{ field: spellSlots.rank1.max, as: max }],
1170
+ }
1171
+ spellSlots.rank2.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank2.max > 0 }
1163
1172
  spellSlots.rank2.used:
1164
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank2.max, as: max }] }
1165
- spellSlots.rank3.max: { groups: [spell-slots], priority: 0 }
1173
+ {
1174
+ groups: [spell-slots],
1175
+ priority: 0,
1176
+ showWhen: spellSlots.rank2.max > 0,
1177
+ with: [{ field: spellSlots.rank2.max, as: max }],
1178
+ }
1179
+ spellSlots.rank3.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank3.max > 0 }
1166
1180
  spellSlots.rank3.used:
1167
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank3.max, as: max }] }
1168
- spellSlots.rank4.max: { groups: [spell-slots], priority: 0 }
1181
+ {
1182
+ groups: [spell-slots],
1183
+ priority: 0,
1184
+ showWhen: spellSlots.rank3.max > 0,
1185
+ with: [{ field: spellSlots.rank3.max, as: max }],
1186
+ }
1187
+ spellSlots.rank4.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank4.max > 0 }
1169
1188
  spellSlots.rank4.used:
1170
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank4.max, as: max }] }
1171
- spellSlots.rank5.max: { groups: [spell-slots], priority: 0 }
1189
+ {
1190
+ groups: [spell-slots],
1191
+ priority: 0,
1192
+ showWhen: spellSlots.rank4.max > 0,
1193
+ with: [{ field: spellSlots.rank4.max, as: max }],
1194
+ }
1195
+ spellSlots.rank5.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank5.max > 0 }
1172
1196
  spellSlots.rank5.used:
1173
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank5.max, as: max }] }
1174
- spellSlots.rank6.max: { groups: [spell-slots], priority: 0 }
1197
+ {
1198
+ groups: [spell-slots],
1199
+ priority: 0,
1200
+ showWhen: spellSlots.rank5.max > 0,
1201
+ with: [{ field: spellSlots.rank5.max, as: max }],
1202
+ }
1203
+ spellSlots.rank6.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank6.max > 0 }
1175
1204
  spellSlots.rank6.used:
1176
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank6.max, as: max }] }
1177
- spellSlots.rank7.max: { groups: [spell-slots], priority: 0 }
1205
+ {
1206
+ groups: [spell-slots],
1207
+ priority: 0,
1208
+ showWhen: spellSlots.rank6.max > 0,
1209
+ with: [{ field: spellSlots.rank6.max, as: max }],
1210
+ }
1211
+ spellSlots.rank7.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank7.max > 0 }
1178
1212
  spellSlots.rank7.used:
1179
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank7.max, as: max }] }
1180
- spellSlots.rank8.max: { groups: [spell-slots], priority: 0 }
1213
+ {
1214
+ groups: [spell-slots],
1215
+ priority: 0,
1216
+ showWhen: spellSlots.rank7.max > 0,
1217
+ with: [{ field: spellSlots.rank7.max, as: max }],
1218
+ }
1219
+ spellSlots.rank8.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank8.max > 0 }
1181
1220
  spellSlots.rank8.used:
1182
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank8.max, as: max }] }
1183
- spellSlots.rank9.max: { groups: [spell-slots], priority: 0 }
1221
+ {
1222
+ groups: [spell-slots],
1223
+ priority: 0,
1224
+ showWhen: spellSlots.rank8.max > 0,
1225
+ with: [{ field: spellSlots.rank8.max, as: max }],
1226
+ }
1227
+ spellSlots.rank9.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank9.max > 0 }
1184
1228
  spellSlots.rank9.used:
1185
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank9.max, as: max }] }
1186
- spellSlots.rank10.max: { groups: [spell-slots], priority: 0 }
1229
+ {
1230
+ groups: [spell-slots],
1231
+ priority: 0,
1232
+ showWhen: spellSlots.rank9.max > 0,
1233
+ with: [{ field: spellSlots.rank9.max, as: max }],
1234
+ }
1235
+ spellSlots.rank10.max:
1236
+ { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank10.max > 0 }
1187
1237
  spellSlots.rank10.used:
1188
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank10.max, as: max }] }
1238
+ {
1239
+ groups: [spell-slots],
1240
+ priority: 0,
1241
+ showWhen: spellSlots.rank10.max > 0,
1242
+ with: [{ field: spellSlots.rank10.max, as: max }],
1243
+ }
1244
+ spellSlots.extra.max: { groups: [spell-slots], priority: 1, showWhen: spellSlots.extra.max > 0 }
1245
+ spellSlots.extra.used:
1246
+ {
1247
+ groups: [spell-slots],
1248
+ priority: 1,
1249
+ showWhen: spellSlots.extra.max > 0,
1250
+ with: [{ field: spellSlots.extra.max, as: max }, { field: spells.extraSlot, as: detail }],
1251
+ }
1252
+ spells.extraSlot: { groups: [spell-slots], priority: 1, showWhen: spellSlots.extra.max > 0 }
1189
1253
  spellcasting.attribute: { hidden: true }
1190
1254
  spellcasting.proficiency: { hidden: true }
1191
1255
  spellcasting.attributeMod: { hidden: true }
@@ -11,7 +11,7 @@ tags:
11
11
 
12
12
  display:
13
13
  fields:
14
- speed.fly: { groups: [summary], priority: 2, unit: ft }
15
- speed.climb: { groups: [summary], priority: 2, unit: ft }
14
+ speed.fly: { groups: [summary], priority: 2, unit: ft, showWhen: speed.fly > 0 }
15
+ speed.climb: { groups: [summary], priority: 2, unit: ft, showWhen: speed.climb > 0 }
16
16
  speed.climb.base: { hidden: true }
17
- speed.burrow: { groups: [summary], priority: 2, unit: ft }
17
+ speed.burrow: { groups: [summary], priority: 2, unit: ft, showWhen: speed.burrow > 0 }
@@ -44,6 +44,7 @@ contentTypes:
44
44
  fields:
45
45
  category: { type: enum, values: [unarmed, simple, martial, advanced], required: true }
46
46
  group:
47
+ open: true
47
48
  type: enum
48
49
  values:
49
50
  [
@@ -78,6 +79,7 @@ contentTypes:
78
79
  formAttack: { type: boolean, default: false }
79
80
  formDamage: { type: integer, default: 0 }
80
81
  damageType:
82
+ open: true
81
83
  type: enum
82
84
  values:
83
85
  [acid, bludgeoning, cold, electricity, fire, mental, piercing, slashing, sonic, void]
@@ -94,7 +96,7 @@ contentTypes:
94
96
  reload: { type: integer, min: 0 }
95
97
  boost: { type: dice }
96
98
  magazine: { type: integer, default: 0, min: 0 }
97
- ammoKind: { type: enum, values: [none, rounds, charges, chems], default: none }
99
+ ammoKind: { type: enum, values: [none, rounds, charges, chems], default: none, open: true }
98
100
  expend: { type: integer, default: 1, min: 0 }
99
101
  area: { type: enum, values: [none, burst, cone, line], default: none }
100
102
  areaSize: { type: integer, default: 0, min: 0 }
@@ -293,97 +295,12 @@ actions:
293
295
  steps:
294
296
  - id: type
295
297
  kind: choice
296
- options:
297
- - id: acid
298
- when: "item.damageType == 'acid' || 'acid' in item.modularTypes"
299
- changes:
300
- - {
301
- type: setState,
302
- entry: self,
303
- key: modular,
304
- value: "item.damageType == 'acid' ? '' : 'acid'",
305
- }
306
- - id: bludgeoning
307
- when: "item.damageType == 'bludgeoning' || 'bludgeoning' in item.modularTypes"
308
- changes:
309
- - {
310
- type: setState,
311
- entry: self,
312
- key: modular,
313
- value: "item.damageType == 'bludgeoning' ? '' : 'bludgeoning'",
314
- }
315
- - id: cold
316
- when: "item.damageType == 'cold' || 'cold' in item.modularTypes"
317
- changes:
318
- - {
319
- type: setState,
320
- entry: self,
321
- key: modular,
322
- value: "item.damageType == 'cold' ? '' : 'cold'",
323
- }
324
- - id: electricity
325
- when: "item.damageType == 'electricity' || 'electricity' in item.modularTypes"
326
- changes:
327
- - {
328
- type: setState,
329
- entry: self,
330
- key: modular,
331
- value: "item.damageType == 'electricity' ? '' : 'electricity'",
332
- }
333
- - id: fire
334
- when: "item.damageType == 'fire' || 'fire' in item.modularTypes"
335
- changes:
336
- - {
337
- type: setState,
338
- entry: self,
339
- key: modular,
340
- value: "item.damageType == 'fire' ? '' : 'fire'",
341
- }
342
- - id: mental
343
- when: "item.damageType == 'mental' || 'mental' in item.modularTypes"
344
- changes:
345
- - {
346
- type: setState,
347
- entry: self,
348
- key: modular,
349
- value: "item.damageType == 'mental' ? '' : 'mental'",
350
- }
351
- - id: piercing
352
- when: "item.damageType == 'piercing' || 'piercing' in item.modularTypes"
353
- changes:
354
- - {
355
- type: setState,
356
- entry: self,
357
- key: modular,
358
- value: "item.damageType == 'piercing' ? '' : 'piercing'",
359
- }
360
- - id: slashing
361
- when: "item.damageType == 'slashing' || 'slashing' in item.modularTypes"
362
- changes:
363
- - {
364
- type: setState,
365
- entry: self,
366
- key: modular,
367
- value: "item.damageType == 'slashing' ? '' : 'slashing'",
368
- }
369
- - id: sonic
370
- when: "item.damageType == 'sonic' || 'sonic' in item.modularTypes"
371
- changes:
372
- - {
373
- type: setState,
374
- entry: self,
375
- key: modular,
376
- value: "item.damageType == 'sonic' ? '' : 'sonic'",
377
- }
378
- - id: void
379
- when: "item.damageType == 'void' || 'void' in item.modularTypes"
380
- changes:
381
- - {
382
- type: setState,
383
- entry: self,
384
- key: modular,
385
- value: "item.damageType == 'void' ? '' : 'void'",
386
- }
298
+ options: { values: { formula: '[item.damageType] + item.modularTypes' } }
299
+ changes:
300
+ - type: setState
301
+ entry: self
302
+ key: modular
303
+ value: "picked.value == item.damageType ? '' : picked.value"
387
304
  - id: result
388
305
  kind: outcome
389
306
  result: "'switched'"
package/rules/tags.yaml CHANGED
@@ -145,7 +145,13 @@ tags:
145
145
  - turn.start
146
146
  - turn.end
147
147
  - creation
148
+ - creation.ancestry
149
+ - creation.heritage
150
+ - creation.background
151
+ - creation.class
152
+ - creation.finish
148
153
  - level-up
154
+ - level-up.gain
149
155
  - turn
150
156
  - condition
151
157
  - dying
@@ -1,6 +1,11 @@
1
1
  fields:
2
2
  witchwarper.paradox:
3
- { type: enum, values: [none, analyst, anomaly, lost-history, precog], formula: "'none'" }
3
+ {
4
+ type: enum,
5
+ values: [none, analyst, anomaly, lost-history, precog],
6
+ formula: "'none'",
7
+ open: true,
8
+ }
4
9
  quantum.active: { type: boolean, input: true, default: false }
5
10
  quantum.radius: { type: integer, formula: 20, min: 0 }
6
11
  witchwarper.memorySkill: { type: string, input: true, default: '' }
@@ -9,12 +14,7 @@ fields:
9
14
  display:
10
15
  fields:
11
16
  witchwarper.paradox: { hidden: true }
12
- quantum.active:
13
- {
14
- groups: [turn],
15
- priority: 0,
16
- showWhen: 'countCopies(copy.item == @classes.witchwarper) > 0',
17
- }
17
+ quantum.active: { groups: [turn], priority: 0, showWhen: class.has.witchwarper }
18
18
  witchwarper.memorySkill: { hidden: true }
19
19
  witchwarper.otherLife: { hidden: true }
20
20
  quantum.radius: { groups: [turn], priority: 1, showWhen: quantum.active }
@@ -0,0 +1,18 @@
1
+ pack: orc-sf-2e
2
+ from: 0.1.1
3
+ to: 0.2.0
4
+ steps:
5
+ # Assurance's skill was grant state; it is a pick now, preset by the granting content.
6
+ - { op: removeState, type: feat, key: skill }
7
+ # Fixation's Lore was the granted Additional Lore's own choice, saved in Fixation's pick; it is
8
+ # Fixation's topic now, with the same options, which presets Additional Lore and Assurance.
9
+ - op: renameChoice
10
+ owner: feats.ancestry.fixation
11
+ from: orc-sf-2e:feats.skill.additional-lore/lore
12
+ to: topic
13
+ # Warblood vesk's attack was the granted Brutal Anatomy's own choice, saved in the heritage's
14
+ # pick; the heritage picks two attacks now, with the same options. The second is pending.
15
+ - op: renameChoice
16
+ owner: heritages.warblood-vesk
17
+ from: orc-sf-2e:feats.ancestry.brutal-anatomy/attack
18
+ to: attacks
@@ -0,0 +1,12 @@
1
+ pack: orc-sf-2e
2
+ from: 0.2.0
3
+ to: 0.3.0
4
+ steps:
5
+ # Fixation's topic presets nothing now: its granted Additional Lore asks the Lore itself, with
6
+ # the same values, and Assurance follows that pick.
7
+ - op: renameChoice
8
+ owner: feats.ancestry.fixation
9
+ from: topic
10
+ to: orc-sf-2e:feats.skill.additional-lore/lore
11
+ # Harmonic Sensitivity asks whether it trains Performance or gives Assurance in it.
12
+ - { op: requireChoice, owner: feats.ancestry.harmonic-sensitivity, choice: harmonic }