@opencharacter/orc-2e 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 (39) hide show
  1. package/README.md +7 -6
  2. package/content/backgrounds/driver.yaml +3 -3
  3. package/content/backgrounds/farmhand.yaml +1 -1
  4. package/content/backgrounds/miner.yaml +1 -1
  5. package/content/backgrounds/nomad.yaml +1 -1
  6. package/content/backgrounds/raised-by-belief.yaml +16 -16
  7. package/content/backgrounds/scholar.yaml +4 -4
  8. package/content/classes/champion/resistance.yaml +2 -0
  9. package/content/classes/wizard.yaml +0 -6
  10. package/content/feats/ancestry/changeling-lore.yaml +3 -1
  11. package/content/feats/archetype/gladiator/gladiator-dedication.yaml +1 -1
  12. package/content/feats/archetype/scout/terrain-scout.yaml +6 -0
  13. package/content/feats/archetype/viking/viking-dedication.yaml +3 -1
  14. package/content/feats/skill/additional-lore.yaml +12 -0
  15. package/content/feats/skill/assurance.yaml +8 -30
  16. package/content/feats/skill/terrain-stalker.yaml +1 -0
  17. package/content/features/wizard/arcane-bond.yaml +8 -4
  18. package/content/heritages/deep-orc.yaml +3 -1
  19. package/content/heritages/woodstalker-lizardfolk.yaml +3 -1
  20. package/content/spells/enduring-might.yaml +2 -0
  21. package/content/spells/energy-absorption.yaml +2 -0
  22. package/content/spells/fire-shield.yaml +31 -0
  23. package/content/spells/flame-barrier.yaml +2 -0
  24. package/content/spells/shield.yaml +2 -0
  25. package/dist/i18n/en.js +1 -1
  26. package/dist/i18n/en.json +14 -2
  27. package/dist/index.js +1 -1
  28. package/dist/release.json +1532 -799
  29. package/i18n/en/archetypes.yaml +4 -0
  30. package/i18n/en/lores-pc2.yaml +6 -0
  31. package/i18n/en/spellcasting.yaml +1 -0
  32. package/i18n/en/spells-high.yaml +1 -0
  33. package/i18n/en/wizard.yaml +2 -2
  34. package/pack.yaml +2 -2
  35. package/package.json +2 -2
  36. package/rules/lores-pc2.yaml +47 -0
  37. package/rules/spellcasting.yaml +11 -4
  38. package/rules/wizard.yaml +1 -1
  39. package/upgrades/0.1.0-to-0.2.0.yaml +11 -0
@@ -875,6 +875,10 @@ feats.archetype.scout.scouts-charge.name: "Scout's Charge"
875
875
  feats.archetype.scout.scouts-charge.description: 'Two actions, flourish. Stride, Feint an enemy (with Stealth if you like), then Strike it.'
876
876
  feats.archetype.scout.terrain-scout.prerequisites.scout-dedication: 'Scout Dedication'
877
877
  feats.archetype.scout.terrain-scout.name: 'Terrain Scout'
878
+ feats.archetype.scout.terrain-scout.choices.terrain.prompt: 'Second terrain'
879
+ feats.archetype.scout.terrain-scout.choices.terrain.options.rubble.name: 'Rubble'
880
+ feats.archetype.scout.terrain-scout.choices.terrain.options.snow.name: 'Snow'
881
+ feats.archetype.scout.terrain-scout.choices.terrain.options.underbrush.name: 'Underbrush'
878
882
  feats.archetype.scout.terrain-scout.description: 'You gain Terrain Stalker twice, for two terrains, and can share one with an ally following you.'
879
883
  feats.archetype.scout.fleeting-shadow.prerequisites.scout-dedication: 'Scout Dedication'
880
884
  feats.archetype.scout.fleeting-shadow.name: 'Fleeting Shadow'
@@ -89,6 +89,11 @@ fields.skills.lore.vampire.trainedByIncrease.name: 'Vampire Lore trained by a sk
89
89
  fields.skills.lore.vampire.mod.name: 'Vampire Lore'
90
90
  fields.skills.lore.vampire.rank.name: 'Vampire Lore proficiency'
91
91
  tags.skill.lore.vampire.name: 'Vampire Lore'
92
+ fields.skills.lore.hag.increases.name: 'Hag Lore increases'
93
+ fields.skills.lore.hag.trainedByIncrease.name: 'Hag Lore trained by a skill increase'
94
+ fields.skills.lore.hag.mod.name: 'Hag Lore'
95
+ fields.skills.lore.hag.rank.name: 'Hag Lore proficiency'
96
+ tags.skill.lore.hag.name: 'Hag Lore'
92
97
  feats.skill.additional-lore.choices.lore.options.accounting.name: 'Accounting Lore'
93
98
  feats.skill.additional-lore.choices.lore.options.astrology.name: 'Astrology Lore'
94
99
  feats.skill.additional-lore.choices.lore.options.afterlife.name: 'Afterlife Lore'
@@ -107,3 +112,4 @@ feats.skill.additional-lore.choices.lore.options.ratfolk.name: 'Ratfolk Lore'
107
112
  feats.skill.additional-lore.choices.lore.options.tengu.name: 'Tengu Lore'
108
113
  feats.skill.additional-lore.choices.lore.options.tripkee.name: 'Tripkee Lore'
109
114
  feats.skill.additional-lore.choices.lore.options.vampire.name: 'Vampire Lore'
115
+ feats.skill.additional-lore.choices.lore.options.hag.name: 'Hag Lore'
@@ -68,6 +68,7 @@ fields.spellSlots.rank10.used.name: 10th-rank slots spent
68
68
 
69
69
  situational.againstMental.name: Against a mental effect
70
70
  situational.shieldSpellBlock.name: Shield Block with the shield spell
71
+ situational.fireShieldBlock.name: Shield Block with fire shield
71
72
 
72
73
  groups.spellcasting.label: Spellcasting
73
74
  groups.spell-slots.label: Spell slots
@@ -498,6 +498,7 @@ spells.fiery-body.description: |-
498
498
 
499
499
  **Heightened (9th)** Touching you deals 4d6 fire damage, your unarmed attacks 2d4 more fire damage, and your fly Speed is 60 feet.
500
500
  spells.fire-shield.name: 'Fire Shield'
501
+ spells.fire-shield.state.blocked.name: 'Shield damage'
501
502
  spells.fire-shield.description: |-
502
503
  A hovering shield of fire gives you cold resistance 5 and protects you from mild and severe environmental cold. You can Raise a Shield with it for a +1 circumstance bonus to AC, and Shield Block with it: Hardness 10 (halved against water effects), 40 HP, no Broken Threshold, immune to fire. When you Shield Block an unarmed attack or an adjacent attacker's melee attack with it, the attacker takes 2d6 fire damage.
503
504
 
@@ -2,8 +2,6 @@
2
2
  # Short rules text written for the pack.
3
3
  classes.wizard.name: Wizard
4
4
  classes.wizard.description: "A scholar of arcane magic who prepares spells from a spellbook. Key attribute: Intelligence. 6 Hit Points plus Constitution per level. Trained in Perception, Fortitude and Reflex, expert in Will; trained in simple weapons and unarmed attacks; trained in unarmored defense; trained in the wizard class DC, spell attack modifier and spell DC. Trained in Arcana and 2 skills plus Intelligence. Arcane prepared spellcasting with Intelligence: two spells of each rank (three from the next level) and five cantrips, prepared from your spellbook, plus your curriculum's extra cantrip and spell of each rank."
5
- classes.wizard.state.bondDrained.name: Ranks drained from the bonded item today
6
- classes.wizard.state.linkedFocusUsed.name: Linked Focus used today
7
5
  classes.wizard.choices.school.prompt: Arcane school
8
6
  classes.wizard.choices.curriculum-cantrip.prompt: 'Curriculum: a cantrip for your spellbook'
9
7
  classes.wizard.choices.curriculum.prompt: 'Curriculum: rank {slot} spells for your spellbook'
@@ -49,6 +47,8 @@ classes.wizard.theses.staff-nexus.name: Staff Nexus
49
47
  classes.wizard.theses.staff-nexus.description: 'You start with a makeshift staff holding a cantrip and a 1st-rank spell from your spellbook. At daily preparations, expend a spell to give it charges equal to its rank (two spells from 8th level, three from 16th); casting the 1st-rank spell from it costs a charge. You can merge it with another staff, adding its two spells.'
50
48
 
51
49
  features.wizard.arcane-bond.name: Arcane Bond
50
+ features.wizard.arcane-bond.state.bondDrained.name: Ranks drained from the bonded item today
51
+ features.wizard.arcane-bond.state.linkedFocusUsed.name: Linked Focus used today
52
52
  features.wizard.arcane-bond.description: 'Each day when you prepare spells, you designate an item you own as your bonded item. Drain Bonded Item (free action, arcane, once per day; your bonded item is on your person): this turn, you can cast one spell you prepared today and already cast, without spending a slot.'
53
53
  features.wizard.arcane-bond.actions.drain-bonded-item.name: Drain Bonded Item
54
54
  features.wizard.arcane-bond.actions.drain-bonded-item.steps.spell.prompt: A prepared spell you already cast today
package/pack.yaml CHANGED
@@ -1,6 +1,6 @@
1
1
  id: orc-2e
2
- version: 0.1.0
3
- specVersion: 0.1.0
2
+ version: 0.2.0
3
+ specVersion: 0.2.0
4
4
  license: ORC
5
5
  # The ORC License's four notices (Article III): the attribution of the Licensed Material used is the
6
6
  # credit line; the ORC Notice, the Reserved Material notice and the Expressly Designated Licensed
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencharacter/orc-2e",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Open Character Format pack: Second Edition fantasy rules (Player Core, Player Core 2 and GM Core) under the ORC License.",
5
5
  "keywords": [
6
6
  "character-sheet",
@@ -51,7 +51,7 @@
51
51
  "access": "public"
52
52
  },
53
53
  "devDependencies": {
54
- "@opencharacter/engine": "0.1.0"
54
+ "@opencharacter/engine": "0.2.0"
55
55
  },
56
56
  "engines": {
57
57
  "node": ">=22"
@@ -17,6 +17,7 @@ tags:
17
17
  - skill.lore.tengu
18
18
  - skill.lore.tripkee
19
19
  - skill.lore.vampire
20
+ - skill.lore.hag
20
21
 
21
22
  fields:
22
23
  skills.lore.accounting.increases:
@@ -685,6 +686,43 @@ fields:
685
686
  skills.lore.vampire.rank == 0 ? ['untrained']
686
687
  : [['rank.trained', 'rank.expert', 'rank.master', 'rank.legendary'][min(4, skills.lore.vampire.rank) - 1]]
687
688
  formula: 'attributes.int.mod + (skills.lore.vampire.rank > 0 ? 2 * skills.lore.vampire.rank + proficiency.level : proficiency.untrained)'
689
+ skills.lore.hag.increases:
690
+ type: integer
691
+ input: true
692
+ default: 0
693
+ min: 0
694
+ max: >-
695
+ 'skill.lore.hag' in skills.trained || 'skill.lore.hag' in skills.chosen
696
+ ? skills.maxRank - 1 : 0
697
+ tags:
698
+ - skill-increase
699
+ - lore
700
+ - formula: "'skill.lore.hag' in skills.trained || 'skill.lore.hag' in skills.chosen ? [] : ['untrained']"
701
+ skills.lore.hag.trainedByIncrease:
702
+ {
703
+ type: integer,
704
+ input: true,
705
+ default: 0,
706
+ min: 0,
707
+ max: 1,
708
+ tags: [skill-increase, skill-training, skill.lore.hag, lore],
709
+ }
710
+ skills.lore.hag.rank:
711
+ type: integer
712
+ tags: [skill-rank, lore, skill.lore.hag]
713
+ formula: "('skill.lore.hag' in skills.trained || 'skill.lore.hag' in skills.chosen ? 1 : 0) + skills.lore.hag.increases"
714
+ skills.lore.hag.mod:
715
+ type: integer
716
+ tags:
717
+ - check
718
+ - skill
719
+ - skill.lore.hag
720
+ - attr.int
721
+ - lore
722
+ - formula: >-
723
+ skills.lore.hag.rank == 0 ? ['untrained']
724
+ : [['rank.trained', 'rank.expert', 'rank.master', 'rank.legendary'][min(4, skills.lore.hag.rank) - 1]]
725
+ formula: 'attributes.int.mod + (skills.lore.hag.rank > 0 ? 2 * skills.lore.hag.rank + proficiency.level : proficiency.untrained)'
688
726
  # A skill trained by a skill increase counts as a training the player chose.
689
727
  effects:
690
728
  - {
@@ -795,6 +833,12 @@ effects:
795
833
  value: { tag: skill.lore.vampire },
796
834
  when: skills.lore.vampire.trainedByIncrease > 0,
797
835
  }
836
+ - {
837
+ target: skills.chosen,
838
+ op: grant,
839
+ value: { tag: skill.lore.hag },
840
+ when: skills.lore.hag.trainedByIncrease > 0,
841
+ }
798
842
 
799
843
  display:
800
844
  fields:
@@ -852,3 +896,6 @@ display:
852
896
  skills.lore.vampire.rank: { format: { bands: rank } }
853
897
  skills.lore.vampire.mod:
854
898
  { format: signed, rolls: [{ action: check, params: { check: skills.lore.vampire.mod } }] }
899
+ skills.lore.hag.rank: { format: { bands: rank } }
900
+ skills.lore.hag.mod:
901
+ { format: signed, rolls: [{ action: check, params: { check: skills.lore.hag.mod } }] }
@@ -269,6 +269,13 @@ situational:
269
269
  incoming: { fields: [hp.current], tags: [damage] }
270
270
  available: >-
271
271
  countList(character.applied, x.active && x.source == @spells.shield) > 0
272
+ - id: fireShieldBlock
273
+ type: boolean
274
+ default: false
275
+ incoming: { fields: [hp.current], tags: [damage] }
276
+ available: >-
277
+ shield.raised
278
+ && countList(character.applied, x.active && x.source == @spells.fire-shield) > 0
272
279
 
273
280
  - id: bespellStrikes
274
281
  type: boolean
@@ -1242,13 +1249,13 @@ actions:
1242
1249
  key: expended
1243
1250
  value: false
1244
1251
  - type: setState
1245
- when: "countCopies(copy.type == 'class' && has(copy.state.bondDrained) && copy.state.bondDrained > 0) > 0"
1246
- copies: { type: class, where: 'has(self.bondDrained) && self.bondDrained > 0' }
1252
+ when: class.has.wizard
1253
+ grants: { where: self.bondDrained > 0 }
1247
1254
  key: bondDrained
1248
1255
  value: 0
1249
1256
  - type: setState
1250
- when: "countCopies(copy.type == 'class' && has(copy.state.linkedFocusUsed) && copy.state.linkedFocusUsed) > 0"
1251
- copies: { type: class, where: 'has(self.linkedFocusUsed) && self.linkedFocusUsed' }
1257
+ when: class.has.wizard
1258
+ grants: { where: self.linkedFocusUsed }
1252
1259
  key: linkedFocusUsed
1253
1260
  value: false
1254
1261
  - id: items
package/rules/wizard.yaml CHANGED
@@ -25,7 +25,7 @@ fields:
25
25
  staff-nexus,
26
26
  ]
27
27
  formula: "'none'"
28
- # The 10th-rank slot can't be drained. The ranks drained today are the wizard class copy's
28
+ # The 10th-rank slot can't be drained. The ranks drained today are Arcane Bond's
29
29
  # `bondDrained` state.
30
30
  wizard.drainsPerDay:
31
31
  type: integer
@@ -0,0 +1,11 @@
1
+ pack: orc-2e
2
+ from: 0.1.0
3
+ to: 0.2.0
4
+ steps:
5
+ # Drain Bonded Item's and Linked Focus's daily uses moved from the wizard copy to Arcane Bond's
6
+ # saved grant state.
7
+ - { op: moveState, type: class, from: bondDrained, grant: features.wizard.arcane-bond }
8
+ - { op: moveState, type: class, from: linkedFocusUsed, grant: features.wizard.arcane-bond }
9
+ # Assurance's skill was grant state; it is a pick now, preset by the granting content.
10
+ - { op: removeState, type: feat, key: skill }
11
+ - { op: requireChoice, owner: feats.archetype.scout.terrain-scout, choice: terrain }