feat: luck bonus, inventory slots bonus, multi-enhancements, magic skill modifier
Release Creation / build (release) Successful in 1m25s

- Add luck.bonus field to character DataModel; included in prepareDerivedData
   (luck.max = fate.rank + bonus); shown as editable +bonus field next to
   luck max in edit mode (same UX as grit bonus)

 - Add inventory.slotsBonus field to character DataModel; Equipment tab now
   shows an editable "Bonus Slots" input that adds to the calculated max slots
   (10 + Might×2 + bonus)

 - Replace single Enhancement <select> in spell cast dialog with a checkbox
   list; multiple enhancements can now be selected simultaneously — stress
   costs, pool penalties, and boolean flags (redDice, noStress) are aggregated
   across all active enhancements

 - Include skills.magic.modifier in basePool for both spell and miracle dialogs
   and in baseDice in rollSpellCast / rollMiracleCast; modifier is shown in
   the dialog pool-info line and in the chat card when non-zero

 - Fix: pool-reduction indicator in rollSpellCast now compares against
   intRank + magicRank + magicMod (was missing magicMod)
This commit is contained in:
2026-05-12 08:16:57 +02:00
parent f67d9079dd
commit 0381e8e024
21 changed files with 192 additions and 39 deletions
+2
View File
@@ -2,6 +2,8 @@
<div class="slots-counter">
<span class="slots-label">{{localize "OATHHAMMER.Label.ItemSlots"}}</span>
<span class="slots-value {{#if slotsOver}}slots-over{{/if}}">{{slotsUsed}} / {{slotsMax}}</span>
<span class="slots-bonus-label">{{localize "OATHHAMMER.Label.SlotsBonus"}}</span>
<input type="number" name="system.inventory.slotsBonus" value="{{system.inventory.slotsBonus}}" class="slots-bonus-input">
</div>
<fieldset class="currency-bar">
<legend>{{localize "OATHHAMMER.Label.Currency"}}</legend>
+7 -1
View File
@@ -72,7 +72,13 @@
<a data-action="adjustLuck" data-delta="1" class="luck-btn">+</a>
</div>
<span class="res-sep">/</span>
{{formInput systemFields.luck.fields.max value=system.luck.max name="system.luck.max" disabled=isPlayMode}}
<span class="luck-max-group">
{{formInput systemFields.luck.fields.max value=system.luck.max name="system.luck.max" disabled=true}}
{{#unless isPlayMode}}
<span class="res-bonus-label">+</span>
{{formInput systemFields.luck.fields.bonus value=system.luck.bonus name="system.luck.bonus" class="res-bonus-input"}}
{{/unless}}
</span>
</div>
<div class="character-resource">
<span class="resource-label">{{localize "OATHHAMMER.Label.Movement"}}</span>
+1
View File
@@ -32,6 +32,7 @@
<div class="pool-info-line">
{{localize "OATHHAMMER.Skill.Magic"}} ({{localize "OATHHAMMER.Attribute.Willpower"}} {{wpRank}})
+ {{localize "OATHHAMMER.Label.SkillRank"}} {{magicRank}}
{{#if magicModDisplay}} {{localize "OATHHAMMER.Label.SkillModifier"}} {{magicModDisplay}}{{/if}}
= <strong>{{basePool}}d6</strong>
</div>
+11 -5
View File
@@ -31,6 +31,7 @@
<div class="pool-info-line">
{{localize "OATHHAMMER.Skill.Magic"}} ({{localize "OATHHAMMER.Attribute.Intelligence"}} {{intRank}})
+ {{localize "OATHHAMMER.Label.SkillRank"}} {{magicRank}}
{{#if magicModDisplay}} {{localize "OATHHAMMER.Label.SkillModifier"}} {{magicModDisplay}}{{/if}}
= <strong>{{basePool}}d6</strong>
</div>
@@ -52,11 +53,16 @@
<span class="roll-option-hint">{{localize "OATHHAMMER.Dialog.DiceColorHint"}}</span>
</div>
<div class="roll-option-row">
<label>{{localize "OATHHAMMER.Dialog.Enhancement"}}</label>
<select name="enhancement" class="enhancement-select">
{{#each enhancementOptions}}<option value="{{value}}"{{#if selected}} selected{{/if}}>{{label}}</option>{{/each}}
</select>
<div class="roll-option-row roll-option-enhancements">
<label class="enhancements-header">{{localize "OATHHAMMER.Dialog.Enhancement"}}</label>
<div class="enhancements-list">
{{#each enhancementOptions}}
<div class="enhancement-item">
<input type="checkbox" id="enh_{{value}}" name="enh_{{value}}" value="true">
<label for="enh_{{value}}" class="enh-name">{{label}}</label>
</div>
{{/each}}
</div>
</div>
{{#if isElemental}}