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] Version 8+

1496839705
Kryx
Pro
Sheet Author
API Scripter
Since you are not a Pro user you'll have to wait until I release the latest to github. I'm in a stabilization stage so it'll end up on github within the next few weeks.
1496852397
Kryx
Pro
Sheet Author
API Scripter
14.2.4 Bug Fixes Fixed a bug where prepared_matters_var was not set on new character. Old characters can re-toggle that value on the spells section to have the chat output correct. Closes. #513: Spell preparation still bugged? Rests will now output a message even if they have not recharged anything: "Nothing recharged". Closes #514: Short rest doesn't output anything if there's nothing to recharge #512: Companion script-imported spell issues
Alright so just curious if I have a setting mismarked or if this is a possible error I should report. Version 14.2.3 I have built a new character but when casting spells and using class features with uses the numbers are not lowering. Example for class features is Lay on Hands I click o n it and say how many hp I am healing but after accepting the x/x uses doesn't change.  Same with spell slots and ammo (javelins) Is there a setting I am missing or do I need to report.  Or is this an API I need to install? Thanks
1496869109
Kryx
Pro
Sheet Author
API Scripter
Please see the changelog <a href="https://github.com/mlenser/roll20-character-sheets" rel="nofollow">https://github.com/mlenser/roll20-character-sheets</a>... for ammo and spell uses Other uses (offense, utility, class features) are working as far as I can see. If you're experiencing otherwise please open an issue with reproduction steps on a new character.
Got another question Under the modifiers section I tried referencing an attribute instead of putting in a solid number. &nbsp;Is this not allowed? I created a modifier where damage adds the proficiency bonus. &nbsp;I tried like you would with an attacher @{NAME|pb} or even proficiency_bonus but wouldn't work on works when I place a solid number. Even tried with charisma_mod I know worked in an attacher and nothing. Little clarification is all i am looking for. &nbsp;Solid number or should it work what I am trying to do. Thanks
1496958446
Jedd
KS Backer
Marketplace Creator
Kryx said: FX just output code to the chat which the script then processes to show FX. Can you open an issue on my tracker with steps to reproduce on a new character? I can then determine what is wrong. It'll likely either be the format that you use my communication with lucian lucian using that communication to show the FX Sorry, I'm a script/github noob - how/where would I do this? I also tried the /fx text in the "Freeform" field, and still nothing (I've confirmed that the /fx input works when pasted into chat).
1496959228
Kryx
Pro
Sheet Author
API Scripter
Travis K. said: Under the modifiers section I tried referencing an attribute instead of putting in a solid number. &nbsp;Is this not allowed? I created a modifier where damage adds the proficiency bonus. &nbsp;I tried like you would with an attacher @{NAME|pb} or even proficiency_bonus but wouldn't work on works when I place a solid number. Even tried with charisma_mod I know worked in an attacher and nothing. I would expect the dexterity_mod to work. If it's not please open an issue so I can see why.
1496959283
Kryx
Pro
Sheet Author
API Scripter
Jedd said: Sorry, I'm a script/github noob - how/where would I do this? I also tried the /fx text in the "Freeform" field, and still nothing (I've confirmed that the /fx input works when pasted into chat). The OP of this thread and the bottom left of the character sheet have links to the issue tracker. There you'll find instructions for how to format an issue.
1496962909
Jedd
KS Backer
Marketplace Creator
Kryx said: Jedd said: Sorry, I'm a script/github noob - how/where would I do this? I also tried the /fx text in the "Freeform" field, and still nothing (I've confirmed that the /fx input works when pasted into chat). The OP of this thread and the bottom left of the character sheet have links to the issue tracker. There you'll find instructions for how to format an issue. Thanks!
What's the most current Shaped sheet being used? I'm currently running v11.3.3, and none of my API scripts from the roll20 scripts library are not working, but they used to work. Are scripts from the library compatible with latter versions of the sheet? As well, I don't think the ammo tracking feature that comes with the sheet is working?
@Cameron That's properly a question for the API thread. The API library has been discontinued, because of the difficulty of keeping script and sheet in sync. You can get the sheet and API from github. Current official API release is 10.0.1, and I've released an unofficial interim 11.0.0 to fix autoAmmo and offense/utility token actions on sheet 14.x (note that ammo itself still has an issue with 14.2.4, that'll be resolved very soon in a new sheet version). You can run 10.0.1 or 11.0.0 with the latest sheet. If you want to stay on 11.3.3, you need an API that works with it. The last version that did was 8.4.2, which you can find here:&nbsp; <a href="https://github.com/symposion/roll20-api-scripts/tr" rel="nofollow">https://github.com/symposion/roll20-api-scripts/tr</a>... You absolutely want your sheet to be "Custom" and your API to be from github. That way, you control when you upgrade, and the two will always be in sync.
I believe that it was mentioned earlier but I am now apparently unable to move spells from the Compendium over to the sheet. I'm not using it as a popup and when I try to move it over nothing gets highlighted on the PC version but the NPC version gets the stats highlighted.
1497245679

Edited 1497245991
@Kryx I noticed the unminified sheet markup is not present in the repo for the latest sheet. Might I find that in another repo? Hoping to make some adjustments for my campaign.
1497248736

Edited 1497252245
Kryx
Pro
Sheet Author
API Scripter
James, there was an issue with script spells, but not compendium. Try on my test campaign and open an issue with reproduction steps if it occurs. Jason, the sheet is only publicly available in that form. Sorry for the inconvenience. If you desire changes I can possibly make them as settings.
Gotcha. The changes I'm looking to do aren't really suitable for mainline inclusion as they're pretty specific to my campaign. I'll just hack em into the minified markup, I s'pose.
1497252221
Kryx
Pro
Sheet Author
API Scripter
The settings page is full of houserules for my games so it's possible, but up to you. :)
I have a question with regards to class features - specifically the Rogue sneak attach - but in general as well. I've created an attacher as per the documentation - found the unique ID, done the center-text , checked the 'attack' box - so 'Sneak Attack' shows up at the bottom of all the attacks my Rogue makes - but when I click the 'Sneak Attack' - I just get the text description for the feature. I went into the sheet and looked - and there is an 'other damage' option under the feature - I selected it and set it to 1d6 &nbsp;(lvl 1 rogue) - 1/1 uses, recharges per turn. The recharge tracking works, the attacher shows up as clickable - but even with the 'other damage' selected, the feature doesn't ever roll damage.. - should I just be getting the 'text' reminded when we click that - it *looks* like - with the damage option - it should be proccing the configured damage, but I don't get that result - whether i click the feature directly, or use it via attacher. Class Feature: &nbsp;&nbsp; Attacher: &nbsp; (works. shows up on all attacks, but the damage is never applied, we have to go manually roll it anyhow - seems to remove the value of configuring the macro in teh attacher?). Did i miss something silly?
1497277644
Kryx
Pro
Sheet Author
API Scripter
Are you using the latest version? If so please either provide reproduction steps on one of the clear characters in my test campaign or import your character to it. It sounds like it has nothing to do with the attacher, but the class feature just isn't rolling damage.
1497278702

Edited 1497279963
Hm. I tried in your test campaign - works. I'm on 12.0.1 - mid-game, and didn't want to go to 14 because of the companion script. i'll try it in a copy of the game and see what I can get. So, I upgraded a game copy to 14.2.4 - same behaviour. Annnd the upgrade turned a whole pile of the sheet into red text. I'll retry this on a blank slate game. Obviously something in my existing games - both of them - is busted. I'll try a clean install/character create and see if that works differently.
1497280668
Kryx
Pro
Sheet Author
API Scripter
Red text means you didn't copy the translation file.
Hmm. I did - I went back and repeated it all - same thing in two games. But I removed it completely - set it to OGL, saved, repasted it all and changed back - and everything seems to work.- the class abilities function correctly. No idea what I did yet, but I obviously managed to break something important. (This is why you should never let network guys even SEE your code).
Okay, brand new to this, so forgive me if I'm missing something, but I'm wondering about the output options for attacks/spells. (I suspect this is mostly a feature request, but I'd love if I was wrong and I'm just missing how it currently works) The output when clicking an attack can be set to show the Target's AC on an attack.. and you can even hide this using the CSS options to make it so only the DM sees this output. This seems very useful, this makes it so the DM can know if an attack hits or misses right from the chat screen without having to look anything up. However there isn't a matching option for spells with saving throws... it will output the DC for the saving throw, but won't roll the saving throw automatically. Am I right that this functionality doesn't currently exist?&nbsp; I'd prefer if "roll target saving throw automatically" were an option, but barring that, there is a link to roll the saving throw attribute, however this is set to fire on the "selected" token, which means the DM has to remember to click the token that the player is targeting... given that the output already has an option to include the target name, could it not also link this saving throw check directly to the token the player clicked as well? (Obviously having the "selected saving throw" link would still be useful for things like AOE spells, it just seems odd that for an attack the DM can immediately know if they succeed or fail, but for a spell they have to manually click the target token, and then click the saving throw link to roll for that token) Could the second option be done with a macro in the freeform area perhaps? Is the "tokenID clicked by the player" an available piece of data when building this output? I see that you can use&nbsp;@{target|token_id} in a macro... is there a way to "resolve" this to an actual token ID before sending so that when it gets spit out from chat it still retains the token ID that the player clicked originally? I suspect this last one is something that would have to be done using the Companion Script... 3.&nbsp;Having the name output is useful in identifying the target, and I see lots of people solving the issue of duplicate token names with the numbering system... but it certainly seems like there could be a way to have the output name also link to the targeted token... I know that The Aaron recently got TurnMarker1&nbsp; set up to Ping-Pull the GM to a given token , it would be great if this functionality could be added to attack/spell output as well. The basic idea ultimately is that it would allow the GM to have all the information they needed spit out in chat (with perhaps one additional click to roll a saving throw for the target), and only require a single click to take them to the target token to modify as needed based on the attack/spell effects. I suspect I might be stretching a bit what might be possible with just the sheet... but I figured it was worth asking.&nbsp; What you've done so far with this sheet is simply amazing Kryx!
1497312171
Kryx
Pro
Sheet Author
API Scripter
There is no such option for saving throws because one cannot exist technically. Players don't have access to enemy sheets so therefore cannot force a roll on the enemy sheet. Neither option 1 or 2 is possible. The sheet has no concept of a token. It cannot access the name from the sheet (where the macro lives) unless this macro is setup to only be used from a token action from via something like selected. In other words: not possible. Sorry!
Kryx said: There is no such option for saving throws because one cannot exist technically. Players don't have access to enemy sheets so therefore cannot force a roll on the enemy sheet. Neither option 1 or 2 is possible. The sheet has no concept of a token. It cannot access the name from the sheet (where the macro lives) unless this macro is setup to only be used from a token action from via something like selected. In other words: not possible. Sorry! I'm not sure whether it's different for rolls, but you can access attributes on sheets you don't have access to, as long as you use target instead of the name. I've done that before as a player, if I was talking to another player and they wanted to know one of their stats.&nbsp;
1497312859
Kryx
Pro
Sheet Author
API Scripter
Rolls are different.
1497315665

Edited 1497317823
Justin S.
KS Backer
Kryx said: Rolls are different. I'll take your word for it not being technically possible, I was thinking that was probably the case... It certainly seems like the player character should be able to "fake" the roll for the enemy... if it can read the attributes of the enemy sheet, it certainly seems like just kicking off a roll for 1d20+&lt;attrModBeingSavedAgainstFromEnemySheet&gt; should be functionally the same. (I'm guessing that resolving "&lt;attrModBeingSavedAgainstFromEnemySheet&gt;" into an integer to use in a roll calculation is the part that is technically impossible.) Thanks for the quick response!
1497352942
Kryx
Pro
Sheet Author
API Scripter
For a button to work in chat it has to have a roll in the sheet. For the saving throws for example each of those have a roll in the sheet. You could get an enemy's saving throw calculation attribute, but you can't then pass that into into rolls from your sheet even if you tried to design a roll on your sheet to mimic the roll of another sheet.
1497355055
Jakob
Sheet Author
API Scripter
Kryx said: For a button to work in chat it has to have a roll in the sheet. For the saving throws for example each of those have a roll in the sheet. You could get an enemy's saving throw calculation attribute, but you can't then pass that into into rolls from your sheet even if you tried to design a roll on your sheet to mimic the roll of another sheet. A macro like this would allow you to click on a target and make a (dexterity) saving throw for that target. With appropriate escaping, one could even turn it into an API command button. @{target|output_option} &{template:5e-shaped} {{saving_throw=1}} {{character_name=@{target|character_name}}} @{target|show_character_name} {{title=^{DEXTERITY_SAVING_THROW}}} {{@{target|shaped_d20}=1}} @{target|dexterity_saving_throw_formula} @{target|hide_gm_info} @{target|attacher_dexterity_saving_throw}
Jedd said: Kryx said: Jedd said: Sorry, I'm a script/github noob - how/where would I do this? I also tried the /fx text in the "Freeform" field, and still nothing (I've confirmed that the /fx input works when pasted into chat). The OP of this thread and the bottom left of the character sheet have links to the issue tracker. There you'll find instructions for how to format an issue. Thanks! There's also this if you ever want to find the Shaped threads / docs without hunting:&nbsp;<a href="https://wiki.roll20.net/Character_Sheet_Index#D" rel="nofollow">https://wiki.roll20.net/Character_Sheet_Index#D</a>
1497512293
Dan B.
Marketplace Creator
Hey Kryx, not sure what you got going on in the latest version as I'm using what has been pushed out to roll20, but could you make currencies nameable in settings? This would allow for less confusion for those running campaigns in places such as Dragonlance. Thanks man, the sheet rocks and just keeps getting better.
1497512404
Kryx
Pro
Sheet Author
API Scripter
Please post suggestions on the issue tracker.
Thorsten B. said: @Cameron That's properly a question for the API thread. The API library has been discontinued, because of the difficulty of keeping script and sheet in sync. You can get the sheet and API from github. Current official API release is 10.0.1, and I've released an unofficial interim 11.0.0 to fix autoAmmo and offense/utility token actions on sheet 14.x (note that ammo itself still has an issue with 14.2.4, that'll be resolved very soon in a new sheet version). You can run 10.0.1 or 11.0.0 with the latest sheet. If you want to stay on 11.3.3, you need an API that works with it. The last version that did was 8.4.2, which you can find here:&nbsp; <a href="https://github.com/symposion/roll20-api-scripts/tr" rel="nofollow">https://github.com/symposion/roll20-api-scripts/tr</a>... You absolutely want your sheet to be "Custom" and your API to be from github. That way, you control when you upgrade, and the two will always be in sync. Where do I get the&nbsp;unofficial interim 11.0.0 shaped companion script?
Albert R. said: Where do I get the&nbsp;unofficial interim 11.0.0 shaped companion script? <a href="https://app.roll20.net/forum/post/5114371/5e-shaped-companion-unoffical-interim-support-for-sheet-14-dot-1-1-and-later" rel="nofollow">https://app.roll20.net/forum/post/5114371/5e-shaped-companion-unoffical-interim-support-for-sheet-14-dot-1-1-and-later</a>
1498157241

Edited 1498157268
Matt
Pro
I have a special case I'm trying to set up, but the sheet doesn't seem to currently support it. I guess this is a suggestion? I am trying to create an attacher to auto-fire a character trait (the cleric "Blessed Healer" trait) whenever the character casts a spell that heals someone. I see an option to add an attacher to all spells, or to spells of specific levels, but not to spells that heal. I was hoping that, as there's a universal modifier for healing, there would be an attacher option as well.
Matt said: I have a special case I'm trying to set up, but the sheet doesn't seem to currently support it. I guess this is a suggestion? I am trying to create an attacher to auto-fire a character trait (the cleric "Blessed Healer" trait) whenever the character casts a spell that heals someone. I see an option to add an attacher to all spells, or to spells of specific levels, but not to spells that heal. I was hoping that, as there's a universal modifier for healing, there would be an attacher option as well. See the proposed option for life cleric in the following part of the documentation.&nbsp; <a href="https://docs.google.com/document/d/1yPcIZ_bIc3JlnW" rel="nofollow">https://docs.google.com/document/d/1yPcIZ_bIc3JlnW</a>... H
1498315437

Edited 1498315461
Is there an option to quickly disable Jack of all trades? I accidentally set my Bard to level 2 and as such turned it on for my level 1 Bard and now there are 57 lines that I need to remove manually.
sirren said: Is there an option to quickly disable Jack of all trades? I accidentally set my Bard to level 2 and as such turned it on for my level 1 Bard and now there are 57 lines that I need to remove manually. Just click on the Jack of All Trades Class Feature button.&nbsp;
Which is the proper way to set a modifier like Disciple of Life with the new modifiers section? When I try to do it like this: Whenever I use a healing spell, it only adds the 2 and ignores the higher level part: I already tried to put the modifier between [[ ]], but still not working. Is there anything i'm missing?
1498401124
Kryx
Pro
Sheet Author
API Scripter
HLazar said: See the proposed option for life cleric in the following part of the documentation.&nbsp; <a href="https://docs.google.com/document/d/1yPcIZ_bIc3JlnW" rel="nofollow">https://docs.google.com/document/d/1yPcIZ_bIc3JlnW</a>...
1498401522
Kryx
Pro
Sheet Author
API Scripter
15.0.0 Breaking Changes MELEE_OR_RANGED_WEAPON_ATTACK s will now be treated as either melee or ranged and the parses will split them out to different weapons as I do for versatile. This is to ensure that the right damage bonuses are being used and ammo is being used properly. All existing items will remain working, but it'll parse all new items. Closes #533: savage attacks half-orc Bug Fixes Fixed Versatile parsing. #524: Modifiers not reading attribute macros 14.2.4 #526: On the equipment tab the carrying capacity / weight area is justified oddly #520: Empty utility/offence macro shows last deleted entry #531: Formatting of spell title line gets distorted with recharge 14.3.0 Features Added setting to recover hit dice on a short rest. It includes all, half, fourth, and none. Fourth is there to work with the DMG healing surge rule that allows 1/4th of hit dice to be recovered on a short rest. Bug Fixes All sections that use freeform have changed the way that they do in order to always ensure that freeform comes last even when there are asynchronous calls like finding ammo. Closes #515: fx with target no longer works
Sarkamist said: Which is the proper way to set a modifier like Disciple of Life with the new modifiers section? When I try to do it like this: Whenever I use a healing spell, it only adds the 2 and ignores the higher level part: I already tried to put the modifier between [[ ]], but still not working. Is there anything i'm missing? This seems to be working currently .... I am getting the correct min and max for a Life Cleric casting Healing Word and Cure Wounds using both 1st and 2nd level spell slots.
1498434416
Kryx
Pro
Sheet Author
API Scripter
15.0.1 Bug Fixes #519: Ammo added to multiple items when trying to add it to 1 item
Kryx said: Since you are not a Pro user you'll have to wait until I release the latest to github. I'm in a stabilization stage so it'll end up on github within the next few weeks. Two questions: Will the sheets auto-update once you release the latest version to github or will we get prompted to update? Is there a reason for multiple 'major' updates between releases to github rather than releasing to github at each 'major' update? Love the sheet, and looking forward to the latest version.
&gt;&nbsp;Will the sheets auto-update once you release the latest version to github or will we get prompted to update? Auto-update once it gets to the roll20 github. The only way around that is to load it as a "Custom" sheet instead. &gt;&nbsp;Is there a reason for multiple 'major' updates between releases to github rather than releasing to github at each 'major' update? Kryx uses a numbering scheme where each breaking change moves the major version number. The change to offense / utility items introduced bugs, so my assumption is that Kryx will release when he feels the sheet is sufficiently stable and bug-free. That can take a few major versions, depending on how many changes he makes.
So what am i doing wrong all the staff is red and the trouble with coins ?
Tormund GM said: So what am i doing wrong all the staff is red and the trouble with coins ? You need to have the most recent translation file also.&nbsp;
Shadowspawn said: You need to have the most recent translation file also.&nbsp; Ok i add latest . but it still red, and on api i get this "Translation Error: the key [STR] is not in the translation object." "TypeError: getTranslationByKey(...).toLowerCase is not a function" "TypeError: getTranslationByKey(...).toLowerCase is not a function\n at eval (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:8:3913)\n at Array.forEach (native)\n at AbilityChecks.updateAbilityChecks (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:8:3635)\n at Object.process (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:8:8775)\n at Object.eval [as -Kn_SwYmsORe6Bc7YRck//false//0.6379006803449214] (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:98:2568)\n at _fullfillAttrReq (evalmachine.&lt;anonymous&gt;:257:31)\n at messageHandler (evalmachine.&lt;anonymous&gt;:288:6)\n at process.&lt;anonymous&gt; (/home/node/d20-api-server/node_modules/tiny-worker/lib/worker.js:68:55)\n at emitTwo (events.js:106:13)\n at process.emit (events.js:194:7)" "Translation Error: the key [STR] is not in the translation object." "TypeError: getTranslationByKey(...).toLowerCase is not a function" "TypeError: getTranslationByKey(...).toLowerCase is not a function\n at eval (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:77:8762)\n at Array.forEach (native)\n at Object.process (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:77:7281)\n at Object.eval [as -Kn_SwYmsORe6Bc7YRck//false//0.01959672055748185] (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:98:2568)\n at _fullfillAttrReq (evalmachine.&lt;anonymous&gt;:257:31)\n at messageHandler (evalmachine.&lt;anonymous&gt;:288:6)\n at process.&lt;anonymous&gt; (/home/node/d20-api-server/node_modules/tiny-worker/lib/worker.js:68:55)\n at emitTwo (events.js:106:13)\n at process.emit (events.js:194:7)\n at process.nextTick (internal/child_process.js:766:12)" "Translation Error: the key [STR] is not in the translation object." "TypeError: getTranslationByKey(...).toLowerCase is not a function" "TypeError: getTranslationByKey(...).toLowerCase is not a function\n at eval (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:8:3913)\n at Array.forEach (native)\n at AbilityChecks.updateAbilityChecks (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:8:3635)\n at Object.process (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:8:8775)\n at Object.eval [as -Kn_SwYmsORe6Bc7YRck//false//0.9803953471818967] (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:98:2568)\n at _fullfillAttrReq (evalmachine.&lt;anonymous&gt;:257:31)\n at messageHandler (evalmachine.&lt;anonymous&gt;:288:6)\n at process.&lt;anonymous&gt; (/home/node/d20-api-server/node_modules/tiny-worker/lib/worker.js:68:55)\n at emitTwo (events.js:106:13)\n at process.emit (events.js:194:7)" "Translation Error: the key [PROFICIENT] is not in the translation object." "TypeError: getTranslationByKey(...).toLowerCase is not a function" "TypeError: getTranslationByKey(...).toLowerCase is not a function\n at Object.process (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:122:15503)\n at Object.eval [as -Kn_SwYmsORe6Bc7YRck//false//0.7363973109108166] (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:98:2568)\n at _fullfillAttrReq (evalmachine.&lt;anonymous&gt;:257:31)\n at messageHandler (evalmachine.&lt;anonymous&gt;:288:6)\n at process.&lt;anonymous&gt; (/home/node/d20-api-server/node_modules/tiny-worker/lib/worker.js:68:55)\n at emitTwo (events.js:106:13)\n at process.emit (events.js:194:7)\n at process.nextTick (internal/child_process.js:766:12)\n at _combinedTickCallback (internal/process/next_tick.js:73:7)\n at process._tickCallback (internal/process/next_tick.js:104:9)" "Translation Error: the key [STR] is not in the translation object." "TypeError: getTranslationByKey(...).toLowerCase is not a function" "TypeError: getTranslationByKey(...).toLowerCase is not a function\n at eval (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:77:8762)\n at Array.forEach (native)\n at Object.process (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:77:7281)\n at Object.eval [as -Kn_SwYmsORe6Bc7YRck//false//0.6507566023116798] (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:98:2568)\n at _fullfillAttrReq (evalmachine.&lt;anonymous&gt;:257:31)\n at messageHandler (evalmachine.&lt;anonymous&gt;:288:6)\n at process.&lt;anonymous&gt; (/home/node/d20-api-server/node_modules/tiny-worker/lib/worker.js:68:55)\n at emitTwo (events.js:106:13)\n at process.emit (events.js:194:7)\n at process.nextTick (internal/child_process.js:766:12)" "Translation Error: the key [ACROBATICS] is not in the translation object." "Translation Error: the key [ANIMALHANDLING] is not in the translation object." "Translation Error: the key [ARCANA] is not in the translation object." "Translation Error: the key [ATHLETICS] is not in the translation object." "Translation Error: the key [DECEPTION] is not in the translation object." "Translation Error: the key [HISTORY] is not in the translation object." "Translation Error: the key [INSIGHT] is not in the translation object." "Translation Error: the key [INTIMIDATION] is not in the translation object." "Translation Error: the key [INVESTIGATION] is not in the translation object." "Translation Error: the key [MEDICINE] is not in the translation object." "Translation Error: the key [NATURE] is not in the translation object." "Translation Error: the key [PERCEPTION] is not in the translation object." "Translation Error: the key [PERFORMANCE] is not in the translation object." "Translation Error: the key [PERSUASION] is not in the translation object." "Translation Error: the key [RELIGION] is not in the translation object." "Translation Error: the key [SLEIGHTOFHAND] is not in the translation object." "Translation Error: the key [STEALTH] is not in the translation object." "Translation Error: the key [SURVIVAL] is not in the translation object." "TypeError: a.translation.toLowerCase is not a function" "TypeError: a.translation.toLowerCase is not a function\n at eval (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:92:2245)\n at Array.sort (native)\n at Object.process (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:92:2209)\n at Object.eval [as -Kn_SwYmsORe6Bc7YRck//false//0.4783509635200258] (eval at messageHandler (evalmachine.&lt;anonymous&gt;:282:6), &lt;anonymous&gt;:98:2568)\n at _fullfillAttrReq (evalmachine.&lt;anonymous&gt;:257:31)\n at messageHandler (evalmachine.&lt;anonymous&gt;:288:6)\n at process.&lt;anonymous&gt; (/home/node/d20-api-server/node_modules/tiny-worker/lib/worker.js:68:55)\n at emitTwo (events.js:106:13)\n at process.emit (events.js:194:7)\n at process.nextTick (internal/child_process.js:766:12)"