mixin savingThrow(longName, shortName, abilityName, abilityShortName) - var i18nSave = longName.toLowerCase(); var i18nAbility = abilityName.toLowerCase(); tr td.blackBox: .rollButton .saveName(data-i18n=i18nSave)= longName .abilityName(data-i18n=i18nAbility)= abilityName +rollButton(shortName, shortName + '_notes') td: +readOnlyBox(shortName) td: .mathOperator = td: +fieldBox('number', shortName + '_base') td: .mathOperator + td: +readOnlyBox(abilityShortName + '_mod') td: .mathOperator + td: +fieldBox('number', shortName + '_equipment') td: .mathOperator + td: +fieldBox('number', shortName + '_misc') td: .mathOperator + td: +fieldBox('number', shortName + '_temp') td: +labelledUnderlined('Conditional Modifiers', { i18n: 'conditional-modifiers' })(style='margin-left: 1em; width: 100%;'): +input('text', shortName + '_notes') table.savingThrows thead tr th(data-i18n='saving-throws') Saving Throws th(data-i18n='total') Total th th(data-i18n='base-save') Base Save th th(data-i18n='ability-mod') Ability Mod th th(data-i18n='equipment') Equipment th th(data-i18n='misc-plus-minus') Misc +/- th th(data-i18n='temp-plus-minus') Temp +/- th(style='width: 30%;') tbody +savingThrow('Fortitude', 'fort', 'Constitution', 'con') +savingThrow('Reflex', 'ref', 'Dexterity', 'dex') +savingThrow('Will', 'will', 'Wisdom', 'wis')