@opencharacter/orc-sf-2e 0.2.0 → 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 (91) hide show
  1. package/README.md +54 -5
  2. package/content/classes/envoy.yaml +2 -52
  3. package/content/classes/mystic/connections/akashic.yaml +1 -1
  4. package/content/classes/mystic/connections/elemental.yaml +62 -1
  5. package/content/classes/mystic/connections/healing.yaml +1 -1
  6. package/content/classes/mystic/connections/rhythm.yaml +1 -1
  7. package/content/classes/mystic/connections/shadow.yaml +1 -1
  8. package/content/classes/mystic.yaml +2 -51
  9. package/content/classes/operative.yaml +1 -44
  10. package/content/classes/solarian.yaml +1 -44
  11. package/content/classes/soldier.yaml +2 -51
  12. package/content/classes/witchwarper/anchors/core-memories.yaml +1 -1
  13. package/content/classes/witchwarper/anchors/focal-point.yaml +1 -1
  14. package/content/classes/witchwarper/anchors/tangible-object.yaml +1 -1
  15. package/content/classes/witchwarper/paradoxes/analyst.yaml +1 -1
  16. package/content/classes/witchwarper/paradoxes/anomaly.yaml +1 -1
  17. package/content/classes/witchwarper/paradoxes/lost-history.yaml +1 -1
  18. package/content/classes/witchwarper/paradoxes/precog.yaml +1 -1
  19. package/content/classes/witchwarper.yaml +3 -55
  20. package/content/effects/treated-disease.yaml +4 -0
  21. package/content/effects/treated-poison.yaml +4 -0
  22. package/content/feats/ancestry/fixation.yaml +11 -49
  23. package/content/feats/ancestry/harmonic-sensitivity.yaml +16 -6
  24. package/content/feats/ancestry/lashunta-lore.yaml +6 -0
  25. package/content/feats/archetype/envoy/envoy-dedication.yaml +2 -88
  26. package/content/feats/mystic/new-epiphany.yaml +1 -1
  27. package/content/feats/mystic/realized-epiphany.yaml +1 -1
  28. package/content/feats/mystic/syncretic-epiphany.yaml +1 -1
  29. package/content/feats/skill/additional-lore.yaml +54 -391
  30. package/content/feats/skill/assurance.yaml +3 -57
  31. package/content/feats/skill/skill-training.yaml +1 -57
  32. package/content/features/envoy/style/from-the-front.yaml +1 -1
  33. package/content/features/envoy/style/from-the-shadows.yaml +1 -1
  34. package/content/features/envoy/style/guns-blazing.yaml +1 -1
  35. package/content/features/envoy/style/in-the-spotlight.yaml +1 -1
  36. package/content/features/envoy/style/infosphere-director.yaml +1 -1
  37. package/content/features/envoy/style/through-desperate-times.yaml +1 -1
  38. package/content/features/soldier/style/action-hero.yaml +1 -1
  39. package/content/features/soldier/style/armor-storm.yaml +1 -1
  40. package/content/features/soldier/style/bombard.yaml +1 -1
  41. package/content/features/soldier/style/close-quarters.yaml +1 -1
  42. package/content/features/soldier/style/erudite-warrior.yaml +1 -1
  43. package/content/gear/comm-unit.yaml +1 -0
  44. package/content/spells/elemental-barrier.yaml +2 -1
  45. package/content/spells/elemental-weapon.yaml +10 -1
  46. package/content/spells/guidance.yaml +2 -0
  47. package/content/spells/sure-strike.yaml +8 -1
  48. package/content/spells/true-target.yaml +2 -0
  49. package/content/templates/elemental/air.yaml +6 -0
  50. package/content/templates/elemental/earth.yaml +6 -0
  51. package/content/templates/elemental/fire.yaml +6 -0
  52. package/content/templates/elemental/metal.yaml +6 -0
  53. package/content/templates/elemental/water.yaml +6 -0
  54. package/content/templates/elemental/wood.yaml +6 -0
  55. package/dist/i18n/en.js +1 -1
  56. package/dist/i18n/en.json +50 -59
  57. package/dist/index.js +1 -1
  58. package/dist/release.json +5419 -3339
  59. package/i18n/en/ancestry-feats.yaml +4 -40
  60. package/i18n/en/archetypes.yaml +2 -2
  61. package/i18n/en/core.yaml +8 -2
  62. package/i18n/en/headline.yaml +4 -0
  63. package/i18n/en/mystic.yaml +12 -0
  64. package/i18n/en/sf-core.yaml +0 -11
  65. package/i18n/en/skills.yaml +6 -3
  66. package/i18n/en/tags.yaml +2 -0
  67. package/i18n/en/types.yaml +1 -0
  68. package/i18n/en.yaml +14 -1
  69. package/pack.yaml +2 -2
  70. package/package.json +2 -2
  71. package/rules/advancement.yaml +1 -0
  72. package/rules/afflictions.yaml +4 -5
  73. package/rules/archetypes.yaml +1 -0
  74. package/rules/building.yaml +7 -1
  75. package/rules/checks.yaml +1 -1
  76. package/rules/conditions.yaml +1 -0
  77. package/rules/core.yaml +1 -0
  78. package/rules/creation.yaml +18 -0
  79. package/rules/equipment.yaml +7 -2
  80. package/rules/heritages.yaml +1 -1
  81. package/rules/layout.yaml +62 -4
  82. package/rules/mystic.yaml +24 -1
  83. package/rules/skill-actions-stealth.yaml +1 -1
  84. package/rules/skills.yaml +254 -81
  85. package/rules/solarian.yaml +1 -2
  86. package/rules/spellcasting.yaml +89 -21
  87. package/rules/spells-high.yaml +3 -3
  88. package/rules/strikes.yaml +3 -1
  89. package/rules/tags.yaml +6 -0
  90. package/rules/witchwarper.yaml +7 -7
  91. 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]
@@ -1152,36 +1160,96 @@ display:
1152
1160
  }
1153
1161
  spells.autoRank: { groups: [spellcasting], priority: 2 }
1154
1162
  spellcasting.maxRank: { groups: [spell-slots], priority: 1 }
1155
- spellSlots.rank1.max: { groups: [spell-slots], priority: 0 }
1163
+ spellSlots.rank1.max: { groups: [spell-slots], priority: 0, showWhen: spellSlots.rank1.max > 0 }
1156
1164
  spellSlots.rank1.used:
1157
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank1.max, as: max }] }
1158
- 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 }
1159
1172
  spellSlots.rank2.used:
1160
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank2.max, as: max }] }
1161
- 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 }
1162
1180
  spellSlots.rank3.used:
1163
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank3.max, as: max }] }
1164
- 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 }
1165
1188
  spellSlots.rank4.used:
1166
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank4.max, as: max }] }
1167
- 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 }
1168
1196
  spellSlots.rank5.used:
1169
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank5.max, as: max }] }
1170
- 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 }
1171
1204
  spellSlots.rank6.used:
1172
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank6.max, as: max }] }
1173
- 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 }
1174
1212
  spellSlots.rank7.used:
1175
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank7.max, as: max }] }
1176
- 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 }
1177
1220
  spellSlots.rank8.used:
1178
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank8.max, as: max }] }
1179
- 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 }
1180
1228
  spellSlots.rank9.used:
1181
- { groups: [spell-slots], priority: 0, with: [{ field: spellSlots.rank9.max, as: max }] }
1182
- 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 }
1183
1237
  spellSlots.rank10.used:
1184
- { 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 }
1185
1253
  spellcasting.attribute: { hidden: true }
1186
1254
  spellcasting.proficiency: { hidden: true }
1187
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 }
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,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 }