From 322814cbae08fbac997465ab3e38049ac1965e3b Mon Sep 17 00:00:00 2001 From: David Hudson Date: Thu, 2 Apr 2026 15:25:29 -0700 Subject: [PATCH] add lancer support --- CHANGELOG.md | 4 ++ README.md | 14 +++++++ docs/screenshot_lancer.jpg | Bin 0 -> 31969 bytes src/scripts/TokenNoteHoverHUD.js | 3 ++ src/scripts/systems/lancer.js | 65 +++++++++++++++++++++++++++++++ 5 files changed, 86 insertions(+) create mode 100644 docs/screenshot_lancer.jpg create mode 100644 src/scripts/systems/lancer.js diff --git a/CHANGELOG.md b/CHANGELOG.md index 260b3ad..bbd4799 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,10 @@ [Token Note Hover](https://foundryvtt.com/packages/token-note-hover) +## [4.0.10](https://github.com/jendave/token-note-hover/blob/main/CHANGELOG.md) (2026-03-23) + +* Added support for [LANCER](https://foundryvtt.com/packages/lancer). + ## [4.0.9](https://github.com/jendave/token-note-hover/blob/main/CHANGELOG.md) (2026-03-27) * Updated *Group* Actor type for [D&D 5E](https://foundryvtt.com/packages/dnd5e). diff --git a/README.md b/README.md index 6df672c..5b3b494 100644 --- a/README.md +++ b/README.md @@ -89,6 +89,7 @@ Many systems are directly supported by [Token Note Hover](https://foundryvtt.com * [Forbidden Lands](#forbidden-lands) * [GURPS 4th Edition Game Aid (Unofficial)](#gurps-4th-edition-game-aid-unofficial) * [Ironsworn/Starforged](#ironswornstarforged) +* [LANCER](https://foundryvtt.com/packages/lancer) * [Level Up: Advanced 5th Edition](#level-up-advanced-5th-edition) * [Mutant Year Zero](#mutant-year-zero) * [Old-School Essentials](#old-school-essentials) @@ -377,6 +378,19 @@ Then in a Character Actor, use the Template with the following fields: | **Starship** | Notes | | **Location** | Text entry area | +### LANCER + +[LANCER](https://foundryvtt.com/packages/lancer) + +![Screenshot](https://github.com/jendave/token-note-hover/blob/main/docs/screenshot_lancer.jpg?raw=true) + +| Actor Type | Note Location | +| -------------- | ------------- | +| **Deployable** | Details | +| **Mech** | [None] | +| **NPC** | Notes | +| **Pilot** | Notes | + ### Level Up: Advanced 5th Edition [Level Up: Advanced 5th Edition](https://foundryvtt.com/packages/a5e) diff --git a/docs/screenshot_lancer.jpg b/docs/screenshot_lancer.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1624e630b4163d3fead4c1d0b654a0600b8b59f7 GIT binary patch literal 31969 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

c|dj+c+BLC;P@uaV_|Kf8>aTo56A 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 literal 0 HcmV?d00001 diff --git a/src/scripts/TokenNoteHoverHUD.js b/src/scripts/TokenNoteHoverHUD.js index f09bf0d..d7ee6b5 100644 --- a/src/scripts/TokenNoteHoverHUD.js +++ b/src/scripts/TokenNoteHoverHUD.js @@ -36,6 +36,7 @@ import { wod5e } from './systems/wod5e.js'; import { universalTabletopSystem } from './systems/universal-tabletop-system.js'; import { starwarsffg } from './systems/starwarsffg.js'; import { sandbox } from './systems/sandbox.js'; +import { lancer } from './systems/lancer.js'; /** * A HUD extension that shows the Note preview @@ -180,6 +181,8 @@ export default class TokenNoteHoverHUD extends foundry.applications.hud.BasePlac tempContent = await starwarsffg(actor, displayImages); } else if (game.data.system.id === 'sandbox') { tempContent = await sandbox(actor, displayImages); + } else if (game.data.system.id === 'lancer') { + tempContent = await lancer(actor, displayImages); } diff --git a/src/scripts/systems/lancer.js b/src/scripts/systems/lancer.js new file mode 100644 index 0000000..c2f1b28 --- /dev/null +++ b/src/scripts/systems/lancer.js @@ -0,0 +1,65 @@ +import CONSTANTS from '../constants.js'; +import { processNotes } from "../textUtil.js"; + +export async function lancer(actor, displayImages) { + // Using a guard here looks cleaner + if (!actor) { + return null; + } + + const actorIsOwner = actor.isOwner ?? true; + + switch (actor.type) { + case "pilot": + if (game.settings.get(CONSTANTS.MODULE_ID, 'displayPC')) { + return await getCharacterNotes(displayImages, actor, actorIsOwner); + } else { + return null; + } + case "deployable": + if (game.settings.get(CONSTANTS.MODULE_ID, 'displayPC')) { + return await getDeployableNotes(displayImages, actor, actorIsOwner); + } else { + return null; + } + case "mech": + if (game.settings.get(CONSTANTS.MODULE_ID, 'displayPC')) { + return await getMechNotes(displayImages, actor, actorIsOwner); + } else { + return null; + } + case "npc": + if (game.settings.get(CONSTANTS.MODULE_ID, 'displayNPC')) { + return await getNpcNotes(displayImages, actor, actorIsOwner); + } else { + return null; + } + default: + return null; + } +} + +async function getCharacterNotes(displayImages, actor, actorIsOwner) { + return await processNotes(actor.system?.notes, actorIsOwner, displayImages); +} + +async function getDeployableNotes(displayImages, actor, actorIsOwner) { + return await processNotes(actor.system?.detail, actorIsOwner, displayImages); +} + +async function getMechNotes(displayImages, actor, actorIsOwner) { + return await processNotes(actor.system?.notes, actorIsOwner, displayImages); +} + +async function getNpcNotes(displayImages, actor, actorIsOwner) { + const publicNotes = ""; + const privateNotes = actor.system?.notes; + let notes = publicNotes; + + if (!game.settings.get(CONSTANTS.MODULE_ID, 'hidePrivateNotes') && game.user.isGM && privateNotes) { + notes += "

GM Notes
"; + notes += privateNotes; + } + + return await processNotes(notes, actorIsOwner, displayImages); +}