@@ -81,10 +81,9 @@ export default class torgeternityCombatTracker extends foundry.applications.side
8181
8282 async _prepareTrackerContext ( context , options ) {
8383 await super . _prepareTrackerContext ( context , options ) ;
84- if ( ! this . viewed ) return ;
85- this . viewed . updateCurrentDisposition ( ) ;
8684 const combat = this . viewed ;
8785 if ( ! combat ) return ;
86+ combat . updateCurrentDisposition ( ) ;
8887
8988 await this . _prepareGroupContext ( context , combat ) ;
9089
@@ -188,22 +187,22 @@ export default class torgeternityCombatTracker extends foundry.applications.side
188187 options . unshift ( {
189188 name : "torgeternity.dramaCard.replaceDrama" ,
190189 icon : '<i class="fa-solid fa-rotate-right"></i>' ,
191- condition : game . user . isGM && ! ! this . viewed ,
190+ condition : ( ) => game . user . isGM && ! ! this . viewed ,
192191 callback : ( ) => this . viewed . drawDramaCard ( )
193192 } , {
194193 name : "torgeternity.dramaCard.getPreviousDrama" ,
195194 icon : '<i class="fa-solid fa-up-down"></i>' ,
196- condition : game . user . isGM && ! ! this . viewed ,
195+ condition : ( ) => game . user . isGM && ! ! this . viewed ,
197196 callback : ( ) => this . viewed . restorePreviousDrama ( )
198197 } , {
199198 name : "torgeternity.dramaCard.shuffleDeck" ,
200199 icon : '<i class="fa-solid fa-random"></i>' ,
201- condition : game . user . isGM && ! ! this . viewed ,
200+ condition : ( ) => game . user . isGM && ! ! this . viewed ,
202201 callback : ( ) => this . viewed . resetDramaDeck ( )
203202 } , {
204203 name : "torgeternity.CombatantGroup.newGroup" ,
205204 icon : '<i class="fa-solid fa-random"></i>' ,
206- condition : game . user . isGM && ! ! this . viewed ,
205+ condition : ( ) => game . user . isGM && ! ! this . viewed ,
207206 callback : async ( ) => {
208207 const groupName = await foundry . applications . api . DialogV2 . prompt ( {
209208 window : { title : "Combatant Group Creation" } ,
@@ -223,7 +222,7 @@ export default class torgeternityCombatTracker extends foundry.applications.side
223222 const getCombatant = li => this . viewed . combatants . get ( li . dataset . combatantId ) ;
224223 function canAddToGroup ( li ) {
225224 const combatant = getCombatant ( li ) ;
226- return ! combatant ?. group &&
225+ return ! combatant ?. group && combatant . token &&
227226 ! ! combatant . combat . groups . find ( group => group . disposition === undefined || group . disposition === combatant . token . disposition ) ;
228227 }
229228
@@ -331,7 +330,7 @@ export default class torgeternityCombatTracker extends foundry.applications.side
331330 const { combatantId } = button . closest ( "[data-combatant-id]" ) ?. dataset ?? { } ;
332331 const combatant = this . viewed ?. combatants . get ( combatantId ) ;
333332 if ( ! combatant ) return ;
334- await combatant . actor . toggleStatusEffect ( 'waiting' ) ;
333+ await combatant . actor ? .toggleStatusEffect ( 'waiting' ) ;
335334 }
336335
337336 updateStage ( document , force ) {
@@ -530,24 +529,26 @@ export default class torgeternityCombatTracker extends foundry.applications.side
530529 static async #onToggleWaitingGroup( event , button ) {
531530 const group = this . viewed . groups . get ( button . closest ( 'li.combatantGroup' ) ?. dataset . groupId ) ;
532531 if ( group ) group . isOpen = ! button . open ;
533- return Promise . all ( group . members . map ( combatant => combatant . actor . toggleStatusEffect ( 'waiting' ) ) )
532+ return Promise . all ( group . members . map ( combatant => combatant . actor ? .toggleStatusEffect ( 'waiting' ) ) )
534533 }
535534
536535 static async #askAddToGroup( askAll , li ) {
537536 const combat = this . viewed ;
538537 const combatant = combat . combatants . get ( li . dataset . combatantId ) ; // getCombatant(li)
539538 let combatants ;
540539 if ( askAll ) {
541- if ( combatant . actor . type === 'stormknight' ) {
542- combatants = combat . combatants . filter ( combatant => combatant . actor . type === 'stormknight' ) ;
540+ const actor = combatant . actor ;
541+ if ( ! actor ) return ; // The Actor has been deleted.
542+ if ( actor . type === 'stormknight' ) {
543+ combatants = combat . combatants . filter ( combatant => actor . type === 'stormknight' ) ;
543544 } else {
544- const matchid = combatant . actor . _source . _id ;
545- combatants = combat . combatants . filter ( combatant => combatant . actor . _source . _id === matchid ) ;
545+ const matchid = actor . _source . _id ;
546+ combatants = combat . combatants . filter ( combatant => actor . _source . _id === matchid ) ;
546547 }
547548 } else
548549 combatants = [ combatant ] ;
549550
550- const validDisposition = combatant . token . disposition ;
551+ const validDisposition = combatant . token ? .disposition ;
551552 const validGroups = combat . groups . filter ( group => group . disposition === undefined || group . disposition === validDisposition ) ;
552553 if ( validGroups . length < 1 )
553554 return ui . notifications . info ( 'torgeternity.CombatantGroup.noValidGroup' , { localize : true } ) ;
0 commit comments