@opencharacter/swn-revised 0.0.0-stage → 0.1.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 (302) hide show
  1. package/LICENSE +147 -0
  2. package/README.md +128 -2
  3. package/content/armor/armored-undersuit.yaml +8 -0
  4. package/content/armor/armored-vacc-suit.yaml +8 -0
  5. package/content/armor/assault-suit.yaml +8 -0
  6. package/content/armor/combat-field-uniform.yaml +8 -0
  7. package/content/armor/deflector-array.yaml +8 -0
  8. package/content/armor/field-emitter-panoply.yaml +9 -0
  9. package/content/armor/force-pavis.yaml +9 -0
  10. package/content/armor/heavy-primitive-armor.yaml +8 -0
  11. package/content/armor/icarus-harness.yaml +8 -0
  12. package/content/armor/light-primitive-armor.yaml +8 -0
  13. package/content/armor/medium-primitive-armor.yaml +8 -0
  14. package/content/armor/secure-clothing.yaml +8 -0
  15. package/content/armor/security-armor.yaml +8 -0
  16. package/content/armor/shield.yaml +9 -0
  17. package/content/armor/storm-armor.yaml +9 -0
  18. package/content/armor/vestimentum.yaml +8 -0
  19. package/content/armor/warpaint.yaml +8 -0
  20. package/content/armor/woven-body-armor.yaml +8 -0
  21. package/content/backgrounds/barbarian.yaml +20 -0
  22. package/content/backgrounds/clergy.yaml +20 -0
  23. package/content/backgrounds/courtesan.yaml +20 -0
  24. package/content/backgrounds/criminal.yaml +20 -0
  25. package/content/backgrounds/dilettante.yaml +20 -0
  26. package/content/backgrounds/entertainer.yaml +20 -0
  27. package/content/backgrounds/merchant.yaml +20 -0
  28. package/content/backgrounds/noble.yaml +20 -0
  29. package/content/backgrounds/official.yaml +20 -0
  30. package/content/backgrounds/peasant.yaml +20 -0
  31. package/content/backgrounds/physician.yaml +20 -0
  32. package/content/backgrounds/pilot.yaml +20 -0
  33. package/content/backgrounds/politician.yaml +20 -0
  34. package/content/backgrounds/scholar.yaml +20 -0
  35. package/content/backgrounds/soldier.yaml +20 -0
  36. package/content/backgrounds/spacer.yaml +20 -0
  37. package/content/backgrounds/technician.yaml +20 -0
  38. package/content/backgrounds/thug.yaml +20 -0
  39. package/content/backgrounds/vagabond.yaml +20 -0
  40. package/content/backgrounds/worker.yaml +20 -0
  41. package/content/classes/adventurer.yaml +7 -0
  42. package/content/classes/expert.yaml +14 -0
  43. package/content/classes/psychic.yaml +11 -0
  44. package/content/classes/warrior.yaml +27 -0
  45. package/content/cyberware/adrenal-suppression-pump.yaml +17 -0
  46. package/content/cyberware/bioadaptation-augments.yaml +6 -0
  47. package/content/cyberware/body-arsenal-array.yaml +6 -0
  48. package/content/cyberware/body-sculpting.yaml +6 -0
  49. package/content/cyberware/dermal-armor.yaml +8 -0
  50. package/content/cyberware/drone-control-link.yaml +6 -0
  51. package/content/cyberware/eelskin-capacitor-mesh.yaml +7 -0
  52. package/content/cyberware/gecko-anchors.yaml +6 -0
  53. package/content/cyberware/ghost-talker-transceiver.yaml +6 -0
  54. package/content/cyberware/holdout-cavity.yaml +6 -0
  55. package/content/cyberware/holoskin-emitters.yaml +6 -0
  56. package/content/cyberware/identity-submersion-trigger.yaml +6 -0
  57. package/content/cyberware/immunofiltration-system.yaml +6 -0
  58. package/content/cyberware/induced-coma-trigger.yaml +6 -0
  59. package/content/cyberware/neurointruder-alert.yaml +11 -0
  60. package/content/cyberware/panspectral-optics.yaml +6 -0
  61. package/content/cyberware/pressure-sheathing.yaml +6 -0
  62. package/content/cyberware/prosthetic-limb.yaml +6 -0
  63. package/content/cyberware/revenant-wiring.yaml +6 -0
  64. package/content/cyberware/slowtime-window.yaml +7 -0
  65. package/content/cyberware/stabilization-overrides.yaml +8 -0
  66. package/content/cyberware/tagger-nanites.yaml +7 -0
  67. package/content/cyberware/toxin-injector.yaml +7 -0
  68. package/content/cyberware/twitchlock-actuators.yaml +7 -0
  69. package/content/foci/alert.yaml +9 -0
  70. package/content/foci/armsman.yaml +9 -0
  71. package/content/foci/assassin.yaml +5 -0
  72. package/content/foci/authority.yaml +5 -0
  73. package/content/foci/close-combatant.yaml +7 -0
  74. package/content/foci/connected.yaml +5 -0
  75. package/content/foci/die-hard.yaml +7 -0
  76. package/content/foci/diplomat.yaml +10 -0
  77. package/content/foci/gunslinger.yaml +8 -0
  78. package/content/foci/hacker.yaml +10 -0
  79. package/content/foci/healer.yaml +7 -0
  80. package/content/foci/henchkeeper.yaml +7 -0
  81. package/content/foci/ironhide.yaml +7 -0
  82. package/content/foci/psychic-training.yaml +18 -0
  83. package/content/foci/savage-fray.yaml +5 -0
  84. package/content/foci/shocking-assault.yaml +8 -0
  85. package/content/foci/sniper.yaml +10 -0
  86. package/content/foci/specialist.yaml +36 -0
  87. package/content/foci/star-captain.yaml +5 -0
  88. package/content/foci/starfarer.yaml +5 -0
  89. package/content/foci/tinker.yaml +5 -0
  90. package/content/foci/unarmed-combatant.yaml +11 -0
  91. package/content/foci/unique-gift.yaml +6 -0
  92. package/content/foci/wanderer.yaml +5 -0
  93. package/content/foci/wild-psychic-talent.yaml +20 -0
  94. package/content/gear/ammo-20-rounds.yaml +9 -0
  95. package/content/gear/ammo-missile.yaml +8 -0
  96. package/content/gear/atmofilter.yaml +7 -0
  97. package/content/gear/backpack-tl0.yaml +7 -0
  98. package/content/gear/backpack-tl4.yaml +7 -0
  99. package/content/gear/bezoar.yaml +9 -0
  100. package/content/gear/binoculars-tl3.yaml +7 -0
  101. package/content/gear/binoculars-tl4.yaml +7 -0
  102. package/content/gear/bioscanner.yaml +7 -0
  103. package/content/gear/black-slab.yaml +7 -0
  104. package/content/gear/brainwave.yaml +8 -0
  105. package/content/gear/climbing-harness.yaml +7 -0
  106. package/content/gear/comm-server.yaml +7 -0
  107. package/content/gear/compad.yaml +7 -0
  108. package/content/gear/data-phase-tap.yaml +7 -0
  109. package/content/gear/data-protocol.yaml +7 -0
  110. package/content/gear/dataslab.yaml +7 -0
  111. package/content/gear/field-radio.yaml +7 -0
  112. package/content/gear/glowbug.yaml +7 -0
  113. package/content/gear/grapnel-launcher.yaml +7 -0
  114. package/content/gear/grav-chute-tl4.yaml +7 -0
  115. package/content/gear/grav-chute-tl5.yaml +7 -0
  116. package/content/gear/grav-harness.yaml +7 -0
  117. package/content/gear/hush.yaml +8 -0
  118. package/content/gear/instapanel.yaml +8 -0
  119. package/content/gear/lazarus-patch.yaml +8 -0
  120. package/content/gear/lift.yaml +11 -0
  121. package/content/gear/line-shunt.yaml +7 -0
  122. package/content/gear/low-light-goggles.yaml +7 -0
  123. package/content/gear/medkit.yaml +7 -0
  124. package/content/gear/metatool.yaml +7 -0
  125. package/content/gear/navcomp.yaml +7 -0
  126. package/content/gear/portabox.yaml +7 -0
  127. package/content/gear/postech-toolkit.yaml +7 -0
  128. package/content/gear/power-cell-a.yaml +9 -0
  129. package/content/gear/power-cell-b.yaml +8 -0
  130. package/content/gear/pressure-tent.yaml +7 -0
  131. package/content/gear/pretech-cosmetic.yaml +9 -0
  132. package/content/gear/pretech-toolkit.yaml +7 -0
  133. package/content/gear/psych.yaml +8 -0
  134. package/content/gear/rations-1-day.yaml +8 -0
  135. package/content/gear/remote-link-unit.yaml +7 -0
  136. package/content/gear/reverie.yaml +9 -0
  137. package/content/gear/rope-tl0.yaml +7 -0
  138. package/content/gear/rope-tl4.yaml +7 -0
  139. package/content/gear/scout-report.yaml +7 -0
  140. package/content/gear/solar-recharger.yaml +7 -0
  141. package/content/gear/spare-parts.yaml +8 -0
  142. package/content/gear/squeal.yaml +8 -0
  143. package/content/gear/stiletto-charge.yaml +6 -0
  144. package/content/gear/storage-unit.yaml +7 -0
  145. package/content/gear/survey-scanner.yaml +7 -0
  146. package/content/gear/survival-kit.yaml +7 -0
  147. package/content/gear/tailored-antiallergens.yaml +7 -0
  148. package/content/gear/telekinetic-generator.yaml +7 -0
  149. package/content/gear/telescoping-pole.yaml +7 -0
  150. package/content/gear/thermal-flare.yaml +7 -0
  151. package/content/gear/tightbeam-link-unit.yaml +7 -0
  152. package/content/gear/trade-goods.yaml +8 -0
  153. package/content/gear/trade-metals.yaml +8 -0
  154. package/content/gear/translator-torc.yaml +7 -0
  155. package/content/gear/tsunami.yaml +9 -0
  156. package/content/gear/vacc-fresher.yaml +7 -0
  157. package/content/gear/vacc-skin.yaml +7 -0
  158. package/content/gear/vacc-suit.yaml +7 -0
  159. package/content/partial-classes/expert.yaml +5 -0
  160. package/content/partial-classes/psychic.yaml +18 -0
  161. package/content/partial-classes/warrior.yaml +7 -0
  162. package/content/techniques/accelerated-succor.yaml +10 -0
  163. package/content/techniques/alternate-outcome.yaml +10 -0
  164. package/content/techniques/anguished-vision.yaml +10 -0
  165. package/content/techniques/burdened-apportation.yaml +10 -0
  166. package/content/techniques/cloak-powers.yaml +10 -0
  167. package/content/techniques/concert-of-minds.yaml +10 -0
  168. package/content/techniques/cursed-luck.yaml +59 -0
  169. package/content/techniques/deep-intrusion.yaml +10 -0
  170. package/content/techniques/destinys-shield.yaml +10 -0
  171. package/content/techniques/effortless-apportation.yaml +10 -0
  172. package/content/techniques/facile-mind.yaml +10 -0
  173. package/content/techniques/far-thought.yaml +10 -0
  174. package/content/techniques/flawless-mastery.yaml +10 -0
  175. package/content/techniques/force-puppetry.yaml +10 -0
  176. package/content/techniques/forced-outcome.yaml +10 -0
  177. package/content/techniques/holistic-optimization-patterning.yaml +10 -0
  178. package/content/techniques/impact-sump.yaml +10 -0
  179. package/content/techniques/impervious-pavis-of-will.yaml +10 -0
  180. package/content/techniques/intuitive-response.yaml +10 -0
  181. package/content/techniques/invincible-stand.yaml +10 -0
  182. package/content/techniques/kinetic-transversal.yaml +10 -0
  183. package/content/techniques/major-organ-restoration.yaml +10 -0
  184. package/content/techniques/mastered-succor.yaml +10 -0
  185. package/content/techniques/memory-editing.yaml +10 -0
  186. package/content/techniques/metadimensional-friction.yaml +10 -0
  187. package/content/techniques/metamorph.yaml +10 -0
  188. package/content/techniques/mindtracing.yaml +10 -0
  189. package/content/techniques/neural-trap.yaml +10 -0
  190. package/content/techniques/not-my-time.yaml +10 -0
  191. package/content/techniques/offensive-apportation.yaml +10 -0
  192. package/content/techniques/oracle.yaml +6 -0
  193. package/content/techniques/organic-purification-protocols.yaml +10 -0
  194. package/content/techniques/perceptive-dislocation.yaml +10 -0
  195. package/content/techniques/personal-apportation.yaml +6 -0
  196. package/content/techniques/pressure-field.yaml +10 -0
  197. package/content/techniques/proficient-apportation.yaml +10 -0
  198. package/content/techniques/prophecy.yaml +10 -0
  199. package/content/techniques/psychic-refinement.yaml +11 -0
  200. package/content/techniques/psychic-static.yaml +10 -0
  201. package/content/techniques/psychic-succor.yaml +39 -0
  202. package/content/techniques/psychic-tutelage.yaml +10 -0
  203. package/content/techniques/quintessential-reconstruction.yaml +10 -0
  204. package/content/techniques/reactive-telekinesis.yaml +10 -0
  205. package/content/techniques/reflex-response.yaml +10 -0
  206. package/content/techniques/remote-repair.yaml +10 -0
  207. package/content/techniques/rift-reduplication.yaml +10 -0
  208. package/content/techniques/sense-the-need.yaml +10 -0
  209. package/content/techniques/slip-field.yaml +10 -0
  210. package/content/techniques/spatial-awareness.yaml +10 -0
  211. package/content/techniques/spatial-synchrony-mandala.yaml +10 -0
  212. package/content/techniques/stutterjump.yaml +10 -0
  213. package/content/techniques/suppress-cognition.yaml +10 -0
  214. package/content/techniques/surge-momentum.yaml +10 -0
  215. package/content/techniques/suspended-manifestation.yaml +10 -0
  216. package/content/techniques/synthetic-adaptation.yaml +10 -0
  217. package/content/techniques/tangible-force-construct.yaml +10 -0
  218. package/content/techniques/telekinetic-armory.yaml +10 -0
  219. package/content/techniques/telekinetic-expertise.yaml +10 -0
  220. package/content/techniques/telekinetic-flight.yaml +10 -0
  221. package/content/techniques/telekinetic-manipulation.yaml +6 -0
  222. package/content/techniques/telekinetic-ram.yaml +10 -0
  223. package/content/techniques/telepathic-assault.yaml +10 -0
  224. package/content/techniques/telepathic-contact.yaml +6 -0
  225. package/content/techniques/teratic-overload.yaml +10 -0
  226. package/content/techniques/terminal-reflection.yaml +10 -0
  227. package/content/techniques/thermokinesis.yaml +10 -0
  228. package/content/techniques/tissue-integrity-field.yaml +10 -0
  229. package/content/techniques/transmit-thought.yaml +10 -0
  230. package/content/techniques/unity-of-thought.yaml +10 -0
  231. package/content/templates/trained-unarmed.yaml +9 -0
  232. package/content/weapons/advanced-bow.yaml +15 -0
  233. package/content/weapons/anti-vehicle-laser.yaml +18 -0
  234. package/content/weapons/combat-rifle.yaml +18 -0
  235. package/content/weapons/combat-shotgun.yaml +18 -0
  236. package/content/weapons/conversion-bow.yaml +15 -0
  237. package/content/weapons/crude-pistol.yaml +18 -0
  238. package/content/weapons/demo-charge.yaml +13 -0
  239. package/content/weapons/distortion-cannon.yaml +18 -0
  240. package/content/weapons/grenade.yaml +14 -0
  241. package/content/weapons/heavy-machine-gun.yaml +19 -0
  242. package/content/weapons/hydra-array.yaml +18 -0
  243. package/content/weapons/knife.yaml +7 -0
  244. package/content/weapons/large-advanced-weapon.yaml +13 -0
  245. package/content/weapons/large-primitive-weapon.yaml +12 -0
  246. package/content/weapons/laser-pistol.yaml +18 -0
  247. package/content/weapons/laser-rifle.yaml +19 -0
  248. package/content/weapons/mag-pistol.yaml +17 -0
  249. package/content/weapons/mag-rifle.yaml +17 -0
  250. package/content/weapons/medium-advanced-weapon.yaml +13 -0
  251. package/content/weapons/medium-primitive-weapon.yaml +12 -0
  252. package/content/weapons/monoblade-knife.yaml +7 -0
  253. package/content/weapons/monoblade-sword.yaml +4 -0
  254. package/content/weapons/musket.yaml +18 -0
  255. package/content/weapons/plasma-projector.yaml +18 -0
  256. package/content/weapons/primitive-bow.yaml +15 -0
  257. package/content/weapons/railgun.yaml +18 -0
  258. package/content/weapons/revolver.yaml +17 -0
  259. package/content/weapons/rifle.yaml +17 -0
  260. package/content/weapons/rocket-launcher.yaml +18 -0
  261. package/content/weapons/semi-auto-pistol.yaml +17 -0
  262. package/content/weapons/shear-rifle.yaml +19 -0
  263. package/content/weapons/shotgun.yaml +17 -0
  264. package/content/weapons/small-advanced-weapon.yaml +14 -0
  265. package/content/weapons/small-primitive-weapon.yaml +13 -0
  266. package/content/weapons/sniper-rifle.yaml +17 -0
  267. package/content/weapons/spear.yaml +8 -0
  268. package/content/weapons/spike-thrower.yaml +18 -0
  269. package/content/weapons/stun-baton.yaml +14 -0
  270. package/content/weapons/submachine-gun.yaml +18 -0
  271. package/content/weapons/suit-ripper.yaml +11 -0
  272. package/content/weapons/thermal-knife.yaml +7 -0
  273. package/content/weapons/thermal-pistol.yaml +18 -0
  274. package/content/weapons/thunder-gun.yaml +18 -0
  275. package/content/weapons/unarmed.yaml +8 -0
  276. package/content/weapons/void-carbine.yaml +17 -0
  277. package/content/weapons/vortex-cannon.yaml +16 -0
  278. package/content/weapons/wheatcutter-belt.yaml +16 -0
  279. package/dist/i18n/en.d.ts +3 -0
  280. package/dist/i18n/en.js +2 -0
  281. package/dist/i18n/en.json +1356 -0
  282. package/dist/index.d.ts +3 -0
  283. package/dist/index.js +2 -0
  284. package/dist/release.json +30238 -0
  285. package/i18n/en/content.yaml +394 -0
  286. package/i18n/en/foci.yaml +199 -0
  287. package/i18n/en/rules.yaml +759 -0
  288. package/i18n/en/text.yaml +249 -0
  289. package/i18n/en.yaml +1 -0
  290. package/pack.yaml +15 -0
  291. package/package.json +58 -3
  292. package/rules/advancement.yaml +461 -0
  293. package/rules/character.yaml +114 -0
  294. package/rules/checks.yaml +160 -0
  295. package/rules/combat.yaml +312 -0
  296. package/rules/core.yaml +111 -0
  297. package/rules/creation.yaml +633 -0
  298. package/rules/gear.yaml +176 -0
  299. package/rules/layout.yaml +195 -0
  300. package/rules/psionics.yaml +105 -0
  301. package/rules/start.yaml +403 -0
  302. package/rules/tags.yaml +60 -0
@@ -0,0 +1,7 @@
1
+ id: gear.translator-torc
2
+ type: gear
3
+ fields:
4
+ category: communications
5
+ cost: 200
6
+ enc: 0
7
+ techLevel: 4
@@ -0,0 +1,9 @@
1
+ id: gear.tsunami
2
+ type: gear
3
+ fields:
4
+ category: pharmaceutical
5
+ healSkill: 1
6
+ strain: 2
7
+ cost: 50
8
+ enc: 0
9
+ techLevel: 4
@@ -0,0 +1,7 @@
1
+ id: gear.vacc-fresher
2
+ type: gear
3
+ fields:
4
+ category: field
5
+ cost: 400
6
+ enc: 1
7
+ techLevel: 4
@@ -0,0 +1,7 @@
1
+ id: gear.vacc-skin
2
+ type: gear
3
+ fields:
4
+ category: field
5
+ cost: 1000
6
+ enc: 1
7
+ techLevel: 5
@@ -0,0 +1,7 @@
1
+ id: gear.vacc-suit
2
+ type: gear
3
+ fields:
4
+ category: field
5
+ cost: 100
6
+ enc: 2
7
+ techLevel: 4
@@ -0,0 +1,5 @@
1
+ id: partial-classes.expert
2
+ type: partialClass
3
+ effects:
4
+ - { target: class.focus.noncombat, op: add, value: 1 }
5
+ - { target: class.expertPoints, op: add, value: 1 }
@@ -0,0 +1,18 @@
1
+ id: partial-classes.psychic
2
+ type: partialClass
3
+ effects:
4
+ - { target: psionics.access, op: set, value: "'restricted'" }
5
+ choices:
6
+ - id: discipline
7
+ from:
8
+ { values: [biopsionics, metapsionics, precognition, telekinesis, telepathy, teleportation] }
9
+ recommend: "'biopsionics'"
10
+ effects:
11
+ - { target: psionics.discipline, op: set, value: pick.value }
12
+ grants:
13
+ - { item: techniques.psychic-succor, when: skills.biopsionics.level >= 0 }
14
+ - { item: techniques.psychic-refinement, when: skills.metapsionics.level >= 0 }
15
+ - { item: techniques.oracle, when: skills.precognition.level >= 0 }
16
+ - { item: techniques.telekinetic-manipulation, when: skills.telekinesis.level >= 0 }
17
+ - { item: techniques.telepathic-contact, when: skills.telepathy.level >= 0 }
18
+ - { item: techniques.personal-apportation, when: skills.teleportation.level >= 0 }
@@ -0,0 +1,7 @@
1
+ id: partial-classes.warrior
2
+ type: partialClass
3
+ effects:
4
+ - { target: class.focus.combat, op: add, value: 1 }
5
+ - { target: hp.perLevel, op: add, value: 2 }
6
+ # +1 at first level and another at fifth.
7
+ - { target: combat.attackBonus, op: add, value: 'level >= 5 ? 2 : 1' }
@@ -0,0 +1,10 @@
1
+ id: techniques.accelerated-succor
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.biopsionics.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'biopsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.alternate-outcome
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.precognition.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'precognition'"
@@ -0,0 +1,10 @@
1
+ id: techniques.anguished-vision
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.precognition.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'precognition'"
@@ -0,0 +1,10 @@
1
+ id: techniques.burdened-apportation
2
+ type: technique
3
+ fields:
4
+ discipline: teleportation
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.teleportation.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'teleportation'"
@@ -0,0 +1,10 @@
1
+ id: techniques.cloak-powers
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.concert-of-minds
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,59 @@
1
+ id: techniques.cursed-luck
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.precognition.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'precognition'"
11
+ effects:
12
+ # The cursed target rolls its attacks, damage, checks and saves twice and keeps the worse; the
13
+ # Mental save that throws the curse off is the power's own and isn't penalized.
14
+ - target: { rolls: [attack, damage, check, save] }
15
+ op: rollModifier
16
+ value: { kind: disadvantage, of: roll }
17
+ when: "!('psionics' in roll.tags)"
18
+ scope: applied
19
+ # Attackers read it from the target's sheet.
20
+ - { target: psionics.cursedLuck, op: set, value: true, scope: applied }
21
+ actions:
22
+ # A Main Action and Effort Committed for the scene curse a visible target.
23
+ - id: curse
24
+ tags: [psionics]
25
+ available: effort.available > 0
26
+ results: [cursed]
27
+ participants:
28
+ target: { min: 1, max: 1 }
29
+ steps:
30
+ - id: commit
31
+ kind: changes
32
+ changes:
33
+ - { type: adjust, field: effort.scene, by: 1 }
34
+ - id: curse
35
+ kind: changes
36
+ to: target
37
+ changes:
38
+ - { type: applyEffect, source: "'techniques.cursed-luck'" }
39
+ - { id: result, kind: outcome, result: "'cursed'" }
40
+ # An intelligent target's Mental save at the end of each round throws the curse off.
41
+ - id: throw-off
42
+ scope: applied
43
+ tags: [psionics, save]
44
+ results: [freed, cursed]
45
+ steps:
46
+ - id: save
47
+ kind: action
48
+ use: saving-throw
49
+ params: { save: "'mental'" }
50
+ tags: [psionics]
51
+ - id: free
52
+ kind: changes
53
+ when: "steps.save.result == 'success'"
54
+ changes:
55
+ - type: removeEffect
56
+ applied: { where: 'item.id == @techniques.cursed-luck' }
57
+ - id: result
58
+ kind: outcome
59
+ result: "steps.save.result == 'success' ? 'freed' : 'cursed'"
@@ -0,0 +1,10 @@
1
+ id: techniques.deep-intrusion
2
+ type: technique
3
+ fields:
4
+ discipline: teleportation
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.teleportation.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'teleportation'"
@@ -0,0 +1,10 @@
1
+ id: techniques.destinys-shield
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.precognition.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'precognition'"
@@ -0,0 +1,10 @@
1
+ id: techniques.effortless-apportation
2
+ type: technique
3
+ fields:
4
+ discipline: teleportation
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.teleportation.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'teleportation'"
@@ -0,0 +1,10 @@
1
+ id: techniques.facile-mind
2
+ type: technique
3
+ fields:
4
+ discipline: telepathy
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.telepathy.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'telepathy'"
@@ -0,0 +1,10 @@
1
+ id: techniques.far-thought
2
+ type: technique
3
+ fields:
4
+ discipline: telepathy
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.telepathy.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'telepathy'"
@@ -0,0 +1,10 @@
1
+ id: techniques.flawless-mastery
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.force-puppetry
2
+ type: technique
3
+ fields:
4
+ discipline: telekinesis
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.telekinesis.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'telekinesis'"
@@ -0,0 +1,10 @@
1
+ id: techniques.forced-outcome
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.precognition.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'precognition'"
@@ -0,0 +1,10 @@
1
+ id: techniques.holistic-optimization-patterning
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.biopsionics.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'biopsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.impact-sump
2
+ type: technique
3
+ fields:
4
+ discipline: telekinesis
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.telekinesis.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'telekinesis'"
@@ -0,0 +1,10 @@
1
+ id: techniques.impervious-pavis-of-will
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.intuitive-response
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.precognition.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'precognition'"
@@ -0,0 +1,10 @@
1
+ id: techniques.invincible-stand
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.biopsionics.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'biopsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.kinetic-transversal
2
+ type: technique
3
+ fields:
4
+ discipline: telekinesis
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.telekinesis.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'telekinesis'"
@@ -0,0 +1,10 @@
1
+ id: techniques.major-organ-restoration
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.biopsionics.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'biopsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.mastered-succor
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.biopsionics.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'biopsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.memory-editing
2
+ type: technique
3
+ fields:
4
+ discipline: telepathy
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.telepathy.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'telepathy'"
@@ -0,0 +1,10 @@
1
+ id: techniques.metadimensional-friction
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.metamorph
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.biopsionics.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'biopsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.mindtracing
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.neural-trap
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.not-my-time
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.precognition.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'precognition'"
@@ -0,0 +1,10 @@
1
+ id: techniques.offensive-apportation
2
+ type: technique
3
+ fields:
4
+ discipline: teleportation
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.teleportation.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'teleportation'"
@@ -0,0 +1,6 @@
1
+ id: techniques.oracle
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 0
6
+ core: true
@@ -0,0 +1,10 @@
1
+ id: techniques.organic-purification-protocols
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.biopsionics.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'biopsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.perceptive-dislocation
2
+ type: technique
3
+ fields:
4
+ discipline: teleportation
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.teleportation.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'teleportation'"
@@ -0,0 +1,6 @@
1
+ id: techniques.personal-apportation
2
+ type: technique
3
+ fields:
4
+ discipline: teleportation
5
+ level: 0
6
+ core: true
@@ -0,0 +1,10 @@
1
+ id: techniques.pressure-field
2
+ type: technique
3
+ fields:
4
+ discipline: telekinesis
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.telekinesis.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'telekinesis'"
@@ -0,0 +1,10 @@
1
+ id: techniques.proficient-apportation
2
+ type: technique
3
+ fields:
4
+ discipline: teleportation
5
+ level: 1
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.teleportation.level >= 1
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'teleportation'"
@@ -0,0 +1,10 @@
1
+ id: techniques.prophecy
2
+ type: technique
3
+ fields:
4
+ discipline: precognition
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.precognition.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'precognition'"
@@ -0,0 +1,11 @@
1
+ id: techniques.psychic-refinement
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 0
6
+ core: true
7
+ effects:
8
+ # Level-1 and level-3: a point of maximum Effort each.
9
+ - target: effort.bonus
10
+ op: add
11
+ value: '(skills.metapsionics.level >= 1 ? 1 : 0) + (skills.metapsionics.level >= 3 ? 1 : 0)'
@@ -0,0 +1,10 @@
1
+ id: techniques.psychic-static
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 2
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 2
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,39 @@
1
+ id: techniques.psychic-succor
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 0
6
+ core: true
7
+ actions:
8
+ # Heals by Biopsionics level (level-0 only stabilizes) and adds System Strain to the target:
9
+ # two points if they were mortally wounded. The Effort is the app's to Commit.
10
+ - id: succor
11
+ tags: [psionics]
12
+ params:
13
+ mortallyWounded: { type: boolean, default: false }
14
+ participants:
15
+ target: { max: 1 }
16
+ results: [healed]
17
+ steps:
18
+ - id: heal
19
+ kind: roll
20
+ when: skills.biopsionics.level >= 1
21
+ tags: [healing]
22
+ parts:
23
+ - dice: >-
24
+ skills.biopsionics.level >= 4 ? 3d6 + 8 : skills.biopsionics.level == 3 ? 2d6 + 6
25
+ : skills.biopsionics.level == 2 ? 2d6 + 2 : 1d6 + 1
26
+ - id: apply
27
+ kind: changes
28
+ to: target
29
+ changes:
30
+ - type: adjust
31
+ when: has(steps.heal)
32
+ field: hp.current
33
+ by: steps.heal.total
34
+ tags: [healing]
35
+ - { type: adjust, field: strain.current, by: 'params.mortallyWounded ? 2 : 1' }
36
+ - id: result
37
+ kind: outcome
38
+ result: "'healed'"
39
+ data: { healed: 'has(steps.heal) ? steps.heal.total : 0' }
@@ -0,0 +1,10 @@
1
+ id: techniques.psychic-tutelage
2
+ type: technique
3
+ fields:
4
+ discipline: metapsionics
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.metapsionics.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'metapsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.quintessential-reconstruction
2
+ type: technique
3
+ fields:
4
+ discipline: biopsionics
5
+ level: 4
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.biopsionics.level >= 4
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'biopsionics'"
@@ -0,0 +1,10 @@
1
+ id: techniques.reactive-telekinesis
2
+ type: technique
3
+ fields:
4
+ discipline: telekinesis
5
+ level: 3
6
+ prerequisites:
7
+ - id: skill
8
+ when: skills.telekinesis.level >= 3
9
+ - id: discipline
10
+ when: "psionics.access != 'restricted' || psionics.discipline == 'telekinesis'"