thank you! the api code is: //----------------------------------------------------------------------- on("chat:message", function(msg) { var cmdName = "!magiccharges"; var msgTxt = msg.content; var cmdNamePortion = msgTxt.slice (0, cmdName.length); if (msg.type !== 'api') return; if (cmdNamePortion !== cmdName) return; sendChat(msg.who, "/w gm !!!"); var selectedTokenID = msg.selected[0]._id var getCharacterAttribute = function (tokenID) { var token = findObjs({type: 'graphic', _id: tokenID })[0]; var character = findObjs({type: 'character', _id: token.get('represents')})[0]; var attribute = findObjs({ type: 'attribute', characterid: character.id, name: 'Will' })[0]; var ChargeItem_BoomStick = findObjs({ type: 'attribute', characterid: character.id, name: 'ChargeItem_BoomStick' })[0]; var Current_ChargeItem_BoomStick = ChargeItem_BoomStick.get('current'); var Renas = findObjs({ type: 'attribute', characterid: character.id, name: 'Renas' })[0]; var Current_Renas = Renas.get('current'); var Spendedenas = findObjs({ type: 'attribute', characterid: character.id, name: 'Spendedenas' })[0]; var Current_Spendedenas = Spendedenas.get('current'); var HP = findObjs({ type: 'attribute', characterid: character.id, name: 'hp_total' })[0]; var Current_HP = HP.get('current'); if(Current_ChargeItem_BoomStick>1) { Current_ChargeItem_BoomStick--; } else { if(Current_Renas>10) { Current_Renas=Current_Renas - 10; Current_Spendedenas = Current_Spendedenas - 10 + 20; } else { Current_HP=Current_HP-10; } } ChargeItem_BoomStick.set('current', Current_ChargeItem_BoomStick); Renas.set('current', Current_Renas); Spendedenas.set('current', Current_Spendedenas); HP.set('current', Current_HP); } log (getCharacterAttribute(selectedTokenID)) }); //----------------------------------------------------------------------- and the macro code is: !magiccharges !power {{ --bgcolor| #914b31 --corners|10 --name| @{selected|character_name} attacked with his "Boom Stick" --leftsub|Range --rightsub|Piercing / Force / Thunder --Target| @{target||token_name} --Attack|[[ [$Atk] ?{Advantage? | Normal, 1d20 + @{selected|Weapon_rank_57} +@{selected|dexterity_total_bonus} - @{selected|Wounds}[wounds] | Advantage, 2d20kh1 + @{selected|Weapon_rank_57} +@{selected|dexterity_total_bonus} - @{selected|Wounds}[wounds] | Disadvantage, 2d20kl1 + @{selected|Weapon_rank_57} +@{selected|dexterity_total_bonus} - @{selected|Wounds}[wounds] } ]] vs **AC** [[@{target||AC}]] --?? $Atk < @{target||AC} ?? !Missed|**You missed!** --?? $Atk.base <> 1 AND $Atk >= @{target||AC} AND $Atk.base <> 20 ?? Hit - Piercing Damage| [[ [$Dmg] (1d6)*(0*@{target||Acid} + 0*@{target||Force} + 0*@{target||Lightning} + 0*@{target||Necrotic} + 0*@{target||Poison} + 0*@{target||Psychic} + 0*@{target||Radiant} + 0*@{target||Thunder} + 0*@{target||Cold} + 0*@{target||Fire} + 1*@{target||Piercing} + 0*@{target||Bludgeoning} + 0*@{target||Slashing} )]] --?? $Atk.base <> 1 AND $Atk >= @{target||AC} AND $Atk.base <> 20 ?? alterbar1|_target|@{target||token_id} _bar|1 _amount|-[^Dmg] _show|all --?? $Atk.base <> 1 AND $Atk >= @{target||AC} AND $Atk.base <> 20 ?? Hit - Force Damage| [[ [$Dmg2] (1d4)*(0*@{target||Acid} + 1*@{target||Force} + 0*@{target||Lightning} + 0*@{target||Necrotic} + 0*@{target||Poison} + 0*@{target||Psychic} + 0*@{target||Radiant} + 0*@{target||Thunder} + 0*@{target||Cold} + 0*@{target||Fire} + 0*@{target||Piercing} + 0*@{target||Bludgeoning} + 0*@{target||Slashing} )]] --?? $Atk.base <> 1 AND $Atk >= @{target||AC} AND $Atk.base <> 20 ?? alterbar2|_target|@{target||token_id} _bar|1 _amount|-[^Dmg2] _show|all --?? $Atk.base <> 1 AND $Atk >= @{target||AC} AND $Atk.base <> 20 ?? Hit - Thunder Damage| [[ [$Dmg3] (1d2)*(0*@{target||Acid} + 0*@{target||Force} + 0*@{target||Lightning} + 0*@{target||Necrotic} + 0*@{target||Poison} + 0*@{target||Psychic} + 0*@{target||Radiant} + 1*@{target||Thunder} + 0*@{target||Cold} + 0*@{target||Fire} + 0*@{target||Piercing} + 0*@{target||Bludgeoning} + 0*@{target||Slashing} )]] --?? $Atk.base <> 1 AND $Atk >= @{target||AC} AND $Atk.base <> 20 ?? alterbar3|_target|@{target||token_id} _bar|1 _amount|-[^Dmg3] _show|all --?? $Atk.base <> 1 AND $Atk.base == 20 ?? Critical - Piercing Damage| [[ [[ [$Crit] (2d6)*(0*@{target||Acid} + 0*@{target||Force} + 0*@{target||Lightning} + 0*@{target||Necrotic} + 0*@{target||Poison} + 0*@{target||Psychic} + 0*@{target||Radiant} + 0*@{target||Thunder} + 0*@{target||Cold} + 0*@{target||Fire} + 1*@{target||Piercing} + 0*@{target||Bludgeoning} + 0*@{target||Slashing} )]] --?? $Atk.base <> 1 AND $Atk.base == 20 ?? alterbar4|_target|@{target||token_id} _bar|1 _amount|-[^Crit] _show|all --?? $Atk.base <> 1 AND $Atk.base == 20 ?? Critical - Force Damage| [[ [[ [$Crit2] (2d4)*(0*@{target||Acid} + 1*@{target||Force} + 0*@{target||Lightning} + 0*@{target||Necrotic} + 0*@{target||Poison} + 0*@{target||Psychic} + 0*@{target||Radiant} + 0*@{target||Thunder} + 0*@{target||Cold} + 0*@{target||Fire} + 0*@{target||Piercing} + 0*@{target||Bludgeoning} + 0*@{target||Slashing} )]] --?? $Atk.base <> 1 AND $Atk.base == 20 ?? alterbar5|_target|@{target||token_id} _bar|1 _amount|-[^Crit2] _show|all --?? $Atk.base <> 1 AND $Atk.base == 20 ?? Critical - Thunder Damage| [[ [[ [$Crit3] (2d2)*(0*@{target||Acid} + 0*@{target||Force} + 0*@{target||Lightning} + 0*@{target||Necrotic} + 0*@{target||Poison} + 0*@{target||Psychic} + 0*@{target||Radiant} + 1*@{target||Thunder} + 0*@{target||Cold} + 0*@{target||Fire} + 0*@{target||Piercing} + 0*@{target||Bludgeoning} + 0*@{target||Slashing} )]] --?? $Atk.base <> 1 AND $Atk.base == 20 ?? alterbar6|_target|@{target||token_id} _bar|1 _amount|-[^Crit3] _show|all --?? $Atk.base == 1 ?? !|**Fumble!** }} the !power macro alone works. the !magiccharges alone works. together i get the error: " Your scripts are currently disabled due to an error that was detected. Please make appropriate changes to your scripts and click the "Save Script" button and we'll attempt to start running them again. More info... For reference, the error message generated was: TypeError: Cannot read property '0' of undefined
TypeError: Cannot read property '0' of undefined
at apiscript.js:7207:35
at eval (eval at <anonymous> (/home/node/d20-api-server/api.js:154:1), <anonymous>:65:16)
at Object.publish (eval at <anonymous> (/home/node/d20-api-server/api.js:154:1), <anonymous>:70:8)
at /home/node/d20-api-server/api.js:1648:12
at /home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:560
at hc (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:39:147)
at Kd (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:546)
at Id.Mb (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:489)
at Zd.Ld.Mb (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:94:425)
at /home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:111:400 " thank you for your help!