A module of our own for Fabula Ultima campaigns
Find a file
trotFunky 0d15f6bf34 UI: Fix boss bar visibility for hidden tokens
The "refreshToken" hook was already used to hide boss bars for other
clients when updating the bar visibility.
However, this did not apply when making the token itself appear, as
it would not trigger a re-draw.

Update `should_have_boss_bar()` to check if the token is visible or not
and update our "refreshToken" hook to trigger a bar refresh for tokens
that should have a boss bar, but are not present in the tracker.

This fixes boss bars being shown for hidden tokens, and allows them
to appear when their become newly visible.

Early exit of "refreshToken" if the token is a clone, as we shouldn't have
anything to do with them here.
2025-08-21 17:01:44 +01:00
assets Fortune: Introduce fortune display 2025-07-06 21:32:25 +01:00
lang Fortune: Check recipient count for GM dialog 2025-08-13 22:37:05 +01:00
packs/macros Compendia: Update Alchemy macro to use module code 2025-08-13 22:56:30 +01:00
scripts UI: Fix boss bar visibility for hidden tokens 2025-08-21 17:01:44 +01:00
styles Macros: Incorporate Alchemy macro in module code 2025-08-13 21:41:33 +01:00
.gitattributes Initial commit - v0.1.0 2025-05-12 22:55:13 +01:00
.gitignore Compendia: Update Alchemy macro to use module code 2025-08-13 22:56:30 +01:00
LICENSE Initial commit - v0.1.0 2025-05-12 22:55:13 +01:00
module.json UI: Fix boss bar visibility for hidden tokens 2025-08-21 17:01:44 +01:00
README.md UI: Fix boss bar visibility for hidden tokens 2025-08-21 17:01:44 +01:00

The Mill's Fabula - v0.7.1

This little FoundryVTT module is a collection of compendiums and functionalities to power our Fabula Ultima campaigns.

Compatibility

This is only compatible with Foundry v12 currently.

Installation

Currently, this can only be installed via manifest file, using the following URL :

https://git.tfk-astrodome.net/trotFunky/TheMillsFabula/raw/branch/release/module.json

Features

This module is an aggregate of different things that are useful for us or that the GM wanted to play with, so they don't necessarily connect with each other and can be disabled if wanted.

They are described below in their own sections.

Combat border

This part of the module adds a dynamic border around player tokens, which changes during combat.

The border is always visible, but after a player has taken their turn it will switch to a different border, highlighting the tokens that have played for this combat turn.

The module supports going back and forth in the combat rounds, as well as going back in the turn order. (Though because of limitations of the Fabula Ultima system, does not allow going forward in the turn order.)

Settings

  • An image to use for the default/idle border
  • An image to use for the took turn/played/inactive border

Token UI adjustments

Given that we add a border on the tokens, it conflicts with the base attribute bars and status effect indicators which are drawn over the token's square.
The token UI adjustments move the two attribute bars below the token, outside its space, first HP then mana.
As this is where the nameplate of the token should be, move it above the token instead.
The status effect indicators are moved entirely outside the token space as well, to the right, but as it is not useful for NPCs this is only done for PC tokens.

For "Champion" NPC tokens, if their health bar is visible the token UI adjustments will detach it from the token and turn it into a "boss bar" centered at the bottom of the screen, in a Dark Souls fashion.
The nameplate will also be moved there if both it and the health bar are shown.
Multiple bosses are supported at the same time and the bars will update their positions dynamically. Take care though, as it can quickly cover the screen up !

Limitations

  • The token's detailed UI when right-clicking will overlap the bars in their new positions (it already overlapped the name)
  • The current implementation relies on monkey patching, which make it vulnerable to compatibility issues with other modules manipulating the same methods.
  • The "boss bars" do not refresh when the screen size changes, only when created.

Fortune integration

In our game, "Fortune" is a key currency in the world.
This adds an interactable display in the character sheets, allowing it to be tracked, and in the party sheet, for a nice overview.

The value is stored in flags, and will not be lost when disabling the module or option.

Similarly to the Fabula header, the Fortune header can be clicked, allowing players to send Fortune to other player characters.
The whole transaction and updating is automated for both sides.

GMs have a new tool added under the Fabula Ultima system toolbar on the left that allows them to distribute Fortune to players.
The dialog that pops up is very similar, but allows choosing multiple recipients at once (which can be pre-filled depending on the needs of the GM) and has no maximum limit.

Compendia

  • The only thing in the compendium pack is a macro automating the tinkerer's alchemy potions, allowing to choose how many PIs to spend, how to allocate the results, previews and a final chat message with the results.

Dependencies

Modules:

  • socketlib

System:

  • Fabula Ultima

License

The code present in this repository is licensed under the Mozilla Public License 2.0.

Assets that we created in this repository are licensed under CC-BY-SA 4.0, unless otherwise specified.