@opencharacter/5e-srd-5.1 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 (35) hide show
  1. package/README.md +7 -6
  2. package/content/classes/warlock.yaml +0 -7
  3. package/content/features/druid/natural-recovery.yaml +23 -45
  4. package/content/features/wizard/arcane-recovery.yaml +22 -67
  5. package/content/invocations/bewitching-whispers.yaml +9 -2
  6. package/content/invocations/dreadful-word.yaml +9 -2
  7. package/content/invocations/eldritch-spear.yaml +3 -2
  8. package/content/invocations/minions-of-chaos.yaml +9 -2
  9. package/content/invocations/mire-the-mind.yaml +9 -2
  10. package/content/invocations/sculptor-of-flesh.yaml +9 -2
  11. package/content/invocations/sign-of-ill-omen.yaml +9 -2
  12. package/content/invocations/thief-of-five-fates.yaml +9 -2
  13. package/content/races/half-orc.yaml +0 -2
  14. package/content/races/tiefling.yaml +0 -3
  15. package/content/spells/death-ward.yaml +11 -0
  16. package/content/spells/eldritch-blast.yaml +1 -1
  17. package/content/templates/eldritch-spear.yaml +4 -0
  18. package/content/traits/infernal-legacy.yaml +11 -2
  19. package/content/traits/relentless-endurance.yaml +5 -10
  20. package/dist/i18n/en.js +1 -1
  21. package/dist/i18n/en.json +24 -23
  22. package/dist/index.js +1 -1
  23. package/dist/release.json +1341 -2227
  24. package/i18n/en.yaml +24 -23
  25. package/pack.yaml +2 -2
  26. package/package.json +2 -2
  27. package/rules/classes.yaml +0 -1
  28. package/rules/combat.yaml +5 -0
  29. package/rules/content-types.yaml +3 -0
  30. package/rules/creation.yaml +6 -2
  31. package/rules/display.yaml +0 -6
  32. package/rules/monsters.yaml +1 -1
  33. package/rules/rest.yaml +13 -50
  34. package/rules/spellcasting.yaml +5 -0
  35. package/upgrades/0.1.0-to-0.2.0.yaml +62 -0
package/i18n/en.yaml CHANGED
@@ -11,6 +11,7 @@ types.weapon.name: 'Weapon'
11
11
  types.weapon.followUps.retaliation.name: 'Retaliation'
12
12
  types.weapon.followUps.retaliation.description: 'A creature within 5 feet damaged you: attack it with this weapon as a reaction'
13
13
  types.weapon.state.wielding.name: 'Wielded'
14
+ types.draconicAncestry.state.used.name: 'Breath weapon used'
14
15
  types.weapon.state.wielding.values.one-handed.name: 'One-handed'
15
16
  types.weapon.state.wielding.values.two-handed.name: 'Two-handed'
16
17
  types.weapon.state.attuned.name: 'Attuned'
@@ -436,7 +437,6 @@ fields.elementalAffinity.resistant.name: 'Elemental Affinity resistance'
436
437
  fields.dragonWings.active.name: 'Dragon wings out'
437
438
  fields.warlock.boons.name: 'Pact boon'
438
439
  fields.eldritchBlast.beams.name: 'Eldritch blast beams'
439
- fields.eldritchBlast.range.name: 'Eldritch blast range (feet)'
440
440
  fields.eldritchBlast.push.name: 'Eldritch blast push (feet)'
441
441
  fields.spellcasting.bard.dc.name: 'Bard spell save DC'
442
442
  fields.spellcasting.bard.attack.name: 'Bard spell attack bonus'
@@ -6672,6 +6672,7 @@ traits.skill-versatility.choices.skills.prompt: 'Skill Versatility: choose two s
6672
6672
  traits.menacing.name: 'Menacing'
6673
6673
  traits.menacing.description: 'You gain proficiency in the Intimidation skill.'
6674
6674
  traits.relentless-endurance.name: 'Relentless Endurance'
6675
+ traits.relentless-endurance.state.used.name: 'Relentless Endurance used'
6675
6676
  traits.relentless-endurance.description: "When you are reduced to 0 hit points but not killed outright, you can drop to 1 hit point instead. You can't use this feature again until you finish a long rest."
6676
6677
  traits.relentless-endurance.actions.relentless-endurance.name: 'Relentless Endurance'
6677
6678
  traits.relentless-endurance.actions.relentless-endurance.results.endured.name: 'At 1 hit point'
@@ -6682,6 +6683,8 @@ traits.savage-attacks.description: "When you score a critical hit with a melee w
6682
6683
  traits.hellish-resistance.name: 'Hellish Resistance'
6683
6684
  traits.hellish-resistance.description: 'You have resistance to fire damage.'
6684
6685
  traits.infernal-legacy.name: 'Infernal Legacy'
6686
+ traits.infernal-legacy.state.hellishRebukeUsed.name: 'Hellish Rebuke used'
6687
+ traits.infernal-legacy.state.darknessUsed.name: 'Darkness used'
6685
6688
  traits.infernal-legacy.description: 'You know the *thaumaturgy* cantrip. When you reach 3rd level, you can cast the *hellish rebuke* spell as a 2nd-level spell once with this trait and regain the ability to do so when you finish a long rest. When you reach 5th level, you can cast the *darkness* spell once with this trait and regain the ability to do so when you finish a long rest. Charisma is your spellcasting ability for these spells.'
6686
6689
  traits.infernal-legacy.options.hellish-rebuke.name: 'Infernal Legacy (once per long rest)'
6687
6690
  traits.infernal-legacy.options.darkness.name: 'Infernal Legacy (once per long rest)'
@@ -6847,7 +6850,6 @@ races.half-orc.description: |-
6847
6850
  ***Speed.*** Your base walking speed is 30 feet.
6848
6851
 
6849
6852
  ***Languages.*** You can speak, read, and write Common and Orc. Orc is a harsh, grating language with hard consonants. It has no script of its own but is written in the Dwarvish script.
6850
- races.half-orc.state.relentlessEnduranceUsed.name: 'Relentless Endurance used'
6851
6853
  races.tiefling.name: 'Tiefling'
6852
6854
  races.tiefling.description: |-
6853
6855
  Tieflings share certain racial traits as a result of their infernal descent.
@@ -6863,8 +6865,6 @@ races.tiefling.description: |-
6863
6865
  ***Speed.*** Your base walking speed is 30 feet.
6864
6866
 
6865
6867
  ***Languages.*** You can speak, read, and write Common and Infernal.
6866
- races.tiefling.state.hellishRebukeUsed.name: 'Hellish Rebuke used'
6867
- races.tiefling.state.darknessUsed.name: 'Darkness used'
6868
6868
 
6869
6869
  # Subraces
6870
6870
  subraces.hill-dwarf.name: 'Hill dwarf'
@@ -7374,13 +7374,6 @@ classes.warlock.state.arcanum9Used.name: '9th-level arcanum used'
7374
7374
  classes.warlock.state.eldritchMasterUsed.name: 'Eldritch Master used'
7375
7375
  classes.warlock.state.darkOnesOwnLuckUsed.name: "Dark One's Own Luck used"
7376
7376
  classes.warlock.state.hurlThroughHellUsed.name: 'Hurl Through Hell used'
7377
- classes.warlock.state.bewitchingWhispersUsed.name: 'Bewitching Whispers used'
7378
- classes.warlock.state.dreadfulWordUsed.name: 'Dreadful Word used'
7379
- classes.warlock.state.minionsOfChaosUsed.name: 'Minions of Chaos used'
7380
- classes.warlock.state.mireTheMindUsed.name: 'Mire the Mind used'
7381
- classes.warlock.state.sculptorOfFleshUsed.name: 'Sculptor of Flesh used'
7382
- classes.warlock.state.signOfIllOmenUsed.name: 'Sign of Ill Omen used'
7383
- classes.warlock.state.thiefOfFiveFatesUsed.name: 'Thief of Five Fates used'
7384
7377
  classes.wizard.choices.skills.prompt: 'Choose two wizard skills'
7385
7378
  classes.wizard.name: 'Wizard'
7386
7379
  classes.wizard.description: |-
@@ -7853,13 +7846,13 @@ features.druid.natural-recovery.description: |-
7853
7846
 
7854
7847
  For example, when you are a 4th-level druid, you can recover up to two levels worth of spell slots. You can recover either a 2nd-level slot or two 1st-level slots.
7855
7848
  features.druid.natural-recovery.actions.natural-recovery.name: 'Natural Recovery'
7856
- features.druid.natural-recovery.actions.natural-recovery.params.level1.name: '1st-level slots'
7857
- features.druid.natural-recovery.actions.natural-recovery.params.level2.name: '2nd-level slots'
7858
- features.druid.natural-recovery.actions.natural-recovery.params.level3.name: '3rd-level slots'
7859
- features.druid.natural-recovery.actions.natural-recovery.params.level4.name: '4th-level slots'
7860
- features.druid.natural-recovery.actions.natural-recovery.params.level5.name: '5th-level slots'
7849
+ features.druid.natural-recovery.actions.natural-recovery.steps.slots.prompt: 'Choose a spent slot to recover'
7850
+ features.druid.natural-recovery.actions.natural-recovery.options.1.name: '1st-level slot'
7851
+ features.druid.natural-recovery.actions.natural-recovery.options.2.name: '2nd-level slot'
7852
+ features.druid.natural-recovery.actions.natural-recovery.options.3.name: '3rd-level slot'
7853
+ features.druid.natural-recovery.actions.natural-recovery.options.4.name: '4th-level slot'
7854
+ features.druid.natural-recovery.actions.natural-recovery.options.5.name: '5th-level slot'
7861
7855
  features.druid.natural-recovery.actions.natural-recovery.results.recovered.name: 'Slots recovered'
7862
- features.druid.natural-recovery.actions.natural-recovery.results.too-many.name: 'Too many slot levels'
7863
7856
  features.druid.circle-spells.name: 'Circle Spells'
7864
7857
  features.druid.circle-spells.description: |-
7865
7858
  Your mystical connection to the land infuses you with the ability to cast certain spells. At 3rd, 5th, 7th, and 9th level you gain access to circle spells connected to the land where you became a druid. Choose that land—arctic, coast, desert, forest, grassland, mountain, or swamp—and consult the associated list of spells.
@@ -8715,6 +8708,7 @@ invocations.beast-speech.description: 'You can cast *speak with animals* at will
8715
8708
  invocations.beguiling-influence.name: 'Beguiling Influence'
8716
8709
  invocations.beguiling-influence.description: 'You gain proficiency in the Deception and Persuasion skills.'
8717
8710
  invocations.bewitching-whispers.name: 'Bewitching Whispers'
8711
+ invocations.bewitching-whispers.state.used.name: 'Bewitching Whispers used'
8718
8712
  invocations.bewitching-whispers.description: "You can cast *compulsion* once using a warlock spell slot. You can't do so again until you finish a long rest."
8719
8713
  invocations.bewitching-whispers.prerequisites.level: 'Bewitching Whispers needs warlock level 7.'
8720
8714
  invocations.book-of-ancient-secrets.name: 'Book of Ancient Secrets'
@@ -8734,12 +8728,14 @@ invocations.chains-of-carceri.prerequisites.pact: 'Chains of Carceri needs the P
8734
8728
  invocations.devils-sight.name: "Devil's Sight"
8735
8729
  invocations.devils-sight.description: 'You can see normally in darkness, both magical and nonmagical, to a distance of 120 feet.'
8736
8730
  invocations.dreadful-word.name: 'Dreadful Word'
8731
+ invocations.dreadful-word.state.used.name: 'Dreadful Word used'
8737
8732
  invocations.dreadful-word.description: "You can cast *confusion* once using a warlock spell slot. You can't do so again until you finish a long rest."
8738
8733
  invocations.dreadful-word.prerequisites.level: 'Dreadful Word needs warlock level 7.'
8739
8734
  invocations.eldritch-sight.name: 'Eldritch Sight'
8740
8735
  invocations.eldritch-sight.description: 'You can cast *detect magic* at will, without expending a spell slot.'
8741
8736
  invocations.eldritch-spear.name: 'Eldritch Spear'
8742
8737
  invocations.eldritch-spear.description: 'When you cast *eldritch blast*, its range is 300 feet.'
8738
+ templates.eldritch-spear.name: '{base}'
8743
8739
  invocations.eyes-of-the-rune-keeper.name: 'Eyes of the Rune Keeper'
8744
8740
  invocations.eyes-of-the-rune-keeper.description: 'You can read all writing.'
8745
8741
  invocations.fiendish-vigor.name: 'Fiendish Vigor'
@@ -8756,9 +8752,11 @@ invocations.master-of-myriad-forms.name: 'Master of Myriad Forms'
8756
8752
  invocations.master-of-myriad-forms.description: 'You can cast *alter self* at will, without expending a spell slot.'
8757
8753
  invocations.master-of-myriad-forms.prerequisites.level: 'Master of Myriad Forms needs warlock level 15.'
8758
8754
  invocations.minions-of-chaos.name: 'Minions of Chaos'
8755
+ invocations.minions-of-chaos.state.used.name: 'Minions of Chaos used'
8759
8756
  invocations.minions-of-chaos.description: "You can cast *conjure elemental* once using a warlock spell slot. You can't do so again until you finish a long rest."
8760
8757
  invocations.minions-of-chaos.prerequisites.level: 'Minions of Chaos needs warlock level 9.'
8761
8758
  invocations.mire-the-mind.name: 'Mire the Mind'
8759
+ invocations.mire-the-mind.state.used.name: 'Mire the Mind used'
8762
8760
  invocations.mire-the-mind.description: "You can cast *slow* once using a warlock spell slot. You can't do so again until you finish a long rest."
8763
8761
  invocations.mire-the-mind.prerequisites.level: 'Mire the Mind needs warlock level 5.'
8764
8762
  invocations.misty-visions.name: 'Misty Visions'
@@ -8772,12 +8770,15 @@ invocations.otherworldly-leap.prerequisites.level: 'Otherworldly Leap needs warl
8772
8770
  invocations.repelling-blast.name: 'Repelling Blast'
8773
8771
  invocations.repelling-blast.description: 'When you hit a creature with *eldritch blast*, you can push the creature up to 10 feet away from you in a straight line.'
8774
8772
  invocations.sculptor-of-flesh.name: 'Sculptor of Flesh'
8773
+ invocations.sculptor-of-flesh.state.used.name: 'Sculptor of Flesh used'
8775
8774
  invocations.sculptor-of-flesh.description: "You can cast *polymorph* once using a warlock spell slot. You can't do so again until you finish a long rest."
8776
8775
  invocations.sculptor-of-flesh.prerequisites.level: 'Sculptor of Flesh needs warlock level 7.'
8777
8776
  invocations.sign-of-ill-omen.name: 'Sign of Ill Omen'
8777
+ invocations.sign-of-ill-omen.state.used.name: 'Sign of Ill Omen used'
8778
8778
  invocations.sign-of-ill-omen.description: "You can cast *bestow curse* once using a warlock spell slot. You can't do so again until you finish a long rest."
8779
8779
  invocations.sign-of-ill-omen.prerequisites.level: 'Sign of Ill Omen needs warlock level 5.'
8780
8780
  invocations.thief-of-five-fates.name: 'Thief of Five Fates'
8781
+ invocations.thief-of-five-fates.state.used.name: 'Thief of Five Fates used'
8781
8782
  invocations.thief-of-five-fates.description: "You can cast *bane* once using a warlock spell slot. You can't do so again until you finish a long rest."
8782
8783
  invocations.thirsting-blade.name: 'Thirsting Blade'
8783
8784
  invocations.thirsting-blade.description: 'You can attack with your pact weapon twice, instead of once, whenever you take the Attack action on your turn.'
@@ -8845,14 +8846,14 @@ features.wizard.spellcasting.choices.spells.prompt: 'Choose wizard spells to pre
8845
8846
  features.wizard.spellcasting.choices.spellbook.prompt: '{slot, select, 1 {Choose six 1st-level spells for your spellbook} other {Choose two spells for your spellbook (level {slot})}}'
8846
8847
  features.wizard.spellcasting.choices.copied.prompt: 'Spells copied into your spellbook'
8847
8848
  features.wizard.arcane-recovery.actions.arcane-recovery.name: 'Arcane Recovery'
8849
+ features.wizard.arcane-recovery.actions.arcane-recovery.steps.slots.prompt: 'Choose a spent slot to recover'
8850
+ features.wizard.arcane-recovery.actions.arcane-recovery.options.1.name: '1st-level slot'
8851
+ features.wizard.arcane-recovery.actions.arcane-recovery.options.2.name: '2nd-level slot'
8852
+ features.wizard.arcane-recovery.actions.arcane-recovery.options.3.name: '3rd-level slot'
8853
+ features.wizard.arcane-recovery.actions.arcane-recovery.options.4.name: '4th-level slot'
8854
+ features.wizard.arcane-recovery.actions.arcane-recovery.options.5.name: '5th-level slot'
8848
8855
  features.wizard.overchannel.actions.overchannel.name: 'Overchannel'
8849
8856
  features.wizard.spell-mastery.choices.level.prompt: 'Choose a {slot, selectordinal, one {#st} two {#nd} few {#rd} other {#th}}-level spell to master'
8850
- features.wizard.arcane-recovery.actions.arcane-recovery.params.level1.name: '1st-level slots'
8851
- features.wizard.arcane-recovery.actions.arcane-recovery.params.level2.name: '2nd-level slots'
8852
- features.wizard.arcane-recovery.actions.arcane-recovery.params.level3.name: '3rd-level slots'
8853
- features.wizard.arcane-recovery.actions.arcane-recovery.params.level4.name: '4th-level slots'
8854
- features.wizard.arcane-recovery.actions.arcane-recovery.params.level5.name: '5th-level slots'
8855
- features.wizard.arcane-recovery.actions.arcane-recovery.results.too-many.name: 'Too many slot levels'
8856
8857
  features.wizard.arcane-recovery.actions.arcane-recovery.results.recovered.name: 'Slots recovered'
8857
8858
  features.wizard.overchannel.actions.overchannel.params.spellLevel.name: 'Spell level'
8858
8859
  features.wizard.overchannel.actions.overchannel.results.overchanneled.name: 'Overchanneled'
package/pack.yaml CHANGED
@@ -1,6 +1,6 @@
1
1
  id: 5e-srd-5.1
2
- version: 0.1.0
3
- specVersion: 0.1.0
2
+ version: 0.2.0
3
+ specVersion: 0.2.0
4
4
  license: CC-BY-4.0
5
5
  credit: >-
6
6
  This work includes material taken from the System Reference Document 5.1 (“SRD 5.1”) by
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencharacter/5e-srd-5.1",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Open Character Format pack: the 5E System Reference Document 5.1.",
5
5
  "keywords": [
6
6
  "5e",
@@ -52,7 +52,7 @@
52
52
  "access": "public"
53
53
  },
54
54
  "devDependencies": {
55
- "@opencharacter/engine": "0.1.0"
55
+ "@opencharacter/engine": "0.2.0"
56
56
  },
57
57
  "engines": {
58
58
  "node": ">=22"
@@ -59,7 +59,6 @@ fields:
59
59
  type: integer,
60
60
  formula: 'level.total >= 17 ? 4 : level.total >= 11 ? 3 : level.total >= 5 ? 2 : 1',
61
61
  }
62
- eldritchBlast.range: { type: integer, formula: 120 }
63
62
  eldritchBlast.push: { type: integer, formula: 0 }
64
63
 
65
64
  contentTypes:
package/rules/combat.yaml CHANGED
@@ -754,6 +754,7 @@ actions:
754
754
  - id: breath-weapon
755
755
  tags: [breath-weapon]
756
756
  results: [breathed]
757
+ available: '!self.used'
757
758
  participants:
758
759
  target: {}
759
760
  steps:
@@ -788,6 +789,10 @@ actions:
788
789
  - save-half
789
790
  - { formula: "'save.' + item.save" }
790
791
  - { formula: "steps.saves.result == 'success' ? 'save-success' : 'save-failure'" }
792
+ - id: spend
793
+ kind: changes
794
+ changes:
795
+ - { type: setState, pick: self, key: used, value: true }
791
796
  - id: result
792
797
  kind: outcome
793
798
  result: "'breathed'"
@@ -289,6 +289,9 @@ contentTypes:
289
289
  damageType: { type: enum, values: [acid, cold, fire, lightning, poison], required: true }
290
290
  area: { type: enum, values: [line, cone], required: true }
291
291
  save: { type: enum, values: [dex, con], required: true }
292
+ # Once until a short or long rest, on the ancestry's pick.
293
+ state:
294
+ used: { type: boolean, default: false }
292
295
  actions:
293
296
  - use: breath-weapon
294
297
 
@@ -23,7 +23,9 @@ actions:
23
23
  kind: choice
24
24
  options: { content: { type: subrace, where: item.race == steps.race.picked } }
25
25
  changes:
26
- - { type: choose, path: { entry: race, choice: [subrace] }, option: picked.id }
26
+ - type: choose
27
+ path: { entry: { formula: 'steps.race.added[0]' }, choice: [subrace] }
28
+ option: picked.id
27
29
  - id: class
28
30
  kind: choice
29
31
  options: { content: { type: class } }
@@ -129,7 +131,9 @@ actions:
129
131
  options: { content: { type: subrace, where: item.race == steps.race.picked } }
130
132
  random: true
131
133
  changes:
132
- - { type: choose, path: { entry: race, choice: [subrace] }, option: picked.id }
134
+ - type: choose
135
+ path: { entry: { formula: 'steps.race.added[0]' }, choice: [subrace] }
136
+ option: picked.id
133
137
  - id: class
134
138
  kind: choice
135
139
  options: { content: { type: class } }
@@ -446,12 +446,6 @@ display:
446
446
  priority: 1,
447
447
  showWhen: '@spells.eldritch-blast in spells.warlock',
448
448
  }
449
- eldritchBlast.range:
450
- {
451
- groups: [class-features],
452
- priority: 2,
453
- showWhen: '@spells.eldritch-blast in spells.warlock',
454
- }
455
449
  eldritchBlast.push: { groups: [class-features], priority: 2, showWhen: eldritchBlast.push > 0 }
456
450
  sorcery.left: { groups: [class-features], priority: 1, showWhen: sorcery.points > 0 }
457
451
  sorcery.shortRestRegain: { hidden: true }
@@ -540,7 +540,7 @@ actions:
540
540
  changes:
541
541
  - type: choose
542
542
  when: has(steps.monster.item.startingForm)
543
- path: { entry: monster, choice: [form] }
543
+ path: { entry: { formula: 'steps.monster.added[0]' }, choice: [form] }
544
544
  option: steps.monster.item.startingForm
545
545
  - type: addItem
546
546
  forEach: steps.monster.item.ownCopies
package/rules/rest.yaml CHANGED
@@ -279,13 +279,13 @@ actions:
279
279
  key: wholenessUsed
280
280
  value: false
281
281
  - type: setState
282
- when: countCopies(has(copy.state.hellishRebukeUsed) && copy.state.hellishRebukeUsed) > 0
283
- copies: { type: race, where: has(self.hellishRebukeUsed) && self.hellishRebukeUsed }
282
+ when: countCopies(copy.item == @races.tiefling) > 0
283
+ grants: { where: 'item.id == @traits.infernal-legacy && self.hellishRebukeUsed' }
284
284
  key: hellishRebukeUsed
285
285
  value: false
286
286
  - type: setState
287
- when: countCopies(has(copy.state.darknessUsed) && copy.state.darknessUsed) > 0
288
- copies: { type: race, where: has(self.darknessUsed) && self.darknessUsed }
287
+ when: countCopies(copy.item == @races.tiefling) > 0
288
+ grants: { where: 'item.id == @traits.infernal-legacy && self.darknessUsed' }
289
289
  key: darknessUsed
290
290
  value: false
291
291
  - type: setState
@@ -300,15 +300,9 @@ actions:
300
300
  key: used
301
301
  value: false
302
302
  - type: setState
303
- when: >-
304
- countCopies(has(copy.state.relentlessEnduranceUsed)
305
- && copy.state.relentlessEnduranceUsed) > 0
306
- copies:
307
- {
308
- type: race,
309
- where: has(self.relentlessEnduranceUsed) && self.relentlessEnduranceUsed,
310
- }
311
- key: relentlessEnduranceUsed
303
+ when: countCopies(copy.item == @races.half-orc) > 0
304
+ grants: { where: 'item.id == @traits.relentless-endurance && self.used' }
305
+ key: used
312
306
  value: false
313
307
  - type: setState
314
308
  when: countCopies(has(copy.state.signatureSpell1Used) && copy.state.signatureSpell1Used) > 0
@@ -323,45 +317,14 @@ actions:
323
317
  key: signatureSpell2Used
324
318
  value: false
325
319
  - type: setState
326
- when: countCopies(has(copy.state.bewitchingWhispersUsed) && copy.state.bewitchingWhispersUsed) > 0
327
- copies:
328
- {
329
- type: class,
330
- where: has(self.bewitchingWhispersUsed) && self.bewitchingWhispersUsed,
331
- }
332
- key: bewitchingWhispersUsed
333
- value: false
334
- - type: setState
335
- when: countCopies(has(copy.state.dreadfulWordUsed) && copy.state.dreadfulWordUsed) > 0
336
- copies: { type: class, where: has(self.dreadfulWordUsed) && self.dreadfulWordUsed }
337
- key: dreadfulWordUsed
338
- value: false
339
- - type: setState
340
- when: countCopies(has(copy.state.minionsOfChaosUsed) && copy.state.minionsOfChaosUsed) > 0
341
- copies: { type: class, where: has(self.minionsOfChaosUsed) && self.minionsOfChaosUsed }
342
- key: minionsOfChaosUsed
343
- value: false
344
- - type: setState
345
- when: countCopies(has(copy.state.mireTheMindUsed) && copy.state.mireTheMindUsed) > 0
346
- copies: { type: class, where: has(self.mireTheMindUsed) && self.mireTheMindUsed }
347
- key: mireTheMindUsed
348
- value: false
349
- - type: setState
350
- when: countCopies(has(copy.state.sculptorOfFleshUsed) && copy.state.sculptorOfFleshUsed) > 0
351
- copies:
352
- { type: class, where: has(self.sculptorOfFleshUsed) && self.sculptorOfFleshUsed }
353
- key: sculptorOfFleshUsed
354
- value: false
355
- - type: setState
356
- when: countCopies(has(copy.state.signOfIllOmenUsed) && copy.state.signOfIllOmenUsed) > 0
357
- copies: { type: class, where: has(self.signOfIllOmenUsed) && self.signOfIllOmenUsed }
358
- key: signOfIllOmenUsed
320
+ when: countCopies(copy.item == @classes.warlock) > 0
321
+ picks: { where: "item.type == 'invocation' && self.used" }
322
+ key: used
359
323
  value: false
360
324
  - type: setState
361
- when: countCopies(has(copy.state.thiefOfFiveFatesUsed) && copy.state.thiefOfFiveFatesUsed) > 0
362
- copies:
363
- { type: class, where: has(self.thiefOfFiveFatesUsed) && self.thiefOfFiveFatesUsed }
364
- key: thiefOfFiveFatesUsed
325
+ when: countCopies(copy.item == @races.dragonborn) > 0
326
+ picks: { where: "item.type == 'draconicAncestry' && self.used" }
327
+ key: used
365
328
  value: false
366
329
  - type: setState
367
330
  when: countCopies(copy.type == 'monsterAction') > 0
@@ -685,6 +685,11 @@ actions:
685
685
  { type: class, where: has(self.signatureSpell2Used) && self.signatureSpell2Used }
686
686
  key: signatureSpell2Used
687
687
  value: false
688
+ - type: setState
689
+ when: countCopies(copy.item == @races.dragonborn) > 0
690
+ picks: { where: "item.type == 'draconicAncestry' && self.used" }
691
+ key: used
692
+ value: false
688
693
  - type: setState
689
694
  when: countCopies(copy.type == 'monsterAction') > 0
690
695
  copies:
@@ -0,0 +1,62 @@
1
+ pack: 5e-srd-5.1
2
+ from: 0.1.0
3
+ to: 0.2.0
4
+ steps:
5
+ # Each once-per-rest invocation's use moved from the warlock copy to the invocation's pick.
6
+ - op: moveState
7
+ type: class
8
+ from: bewitchingWhispersUsed
9
+ to: used
10
+ owner: features.warlock.eldritch-invocations
11
+ choice: invocations
12
+ option: invocations.bewitching-whispers
13
+ - op: moveState
14
+ type: class
15
+ from: dreadfulWordUsed
16
+ to: used
17
+ owner: features.warlock.eldritch-invocations
18
+ choice: invocations
19
+ option: invocations.dreadful-word
20
+ - op: moveState
21
+ type: class
22
+ from: minionsOfChaosUsed
23
+ to: used
24
+ owner: features.warlock.eldritch-invocations
25
+ choice: invocations
26
+ option: invocations.minions-of-chaos
27
+ - op: moveState
28
+ type: class
29
+ from: mireTheMindUsed
30
+ to: used
31
+ owner: features.warlock.eldritch-invocations
32
+ choice: invocations
33
+ option: invocations.mire-the-mind
34
+ - op: moveState
35
+ type: class
36
+ from: sculptorOfFleshUsed
37
+ to: used
38
+ owner: features.warlock.eldritch-invocations
39
+ choice: invocations
40
+ option: invocations.sculptor-of-flesh
41
+ - op: moveState
42
+ type: class
43
+ from: signOfIllOmenUsed
44
+ to: used
45
+ owner: features.warlock.eldritch-invocations
46
+ choice: invocations
47
+ option: invocations.sign-of-ill-omen
48
+ - op: moveState
49
+ type: class
50
+ from: thiefOfFiveFatesUsed
51
+ to: used
52
+ owner: features.warlock.eldritch-invocations
53
+ choice: invocations
54
+ option: invocations.thief-of-five-fates
55
+ # Racial uses moved from the race copy to the granted trait's saved state.
56
+ - op: moveState
57
+ type: race
58
+ from: relentlessEnduranceUsed
59
+ to: used
60
+ grant: traits.relentless-endurance
61
+ - { op: moveState, type: race, from: hellishRebukeUsed, grant: traits.infernal-legacy }
62
+ - { op: moveState, type: race, from: darknessUsed, grant: traits.infernal-legacy }