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

[Sheet Authors] Compendium Integration documentation now available

I've updated the Wiki with the information you need to add Compendium integration to your Character Sheets. You can view the information here: <a href="https://wiki.roll20.net/Building_Character_Sheets#" rel="nofollow">https://wiki.roll20.net/Building_Character_Sheets#</a>... (I also split off the "Building Character Sheets" section onto its own page instead of just having it on "Character Sheets" since it doesn't really fit with the basic info on Character Sheets). In addition, there is a new setting on the Game Settings page which allows you to manually choose which Compendium you want to use during your game. This is what you should use to select a Compendium if you are using the "Custom" sheet type and aren't using a community-contributed sheet for your game. Let me know if you have any questions!
1453898052

Edited 1453910348
Kryx
Pro
Sheet Author
API Scripter
Riley D. said: Open and community-driven. Our goal is to provide a resource that the whole community can freely use. Anyone can apply to help edit the Compendium and keep it up to date, and all of our data is freely available in JSON format; for example, here’s the Fireball entry: <a href="https://app.roll20.net/compendium/dnd5e/Fireball.json" rel="nofollow">https://app.roll20.net/compendium/dnd5e/Fireball.json</a> . The JSON format should really match the spell as much as possible. Here is my format for example: { "name": "Fireball", "description": "A bright streak flashes from your pointing finger to a point you choose within range and then blossoms with a low roar into an explosion of flame. Each creature in a 20-foot-radius sphere centered on that point must make a Dexterity saving throw. A target takes 8d6 fire damage on a failed save, or half as much damage on a successful one.\nThe fire spreads around corners. It ignites flammable objects in the area that aren't being worn or carried.", "higherLevel": "When you cast this spell using a spell slot of 4th level or higher, the damage increases by 1d6 for each slot level above 3rd.", "emote": "evokes a bright streak that flashes from {{GENDER_PRONOUN_HIS_HER}} pointing finger to a point and then blossoms with a low roar into an explosion of flame", "source": "phb 241", "range": "150 ft", "target": "each creature in the aoe", "aoe": "20 ft radius sphere centered on a point within range", "components": "V, S, M (A tiny ball of bat guano and sulfur)", "duration": "Instantaneous", "castingTime": "1 action", "level": 3, "school": "Evocation", "save": { "ability": "dexterity", "damage": "8d6", "damageType": "fire", "saveSuccess": "half damage", "higherLevelDice": "1", "higherLevelDie": "d6" }, "effects": "The fire spreads around corners. It ignites flammable objects in the area that aren't being worn or carried.", "classes": [ "Sorcerer", "Wizard" ], "archetypes": [ "Fiend", "Light" ] }, I'm likely going to refine mine, but your current system does not allow for higher level dice to be automatically added to the damage. It would be great to work together here (though as before it seems you don't want to). I already have all the spells processed in this format and can easily adapt to an agreed upon format.
(Kryx, I moved your post to this thread since I thought it was really more of a Sheet Author discussion). @Kryx: I'm not opposed at all to coming up with a common format to whatever degree is possible. Certainly on your specific suggestion of splitting out the Higher Level spell information, there is merit. However, I think it's important to note that there are going to be some inherent compatibility issues between the data sets. Mostly stemming from the fact that your Github repo is based on information that is under copyright and ours is based on the SRD/OGL. That means everything from the data in some spells, the existence of some spells, heck even the names of some spells are going to totally different (looking at you, Acid Arrow). In addition, our data structure is going to be totally flat for the simple reason that we want it to be easily editable on the site, more readable, and we have to support more than just 5E game systems.&nbsp; Anywho, I'll look into splitting out the spell higher level info in our data set, beyond that let me know if there's anything else that would be particularly helpful and I'll certainly consider it.
1453916187

Edited 1453917861
Kryx
Pro
Sheet Author
API Scripter
Hey Riley, thanks for the reply. I don't expect my data set to be used directly - I'm totally happy to help build this Compendium system (assuming you move forward on the houserules part of it). I can easily manipulate my data to be OGL and whatever format comes out of this and them submit that to the compendium (btw I'd like to contribute there) Flat structure is totally fine. Some other items you'll need: Second damage (see Acid Arrow, Destructive Wave, Flame Strike, Ice Storm, Ice Knife, etc) Second damage type Higher level damage as discussed Target specifies "in the area", but should be "Each creature in a 20 foot radius sphere centered on that point". Not doing area as a separate field as I once did is good. ritual concentration Archetypes - it is probably better to categorize spells by class only if it's on the main list. If it's an archetype that should probably be a separate list to avoid any kind of confusion for the user. Meaning you don't want all Clerics thinking they can take fireball when only a Light Domain Cleric can. cantrip damage (I currently use&nbsp;((@{level} + 1) / 6 + 0.5)d6 in the damage field) Wording needs to be EXACT . In the example fireball says "Each creature in a 20-foot radius must make a Dexterity saving throw.", but on the SRD it says "Each creature in a 20 foot radius sphere centered on that point must make a Dexterity saving throw." I remember the centered on that point part being useful for determining the size, but I can't find an example of the opposite case right now. components: on my sheet I allow filtering spells. Without components being individual fields I cannot assign them to inputs. I could sheetWorkers this, but it seems like there is probably a better solution to be had. Thanks. :)
1453916542
vÍnce
Pro
Sheet Author
Thoughts of a Sheet Author: " Thanks Riley, when will I ever have time to play? " &nbsp;;-P
1453917707

Edited 1453917731
Kryx
Pro
Sheet Author
API Scripter
For input[type=checkbox] and input[type=radio] tags, the box will be checked/radio selected if the value from the compendium exactly matches the value attribute from the tag. This can be problematic. For example I currently have: &lt;input type="checkbox" name="attr_ritual" value="{{ritual=1}}"&gt; This means that if the ritual is checked then it will output it. How would you suggest handling a situation like this? Everything else on the wiki looks good. :)
@Kryx We do have some of these in already: Secondary Damage: For example, Acid Arrow:&nbsp; <a href="https://app.roll20.net/compendium/dnd5e/Acid%20Arr" rel="nofollow">https://app.roll20.net/compendium/dnd5e/Acid%20Arr</a>... Ritual: For example, Alarm:&nbsp; <a href="https://app.roll20.net/compendium/dnd5e/Spells:Ala" rel="nofollow">https://app.roll20.net/compendium/dnd5e/Spells:Ala</a>... Concentration: For example, Alter Self:&nbsp; <a href="https://app.roll20.net/compendium/dnd5e/Spells:Alt" rel="nofollow">https://app.roll20.net/compendium/dnd5e/Spells:Alt</a>... Cantrip Damage: We actually followed your example here already, for example Acid Splash:&nbsp; <a href="https://app.roll20.net/compendium/dnd5e/Spells:Aci" rel="nofollow">https://app.roll20.net/compendium/dnd5e/Spells:Aci</a>... For Components, on the new 5E sheet we are just using sheet workers to do some basic post-processing. Just create a "hidden" input that accepts the value, then set up a simple Sheet Worker to take that value and do what you want with it. For example:&nbsp; <a href="https://gist.github.com/rileydutton/78be21cd9d6163" rel="nofollow">https://gist.github.com/rileydutton/78be21cd9d6163</a>... We're actually doing the same thing with Higher Level for the spells right now but I think it probably makes sense to separate that out to some degree since there are some damage dice and whatnot to go along with it. I will look into the target field for AoE spells and the wording.
Kryx said: For input[type=checkbox] and input[type=radio] tags, the box will be checked/radio selected if the value from the compendium exactly matches the value attribute from the tag. This can be problematic. For example I currently have: &lt;input type="checkbox" name="attr_ritual" value="{{ritual=1}}"&gt; This means that if the ritual is checked then it will output it. How would you suggest handling a situation like this? Everything else on the wiki looks good. :) I think that's a good example of where the Sheet Worker post-process I shared comes in. That's what we're doing for the 5E Sheet. If you don't want the exact value from the Compendium (in this case, "Yes") to be the value the sheet uses, just post-process it. That said, for checkboxes in particular I could probably add some code so that if that tag is a checkbox and the value in the Compendium is "Yes" it just checks the box.
1453919299
Kryx
Pro
Sheet Author
API Scripter
I can live with post processing for components. Cool. Checkboxes would be very nice if you can check it (though you'll have to then save the value in the checkbox to the sheet). Higher levels: Splitting out the text isn't necessary, but we'll need a way to account for the extra dice added on slot above. I do it above for fireball. For things that jump every 2 levels I use this: "higherLevelDice": "0.49", "higherLevelDie": "d8" which rounds 0.49 down. Any thoughts on the archetype? Here is an example of Fireball showing on the Cleric sheet:&nbsp; <a href="https://app.roll20.net/compendium/dnd5e/Cleric%20S" rel="nofollow">https://app.roll20.net/compendium/dnd5e/Cleric%20S</a>...
1453920589

Edited 1453920697
chris b.
Pro
Sheet Author
API Scripter
Some questions: For the drag and drop functionality, what does the person drag over? I see html pages but nothing that looks like i can click and drag. Or is there a different search in the roll20 application? Secondly: &nbsp;Looks like&nbsp;monsters are in here too ....which means we could import them directly into the sheet ... which is nice. .. right now I use CharacterGen which will start getting dated since he's not supporting it. I've thought of taking it up, but this would be even easier to implement, and also available for Plus subscribers instead of Pro only. Thirdly: I can only see the requests coming in.&nbsp;Do you hate us and want us to never get any sleep? My poor players are suffering since I'm spending time working on the sheet instead of the campaign.&nbsp; Fouthly: regarding checkboxes: maybe if you have 1/0, T/F, Y/N, and their iterations true/false yes/no just to cover all bases. OR maybe it should be 0/f/false/no/blank for no check, and anything else for checked. (though .. the PF sheet checkboxes are all weird values, so we'd use post processing for those)
1453921111

Edited 1453921159
chris b.
Pro
Sheet Author
API Scripter
Fifthly: it will always be Melf's Acid Arrow and Bigby's Shocking Grasp, Tenser's Floating Disk.. until the day I die! I think we will do postprocessing to insert the wizard's names to make sure they get credit for their spells . ...&nbsp;
@Kryx Okay, I will look into adding those higherDice and follow your example on the 0.49. On the classes/archetypes, let me get back to you on that. @Chris: You drag over the entry itself from the Compendium tab on the right sidebar when you're in-game. There's a GIF of me doing it here:&nbsp; <a href="http://i.imgur.com/T0I13ZH.gif" rel="nofollow">http://i.imgur.com/T0I13ZH.gif</a>
On the Pathfinder side of things, to be honest what's probably going to happen is I am going to go back and look into re-importing what structured data I can find for the Spells/Items/Monsters, since when I originally scraped it from the Pathinder SRD site a lot of stuff got messed up. Not that it should keep you from getting started, but the data may "improve" over the next month or so. I'll let you know when that happens. Basically, we learned a lot doing the 5E stuff and I'd like to give Pathfinder the same treatment.
1453993698

Edited 1453994061
Riley D.
Roll20 Team
I've pushed out an update to the Spell data: The Classes field has been updated to only include the base classes for the spell, not any archetypes (since most of those aren't in the SRD). In the future we may add a separate field for the archetypes specifically. We've added the "Higher Spell Slot DIce", "Higher Spell Slot Die", "Secondary Higher Spell Slot Dice", and "Secondary Higher Spell Slot Die" fields, following Kryx's example from his existing data set. We've updated the "Target" field of all AoE spells to include the description of the target area, e.g. for Fireball it now reads "Each creature in a 20-foot-radius sphere centered on a point within range" Let me know if you come across anything else. Thanks!
1453997093
chris b.
Pro
Sheet Author
API Scripter
Ouch, Archetypes have different names in SRD and PRD, so that will be difficult. Especially anything from Player Companions. For example: Green Faith Adept is named something else in SRD since the name is not part of the open content. But it's in the SRD just with under a different name. Same for Red Mantis Assassin, etc. (well those are Prestige Classes actually)&nbsp;
What you might look into is multiclass spellcasting, because now a) spell slots are calculated incorrectly b) there is no available choice of which class the spell is being casted as, other than changing tge spellcasting attribute
1454157576

Edited 1454158401
Kryx
Pro
Sheet Author
API Scripter
Questions/comments on importing spells for 5e: The spell "content" does not seem to be available for the sheets. Can this be made available? Without it we'd have to lookup a fair amount of spells. It would be great to parse out the emote section as it adds a lot of flavor. I could do this if given permission. Fireball for example: "evokes a bright streak that flashes from their pointing finger to a point and then blossoms with a low roar into an explosion of flame" Higher level still seems to be in the "content" area. This is problematic as some spells have a higher level part that isn't adding to damage or otherwise in the data set. Details: In my format I have "Effects" which for fireball contains "The fire spreads around corners. It ignites flammable objects in the area that aren't being worn or carried.". Those are important details to show. Fire shield for example: "You can end the spell using an action to make it disappear.\nThe flames are around you a heat shield or cold, your choice. The heat shield gives you cold damage resistance and the cold resistance to fire damage.\nIn addition, whenever a creature within 5 ft of you hits you with a melee attack, flames spring from the shield. The attacker then suffers 2d8 points of fire damage or cold, depending on the model."
1454160154

Edited 1454160258
Riley D.
Roll20 Team
Kryx, I again moved your post to this thread. This is where discussion about the Compendium data for sheet authors goes. Please refrain from posting it in the incorrect thread. You can get the Spell content by getting the "Content" parameter. E.g. &lt;textarea accept="Content"&gt;&nbsp; This is already documented in the Wiki: You can use accept="Content" if you wish to receive the plaintext content from the entry (the content located above the "Attributes" header). Again, you can use the Sheet Workers post-processing to pull anything else you want to separate out from that Content field, including the Higher Level spell information, the effects, and generating an emote.&nbsp; I don't think we have any plans to separate out that flavor text in the Compendium into a separate Attribute at this time.
1454164561

Edited 1454164667
Kryx
Pro
Sheet Author
API Scripter
Sorry about the wrong thread. I'll post process the parts I want I guess, though I'd be happy to put the data in JSON. Higher level should really be split out. Otherwise every sheet author will have to post-process out the "&lt;br&gt;&lt;br&gt;". Though they already do for other areas too.. blaah. That content block is setup for web, but isn't nice for dragging to sheets.
This was actually what I was talking about in the other Thread for what I was doing with my sheets either adding the field like Kryx did&nbsp;"higherLevel" for the higher level description instead of it all coming with the "content" tab the content tag was working for me though fine it jsut brought Everything so for example with fireball it brought all 3 paragraphs where Idealy It could be Split to Description , effects , Higher Level but I get not &nbsp;being able to do that because not all spells have all that just wanted to clear up my question / suggestion and agree with Kryx.&nbsp;
I am sorry if this is the wrong thread, but.&nbsp; Do you suppose there is any chance that support could be added for spell damage/healing.&nbsp; And autocalc for numeric variables to be added for the PATHFINDER sheet.&nbsp; Having it stuff Close (yadayadayada) is great.&nbsp; But kinda defeats the purpose of having a button to spread it all nice and neat into chat when it is very easy to set it up in a way that it could go into numeric fields to calculate it and spit out an exact number of feet. Also, is there any plans to open up the compendium for 3rd party sources.&nbsp; The VAST and overwhelming majority of spells used in my campaigns are not core. Both, relatively small concerns I know, but they would help.