Combat tab for v13
All checks were successful
Release Creation / build (release) Successful in 1m20s
All checks were successful
Release Creation / build (release) Successful in 1m20s
This commit is contained in:
parent
b4d6616cb4
commit
7a06e8a5c9
@ -13,6 +13,16 @@
|
|||||||
--font-secondary: "BaskervilleBold", serif;
|
--font-secondary: "BaskervilleBold", serif;
|
||||||
--logo-standard: url("../assets/ui/lf_logo_small_02.webp");
|
--logo-standard: url("../assets/ui/lf_logo_small_02.webp");
|
||||||
}
|
}
|
||||||
|
.initiative-area {
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
.initiative-area input {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
|
}
|
||||||
#logo {
|
#logo {
|
||||||
content: var(--logo-standard);
|
content: var(--logo-standard);
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"COMBAT": {
|
"COMBAT": {
|
||||||
"Round": "Second",
|
"Round": "Second {round}",
|
||||||
"Rounds": "Seconds",
|
"Rounds": "Seconds",
|
||||||
"RoundNext": "Next second"
|
"RoundNext": "Next second"
|
||||||
},
|
},
|
||||||
|
@ -2,17 +2,53 @@
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
export class LethalFantasyCombatTracker extends foundry.applications.sidebar.tabs.CombatTracker {
|
export class LethalFantasyCombatTracker extends foundry.applications.sidebar.tabs.CombatTracker {
|
||||||
|
|
||||||
async getData(options) {
|
static PARTS = {
|
||||||
let data = await super.getData(options);
|
"header": {
|
||||||
for (let u of data.turns) {
|
"template": "systems/fvtt-lethal-fantasy/templates/combat-tracker-header-v2.hbs"
|
||||||
|
},
|
||||||
|
"tracker": {
|
||||||
|
"template": "systems/fvtt-lethal-fantasy/templates/combat-tracker-v2.hbs"
|
||||||
|
},
|
||||||
|
"footer": {
|
||||||
|
"template": "systems/fvtt-lethal-fantasy/templates/combat-tracker-footer-v2.hbs"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static DEFAULT_OPTIONS = foundry.utils.mergeObject(super.DEFAULT_OPTIONS, {
|
||||||
|
actions: {
|
||||||
|
initiativePlus: LethalFantasyCombatTracker.#initiativePlus,
|
||||||
|
initiativeMinus: LethalFantasyCombatTracker.#initiativeMinus,
|
||||||
|
},
|
||||||
|
});
|
||||||
|
|
||||||
|
async _prepareContext(options) {
|
||||||
|
let data = await super._prepareContext(options);
|
||||||
|
console?.log("Combat Tracker Data", data);
|
||||||
|
/*for (let u of data.turns) {
|
||||||
let c = game.combat.combatants.get(u.id);
|
let c = game.combat.combatants.get(u.id);
|
||||||
u.progressionCount = c.system.progressionCount
|
u.progressionCount = c.system.progressionCount
|
||||||
u.isMonster = c.actor.type === "monster"
|
u.isMonster = c.actor.type === "monster"
|
||||||
}
|
}
|
||||||
console.log("Combat Data", data);
|
console.log("Combat Data", data);*/
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static #initiativePlus(ev) {
|
||||||
|
ev.preventDefault();
|
||||||
|
let cId = ev.target.closest(".combatant").dataset.combatantId;
|
||||||
|
let c = game.combat.combatants.get(cId);
|
||||||
|
c.update({ 'initiative': c.initiative + 1 });
|
||||||
|
console.log("Initiative Plus");
|
||||||
|
}
|
||||||
|
|
||||||
|
static #initiativeMinus(ev) {
|
||||||
|
ev.preventDefault();
|
||||||
|
let cId = ev.target.closest(".combatant").dataset.combatantId;
|
||||||
|
let c = game.combat.combatants.get(cId);
|
||||||
|
let newInit = Math.max(c.initiative - 1, 0);
|
||||||
|
c.update({ 'initiative': newInit });
|
||||||
|
}
|
||||||
|
|
||||||
activateListeners(html) {
|
activateListeners(html) {
|
||||||
super.activateListeners(html);
|
super.activateListeners(html);
|
||||||
// Display Combat settings
|
// Display Combat settings
|
||||||
@ -21,7 +57,6 @@ export class LethalFantasyCombatTracker extends foundry.applications.sidebar.tab
|
|||||||
let cId = ev.currentTarget.closest(".combatant").dataset.combatantId;
|
let cId = ev.currentTarget.closest(".combatant").dataset.combatantId;
|
||||||
let c = game.combat.combatants.get(cId);
|
let c = game.combat.combatants.get(cId);
|
||||||
c.update({ 'initiative': c.initiative + 1 });
|
c.update({ 'initiative': c.initiative + 1 });
|
||||||
console.log("Initiative Plus");
|
|
||||||
});
|
});
|
||||||
|
|
||||||
html.find(".initiative-minus").click(ev => {
|
html.find(".initiative-minus").click(ev => {
|
||||||
@ -160,10 +195,10 @@ export class LethalFantasyCombat extends Combat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
for (let c of this.combatants) {
|
for (let c of this.combatants) {
|
||||||
if ( nextRound >= c.initiative) {
|
if (nextRound >= c.initiative) {
|
||||||
let user = game.users.find(u => u.active && u.character && u.character.id === c.actor.id);
|
let user = game.users.find(u => u.active && u.character && u.character.id === c.actor.id);
|
||||||
if (user?.hasPlayerOwner) {
|
if (user?.hasPlayerOwner) {
|
||||||
game.socket.emit(`system.${SYSTEM.id}`, { type: "rollProgressionDice", progressionCount: c.system.progressionCount+1, actorId: c.actor.id, combatId: this.id, combatantId: c.id });
|
game.socket.emit(`system.${SYSTEM.id}`, { type: "rollProgressionDice", progressionCount: c.system.progressionCount + 1, actorId: c.actor.id, combatId: this.id, combatantId: c.id });
|
||||||
} else {
|
} else {
|
||||||
user = game.users.find(u => u.active && u.isGM);
|
user = game.users.find(u => u.active && u.isGM);
|
||||||
c.actor.system.rollProgressionDice(this.id, c.id);
|
c.actor.system.rollProgressionDice(this.id, c.id);
|
||||||
|
@ -238,7 +238,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
|||||||
|
|
||||||
async rollProgressionDice(combatId, combatantId) {
|
async rollProgressionDice(combatId, combatantId) {
|
||||||
|
|
||||||
const rollModes = Object.fromEntries(Object.entries(CONFIG.Dice.rollModes).map(([key, value]) => [key, game.i18n.localize(value)]))
|
const rollModes = foundry.utils.duplicate(CONFIG.Dice.rollModes)
|
||||||
const fieldRollMode = new foundry.data.fields.StringField({
|
const fieldRollMode = new foundry.data.fields.StringField({
|
||||||
choices: rollModes,
|
choices: rollModes,
|
||||||
blank: false,
|
blank: false,
|
||||||
|
@ -1 +1 @@
|
|||||||
MANIFEST-000336
|
MANIFEST-000348
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-09:18:06.447327 7f5ccd7fa6c0 Recovering log #334
|
2025/05/29-16:36:11.138560 7f53e4df86c0 Recovering log #346
|
||||||
2025/05/14-09:18:06.457498 7f5ccd7fa6c0 Delete type=3 #332
|
2025/05/29-16:36:11.150394 7f53e4df86c0 Delete type=3 #344
|
||||||
2025/05/14-09:18:06.457555 7f5ccd7fa6c0 Delete type=0 #334
|
2025/05/29-16:36:11.150472 7f53e4df86c0 Delete type=0 #346
|
||||||
2025/05/14-10:01:12.490342 7f5ccb7ff6c0 Level-0 table #339: started
|
2025/05/29-18:48:12.764595 7f53df3ff6c0 Level-0 table #351: started
|
||||||
2025/05/14-10:01:12.490385 7f5ccb7ff6c0 Level-0 table #339: 0 bytes OK
|
2025/05/29-18:48:12.764652 7f53df3ff6c0 Level-0 table #351: 0 bytes OK
|
||||||
2025/05/14-10:01:12.496360 7f5ccb7ff6c0 Delete type=0 #337
|
2025/05/29-18:48:12.777058 7f53df3ff6c0 Delete type=0 #349
|
||||||
2025/05/14-10:01:12.515162 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.800778 7f53df3ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-10:01:12.515209 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.800877 7f53df3ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-07:47:09.475124 7f5ccd7fa6c0 Recovering log #330
|
2025/05/22-18:45:28.754313 7f53737fe6c0 Recovering log #342
|
||||||
2025/05/14-07:47:09.486681 7f5ccd7fa6c0 Delete type=3 #328
|
2025/05/22-18:45:28.804653 7f53737fe6c0 Delete type=3 #340
|
||||||
2025/05/14-07:47:09.486812 7f5ccd7fa6c0 Delete type=0 #330
|
2025/05/22-18:45:28.804783 7f53737fe6c0 Delete type=0 #342
|
||||||
2025/05/14-08:06:15.866972 7f5ccb7ff6c0 Level-0 table #335: started
|
2025/05/22-19:43:04.046497 7f53723ff6c0 Level-0 table #347: started
|
||||||
2025/05/14-08:06:15.867049 7f5ccb7ff6c0 Level-0 table #335: 0 bytes OK
|
2025/05/22-19:43:04.046522 7f53723ff6c0 Level-0 table #347: 0 bytes OK
|
||||||
2025/05/14-08:06:15.873425 7f5ccb7ff6c0 Delete type=0 #333
|
2025/05/22-19:43:04.084205 7f53723ff6c0 Delete type=0 #345
|
||||||
2025/05/14-08:06:15.893680 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.153359 7f53723ff6c0 Manual compaction at level-0 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-08:06:15.893803 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.153400 7f53723ff6c0 Manual compaction at level-1 from '!folders!ATr9wZhg5uTVTksM' @ 72057594037927935 : 1 .. '!items!zw9RQocTdz3HRjZK' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000335
|
MANIFEST-000347
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-09:18:06.461139 7f5ccdffb6c0 Recovering log #333
|
2025/05/29-16:36:11.158130 7f53e5dfa6c0 Recovering log #345
|
||||||
2025/05/14-09:18:06.471748 7f5ccdffb6c0 Delete type=3 #331
|
2025/05/29-16:36:11.168794 7f53e5dfa6c0 Delete type=3 #343
|
||||||
2025/05/14-09:18:06.471810 7f5ccdffb6c0 Delete type=0 #333
|
2025/05/29-16:36:11.168968 7f53e5dfa6c0 Delete type=0 #345
|
||||||
2025/05/14-10:01:12.509221 7f5ccb7ff6c0 Level-0 table #338: started
|
2025/05/29-18:48:12.777345 7f53df3ff6c0 Level-0 table #350: started
|
||||||
2025/05/14-10:01:12.509244 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
2025/05/29-18:48:12.777387 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
|
||||||
2025/05/14-10:01:12.515073 7f5ccb7ff6c0 Delete type=0 #336
|
2025/05/29-18:48:12.788225 7f53df3ff6c0 Delete type=0 #348
|
||||||
2025/05/14-10:01:12.515202 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.800802 7f53df3ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-10:01:12.515252 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.800914 7f53df3ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-07:47:09.493325 7f5ccc7f86c0 Recovering log #329
|
2025/05/22-18:45:28.835173 7f5373fff6c0 Recovering log #341
|
||||||
2025/05/14-07:47:09.503988 7f5ccc7f86c0 Delete type=3 #327
|
2025/05/22-18:45:28.894795 7f5373fff6c0 Delete type=3 #339
|
||||||
2025/05/14-07:47:09.504090 7f5ccc7f86c0 Delete type=0 #329
|
2025/05/22-18:45:28.894867 7f5373fff6c0 Delete type=0 #341
|
||||||
2025/05/14-08:06:15.873602 7f5ccb7ff6c0 Level-0 table #334: started
|
2025/05/22-19:43:04.009442 7f53723ff6c0 Level-0 table #346: started
|
||||||
2025/05/14-08:06:15.873653 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
2025/05/22-19:43:04.009522 7f53723ff6c0 Level-0 table #346: 0 bytes OK
|
||||||
2025/05/14-08:06:15.879920 7f5ccb7ff6c0 Delete type=0 #332
|
2025/05/22-19:43:04.046375 7f53723ff6c0 Delete type=0 #344
|
||||||
2025/05/14-08:06:15.893720 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.153344 7f53723ff6c0 Manual compaction at level-0 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-08:06:15.893853 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.153392 7f53723ff6c0 Manual compaction at level-1 from '!folders!yPWGvxHJbDNHVSnY' @ 72057594037927935 : 1 .. '!items!zjvGljrLk5SshC9D' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000335
|
MANIFEST-000347
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-09:18:06.433768 7f5ccc7f86c0 Recovering log #333
|
2025/05/29-16:36:11.123463 7f53e55f96c0 Recovering log #345
|
||||||
2025/05/14-09:18:06.444450 7f5ccc7f86c0 Delete type=3 #331
|
2025/05/29-16:36:11.133586 7f53e55f96c0 Delete type=3 #343
|
||||||
2025/05/14-09:18:06.444513 7f5ccc7f86c0 Delete type=0 #333
|
2025/05/29-16:36:11.133663 7f53e55f96c0 Delete type=0 #345
|
||||||
2025/05/14-10:01:12.502915 7f5ccb7ff6c0 Level-0 table #338: started
|
2025/05/29-18:48:12.753680 7f53df3ff6c0 Level-0 table #350: started
|
||||||
2025/05/14-10:01:12.502947 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
2025/05/29-18:48:12.753732 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
|
||||||
2025/05/14-10:01:12.509102 7f5ccb7ff6c0 Delete type=0 #336
|
2025/05/29-18:48:12.764334 7f53df3ff6c0 Delete type=0 #348
|
||||||
2025/05/14-10:01:12.515190 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.800724 7f53df3ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-10:01:12.515243 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.800854 7f53df3ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-07:47:09.459336 7f5ccdffb6c0 Recovering log #329
|
2025/05/22-18:45:28.668409 7f5378bfa6c0 Recovering log #341
|
||||||
2025/05/14-07:47:09.470303 7f5ccdffb6c0 Delete type=3 #327
|
2025/05/22-18:45:28.725273 7f5378bfa6c0 Delete type=3 #339
|
||||||
2025/05/14-07:47:09.470418 7f5ccdffb6c0 Delete type=0 #329
|
2025/05/22-18:45:28.725349 7f5378bfa6c0 Delete type=0 #341
|
||||||
2025/05/14-08:06:15.886675 7f5ccb7ff6c0 Level-0 table #334: started
|
2025/05/22-19:43:04.084321 7f53723ff6c0 Level-0 table #346: started
|
||||||
2025/05/14-08:06:15.886731 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
2025/05/22-19:43:04.084343 7f53723ff6c0 Level-0 table #346: 0 bytes OK
|
||||||
2025/05/14-08:06:15.893424 7f5ccb7ff6c0 Delete type=0 #332
|
2025/05/22-19:43:04.122081 7f53723ff6c0 Delete type=0 #344
|
||||||
2025/05/14-08:06:15.893775 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.153372 7f53723ff6c0 Manual compaction at level-0 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-08:06:15.893909 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.153416 7f53723ff6c0 Manual compaction at level-1 from '!folders!7j8H7DbmBb9Uza2X' @ 72057594037927935 : 1 .. '!items!zt8s7564ep1La4XQ' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000035
|
MANIFEST-000047
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-09:18:06.487926 7f5ccc7f86c0 Recovering log #33
|
2025/05/29-16:36:11.187985 7f53e4df86c0 Recovering log #45
|
||||||
2025/05/14-09:18:06.497838 7f5ccc7f86c0 Delete type=3 #31
|
2025/05/29-16:36:11.199498 7f53e4df86c0 Delete type=3 #43
|
||||||
2025/05/14-09:18:06.497894 7f5ccc7f86c0 Delete type=0 #33
|
2025/05/29-16:36:11.199566 7f53e4df86c0 Delete type=0 #45
|
||||||
2025/05/14-10:01:12.535301 7f5ccb7ff6c0 Level-0 table #38: started
|
2025/05/29-18:48:12.801134 7f53df3ff6c0 Level-0 table #50: started
|
||||||
2025/05/14-10:01:12.535349 7f5ccb7ff6c0 Level-0 table #38: 0 bytes OK
|
2025/05/29-18:48:12.801185 7f53df3ff6c0 Level-0 table #50: 0 bytes OK
|
||||||
2025/05/14-10:01:12.541664 7f5ccb7ff6c0 Delete type=0 #36
|
2025/05/29-18:48:12.810101 7f53df3ff6c0 Delete type=0 #48
|
||||||
2025/05/14-10:01:12.541942 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.859825 7f53df3ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-10:01:12.541971 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.859922 7f53df3ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-07:47:09.521604 7f5ccd7fa6c0 Recovering log #29
|
2025/05/22-18:45:28.985810 7f5372ffd6c0 Recovering log #41
|
||||||
2025/05/14-07:47:09.533204 7f5ccd7fa6c0 Delete type=3 #27
|
2025/05/22-18:45:29.040662 7f5372ffd6c0 Delete type=3 #39
|
||||||
2025/05/14-07:47:09.533353 7f5ccd7fa6c0 Delete type=0 #29
|
2025/05/22-18:45:29.040742 7f5372ffd6c0 Delete type=0 #41
|
||||||
2025/05/14-08:06:15.894136 7f5ccb7ff6c0 Level-0 table #34: started
|
2025/05/22-19:43:04.281148 7f53723ff6c0 Level-0 table #46: started
|
||||||
2025/05/14-08:06:15.894209 7f5ccb7ff6c0 Level-0 table #34: 0 bytes OK
|
2025/05/22-19:43:04.281205 7f53723ff6c0 Level-0 table #46: 0 bytes OK
|
||||||
2025/05/14-08:06:15.900873 7f5ccb7ff6c0 Delete type=0 #32
|
2025/05/22-19:43:04.315875 7f53723ff6c0 Delete type=0 #44
|
||||||
2025/05/14-08:06:15.921517 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.316126 7f53723ff6c0 Manual compaction at level-0 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-08:06:15.921613 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.366588 7f53723ff6c0 Manual compaction at level-1 from '!folders!37mu4dxsSuftlnmP' @ 72057594037927935 : 1 .. '!items!zKOpU34oLziGJW6y' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -1 +1 @@
|
|||||||
MANIFEST-000335
|
MANIFEST-000347
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-09:18:06.475503 7f5cccff96c0 Recovering log #333
|
2025/05/29-16:36:11.172412 7f53e55f96c0 Recovering log #345
|
||||||
2025/05/14-09:18:06.485731 7f5cccff96c0 Delete type=3 #331
|
2025/05/29-16:36:11.183464 7f53e55f96c0 Delete type=3 #343
|
||||||
2025/05/14-09:18:06.485791 7f5cccff96c0 Delete type=0 #333
|
2025/05/29-16:36:11.183540 7f53e55f96c0 Delete type=0 #345
|
||||||
2025/05/14-10:01:12.496479 7f5ccb7ff6c0 Level-0 table #338: started
|
2025/05/29-18:48:12.788378 7f53df3ff6c0 Level-0 table #350: started
|
||||||
2025/05/14-10:01:12.496503 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
2025/05/29-18:48:12.788406 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
|
||||||
2025/05/14-10:01:12.502768 7f5ccb7ff6c0 Delete type=0 #336
|
2025/05/29-18:48:12.800425 7f53df3ff6c0 Delete type=0 #348
|
||||||
2025/05/14-10:01:12.515177 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.800827 7f53df3ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-10:01:12.515216 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
2025/05/29-18:48:12.800943 7f53df3ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
2025/05/14-07:47:09.507023 7f5ccdffb6c0 Recovering log #329
|
2025/05/22-18:45:28.912541 7f5378bfa6c0 Recovering log #341
|
||||||
2025/05/14-07:47:09.517849 7f5ccdffb6c0 Delete type=3 #327
|
2025/05/22-18:45:28.969080 7f5378bfa6c0 Delete type=3 #339
|
||||||
2025/05/14-07:47:09.517975 7f5ccdffb6c0 Delete type=0 #329
|
2025/05/22-18:45:28.969151 7f5378bfa6c0 Delete type=0 #341
|
||||||
2025/05/14-08:06:15.880220 7f5ccb7ff6c0 Level-0 table #334: started
|
2025/05/22-19:43:04.122198 7f53723ff6c0 Level-0 table #346: started
|
||||||
2025/05/14-08:06:15.880293 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
2025/05/22-19:43:04.122219 7f53723ff6c0 Level-0 table #346: 0 bytes OK
|
||||||
2025/05/14-08:06:15.886487 7f5ccb7ff6c0 Delete type=0 #332
|
2025/05/22-19:43:04.153184 7f53723ff6c0 Delete type=0 #344
|
||||||
2025/05/14-08:06:15.893747 7f5ccb7ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.153383 7f53723ff6c0 Manual compaction at level-0 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||||
2025/05/14-08:06:15.893881 7f5ccb7ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
2025/05/22-19:43:04.153407 7f53723ff6c0 Manual compaction at level-1 from '!folders!mnO9OzE7BEE2KDfh' @ 72057594037927935 : 1 .. '!items!zkK6ixtCsCw3RH9X' @ 0 : 0; will stop at (end)
|
||||||
|
Binary file not shown.
@ -6,6 +6,17 @@
|
|||||||
--logo-standard: url("../assets/ui/lf_logo_small_02.webp");
|
--logo-standard: url("../assets/ui/lf_logo_small_02.webp");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.initiative-area {
|
||||||
|
min-width: 8rem;
|
||||||
|
max-width: 8rem;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
input {
|
||||||
|
min-width: 3rem;
|
||||||
|
max-width: 3rem;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
#logo {
|
#logo {
|
||||||
content: var(--logo-standard);
|
content: var(--logo-standard);
|
||||||
width: 50px;
|
width: 50px;
|
||||||
|
39
templates/combat-tracker-footer-v2.hbs
Normal file
39
templates/combat-tracker-footer-v2.hbs
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
<nav class="combat-controls" data-tooltip-direction="UP">
|
||||||
|
{{~#if hasCombat~}}
|
||||||
|
|
||||||
|
{{!-- GM Controls --}}
|
||||||
|
{{#if user.isGM}}
|
||||||
|
{{#if combat.round}}
|
||||||
|
<!-- <button type="button" class="inline-control combat-control icon fa-solid fa-backward-step"
|
||||||
|
data-action="previousRound" data-tooltip aria-label="{{ localize "COMBAT.RoundPrev" }}"></button>
|
||||||
|
<button type="button" class="inline-control combat-control icon fa-solid fa-arrow-left" data-action="previousTurn"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.TurnPrev" }}"></button> -->
|
||||||
|
<button type="button" class="combat-control combat-control-lg" data-action="endCombat">
|
||||||
|
<i class="fa-solid fa-xmark" inert></i>
|
||||||
|
<span>{{ localize "COMBAT.End" }}</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
<!-- <button type="button" class="inline-control combat-control icon fa-solid fa-arrow-right" data-action="nextTurn"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.TurnNext" }}"></button> -->
|
||||||
|
<button type="button" class="inline-control combat-control icon fa-solid fa-forward-step" data-action="nextRound"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.RoundNext" }}"></button>
|
||||||
|
{{else}}
|
||||||
|
<button type="button" class="combat-control combat-control-lg" data-action="startCombat">
|
||||||
|
<i class="fa-solid fa-swords" inert></i>
|
||||||
|
<span>{{ localize "COMBAT.Begin" }}</span>
|
||||||
|
</button>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!-- Active Player Controls --}}
|
||||||
|
{{else if control}}
|
||||||
|
<!-- <button type="button" class="inline-control combat-control icon fa-solid fa-arrow-left" data-action="previousTurn"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.TurnPrev" }}"></button>
|
||||||
|
<button type="button" class="combat-control combat-control-lg" data-action="nextTurn">
|
||||||
|
<i class="fa-solid fa-check"></i>
|
||||||
|
<span>{{ localize "COMBAT.TurnEnd" }}</span>
|
||||||
|
</button>
|
||||||
|
<button type="button" class="inline-control combat-control icon fa-solid fa-arrow-right" data-action="nextTurn"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.TurnNext" }}"></button> -->
|
||||||
|
{{/if}}
|
||||||
|
{{/if}}
|
||||||
|
</nav>
|
92
templates/combat-tracker-header-v2.hbs
Normal file
92
templates/combat-tracker-header-v2.hbs
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<header class="combat-tracker-header">
|
||||||
|
|
||||||
|
{{!-- Encounter Controls --}}
|
||||||
|
{{#if user.isGM}}
|
||||||
|
<nav class="encounters {{ css }}" aria-label="{{ localize "COMBAT.NavLabel" }}">
|
||||||
|
|
||||||
|
{{!-- Cycle Display --}}
|
||||||
|
{{#if displayCycle}}
|
||||||
|
<button type="button" class="inline-control icon fa-solid fa-plus" data-action="createCombat"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.Create" }}"></button>
|
||||||
|
|
||||||
|
<div class="cycle-combats">
|
||||||
|
<button type="button" class="inline-control icon fa-solid fa-caret-left" data-action="cycleCombat"
|
||||||
|
{{#if previousId}}data-combat-id="{{ previousId }}" {{else}}disabled{{/if}}
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.EncounterPrevious" }}"></button>
|
||||||
|
<div class="encounter-count">
|
||||||
|
<span class="value">{{ currentIndex }}</span>
|
||||||
|
<span class="separator">/</span>
|
||||||
|
<span class="max">{{ combats.length }}</span>
|
||||||
|
</div>
|
||||||
|
<button type="button" class="inline-control icon fa-solid fa-caret-right" data-action="cycleCombat"
|
||||||
|
{{#if nextId}}data-combat-id="{{ nextId }}" {{else}}disabled{{/if}}
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.EncounterNext" }}"></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<button type="button" class="inline-control icon fa-solid fa-gear" data-action="trackerSettings"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.Settings" }}"></button>
|
||||||
|
|
||||||
|
{{!-- Tabbed Display --}}
|
||||||
|
{{else if combats.length}}
|
||||||
|
<button type="button" class="inline-control icon fa-solid fa-plus" data-action="createCombat"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.Create" }}"></button>
|
||||||
|
{{#each combats}}
|
||||||
|
<button type="button" class="inline-control {{#if active}}active{{/if}}" data-action="cycleCombat"
|
||||||
|
data-combat-id="{{ id }}">
|
||||||
|
{{ label }}
|
||||||
|
</button>
|
||||||
|
{{/each}}
|
||||||
|
<button type="button" class="inline-control icon fa-solid fa-gear" data-action="trackerSettings"
|
||||||
|
data-tooltip aria-label="{{ localize "COMBAT.Settings" }}"></button>
|
||||||
|
|
||||||
|
{{!-- No Combats --}}
|
||||||
|
{{else}}
|
||||||
|
<button type="button" class="combat-control-lg" data-action="createCombat">
|
||||||
|
<i class="fa-solid fa-plus" inert></i>
|
||||||
|
<span>{{ localize "COMBAT.Create" }}</span>
|
||||||
|
</button>
|
||||||
|
|
||||||
|
{{/if}}
|
||||||
|
</nav>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
<div class="encounter-controls {{#if hasCombat}}combat{{/if}}">
|
||||||
|
|
||||||
|
{{!-- Bulk Rolls --}}
|
||||||
|
<div class="control-buttons left flexrow">
|
||||||
|
{{#if user.isGM}}
|
||||||
|
<button type="button" class="inline-control combat-control icon fa-solid fa-users" data-action="rollAll"
|
||||||
|
{{#unless combat.turns.length}}disabled{{/unless}} data-tooltip="COMBAT.RollAll"
|
||||||
|
aria-label="{{ localize "COMBAT.RollAll" }}"></button>
|
||||||
|
<button type="button" class="inline-control combat-control icon fa-solid fa-users-cog" data-action="rollNPC"
|
||||||
|
{{#unless combat.turns.length}}disabled{{/unless}} data-tooltip="COMBAT.RollNPC"
|
||||||
|
aria-label="{{ localize "COMBAT.RollNPC" }}"></button>
|
||||||
|
{{else}}
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<div class="spacer"></div>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{!-- Combat Status --}}
|
||||||
|
<strong class="encounter-title">
|
||||||
|
{{#if combats.length}}
|
||||||
|
{{#if combat.round}}
|
||||||
|
{{ localize "COMBAT.Round" round=combat.round }}
|
||||||
|
{{else}}
|
||||||
|
{{ localize "COMBAT.NotStarted" }}
|
||||||
|
{{/if}}
|
||||||
|
{{else}}
|
||||||
|
{{ localize "COMBAT.None" }}
|
||||||
|
{{/if}}
|
||||||
|
</strong>
|
||||||
|
|
||||||
|
{{!-- Combat Controls --}}
|
||||||
|
<div class="control-buttons right flexrow">
|
||||||
|
<div class="spacer"></div>
|
||||||
|
<button type="button" class="encounter-context-menu inline-control combat-control icon fa-solid fa-ellipsis-vertical"
|
||||||
|
{{#unless (and user.isGM hasCombat)}}disabled{{/unless}}></button>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</header>
|
81
templates/combat-tracker-v2.hbs
Normal file
81
templates/combat-tracker-v2.hbs
Normal file
@ -0,0 +1,81 @@
|
|||||||
|
<ol class="combat-tracker plain">
|
||||||
|
{{#each turns}}
|
||||||
|
<li class="combatant {{ css }}" data-combatant-id="{{ id }}" data-action="activateCombatant">
|
||||||
|
{{!-- TODO: Targets --}}
|
||||||
|
|
||||||
|
{{!-- Image --}}
|
||||||
|
<img class="token-image" src="{{ img }}" alt="{{ name }}" loading="lazy">
|
||||||
|
|
||||||
|
{{!-- Name & Controls --}}
|
||||||
|
<div class="token-name">
|
||||||
|
<strong class="name">{{ name }}</strong>
|
||||||
|
<div class="combatant-controls">
|
||||||
|
{{#if @root.user.isGM}}
|
||||||
|
<button type="button" class="inline-control combatant-control icon fa-solid fa-eye-slash {{#if hidden}}active{{/if}}"
|
||||||
|
data-action="toggleHidden" data-tooltip aria-label="{{ localize "COMBAT.ToggleVis" }}"></button>
|
||||||
|
<button type="button" class="inline-control combatant-control icon fa-solid fa-skull {{#if isDefeated}}active{{/if}}"
|
||||||
|
data-action="toggleDefeated" data-tooltip
|
||||||
|
aria-label="{{ localize "COMBAT.ToggleDead" }}"></button>
|
||||||
|
{{/if}}
|
||||||
|
{{#if canPing}}
|
||||||
|
<button type="button" class="inline-control combatant-control icon fa-solid fa-bullseye-arrow"
|
||||||
|
data-action="pingCombatant" data-tooltip
|
||||||
|
aria-label="{{ localize "COMBAT.PingCombatant" }}"></button>
|
||||||
|
{{/if}}
|
||||||
|
{{#unless @root.user.isGM}}
|
||||||
|
<button type="button" class="inline-control combatant-control icon fa-solid fa-arrows-to-eye"
|
||||||
|
data-action="panToCombatant" data-tooltip
|
||||||
|
aria-label="{{ localize "COMBAT.PanToCombatant" }}"></button>
|
||||||
|
{{/unless}}
|
||||||
|
{{!-- TODO: Target Control --}}
|
||||||
|
<div class="token-effects" data-tooltip-html="{{ effects.tooltip }}">
|
||||||
|
{{#each effects.icons}}
|
||||||
|
<img class="token-effect" src="{{ img }}" alt="{{ name }}">
|
||||||
|
{{/each}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{{!-- Resource --}}
|
||||||
|
{{#if resource includeZero=true}}
|
||||||
|
<div class="token-resource">
|
||||||
|
<span class="resource">{{ resource }}</span>
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!-- Initiative --}}
|
||||||
|
<div class="token-initiative initiative-area">
|
||||||
|
{{#if initiative includeZero=true}}
|
||||||
|
|
||||||
|
{{!-- Decimal Initiative --}}
|
||||||
|
{{#if @root.hasDecimals}}
|
||||||
|
<span>{{ initiative }}</span>
|
||||||
|
|
||||||
|
{{!-- Simple Initiative --}}
|
||||||
|
{{else}}
|
||||||
|
<input type="text" class="initiative-input" inputmode="numeric" pattern="^[+=\-]?\d*" value="{{ initiative }}"
|
||||||
|
aria-label="{{ localize "COMBAT.InitiativeScore" }}" {{#unless @root.user.isGM}}readonly{{/unless}}>
|
||||||
|
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if isOwner}}
|
||||||
|
<a data-action="initiativePlus" class="initiative-plus" data-combatant-id="{{this.id}}"><i class="fa-solid fa-hexagon-plus"></i></a>
|
||||||
|
<a data-action="initiativeMinus" class="initiative-minus" data-combatant-id="{{this.id}}"><i class="fa-solid fa-hexagon-minus"></i></a>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{#if isMonster}}
|
||||||
|
<span class="initiative">-</span>
|
||||||
|
{{else}}
|
||||||
|
<span class="initiative" data-tooltip="Current max. progression counter">{{progressionCount}}</span>
|
||||||
|
{{/if}}
|
||||||
|
|
||||||
|
{{!-- Roll Initiative --}}
|
||||||
|
{{else if isOwner}}
|
||||||
|
<button type="button" class="combatant-control roll" data-action="rollInitiative" data-tooltip
|
||||||
|
aria-label="{{ localize "COMBAT.InitiativeRoll" }}"
|
||||||
|
style="--initiative-icon: url('{{ @root.initiativeIcon.icon }}'); --initiative-icon-hover: url('{{ @root.initiativeIcon.hover }}');"></button>
|
||||||
|
{{/if}}
|
||||||
|
</div>
|
||||||
|
</li>
|
||||||
|
{{/each}}
|
||||||
|
</ol>
|
Loading…
x
Reference in New Issue
Block a user