
I've been writing my own version of the SRD importer by Chris S for the 3.5 character sheet made by Diana P. You can quickly copy and paste monster stat blocks onto a character sheet, run the script, and upload most of the relevant information. Also included is a function to create attack macros and skill macros. A separate code is included two posts down for shortened statblocks (like those often found in modules). Code available at: <a href="https://github.com/astuertz/Roll20/blob/main/importMonster.js" rel="nofollow">https://github.com/astuertz/Roll20/blob/main/importMonster.js</a> Update 3/2: *Uploaded newest version of the code with minor corrections to old code *Created a new call !createspellMacros. This call creates the ability name of each spell listed as zSPELL(something) in the Other Field. This is intended as a shortcut to be used with the !importSpell call from my other script. That script can be found here: <a href="https://app.roll20.net/forum/post/10693924/script-api-script-to-create-spell-macros-for-3-dot-5/?pageforid=10693924#post-10693924" rel="nofollow">https://app.roll20.net/forum/post/10693924/script-api-script-to-create-spell-macros-for-3-dot-5/?pageforid=10693924#post-10693924</a> This is actually a topic with 2 scripts (the first creates nearly 700 spell macros for 3.5, the other transfers those spells onto the character sheet using the input information). In this case, assuming that you are using the importSpell script, you can add each spell name to the bottom of the statblock using the appropriate name (something to the effect of zSPELLMageArmor) and add the appropriate text thereafter. So each spell line should read: zSPELLMageArmor CL 9 DC 13 Ranged 13 Melee 15 Include the appropriate numbers and use as is relevant to the spell. This is a basically a shortcut to a shortcut, if you will. I just found it tedious to create ability macros for each spell manually, and this let's you do it much more easily. The spell names are also generally intuitive, removing spaces and capitalizing all words except "or". It is also notable that some spells have the Lesser/Greater and the spell name reversed. Like zSPELLConfusionLesser. But generally it doesn't take too much guesswork to get the spell name correct the first time. As should be noted in the importSpell topic, once you run importSpell, it changes the name from zSPELL to just SPELL. This should indicate whether or not it was successful. Update 2/20: *Changed Concentrate to Concentration for !createskillMacros *Changed the Skills generation field to change -# to +-# for skills for the purpose of !createskillMacros Update 2/13: *!shortblockMonster reincorporated into !importMonster, now using the updated error checking and error reporting. *Regex for "Senses" is no longer case insensitive in !shortblockMonster *Added new command !IM to display all available commands, as well as describe their use and function. *Added additional error checking to !createattackMacro. Now sends error message if it cannot correctly parse the name or attack modifier info from either Attack or Full Attack field of NPC on character sheet. Update 2/12: *Checks to see if an attribute exists before setting (now for all attributes). It is no longer needed to populate attributes before using script. *Now supports non-integer ability scores. If ability score is not an integer, ability mods are set to '0' by default. *No longer floods chat with all the updated information. Instead, if a value is not found in stat block, it adds to the error message which is displayed in a neat box at the end. *Commonly used routines in each step of the code have been changed into functions. Likewise, ability scores are generated using a for() function which calls a function for each ability score. *A bit of comment clean/up (redoing instructions in the beginning as well) *Adding !createabilityMacros to create a simple ability macro for each listed ability (see comment section at beginning of code). Each macro contains only the name of the ability and its description. *Had the script check for any of the commands and load functions and global variables. No more redundant usage of functions or variables for each command. *Now also populates the npcname field. *Checks to make sure that importMonster is a valid character *Checks to make sure that the other field has text.