Merge pull request #22 from thehappyanarchist/THA-Dev
Bug Fixes, Option to disable HFH settings, and new Deployment packagemaster
						commit
						9bc9230012
					
				
							
								
								
									
										10
									
								
								README.md
								
								
								
								
							
							
						
						
									
										10
									
								
								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. | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							|  | @ -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", | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
|  | @ -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, | ||||
|  |  | |||
|  | @ -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; | ||||
|  |  | |||
|  | @ -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() | ||||
|   }); | ||||
| } | ||||
|  | @ -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" | ||||
| } | ||||
|  |  | |||
|  | @ -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": { | ||||
|  |  | |||
|  | @ -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' }}"> | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue