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

[Script] RPGMaster APIs for AD&D 2E

1664353079

Edited 1668599201
Richard @ Damery
Pro
API Scripter
Latest RPGMaster news... 16th November 2022 Handling of ranged weapons and ammo:  The APIs try to deal with weapons entered manually onto the Character Sheet as best they can - the best way to add weapons to a Character Sheet is to use the menus to Edit Weapons & Armour  and Change Weapon  to take them in-hand as this fills in lots of data not shown on the Character sheet.  However, for those of you who have lots of manually built character sheets that don't want to update them, the next release will improve the handing of manually-entered ranged weapons and ammo, so that pairs matched by name are shown in the Attack  chat window menu - arrows for bows, dagger ammo for ranged dagger weapons, etc.  Ranges will default to whatever is defined for the Weapon (as opposed for if you use the API menus fully to add and handle ranged weapons, when ranges will always be determined by the correct combination of weapon and ammo). 15th November 2022 Bugs found:  The release of the Race Database has gone reasonably OK, but I have found 2 issues on release testing:      Save table not automatically updated:  Where the selected race has race-specific save bonuses, these are not automatically applied when the race is selected. Workaround:  when making a saving throw using the Other Actions/Saves  menu, use the Auto-check Saving Throws  button to correct the saving throws for the character. This only needs to be done once, as the saves are then remembered.  Fix:  will be issued in the release on 22nd November.     Sub-Race Attack bonuses not applied:  Where a sub-race is selected for a character (e.g. a Grey-Elf as a subrace of Elf), weapon to-hit bonuses are not correctly picked up from the base race definition.  Workaround:  If Elf is selected (which is a base race), the bonuses are correctly applied - which is the same situation as before the Race Database was issued. So until the fix is issued, only use the base race selections if attack to-hit bonuses are important. Alternatively, extract the Race-DB using !magic --extract-db Race-DB  and manually add the to-hit bonus definitions to the relevant sub-race definitions.  Fix: will be issued in the release on 22nd November.     DM damage revealed to Players:  When a DM-controlled NPC or creature uses a Melee weapon to attack using the PC Rolls  or You Roll  methods (not Targeted ), successfully hits and then selects to roll damage, the DM's roll result is shown as a public message, rather than just being shown to the DM privately. Workaround:  The DM may be happy for the Players to all know what damage was done, in which case no workaround is needed. Alternatively, the DM should use Targeted attacks for the interim, by selecting the Targeted  button on the Attack .  Fix:  will be issued in the release on 22nd November. 14th November 2022 Tomorrow's release is a relatively large one: support for the Race Database.  The Class menu (under the DM's "Token-Setup" menu, and the Player's "Other Actions" menu) has been extended with a button to select Races. This allows races in the race database distributed with the APIs, or any added by the DM to their own Race database following the help in the Class & Race Database Help  handout, to be selected for the character associated with the selected token, which will define powers, abilities, possible weapons, armour and the like for the race in a similar way as for Character Classes in the Class Database (in fact, much of the same functionality is used).  When the specified Race of the Character is one in the database, the "Token-Setup / Add To Spellbook / Powers / Add All Class/Race Powers" button will add all valid powers for the class and race of the Character to the character sheet, ready to be memorised. A new button on the Memorise Powers  menu allows all valid powers to be memorised in one button click, with the correct "uses per day" set. If a race is specified in the "Race" field on the character sheet that is not in the database, the APIs will attempt to determine a "base race" by seeing if the race name includes any of "Elf", "Dwarf", "Gnome", "Halfling", "Half-Orc", or "Human" - e.g. "Demi-Elf" will be given the base race of "Elf", and get the same abilities and powers as a basic PHB Elf. The following races are defined in the initial Race-DB that is distributed with v1.3.03 of the APIs: Aquatic-Elf, Deep-Dwarf, Deep-Gnome, Drow, Duergar, Dwarf, Elf, Forest-Gnome, Gnome, Gray-Dwarf, Grey-Elf, Gully-Dwarf, Hairfoot-Halfling, Half-Elf, Half-Orc, Halfling, High-Elf, Hill-Dwarf, Human, Mountain-Dwarf, Rock-Gnome, Stout-Halfling, Sundered-Dwarf, Svirfneblin, Sylvan-Elf, Tallfellow-Halfling, & Tinker-Gnome API-supplied Database character sheets no longer exist:  as of v1.3.00 of the APIs, the standard databases supplied with the APIs are all held in memory, for speed and space gains (eliminates about 2,000 Roll20 objects!). You can still extract them to character sheets to look at them and pinch parts for your own magic items, spells, character types, powers, weapons etc using the new !magic --extract-db <db-name> command - see the MagicMaster Help Handout (or type !magic --help ) for details. The RPGMaster Series of APIs is...       RPGMaster  RPGMaster series for AD&D2e is now available by the One-Click install.  You can find information on RoundMaster, InitMaster, AttackMaster, MagicMaster, CommandMaster and the RPGMaster Library on the  RPGMaster Wiki  page, which includes introductory videos on use, and links to the Wiki pages for each individual API. RoundMaster   extends the functionality of the  t   Turn Tracker  capability. Based on the old TrackerJacker API, extended to support  Effect Macros  triggered when statuses are added, exist on, or are removed from tokens.  Effect Macros  are user programmable and can do anything Roll20 or added APIs can do. InitMaster   supports initiative for RPGs (initially only AD&D 2e) using RoundMaster, and manages issues like multiple Turn Order entries for multiple attacks per round, dealing with the effects of spells like  Haste  and  Slow  on initiative, action speeds for many different weapons, magic items and other actions, plus many other features . AttackMaster   provides functions to manage weapons, armour & shields, including taking weapons in hand and using them to attack. It uses standard AD&D 2e rules to the full extent. MagicMaster   provides functions to manage all types of magic, including Wizard & Priest spell use and effects; Character, NPC & Monster Powers; and discovery, looting, use and cursing of Magic Items. CommandMaster   manages the initialisation of a  Campaign  to use the RPGMaster APIs, communication and command syntax updates between the APIs and, most importantly for the  DM , easy menu-driven setup of  Tokens  and  Character Sheets  to work with the APIs. RPGMaster Library provides all the data and processing for a specific version of an RPG. As of now, there is only one version, for AD&D2e. New versions might appear at unpredictable intervals in the future (but the author plays AD&D2e so he did this one first!). These APIs currently are focused on supporting AD&D 2E game-play, although RoundMaster can be used more widely. If you have any questions, thoughts or ideas (or bug reports...), please post them on this thread.
1664355960

Edited 1664356472
Richard @ Damery
Pro
API Scripter
New thread I've started a new thread, as I forgot to post to the previous version and it closed! This time, I'll put a reminder in my diary to post to it every month, regardless of how stable the APIs are!!! Next Release - Major Change I have finally extracted all the RPG-version-specific data and processing into a new RPGMaster Library API.  The other RPGMaster APIs (InitMaster, AttackMaster, MagicMaster & CommandMaster - not RoundMaster, which is game-version independent) now use the Library to provide data and process certain functions.  The RPGMaster Library also provides new Roll Templates, which are used by the RPGMaster APIs but are also available for use by DMs and players - the Library help handout gives details. The Library also provides some exposed Library functions that other API Script Authors can call to provide reliable character sheet table (repeating_table_$n_fields) management, among other functions - again the help handout gives details. The main difference script users will see is that all the standard character sheet databases (those distributed with and created / updated by the APIs) will disappear from your campaign journal. All the standard databases have been taken into memory as API data - this speeds up access. However, they can be extracted and displayed as Character Sheet databases using the !magic --extract-db or !attk --extract-db commands, so that DMs and Game Creators can review and copy the database item macros for their own databases, which work in the same way they always have. The other major change is the display of chat window menus and messages using new Roll Templates provided by the Library.  These can be grapical and interesting, or can be standard more text-based menus for slightly easier reading and accessibility. There is also a "Dark Mode" version of the menus that will work with Roll20 Dark Mode (Players need to select Dark Mode for menus using the menu config cog at the right of the title bar of each, it is not automatic) The release will  automatically and seamlessly (hopefully if I configure everything correctly) load the Library API and a new set of matching RPGMaster APIs for those who are already using them.  I have tested to the extent I can, but there is always that final merge into the Roll20 master thread that may not work as anticipated. If you get problems do post here or message me directly. Remember:  you can always revert to older versions of the APIs by selecting an older version when loading from the Roll20 One-Click library.
1664893691

Edited 1664893701
Hey there - I hope this is the right thread to be posting this in... I'm trying to import the API Scripts into my game following the instructions in the playlist from the wiki page but after adding the API scripts to my game nothing seems to happen - I don't get the handouts or character sheets mentioned in video 1 of the playlist appearing in my game (I've tried both in a copy of an existing game and a brand new game with no joy). I did the one-click install by loading in CommandMaster, changing the settings in TokenMod and setChatAttr as specified but the API Output Console doesn't show all the same lines as it does in the example from the video, it's almost like it's failing silently somewhere, maybe? Any advice on  what could be the issue?
1664899992
Kurt J.
Pro
API Scripter
Richard,   I helped a user out this morning that was running into a sandbox issue after the latest updates. He had MagicMaster and RoundMaster installed in his game, and after the update happened his sandbox was silently crashing at loading MagicMaster (no indication of a problem in the sandbox, but nothing after MagicMaster displayed their init strings).   I believe the issue was that the Roll20 OneClick update process doesn't take new dependencies into account, so it was not adding the external library API but was doing the version upgrade for MagicMaster. I suggested he remove the script and then re-add it to force Roll20 to install the dependency. Remember:  you can always revert to older versions of the APIs by selecting an older version when loading from the Roll20 One-Click library. Unfortunately, much like the cake, the version dropdown is a lie ;) It doesn't actually do anything and you'll always end up using the latest version when using OneClick. I ran into that issue myself when I pushed a bad update a while back :)
1664901077

Edited 1664902428
Richard @ Damery
Pro
API Scripter
Indeed, this is the right place! Balfuset said: Hey there - I hope this is the right thread to be posting this in... I'm trying to import the API Scripts into my game following the instructions in the playlist from the wiki page but after adding the API scripts to my game nothing seems to happen - I don't get the handouts or character sheets mentioned in video 1 of the playlist appearing in my game (I've tried both in a copy of an existing game and a brand new game with no joy). I did the one-click install by loading in CommandMaster, changing the settings in TokenMod and setChatAttr as specified but the API Output Console doesn't show all the same lines as it does in the example from the video, it's almost like it's failing silently somewhere, maybe? Any advice on  what could be the issue? As usual, Kurt J. has it right. The RPGMaster Library AD+D2e is not loading automatically as a new dependency when the other APIs are updated. Unfortunately, I'm not sure there is anything I can do to rectify this and improve the automatic update - sorry folks! However, it is easy to fix. Issue: The automatic upload for version 1.3.00 of the RPGMaster series of APIs does not automatically load the new API in the suite "RPGMaster Library AD+D2e". This means the whole suite does not appear to work. It does not even show my neat little error message that should say you need to load the Library for it to work! Fix: Open the Mod(API) Sandbox window for the Campaign and use the One-Click drop down to search for "RPGMaster Library" - the library API should be easily found. Select it and load it.  The RPGMaster APIs will then all work. I will endeavour to add an insert into the first video to add this information into it, to help those loading the APIs, as well as those going back and using it to check what's wrong!
1664904402
Richard @ Damery
Pro
API Scripter
Kurt J. said: Remember:  you can always revert to older versions of the APIs by selecting an older version when loading from the Roll20 One-Click library. Unfortunately, much like the cake, the version dropdown is a lie ;) It doesn't actually do anything and you'll always end up using the latest version when using OneClick. I ran into that issue myself when I pushed a bad update a while back :) So it is! I'm sure it used to work - I did have an issue with one of my releases about a year ago, and I'm sure it worked then... I think I'll raise a report, but I suspect it will be well down the priority list for the Roll20 guys... so much going on right now.
1664953928

Edited 1664954620
Ah, I did notice that library in the script list but for some reason, it didn't twig that it might be a dependency, haha. Whoops! Now that I've to it working, I gotta say I love what this does, but I have one question. How do I get a player character set up to be able to make punching/wrestling attacks? I've got a PC in my game who's an unarmed brawler and after adding Punch-Wrestle as a weapon and putting it in hand when I make an attack I get the following error - is there something I'm doing wrong? Unfortuantely roll20 isn't letting me put a screenshot in this post for some unknown reason... >.> But the error message is: ' TypeError: Cannot read properties of undefined (reading 'substring')' EDIT: Okay, this just seems to be a problem with the character in general, they can't make attacks at all, so I've DEFINITELY done something wrong. I will continue troubleshooting and see wheat more info I can provide!
1664960555
Richard @ Damery
Pro
API Scripter
Balfuset said: Ah, I did notice that library in the script list but for some reason, it didn't twig that it might be a dependency, haha. Whoops! Now that I've to it working, I gotta say I love what this does, but I have one question. How do I get a player character set up to be able to make punching/wrestling attacks? I've got a PC in my game who's an unarmed brawler and after adding Punch-Wrestle as a weapon and putting it in hand when I make an attack I get the following error - is there something I'm doing wrong? Unfortuantely roll20 isn't letting me put a screenshot in this post for some unknown reason... >.> But the error message is: ' TypeError: Cannot read properties of undefined (reading 'substring')' EDIT: Okay, this just seems to be a problem with the character in general, they can't make attacks at all, so I've DEFINITELY done something wrong. I will continue troubleshooting and see wheat more info I can provide! Thanks for the feedback, and great that you like it. Let me know what you find on the character and I'll investigate from there - you can always message me directly via the "Send Private Message" link on my profile page. FYI:  I have sometimes found that Character Sheets get set wholely or partially "read-only" (not sure why - don't think it's an API thing): the fix is to just use the [Duplicate] button on the [Edit] screen of the Character, and then use the new duplicate (renaming the old one as something different and the duplicate to not be a "Copy of ..."), which all seems to work fine.
1664986180
Richard @ Damery said: Balfuset said: Ah, I did notice that library in the script list but for some reason, it didn't twig that it might be a dependency, haha. Whoops! Now that I've to it working, I gotta say I love what this does, but I have one question. How do I get a player character set up to be able to make punching/wrestling attacks? I've got a PC in my game who's an unarmed brawler and after adding Punch-Wrestle as a weapon and putting it in hand when I make an attack I get the following error - is there something I'm doing wrong? Unfortuantely roll20 isn't letting me put a screenshot in this post for some unknown reason... >.> But the error message is: ' TypeError: Cannot read properties of undefined (reading 'substring')' EDIT: Okay, this just seems to be a problem with the character in general, they can't make attacks at all, so I've DEFINITELY done something wrong. I will continue troubleshooting and see wheat more info I can provide! Thanks for the feedback, and great that you like it. Let me know what you find on the character and I'll investigate from there - you can always message me directly via the "Send Private Message" link on my profile page. FYI:  I have sometimes found that Character Sheets get set wholely or partially "read-only" (not sure why - don't think it's an API thing): the fix is to just use the [Duplicate] button on the [Edit] screen of the Character, and then use the new duplicate (renaming the old one as something different and the duplicate to not be a "Copy of ..."), which all seems to work fine. Yeah, I think what I'm going to do is re-create one of the characters from scratch and follow the setup as outlined in the videos. Currently, I'm working with character sheets that have been completed 'normally' as it were, using the standard ways of filling out the sheet and I'm wondering if anything is conflicting with how the API is trying to read the data. One thing I've noticed is that after setting up a monster's token circles, the AC 'bar' gets a 10 added into the 'Max' box, with their AC as on the monster sheet in the 'current' box. So the number I need is there it just looks a bit weird with a second green bar above their health bar. A minor thing but something I thought I'd highlight. Again, might be because these are monsters I had set up before installing the APIs so I might try and make something brand new and set it up fresh with the APIs already running to see if that fixes anything.
1665001707

Edited 1667255464
Richard @ Damery
Pro
API Scripter
Balfuset  said: Yeah, I think what I'm going to do is re-create one of the characters from scratch and follow the setup as outlined in the videos. Currently, I'm working with character sheets that have been completed 'normally' as it were, using the standard ways of filling out the sheet and I'm wondering if anything is conflicting with how the API is trying to read the data. Yes, while I've tried hard to get the APIs to work with Character Sheets that have had all their data in fields, tables etc completed manually, the system uses many, many  more  fields than you can see on the Character Sheet to achieve everything they can do.  It is best if you can to set Character Sheets up from scratch using the APIs to complete the fields that they can (especially using the GM "Token-setup" and "Add-Items" macro buttons - the buttons added by using !cmd --initialise ). This will give you and your players the best experience, and reduce any issues. One thing I've noticed is that after setting up a monster's token circles, the AC 'bar' gets a 10 added into the 'Max' box, with their AC as on the monster sheet in the 'current' box. So the number I need is there it just looks a bit weird with a second green bar above their health bar. A minor thing but something I thought I'd highlight. Again, might be because these are monsters I had set up before installing the APIs so I might try and make something brand new and set it up fresh with the APIs already running to see if that fixes anything. The system continually calculates the AC for all Tokens/Character Sheets when various actions are completed. It uses the items listed on the Equipment Potions  table (added there using the "Add-Items" button, or the !magic --edit-mi or !attk --edit-weapons  or !attk --edit-armour  commands), reading the data in the weapon, armour, and magic item databases to assess each item's effect on AC. The system pops up a display in the Chat window explaining how it has made this calculation whenever the calculated AC changes (e.g. if taking a shield in-hand, or picking up a new set of armour from a dead body).  If the calculated value for AC is different from that displayed on the Token AC bar current , the system sets the max  to be the calculated AC and turns on the display of the AC bar, to act as a prompt to the DM &/or Player to show that there is a difference: this can be for quite legitimate reasons - e.g. there is magic in effect that changed the AC temproarily on the Token - or might be a mistaken entry. If the Token AC bar current value is changed to be the same as the calculated value (e.g. the spell effect ends, or it is corrected manually) and then the "Attk Menu/Check AC" or !attk --check-ac  command used, the max  value will be removed and the Token bar will disappear. When setting up a Monster, especially, if the monsterarmor  field is 3, but the Token AC circle (usually bar 1) is 10 - or visa versa - and no items are in the Character Sheet Equipment potions  table, the AC autocalculate will do as you describe.  Change the monsterarmor   and Token AC bar to be the same and run the !attk --check-ac  command with the token selected will tidy everything up. As always, happy to take further questions on this.
1665507464
Richard @ Damery
Pro
API Scripter
Latest RPGMaster news... 11th October 2022 RPGMaster Library  now loads  with the other Master series APIs via the One-Click install if loaded from scratch, and updates to new versions automatically.  However: it does not automatically install for current users of older versions of the RPGMaster suite.  Those who are experiencing issues with their older install of RPGMaster APIs (InitMaster, AttackMaster, MagicMaster & CommandMaster) need to go to the One-Click install and  manually  install  "RPGMaster Library AD+D2e" . Latest release:  As well as a number of bug fixes, the latest release includes the ability for spells to be set as Powers for PCs, NPCs and Creatures without having to re-program them in a Powers DB; support multiple different magic items owned by the same PC/NPC/Creature to have the same powers and stored spells without causing clashes. Next release (expected 18th October):  fix initiative for single-class characters that have multi-class spell casting capabilities (e.g. Priest of Magic), and support spell absorbing magic items that can then cast spells using the absobed levels (e.g. Rod of Absorption)
1665508384
Richard @ Damery
Pro
API Scripter
I am proposing to run one or more demo & Q&A sessions for the RPGMaster series of APIs. If you are interested, follow this link to get the details.
1665988015

Edited 1665988135
Richard @ Damery
Pro
API Scripter
The next release of the RPGMaster APIs will be next week, 25th October or there abouts . The latest features include: Enable spells to be "weaponised"  so that the spell can be "taken in-hand" as a weapon to hit with - e.g. Spiritual Hammer, Chromatic Orb etc Support for "spell absorbing" magic items - items that can cast spells based on absorbed power (i.e. based on charges added e.g. Rod of Absorption) Extended ability to run commands using "on:" and "off:" data attributes (as already exist for Rings) when taking weapons in-hand or sheathing Add ability for weapons and weaponised spells to be restricted by level of wielder (by spell-casting level for weaponised  spells e.g. for colours of Chromatic Orb ) Warning:  changed field used for Initiative Modifiers and Multipliers (e.g. as used for Haste  and Slow  effects) from comreact  field on the Character Sheet (which Players & DM might use for Comliness reactions) to custom fields hidden on the sheet.  If currently running games with these effects in play, the refresh of the APIs will mean the effects stop when the APIs refresh, and will need to be re-started. All of the above are explained in the extended Help Handouts that come with the APIs and are loaded/updated in your campaign automatically.
1666616570

Edited 1667389445
Richard @ Damery
Pro
API Scripter
The release tomorow will only be of the RPGMaster Library. If that goes satisfactorally then I will release the updates to the rest of the APIs the following week.  I have decided to change to this release approach so as to minimise the chance of issues with the release - if the Library release fails, releasing the rest of the APIs (which rely heavily on the Library but not each other) might cause major problems. Thus there will be few changes to functionality, and  the previous release announcement  will now apply for 1st November release. The next Demo & Q&A session will be on Wednesday, 2nd November, at 21:30 GMT (5.30pm EST) .  Go to this thread  (or  PM me ) to sign up.
1667080771

Edited 1667087516
snuh
Pro
Cannot tell you how excited I am for our first game next week using this API suite! Such a huge gift. So far I haven't had any issues setting up Against the Giants in it. The youtube tutorials are long but worth it! EDIT! Bug report: Description: Typo in Specials ability macro Details/Steps to Reproduce: When using the Token-setup to add a Specials token ability, the resulting ability has a typo: &{template:RGPMdefault} should be &{template:RPGMdefault}
1667108456
Richard @ Damery
Pro
API Scripter
snuh said: Cannot tell you how excited I am for our first game next week using this API suite! Such a huge gift. So far I haven't had any issues setting up Against the Giants in it. The youtube tutorials are long but worth it! EDIT! Bug report: Description: Typo in Specials ability macro Details/Steps to Reproduce: When using the Token-setup to add a Specials token ability, the resulting ability has a typo: &{template:RGPMdefault} should be &{template:RPGMdefault} Thanks for the bug report.  Not a menu I use very often!  I'll release the fix this week. It should automatically update all character sheets that have the macro installed.
1667123409

Edited 1667127193
Richard @ Damery
Pro
API Scripter
Release for 1st November The release this week (on 1 November) will include all the enhancements and fixes previously scheduled for last week.  See this post for the details.   Suffice to say it includes an enhancement requested by DMs: Weaponised Spells such as Spiritual Hammer, Chromatic Orb & Ice Knife no longer need both a spell to be cast and a matching weapon taken in-hand. Any Weaponised Spell  that is currently memorised by a spell caster will appear in the weapon list in the Change Weapon menu - selecting it will Cast the memorised spell automatically, and the spell "weapon" will appear in hand for attacks and stay there for the duration of the spell (e.g. for Spiritual Hammer ) or until used to attack (e.g. for Chromatic Orb ), or by whatever other criteria are programmed depending on the specs of the spell, and its associated Spell and Effect database entries. Alternatively, casting the spell using the Cast Spell  action button will automatically bring up the Change Weapon  menu after displaying the specs of the spell, ready to take the newly cast spell weapon in-hand. Refer to the updated Section 2.2 in the Magic Database Help handout for details of this new feature.
1667128311

Edited 1667129185
Richard @ Damery
Pro
API Scripter
Next Release: Race & Creature database The mid-November release will be centred around the Race & Creature Database .  I have been asked if Races can be defined in a similar way to Classes in the Class Database and, when I had a look, it was quite simple to add races such that saving throws (related to an attribute score like Constitution, or just as a straight plus, on various types of save), weapon & armour restrictions, innate powers and all other factors currently available to classes can be defined for races. Added in are factors such as bonuses to hit with various weapons or types of weapon (e.g. Elves with bows except cross-bows, longswords and shortswords, and halflings with thrown weapons & slings). All of these are currently hardcoded for standard races and are applied (so don't worry, DMs, the current APIs are applying the rules correctly), but the new Race database will allow the hardcoded values to be overridden and will replace them. Some additional definitions, such as AC bonuses when attacked by various types or creature, are not possible to support programmatically - i.e. unless using a targeted attack, the APIs don't know which opponent the creature is attacking, so can't apply the modifier, and DMs would not want standard and targeted attacks giving different results. Thus this particular race characteristic must be considered manually. Whereas a multi-class character gets the greatest selection of allowed weapons and armour, the class/race combination restricts such that a weapon must be allowed for both the class and the race - so for instance a DM may not allow a gnome warrior to wield a Greatsword as it is too big for them. Race definitions can inherrit (or not) the characteristics of another race (e.g. a Hill Dwarf inherriting the characteristics of a standard PHB-defined Dwarf). Thus only the aspects that are different need be included. A caveat to this is that if the sub-race has only some but not all the powers of the core race, inherritance is not possible as otherwise the sub-race gets all the powers. Creatures  characteristics can be defined in the same way - thus a Vampire definition can be included in the Race Database, with all the specifications of Vampire powers, attack bonuses, save bonuses etc. The race of "Vampire" can then be entered in the Race field on the character sheet (if it is empty, I might get the APIs to search fields on the Monster sheet) and the APIs will apply the related characteristics. Over time, the database distributed with the APIs might include an ever increasing number of races & creature definitions. Initially, it will include the races from the Players Handbook, the Complete Book of Dwarves, The Complete Book of Elves, and The Complete Book of Gnomes & Halflings. Of course, as with other databases, you will be able to add your own Race-DB-[your own db name]  to extand those distributed with the APIs with your own definitions, using the Race Database Help handout .
1667239741

Edited 1667239903
Richard @ Damery
Pro
API Scripter
31st October 2022 Possible bug:  If a player/DM does Initiative for a character/creature and then changes their mind and tries to do initiative for a second time to overwrite the first, the system should post a "are you sure you want to do this" message to chat and, if Redo button is then pressed remove the current initiative entry from the Turn Order and then post the menu for the new initiative action choice to chat - currently it does not, and instead puts a second initiative action in the turn order.  Workaround:  Do initiative right first time!  Failing that, the DM can manually delete any spurious Turn Order entries by just hovering over them and then selecting the "bin" icon that appears, or just ignore them when they come up in the Turn Order. Fix:  Redo Initiative fix has been published to Roll20 Github master, but may not get in the 1st November release.
1667245709
snuh
Pro
Am I missing a feature for a Charge Attack? I might just be missing it in the UI. It seems like it should be an option in the Initiative orders and should apply a status effect negating Dex AC and 1 point of normal AC, and give them +2 to hit. The hard part is the init. RAW it's the target opponent(s) who gain -2 bonus to their initiative. The same basic effect could more-or-less be achieved by giving the charger a +2 penalty to their init?
1667247620
snuh
Pro
Apologies for the barrage of feedback and questions! Just trying to get everything all set up before our first game. My test attack rolls for a character were looking odd. So I just used the Clear Token Circles to delink all the values on my lvl 8 Cleric. I then manual cleared all the values. I then confirmed that thac0-base was set to (22-(ceil(@{level-class1}/3)*2)) -- also known as '16' -- as per the Priest class. Lastly, I ran Set Token Circles to relink and autofill all the token bubbles. But when it did so, the thac0-base was overwritten and set to 20. That's obviously not the expected behavior. Can anyone reproduce and verify?
1667248324

Edited 1667248726
Richard @ Damery
Pro
API Scripter
snuh said: Am I missing a feature for a Charge Attack? I might just be missing it in the UI. It seems like it should be an option in the Initiative orders and should apply a status effect negating Dex AC and 1 point of normal AC, and give them +2 to hit. The hard part is the init. RAW it's the target opponent(s) who gain -2 bonus to their initiative. The same basic effect could more-or-less be achieved by giving the charger a +2 penalty to their init? I'm assuming this is from applying the PHB  charge attack rules in "Charging an Opponent"? The APIs have been designed primarily to support the standard AD&D2e rules as per the Player's Handbook, Dungeon Master's Guide and Monsterous Compendium but are not complete.  However, this does not stop applying other rules by creative use of the system. It is also the case that no programmatic solution will ever deal with every possibility available to the DM and Players, especially in a game as complex as D&D (any version).  Sometimes it will be necessary to do things manually. Unfortunately, if there are also others in the melee that aren't charging then giving a penalty of 2 to the charging attackers and not to the targets will make both the attacker's and the target's initiative wrong compared to everyone else. So, how to solve this one? There is nothing in the system that stops a Power from being used before Initiative is done: so a "Charge Attack"  Power could be created that the appropriate types of Fighter have, and if they want to do initiative for a Charge Attack before Initiative is specified they Use the Power . The Power could have an API button that results in the Player being asked to identify the target, and the Power code then uses !rounds --target single command to set an effect status  on the target  to change the target's custom attribute Init_mod.max to be -2, and then reverses this mod once the target's turn in the round occurs. The Init_mod attribute controls mods to initiative for the character/creature: current = action multiplier (e.g. for haste ), and max = bonus/penalty. The same Charge Attack  power could use !rounds --target caster to set an effect status to adjust the AC of the attacker and restore it to normal after the charge. A little complex to create but should work. Perhaps you could join one of my Demo/Q&A sessions if you need help to create this. Effects are super-powerful, and can be used to do almost anything! Edit:  found the PHB charge attack rules and amended the response above.
1667250995

Edited 1667251504
Richard @ Damery
Pro
API Scripter
snuh said: Apologies for the barrage of feedback and questions! Just trying to get everything all set up before our first game. My test attack rolls for a character were looking odd. So I just used the Clear Token Circles to delink all the values on my lvl 8 Cleric. I then manual cleared all the values. I then confirmed that thac0-base was set to (22-(ceil(@{level-class1}/3)*2)) -- also known as '16' -- as per the Priest class. Lastly, I ran Set Token Circles to relink and autofill all the token bubbles. But when it did so, the thac0-base was overwritten and set to 20. That's obviously not the expected behavior. Can anyone reproduce and verify? The link token circles just sets default values for the circles.  The APIs do not  calculate the base Thac0, as it can vary for various reasons.  Its easy enough just to type the base Thac0 value into the circle on the token.  If linked, that then sets the base Thac0 on the sheet.  Effects change the Thac0 on the token, not on the character sheet unless linked.  This is so that if you have a monster that has multiple tokens associated with a single character sheet (which Roll20 allows and is sometimes useful if you have loads of the same creature) then you unlink the Thac0 so that if, say, a Prayer  is in effect only the targeted creatures have their Thac0 affected (if the Thac0 was linked, every token associated with the character sheet would change at the same time). Attacks also use the Thac0 from the token bar rather than the Character Sheet for the same reason. This is also true for use of AC values (AC is even more complex than Thac0). This means that the APIs can't assume the Character Sheet Thac0 is valid.  However, if it is a 1:1 token to character sheet, you can (and should) link the token bars and have the Thac0 recorded on the character sheet, so moving the creature/character between maps/campaigns preserves the value In short, if 1:1 token to character sheet, link the bars, and after that type the correct base Thac0 for that character/NPC into the Thac0 bar circle. If not 1:1, unlink the bars and enter the correct base Thac0 into the token circle of each Token in turn. Tip:  if you haven't already discovered it, if you hover the mouse over any chat menu value which is black on yellow (such as the AC Hit  value on an attack result) you can see what the full calculation was that was used to calculate the vale.
1667916390
Richard @ Damery
Pro
API Scripter
Possible bug:   AttackMaster v1.3.02: If a character has a Casting Level as a Wizard  or  a Priest, or at some time in the past might have had such, and then uses a ranged weapon such as a bow or dagger, the ammo table on the character sheet may not be set up correctly, making it impossible to use ranged weapons.  This issue was introduced by adding functionality in the latest release to support weaponised spells  such as Chromatic Orb , Spiritual Hammer, Ice Knife,  etc. Temporary Workaround:  if a character experiences this problem, select their token and run the following command in the chat window (cut and paste it from here or just type it in): !setattr --sel --casting-level|0 --mu-casting-level|0 --pr-casting-level|0 This will not interfere with any spell casting capabilities they have as these casting levels are reset each time a spell-casting menu is displayed, but it will overcome the issue which was introduced by the new functionality in 1.3.02 to have weaponised spells . Final Fix:  The programmatic fix for the bug has been coded and is in test with the next (mid-November) release for the Race Database.  Expect the release to be Tuesday, 15th November.
1668002283
Richard @ Damery
Pro
API Scripter
Possible bug:   AttackMaster all versions:  Taking a weapon in-hand that can be either 1-handed or 2-handed (such as a Bastard Sword) always uses the 1-handed specifications and damage, even if the weapon is taken in both hands using the Change Weapon  menu.   Workaround:  after taking the weapon in-hand with both hands, edit the character sheet weapon damage lines to reflect the correct 2-handed damage. Final fix:  the fix is coded in the next release, which should be next Tuesday, 15th November. At that point, taking such a weapon in left or right hand (or any other single hand for multi-handed creatures) will use the 1-handed specs and damage for the weapon, and taking it in both hands will use the 2-handed specs and damage.
1668439279
Richard @ Damery
Pro
API Scripter
Race Database Release Tomorrow's release is a relatively large one: support for the Race Database.  The Class menu (under the DM's "Token-Setup" menu, and the Player's "Other Actions" menu) has been extended with a button to select Races. This allows races in the race database distributed with the APIs, or any added by the DM to their own Race database following the help in the  Class & Race Database Help  handout, to be selected for the character associated with the selected token, which will define powers, abilities, possible weapons, armour and the like for the race in a similar way as for Character Classes in the Class Database (in fact, much of the same functionality is used).  When the specified Race of the Character is one in the database, the "Token-Setup / Add To Spellbook / Powers / Add All Class/Race Powers" button will add all valid powers for the class and race of the Character to the character sheet, ready to be memorised. A new button on the  Memorise Powers  menu allows all valid powers to be memorised in one button click, with the correct "uses per day" set. If a race is specified in the "Race" field on the character sheet that is not in the database, the APIs will attempt to determine a "base race" by seeing if the race name includes any of "Elf", "Dwarf", "Gnome", "Halfling", "Half-Orc", or "Human" - e.g. "Demi-Elf" will be given the base race of "Elf", and get the same abilities and powers as a basic PHB Elf. The following races are defined in the initial Race-DB that is distributed with v1.3.03 of the APIs: Aquatic-Elf, Deep-Dwarf, Deep-Gnome, Drow, Duergar, Dwarf, Elf, Forest-Gnome, Gnome, Gray-Dwarf, Grey-Elf, Gully-Dwarf, Hairfoot-Halfling, Half-Elf, Half-Orc, Halfling, High-Elf, Hill-Dwarf, Human, Mountain-Dwarf, Rock-Gnome, Stout-Halfling, Sundered-Dwarf, Svirfneblin, Sylvan-Elf, Tallfellow-Halfling, & Tinker-Gnome
1668442857
snuh
Pro
Nice!
1668506775
Richard @ Damery
Pro
API Scripter
15th November 2022 Bugs found:  The release of the Race Database has gone reasonably OK, but I have found 2 issues on release testing:      Save table not automatically updated:  Where the selected race has race-specific save bonuses, these are not automatically applied when the race is selected.  Workaround:  when making a saving throw using the  Other Actions/Saves  menu, use the  Auto-check Saving Throws  button to correct the saving throws for the character. This only needs to be done once.  Fix:  will be issued in the release on 22nd November.     Sub-Race Attack bonuses not applied:  Where a sub-race is selected for a character (e.g. a Grey-Elf as a subrace of Elf), weapon to-hit bonuses are not correctly picked up from the base race definition.   Workaround:  If Elf is selected (which is a base race), the bonuses are correctly applied - which is the same situation as before the Race Database was issued. So until the fix is issued, only use the base race selections if attack to-hit bonuses are important. Alternatively , extract the Race-DB using  !magic --extract-db Race-DB  and manually add the to-hit bonus definitions to the relevant sub-race definitions.  Fix:  will be issued in the release on 22nd November.
1668597012
Richard @ Damery
Pro
API Scripter
16th November 2022 Bug found: Another issue found in the latest release, introduced while dealing with adding weaponised spells :    DM damage revealed to Players:  When a DM-controlled NPC or creature uses a Melee weapon to attack using the  PC Rolls  or  You Roll  methods (not  Targeted ), successfully hits and then selects to roll damage, the DM's roll result is shown as a public message, rather than just being shown to the DM privately.  Workaround:  The DM may be happy for the Players to all know what damage was done, in which case no workaround is needed. Alternatively, the DM should use Targeted attacks for the interim, by selecting the  Targeted  button on the  Attack .   Fix:  will be issued in the release on 22nd November.
1668599220
Richard @ Damery
Pro
API Scripter
16th November 2022 Handling of ranged weapons and ammo:  The APIs try to deal with weapons entered manually onto the Character Sheet as best they can -  the best way to add weapons  to a Character Sheet is to use the menus to  Edit Weapons & Armour  and  Change Weapon  to take them in-hand as this fills in lots of data not shown on the Character sheet.  However, for those of you who have lots of manually built character sheets that don't want to update them,  the next release  will improve the handing of manually-entered ranged weapons and ammo, so that pairs matched by name are shown in the  Attack  chat window menu - arrows for bows, dagger ammo for ranged dagger weapons, etc.  Ranges will default to whatever is defined for the Weapon (as opposed for if you use the API menus fully to add and handle ranged weapons, when ranges will always be determined by the correct combination of weapon and ammo).
1668635364

Edited 1668635536
Richard @ Damery
Pro
API Scripter
Magical attack bonuses and token Thac0 I've been asked why when many magic spells that add attack bonuses or penalties (like Bless  or Prayer ) are cast on Characters and Creatures, they do not alter the Character Sheet "Temp Buff/Curse" fields, or other custom attributes, and then display the adjustment on the Attack calculation (viewed by hovering the mouse over the AC Hit  field on an Attack display), which would make the bonus/penalty more obvious. It is possible to have multiple tokens associated with a single Character Sheet in Roll20, which is especially useful for DMs managing hordes of creatures. While I recommend that tokens & character sheets are 1:1 (in case spells are used that must  affect the character sheet, such as Haste  or Slow ), for simple situations, multiple tokens per character sheet is sometimes useful. If the attack bonus/penalty is on the character sheet, it would affect all tokens associated with the character sheet, which may not be correct.  E.g.   Bless  can only affect a maximum of 6 creatures, so in a horde of 20, not all the tokens should be affected. So, to overcome this, spells like Bless  actually try to change a Token bar associated with  THAC0 by the API (when in multi-token mode, should not be linked to a character sheet field), managing the value of THAC0 to take into account the bonus or penalty, and then return it to the original value once the effect is over (using spell status effects in the Effects Database).  They only revert to altering values on the Character Sheet if the Token bar values are all associated with other fields, and not with Thac0. However,  I realise that I can create custom attributes where the name of the attribute includes the internal Roll20 Token ID.  Thus, in some future release I will attempt to move Token-specific attack bonus/penalty values to the (possibly shared) character sheet, and display the calculation correctly in the Attack Display.  This will make the spell effects more obvious, while preserving the multi-token capabilities. Any thoughts or comments from DMs on this would be very welcome.  Do you use the multi-token per character sheet approach? Or are hordes of creatures not your thing?
1668877835
snuh
Pro
Bug Report: TypeError when equipping melee weapon as some Races Overview While creating and testing attacks for new characters I kept receiving an error for just one particular character when making a melee attack: (From RPGMaster): AttackMaster JavaScript TypeError: Cannot read property '0' of undefined All the other characters worked fine. Even the longbow attack for this character worked fine, but not for Dagger, Longsword, or Battle-Axe. So I went through a long search and combinatorial testing process and I think I've narrowed it down to an issue with Race. I haven't tested them all but High-Elf, Human, Dwarf, and Gnome don't have this issue but Elf, Half-Elf, and Halfling do. Steps to Reproduce Via the character sheet create a new character (setting name, Fighter 1, Human, all 10s for stats - and nothing else) Drag a new token to the page and set as default token Finish character creation using the Token-setup menu for steps 4-9: Assign Attack and Attack Menu abilities Make Player Character and assign to a player Set Base Saving Throws Add to Proficiencies: Dagger - Proficient Add to Proficiencies: Longbow - Proficient Set Token Circles Add weapons & 20 sheaf arrows via Add-items Equip Dagger via Attk Menu (wait a surprisingly long time and then have Chrome crash due to Error code: Out of Memory. Reload & unequip Dagger and then re-equip to be safe) Click Attack button and everything displays fine. Repeat 11-13 for Longbow Using the Token-setup menu (or edit the character sheet, the result is the same) change the race to Elf Click Attack button and Longbow displays fine. Equip Dagger via Attk Menu Click Attack button Expected Behavior Dagger attack chat result should be identical to that of Step 13. Result Chat error returned: (From RPGMaster): AttackMaster JavaScript TypeError: Cannot read property '0' of undefined API console output: "AttackMaster buildMWattkMacros: JavaScript TypeError: Cannot read property '0' of undefined while building weapon Dagger" "RPGMaster error: AttackMaster JavaScript TypeError: Cannot read property '0' of undefined"
1668945953
Richard @ Damery
Pro
API Scripter
snuh said: Bug Report: TypeError when equipping melee weapon as some Races Overview While creating and testing attacks for new characters I kept receiving an error for just one particular character when making a melee attack: (From RPGMaster): AttackMaster JavaScript TypeError: Cannot read property '0' of undefined All the other characters worked fine. Even the longbow attack for this character worked fine, but not for Dagger, Longsword, or Battle-Axe. So I went through a long search and combinatorial testing process and I think I've narrowed it down to an issue with Race. I haven't tested them all but High-Elf, Human, Dwarf, and Gnome don't have this issue but Elf, Half-Elf, and Halfling do. Steps to Reproduce [... through ...] 18. Expected Behavior Dagger attack chat result should be identical to that of Step 13. Result Chat error returned: (From RPGMaster): AttackMaster JavaScript TypeError: Cannot read property '0' of undefined API console output: "AttackMaster buildMWattkMacros: JavaScript TypeError: Cannot read property '0' of undefined while building weapon Dagger" "RPGMaster error: AttackMaster JavaScript TypeError: Cannot read property '0' of undefined" Thanks for such a detailed bug report! That is exactly  how I like to see them. So thanks for the time you spent looking at this one! As a result I was quickly able to fix the issue, which was in the management of To Hit Weapon Type Bonuses  for certain races (i.e. Elves, Half-Elves & Halflings).  The fix will be in the release on Monday night, along side the introduction of the Creatures Database .
1668957306
snuh
Pro
Awesome, thanks for the quick fix! I was on the receiving end of bad bug reports and I swore to do better.
1669022030

Edited 1669024321
Richard @ Damery
Pro
API Scripter
Release 22nd November - Creature Database The 22nd November release will see some fixes to issues added by the Race-DB release (as previously advised), but will be focused on the introduction of an extension to the Race Database, for Creatures from the Monsterous Compendium.  The API-supplied (and held in memory) Race-DB-Creatures database will use many of the same functions and data attributes as the Race Database, but add the crucial capability to set up the Character Sheet for the DM for that creature to make best use of the RPGMaster APIs - setting Monster-tab attributes as required by the APIs, attacks with "damage messages" that offer API buttons for Creatures to do more than HP damage, automatically adding Powers the creature has, and other aspects. The API-supplied (and held in memory) Race-DB-Creatures database will use many of the same functions and data attributes as the Race Database, but add the crucial capability to set up the Character Sheet for the DM for that creature to make best use of the RPGMaster APIs The initial list of creatures is very limited - sorry, but it takes me time to add them, and I'm initially focusing on those creatures that the DMs in my group have asked for.  If you have any requests , let me know in this thread or by a PM. In order to make life easier for DMs, and to offer those of us who perhaps have less than an encyclopeadic knowledge of the Monsterous Compendium, there is the facility to provide prompts on successful hits as to what is achieved, if it is more than just damage.  E.g. above, an API button is offered to add a Paralysis  status marker for the correct duration to an opponent who has been hit by a Ghoul. Creature definitions can be quite complex (and long if you include lots of information).  As with all other RPGMaster databases, DMs can add their own extension character sheet databases following the guidance in the Class & Race Database Help  handout created automatically in your campaign when you load the RPGMaster APIs. Any powers that a creature has been programmed to possess will automatically be added to their Powers Spellbook - however, these still need to be memorised... ...but a new button on the Memorise Powers  menu makes this quick and easy: pressing it will examine all Class, Race  and Creature  powers in the Powers Spellbook of the character sheet of the selected token, and memorise those valid for the level of that character/creature, with the correct number of uses per day. Selecting a creature fills in only those attributes on the Monster-tab that are currently used by the APIs. It is not a full version of the Monsterous Compendium I'm afraid. This one is for the Vampire specified above.  You will also see on other tabs that the Race has been set to Vampire , that the Powers Spellbook  has been added to, and that any Damage Message  has been inserted in the Weapons-tab Special Abilities & Attacks  field. Do remember:  as always, you can give any creature normal weapons and armour in exactly the same way you would a PC or NPC - they can be added using the DM's Add Items  button, or the Player's Attk Menu/Edit Weapons & Armour  menu, and worn or taken in hand (and looted by players after they have killed the creature...), as can any other magic items and treasure. You can even give a creature a Class  to become a magic user or priest (or Shaman, or Rogue etc) and a level in that class.  Some creatures (e.g. Troll Shaman) have their own Creature Class  defined which is set automatically and can be seen on the Class & Race Menu  when the creature is chosen.