Merge pull request #22 from thehappyanarchist/THA-Dev

Bug Fixes, Option to disable HFH settings, and new Deployment package
master
thehappyanarchist 2020-09-24 20:02:53 -10:00 committed by GitHub
commit 9bc9230012
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 69 additions and 35 deletions

View File

@ -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.

BIN
package/acks-v0.5.1.zip Normal file

Binary file not shown.

View File

@ -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",

View File

@ -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;

View File

@ -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,

View File

@ -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;

View File

@ -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()
});
}

View File

@ -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"
}

View File

@ -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": {

View File

@ -108,6 +108,7 @@
data-dtype="String" />
</div>
</li>
{{#if config.BHR}}
<li class="attribute bhr">
<h4 class="attribute-name box-title" title="{{ localize 'ACKS.BHR' }}">
<a>{{ localize "ACKS.BHRShort" }}</a>
@ -117,6 +118,7 @@
{{data.hp.bhr}}
</div>
</li>
{{/if}}
{{#if config.initiative}}
<li class="attribute">
<h4 class="attribute-name box-title" title="{{ localize 'ACKS.Initiative' }}">