diff --git a/README.md b/README.md index 071e222..23a5300 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,9 @@ All the features you need to play ACKS in Foundry VTT. Forked off of Old School Essentials by U~Man and heavily modified. ## Features -Defaulted to exploding 20s in combat from HFH optional rules\ -Added BHR to the character sheet from HFH optional rules\ +Implemented ACKS encumbrance rules (uses coin weight instead of stone - 1000 coins to a stone)\ +Changed Ascending Armor Class to ACKS AC\ +Uncapped the dexterity and charisma bonuses\ Changed Ascending Armor Class to ACKS AC\ Uncapped the dexterity and charisma bonuses\ Implemented ACKS encumbrance rules (uses coin weight instead of stone - 1000 coins to a stone)\ @@ -13,7 +14,10 @@ Changed "Slow weapon" to subtract 1 from initiative instead of making the charac Added a HOLD TURN icon to the Combat Tracker to remind the judge that a player has held their action.\ Modified the encumbrance bar to reflect ACKS standard movement penalties while encumbered, and to show that on the bar\ Changed default monster saves to match ACKS numbers (actually makes monsters a bit less resistant overall)\ -Added Auran languages and removed alignment tongues +Added Auran languages and removed alignment tongues\ +### Optional +Added exploding 20s in combat from HFH optional rules\ +Added BHR to the character sheet from HFH optional rules ## License This Foundry VTT system requires ACKS Core Rules that you can find at http://autarch.co/buy-now. diff --git a/package/acks-v0.5.1.zip b/package/acks-v0.5.1.zip new file mode 100644 index 0000000..751e54a Binary files /dev/null and b/package/acks-v0.5.1.zip differ diff --git a/src/lang/en.json b/src/lang/en.json index d7ec9b6..f263a8f 100644 --- a/src/lang/en.json +++ b/src/lang/en.json @@ -103,6 +103,8 @@ "ACKS.HealthShort": "HP", "ACKS.HitDice": "Hit Dice", "ACKS.HitDiceShort": "HD", + "ACKS.BHR": "Base Healing Rate", + "ACKS.BHRShort": "BHR", "ACKS.movement.base": "Movement Rate", "ACKS.movement.short": "MV", @@ -137,8 +139,6 @@ "ACKS.AttacksShort": "ATT", "ACKS.Damage": "Damage", "ACKS.Spellcaster": "Spellcaster", - "ACKS.BHR": "Base Healing Rate", - "ACKS.BHRShort": "BHR", "ACKS.Language": "Language", "ACKS.SpokenLanguages": "Spoken Languages", @@ -188,6 +188,10 @@ "ACKS.Setting.MovementAuto": "Calculate Movement", "ACKS.Setting.SignificantTreasure": "Significant Treasure Weight", "ACKS.Setting.SignificantTreasureHint": "Weight at which treasure will reduce the movement, only useful for basic encumbrance", + "ACKS.Setting.Explode20": "HFH: Exploding attack throws", + "ACKS.Setting.Explode20Hint": "Heroic Fantasy Option: Attack throws explode on 20 - Critical if exceed target AC by 10", + "ACKS.Setting.BHR": "HFH: Base Healing Rate", + "ACKS.Setting.BHRHint": "Heroic Fantasy Option: Base Healing Rate per day varies by Max HP", "ACKS.items.Equip": "Equip", "ACKS.items.Unequip": "Unequip", diff --git a/src/module/actor/character-sheet.js b/src/module/actor/character-sheet.js index 2201c23..006af01 100644 --- a/src/module/actor/character-sheet.js +++ b/src/module/actor/character-sheet.js @@ -51,6 +51,7 @@ export class AcksActorSheetCharacter extends AcksActorSheet { data.config.ascendingAC = game.settings.get("acks", "ascendingAC"); data.config.initiative = game.settings.get("acks", "initiative") != "group"; data.config.encumbrance = game.settings.get("acks", "encumbranceOption"); + data.config.BHR = game.settings.get("acks", "bhr"); data.isNew = this.actor.isNew(); return data; diff --git a/src/module/actor/entity.js b/src/module/actor/entity.js index 965a332..8a2be22 100644 --- a/src/module/actor/entity.js +++ b/src/module/actor/entity.js @@ -451,7 +451,12 @@ export class AcksActor extends Actor { rollAttack(attData, options = {}) { const data = this.data.data; - const rollParts = ["1d20x="]; + let rollParts = ["1d20"]; + + if (game.settings.get("acks", "exploding20s")) { + rollParts = ["1d20x="]; + } + const dmgParts = []; let label = game.i18n.format("ACKS.roll.attacks", { name: this.data.name, diff --git a/src/module/dice.js b/src/module/dice.js index 1a46437..dbdc777 100644 --- a/src/module/dice.js +++ b/src/module/dice.js @@ -29,6 +29,11 @@ export class AcksDice { } else { result.isFailure = true; } + } else if (data.roll.type == "hitdice") { + // RESULT CAN BE NO LOWER THAN 1 + if (roll.total < 1) { + roll._total = 1; + } } else if (data.roll.type == "table") { // Reaction let table = data.roll.table; @@ -197,6 +202,11 @@ export class AcksDice { const roll = new Roll(parts.join("+"), data).roll(); const dmgRoll = new Roll(data.roll.dmg.join("+"), data).roll(); + // Add minimal damage of 1 + if (dmgRoll.total < 1) { + dmgRoll._total = 1; + } + // Convert the roll to a chat message and return the roll let rollMode = game.settings.get("core", "rollMode"); rollMode = form ? form.rollMode.value : rollMode; diff --git a/src/module/settings.js b/src/module/settings.js index bf69788..2ec5b61 100644 --- a/src/module/settings.js +++ b/src/module/settings.js @@ -20,7 +20,21 @@ export const registerSettings = function () { default: true, scope: "world", type: Boolean, + config: false, + onChange: _ => window.location.reload() + }); + + game.settings.register("acks", "encumbranceOption", { + name: game.i18n.localize("ACKS.Setting.Encumbrance"), + hint: game.i18n.localize("ACKS.Setting.EncumbranceHint"), + default: "detailed", + scope: "world", + type: String, config: true, + choices: { + detailed: "ACKS.Setting.EncumbranceDetailed", + complete: "ACKS.Setting.EncumbranceComplete", + }, onChange: _ => window.location.reload() }); @@ -33,29 +47,23 @@ export const registerSettings = function () { config: true, }); - game.settings.register("acks", "encumbranceOption", { - name: game.i18n.localize("ACKS.Setting.Encumbrance"), - hint: game.i18n.localize("ACKS.Setting.EncumbranceHint"), - default: "detailed", + game.settings.register("acks", "exploding20s", { + name: game.i18n.localize("ACKS.Setting.Explode20"), + hint: game.i18n.localize("ACKS.Setting.Explode20Hint"), + default: false, scope: "world", - type: String, + type: Boolean, config: true, - choices: { -// disabled: "ACKS.Setting.EncumbranceDisabled", -// basic: "ACKS.Setting.EncumbranceBasic", - detailed: "ACKS.Setting.EncumbranceDetailed", - complete: "ACKS.Setting.EncumbranceComplete", - }, onChange: _ => window.location.reload() }); -// game.settings.register("acks", "significantTreasure", { -// name: game.i18n.localize("ACKS.Setting.SignificantTreasure"), -// hint: game.i18n.localize("ACKS.Setting.SignificantTreasureHint"), -// default: 800, -// scope: "world", -// type: Number, -// config: true, -// onChange: _ => window.location.reload() -// }); -}; + game.settings.register("acks", "bhr", { + name: game.i18n.localize("ACKS.Setting.BHR"), + hint: game.i18n.localize("ACKS.Setting.BHRHint"), + default: false, + scope: "world", + type: Boolean, + config: true, + onChange: _ => window.location.reload() + }); +} \ No newline at end of file diff --git a/src/system.json b/src/system.json index 912d8ba..8b50b27 100644 --- a/src/system.json +++ b/src/system.json @@ -1,8 +1,8 @@ { "name": "acks", "title": "Adventurer Conqueror King System", - "description": "Play using the ACKS system", - "version": "0.5.0", + "description": "Play B/X or other OSR compatible content using the ACKS system", + "version": "0.5.1", "minimumCoreVersion": "0.6.2", "compatibleCoreVersion": "0.6.6", "templateVersion": 2, @@ -41,5 +41,5 @@ "gridUnits": "ft", "url": "https://github.com/thehappyanarchist/foundryacks", "manifest": "https://github.com/thehappyanarchist/foundryacks/raw/master/src/system.json", - "download": "https://github.com/thehappyanarchist/foundryacks/raw/master/package/acks-v0.5.0.zip" + "download": "https://github.com/thehappyanarchist/foundryacks/raw/master/package/acks-v0.5.1.zip" } diff --git a/src/template.json b/src/template.json index 7a68b19..faabd0a 100644 --- a/src/template.json +++ b/src/template.json @@ -38,19 +38,19 @@ }, "saves": { "death": { - "value": 15 + "value": 0 }, "wand": { - "value": 17 + "value": 0 }, "paralysis": { - "value": 16 + "value": 0 }, "breath": { - "value": 17 + "value": 0 }, "spell": { - "value": 18 + "value": 0 } }, "movement": { diff --git a/src/templates/actors/partials/character-attributes-tab.html b/src/templates/actors/partials/character-attributes-tab.html index e6d8174..e08e233 100644 --- a/src/templates/actors/partials/character-attributes-tab.html +++ b/src/templates/actors/partials/character-attributes-tab.html @@ -108,6 +108,7 @@ data-dtype="String" /> + {{#if config.BHR}}
  • {{ localize "ACKS.BHRShort" }} @@ -117,6 +118,7 @@ {{data.hp.bhr}}

  • + {{/if}} {{#if config.initiative}}