@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.
- package/README.md +54 -5
- package/content/classes/envoy.yaml +2 -52
- package/content/classes/mystic/connections/akashic.yaml +1 -1
- package/content/classes/mystic/connections/elemental.yaml +62 -1
- package/content/classes/mystic/connections/healing.yaml +1 -1
- package/content/classes/mystic/connections/rhythm.yaml +1 -1
- package/content/classes/mystic/connections/shadow.yaml +1 -1
- package/content/classes/mystic.yaml +2 -51
- package/content/classes/operative.yaml +1 -44
- package/content/classes/solarian.yaml +1 -44
- package/content/classes/soldier.yaml +2 -51
- package/content/classes/witchwarper/anchors/core-memories.yaml +1 -1
- package/content/classes/witchwarper/anchors/focal-point.yaml +1 -1
- package/content/classes/witchwarper/anchors/tangible-object.yaml +1 -1
- package/content/classes/witchwarper/paradoxes/analyst.yaml +1 -1
- package/content/classes/witchwarper/paradoxes/anomaly.yaml +1 -1
- package/content/classes/witchwarper/paradoxes/lost-history.yaml +1 -1
- package/content/classes/witchwarper/paradoxes/precog.yaml +1 -1
- package/content/classes/witchwarper.yaml +3 -55
- package/content/effects/treated-disease.yaml +4 -0
- package/content/effects/treated-poison.yaml +4 -0
- package/content/feats/ancestry/fixation.yaml +11 -49
- package/content/feats/ancestry/harmonic-sensitivity.yaml +16 -6
- package/content/feats/ancestry/lashunta-lore.yaml +6 -0
- package/content/feats/archetype/envoy/envoy-dedication.yaml +2 -88
- package/content/feats/mystic/new-epiphany.yaml +1 -1
- package/content/feats/mystic/realized-epiphany.yaml +1 -1
- package/content/feats/mystic/syncretic-epiphany.yaml +1 -1
- package/content/feats/skill/additional-lore.yaml +54 -391
- package/content/feats/skill/assurance.yaml +3 -57
- package/content/feats/skill/skill-training.yaml +1 -57
- package/content/features/envoy/style/from-the-front.yaml +1 -1
- package/content/features/envoy/style/from-the-shadows.yaml +1 -1
- package/content/features/envoy/style/guns-blazing.yaml +1 -1
- package/content/features/envoy/style/in-the-spotlight.yaml +1 -1
- package/content/features/envoy/style/infosphere-director.yaml +1 -1
- package/content/features/envoy/style/through-desperate-times.yaml +1 -1
- package/content/features/soldier/style/action-hero.yaml +1 -1
- package/content/features/soldier/style/armor-storm.yaml +1 -1
- package/content/features/soldier/style/bombard.yaml +1 -1
- package/content/features/soldier/style/close-quarters.yaml +1 -1
- package/content/features/soldier/style/erudite-warrior.yaml +1 -1
- package/content/gear/comm-unit.yaml +1 -0
- package/content/spells/elemental-barrier.yaml +2 -1
- package/content/spells/elemental-weapon.yaml +10 -1
- package/content/spells/guidance.yaml +2 -0
- package/content/spells/sure-strike.yaml +8 -1
- package/content/spells/true-target.yaml +2 -0
- package/content/templates/elemental/air.yaml +6 -0
- package/content/templates/elemental/earth.yaml +6 -0
- package/content/templates/elemental/fire.yaml +6 -0
- package/content/templates/elemental/metal.yaml +6 -0
- package/content/templates/elemental/water.yaml +6 -0
- package/content/templates/elemental/wood.yaml +6 -0
- package/dist/i18n/en.js +1 -1
- package/dist/i18n/en.json +50 -59
- package/dist/index.js +1 -1
- package/dist/release.json +5419 -3339
- package/i18n/en/ancestry-feats.yaml +4 -40
- package/i18n/en/archetypes.yaml +2 -2
- package/i18n/en/core.yaml +8 -2
- package/i18n/en/headline.yaml +4 -0
- package/i18n/en/mystic.yaml +12 -0
- package/i18n/en/sf-core.yaml +0 -11
- package/i18n/en/skills.yaml +6 -3
- package/i18n/en/tags.yaml +2 -0
- package/i18n/en/types.yaml +1 -0
- package/i18n/en.yaml +14 -1
- package/pack.yaml +2 -2
- package/package.json +2 -2
- package/rules/advancement.yaml +1 -0
- package/rules/afflictions.yaml +4 -5
- package/rules/archetypes.yaml +1 -0
- package/rules/building.yaml +7 -1
- package/rules/checks.yaml +1 -1
- package/rules/conditions.yaml +1 -0
- package/rules/core.yaml +1 -0
- package/rules/creation.yaml +18 -0
- package/rules/equipment.yaml +7 -2
- package/rules/heritages.yaml +1 -1
- package/rules/layout.yaml +62 -4
- package/rules/mystic.yaml +24 -1
- package/rules/skill-actions-stealth.yaml +1 -1
- package/rules/skills.yaml +254 -81
- package/rules/solarian.yaml +1 -2
- package/rules/spellcasting.yaml +89 -21
- package/rules/spells-high.yaml +3 -3
- package/rules/strikes.yaml +3 -1
- package/rules/tags.yaml +6 -0
- package/rules/witchwarper.yaml +7 -7
- package/upgrades/0.2.0-to-0.3.0.yaml +12 -0
|
@@ -148,6 +148,9 @@ feats.ancestry.psychic-paragon.name: Psychic Paragon
|
|
|
148
148
|
feats.ancestry.psychic-paragon.prerequisites.feat: Psychic Mastery
|
|
149
149
|
feats.ancestry.competitive-spirit.name: Competitive Spirit
|
|
150
150
|
feats.ancestry.harmonic-sensitivity.name: Harmonic Sensitivity
|
|
151
|
+
feats.ancestry.harmonic-sensitivity.choices.harmonic.prompt: Performance
|
|
152
|
+
feats.ancestry.harmonic-sensitivity.choices.harmonic.options.training.name: Trained in Performance
|
|
153
|
+
feats.ancestry.harmonic-sensitivity.choices.harmonic.options.assurance.name: Assurance (Performance)
|
|
151
154
|
feats.ancestry.long-whiskered.name: Long Whiskered
|
|
152
155
|
feats.ancestry.pahtra-lore.name: Pahtra Lore
|
|
153
156
|
feats.ancestry.predatory.name: Predatory
|
|
@@ -189,46 +192,6 @@ feats.ancestry.clinging-bite.name: Clinging Bite
|
|
|
189
192
|
feats.ancestry.clinging-bite.prerequisites.heritage: Everwhelp Skittermander heritage
|
|
190
193
|
feats.ancestry.dauntless.name: Dauntless
|
|
191
194
|
feats.ancestry.fixation.name: Fixation
|
|
192
|
-
feats.ancestry.fixation.choices.topic.prompt: Your fixation (a Lore)
|
|
193
|
-
feats.ancestry.fixation.choices.topic.options.academia.name: Academia Lore
|
|
194
|
-
feats.ancestry.fixation.choices.topic.options.alcohol.name: Alcohol Lore
|
|
195
|
-
feats.ancestry.fixation.choices.topic.options.android.name: Android Lore
|
|
196
|
-
feats.ancestry.fixation.choices.topic.options.animal.name: Animal Lore
|
|
197
|
-
feats.ancestry.fixation.choices.topic.options.art.name: Art Lore
|
|
198
|
-
feats.ancestry.fixation.choices.topic.options.augmentation.name: Augmentation Lore
|
|
199
|
-
feats.ancestry.fixation.choices.topic.options.barathu.name: Barathu Lore
|
|
200
|
-
feats.ancestry.fixation.choices.topic.options.borai.name: Borai Lore
|
|
201
|
-
feats.ancestry.fixation.choices.topic.options.business.name: Business Lore
|
|
202
|
-
feats.ancestry.fixation.choices.topic.options.cooking.name: Cooking Lore
|
|
203
|
-
feats.ancestry.fixation.choices.topic.options.corporate.name: Corporate Lore
|
|
204
|
-
feats.ancestry.fixation.choices.topic.options.games.name: Games Lore
|
|
205
|
-
feats.ancestry.fixation.choices.topic.options.genealogy.name: Genealogy Lore
|
|
206
|
-
feats.ancestry.fixation.choices.topic.options.history.name: History Lore
|
|
207
|
-
feats.ancestry.fixation.choices.topic.options.hyperspace.name: Hyperspace Lore
|
|
208
|
-
feats.ancestry.fixation.choices.topic.options.infosphere.name: Infosphere Lore
|
|
209
|
-
feats.ancestry.fixation.choices.topic.options.kasatha.name: Kasatha Lore
|
|
210
|
-
feats.ancestry.fixation.choices.topic.options.labor.name: Labor Lore
|
|
211
|
-
feats.ancestry.fixation.choices.topic.options.lashunta.name: Lashunta Lore
|
|
212
|
-
feats.ancestry.fixation.choices.topic.options.legal.name: Legal Lore
|
|
213
|
-
feats.ancestry.fixation.choices.topic.options.life-science.name: Life Science Lore
|
|
214
|
-
feats.ancestry.fixation.choices.topic.options.media.name: Media Lore
|
|
215
|
-
feats.ancestry.fixation.choices.topic.options.mining.name: Mining Lore
|
|
216
|
-
feats.ancestry.fixation.choices.topic.options.pahtra.name: Pahtra Lore
|
|
217
|
-
feats.ancestry.fixation.choices.topic.options.physical-science.name: Physical Science Lore
|
|
218
|
-
feats.ancestry.fixation.choices.topic.options.piracy.name: Piracy Lore
|
|
219
|
-
feats.ancestry.fixation.choices.topic.options.plant.name: Plant Lore
|
|
220
|
-
feats.ancestry.fixation.choices.topic.options.prismeni.name: Prismeni Lore
|
|
221
|
-
feats.ancestry.fixation.choices.topic.options.shirren.name: Shirren Lore
|
|
222
|
-
feats.ancestry.fixation.choices.topic.options.skittermander.name: Skittermander Lore
|
|
223
|
-
feats.ancestry.fixation.choices.topic.options.sports.name: Sports Lore
|
|
224
|
-
feats.ancestry.fixation.choices.topic.options.underworld.name: Underworld Lore
|
|
225
|
-
feats.ancestry.fixation.choices.topic.options.vesk.name: Vesk Lore
|
|
226
|
-
feats.ancestry.fixation.choices.topic.options.vidgame.name: Vidgame Lore
|
|
227
|
-
feats.ancestry.fixation.choices.topic.options.warfare.name: Warfare Lore
|
|
228
|
-
feats.ancestry.fixation.choices.topic.options.ysoki.name: Ysoki Lore
|
|
229
|
-
feats.ancestry.fixation.choices.topic.options.custom1.name: A Lore of your choice (1)
|
|
230
|
-
feats.ancestry.fixation.choices.topic.options.custom2.name: A Lore of your choice (2)
|
|
231
|
-
feats.ancestry.fixation.choices.topic.options.custom3.name: A Lore of your choice (3)
|
|
232
195
|
feats.ancestry.hug-master.name: Hug Master
|
|
233
196
|
feats.ancestry.hyper.name: Hyper
|
|
234
197
|
feats.ancestry.skittermander-lore.name: Skittermander Lore
|
|
@@ -278,6 +241,7 @@ feats.ancestry.quick-stow.name: Quick Stow
|
|
|
278
241
|
feats.ancestry.quick-stow.prerequisites.feat: Cheek Pouches
|
|
279
242
|
feats.ancestry.big-mouth.name: Big Mouth
|
|
280
243
|
feats.ancestry.big-mouth.prerequisites.feat: Cheek Pouches
|
|
244
|
+
feats.ancestry.lashunta-lore.prerequisites.lore: Not Additional Lore for Lashunta Lore already
|
|
281
245
|
feats.ancestry.overcrowd.name: Overcrowd
|
|
282
246
|
feats.ancestry.underfoot.name: Underfoot
|
|
283
247
|
feats.ancestry.underfoot.prerequisites.heritage: Shipborn Ysoki heritage or Tunnel Ysoki heritage
|
package/i18n/en/archetypes.yaml
CHANGED
|
@@ -2,7 +2,7 @@ archetypes.envoy.name: Envoy
|
|
|
2
2
|
archetypes.envoy.description: 'Multiclass archetype: some of the envoy class through class feats.'
|
|
3
3
|
feats.archetype.envoy.envoy-dedication.name: Envoy Dedication
|
|
4
4
|
feats.archetype.envoy.envoy-dedication.prerequisites.attribute: Charisma +2
|
|
5
|
-
feats.archetype.envoy.envoy-dedication.prerequisites.requirement: Not
|
|
5
|
+
feats.archetype.envoy.envoy-dedication.prerequisites.requirement: Not an envoy
|
|
6
6
|
feats.archetype.envoy.envoy-dedication.choices.skill.prompt: 'Deception, Diplomacy or Intimidation'
|
|
7
7
|
feats.archetype.envoy.envoy-dedication.choices.other.prompt: Another skill
|
|
8
8
|
feats.archetype.envoy.basic-leadership.name: Basic Leadership
|
|
@@ -64,7 +64,7 @@ archetypes.operative.name: Operative
|
|
|
64
64
|
archetypes.operative.description: 'Multiclass archetype: some of the operative class through class feats.'
|
|
65
65
|
feats.archetype.operative.operative-dedication.name: Operative Dedication
|
|
66
66
|
feats.archetype.operative.operative-dedication.prerequisites.attribute: Dexterity +2
|
|
67
|
-
feats.archetype.operative.operative-dedication.prerequisites.requirement: Not
|
|
67
|
+
feats.archetype.operative.operative-dedication.prerequisites.requirement: Not an operative
|
|
68
68
|
feats.archetype.operative.basic-gunner.name: Basic Gunner
|
|
69
69
|
feats.archetype.operative.basic-gunner.prerequisites.feat: Operative Dedication
|
|
70
70
|
feats.archetype.operative.basic-gunner.choices.feat.prompt: Operative feat (1st or 2nd level)
|
package/i18n/en/core.yaml
CHANGED
|
@@ -59,6 +59,13 @@ actions.cast-spell.params.damageType.values.sonic.name: Sonic
|
|
|
59
59
|
actions.cast-spell.params.damageType.values.spirit.name: Spirit
|
|
60
60
|
actions.cast-spell.params.damageType.values.vitality.name: Vitality
|
|
61
61
|
actions.cast-spell.params.damageType.values.void.name: Void
|
|
62
|
+
actions.cast-spell.params.element.name: Element
|
|
63
|
+
actions.cast-spell.params.element.values.air.name: Air
|
|
64
|
+
actions.cast-spell.params.element.values.earth.name: Earth
|
|
65
|
+
actions.cast-spell.params.element.values.fire.name: Fire
|
|
66
|
+
actions.cast-spell.params.element.values.metal.name: Metal
|
|
67
|
+
actions.cast-spell.params.element.values.water.name: Water
|
|
68
|
+
actions.cast-spell.params.element.values.wood.name: Wood
|
|
62
69
|
actions.cast-spell.params.form.name: Battle form
|
|
63
70
|
actions.cast-spell.params.rank.name: Rank
|
|
64
71
|
actions.cast-spell.params.source.name: Repertoire
|
|
@@ -297,7 +304,6 @@ effects.speed-circumstance-penalty.name: Speed penalty (circumstance)
|
|
|
297
304
|
effects.speed-status-penalty.name: Speed penalty (status)
|
|
298
305
|
effects.treated-disease.name: Treated for disease
|
|
299
306
|
effects.treated-poison.name: Treated for poison
|
|
300
|
-
fields.conditions.drainedOffset.name: Drained counted lower by
|
|
301
307
|
fields.creature.size.values.gargantuan.name: Gargantuan
|
|
302
308
|
fields.creature.size.values.huge.name: Huge
|
|
303
309
|
fields.creature.size.values.large.name: Large
|
|
@@ -355,7 +361,6 @@ fields.spellcasting.tradition.values.occult.name: Occult
|
|
|
355
361
|
fields.spellcasting.tradition.values.primal.name: Primal
|
|
356
362
|
fields.spells.autoRank.name: Cantrip rank
|
|
357
363
|
fields.spells.extraSlot.name: Spells the extra slot casts
|
|
358
|
-
groups.afflictions.label: Afflictions
|
|
359
364
|
groups.class-actions.label: Class and feat actions
|
|
360
365
|
groups.effects.label: Effects
|
|
361
366
|
groups.exploration-actions.label: Exploration and downtime
|
|
@@ -684,6 +689,7 @@ types.feat.fields.heritage.name: Heritage
|
|
|
684
689
|
types.feat.fields.level.name: Level
|
|
685
690
|
types.feat.fields.skills.name: Skills
|
|
686
691
|
types.feature.fields.level.name: Level
|
|
692
|
+
types.feature.fields.classOption.name: Class option
|
|
687
693
|
types.gear.fields.bulk.name: Bulk
|
|
688
694
|
types.gear.fields.price.name: Price (gp)
|
|
689
695
|
types.held.fields.activation.name: Activation
|
package/i18n/en/mystic.yaml
CHANGED
|
@@ -4,6 +4,18 @@ classes.mystic.connections.akashic.perfectHarmony: 'You can open a door (1 minut
|
|
|
4
4
|
classes.mystic.connections.elemental.name: Elemental
|
|
5
5
|
classes.mystic.connections.elemental.description: "You channel the primordial elements that make up the universe. You gain the Shield Block general feat. Your wall of fire and absolute zero take the elemental trait and damage type of your active elemental weapon or elemental barrier. Tradition: primal. Connection skill: Nature. Initial epiphany: elemental weapon; advanced: elemental barrier; greater: elemental nova. Harmony: When you Transfer Vitality, choose an element (air, earth, fire, metal, water or wood; the one of your active elemental epiphanies, if any). Until the end of its next turn, the target's next Strike deals a damage type of that element instead: electricity or sonic (air), bludgeoning or piercing (earth), acid or slashing (metal), fire (fire), bludgeoning or cold (water), piercing or poison (wood)."
|
|
6
6
|
classes.mystic.connections.elemental.perfectHarmony: 'During daily preparations, choose an element as for your harmony: you gain resistance equal to half your level to both its damage types (and to cold, for fire). A bonded ally you heal with Transfer Vitality gains these resistances until the start of your next turn.'
|
|
7
|
+
templates.elemental.air.name: '{base} (air)'
|
|
8
|
+
templates.elemental.air.description: 'Your active elemental weapon or elemental barrier is air: the spell takes the air trait and its damage type.'
|
|
9
|
+
templates.elemental.earth.name: '{base} (earth)'
|
|
10
|
+
templates.elemental.earth.description: 'Your active elemental weapon or elemental barrier is earth: the spell takes the earth trait and its damage type.'
|
|
11
|
+
templates.elemental.fire.name: '{base} (fire)'
|
|
12
|
+
templates.elemental.fire.description: 'Your active elemental weapon or elemental barrier is fire: the spell takes the fire trait and its damage type.'
|
|
13
|
+
templates.elemental.metal.name: '{base} (metal)'
|
|
14
|
+
templates.elemental.metal.description: 'Your active elemental weapon or elemental barrier is metal: the spell takes the metal trait and its damage type.'
|
|
15
|
+
templates.elemental.water.name: '{base} (water)'
|
|
16
|
+
templates.elemental.water.description: 'Your active elemental weapon or elemental barrier is water: the spell takes the water trait and its damage type.'
|
|
17
|
+
templates.elemental.wood.name: '{base} (wood)'
|
|
18
|
+
templates.elemental.wood.description: 'Your active elemental weapon or elemental barrier is wood: the spell takes the wood trait and its damage type.'
|
|
7
19
|
classes.mystic.connections.healing.name: Healing
|
|
8
20
|
classes.mystic.connections.healing.description: "You're connected to the vitality and void energy that flow through all living things, healing allies and harming foes. Tradition: divine. Connection skill: Medicine. Initial epiphany: infusion; advanced: vitality nova; greater: vital rebirth. Harmony: When you Transfer Vitality, attempt to counteract one affliction on the target, or one effect giving it blinded, clumsy, dazzled, deafened, enfeebled or sickened."
|
|
9
21
|
classes.mystic.connections.healing.perfectHarmony: "Your harmony can also counteract doomed, drained, paralyzed and stunned; an effect you fail to counteract but would have at a counteract rank 2 lower is suppressed until the start of your next turn (its duration doesn't elapse meanwhile)."
|
package/i18n/en/sf-core.yaml
CHANGED
|
@@ -40,17 +40,10 @@ constraints.implant-limit: 'More augmentations implanted ({implanted}) than the
|
|
|
40
40
|
constraints.one-apex: More than one apex augmentation raising its attribute
|
|
41
41
|
constraints.upgrade-limits: 'An item has more upgrades than upgrade slots, or two grades ({items})'
|
|
42
42
|
constraints.dedication-lock: 'A dedication feat taken before two other feats of an earlier archetype: {open} archetypes are open'
|
|
43
|
-
fields.armor.bulwark.name: Bulwark modifier to Reflex saves
|
|
44
|
-
fields.armor.allBulwark.name: All armor has bulwark
|
|
45
|
-
fields.attacks.trainedWeapons.name: Weapons trained with
|
|
46
43
|
fields.senses.telepathyRange.name: Limited telepathy range
|
|
47
|
-
fields.armor.strength.name: Strength for armor
|
|
48
|
-
fields.attacks.areaDc.name: Area attack DC
|
|
49
44
|
fields.attacks.familiar.name: Familiar weapons
|
|
50
|
-
fields.attacks.kickbackStrength.name: Strength that ignores kickback
|
|
51
45
|
fields.augmentations.count.name: Augmentations implanted
|
|
52
46
|
fields.augmentations.limit.name: Implant limit
|
|
53
|
-
fields.heritage.size.name: "Heritage's size"
|
|
54
47
|
fields.money.credits.name: Credits
|
|
55
48
|
fields.money.upbs.name: UPBs
|
|
56
49
|
fields.money.total.name: Total wealth (credits)
|
|
@@ -58,8 +51,6 @@ situational.againstRadiation.name: Against radiation
|
|
|
58
51
|
situational.naturalEnvironment.name: 'In a natural, undeveloped environment'
|
|
59
52
|
situational.telepathicContact.name: It communicates with you telepathically
|
|
60
53
|
types.consumable.options.spell-gem.name: Use the spell gem
|
|
61
|
-
fields.proficiency.level.name: Level added to proficiency
|
|
62
|
-
fields.proficiency.untrained.name: Untrained proficiency bonus
|
|
63
54
|
fields.spellcasting.archetype.mystic.tradition.name: Mystic archetype tradition
|
|
64
55
|
fields.spellcasting.archetype.mystic.tradition.values.none.name: None
|
|
65
56
|
fields.spellcasting.archetype.mystic.tradition.values.arcane.name: Arcane
|
|
@@ -120,10 +111,8 @@ fields.spellSlots.archetype.witchwarper.rank8.max.name: '8th-rank witchwarper ar
|
|
|
120
111
|
fields.spellSlots.archetype.witchwarper.rank8.used.name: '8th-rank witchwarper archetype slots spent'
|
|
121
112
|
situational.againstArea.name: Against an area effect
|
|
122
113
|
situational.improvisedMastery.name: Improvised Mastery
|
|
123
|
-
fields.conditions.suppressed.name: Suppressed
|
|
124
114
|
situational.bySuppressed.name: From an attack by a suppressed creature
|
|
125
115
|
situational.suppressedTarget.name: Against a suppressed foe
|
|
126
|
-
fields.features.held.name: Class features
|
|
127
116
|
situational.shieldSpellBlock.name: Block with the shield spell
|
|
128
117
|
actions.access-infosphere.name: Access Infosphere
|
|
129
118
|
actions.access-infosphere.description: 'Search a local network for information on a topic (usually 10 minutes), like Recalling Knowledge; a critical failure finds misleading information.'
|
package/i18n/en/skills.yaml
CHANGED
|
@@ -268,19 +268,22 @@ fields.skills.lore.ysoki.rank.name: 'Ysoki Lore proficiency'
|
|
|
268
268
|
fields.skills.lore.ysoki.increases.name: 'Ysoki Lore increases'
|
|
269
269
|
fields.skills.lore.ysoki.trainedByIncrease.name: 'Ysoki Lore trained by a skill increase'
|
|
270
270
|
tags.skill.lore.ysoki.name: 'Ysoki Lore'
|
|
271
|
-
fields.skills.lore.custom1.subject.name: Lore
|
|
271
|
+
fields.skills.lore.custom1.subject.name: Custom Lore subject (1)
|
|
272
|
+
fields.skills.lore.custom1.subject.short: Subject
|
|
272
273
|
fields.skills.lore.custom1.mod.name: '{name} Lore'
|
|
273
274
|
fields.skills.lore.custom1.rank.name: '{name} Lore proficiency'
|
|
274
275
|
fields.skills.lore.custom1.increases.name: '{name} Lore increases'
|
|
275
276
|
fields.skills.lore.custom1.trainedByIncrease.name: '{name} Lore trained by a skill increase'
|
|
276
277
|
tags.skill.lore.custom1.name: '{name} Lore'
|
|
277
|
-
fields.skills.lore.custom2.subject.name: Lore
|
|
278
|
+
fields.skills.lore.custom2.subject.name: Custom Lore subject (2)
|
|
279
|
+
fields.skills.lore.custom2.subject.short: Subject
|
|
278
280
|
fields.skills.lore.custom2.mod.name: '{name} Lore'
|
|
279
281
|
fields.skills.lore.custom2.rank.name: '{name} Lore proficiency'
|
|
280
282
|
fields.skills.lore.custom2.increases.name: '{name} Lore increases'
|
|
281
283
|
fields.skills.lore.custom2.trainedByIncrease.name: '{name} Lore trained by a skill increase'
|
|
282
284
|
tags.skill.lore.custom2.name: '{name} Lore'
|
|
283
|
-
fields.skills.lore.custom3.subject.name: Lore
|
|
285
|
+
fields.skills.lore.custom3.subject.name: Custom Lore subject (3)
|
|
286
|
+
fields.skills.lore.custom3.subject.short: Subject
|
|
284
287
|
fields.skills.lore.custom3.mod.name: '{name} Lore'
|
|
285
288
|
fields.skills.lore.custom3.rank.name: '{name} Lore proficiency'
|
|
286
289
|
fields.skills.lore.custom3.increases.name: '{name} Lore increases'
|
package/i18n/en/tags.yaml
CHANGED
|
@@ -51,6 +51,8 @@ tags.strike.lead-by-example.name: Strike lead by example
|
|
|
51
51
|
tags.trait.aberration.name: Aberration
|
|
52
52
|
tags.trait.aeon.name: Aeon
|
|
53
53
|
tags.trait.analog.name: Analog
|
|
54
|
+
tags.tool.name: Tool
|
|
55
|
+
tags.tool.compass.name: Compass
|
|
54
56
|
tags.trait.anchoring.name: Anchoring
|
|
55
57
|
tags.trait.android.name: Android
|
|
56
58
|
tags.trait.arc.name: Arc
|
package/i18n/en/types.yaml
CHANGED
|
@@ -298,6 +298,7 @@ types.spell.state.value.name: Value
|
|
|
298
298
|
types.spell.state.damageType.name: Damage type
|
|
299
299
|
types.spell.state.copy.name: Copy
|
|
300
300
|
types.spell.state.form.name: Form
|
|
301
|
+
types.spell.state.element.name: Element
|
|
301
302
|
types.weapon.fields.group.values.corrosive.name: Corrosive
|
|
302
303
|
types.weapon.fields.group.values.cryo.name: Cryo
|
|
303
304
|
types.weapon.fields.group.values.flame.name: Flame
|
package/i18n/en.yaml
CHANGED
|
@@ -9,6 +9,7 @@ actions.create-character.name: Build a character
|
|
|
9
9
|
actions.create-character.steps.ancestry.prompt: Choose an ancestry
|
|
10
10
|
actions.create-character.steps.background.prompt: Choose a background
|
|
11
11
|
actions.create-character.steps.class.prompt: Choose a class
|
|
12
|
+
actions.create-character.steps.freeBoosts.prompt: Choose four free attribute boosts
|
|
12
13
|
actions.create-character.steps.heritage.prompt: Choose a heritage
|
|
13
14
|
actions.random-character.name: Build a random character
|
|
14
15
|
actions.random-character.steps.ancestry.prompt: Choose an ancestry
|
|
@@ -223,6 +224,13 @@ groups.feats.sections.skill.name: Skill feats
|
|
|
223
224
|
groups.gear.label: Gear
|
|
224
225
|
groups.heritage.label: Heritage
|
|
225
226
|
groups.consumables.label: Consumables
|
|
227
|
+
groups.consumables.sections.grenade.name: Grenades
|
|
228
|
+
groups.consumables.sections.medical.name: Medical
|
|
229
|
+
groups.consumables.sections.serum.name: Serums
|
|
230
|
+
groups.consumables.sections.spell-amp.name: Spell amps
|
|
231
|
+
groups.consumables.sections.spell-gem.name: Spell gems
|
|
232
|
+
groups.consumables.sections.ammunition.name: Ammunition
|
|
233
|
+
groups.consumables.sections.other.name: Other consumables
|
|
226
234
|
groups.rituals.label: Rituals
|
|
227
235
|
groups.boost-picks.label: Attribute boosts picked
|
|
228
236
|
groups.language-picks.label: Languages picked
|
|
@@ -231,7 +239,6 @@ groups.reactions.label: Reactions and shields
|
|
|
231
239
|
groups.saves.label: Saving throws and Perception
|
|
232
240
|
groups.shields.label: Shields
|
|
233
241
|
groups.skill-increases.label: Skill increases
|
|
234
|
-
groups.skill-ranks.label: Skill proficiency
|
|
235
242
|
groups.skills.label: Skills
|
|
236
243
|
groups.strikes.label: Strikes
|
|
237
244
|
groups.summary.label: Character
|
|
@@ -433,6 +440,11 @@ tags.feat-action.name: 'Feat action'
|
|
|
433
440
|
tags.class-dc.name: 'Class DC'
|
|
434
441
|
tags.condition.name: 'Condition'
|
|
435
442
|
tags.creation.name: 'Creation'
|
|
443
|
+
tags.creation.ancestry.name: 'Creation: ancestry'
|
|
444
|
+
tags.creation.heritage.name: 'Creation: heritage'
|
|
445
|
+
tags.creation.background.name: 'Creation: background'
|
|
446
|
+
tags.creation.class.name: 'Creation: class'
|
|
447
|
+
tags.creation.finish.name: 'Creation: finish'
|
|
436
448
|
tags.d20.name: 'd20 roll'
|
|
437
449
|
tags.damage.name: 'Damage'
|
|
438
450
|
tags.damage.acid.name: 'Acid damage'
|
|
@@ -469,6 +481,7 @@ tags.group.shield.name: 'Shield group'
|
|
|
469
481
|
tags.group.spear.name: 'Spear group'
|
|
470
482
|
tags.group.sword.name: 'Sword group'
|
|
471
483
|
tags.level-up.name: 'Level up'
|
|
484
|
+
tags.level-up.gain.name: 'Level up: gain'
|
|
472
485
|
tags.lore.name: 'Lore'
|
|
473
486
|
tags.perception.name: 'Perception'
|
|
474
487
|
tags.persistent-damage.name: 'Persistent damage'
|
package/pack.yaml
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@opencharacter/orc-sf-2e",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.0",
|
|
4
4
|
"description": "Open Character Format pack: Second Edition science-fantasy rules (Player 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.
|
|
54
|
+
"@opencharacter/engine": "0.3.0"
|
|
55
55
|
},
|
|
56
56
|
"engines": {
|
|
57
57
|
"node": ">=22"
|
package/rules/advancement.yaml
CHANGED
package/rules/afflictions.yaml
CHANGED
|
@@ -12,6 +12,7 @@ contentTypes:
|
|
|
12
12
|
dc: { type: integer, min: 0 }
|
|
13
13
|
stages: { type: integer, required: true, min: 1, max: 7 }
|
|
14
14
|
damageType:
|
|
15
|
+
open: true
|
|
15
16
|
type: enum
|
|
16
17
|
values:
|
|
17
18
|
[
|
|
@@ -37,6 +38,7 @@ contentTypes:
|
|
|
37
38
|
stage5Damage: { type: dice }
|
|
38
39
|
stage6Damage: { type: dice }
|
|
39
40
|
damage2Type:
|
|
41
|
+
open: true
|
|
40
42
|
type: enum
|
|
41
43
|
values: [acid, cold, electricity, fire, mental, poison, sonic, spirit, vitality, void]
|
|
42
44
|
default: poison
|
|
@@ -160,12 +162,9 @@ actions:
|
|
|
160
162
|
stage: flags.stage
|
|
161
163
|
damage: 'has(steps.damage) ? steps.damage.total : 0'
|
|
162
164
|
|
|
165
|
+
# The pack has no afflictions of its own, so no group holds them: a homebrew affliction applied to
|
|
166
|
+
# the character shows in "Other".
|
|
163
167
|
display:
|
|
164
|
-
groups:
|
|
165
|
-
- id: afflictions
|
|
166
|
-
kind: content
|
|
167
|
-
priority: 1
|
|
168
|
-
members: { type: affliction, from: applied }
|
|
169
168
|
types:
|
|
170
169
|
affliction:
|
|
171
170
|
state:
|
package/rules/archetypes.yaml
CHANGED
package/rules/building.yaml
CHANGED
|
@@ -20,6 +20,7 @@ contentTypes:
|
|
|
20
20
|
- { target: ancestry.held, op: grant, value: { formula: item.id } }
|
|
21
21
|
|
|
22
22
|
heritage:
|
|
23
|
+
grantOnly: true
|
|
23
24
|
fields:
|
|
24
25
|
ancestry: { type: id, of: ancestry }
|
|
25
26
|
versatile: { type: boolean, default: false }
|
|
@@ -39,15 +40,20 @@ contentTypes:
|
|
|
39
40
|
- { target: hp.class, op: add, value: item.hp }
|
|
40
41
|
|
|
41
42
|
feature:
|
|
43
|
+
grantOnly: true
|
|
42
44
|
fields:
|
|
43
45
|
level: { type: integer, required: true, min: 1, max: 20 }
|
|
46
|
+
# The class option a subclass-like feature is, `<class>.<choice>`, which the class's choice
|
|
47
|
+
# offers: add-on instincts, muses and the like set it too.
|
|
48
|
+
classOption: { type: string, default: '' }
|
|
44
49
|
effects:
|
|
45
50
|
- { target: features.held, op: grant, value: { formula: item.id } }
|
|
46
51
|
|
|
47
52
|
feat:
|
|
48
53
|
fields:
|
|
49
54
|
level: { type: integer, required: true, min: 1, max: 20 }
|
|
50
|
-
category:
|
|
55
|
+
category:
|
|
56
|
+
{ type: enum, values: [ancestry, class, general, skill], required: true, open: true }
|
|
51
57
|
ancestry: { type: id, of: ancestry }
|
|
52
58
|
heritage: { type: id, of: heritage }
|
|
53
59
|
class: { type: id, of: class }
|
package/rules/checks.yaml
CHANGED
|
@@ -23,7 +23,7 @@ resultBands:
|
|
|
23
23
|
when: >-
|
|
24
24
|
roll.value == 3 || (roll.value == 2 && (roll.tallies.successToCrit > 0
|
|
25
25
|
|| (roll.tallies.successToCritOn19 > 0 && size(roll.kept) > 0 && roll.kept[0] == 19)))
|
|
26
|
-
- { id: success, when: roll.value == 2 }
|
|
26
|
+
- { id: success, when: roll.value == 2, success: true }
|
|
27
27
|
- id: failure
|
|
28
28
|
when: >-
|
|
29
29
|
(roll.value == 1 && roll.tallies.failToCritFail == 0)
|
package/rules/conditions.yaml
CHANGED
package/rules/core.yaml
CHANGED
package/rules/creation.yaml
CHANGED
|
@@ -18,12 +18,14 @@ actions:
|
|
|
18
18
|
available: character.creating
|
|
19
19
|
steps:
|
|
20
20
|
- id: ancestry
|
|
21
|
+
tags: [creation.ancestry]
|
|
21
22
|
kind: choice
|
|
22
23
|
options: { content: { type: ancestry } }
|
|
23
24
|
changes:
|
|
24
25
|
- type: addItem
|
|
25
26
|
entry: { id: ancestry, item: picked.id }
|
|
26
27
|
- id: heritage
|
|
28
|
+
tags: [creation.heritage]
|
|
27
29
|
kind: choice
|
|
28
30
|
options:
|
|
29
31
|
content:
|
|
@@ -32,12 +34,14 @@ actions:
|
|
|
32
34
|
changes:
|
|
33
35
|
- { type: choose, path: { entry: ancestry, choice: [heritage] }, option: picked.id }
|
|
34
36
|
- id: background
|
|
37
|
+
tags: [creation.background]
|
|
35
38
|
kind: choice
|
|
36
39
|
options: { content: { type: background } }
|
|
37
40
|
changes:
|
|
38
41
|
- type: addItem
|
|
39
42
|
entry: { id: background, item: picked.id }
|
|
40
43
|
- id: class
|
|
44
|
+
tags: [creation.class]
|
|
41
45
|
kind: choice
|
|
42
46
|
options: { content: { type: class } }
|
|
43
47
|
changes:
|
|
@@ -49,6 +53,14 @@ actions:
|
|
|
49
53
|
- id: backgroundPicks
|
|
50
54
|
kind: choice
|
|
51
55
|
options: { pending: { entry: "'background'" } }
|
|
56
|
+
# The four free boosts come before the class's choices, whose trained skills count the final
|
|
57
|
+
# Intelligence modifier.
|
|
58
|
+
- id: freeBoosts
|
|
59
|
+
kind: choice
|
|
60
|
+
options: { content: { type: boost, where: picks == 0 } }
|
|
61
|
+
repeat: { max: 4, min: 4 }
|
|
62
|
+
changes:
|
|
63
|
+
- { type: choose, path: { choice: [free-boosts] }, option: picked.id }
|
|
52
64
|
- id: classPicks
|
|
53
65
|
kind: choice
|
|
54
66
|
options: { pending: { entry: "'class'" } }
|
|
@@ -56,6 +68,7 @@ actions:
|
|
|
56
68
|
kind: choice
|
|
57
69
|
options: { pending: {} }
|
|
58
70
|
- id: finish
|
|
71
|
+
tags: [creation.finish]
|
|
59
72
|
kind: changes
|
|
60
73
|
sheet: proposed
|
|
61
74
|
changes:
|
|
@@ -67,6 +80,7 @@ actions:
|
|
|
67
80
|
available: character.creating
|
|
68
81
|
steps:
|
|
69
82
|
- id: ancestry
|
|
83
|
+
tags: [creation.ancestry]
|
|
70
84
|
kind: choice
|
|
71
85
|
options: { content: { type: ancestry } }
|
|
72
86
|
random: true
|
|
@@ -74,6 +88,7 @@ actions:
|
|
|
74
88
|
- type: addItem
|
|
75
89
|
entry: { id: ancestry, item: picked.id }
|
|
76
90
|
- id: heritage
|
|
91
|
+
tags: [creation.heritage]
|
|
77
92
|
kind: choice
|
|
78
93
|
options:
|
|
79
94
|
content:
|
|
@@ -83,6 +98,7 @@ actions:
|
|
|
83
98
|
changes:
|
|
84
99
|
- { type: choose, path: { entry: ancestry, choice: [heritage] }, option: picked.id }
|
|
85
100
|
- id: background
|
|
101
|
+
tags: [creation.background]
|
|
86
102
|
kind: choice
|
|
87
103
|
options: { content: { type: background } }
|
|
88
104
|
random: true
|
|
@@ -90,6 +106,7 @@ actions:
|
|
|
90
106
|
- type: addItem
|
|
91
107
|
entry: { id: background, item: picked.id }
|
|
92
108
|
- id: class
|
|
109
|
+
tags: [creation.class]
|
|
93
110
|
kind: choice
|
|
94
111
|
options: { content: { type: class } }
|
|
95
112
|
random: true
|
|
@@ -140,6 +157,7 @@ actions:
|
|
|
140
157
|
random: *random
|
|
141
158
|
recommend: *pick
|
|
142
159
|
- id: finish
|
|
160
|
+
tags: [creation.finish]
|
|
143
161
|
kind: changes
|
|
144
162
|
sheet: proposed
|
|
145
163
|
changes:
|
package/rules/equipment.yaml
CHANGED
|
@@ -50,6 +50,7 @@ contentTypes:
|
|
|
50
50
|
{
|
|
51
51
|
type: enum,
|
|
52
52
|
values: [cloth, leather, composite, chain, plate, skeletal, ceramic, polymer],
|
|
53
|
+
open: true,
|
|
53
54
|
}
|
|
54
55
|
upgradeSlots: { type: integer, default: 1, min: 0, max: 4 }
|
|
55
56
|
bulk: { type: decimal, default: 0, min: 0 }
|
|
@@ -197,7 +198,7 @@ contentTypes:
|
|
|
197
198
|
ammunition:
|
|
198
199
|
carried: true
|
|
199
200
|
fields:
|
|
200
|
-
kind: { type: enum, values: [rounds, charges, chems], required: true }
|
|
201
|
+
kind: { type: enum, values: [rounds, charges, chems], required: true, open: true }
|
|
201
202
|
level: { type: integer, default: 0, min: 0, max: 30 }
|
|
202
203
|
charges: { type: integer, default: 0, min: 0 }
|
|
203
204
|
bulk: { type: decimal, default: 0, min: 0 }
|
|
@@ -241,6 +242,7 @@ contentTypes:
|
|
|
241
242
|
carried: true
|
|
242
243
|
fields:
|
|
243
244
|
category:
|
|
245
|
+
open: true
|
|
244
246
|
type: enum
|
|
245
247
|
values: [grenade, medical, serum, spell-amp, spell-gem, ammunition, other]
|
|
246
248
|
required: true
|
|
@@ -254,6 +256,7 @@ contentTypes:
|
|
|
254
256
|
family: { type: id, of: consumable }
|
|
255
257
|
damage: { type: dice }
|
|
256
258
|
damageType:
|
|
259
|
+
open: true
|
|
257
260
|
type: enum
|
|
258
261
|
values:
|
|
259
262
|
[
|
|
@@ -272,7 +275,8 @@ contentTypes:
|
|
|
272
275
|
default: none
|
|
273
276
|
areaSize: { type: integer, default: 0, min: 0 }
|
|
274
277
|
persistent: { type: dice }
|
|
275
|
-
persistentType:
|
|
278
|
+
persistentType:
|
|
279
|
+
{ type: enum, values: [none, acid, bleed, electricity, fire], default: none, open: true }
|
|
276
280
|
itemBonus: { type: integer, default: 0, min: 0, max: 4 }
|
|
277
281
|
save: { type: enum, values: [reflex, fortitude, will], default: reflex }
|
|
278
282
|
basic: { type: boolean, default: true }
|
|
@@ -526,6 +530,7 @@ actions:
|
|
|
526
530
|
- { type: set, field: shield.raised, value: true }
|
|
527
531
|
|
|
528
532
|
tags:
|
|
533
|
+
- tool.compass
|
|
529
534
|
- trait.analog
|
|
530
535
|
- trait.tech
|
|
531
536
|
- trait.area
|
package/rules/heritages.yaml
CHANGED
package/rules/layout.yaml
CHANGED
|
@@ -9,12 +9,10 @@ display:
|
|
|
9
9
|
priority: 0
|
|
10
10
|
- id: saves
|
|
11
11
|
priority: 0
|
|
12
|
+
# A skill's rank is its modifier's companion, so it has no tile of its own here.
|
|
12
13
|
- id: skills
|
|
13
14
|
priority: 1
|
|
14
|
-
members: { type: field, where: "'skill' in item.tags" }
|
|
15
|
-
- id: skill-ranks
|
|
16
|
-
priority: 2
|
|
17
|
-
members: { type: field, where: "'skill-rank' in item.tags" }
|
|
15
|
+
members: { type: field, where: "'skill' in item.tags || 'skill-rank' in item.tags" }
|
|
18
16
|
- id: skill-increases
|
|
19
17
|
priority: 3
|
|
20
18
|
visibility: background
|
|
@@ -201,6 +199,8 @@ display:
|
|
|
201
199
|
class.traits: { hidden: true }
|
|
202
200
|
skills.maxRank: { hidden: true }
|
|
203
201
|
skills.trained: { hidden: true }
|
|
202
|
+
skills.offered: { hidden: true }
|
|
203
|
+
skills.lores: { hidden: true }
|
|
204
204
|
skills.trainings: { hidden: true }
|
|
205
205
|
skills.chosen: { hidden: true }
|
|
206
206
|
assurance.skills: { hidden: true }
|
|
@@ -233,6 +233,64 @@ display:
|
|
|
233
233
|
conditions.doomed: { hidden: true }
|
|
234
234
|
conditions.slowed: { hidden: true }
|
|
235
235
|
conditions.stunned: { hidden: true }
|
|
236
|
+
conditions.drainedOffset: { hidden: true }
|
|
237
|
+
conditions.suppressed: { hidden: true }
|
|
238
|
+
features.held: { hidden: true }
|
|
239
|
+
heritage.size: { hidden: true }
|
|
240
|
+
proficiency.level: { hidden: true }
|
|
241
|
+
proficiency.untrained: { hidden: true }
|
|
242
|
+
armor.strength: { hidden: true }
|
|
243
|
+
armor.bulwark: { hidden: true }
|
|
244
|
+
armor.allBulwark: { hidden: true }
|
|
245
|
+
attacks.trainedWeapons: { hidden: true }
|
|
246
|
+
attacks.areaDc: { hidden: true }
|
|
247
|
+
attacks.kickbackStrength: { hidden: true }
|
|
248
|
+
immunities.damage: { groups: [defenses], priority: 2, showWhen: size(immunities.damage) > 0 }
|
|
249
|
+
parry.weapon:
|
|
250
|
+
{ groups: [defenses], priority: 2, input: { widget: checkbox }, showWhen: parry.weapon }
|
|
251
|
+
attacks.simpleGun.rank:
|
|
252
|
+
{
|
|
253
|
+
groups: [proficiencies],
|
|
254
|
+
priority: 1,
|
|
255
|
+
format: { bands: rank },
|
|
256
|
+
showWhen: attacks.simpleGun.rank > 0,
|
|
257
|
+
}
|
|
258
|
+
attacks.martialGun.rank:
|
|
259
|
+
{
|
|
260
|
+
groups: [proficiencies],
|
|
261
|
+
priority: 1,
|
|
262
|
+
format: { bands: rank },
|
|
263
|
+
showWhen: attacks.martialGun.rank > 0,
|
|
264
|
+
}
|
|
265
|
+
attacks.advancedGun.rank:
|
|
266
|
+
{
|
|
267
|
+
groups: [proficiencies],
|
|
268
|
+
priority: 1,
|
|
269
|
+
format: { bands: rank },
|
|
270
|
+
showWhen: attacks.advancedGun.rank > 0,
|
|
271
|
+
}
|
|
272
|
+
attacks.agileMelee.rank:
|
|
273
|
+
{
|
|
274
|
+
groups: [proficiencies],
|
|
275
|
+
priority: 1,
|
|
276
|
+
format: { bands: rank },
|
|
277
|
+
showWhen: attacks.agileMelee.rank > 0,
|
|
278
|
+
}
|
|
279
|
+
attacks.solar.rank:
|
|
280
|
+
{
|
|
281
|
+
groups: [proficiencies],
|
|
282
|
+
priority: 1,
|
|
283
|
+
format: { bands: rank },
|
|
284
|
+
showWhen: attacks.solar.rank > 0,
|
|
285
|
+
}
|
|
286
|
+
attacks.familiar: { groups: [proficiencies], priority: 2, showWhen: size(attacks.familiar) > 0 }
|
|
287
|
+
augmentations.count:
|
|
288
|
+
{
|
|
289
|
+
groups: [bulk],
|
|
290
|
+
priority: 2,
|
|
291
|
+
showWhen: augmentations.count > 0,
|
|
292
|
+
with: [{ field: augmentations.limit, as: max }],
|
|
293
|
+
}
|
|
236
294
|
|
|
237
295
|
types:
|
|
238
296
|
weapon:
|