AutarchLLC / foundryvtt-acks-core

Adventurer Conqueror King System Imperial Imprint (ACKS II) core game module for the Foundry Virtual Tabletop.
https://autarch.co
Other
9 stars 3 forks source link

Findings from testing new Henchmen feature #63

Open ArcanistWill opened 1 month ago

ArcanistWill commented 1 month ago

Observations

  1. The game rules allow a Henchman to have their own Henchman. I did not test this yet.
  2. The Henchmen loyalty checks and Morale checks are super cool!

Bugs

  1. If I am trying to add an actor to my sheet to make them a Henchman, if that other character is not configured as a Henchman (Tweak menu), a very short error that just says "Henchman.Not" shows up. This should be made into a more useful explanation. Or else, see my suggested change below that would allow choosing whether to turn him into a Henchman.

  2. This came up when creating new actors needed to start testing Henchmen. When the GM used the Create Actor button to make a new Character, and clicked OK to confirm new actor, all the connected players and GM immediately get errors: a. The players immediately see a popup message about them not having access to the new actor. This is confusing because the players should not have knowledge of new actors yet. b. The GM also immediately gets console error but does not also see the player's error, just this appears in the console:

    foundry-esm.js:56497 Uncaught (in promise) Error: You must provide an _id for every object in the update data Array.
    [No packages detected]
    at #preUpdateDocumentArray (foundry-esm.js:56497:34)
    at async ClientDatabaseBackend._updateDocuments (foundry-esm.js:56469:7)
  3. There were 2 errors when trying to assign Henchmen by drag and drop onto the Employer sheet a. If the Actors did not have Prototype Token / Link Actor Data set, this drag and drop action failed. This part is not so much a bug but wow, this is not obvious! b. If the flag Prototype Token / Link Actor Data WAS enabled, then a different error happens:

    Error: You are accessing globalThis.duplicate which must now be accessed via foundry.utils.duplicate
    Deprecated since Version 12
    Backwards-compatible support will be removed in Version 14
    at Object.logCompatibilityWarning (foundry-esm.js:4609:19)
    at get (foundry-esm.js:66671:25)
    at AcksActor.addHenchman (entity.js:149:21)
    at AcksActorSheetCharacter._onDrop (actor-sheet.js:49:20)
    at DragDrop.callback (foundry.js:69298:42)
    at DragDrop._handleDrop (foundry.js:69349:17)
    logCompatibilityWarning @ foundry-esm.js:4621
    get @ foundry-esm.js:66671
    addHenchman @ entity.js:149
    _onDrop @ actor-sheet.js:49
    callback @ foundry.js:69298
    _handleDrop @ foundry.js:69349Understand this warning
    entity.js:56 MODCOMPUTE2 {retainer: {…}, hp: {…}, ac: {…}, aac: {…}, damage: {…}, …}aac: {value: -1, mod: 0, naked: -1, shield: 0}ac: {value: 10, mod: 0, naked: 10, shield: 0}adventuring: {dungeonbashing: 18, climb: 8, listening: 18, searching: 18, trapbreaking: 18}config: {movementAuto: true}damage: {mod: {…}}details: {biography: '', morale: 0, notes: '', class: 'Mage', title: 'The Weak', …}encumbrance: {pct: 0, max: 18, encumbered: false, value: 0}exploration: {ld: 18, od: 18, sd: 18, ft: 18, odMod: 26}fight: {healingrate: '1d3', mortalwounds: 0, cleaves: 0}henchmenList: ['Nb8xG4H3FdSi5TJ1']hp: {hd: '1d8', value: 4, max: 4, bhr: '1d3'}initiative: {value: -1, mod: 0}isSlow: falselanguages: {value: Array(0), literacy: 'ACKS.Literate', spoken: 'ACKS.NativePlus1'}movement: {base: 120, encounter: 40}movementacks: {exploration: 120, combat: 40, chargerun: 120, expedition: 24, stealth: 0, …}retainer: {enabled: false, loyalty: 0, wage: ''}save: {mod: 0}saves: {death: {…}, wand: {…}, paralysis: {…}, breath: {…}, spell: {…}, …}scores: {str: {…}, int: {…}, wis: {…}, dex: {…}, con: {…}, …}spells: {1: {…}, 2: {…}, 3: {…}, 4: {…}, 5: {…}, 6: {…}, enabled: true}surprise: {mod: 0, surpriseothers: 0, avoidsurprise: 0}thac0: {value: 19, bba: 0, throw: 10, mod: {…}}treasure: 0[[Prototype]]: Object
    actor-sheet.js:29 Actor sheet {cssClass: 'editable', editable: true, document: AcksActor, data: {…}, limited: false, …}
  4. A Henchman should not be able to be assigned to 2 people. If dragging an existing Henchman onto a different employer, the Henchman should be removed from the first employer. This means that the Henchman probably needs to have a reference back to his employer actor.

Issues - not quite bugs

  1. When making Morale checks, note there is more than 1 result table and the choice of which table is context-dependent. So the existing behavior is nice but only shows one table - it might be better either to show none of the tables' text result, or else show the results from both tables. This allows the player to pick the right result for their situation.

  2. It was a little confusing for the players figuring out how to assign Henchmen. Question - Is it possible to modify the Create Actor to add Henchman to the choices shown? Or for an existing character, it is confusing how to set it as a Henchman. I find it odd to do it through Tweaks since that is not obvious. We should probably leave that feature in the Tweaks dialog but make another change: Question - Is it possible to automatically enable the Henchman flag as part of dragging a character to make it a henchman? a. Drag a character onto another character's sheet b. A confirmation MessageBox displays: "Do you want to make {CharacterName} a Henchman of {EmployerName}?" Yes/No. c. If you pick Yes, then the Henchman flag is set on the subordinate and he is assigned to the Employer. d. If you pick No, nothing happens and both sheets are not modified.

Requested updates if possible

  1. Can you add an Employer field to Henchmen, and this field will appear when the Henchman tweak is set, and this will be filled in with the employer / owner's name?

  2. Can you make it so that if a player changes a Henchman data field, this will also update the summary of the Employer's Henchman page? For example if I change the Morale or Wage, the employer sheet did not update. Instead you have to close and re-open the employer character sheet to see the updated values. It's not a huge problem but it would be nice.

LeRatierBretonnien commented 1 month ago

About morale checks When making Morale checks, ... -> what is this second table ?

ArcanistWill commented 1 month ago

About morale checks When making Morale checks, ... -> what is this second table ?

I believe it is called the "Hireling Obedience" table at the top of page 167: image You will see a large number of modifiers that the judge would use to affect the overall roll.

As I read the description under that table, this is normally for use as a GM-only roll made by the GM to check Hireling response.

There is a potential that the character sheet tab might be better called "Hirelings" instead of "Henchmen" because there are 3 sub-types of Hirelings and Henchmen are one of 3. But we will leave it for now. I asked for an opinion from Archon.