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 1697536049
Richard @ Damery
Pro
API Scripter
Latest RPGMaster news... 17th October 2023, v2.3.0 Release v2.3 now live! Welcome to version 2.3 of the RPGMaster Suite of APIs for Roll20.  Meet all types of Chromatic & Metalic Dragons in the  Drag & Drop  stable, and families of Giants too! Lots of goodies, but not many have visible images for me to paint in this release note - you'll just have to play them for yourselves! New creatures, with powers, weapons, classes and effects A number of new  Drag & Drop  creatures have been added, including many Giants, Metalic & Chromatic Dragons, Winter Wolves, Centaurs, Ropers, Hell Hounds and Titans, along with all their powers, weapons and spell-casting abilities. See the post here for the current full list of Drag & Drop  creatures. New RaceData attributes Mainly to support  Drag & Drop  dragons, new attributes have been added to RaceData specifications: Age, Magic resistance, and Spell Speed Override (e.g. dragons always cast spells at 1 segment). The Age attribute takes the form  text:# , with the text version of the age being displayed in the  Age  field of the character sheet (this can of course just be the numeric age). The # is used in maths to affect other attributes and use of powers & spells. See the  Class & Race Database Help  handout for details. Drag & Drop  Creature 'Query' Attribute A new drag & drop creature RaceData 'query' attribute has been created that adds an extra level of query to   Drag & Drop   creature selection and returns variables based on the selection. This is used, for instance, when   Dragging & Dropping   a Dragon to ask the GM for its age, which affects many of the attributes & powers of the Dragon. See the   Class & Race Database Help   handout for more information. Maths Evaluator for  Drag & Drop  Creature Attributes A new maths evaluation function has been added to support new race 'query' variables. It is not possible to use the Roll20 chat maths for various reasons when specifying creature attributes that are dependent on the values returned by the new 'query' attribute described above, so a new simple maths evaluator has been added to the APIs to support the likes of Dragon age variation. See the  Class & Race Database Help  handout for more information. Random Spells for Spell-casting  Drag & Drop  creatures It has been possible to specify spellbooks for  Drag & Drop  creatures that can cast spells for some time. However, it is now possible to add random spells (randomly selected and added to the spell book at creation) to the spell book. Just put the word "random" in as a spell name when specifying a spell book in the  Drag & Drop  creature specification e.g.  [cl:MU,lv:2,w:random|random|random]  would add three random spells to the creature's 2nd level spell book. As always, see the  Class & Race Database Help  handout for more information Drag & Drop  Auto-Memorisation of Spells as well as Powers Drag & Drop  creature Powers have always automatically been memorised. It is now the case that any spell-casting  Drag & Drop  creatures will memorise random sets of spells from their spell-books at each level appropriate to their casting capabilities. Priests always have all spells for their allowed spheres available for memorising and random spells will be selected from these as appropriate. But wizard classes may or may not have spell-books specified. If a  Drag & Drop  creature has a wizard casting level but no spells specified for their spell-books (using the  [cl:MU,lv:#,w:...|...|...]  syntax), the APIs will automatically randomly memorise valid spells appropriate to each valid spell casting level from all valid spells, and add these memorised spells to the creature's spell books. Of course, in the case of both Priest and Wizard classes, the GM can adjust the spells in the spell-books using the appropriate button on the GM's [Token Setup] dialog, and memorise different spells from the spell-book using the  Spells Menu > Memorise Spells  dialog. 'specmu' ClassData Attribute The new 'specmu' ClassData attribute flags this class is to be  specmu:1  or not be  specmu:0  a specialist Wizard class. Defaults to 1 for new classes of Wizard, meaning they can memorise an additional spell per spell level in their specialist school. Multiple Effect Instances To date, it has been possible to only simultaneously run multiple copies of the same Effect by adding a  Differentiator  to the called Effect name (see  RoundMaster API Help  handout for details). Invoking any Effect more than once using  !rounds --target  or  !rounds --addstatus  or any related command would overwrite, extend or otherwise change the duration and direction of the Effect, depending on the 'operator' preceding the Effect  duration  (+,-,<,>,=). A new operator is now allowed: '#'. Specifying a duration such as #5 will spawn a new Status of the same name with duration of 5 rounds, apply any Effect-start specification again, invoke Effect-turn multiply each round, and invoke Effect-end as each instance of the Effect ends. An example of this use is the Roper Strand - multiple Roper Strand hits can affect the victim's Strength score at the same time. Item-Specific Spell Lists To date, specific spell book entries for spell-storing magic items were not allocated specifically to the item they were stored in: if two items had the same spell stored, and one of those spells had not yet been cast, either item could cast the remaining available spell which could cause issues and invalid game play. Spells are now tied to the item they are stored on even if the same spell is stored on two or more items. This approach has always been the case for items with powers - spells now use the same storing mechanism. However, backwards compatibility has been retained for use of legacy items and items already "owned" by characters. New !magic --change-attr Maths Operators The MagicMaster API command --change-attr can be used in Effects and the chat window to adjust the value of a character's attribute by a +/- amount. This takes account of strength 18 percentages (which will actually work on any attribute, though this is not strictly valid for 2e). Now, in addition you can use a '*' for multiply and '/' for divide to adjust the attribute by a specified factor. Several examples of this use can be seen in the Effects-DB. Multiple Bug Fixes The following bugs have been fixed Fixed bug that prevented '-turn' effects working under some circumstances Fixed two-weapon attack speeds where one weapon has less than one attack per round. Fixed calculation of non-proficient weapon penalties set for classes & races. Fixed checking valid spells & valid powers which would show invalid spells/powers as valid under some circumstances. Fixed character level of creature that has both HD & caster level. Fixed save mods due to some magic items not being correctly applied. Several small database data fixes. Improved setAttr() error handling. 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!
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!
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.
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.
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)
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
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}
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.
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?
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.
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.
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.
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
Nice!
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.
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.
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?
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"
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 .
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.
1670923425

Edited 1670933043
Richard @ Damery
Pro
API Scripter
RPGMaster Release Notes v1.401 RPGMaster Release Notes for version 1.4.01 Release Notes A RPGM Releae Notes  handout has been added to the campaign, with a link that pops up when the APIs initialise for you to select to quickly access them. Support for Fighting Styles Fighting Styles, as defined in  The Complete Fighter's Handbook,  have been added to the RPGMaster suite of APIs. RPGMLibrary:  A new database has been added called  Styles-DB , that contains the rules and description of each Fighting Style. A new help handout has also been added explaining the Styles Database. CommandMaster:  In the  Add to Proficiencies  menu (under the DM's Token-Setup menu - !cmd --abilities), a new button at the top, next to [Choose Weapon], is [Choose Style] which opens a drop-down list of currently available Fighting Styles that can be granted to the selected Character. Once selected, the style can be added in the same way as other proficiencies as Proficient or Specialised. AttackMaster:  When a Player uses the  Change Weapon  menu to equip what is in each hand (or both hands), the API checks all currently proficient Fighting Styles and assesses if the criteria for each has been met (the right combination of weapons, shields and even spells in specific hands). It then sets up the benefits to be applied for those styles that are in effect, including when calculating attack success and damage. InitMaster:  If a Fighting Style is in effect, and its benefits/penalties affect the speed and/or number of attacks, the API will take this into account when calculating initiative priorities and entries in the Turn Order. (At time of writing, InitMaster v1.4.01 has not gone live due to a merge conflict. I'm working with Roll20 Helpdesk to resolve this quickly). Creature  Drag-and-Drop  Setup After introducing the basic Creature database and functionality in v1.3.04, the database has been expanded with a few more creatures. However, the main reason for this release is the introduction of the capability to drag a blank Character Sheet onto the map area of the Roll20 UI and select the Creature for it to represent from a drop-down list: at which point the APIs setup both the Token and Character Sheet to represent that Creature in such a way as to work optimally with the RPGMastre APIs. Try the following: Add a new blank character sheet in the Campaign Journal, give it a name and an image if you want, and then close the Character Sheet Drag the blank Character Sheet onto the map area and drop it anywhere, to drop a token In the Chat Window, the Race/Class menu should pop up (scroll down to the bottom - Chat often does not scroll when you are in Journal) Important:  check that the token you have just dropped is selected - annoyingly, Roll20 does not do this by default and I can't find a way to select it from the API Choose a Creature (any Creature) from under the [Creatures] button on the Race/Class menu --- lots of things happen --- Click away from the token, then reselect it. This is now the current state: The token is now the Default token for the Character Sheet The bars on the Token are correctly set up for RPGMaster All the attributes for the creature that RPGMaster needs have been set up on the character sheet Innate Creature attacks have been set up, with Special Attack messages and actions added - however, if the Creature can use normal/magical weapons & armour, these will need to be added to it in the normal way. The correct Action Buttons for the Creature have been added and appear at the top of the screen when the token is selected If the Creature has Powers, they have been added and automatically memorised for the correct uses per day If the Creature has spell casting capability (other than Powers), they have the right Classes & levels set up (you need to add spells to their spellbooks manually - if spells are specifically specified for a Creature in the Monsterous Compendium, I have added them as Powers). Each Creature added in this way as a separate Character Sheet & token will have unique HP rolled for it using the Hit Dice spec of the creature Essentially, this is a one-click Creature Creation system, replicating the D&D5e Compendium capabilities... Effect Name Hiding There are many effects already programmed for RoundMaster, which can be used with the  !rounds --target  command to have effects on Character Sheets when spells or powers affect them. See the RoundMaster Help and Effects Database Help handouts for more information. However, the process of placing an effect on a character shows the name of the effect to the Player, which can spoil the surprise of the effect! So there is now a new syntax for Effect specification that will apply an effect to a character, but show the Player a different text. The syntax for an Effect name is now: Effect-name Effect-name_Player-text Effect-name_Player-text_Differentiator The above are optional syntaxes - any one can be used. Effect-name  is mandatory, and is the name of the effect in the Effects database or, if there is no associated Effect, the name of the status being applied. Player-text  if provided is the text that will be shown to the Player instead of the Effect/status name. Differentiator  if provided just makes this Effect/status different from any other with the same Effect-name and Player-text. This will only be needed in very limited circumstances that perhaps requires the same effect to be applied twice due to two different status applications e.g. by two different creatures with an effect that is cumulative, and the differentiator can be their Token-IDs.
1670933544

Edited 1670933697
Richard @ Damery
Pro
API Scripter
Player, Character & Token name checks A new check is run on startup by the RPGMaster API suite. It checks all Player, Character & Token names for 'unhelpful' characters in the text. Some DMs trying to use the RPGMaster suite have reported difficulties that I have traced to there being 'unhelpful' characters in the display names for Players, and the names of Characters and Tokens.  Roll20 assigns meanng to certain characters, which means when they get included in streams to the Chat Window, various random things can happen.  E.g. for ease of DMs being able to program their own stuff, the API suite uses standard Roll20 Roll Templates and API buttons extensively, as well as functions such as Attribute selections and Roll Queries: the syntax for these uses characters such as '( )', '[ ]', '{ }', @, ?, etc.  If these characters appear in data that might end up in streams to the Roll20 Chat Window, such as in Player, Character & Token names, this can cause random issues. So please stick to using alphanumerics, plus, minus/hyphen, underscore, dot and spaces in names. I could reprogram the APIs to use alternative syntax for stuff to display and action in the chat window, but that would add complexity and make database extending more complex for DMs - currently pretty much everything you need to know for extending the databases is standard Roll20 functionality covered in the Roll20 Help Center (ability macros, roll templates, API buttons etc).  So I'm not going to do that. I hope that's OK?  I'm open to comments and other suggestions.
Fighting Style Initiative bonuses now live The kind technical team at Roll20 have done a bespoke merge for me and pushed my InitMaster mods for Fighting Styles into the master repository, so all those who have RPGMaster loaded by One Click will now have it live.  Download it from my GitHub directories, along with all the latest versions of the other RPGMaster APIs if you are so inclined!
1673446496

Edited 1673448762
Richard @ Damery
Pro
API Scripter
More Creatures, now with Weapons & Armour! The latest release of the RPGMaster suite of APIs adds more Drag & Drop  creatures to the database, plus adds weapons & armour to their specifications in the same manner as specified in the Monsterous Manual - that is, creatures can have a selection of weapons and armour types and which is given to them is decided on a percentage dice roll made whenever a creature of that type is dropped on the map! For example, Orcs can have quite a range of different weapons, specified as follows: %:5, prime:Shortsword, offhand:Footmans Flail %:10, prime:Shortsword, offhand:Spear %:5, prime:Battleaxe, items:Partisan %:5, prime:Battleaxe, items:Glaive %:5, prime:Battleaxe, items:Light Crossbow:1|Light Quarrel:20 %:5, items:Battleaxe:1|Light Quarrel:20, both:Light Crossbow %:5, items:Battleaxe:1|Flight Arrows:20, both:Shortbow %:5, prime:Battleaxe, items:Light Crossbow:1|Light Quarrel:20 %:5, offhand:Battleaxe, prime:Shortsword %:10, prime:Spear %:10, prime:Battleaxe %:5, both:Glaive %:5, both:Partisan %:5, both:Hook Fauchard %:5, both:Guisarme As can be seen, the percentages do not need to add up to 100% - the APIs will roll and choose out of the total given. Prime hand, offhand, both hands, and even additional hands for creatures with 3:, 4:, 5: etc hands, can be specified, as well as items:  held in the backpack/quiver for equipping using Change Weapon & use with ranged weapons. An optional quantity can be included with each weapon/ammo, defaulting to 1.  See the Class & Race Database Help  handout for full details of syntax and how to add weapons and armour to creature specifications. Additional Reusable Ammunition Modes Most standard ammunition (such as Flight Arrows for Bows) is fired and the quantity in the character's quiver reduces by 1, which can then be retrieved (if the DM says it can) and returned to the quiver using the Recover Ammo  menu option. Some other ammunition cannot be retrieved, always immediately breaking after a single use (e.g. Glass Arrows), and yet other ammunition automatically returns to the quiver or hand after being used (e.g. a magically returning warhammer such as Whelm). These Reusable Ammunition  modes are configured in the weapon specification in the databases using the ru:  attribute in the ammo data. 0 = Standard ammo -1 = Always breaks 1 = Always returns automatically Two new modes have been added (mostly to support weaponised spells & certain attacks used by creatures).  These are: Reusable Mode 2 = A weapon or creature which can have multiple attack types but use of any one attack type sets that as the type for all future attacks - e.g. a Spitting Snake can have one of several poisons, but once the type of poison is determined for the first attack, that is the poison this snake is using: this saves defining a different spitting snake config for each possible poison type. So, on first attack, all possible poison types are shown as possible "ammo" for the spit, but once the attack is made only that type of poison will be available for that particular snake token/character sheet. Another copy ( dragged & dropped  separately) can have a totally different poison type. Reusable Mode 3 = A weapon with multiple modes of operation, that switches modes on use. The ammo selected reduces in quantity by 1 (often from 1 to 0) and, at the same time, all other types of ammo for the weapon increase  in quantity by 1 (often from 0 to 1). E.g. a Net starts off folded without any penalties to the attack roll, with an "ammo" of "Folded Net" qty 1 (ru:3), and "Unfolded Net" qty 0 (ru:1). When thrown, using the Folded Net ammo, Folded net qty reduces to 0, and Unfolded Net increases to 1 (and stays at 1).  Unfolded Net has an attack penalty of -3, but is the only ammo then available - until the Net is re-equipped using Change Weapon , when the net will again appear Folded. For more information see the Weapons & Armour Database Help  handout.
Awesome stuff as always! Is there a git repo for this? Sometimes I'll see a minor typo or something missing from a database - nothing that warrants a bug report or request here - and it'd be nice to contribute simple edits back to the project.
snuh said: Awesome stuff as always! Is there a git repo for this? Sometimes I'll see a minor typo or something missing from a database - nothing that warrants a bug report or request here - and it'd be nice to contribute simple edits back to the project. Thanks for the encouragement, snuh!  Definately appreciated! I do have a git repo, and happy to add you as a collaborator. I'll send you a PM about it.
15th January 2023 Bug Found:  When taking weapons in hand using  Attk Menu / Change Weapon  or the  !attk --weapon  command, the APIs are not setting the correct number of attacks per round based on class, level & race (weapon type is setting correctly e.g. dagger 2/r, dart 3/r). Work Around:  After equipping a weapon, go to the Character Sheet weapon tables and enter the correct attacks per round in the weapon table field. Final Fix:  I have already found and corrected the error, which was caused by the adding of the  Drag & Drop  creature functionality. The final fix should be in next week's release. Thanks to @Rick for helping me find this one!
1673947791

Edited 1673948043
Richard @ Damery
Pro
API Scripter
Release v1.4.03 fixes & new features 17th January 2023 Bug fixes The automatic calculation of the number of attacks per round when taking a weapon in hand based on weapon specs, proficiency, class, level & race specifications is now working again after an issue introduced in v1.4.01. The "Memorise all valid Powers" button on the Spells Menu / Memorise Powers  dialogue was also not working and has now been fixed. Creature Attack Specification Improvements Creature innate attacks, specified using the Attack fields on the Monster tab of the Character Sheet, have always had the ability to specify either just the dice roll for damage, or "Attk name,dice roll,speed,type". However, doing the latter meant the roll button on the Character Sheet did not work, so those using Drag & Drop creatures but not the RPGMaster AttackMaster API for attacks experienced issues. It is now possible to put either the Attack Name or the Dice Roll first in the sequence (i.e. "Dice Roll,attack name,speed,type" is now also supported). Using this new alternative format means the Character Sheet roll buttons work, and the AttackMaster API will check whether the dice roll specification is in the first or second fields and use whichever is appropriate. All Drag & Drop  creature specifications in the Race-DB-Creatures  database distributed with the APIs have been updated to use the new specification. Attack & Damage messages The AttackMaster API has supported the addition of messages to Damage Roll notifications as specified in the AttackMaster Help handout for some time. These messages can be added manually to a Character Sheet in the notes field on the Melee Weapons page (tooltip: abilitiesnotes ). It is now also possible to add Attack Roll notifications in a similar way by manually adding them to the Character Sheet in the notes field of the Ranged Weapons page (tooltip: abilitiesnotesranged ). This message uses exactly the same format as the Damage message - see the AttackMaster Help handout (Section 2. Attacking Commands ) for details, and examples in the Race-DB-Creatures database.
Ohhhhh .... I will have to make a new room to give this script a try! man so great seeing people supporting the good old games! :D
El Brujo said: Ohhhhh .... I will have to make a new room to give this script a try! man so great seeing people supporting the good old games! :D Welcome to RPGMaster! Do watch my (somewhat out of date but still useful) videos on how to use RPGMaster on the Wiki page here  if you've not done so already. The help handouts automatically loaded to your campaign also give a lot of detailed information, but are a bit too detailed for some :) ! I'll set a date for another introductory Q&A game-play session in the near future - would you be interested?
1674208468

Edited 1674208663
Richard @ Damery
Pro
API Scripter
Coming Soon: Character Sheet Conversion Those who are put off RPGMaster because it does not work well with Characters with AD&D2e Character Sheets that have not been created from scratch with RPGMaster tools may be glad to hear (if they like the look of RPGMaster) that the next release in a couple of weeks will include tools to convert to RPGMaster compatability any manually completed character sheets with: manually entered weapons in the weapons tables, equipment lists scattered across the many tables of Peter's excellent sheet, spells entered in the various spell tables, and many weapons, equipment, magic items & spells not named  exactly  the same as those in the API databases. The tools will convert multiple selected tokens with associated character sheets all at the same time, and will display dialogues to list items that are not recognised or don't match API database items and allow the DM to select equivalent items from the databases to replace them. Clearly, this is not a magic bullet - you will have items on sheets that do not match any API database item.  These can be left on the sheets (they at least will be in the correct character sheet tables now for the APIs to know what type of item they are), and new database items added to match them using the instructions in the Database Help handouts (or you can wait for me to get round to programming  all  the weapons, items, spells, powers etc in all the AD&D2e books and variants...). Also, Players who enter stuff manually on the sheet are unregulated  to a degree, and I know that these conversion functions will not pick everything up that they've entered... But its a start!
Richard @ Damery said: Welcome to RPGMaster! Do watch my (somewhat out of date but still useful) videos on how to use RPGMaster on the Wiki page here  if you've not done so already. The help handouts automatically loaded to your campaign also give a lot of detailed information, but are a bit too detailed for some :) ! I'll set a date for another introductory Q&A game-play session in the near future - would you be interested? Hey man! Thanks! I will look out for the wiki!  Sadly due to my highly irregular work schedule in 3 timezones, I am not fully able to commit to such a session, to my detriment sadly. But many many thanks for the offer :) Keep on doing this! The more love to the classics the better! :D Cheers!
1675148354

Edited 1675148391
Richard @ Damery
Pro
API Scripter
31st January 2023 Today, the latest release of the RPGMaster suite of APIs have been released.  These include the Character Sheet Conversion functions that are explained here , and also an additional two changes: managing token bars & bar links, and using very short ranges for ranged weapons. Managing Token Bars A function has been added to the Token-Setup menu to manage which character sheet fields are linked to the token bars, and adjust the API settings accordingly. The APIs need to know which fields are represented by which token bars mainly to support creature mobs (where multiple tokens are representing a single character sheet, such as you might use for a plague of rats, and one or more of the token bars are not linked to the character sheet so changing a value on one does not change the value on all). While the APIs can search token bar link data for tokens that have their bars linked to character sheet fields (the normal situation for 1-to-1 token/character sheet pairs) in order to ensure the correct use of token bar data, this is not possible if no links exist. Knowing the token bar mapping is important for implementing the effects of spells like Vampiric Touch (which affects HP), Bless (which affects Thac0) and conditions like Blindness (which affects both AC and Thac0). It is recommended that these character sheet fields are represented by token bars (in whatever order, but use thac0_base rather than Thac0) so that creatures, and especially selected parts of creature mobs that are in an area of effect, can be affected by these spells using RPGMaster Spell Effects from the Effects Database. Functions are provided on a sub-menu to: Use a selected token as a template to set the default token bar mapping you want in your campaign Change the token bar links of one or more selected tokens to the default mappings Clear one or more selected token bar links, but setting bar values and max values to match the default mappings, for creature mobs Set token bar links to defaults for all tokens in the campaign, but not changing anything on tokens already set up as creature mob tokens Set token bar links and values/max values for all tokens in the campaign, including values/max values for creature mobs (but links not set for mobs) Range Support change Some ranged weapons, e.g. Chain, have very short ranges. To date, the shortest short range a ranged weapon could have was 10 (represented by '1' in standard range specifications). It is now possible to put an "equals" character '=' before the range specification in ammo data which will surpress the x10 multiplication of the range figures. Thus specifying 'r:1/2/3' rould result in ranges of 10 for short range, 20 for medium, and 30 for long, but specifying 'r:=5/10/20' will result in ranges of 5 for short range, 10 for medium and 20 for long.
Next Release The next release will focus on adding Rods, Staves and Wands from the DMG in such a way as to make them as operative as possible: they have to be taken in-hand using the Change Weapon  dialogue and buttons to explain/activate their powers will then be displayed on the Attack  action menu.  This release won't be available for a little while yet (I'm off to Nepal for a trek in the Himalayas) but thought I'd post here to (a) keep this thread alive and (b) let you know that the RPGMaster APIs are still being developed and added to.
I have installed InitMaster and RoundMaster. In the early stages of trying to understand and configure but keep getting this error:   (From RPGMaster):   RPGMaster Library JavaScript TypeError: Cannot read property 'playerConfig' of undefined
1677672847

Edited 1678180057
Richard @ Damery
Pro
API Scripter
Lucas the Upright said: I have installed InitMaster and RoundMaster. In the early stages of trying to understand and configure but keep getting this error:   (From RPGMaster):   RPGMaster Library JavaScript TypeError: Cannot read property 'playerConfig' of undefined Oh! Sorry to see that.  Yes I've reproduced this. Thanks for reporting it. Now fixed in release v1.4.05 Error:  I seem to have introduced a dependency between the RPGMaster Library and the MagicMaster & AttackMaster APIs that both support the --config command.  --config  allows the DM to set the default display properties for dialogues & menus in the Chat Window, and this flag is queried by the RPGMaster Library without trapping an error if AttackMaster & MagicMaster are not loaded. Temporary Workaround: Load all RPGMaster APIs even if only using the commands of 1 or 2 of them.  Use 1-click install to load CommandMaster, and this will automatically load all APIs required. Once the permanent fix is released, the APIs you don't need will be able to be removed.  If wanted, this will also allow DMs to use !attk --config  or !magic --config  to set the default chat dialogue and menu formats, or use the cog shown top right of any displayed RPGMaster API dialogue or menu to set the format (excludes RoundMaster dialogues). Final Fix ETA:  I will make a release early next week that will remove this dependency.