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;
|
||||
--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 {
|
||||
content: var(--logo-standard);
|
||||
width: 50px;
|
||||
|
@ -1,6 +1,6 @@
|
||||
{
|
||||
"COMBAT": {
|
||||
"Round": "Second",
|
||||
"Round": "Second {round}",
|
||||
"Rounds": "Seconds",
|
||||
"RoundNext": "Next second"
|
||||
},
|
||||
|
@ -2,17 +2,53 @@
|
||||
/* -------------------------------------------- */
|
||||
export class LethalFantasyCombatTracker extends foundry.applications.sidebar.tabs.CombatTracker {
|
||||
|
||||
async getData(options) {
|
||||
let data = await super.getData(options);
|
||||
for (let u of data.turns) {
|
||||
static PARTS = {
|
||||
"header": {
|
||||
"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);
|
||||
u.progressionCount = c.system.progressionCount
|
||||
u.isMonster = c.actor.type === "monster"
|
||||
}
|
||||
console.log("Combat Data", data);
|
||||
console.log("Combat Data", 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) {
|
||||
super.activateListeners(html);
|
||||
// Display Combat settings
|
||||
@ -21,7 +57,6 @@ export class LethalFantasyCombatTracker extends foundry.applications.sidebar.tab
|
||||
let cId = ev.currentTarget.closest(".combatant").dataset.combatantId;
|
||||
let c = game.combat.combatants.get(cId);
|
||||
c.update({ 'initiative': c.initiative + 1 });
|
||||
console.log("Initiative Plus");
|
||||
});
|
||||
|
||||
html.find(".initiative-minus").click(ev => {
|
||||
@ -160,10 +195,10 @@ export class LethalFantasyCombat extends Combat {
|
||||
}
|
||||
|
||||
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);
|
||||
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 {
|
||||
user = game.users.find(u => u.active && u.isGM);
|
||||
c.actor.system.rollProgressionDice(this.id, c.id);
|
||||
|
@ -238,7 +238,7 @@ export default class LethalFantasyMonster extends foundry.abstract.TypeDataModel
|
||||
|
||||
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({
|
||||
choices: rollModes,
|
||||
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/14-09:18:06.457498 7f5ccd7fa6c0 Delete type=3 #332
|
||||
2025/05/14-09:18:06.457555 7f5ccd7fa6c0 Delete type=0 #334
|
||||
2025/05/14-10:01:12.490342 7f5ccb7ff6c0 Level-0 table #339: started
|
||||
2025/05/14-10:01:12.490385 7f5ccb7ff6c0 Level-0 table #339: 0 bytes OK
|
||||
2025/05/14-10:01:12.496360 7f5ccb7ff6c0 Delete type=0 #337
|
||||
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/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-16:36:11.138560 7f53e4df86c0 Recovering log #346
|
||||
2025/05/29-16:36:11.150394 7f53e4df86c0 Delete type=3 #344
|
||||
2025/05/29-16:36:11.150472 7f53e4df86c0 Delete type=0 #346
|
||||
2025/05/29-18:48:12.764595 7f53df3ff6c0 Level-0 table #351: started
|
||||
2025/05/29-18:48:12.764652 7f53df3ff6c0 Level-0 table #351: 0 bytes OK
|
||||
2025/05/29-18:48:12.777058 7f53df3ff6c0 Delete type=0 #349
|
||||
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/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/14-07:47:09.486681 7f5ccd7fa6c0 Delete type=3 #328
|
||||
2025/05/14-07:47:09.486812 7f5ccd7fa6c0 Delete type=0 #330
|
||||
2025/05/14-08:06:15.866972 7f5ccb7ff6c0 Level-0 table #335: started
|
||||
2025/05/14-08:06:15.867049 7f5ccb7ff6c0 Level-0 table #335: 0 bytes OK
|
||||
2025/05/14-08:06:15.873425 7f5ccb7ff6c0 Delete type=0 #333
|
||||
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/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-18:45:28.754313 7f53737fe6c0 Recovering log #342
|
||||
2025/05/22-18:45:28.804653 7f53737fe6c0 Delete type=3 #340
|
||||
2025/05/22-18:45:28.804783 7f53737fe6c0 Delete type=0 #342
|
||||
2025/05/22-19:43:04.046497 7f53723ff6c0 Level-0 table #347: started
|
||||
2025/05/22-19:43:04.046522 7f53723ff6c0 Level-0 table #347: 0 bytes OK
|
||||
2025/05/22-19:43:04.084205 7f53723ff6c0 Delete type=0 #345
|
||||
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/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/14-09:18:06.471748 7f5ccdffb6c0 Delete type=3 #331
|
||||
2025/05/14-09:18:06.471810 7f5ccdffb6c0 Delete type=0 #333
|
||||
2025/05/14-10:01:12.509221 7f5ccb7ff6c0 Level-0 table #338: started
|
||||
2025/05/14-10:01:12.509244 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
||||
2025/05/14-10:01:12.515073 7f5ccb7ff6c0 Delete type=0 #336
|
||||
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/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-16:36:11.158130 7f53e5dfa6c0 Recovering log #345
|
||||
2025/05/29-16:36:11.168794 7f53e5dfa6c0 Delete type=3 #343
|
||||
2025/05/29-16:36:11.168968 7f53e5dfa6c0 Delete type=0 #345
|
||||
2025/05/29-18:48:12.777345 7f53df3ff6c0 Level-0 table #350: started
|
||||
2025/05/29-18:48:12.777387 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
|
||||
2025/05/29-18:48:12.788225 7f53df3ff6c0 Delete type=0 #348
|
||||
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/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/14-07:47:09.503988 7f5ccc7f86c0 Delete type=3 #327
|
||||
2025/05/14-07:47:09.504090 7f5ccc7f86c0 Delete type=0 #329
|
||||
2025/05/14-08:06:15.873602 7f5ccb7ff6c0 Level-0 table #334: started
|
||||
2025/05/14-08:06:15.873653 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
||||
2025/05/14-08:06:15.879920 7f5ccb7ff6c0 Delete type=0 #332
|
||||
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/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-18:45:28.835173 7f5373fff6c0 Recovering log #341
|
||||
2025/05/22-18:45:28.894795 7f5373fff6c0 Delete type=3 #339
|
||||
2025/05/22-18:45:28.894867 7f5373fff6c0 Delete type=0 #341
|
||||
2025/05/22-19:43:04.009442 7f53723ff6c0 Level-0 table #346: started
|
||||
2025/05/22-19:43:04.009522 7f53723ff6c0 Level-0 table #346: 0 bytes OK
|
||||
2025/05/22-19:43:04.046375 7f53723ff6c0 Delete type=0 #344
|
||||
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/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/14-09:18:06.444450 7f5ccc7f86c0 Delete type=3 #331
|
||||
2025/05/14-09:18:06.444513 7f5ccc7f86c0 Delete type=0 #333
|
||||
2025/05/14-10:01:12.502915 7f5ccb7ff6c0 Level-0 table #338: started
|
||||
2025/05/14-10:01:12.502947 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
||||
2025/05/14-10:01:12.509102 7f5ccb7ff6c0 Delete type=0 #336
|
||||
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/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-16:36:11.123463 7f53e55f96c0 Recovering log #345
|
||||
2025/05/29-16:36:11.133586 7f53e55f96c0 Delete type=3 #343
|
||||
2025/05/29-16:36:11.133663 7f53e55f96c0 Delete type=0 #345
|
||||
2025/05/29-18:48:12.753680 7f53df3ff6c0 Level-0 table #350: started
|
||||
2025/05/29-18:48:12.753732 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
|
||||
2025/05/29-18:48:12.764334 7f53df3ff6c0 Delete type=0 #348
|
||||
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/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/14-07:47:09.470303 7f5ccdffb6c0 Delete type=3 #327
|
||||
2025/05/14-07:47:09.470418 7f5ccdffb6c0 Delete type=0 #329
|
||||
2025/05/14-08:06:15.886675 7f5ccb7ff6c0 Level-0 table #334: started
|
||||
2025/05/14-08:06:15.886731 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
||||
2025/05/14-08:06:15.893424 7f5ccb7ff6c0 Delete type=0 #332
|
||||
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/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-18:45:28.668409 7f5378bfa6c0 Recovering log #341
|
||||
2025/05/22-18:45:28.725273 7f5378bfa6c0 Delete type=3 #339
|
||||
2025/05/22-18:45:28.725349 7f5378bfa6c0 Delete type=0 #341
|
||||
2025/05/22-19:43:04.084321 7f53723ff6c0 Level-0 table #346: started
|
||||
2025/05/22-19:43:04.084343 7f53723ff6c0 Level-0 table #346: 0 bytes OK
|
||||
2025/05/22-19:43:04.122081 7f53723ff6c0 Delete type=0 #344
|
||||
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/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/14-09:18:06.497838 7f5ccc7f86c0 Delete type=3 #31
|
||||
2025/05/14-09:18:06.497894 7f5ccc7f86c0 Delete type=0 #33
|
||||
2025/05/14-10:01:12.535301 7f5ccb7ff6c0 Level-0 table #38: started
|
||||
2025/05/14-10:01:12.535349 7f5ccb7ff6c0 Level-0 table #38: 0 bytes OK
|
||||
2025/05/14-10:01:12.541664 7f5ccb7ff6c0 Delete type=0 #36
|
||||
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/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-16:36:11.187985 7f53e4df86c0 Recovering log #45
|
||||
2025/05/29-16:36:11.199498 7f53e4df86c0 Delete type=3 #43
|
||||
2025/05/29-16:36:11.199566 7f53e4df86c0 Delete type=0 #45
|
||||
2025/05/29-18:48:12.801134 7f53df3ff6c0 Level-0 table #50: started
|
||||
2025/05/29-18:48:12.801185 7f53df3ff6c0 Level-0 table #50: 0 bytes OK
|
||||
2025/05/29-18:48:12.810101 7f53df3ff6c0 Delete type=0 #48
|
||||
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/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/14-07:47:09.533204 7f5ccd7fa6c0 Delete type=3 #27
|
||||
2025/05/14-07:47:09.533353 7f5ccd7fa6c0 Delete type=0 #29
|
||||
2025/05/14-08:06:15.894136 7f5ccb7ff6c0 Level-0 table #34: started
|
||||
2025/05/14-08:06:15.894209 7f5ccb7ff6c0 Level-0 table #34: 0 bytes OK
|
||||
2025/05/14-08:06:15.900873 7f5ccb7ff6c0 Delete type=0 #32
|
||||
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/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-18:45:28.985810 7f5372ffd6c0 Recovering log #41
|
||||
2025/05/22-18:45:29.040662 7f5372ffd6c0 Delete type=3 #39
|
||||
2025/05/22-18:45:29.040742 7f5372ffd6c0 Delete type=0 #41
|
||||
2025/05/22-19:43:04.281148 7f53723ff6c0 Level-0 table #46: started
|
||||
2025/05/22-19:43:04.281205 7f53723ff6c0 Level-0 table #46: 0 bytes OK
|
||||
2025/05/22-19:43:04.315875 7f53723ff6c0 Delete type=0 #44
|
||||
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/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/14-09:18:06.485731 7f5cccff96c0 Delete type=3 #331
|
||||
2025/05/14-09:18:06.485791 7f5cccff96c0 Delete type=0 #333
|
||||
2025/05/14-10:01:12.496479 7f5ccb7ff6c0 Level-0 table #338: started
|
||||
2025/05/14-10:01:12.496503 7f5ccb7ff6c0 Level-0 table #338: 0 bytes OK
|
||||
2025/05/14-10:01:12.502768 7f5ccb7ff6c0 Delete type=0 #336
|
||||
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/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-16:36:11.172412 7f53e55f96c0 Recovering log #345
|
||||
2025/05/29-16:36:11.183464 7f53e55f96c0 Delete type=3 #343
|
||||
2025/05/29-16:36:11.183540 7f53e55f96c0 Delete type=0 #345
|
||||
2025/05/29-18:48:12.788378 7f53df3ff6c0 Level-0 table #350: started
|
||||
2025/05/29-18:48:12.788406 7f53df3ff6c0 Level-0 table #350: 0 bytes OK
|
||||
2025/05/29-18:48:12.800425 7f53df3ff6c0 Delete type=0 #348
|
||||
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/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/14-07:47:09.517849 7f5ccdffb6c0 Delete type=3 #327
|
||||
2025/05/14-07:47:09.517975 7f5ccdffb6c0 Delete type=0 #329
|
||||
2025/05/14-08:06:15.880220 7f5ccb7ff6c0 Level-0 table #334: started
|
||||
2025/05/14-08:06:15.880293 7f5ccb7ff6c0 Level-0 table #334: 0 bytes OK
|
||||
2025/05/14-08:06:15.886487 7f5ccb7ff6c0 Delete type=0 #332
|
||||
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/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-18:45:28.912541 7f5378bfa6c0 Recovering log #341
|
||||
2025/05/22-18:45:28.969080 7f5378bfa6c0 Delete type=3 #339
|
||||
2025/05/22-18:45:28.969151 7f5378bfa6c0 Delete type=0 #341
|
||||
2025/05/22-19:43:04.122198 7f53723ff6c0 Level-0 table #346: started
|
||||
2025/05/22-19:43:04.122219 7f53723ff6c0 Level-0 table #346: 0 bytes OK
|
||||
2025/05/22-19:43:04.153184 7f53723ff6c0 Delete type=0 #344
|
||||
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/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");
|
||||
}
|
||||
|
||||
.initiative-area {
|
||||
min-width: 8rem;
|
||||
max-width: 8rem;
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
input {
|
||||
min-width: 3rem;
|
||||
max-width: 3rem;
|
||||
}
|
||||
}
|
||||
|
||||
#logo {
|
||||
content: var(--logo-standard);
|
||||
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