Tickleiste bleibt nach Ende des Kampfes bestehen
Wenn der Kampf über die Begegnungsübersicht per “Beenden” beendet wird, bleibt die Tickleiste am oberen Bildschirmrand bestehen, bis man die Seite per F5 neu lädt oder einen neuen Kampf beginnt.
Schritte zum Reproduzieren
- Alle Module deaktivieren
- Kampf beginnen
- Initiative auswürfeln
- Kampf über die Schaltfläche beenden
- Die Tickleiste bleibt stehen
- F5 drücken
- Tickleiste ist weg
Comments (16)
-
-
reporter Noch die 9er wegen fehlender Abhängigkeiten zu anderen Modulen. Das passiert auch, wenn alle Module deaktiviert sind.
Ich teste die Tage noch mal, ob ich mehr rausfinde. Ggf. mit Developer Console.
-
Ich habe das ganze unter V9 und V10 getestet und konnte den Fehler leider nicht reproduzieren.
-
- marked as minor
-
reporter Ich habe es gerade noch mal getestet mit V9 und der Fehler ist immer noch da. Habe auch FoundryVTT mal komplett durchgestartet und sichergestellt, dass wirklich alle Module aus waren.
Wenn ich den Kampf beende kommt folgendes in der Console:
foundry.js:3053 Foundry VTT | Rendering Dialog
backend.mjs:306 Foundry VTT | Deleted Combat with id [DIXu943yivuQ7y23]
foundry.js:319 TypeError: Cannot read properties of null (reading 'getVirtualStatusTokens')
at tick-bar-hud.js:165:44
at Array.map (<anonymous>)
at TickBarHud.getData (tick-bar-hud.js:162:60)
at TickBarHud._render (foundry.js:3062:29)
at TickBarHud.render (foundry.js:3021:10)
at CombatEncounters.render (foundry.js:11279:32)
at CombatEncounters._onDeleteDocuments (foundry.js:11384:42)
at ClientDatabaseBackend._handleDeleteDocuments (foundry.js:10442:16)
at ClientDatabaseBackend._deleteDocuments (foundry.js:10345:17)
at async SplittermondCombat.deleteDocuments (document.mjs:410:21)
onError @ foundry.js:319
(anonymous) @ foundry.js:3023
Promise.catch (async)
render @ foundry.js:3021
render @ foundry.js:11279
_onDeleteDocuments @ foundry.js:11384
_handleDeleteDocuments @ foundry.js:10442
_deleteDocuments @ foundry.js:10345
await in _deleteDocuments (async)
delete @ backend.mjs:215
await in delete (async)
deleteDocuments @ document.mjs:410
delete @ document.mjs:471
callback @ foundry.js:44207
submit @ foundry.js:44151
_onClickButton @ foundry.js:44114
dispatch @ jquery.min.js:2
v.handle @ jquery.min.js:2
Ich benutze übrigens Chromium.
-
Ich konnte den Fehler so leider nicht reproduzieren. Hast du vielleicht noch einen zweiten Encounter offen?
-
reporter Nein, ich werde das aber noch mal als minimalsetup nachstellen. Vielleicht finde ich so eine Ursache
-
Das wäre super, Danke!
-
reporter Wenn ich eine neue Welt erstelle verschwindet die Tickleiste wie gewollt. Also kann ich bestätigen, dass es generell funktioniert. Also ist auch nichts an meinem Foundry oder dem Spielsystem kaputt.
Allerdings kriege ich den Fehler in meiner normalen Welt selbst mit einem komplett neuerstellen leeren Char. Ich habe aber gesehen, dass man einfach einen neuen Token zu einer neuen Begnung hinzufügen kann, dann verschwindet die Leiste. Das ist für mich ein akzeptabler Work-Around bis ich V10 ausprobiert habe. Anscheinend hat irgendein Modul etwas so nachhaltig bei mir geändert, dass das System damit nicht mehr klarkommt.
Gibt es vielleicht eine Routine, die ausgeführt wird, wenn man Token einem neuen Kampf hinzufügt, der noch nicht begonnen hat, bezüglich der Tickleiste, welcher am Ende des Kampfes nicht aufgerufen wird?
-
reporter Mit V10 besteht der Fehler nicht mehr. Daher kann das Issue zu. Irgendwann wird ja jeder patchen.
-
reporter - changed status to resolved
-
reporter - changed status to wontfix
-
reporter Interessanterweise hatte ich direkt einen laufenden Kampf ohne Teilnehmer auf Tick 34, als ich auf V10 geupdatet habe. Ggf. war das das Problem.
-
reporter Ich konnte es durch Zufall noch weiter eingrenzen. Solange mindestens ein Teilnehmer des Kampfes noch einen Initiative-Wert hat, ist die Leiste zu sehen. Ich glaube, dass beim Kampf beenden die Initiative nicht gelöscht wird. Aber ich weiß nicht, wie ich das überprüfen kann.
Ich kann die Tickleiste jetzt entfernen indem ich eins der folgenden Dinge tue:
- F5 drücken um die Seite neu zu laden (Das deutet für mich darauf hin, dass die Initiative irgendwo Clientseitig gecacht oder gespeichert wird)
- Den Knopf für “Initiative zurücksetzen” drücke (Den Knopf gibt es nur solange eine Begegnung da ist, ob jemand drin ist, ob derjenige Intiative hat oder ob der Kampf läuft ist dabei egal. Solang es eine Begegnung gibt, ist der Button da)
- Allen Teilnehmern, die Initiative haben, mit Rechtsklick die “Initiative löschen”
- Alle Teilnehmer, die Initiative haben, editieren und das Feld für Initiative leeren
-
reporter - changed status to open
Ich habe den Fehler gefunden, aber leider nicht die eigentliche Ursache. Dafür reicht mein Javascript dann doch nicht aus :D
e.actor.getVirtualStatusTokens() kann nicht aufgerufen werden, weil e.actor == null ist. Ich weiß nicht, wieso das bei mir so ist.
Aber mit dem folgenden Patch funktioniert es so wie es sollte. Ich habe jetzt erst mal nicht festgestellt, dass dadurch etwas anderes kaputt geht. Eine Überprüfung, ob etwas null ist, sollte ja auch nicht das Problem sein, zumal es anscheinend vorkommen kann.
diff --git a/module/apps/tick-bar-hud.js b/module/apps/tick-bar-hud.js index e8139c3..dbda9e8 100644 --- a/module/apps/tick-bar-hud.js +++ b/module/apps/tick-bar-hud.js @@ -160,10 +160,15 @@ export default class TickBarHud extends Application { } var virtualTokens = combat.combatants.contents.map(e => { + if ( e.actor == null){ + var virtualTokensReturnValue = []; + } else { + var virtualTokensReturnValue = e.actor.getVirtualStatusTokens() || []; + }; return { combatant: e, - virtualTokens: e.actor.getVirtualStatusTokens() || [], - } + virtualTokens: virtualTokensReturnValue, + }; }); var iniData = combat.turns
-
- changed status to resolved
- Log in to comment
Welche Foundry-Version nutzt du? Konnte diesen Effekt bisher nicht rekonstruieren. Welche Module sind sonst noch aktiv?