@opencharacter/godbound-core 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.
package/i18n/en.yaml CHANGED
@@ -82,7 +82,9 @@ fields.effort.free.name: Effort
82
82
  fields.effort.committed.name: Committed Effort
83
83
  fields.effort.active.name: Effort held by gifts
84
84
  fields.effort.scene.name: Effort committed for the scene
85
+ fields.effort.scene.short: Scene
85
86
  fields.effort.day.name: Effort committed for the day
87
+ fields.effort.day.short: Day
86
88
  fields.luck.reserve.name: Luck roll in reserve
87
89
 
88
90
  fields.hp.max.name: Maximum hit points
@@ -161,6 +163,7 @@ types.gift.name: Gift
161
163
  types.gift.block: >-
162
164
  {has_word, select, true {{word_name} · } other {}}{has_apotheosisLevel, select, true {Level {apotheosisLevel} · } other {}}{has_degree, select, true {{degree_name} · } other {}}{smite, select, true {(Smite) } other {}}{activation_name}{commit, select, none {} other { · Commit Effort: {commit_name}}}
163
165
  types.gift.state.committed.name: Effort held
166
+ types.gift.state.artifactEffort.name: Artifact Effort
164
167
  types.gift.fields.word.name: Word
165
168
  types.gift.fields.degree.name: Degree
166
169
  types.gift.fields.degree.values.lesser.name: Lesser
@@ -281,11 +284,15 @@ tags.luck.name: Luck
281
284
  tags.backlash.name: Backlash
282
285
  tags.failed-save.name: Failed save
283
286
  tags.creation.name: Creation
287
+ tags.creation.finish.name: Creation finish
284
288
  tags.level.name: Level
289
+ tags.level.gain.name: New level
285
290
  tags.effort.name: Effort
286
291
  tags.miracle.name: Miracle
287
292
  tags.influence.name: Influence
288
293
  tags.rest.name: Rest
294
+ tags.rest.day.name: New day
295
+ tags.rest.scene.name: Scene end
289
296
  tags.health.name: Hit points
290
297
  tags.fury.name: Divine fury
291
298
  tags.gift.name: Gift
@@ -338,9 +345,10 @@ actions.take-damage.name: Take damage
338
345
  actions.take-damage.params.amount.name: Damage
339
346
  actions.take-damage.results.taken.name: Taken
340
347
  actions.heal.name: Heal
341
- actions.heal.params.amount.name: Hit points
348
+ actions.heal.params.amount.name: Hit points regained
342
349
  actions.heal.params.magical.name: Magical healing (commits a day's Effort)
343
350
  actions.heal.results.healed.name: Healed
351
+ actions.heal.results.no-effort.name: Not enough free Effort
344
352
  actions.rest.name: A full day's rest
345
353
  actions.rest.results.rested.name: Rested
346
354
  actions.divine-fury.name: Divine fury
@@ -363,6 +371,7 @@ actions.miracle.params.kind.values.hurt-one.name: Hurt one target
363
371
  actions.miracle.params.kind.values.hurt-several.name: Hurt several targets
364
372
  actions.miracle.params.straight.name: Read the damage straight
365
373
  actions.miracle.results.invoked.name: Invoked
374
+ actions.miracle.results.no-effort.name: Not enough free Effort
366
375
  actions.end-scene.name: End of the scene
367
376
  actions.end-scene.results.ended.name: Ended
368
377
  actions.new-day.name: A new day
@@ -434,11 +443,7 @@ actions.create-character.steps.extraWord.prompt: The fourth Word
434
443
  actions.create-character.steps.gifts.prompt: Spend gift points on gifts
435
444
  actions.create-character.steps.armor.prompt: Armor
436
445
  actions.create-character.options.none.name: None
437
- actions.create-character.options.light.name: Light armor
438
- actions.create-character.options.medium.name: Medium armor
439
- actions.create-character.options.heavy.name: Heavy armor
440
446
  actions.create-character.steps.shield.prompt: Shield
441
- actions.create-character.options.shield.name: Shield
442
447
  actions.create-character.steps.weapon.prompt: Weapon
443
448
 
444
449
  actions.level-up.name: Gain a level
package/pack.yaml CHANGED
@@ -1,6 +1,6 @@
1
1
  id: godbound-core
2
- version: 0.1.0
3
- specVersion: 0.2.0
2
+ version: 0.2.0
3
+ specVersion: 0.3.0
4
4
  license: LicenseRef-sine-nomine-free-edition
5
5
  credit: >-
6
6
  Text from Godbound: A Game of Divine Heroes (Free Edition), © 2016 Sine Nomine Publishing, by
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opencharacter/godbound-core",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Unofficial Open Character Format pack for Godbound's character rules, with Free Edition text used by permission.",
5
5
  "keywords": [
6
6
  "character-sheet",
@@ -52,7 +52,7 @@
52
52
  "access": "public"
53
53
  },
54
54
  "devDependencies": {
55
- "@opencharacter/engine": "0.2.0"
55
+ "@opencharacter/engine": "0.3.0"
56
56
  },
57
57
  "engines": {
58
58
  "node": ">=22"
package/rules/combat.yaml CHANGED
@@ -71,20 +71,18 @@ situational:
71
71
  # A d20 roll against a target number: a natural 20 always succeeds and a natural 1 always fails.
72
72
  resultBands:
73
73
  d20:
74
- value: 'roll.kept[0] == 20 || (roll.kept[0] != 1 && roll.total >= flags.target) ? 1 : 0'
75
- bands:
76
- - { id: success, when: roll.value == 1 }
77
- - { id: failure, when: true }
74
+ - { id: success, when: 'roll.kept[0] == 20' }
75
+ - { id: failure, when: 'roll.kept[0] == 1' }
76
+ - { id: success, when: roll.total >= flags.target, success: true }
77
+ - { id: failure, when: true }
78
78
  # To hit: d20 + attack bonus + modifier + the target's AC reaches 20. Without a target's AC the
79
79
  # roll is only reported.
80
80
  attack:
81
- value: >-
82
- roll.kept[0] == 20 ? 2 : roll.kept[0] == 1 ? 0 : !flags.known ? 1
83
- : roll.total + flags.ac >= 20 ? 2 : 0
84
- bands:
85
- - { id: hit, when: roll.value == 2 }
86
- - { id: rolled, when: roll.value == 1 }
87
- - { id: miss, when: true }
81
+ - { id: hit, when: 'roll.kept[0] == 20' }
82
+ - { id: miss, when: 'roll.kept[0] == 1' }
83
+ - { id: rolled, when: '!flags.known' }
84
+ - { id: hit, when: roll.total >= 20 - flags.ac, success: true }
85
+ - { id: miss, when: true }
88
86
 
89
87
  followUps:
90
88
  - id: divine-fury
@@ -339,8 +337,12 @@ actions:
339
337
  params:
340
338
  amount: { type: integer, min: 0 }
341
339
  magical: { type: boolean, default: false }
342
- results: [healed]
340
+ results: [healed, no-effort]
343
341
  steps:
342
+ - id: noEffort
343
+ kind: outcome
344
+ when: params.magical && effort.free < 1
345
+ result: "'no-effort'"
344
346
  - id: restore
345
347
  kind: changes
346
348
  changes:
@@ -128,34 +128,26 @@ actions:
128
128
  changes:
129
129
  - type: addItem
130
130
  entry: { item: picked.id }
131
+ # None or any armor, then none or any shield, the gear of add-on packs included, lightest
132
+ # first (armor class falling, shield bonus rising).
131
133
  - id: armor
132
134
  kind: choice
133
- options:
134
- - id: none
135
- - id: light
136
- changes:
137
- - type: addItem
138
- entry: { item: "'armor.light'", equipped: true }
139
- - id: medium
140
- changes:
141
- - type: addItem
142
- entry: { item: "'armor.medium'", equipped: true }
143
- - id: heavy
144
- changes:
145
- - type: addItem
146
- entry: { item: "'armor.heavy'", equipped: true }
135
+ options: { values: { formula: "['none'] + sortList(gear.armor, -itemField(x, 'ac'))" } }
147
136
  random: params.random
148
137
  recommend: "'none'"
138
+ changes:
139
+ - type: addItem
140
+ when: "picked.value != 'none'"
141
+ entry: { item: picked.value, equipped: true }
149
142
  - id: shield
150
143
  kind: choice
151
- options:
152
- - id: none
153
- - id: shield
154
- changes:
155
- - type: addItem
156
- entry: { item: "'shields.shield'", equipped: true }
144
+ options: { values: { formula: "['none'] + sortList(gear.shields, itemField(x, 'bonus'))" } }
157
145
  random: params.random
158
146
  recommend: "'none'"
147
+ changes:
148
+ - type: addItem
149
+ when: "picked.value != 'none'"
150
+ entry: { item: picked.value, equipped: true }
159
151
  - id: weapon
160
152
  kind: choice
161
153
  options: { content: { type: weapon, where: 'item.id != @weapons.unarmed' } }
@@ -170,6 +162,7 @@ actions:
170
162
  options: { pending: {} }
171
163
  random: "params.random && choice.id == 'invocations'"
172
164
  - id: finish
165
+ tags: [creation.finish]
173
166
  kind: changes
174
167
  sheet: proposed
175
168
  changes:
@@ -187,6 +180,7 @@ actions:
187
180
  results: [advanced]
188
181
  steps:
189
182
  - id: advance
183
+ tags: [level.gain]
190
184
  kind: changes
191
185
  changes:
192
186
  - { type: adjust, field: level, by: 1 }
package/rules/effort.yaml CHANGED
@@ -24,7 +24,7 @@ actions:
24
24
  available: effort.free > 0
25
25
  params:
26
26
  duration: { type: enum, values: [scene, day], default: day }
27
- amount: { type: integer, default: 1, min: 1 }
27
+ amount: { type: integer, default: 1, min: 1, max: effort.free }
28
28
  results: [committed]
29
29
  steps:
30
30
  - id: commit
@@ -55,8 +55,12 @@ actions:
55
55
  values: [effect, mimic-day-gift, armor, hurt-one, hurt-several]
56
56
  default: effect
57
57
  straight: { type: boolean, default: false }
58
- results: [invoked]
58
+ results: [invoked, no-effort]
59
59
  steps:
60
+ - id: noEffort
61
+ kind: outcome
62
+ when: "params.kind == 'mimic-day-gift' && effort.free < 2"
63
+ result: "'no-effort'"
60
64
  - id: commit
61
65
  kind: changes
62
66
  changes:
@@ -93,6 +97,7 @@ actions:
93
97
  results: [ended]
94
98
  steps:
95
99
  - id: reset
100
+ tags: [rest.scene]
96
101
  kind: changes
97
102
  changes:
98
103
  - { type: set, field: effort.scene, value: 0 }
@@ -110,6 +115,7 @@ actions:
110
115
  results: [dawn]
111
116
  steps:
112
117
  - id: reset
118
+ tags: [rest.day]
113
119
  kind: changes
114
120
  changes:
115
121
  - { type: set, field: effort.scene, value: 0 }
@@ -143,7 +149,7 @@ actions:
143
149
  tags: [influence]
144
150
  available: influence.free > 0
145
151
  params:
146
- amount: { type: integer, default: 1, min: 1 }
152
+ amount: { type: integer, default: 1, min: 1, max: influence.free }
147
153
  results: [committed]
148
154
  steps:
149
155
  - id: commit
@@ -158,7 +164,7 @@ actions:
158
164
  tags: [influence]
159
165
  available: influence.committed > 0
160
166
  params:
161
- amount: { type: integer, default: 1, min: 1 }
167
+ amount: { type: integer, default: 1, min: 1, max: influence.committed }
162
168
  results: [reclaimed]
163
169
  steps:
164
170
  - id: reclaim
package/rules/gear.yaml CHANGED
@@ -1,6 +1,15 @@
1
1
  standardCopies:
2
2
  - { type: weapon, where: 'item.id == @weapons.unarmed' }
3
3
 
4
+ fields:
5
+ # Every armor and shield of the ruleset, for creation's picks.
6
+ gear.armor: { type: set, of: armor }
7
+ gear.shields: { type: set, of: shield }
8
+
9
+ effects:
10
+ - { target: gear.armor, op: grant, value: { query: { type: armor } } }
11
+ - { target: gear.shields, op: grant, value: { query: { type: shield } } }
12
+
4
13
  contentTypes:
5
14
  weapon:
6
15
  carried: true
@@ -20,7 +29,7 @@ contentTypes:
20
29
  carried: true
21
30
  equippable: true
22
31
  fields:
23
- weight: { type: enum, values: [light, medium, heavy], required: true }
32
+ weight: { type: enum, values: [light, medium, heavy], required: true, open: true }
24
33
  ac: { type: integer, required: true }
25
34
  # How many saves the armor makes 4 harder: chosen on the suit, once.
26
35
  penalties: { type: integer, default: 0, min: 0, max: 2 }
package/rules/layout.yaml CHANGED
@@ -115,6 +115,8 @@ display:
115
115
  fray.die: { groups: [combat], priority: 0, format: dice, rolls: [{ action: fray }] }
116
116
  fury.active: { groups: [combat], priority: 1, input: { widget: checkbox } }
117
117
  fury.spent: { groups: [combat], priority: 2, input: { widget: checkbox } }
118
+ gear.armor: { hidden: true }
119
+ gear.shields: { hidden: true }
118
120
  damage.melee.floor: { hidden: true }
119
121
  damage.melee.twoHandedFloor: { hidden: true }
120
122
  damage.melee.bonus: { hidden: true }
package/rules/tags.yaml CHANGED
@@ -32,6 +32,11 @@ tags:
32
32
  - failed-save
33
33
  - creation
34
34
  - level
35
+ # Steps an add-on pack's rules effects reach.
36
+ - creation.finish
37
+ - level.gain
38
+ - rest.scene
39
+ - rest.day
35
40
  - effort
36
41
  - miracle
37
42
  - influence