@@ -79,36 +79,39 @@ var Concentration = Concentration || (function() {
7979                        sendAdvantageMenu ( ) ; 
8080                    break ; 
8181
82-                     case  'toggle-advantage' :
83-                         let  id  =  args [ 0 ] ; 
82+                     case  'toggle-advantage' :  { 
83+                              let  id  =  args [ 0 ] ; 
8484
85-                         if ( state [ state_name ] . advantages [ id ] ) { 
86-                             state [ state_name ] . advantages [ id ]  =  ! state [ state_name ] . advantages [ id ] ; 
87-                         } else { 
88-                             state [ state_name ] . advantages [ id ]  =  true ; 
89-                         } 
85+                              if ( state [ state_name ] . advantages [ id ] ) { 
86+                                  state [ state_name ] . advantages [ id ]  =  ! state [ state_name ] . advantages [ id ] ; 
87+                              } else { 
88+                                  state [ state_name ] . advantages [ id ]  =  true ; 
89+                              } 
9090
91-                         sendAdvantageMenu ( ) ; 
91+                             sendAdvantageMenu ( ) ; 
92+                         } 
9293                    break ; 
9394
94-                     case  'roll' :
95-                         let  represents  =  args [ 0 ] , 
96-                             DC  =  parseInt ( args [ 1 ] ,  10 ) , 
97-                             con_save_mod  =  parseInt ( args [ 2 ] ,  10 ) , 
98-                             name  =  args [ 3 ] , 
99-                             target  =  args [ 4 ] ; 
95+                     case  'roll' :  { 
96+                              let  represents  =  args [ 0 ] , 
97+                                  DC  =  parseInt ( args [ 1 ] ,  10 ) , 
98+                                  con_save_mod  =  parseInt ( args [ 2 ] ,  10 ) , 
99+                                  name  =  args [ 3 ] , 
100+                                  target  =  args [ 4 ] ; 
100101
101-                         roll ( represents ,  DC ,  con_save_mod ,  name ,  target ,  false ) ; 
102+                             roll ( represents ,  DC ,  con_save_mod ,  name ,  target ,  false ) ; 
103+                         } 
102104                    break ; 
103105
104-                     case  'advantage' :
105-                     let  represents_a  =  args [ 0 ] , 
106+                     case  'advantage' :  { 
107+                          let  represents_a  =  args [ 0 ] , 
106108                        DC_a  =  parseInt ( args [ 1 ] ,  10 ) , 
107109                        con_save_mod_a  =  parseInt ( args [ 2 ] ,  10 ) , 
108110                        name_a  =  args [ 3 ] , 
109111                        target_a  =  args [ 4 ] ; 
110112
111113                        roll ( represents_a ,  DC_a ,  con_save_mod_a ,  name_a ,  target_a ,  true ) ; 
114+                       } 
112115                    break ; 
113116
114117                    default :
@@ -135,17 +138,17 @@ var Concentration = Concentration || (function() {
135138    } , 
136139
137140    addConcentration  =  ( token ,  playerid ,  spell )  =>  { 
138-         const  marker  =  state [ state_name ] . config . statusmarker 
141+         const  marker  =  state [ state_name ] . config . statusmarker ; 
139142        let  character  =  getObj ( 'character' ,  token . get ( 'represents' ) ) ; 
140143        if ( ( token . get ( 'controlledby' ) . split ( ',' ) . includes ( playerid )  ||  token . get ( 'controlledby' ) . split ( ',' ) . includes ( 'all' ) )  || 
141144            ( character  &&  ( character . get ( 'controlledby' ) . split ( ',' ) . includes ( playerid )  ||  character . get ( 'controlledby' ) . split ( ',' ) . includes ( 'all' ) ) )  || 
142145            playerIsGM ( playerid ) ) { 
143146                if ( ! token . get ( 'status_' + marker ) ) { 
144147                    let  target  =  state [ state_name ] . config . send_reminder_to ; 
145148                    if ( target  ===  'character' ) { 
146-                         target  =  createWhisperName ( character_name ) ; 
149+                         target  =  character . get ( 'name' ) ; 
147150                    } else  if ( target  ===  'everyone' ) { 
148-                         target  =  '' 
151+                         target  =  '' ; 
149152                    } 
150153
151154                    let  message ; 
@@ -162,7 +165,7 @@ var Concentration = Concentration || (function() {
162165    } , 
163166
164167    handleConcentrationSpellCast  =  ( msg )  =>  { 
165-         const  marker  =  state [ state_name ] . config . statusmarker 
168+         const  marker  =  state [ state_name ] . config . statusmarker ; 
166169
167170        let  character_name  =  msg . content . match ( / c h a r n a m e = ( [ ^ \n { } ] * [ ^ " \n { } ] ) / ) ;             
168171        character_name  =  RegExp . $1 ; 
@@ -180,7 +183,7 @@ var Concentration = Concentration || (function() {
180183            represents : characterid , 
181184            _type : 'graphic' , 
182185            _pageid : player . get ( 'lastpage' ) 
183-         } 
186+         } ; 
184187        search_attributes [ 'status_' + marker ]  =  true ; 
185188        let  is_concentrating  =  ( findObjs ( search_attributes ) . length  >  0 ) ; 
186189
@@ -196,16 +199,16 @@ var Concentration = Concentration || (function() {
196199        } 
197200
198201        if ( target  ===  'character' ) { 
199-             target  =  createWhisperName ( character_name ) ; 
202+             target  =  character_name ; 
200203        } else  if ( target  ===  'everyone' ) { 
201-             target  =  '' 
204+             target  =  '' ; 
202205        } 
203206
204207        makeAndSendMenu ( message ,  '' ,  target ) ; 
205208    } , 
206209
207-     handleStatusMarkerChange  =  ( obj ,  prev )  =>  { 
208-         const  marker  =  state [ state_name ] . config . statusmarker 
210+     handleStatusMarkerChange  =  ( obj   /* , prev */ )  =>  { 
211+         const  marker  =  state [ state_name ] . config . statusmarker ; 
209212
210213        if ( ! obj . get ( 'status_' + marker ) ) { 
211214            removeMarker ( obj . get ( 'represents' ) ) ; 
@@ -227,7 +230,7 @@ var Concentration = Concentration || (function() {
227230
228231            if ( target  ===  'character' ) { 
229232                chat_text  =  "Make a Concentration Check - <b>DC "  +  DC  +  "</b>." ; 
230-                 target  =  createWhisperName ( obj . get ( 'name' ) ) ; 
233+                 target  =  obj . get ( 'name' ) ; 
231234            } else  if ( target  ===  'everyone' ) { 
232235                chat_text  =  '<b>' + obj . get ( 'name' ) + '</b> must make a Concentration Check - <b>DC '  +  DC  +  '</b>.' ; 
233236                target  =  '' ; 
@@ -256,11 +259,15 @@ var Concentration = Concentration || (function() {
256259    } , 
257260
258261    roll  =  ( represents ,  DC ,  con_save_mod ,  name ,  target ,  advantage )  =>  { 
259-         sendChat ( script_name ,  '[[1d20cf<' + ( DC - con_save_mod - 1 ) + 'cs>' + ( DC - con_save_mod - 1 ) + '+' + con_save_mod + ']]' ,  results  =>  { 
262+         // Bound the crit success and fail targets so negatives stop wrecking the roll --Oosh 
263+         const  criticalFail  =  Math . max ( DC - con_save_mod - 1 ,  0 ) , 
264+             criticalSuccess  =  Math . max ( DC - con_save_mod ,  0 ) , 
265+             rollString  =  `[[1d20cf<${ criticalFail }  cs>${ criticalSuccess }   + (${ con_save_mod }  )]]` ; 
266+         sendChat ( script_name ,  rollString ,  results  =>  { 
260267            let  title  =  'Concentration Save <br> <b style="font-size: 10pt; color: gray;">' + name + '</b>' , 
261268                advantageRollResult ; 
262- 
263-             let  rollresult  =  results [ 0 ] . inlinerolls [ 0 ] . results . rolls [ 0 ] . results [ 0 ] . v ; 
269+              // Error check the results object and debug for any future issues --Oosh 
270+             let  rollresult  =  results  ?  results [ 0 ] . inlinerolls [ 0 ] . results . rolls [ 0 ] . results [ 0 ] . v  :  `Roll error! DC: " ${ DC } ", con_sav_mod: " ${ con_save_mod } "` ; 
264271            let  result  =  rollresult ; 
265272
266273            if ( advantage ) { 
@@ -297,7 +304,7 @@ var Concentration = Concentration || (function() {
297304                    <span style="border: 1px solid ' + result_color + '; padding-bottom: 2px; padding-top: 4px;">[[' + result + '+' + con_save_mod + ']]</span><br><br> \ 
298305                    ' + result_text + ' \ 
299306                </b> \ 
300-             </div>' 
307+             </div>' ; 
301308            makeAndSendMenu ( contents ,  title ,  target ) ; 
302309
303310            if ( target  !==  ''  &&  target  !==  'gm' ) { 
@@ -316,19 +323,15 @@ var Concentration = Concentration || (function() {
316323        } ) ; 
317324    } , 
318325
319-     createWhisperName  =  ( name )  =>  { 
320-         return  name . split ( ' ' ) . shift ( ) ; 
321-     } , 
322- 
323326    ucFirst  =  ( string )  =>  { 
324327        return  string . charAt ( 0 ) . toUpperCase ( )  +  string . slice ( 1 ) ; 
325328    } , 
326329
327330    sendConfigMenu  =  ( first ,  message )  =>  { 
328331        let  markerDropdown  =  '?{Marker' ; 
329332        markers . forEach ( ( marker )  =>  { 
330-             markerDropdown  +=  '|' + ucFirst ( marker ) . replace ( '-' ,  ' ' ) + ',' + marker 
331-         } ) 
333+             markerDropdown  +=  '|' + ucFirst ( marker ) . replace ( '-' ,  ' ' ) + ',' + marker ; 
334+         } ) ; 
332335        markerDropdown  +=  '}' ; 
333336
334337        let  markerButton  =  makeButton ( state [ state_name ] . config . statusmarker ,  '!'  +  state [ state_name ] . config . command  +  ' config statusmarker|' + markerDropdown ,  styles . button  +  styles . float . right ) , 
@@ -347,7 +350,7 @@ var Concentration = Concentration || (function() {
347350                '<span style="' + styles . float . left + '">HP Bar:</span> '  +  barButton , 
348351                '<span style="' + styles . float . left + '">Send Reminder To:</span> '  +  sendToButton , 
349352                '<span style="' + styles . float . left + '">Auto Add Con. Marker: <p style="font-size: 8pt;">Works only for 5e OGL Sheet.</p></span> '  +  addConMarkerButton , 
350-                 '<span style="' + styles . float . left + '">Auto Roll Save:</span> '  +  autoRollButton , 
353+                 '<span style="' + styles . float . left + '">Auto Roll Save:</span> '  +  autoRollButton 
351354            ] , 
352355
353356            resetButton  =  makeButton ( 'Reset' ,  '!'  +  state [ state_name ] . config . command  +  ' reset' ,  styles . button  +  styles . fullWidth ) , 
@@ -359,7 +362,7 @@ var Concentration = Concentration || (function() {
359362        }*/ 
360363
361364        if ( state [ state_name ] . config . auto_roll_save ) { 
362-             listItems . push ( '<span style="' + styles . float . left + '">Bonus Attribute:</span> '  +  bonusAttrButton ) 
365+             listItems . push ( '<span style="' + styles . float . left + '">Bonus Attribute:</span> '  +  bonusAttrButton ) ; 
363366        } 
364367
365368        if ( ! state [ state_name ] . config . auto_roll_save ) { 
@@ -393,9 +396,9 @@ var Concentration = Concentration || (function() {
393396        makeAndSendMenu ( menu_text ,  'Advantage Menu' ,  'gm' ) ; 
394397    } , 
395398
396-     makeAndSendMenu  =  ( contents ,  title ,  whisper ,  callback )  =>  { 
399+     makeAndSendMenu  =  ( contents ,  title ,  whisper   /* , callback */ )  =>  { 
397400        title  =  ( title  &&  title  !=  '' )  ? makeTitle ( title )  : '' ; 
398-         whisper  =  ( whisper  &&  whisper  !==  '' )  ? ' /w '   +   whisper   +   ' '  : '' ; 
401+         whisper  =  ( whisper  &&  whisper  !==  '' )  ? ` /w " ${ whisper } " `   : '' ; 
399402        sendChat ( script_name ,  whisper  +  '<div style="' + styles . menu + styles . overflow + '">' + title + contents + '</div>' ,  null ,  { noarchive :true } ) ; 
400403    } , 
401404
@@ -416,12 +419,14 @@ var Concentration = Concentration || (function() {
416419        return  list ; 
417420    } , 
418421
422+ /* 
419423    pre_log = (message) => { 
420424        log('---------------------------------------------------------------------------------------------'); 
421425        if(!message){ return; } 
422426        log(message); 
423427        log('---------------------------------------------------------------------------------------------'); 
424428    }, 
429+     */ 
425430
426431    checkInstall  =  ( )  =>  { 
427432        if ( ! _ . has ( state ,  state_name ) ) { 
@@ -430,13 +435,15 @@ var Concentration = Concentration || (function() {
430435        setDefaults ( ) ; 
431436
432437        log ( script_name  +  ' Ready! Command: !' + state [ state_name ] . config . command ) ; 
433-         if ( state [ state_name ] . config . debug ) {  makeAndSendMenu ( script_name  +  ' Ready! Debug On.' ,  '' ,  'gm' )  } 
438+         if ( state [ state_name ] . config . debug ) {  makeAndSendMenu ( script_name  +  ' Ready! Debug On.' ,  '' ,  'gm' ) ;  } 
434439    } , 
435440
436441    registerEventHandlers  =  ( )  =>  { 
437442        on ( 'chat:message' ,  handleInput ) ; 
438443        on ( 'change:graphic:bar' + state [ state_name ] . config . bar + '_value' ,  handleGraphicChange ) ; 
439444        on ( 'change:graphic:statusmarkers' ,  handleStatusMarkerChange ) ; 
445+         // Add tokenMod observer so changes made with TM will trigger a conc. check --Oosh 
446+         if  ( typeof ( TokenMod )  ===  'object' )  TokenMod . ObserveTokenChange ( handleGraphicChange ) ; 
440447    } , 
441448
442449    setDefaults  =  ( reset )  =>  { 
@@ -499,12 +506,12 @@ var Concentration = Concentration || (function() {
499506    return  { 
500507        CheckInstall : checkInstall , 
501508        RegisterEventHandlers : registerEventHandlers 
502-     } 
509+     } ; 
503510} ) ( ) ; 
504511
505512on ( 'ready' , function ( )  { 
506513    'use strict' ; 
507514
508515    Concentration . CheckInstall ( ) ; 
509516    Concentration . RegisterEventHandlers ( ) ; 
510- } ) ; 
517+ } ) ; 
0 commit comments