@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
@@ -10,12 +10,16 @@ effects:
10
10
  stackKey: circumstance-bonus
11
11
  when: situational.againstPoison && self.bonus > 0
12
12
  scope: applied
13
+ then:
14
+ - { type: removeEffect, entry: self }
13
15
  - target: { rolls: [save] }
14
16
  op: add
15
17
  value: self.bonus
16
18
  stackKey: circumstance-penalty
17
19
  when: situational.againstPoison && self.bonus < 0
18
20
  scope: applied
21
+ then:
22
+ - { type: removeEffect, entry: self }
19
23
  - target: { rolls: [save], tally: successToCrit }
20
24
  op: add
21
25
  value: 1
@@ -2,56 +2,18 @@ id: feats.ancestry.fixation
2
2
  type: feat
3
3
  tags: [trait.skittermander]
4
4
  fields: { level: 1, category: ancestry, ancestry: ancestries.skittermander }
5
- choices:
6
- - id: topic
7
- from:
8
- values:
9
- [
10
- academia,
11
- alcohol,
12
- android,
13
- animal,
14
- art,
15
- augmentation,
16
- barathu,
17
- borai,
18
- business,
19
- cooking,
20
- corporate,
21
- games,
22
- genealogy,
23
- history,
24
- hyperspace,
25
- infosphere,
26
- kasatha,
27
- labor,
28
- lashunta,
29
- legal,
30
- life-science,
31
- media,
32
- mining,
33
- pahtra,
34
- physical-science,
35
- piracy,
36
- plant,
37
- prismeni,
38
- shirren,
39
- skittermander,
40
- sports,
41
- underworld,
42
- vesk,
43
- vidgame,
44
- warfare,
45
- ysoki,
46
- custom1,
47
- custom2,
48
- custom3,
49
- ]
50
5
  grants:
51
6
  - item: feats.skill.additional-lore
52
- when: size(picksOf('topic')) > 0
53
7
  waivePrerequisites: true
54
- choices: { lore: [{ option: { formula: "picksOf('topic')[0]" } }] }
55
8
  - item: feats.skill.assurance
56
- when: size(picksOf('topic')) > 0
57
- choices: { skill: [{ option: { formula: "'skill.lore.' + picksOf('topic')[0]" } }] }
9
+ when: size(grantedPicksOf('feats.skill.additional-lore', 'lore')) > 0
10
+ choices:
11
+ skill:
12
+ [
13
+ {
14
+ option:
15
+ {
16
+ formula: "'skill.lore.' + grantedPicksOf('feats.skill.additional-lore', 'lore')[0]",
17
+ },
18
+ },
19
+ ]
@@ -2,9 +2,19 @@ id: feats.ancestry.harmonic-sensitivity
2
2
  type: feat
3
3
  tags: [trait.pahtra]
4
4
  fields: { level: 1, category: ancestry, ancestry: ancestries.pahtra }
5
- effects:
6
- - target: skills.trained
7
- op: grant
8
- value: { tag: skill.performance }
9
- when: "!('skill.performance' in skills.chosen)"
10
- - { target: skills.trainings, op: add, value: 1 }
5
+ choices:
6
+ - id: harmonic
7
+ from: { values: [training, assurance] }
8
+ eligible: >-
9
+ value == 'assurance' ? 'skill.performance' in skills.trained
10
+ : !('skill.performance' in skills.trained)
11
+ recommend: "'skill.performance' in skills.trained ? 'assurance' : 'training'"
12
+ effects:
13
+ - target: skills.chosen
14
+ op: grant
15
+ value: { tag: skill.performance }
16
+ when: "pick.value == 'training'"
17
+ grants:
18
+ - item: feats.skill.assurance
19
+ when: "'assurance' in picksOf('harmonic')"
20
+ choices: { skill: [{ option: skill.performance }] }
@@ -2,6 +2,12 @@ id: feats.ancestry.lashunta-lore
2
2
  type: feat
3
3
  tags: [trait.lashunta]
4
4
  fields: { level: 1, category: ancestry, ancestry: ancestries.lashunta }
5
+ # Its Additional Lore can't repeat one the character already took for Lashunta Lore.
6
+ prerequisites:
7
+ - id: lore
8
+ when: >-
9
+ countList(picksOf('feats.skill.additional-lore', 'lore'), x == 'lashunta')
10
+ <= (@feats.ancestry.lashunta-lore in feats.held ? 1 : 0)
5
11
  effects:
6
12
  - target: skills.trained
7
13
  op: grant
@@ -10,50 +10,7 @@ grants: [{ item: features.envoy.envoy-directives }]
10
10
  choices:
11
11
  - id: skill
12
12
  from:
13
- values:
14
- - skill.acrobatics
15
- - skill.arcana
16
- - skill.athletics
17
- - skill.computers
18
- - skill.crafting
19
- - skill.deception
20
- - skill.diplomacy
21
- - skill.intimidation
22
- - skill.medicine
23
- - skill.nature
24
- - skill.occultism
25
- - skill.performance
26
- - skill.piloting
27
- - skill.religion
28
- - skill.society
29
- - skill.stealth
30
- - skill.survival
31
- - skill.thievery
32
- - skill.lore.academia
33
- - skill.lore.alcohol
34
- - skill.lore.animal
35
- - skill.lore.art
36
- - skill.lore.augmentation
37
- - skill.lore.business
38
- - skill.lore.cooking
39
- - skill.lore.corporate
40
- - skill.lore.games
41
- - skill.lore.genealogy
42
- - skill.lore.history
43
- - skill.lore.hyperspace
44
- - skill.lore.infosphere
45
- - skill.lore.labor
46
- - skill.lore.legal
47
- - skill.lore.life-science
48
- - skill.lore.media
49
- - skill.lore.mining
50
- - skill.lore.physical-science
51
- - skill.lore.piracy
52
- - skill.lore.plant
53
- - skill.lore.sports
54
- - skill.lore.underworld
55
- - skill.lore.vidgame
56
- - skill.lore.warfare
13
+ values: { formula: skills.offered }
57
14
  where: "(!(value in skills.trained) && !(value in skills.chosen) || value in choice.picks) && (value in ['skill.deception', 'skill.diplomacy', 'skill.intimidation'] || countList(['skill.deception', 'skill.diplomacy', 'skill.intimidation'], (x in skills.trained || x in skills.chosen) && !(x in choice.picks)) == 3)"
58
15
  effects:
59
16
  - target: skills.trained
@@ -63,50 +20,7 @@ choices:
63
20
  - { target: skills.trainings, op: add, value: 1 }
64
21
  - id: other
65
22
  from:
66
- values:
67
- - skill.acrobatics
68
- - skill.arcana
69
- - skill.athletics
70
- - skill.computers
71
- - skill.crafting
72
- - skill.deception
73
- - skill.diplomacy
74
- - skill.intimidation
75
- - skill.medicine
76
- - skill.nature
77
- - skill.occultism
78
- - skill.performance
79
- - skill.piloting
80
- - skill.religion
81
- - skill.society
82
- - skill.stealth
83
- - skill.survival
84
- - skill.thievery
85
- - skill.lore.academia
86
- - skill.lore.alcohol
87
- - skill.lore.animal
88
- - skill.lore.art
89
- - skill.lore.augmentation
90
- - skill.lore.business
91
- - skill.lore.cooking
92
- - skill.lore.corporate
93
- - skill.lore.games
94
- - skill.lore.genealogy
95
- - skill.lore.history
96
- - skill.lore.hyperspace
97
- - skill.lore.infosphere
98
- - skill.lore.labor
99
- - skill.lore.legal
100
- - skill.lore.life-science
101
- - skill.lore.media
102
- - skill.lore.mining
103
- - skill.lore.physical-science
104
- - skill.lore.piracy
105
- - skill.lore.plant
106
- - skill.lore.sports
107
- - skill.lore.underworld
108
- - skill.lore.vidgame
109
- - skill.lore.warfare
23
+ values: { formula: skills.offered }
110
24
  where: '!(value in skills.trained) && !(value in skills.chosen) || value in choice.picks'
111
25
  effects:
112
26
  - target: skills.trained
@@ -4,7 +4,7 @@ tags: [trait.mystic]
4
4
  fields: { level: 6, category: class, class: classes.mystic }
5
5
  prerequisites:
6
6
  - id: expert
7
- when: "mystic.connection != 'akashic' && skills.occultism.rank >= 2 || mystic.connection != 'elemental' && skills.nature.rank >= 2 || mystic.connection != 'healing' && skills.medicine.rank >= 2 || mystic.connection != 'rhythm' && skills.performance.rank >= 2 || mystic.connection != 'shadow' && skills.stealth.rank >= 2"
7
+ when: mystic.otherExpertConnections > 0
8
8
  effects: [{ target: focus.points, op: add, value: 1 }]
9
9
  choices:
10
10
  - id: spell
@@ -4,4 +4,4 @@ tags: [trait.mystic, trait.spellshape]
4
4
  fields: { level: 18, category: class, class: classes.mystic }
5
5
  prerequisites:
6
6
  - id: legendary
7
- when: "mystic.connection == 'akashic' && skills.occultism.rank >= 4 || mystic.connection == 'elemental' && skills.nature.rank >= 4 || mystic.connection == 'healing' && skills.medicine.rank >= 4 || mystic.connection == 'rhythm' && skills.performance.rank >= 4 || mystic.connection == 'shadow' && skills.stealth.rank >= 4"
7
+ when: mystic.connectionRank >= 4
@@ -4,7 +4,7 @@ tags: [trait.mystic]
4
4
  fields: { level: 16, category: class, class: classes.mystic }
5
5
  prerequisites:
6
6
  - id: master
7
- when: "mystic.connection != 'akashic' && skills.occultism.rank >= 3 && countCopies(copy.item == @spells.akashic-fount) > 0 || mystic.connection != 'elemental' && skills.nature.rank >= 3 && countCopies(copy.item == @spells.elemental-weapon) > 0 || mystic.connection != 'healing' && skills.medicine.rank >= 3 && countCopies(copy.item == @spells.infusion) > 0 || mystic.connection != 'rhythm' && skills.performance.rank >= 3 && countCopies(copy.item == @spells.anthem) > 0 || mystic.connection != 'shadow' && skills.stealth.rank >= 3 && countCopies(copy.item == @spells.shadow-snap) > 0"
7
+ when: mystic.otherMasterEpiphanies > 0
8
8
  effects: [{ target: focus.points, op: add, value: 1 }]
9
9
  choices:
10
10
  - id: spell