Roll20 uses cookies to improve your experience on our site. Cookies enable you to enjoy certain features, social sharing functionality, and tailor message and display ads to your interests on our site and others. They also help us understand how our site is being used. By continuing to use our site, you consent to our use of cookies. Update your cookie preferences .
×
Create a free account
This post has been closed. You can still view previous posts, but you can't post any new replies.

5e Shaped Companion v6+

1488117379
Lucian
Pro
API Scripter
6.4.0 (2017-02-26) Bug Fixes config: Update hide settings for 9.x ( 731819a ), closes #339 startup: Clean up all SHAPED_VERSION_TESTER characters ( f7b6d39 ) Features spells: Make automatic spell slot processing a per-character setting ( 6c0ae62 ), closes #340 rests: Make long rest HP behaviour more configurable ( b8fa697 ), closes #284
1488117483
Lucian
Pro
API Scripter
BTW, if anyone who helped out with testing the duplicate attribute thing still has DEBUG logging turned on and would like to turn it off, you can run thw following: !logLevel 5eShapedCompanion INFO Cheers,
1488120021

Edited 1488120034
Zym
Sheet Author
Cheers, I'll be running both the updated sheet and updated companion in my game. I have a few hours to test without having the prepare for the game, so I will be reporting things today. (If there is anything I can report)
So far things seem to be working well for me - I'm cautiously optimistic.  Thanks again for all your hard work!
1488121578
Lucian
Pro
API Scripter
6.4.1 (2017-02-26) Bug Fixes startup: Scale timeout to size of campaign ( 155e45a ), closes #341 Although the fixes in 6.3/6.4 should have fixed the problem for 90% of people, those of you with big campaigns (e.g. SKT) may find you still get the strange error on startup. I've adjusted the timeout to  be scaled by the size of the campaign, which should help sort this out. Thanks to Roman for letting me play around in his campaign to tweak this - and for suggesting scaling the timeout!
1488124155

Edited 1488124188
Zym
Sheet Author
The good news is as of 6.4.0 the imports are working fine now in Chrome. :-)
I have Shaped sheet 9.2.3 and ShapedCompanionScript 6.4.1.  When I initially ran it, everything seemed fine.  I just attempted an command !shaped-abilities --attacksMacro on a token representing a homebrewed familiar/NPC and I got this error: Starting webworker script..." "Loading 874 translation strings to worker..." "5eShapedCompanion 1488128944833 INFO : -=> ShapedScripts v6.4.1 <=-" TypeError: Cannot read property 'split' of undefined TypeError: Cannot read property 'split' of undefined at Object.versionCompare (apiscript.js:2052:21) at apiscript.js:124:16 at /home/node/d20-api-server/api.js:2134:5 at Function._.each._.forEach (/home/node/d20-api-server/node_modules/underscore/underscore.js:153:9) at handleSheetWorkerComplete (/home/node/d20-api-server/api.js:2133:5) at later [as _onTimeout] (/home/node/d20-api-server/node_modules/underscore/underscore.js:828:25) at Timer.listOnTimeout (timers.js:92:15) Any ideas?
1488130574
Lucian
Pro
API Scripter
Mark W. said: I have Shaped sheet 9.2.3 and ShapedCompanionScript 6.4.1.  When I initially ran it, everything seemed fine.  I just attempted an command !shaped-abilities --attacksMacro on a token representing a homebrewed familiar/NPC and I got this error: Starting webworker script..." "Loading 874 translation strings to worker..." "5eShapedCompanion 1488128944833 INFO : -=> ShapedScripts v6.4.1 <=-" TypeError: Cannot read property 'split' of undefined TypeError: Cannot read property 'split' of undefined at Object.versionCompare (apiscript.js:2052:21) at apiscript.js:124:16 at /home/node/d20-api-server/api.js:2134:5 at Function._.each._.forEach (/home/node/d20-api-server/node_modules/underscore/underscore.js:153:9) at handleSheetWorkerComplete (/home/node/d20-api-server/api.js:2133:5) at later [as _onTimeout] (/home/node/d20-api-server/node_modules/underscore/underscore.js:828:25) at Timer.listOnTimeout (timers.js:92:15) Any ideas? Hi Mark, That error actually occurs at API startup/restart - it won't have anything to do with the token you've used it on. It's weird that you're getting this in a campaign that previously worked.... Have you tried to restarting the API sandbox?
1488131266
Lucian
Pro
API Scripter
6.4.2 (2017-02-26) Bug Fixes startup: Deal with really old sheets not being able to report version ( 232c41e ) startup: Try to avoid version not being set if API is really slow ( 3f6cbd2 ) Those of you getting the error reported by Mark above should try this version - I'm hoping it will fix the problem. I'm getting a little tired of trying to work around the fact that the onSheetWorkerCompleted callback just doesn't work like it's supposed to... sigh.
Hi Mark, That error actually occurs at API startup/restart - it won't have anything to do with the token you've used it on. It's weird that you're getting this in a campaign that previously worked.... Have you tried to restarting the API sandbox? I did, a few times.  I got what appears to be the same error.
Mark W. said: Hi Mark, That error actually occurs at API startup/restart - it won't have anything to do with the token you've used it on. It's weird that you're getting this in a campaign that previously worked.... Have you tried to restarting the API sandbox? I did, a few times.  I got what appears to be the same error. Try again with version 6.4.2 of the companion script.  I was just getting ready to report startup crashes on 6.4.1 when I saw the update notice.  Loaded the new version and the API crash went away.
1488135998

Edited 1488136272
Hey sorry if this was asked already but I installed both the shaped sheet and this from github and I keep having problems with importing "ERROR: You cannot set the imgsrc or avatar of an object unless you use an image that is in your Roll20 Library. See the API documentation for more info." I have tried both copying the token to my library and uploading a new token, but both fail, this didn't happen with the old script Note that avatars will ony successfully be set for token images from your library, not marketplace or web content. This is due to security restrictions within the Roll20 platform. If you really want an image as a character avatar, please unpload it to your library and then create a token from it before doing your import. I don't quite understand this, uploading an image to your library is not enough?
Sammun said: Hey sorry if this was asked already but I installed both the shaped sheet and this from github and I keep having problems with importing [quote] "ERROR: You cannot set the imgsrc or avatar of an object unless you use an image that is in your Roll20 Library. See the API documentation for more info." [/quote] I have tried both copying the token to my library and uploading a new token, but both fail, this didn't happen with the old script By any chance when you uploaded a new token, did it appear twice in your uploads? I've been having this happen recently and the image setting being errored, I think it's a roll20 issue (seems to be keeping them in the library but for some reason deleting the hi-def copy of the image which is what the script is trying to link to and errors because it can't find it)
1488136841
Lucian
Pro
API Scripter
Sammun said: Hey sorry if this was asked already but I installed both the shaped sheet and this from github and I keep having problems with importing "ERROR: You cannot set the imgsrc or avatar of an object unless you use an image that is in your Roll20 Library. See the API documentation for more info." I have tried both copying the token to my library and uploading a new token, but both fail, this didn't happen with the old script Note that avatars will ony successfully be set for token images from your library, not marketplace or web content. This is due to security restrictions within the Roll20 platform. If you really want an image as a character avatar, please unpload it to your library and then create a token from it before doing your import. I don't quite understand this, uploading an image to your library is not enough? Hi Sammun, What are you trying to do? What commands have you run? What isn't working? The error you are are seeing is generated by Roll20 and is most likely not significant to what you are trying to do. Is there anything the matter other than error message in the log?
Lucian said: Sammun said: Hey sorry if this was asked already but I installed both the shaped sheet and this from github and I keep having problems with importing "ERROR: You cannot set the imgsrc or avatar of an object unless you use an image that is in your Roll20 Library. See the API documentation for more info." I have tried both copying the token to my library and uploading a new token, but both fail, this didn't happen with the old script Note that avatars will ony successfully be set for token images from your library, not marketplace or web content. This is due to security restrictions within the Roll20 platform. If you really want an image as a character avatar, please unpload it to your library and then create a token from it before doing your import. I don't quite understand this, uploading an image to your library is not enough? Hi Sammun, What are you trying to do? What commands have you run? What isn't working? The error you are are seeing is generated by Roll20 and is most likely not significant to what you are trying to do. Is there anything the matter other than error message in the log? I am getting no errors from the script I believe, I am also using "!shaped-import-statblock" command and lastly these three lines of code appear "5eShapedCompanion 1488136822382 INFO : Importing statblocks for tokens [{\"_id\":\"-KdvrRr1Qt8h9la5as5v\",\"_pageid\":\"-KdvYTIYu9QMNuVZtMPy\",\"left\":665,\"top\":175,\"width\":70,\"height\":70,\"rotation\":0,\"layer\":\"objects\",\"isdrawing\":false,\"flipv\":false,\"fliph\":false,\"imgsrc\":\"<a href="https://s3.amazonaws.com/files.d20.io/images/29403516/mYYFtQB-8dd4vTq5Umfzow/max.png?1488135631\&quot;,\&quot;name\&quot;:\&quot;\&quot;,\&quot;gmnotes\&quot;:\&quot;Warlock%20of%20the%20Fiend%3Cbr%3EMedium%20humanoid%20%28any%20race%29%2C%20any%20alignment%3Cbr%3EArmor%20Class%2012%20%2815%20with%20mage%20armor%29%3Cbr%3EHit%20Points%2078%20%2812d8+24%29%3Cbr%3ESpeed%2030%20ft.%3Cbr%3ESTR%20DEX%20CON%20INT%20WIS%20CHA%3Cbr%3E10%20%28+0%2914%20%28+2%2915%20%28+2%2912%20%28+1%2912%20%28+1%2918%20%28+4%29%3Cbr%3ESaving%20Throws%20Wis%20+4%2C%20Cha%20+7%3Cbr%3ESkills%20Arcana%20+4%2C%20Deception%20+7%2C%20Persuasion%20+7%2C%20Religion%20+4%3Cbr%3EDamage%20Resistances%20slashing%20damage%20from%20nonmagical%20attacks%20not%20made%20with%20silvered%20weapons%3Cbr%3ESenses%20darkvision%2060%20ft.%2C%20passive%20Perception%2011%3Cbr%3ELanguages%20any%20two%20languages%20%28usually%20Abyssal%20or%20Infernal%29%3Cbr%3EChallenge%207%20%282%2C900%20XP%29%3Cbr%3EInnate%20Spellcasting.%20The%20warlock%u2019s%20innate%20spellcasting%20ability%20is%20Charisma.%20It%20can%20innately%20cast%20the%20following%20spells%20%28spell%20save%20DC%2015%29%2C%20requiring%20no%20material%20components%3A%3Cbr%3EAt%20will%3A%20alter%20self%2C%20false%20life%2C%20levitate%20%28self%20only%29%2C%20mage%20armor%20%28self%20only%29%2C%20silent%20image%3Cbr%3E1/day%20each%3A%20feeblemind%2C%20finger%20of%20death%2C%20plane%20shift%3Cbr%3ESpellcasting.%20The%20warlock%20is%20a%20l7th-level%20spellcaster.%20Its%20spellcasting%20ability%20is%20Charisma%20%28spell%20save%20DC%2015%2C%20+7%20to%20hit%20with%20spell%20attacks%29.%20It%20regains%20its%20expended%20spell%20slots%20when%20it%20finishes%20a%20short%20or%20long%20rest.%20It%20knows%20the%20following%20warlock%20spells%3A%3Cbr%3ECantrips%20%28at%20will%29%3A%20eldritch%20blast%2C%20fire%20bolt%2C%20friends%2C%20mage%20hand%2C%20minor%20illusion%2C%20prestidigitation%2C%20shocking%20grasp%3Cbr%3E1st-5th%20level%20%284%205th-level%20slots%29%3A%20banishment%2C%20burning%20hands%2C%20flame%20strike%2C%20hellish%20rebuke%2C%20magic%20circle%2C%20scorching%20ray%2C%20scrying%2C%20stinking%20cloud%2C%20suggestion%2C%20wall%20of%20fire%3Cbr%3EDark%20One%27s%20Own%20Luck%20%28Recharges%20after%20a%20Short%20or%20Long%20Rest%29.%20When%20the%20warlock%20makes%20an%20ability%20check%20or%20saving%20throw%2C%20it%20can%20add%20a%20d10%20to%20the%20roll.%20It%20can%20do%20this%20after%20the%20roll%20is%20made%20but%20before%20any%20of%20the%20roll%u2019s%20effects%20occur.%3Cbr%3EActions%3Cbr%3EMace.%20Melee%20Weapon%20Attack%3A%20+3%20to%20hit%2C%20reach%205%20ft.%2C%20one%20target.%20Hit%3A%203%20%281d6%29%20bludgeoning%20damage%20plus%2010%20%283d6%29%20fire%20damage.%3Cbr%3E\&quot;,\&quot;controlledby\&quot;:\&quot;\&quot;,\&quot;bar1_value\&quot;:\&quot;\&quot;,\&quot;bar1_max\&quot;:\&quot;\&quot;,\&quot;bar1_link\&quot;:\&quot;\&quot;,\&quot;bar2_value\&quot;:\&quot;\&quot;,\&quot;bar2_max\&quot;:\&quot;\&quot;,\&quot;bar2_link\&quot;:\&quot;\&quot;,\&quot;bar3_value\&quot;:\&quot;\&quot;,\&quot;bar3_max\&quot;:\&quot;\&quot;,\&quot;bar3_link\&quot;:\&quot;\&quot;,\&quot;represents\&quot;:\&quot;\&quot;,\&quot;aura1_radius\&quot;:\&quot;\&quot;,\&quot;aura1_color\&quot;:\&quot;#FFFF99\&quot;,\&quot;aura1_square\&quot;:false,\&quot;aura2_radius\&quot;:\&quot;\&quot;,\&quot;aura2_color\&quot;:\&quot;#59E594\&quot;,\&quot;aura2_square\&quot;:false,\&quot;tint_color\&quot;:\&quot;transparent\&quot;,\&quot;statusmarkers\&quot;:\&quot;\&quot;,\&quot;showname\&quot;:false,\&quot;showplayers_name\&quot;:false,\&quot;showplayers_bar1\&quot;:false,\&quot;showplayers_bar2\&quot;:false,\&quot;showplayers_bar3\&quot;:false,\&quot;showplayers_aura1\&quot;:false,\&quot;showplayers_aura2\&quot;:false,\&quot;playersedit_name\&quot;:true,\&quot;playersedit_bar1\&quot;:true,\&quot;playersedit_bar2\&quot;:true,\&quot;playersedit_bar3\&quot;:true,\&quot;playersedit_aura1\&quot;:true,\&quot;playersedit_aura2\&quot;:true,\&quot;light_radius\&quot;:\&quot;\&quot;,\&quot;light_dimradius\&quot;:\&quot;\&quot;,\&quot;light_otherplayers\&quot;:false,\&quot;light_hassight\&quot;:false,\&quot;light_angle\&quot;:\&quot;\&quot;,\&quot;light_losangle\&quot;:\&quot;\&quot;,\&quot;light_multiplier\&quot;:1,\&quot;sides\&quot;:\&quot;\&quot;,\&quot;currentSide\&quot;:0,\&quot;lastmove\&quot;:\&quot;632,146\&quot;,\&quot;_type\&quot;:\&quot;graphic\&quot;,\&quot;_subtype\&quot;:\&quot;token\&quot;,\&quot;_cardid\&quot;:\&quot;\" rel="nofollow">https://s3.amazonaws.com/files.d20.io/images/29403516/mYYFtQB-8dd4vTq5Umfzow/max.png?1488135631\",\"name\":\"\",\"gmnotes\":\"Warlock%20of%20the%20Fiend%3Cbr%3EMedium%20humanoid%20%28any%20race%29%2C%20any%20alignment%3Cbr%3EArmor%20Class%2012%20%2815%20with%20mage%20armor%29%3Cbr%3EHit%20Points%2078%20%2812d8+24%29%3Cbr%3ESpeed%2030%20ft.%3Cbr%3ESTR%20DEX%20CON%20INT%20WIS%20CHA%3Cbr%3E10%20%28+0%2914%20%28+2%2915%20%28+2%2912%20%28+1%2912%20%28+1%2918%20%28+4%29%3Cbr%3ESaving%20Throws%20Wis%20+4%2C%20Cha%20+7%3Cbr%3ESkills%20Arcana%20+4%2C%20Deception%20+7%2C%20Persuasion%20+7%2C%20Religion%20+4%3Cbr%3EDamage%20Resistances%20slashing%20damage%20from%20nonmagical%20attacks%20not%20made%20with%20silvered%20weapons%3Cbr%3ESenses%20darkvision%2060%20ft.%2C%20passive%20Perception%2011%3Cbr%3ELanguages%20any%20two%20languages%20%28usually%20Abyssal%20or%20Infernal%29%3Cbr%3EChallenge%207%20%282%2C900%20XP%29%3Cbr%3EInnate%20Spellcasting.%20The%20warlock%u2019s%20innate%20spellcasting%20ability%20is%20Charisma.%20It%20can%20innately%20cast%20the%20following%20spells%20%28spell%20save%20DC%2015%29%2C%20requiring%20no%20material%20components%3A%3Cbr%3EAt%20will%3A%20alter%20self%2C%20false%20life%2C%20levitate%20%28self%20only%29%2C%20mage%20armor%20%28self%20only%29%2C%20silent%20image%3Cbr%3E1/day%20each%3A%20feeblemind%2C%20finger%20of%20death%2C%20plane%20shift%3Cbr%3ESpellcasting.%20The%20warlock%20is%20a%20l7th-level%20spellcaster.%20Its%20spellcasting%20ability%20is%20Charisma%20%28spell%20save%20DC%2015%2C%20+7%20to%20hit%20with%20spell%20attacks%29.%20It%20regains%20its%20expended%20spell%20slots%20when%20it%20finishes%20a%20short%20or%20long%20rest.%20It%20knows%20the%20following%20warlock%20spells%3A%3Cbr%3ECantrips%20%28at%20will%29%3A%20eldritch%20blast%2C%20fire%20bolt%2C%20friends%2C%20mage%20hand%2C%20minor%20illusion%2C%20prestidigitation%2C%20shocking%20grasp%3Cbr%3E1st-5th%20level%20%284%205th-level%20slots%29%3A%20banishment%2C%20burning%20hands%2C%20flame%20strike%2C%20hellish%20rebuke%2C%20magic%20circle%2C%20scorching%20ray%2C%20scrying%2C%20stinking%20cloud%2C%20suggestion%2C%20wall%20of%20fire%3Cbr%3EDark%20One%27s%20Own%20Luck%20%28Recharges%20after%20a%20Short%20or%20Long%20Rest%29.%20When%20the%20warlock%20makes%20an%20ability%20check%20or%20saving%20throw%2C%20it%20can%20add%20a%20d10%20to%20the%20roll.%20It%20can%20do%20this%20after%20the%20roll%20is%20made%20but%20before%20any%20of%20the%20roll%u2019s%20effects%20occur.%3Cbr%3EActions%3Cbr%3EMace.%20Melee%20Weapon%20Attack%3A%20+3%20to%20hit%2C%20reach%205%20ft.%2C%20one%20target.%20Hit%3A%203%20%281d6%29%20bludgeoning%20damage%20plus%2010%20%283d6%29%20fire%20damage.%3Cbr%3E\",\"controlledby\":\"\",\"bar1_value\":\"\",\"bar1_max\":\"\",\"bar1_link\":\"\",\"bar2_value\":\"\",\"bar2_max\":\"\",\"bar2_link\":\"\",\"bar3_value\":\"\",\"bar3_max\":\"\",\"bar3_link\":\"\",\"represents\":\"\",\"aura1_radius\":\"\",\"aura1_color\":\"#FFFF99\",\"aura1_square\":false,\"aura2_radius\":\"\",\"aura2_color\":\"#59E594\",\"aura2_square\":false,\"tint_color\":\"transparent\",\"statusmarkers\":\"\",\"showname\":false,\"showplayers_name\":false,\"showplayers_bar1\":false,\"showplayers_bar2\":false,\"showplayers_bar3\":false,\"showplayers_aura1\":false,\"showplayers_aura2\":false,\"playersedit_name\":true,\"playersedit_bar1\":true,\"playersedit_bar2\":true,\"playersedit_bar3\":true,\"playersedit_aura1\":true,\"playersedit_aura2\":true,\"light_radius\":\"\",\"light_dimradius\":\"\",\"light_otherplayers\":false,\"light_hassight\":false,\"light_angle\":\"\",\"light_losangle\":\"\",\"light_multiplier\":1,\"sides\":\"\",\"currentSide\":0,\"lastmove\":\"632,146\",\"_type\":\"graphic\",\"_subtype\":\"token\",\"_cardid\":\"\</a>"}]" "5eShapedCompanion 1488136822404 INFO : {\"monsters\":[{\"name\":\"Warlock of the Fiend\",\"size\":\"Medium\",\"type\":\"humanoid (any race)\",\"alignment\":\"any alignment\",\"AC\":\"12 (15 with mage armor)\",\"HP\":\"78 (12d8+24)\",\"speed\":\"30 ft.\",\"strength\":10,\"dexterity\":14,\"constitution\":15,\"intelligence\":12,\"wisdom\":12,\"charisma\":18,\"savingThrows\":\"Wis +4, Cha +7\",\"skills\":\"Arcana +4, Deception +7, Persuasion +7, Religion +4\",\"damageResistances\":\"slashing damage from nonmagical attacks not made with silvered weapons\",\"senses\":\"darkvision 60 ft.\",\"languages\":\"any two languages (usually Abyssal or Infernal)\",\"challenge\":\"7\",\"traits\":[{\"name\":\"Innate Spellcasting\",\"text\":\"The warlock's innate spellcasting ability is Charisma. It can innately cast the following spells (spell save DC 15), requiring no material components:\\nAt will: alter self, false life, levitate (self only), mage armor (self only), silent image\\n1/day each: feeblemind, finger of death, plane shift\"},{\"name\":\"Spellcasting\",\"text\":\"The warlock is a l7th-level spellcaster. Its spellcasting ability is Charisma (spell save DC 15, +7 to hit with spell attacks). It regains its expended spell slots when it finishes a short or long rest. It knows the following warlock spells:\\nCantrips (at will): eldritch blast, fire bolt, friends, mage hand, minor illusion, prestidigitation, shocking grasp\\n1st-5th level (4 5th-level slots): banishment, burning hands, flame strike, hellish rebuke, magic circle, scorching ray, scrying, stinking cloud, suggestion, wall of fire\"},{\"name\":\"Dark One's Own Luck\",\"recharge\":\"Recharges after a Short or Long Rest\",\"text\":\"When the warlock makes an ability check or saving throw, it can add a d10 to the roll. It can do this after the roll is made but before any of the roll's effects occur.\"}],\"actions\":[{\"name\":\"Mace\",\"text\":\"Melee Weapon Attack: +3 to hit, reach 5 ft., one target. Hit: 3 (1d6) bludgeoning damage plus 10 (3d6) fire damage.\"}]}]}" "5eShapedCompanion 1488136822406 ERROR : Failed to find or create character for monster Warlock of the Fiend"
1488137816
Lucian
Pro
API Scripter
Hi Sammun, Well done, you've found a bug :-) The bug is that error messages from !shaped-import-statblock are being suppressed. I will fix this ASAP. In the meantime, the most likely explanation is that you have already got a character called 'Warlock of the Fiend' and the script is declining to overwrite it unless you tell it to --replace. Normally it would tell you this, but in my recent refactor, I broke the bit that displays this message for !shaped-import-statblock. Sorry!
Trying to import a spell to a pc and i get this "5eShapedCompanion 1488139001452 ERROR : TypeError: Cannot read property 'name' of undefined" "5eShapedCompanion 1488139001462 ERROR : TypeError: Cannot read property 'name' of undefined\n at apiscript.js:5704:51\n at Function._.map._.collect (/home/node/d20-api-server/node_modules/underscore/underscore.js:172:24)\n at apiscript.js:5704:17"
1488139550
Lucian
Pro
API Scripter
6.4.3 (2017-02-26) Bug Fixes import-statblock: Fix error reporting + bug with statblock import ( 45e4014 ) This should fix your problem Sammun.
1488139869

Edited 1488140110
Lucian said: Hi Sammun, Well done, you've found a bug :-) The bug is that error messages from !shaped-import-statblock are being suppressed. I will fix this ASAP. In the meantime, the most likely explanation is that you have already got a character called 'Warlock of the Fiend' and the script is declining to overwrite it unless you tell it to --replace. Normally it would tell you this, but in my recent refactor, I broke the bit that displays this message for !shaped-import-statblock. Sorry! Well yes I had a duplicate, but even after deleting the duplicate I would still get the error. Thanks for the fix anyways
1488139997

Edited 1488140056
Thorsten
KS Backer
Long rest on a character fails with "5eShapedCompanion 1488139904354 ERROR : TypeError: finalOptions.character.forEach is not a function" "5eShapedCompanion 1488139904354 ERROR : TypeError: finalOptions.character.forEach is not a function\n at Command.handle (apiscript.js:15072:31)\n at Object.processCommand (apiscript.js:15164:32)\n at handlerWrapper (apiscript.js:20149:18)\n at eval (eval at &lt;anonymous&gt; (/home/node/d20-api-server/api.js:146:34), &lt;anonymous&gt;:65:16)\n at Object.publish (eval at &lt;anonymous&gt; (/home/node/d20-api-server/api.js:146:34), &lt;anonymous&gt;:70:8)\n at /home/node/d20-api-server/api.js:1510:12\n at /home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:560\n at hc (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:39:147)\n at Kd (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:546)\n at Id.Mb (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:93:489)\n at Ld.Mb (/home/node/d20-api-server/node_modules/firebase/lib/firebase-node.js:94:425)" I see you fixing Long Rest things above so this doesn't appear to be universally broken? Should I move that character into the Shaped Testing campaign for further investigation? Clarification that's with 6.4.3.
1488140508

Edited 1488141019
Another thing: When I imported with !shaped-import-statblock my players where able to see the whisper with the info. that's a screen from the player's side here's the output "settings.updateShapedD20" "abilityChecks.updateInitiative" "abilityChecks.updateInitiative" "savingThrows.updateMacro" "savingThrows.update" "spells.updateDCAndAttack" "abilities.update" "proficiencyBonus.update" "savingThrows.update" "spells.updateDCAndAttack" "savingThrows.updateMacro" "savingThrows.updateMacro" "settings.updateWeightSystem" "equipment.updateEncumbered" "equipment.updateHeavilyEncumbered" "spells.generateHigherLevelQueries" "initialize.sheetOpened" "sumRepeating" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "sumRepeating" "sumRepeating" "abilities.update" "initialize.generateSkills" "abilityChecks.updateMacro" "equipment.updateWeight" "equipment.updateWeight" "equipment.updateWeight" "abilityChecks.updateSkill" "abilities.update" "spells.updateDCAndAttack" "abilityChecks.updateInitiative" "equipment.updateCarryingCapacity" "equipment.updateMaxPushDragLift" "abilities.update" "spells.updateDCAndAttack" "abilityChecks.updateInitiative" "savingThrows.update" "abilities.update" "spells.updateDCAndAttack" "abilityChecks.updateInitiative" "savingThrows.update" "abilities.update" "spells.updateDCAndAttack" "abilityChecks.updateInitiative" "savingThrows.update" "abilities.update" "spells.updateDCAndAttack" "abilityChecks.updateInitiative" "savingThrows.update" "abilities.update" "spells.updateDCAndAttack" "abilityChecks.updateInitiative" "savingThrows.update" "abilityChecks.updateSkill" "sumRepeating" "abilityChecks.updateSkill" "abilityChecks.updateSkill" "sumRepeating" "abilityChecks.updateSkill" "sumRepeating" "abilityChecks.updateSkill" "sumRepeating" "abilityChecks.updateSkill" "abilityChecks.updateSkill" "sumRepeating" "abilityChecks.updateSkill" "abilityChecks.updateSkill" "sumRepeating" "abilityChecks.updateSkill" "abilityChecks.updateSkill" "sumRepeating" "abilityChecks.updateSkill" "savingThrows.updateMacro" "savingThrows.updateMacro" "savingThrows.updateMacro" "savingThrows.updateMacro" "savingThrows.updateMacro" "equipment.setAdvantageOnStealth" "equipment.updateWeight" "equipment.setAdvantageOnStealth" "equipment.updateWeight" "equipment.setAdvantageOnStealth" "equipment.updateWeight" "equipment.setAdvantageOnStealth" "equipment.updateWeight" "equipment.setAdvantageOnStealth" "equipment.updateWeight" "equipment.setAdvantageOnStealth" "equipment.updateWeight" "equipment.setAdvantageOnStealth" "equipment.updateWeight" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "abilityChecks.updateMacro" "npc.updateSize" "npc.updateAC" "npc.updateHPFromSRD" "speed.update" "savingThrows.updateFromSRD" "resistances.updateDamageResistancesVar" "senses.update" "npc.updateLanguages" "abilities.update" "npc.updateChallenge" "proficiencyBonus.update" "spells.updateDCAndAttack" "npc.switchTo" "abilityChecks.updateSkillsFromSRD" "abilityChecks.updateSkill" "hitDice.update" "savingThrows.update" "savingThrows.updateMacro" "npc.updateContent" "actions.update trait, action, reaction, legendaryaction, lairaction, regionaleffect undefined" "actions.updateChatMacro" "spells.findSpellcasting" "spells.parseSpellcasting" "spells.parseSpellcasting" "actions.updateChatMacro" "actions.updateChatMacro" "actions.updateChatMacro" "actions.updateChatMacro" "actions.updateChatMacro" "actions.updateChatMacro" "spells.updateDCAndAttack" "spells.updateHasSpellSlots" "spells.updateDCAndAttack" "spells.updateHasSpellSlots" "spells.updateChatMacro" "spells.updateChatMacro" "spells.updateShowHide" "spells.updateShowHide" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "spells.count" "actions.update trait -Kdw3goWDDoAsQJNwuQg" "actions.updateChatMacro" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.updateChatMacro" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.update" "spells.count" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide" "spells.updateShowHide"
1488141649
Lucian
Pro
API Scripter
Sammun said: Another thing: When I imported with !shaped-import-statblock my players where able to see the whisper with the info. that's a screen from the player's side here's the output WTF??? Does that mean that whispers are just hidden with CSS from players that aren't suppose to see them? That's insane. Urgh.
Got this error: TypeError: Cannot read property 'attribs' of undefined TypeError: Cannot read property 'attribs' of undefined at Worker.onmessage (/home/node/d20-api-server/api.js:2770:20) at ChildProcess. (/home/node/d20-api-server/node_modules/tiny-worker/lib/index.js:39:21) at emitTwo (events.js:100:13) at ChildProcess.emit (events.js:185:7) at handleMessage (internal/child_process.js:695:10) at Pipe.channel.onread (internal/child_process.js:440:11)
1488144291
Lucian
Pro
API Scripter
Lucian said: Sammun said: Another thing: When I imported with !shaped-import-statblock my players where able to see the whisper with the info. that's a screen from the player's side here's the output WTF??? Does that mean that whispers are just hidden with CSS from players that aren't suppose to see them? That's insane. Urgh. No... it means that I need to change the whole way I keep track of who I'm sending messages to. Aarrgh. @Dvergr76: You win today's prize for inadequate bug reporting. Versions? Commands? When? How? Pasting two lines of log with no other context doesn't cut it. If you're too busy to write a proper bug report, I'm too busy to help you. @Thorsten Ah yes. There's some code that deals with permissions when a non-GM runs commands, and it's broken. Because I almost never run commands as a non-GM myself, I didn't spot it. Will fix.
Hey Lucian I put a bug report in with my issue with spell importer.
Well dude. I'm in session. Sorry for being so inadequate.
Latest version from your github. I just updated it. Right before I posted it. Copy/pasted. You don't have to be such a f**king @$$hole about it.
Dvergr76 said: Latest version from your github. I just updated it. Right before I posted it. Copy/pasted. You don't have to be such a f**king @$$hole about it. Hey calm yourself he does alot of work for free on this. &nbsp;He's just asking for the same from you.
&gt;You don't have to be such a f**king @$$hole about it. Right back at you. @Lucan you should probably make FAQ to just copy\paste a link that will politely show people the door when they post like that instead of spending your valuable time writing an answer.
1488145530
Lucian
Pro
API Scripter
Dvergr76 said: Well dude. I'm in session. Sorry for being so inadequate. Sorry, I'm just grumpy because I've realised I have to rewrite my whole message output code to fix the problem Sammun reported. Still, fact remains, I can't help you with the information you've given me. My best guess at the moment is that you're running a version &lt; 6.4.0 and you're running into some of the bugs that were reported upthread. When you've finished your session and you've got time, give me some more info and I'll try and help you.
1488146559
Lucian
Pro
API Scripter
Woah there. Everyone take a deep breath. @Dvergr76, I'm sorry if you feel I'm being crappy about this. What you need to remember is that I spend an enormous amount of my spare time dealing with requests from people who expect the world for nothing in return. It gets immensely frustrating, particularly given that it actually stops me helping them when they don't provide enough information. I have to say this same thing to people many times a day, something that I and Kryx have written in all our threads, and all our documentation, that gets repeated ad nauseam in every context about getting support for software (especially free software). It's boring and annoying, and after a while, it makes me grouchy. Eventually, someone who submits a particularly egregious error report tips me over the edge and I make a point, partly to vent, but largely to try and drum it into everyone else that the bug reporting guidelines are not just arbitrary, they're there to ensure that I can actually help you fix your problem. And yes, it's also a courtesy thing; you may not have meant it that way, but when I've spent hundreds and hundreds of hours writing something that I give away for free, and then I spend even more hours trying to support people using it, also for no reward, it feels pretty crappy when someone just spits a two line error message back at me and expects me to magically make it go away, in despite of all the other time I've put into trying to educate people why that's not gonna happen. You were in a game session, I get that. You weren't just being lazy and rude, even though it felt that way to me because I had no other context to help me interpret it (believe me, there are plenty of people who post those kind of reports just because they can't be bothered). In future, I suggest that you wait until you've finished the session and you have time to report it properly; that way you won't waste your own or my time on something that doesn't help either of us. Now let's everyone take a chill pill and get back to trying to make things work better. :-)
1488146625
Lucian
Pro
API Scripter
Dvergr76 said: Latest version from your github. I just updated it. Right before I posted it. Copy/pasted. Ok. So is this happening on startup or are you running a command to trigger it?
1488147188
Lucian
Pro
API Scripter
6.4.4 (2017-02-26) Bug Fixes import-spell: Fix bug when importing duplicate spell ( 3ef693a ) rests: Fix error when resting as player not GM ( 0a7f157 ) This should fix Thorsten and Salicar's issues. Sammun's display interleaving thing will continue to happen until I rewrite my output code which may take a few days. Bummer.
1488148180

Edited 1488148617
Lucian said: 6.4.4 (2017-02-26) Bug Fixes import-spell: Fix bug when importing duplicate spell ( 3ef693a ) rests: Fix error when resting as player not GM ( 0a7f157 ) This should fix Thorsten and Salicar's issues. Sammun's display interleaving thing will continue to happen until I rewrite my output code which may take a few days. Bummer. Yep that did it! (spell fixed)thanks
1488148526

Edited 1488148749
Rests still seem to not work. 6.4.4 shaped 9.2.3 this is clicking the button or macro both failing. "5eShapedCompanion 1488148454219 ERROR : Error: Error: You do not have permission to make changes to character Zalini"
1488148952
Lucian
Pro
API Scripter
Salicar said: Rests still seem to not work. 6.4.4 shaped 9.2.3 this is clicking the button or macro both failing. "5eShapedCompanion 1488148454219 ERROR : Error: Error: You do not have permission to make changes to character Zalini" So are you 100% sure that the message it's giving you isn't actually correct? Are you listed under Controlled By for that character?
1488149063

Edited 1488149209
Lucian said: Salicar said: Rests still seem to not work. 6.4.4 shaped 9.2.3 this is clicking the button or macro both failing. "5eShapedCompanion 1488148454219 ERROR : Error: Error: You do not have permission to make changes to character Zalini" So are you 100% sure that the message it's giving you isn't actually correct? Are you listed under Controlled By for that character? I'm getting the same error. As a GM, I can rest all the player's characters, but when they try, they get 1488148654810 ERROR : Error: Error: You do not have permission to make changes to character Targon" and using 9.2.3 and 6.4.4 My and my Asst. GM both went through and made sure that the players all had both journals and edited/controlled by were set correctly and the issue is still occurring. Both me and my Asst. GM can rest anyone's characters though.
Im the gm i can do it. hes a player and can't. I rechecked him to make sure. I can invite you if need be.
1488149220
Lucian
Pro
API Scripter
Ok, let me double check this again.
bgb said: Mark W. said: Hi Mark, That error actually occurs at API startup/restart - it won't have anything to do with the token you've used it on. It's weird that you're getting this in a campaign that previously worked.... Have you tried to restarting the API sandbox? I did, a few times. &nbsp;I got what appears to be the same error. Try again with version 6.4.2 of the companion script. &nbsp;I was just getting ready to report startup crashes on 6.4.1 when I saw the update notice. &nbsp;Loaded the new version and the API crash went away. I'll give that a try. &nbsp;Thanks for the assist.
1488150802
Lucian
Pro
API Scripter
6.4.5 (2017-02-26) Bug Fixes rests: Fix error when resting as player not GM (again!) ( 8491e0c ) Sorry guys, that was some poor quality testing there. I *think* I've nailed it this time.
1488150971

Edited 1488151002
Hey, just wanted to post an update in here. Had a game today, and everything (except the rests thing, which has already been fixed) worked perfectly. No issues during play :) Latest version of script and sheet, as of 10 hours ago.
1488151028
Lucian
Pro
API Scripter
alexander h. said: Hey, just wanted to post an update in here. Had a game today, and everything (except the rests thing, which has already been fixed) worked perfectly. No issues during play :) Latest version of script and sheet, as of 10 hours ago. Hooray! Some good news!
awesome - reporting that the rest issue is resolved for my group. Thanks Lucian, appreciate you and all the hard work you do.
1488151452

Edited 1488151875
Zym
Sheet Author
I think this wrapping code Roll20 put on is causing problems eh? ;-) 9.2.3 and 6.4 still working absolutely fine.&nbsp; Upgraded most of my campaign which has been running from April last year with little effort actually, which is good because it started with shaped sheet v2. I lot of ironing out to do, mostly deleting old NPCs (conflicting with some newer options) and adding in new ones with more efficiency but otherwise I am pretty impressed with how things are going. :-)&nbsp; So thank you. I'd like to upgrade to 6.4.4 That duplicated spell fix would be nice.&nbsp;
1488152744
Zym
Sheet Author
Oh and if you want some entertainment, we streamed another game, available to watch&nbsp; here. This is non profit stream I just thought someone would like seeing their work put to good use. ;-)
@Salicar and Roman. Look if he's going to be rude to me I'll be rude right back. &nbsp;I am not a coder. I don't have any experience with coding other than BASIC on my Commodore 64 when I was 8 years old. I'm not that proficient in knowing what information to copy/paste into here.&nbsp; @Lucian I was only rude to you because you were rude to me first. There was no reason for you to publicly belittle me like that in the first place. You could say I was triggered. Yes, I know you spend lots of time on this and I appreciate it. I send money to Kryx and I can for you too. Just tell me how to send you some money and I'll glady donate.&nbsp; OK how about we just start over with this? The version I was using when that error came up is&nbsp;6.4.3. Here is a screen shot of the error I copy/pasted earlier. It only shows up on the API page. The script stuff isn't working in the tabletop, I assume because of this error.
1488155848
Lucian
Pro
API Scripter
Dvergr76 said: @Salicar and Roman. Look if he's going to be rude to me I'll be rude right back. &nbsp;I am not a coder. I don't have any experience with coding other than BASIC on my Commodore 64 when I was 8 years old. I'm not that proficient in knowing what information to copy/paste into here.&nbsp; @Lucian I was only rude to you because you were rude to me first. There was no reason for you to publicly belittle me like that in the first place. You could say I was triggered. Yes, I know you spend lots of time on this and I appreciate it. I send money to Kryx and I can for you too. Just tell me how to send you some money and I'll glady donate.&nbsp; OK how about we just start over with this? The version I was using when that error came up is&nbsp;6.4.3. Here is a screen shot of the error I copy/pasted earlier. It only shows up on the API page. The script stuff isn't working in the tabletop, I assume because of this error. This is the same error that other people were getting before, and I believe it's down to a Roll20 bug that I've been trying to work around. Your log output is odd though, because it's not what I'd expect in the case of this bug being triggered the way it was before. Any chance you can send a campaign invite (going to bed now, but will try and look at it tomorrow sometime)?
Lucian said: . Any chance you can send a campaign invite (going to bed now, but will try and look at it tomorrow sometime)? Absolutely.