I'm building off of the great work done in this thread <a href="https://app.roll20.net/forum/post/5624988/return-spell-description-vs-spell-roll-in-chat-window" rel="nofollow">https://app.roll20.net/forum/post/5624988/return-spell-description-vs-spell-roll-in-chat-window</a> But I think I've made a nice improvement. Goal: Allow each character to have a Token Action Ability that prints their spell list. Each spell can be clicked to cast it (DC based spells print the spell description to the group, attack based spells roll appropiate d20 and damage as usual). Each spell has a tooltip that briefly shows the description of the spell for quick reminder. Next to that is a question mark for whispering to yourself a spell card which the full details for the spell. This card then has a Cast and Spell List button that either casts it as above or returns to printing the spell list as above. This has 3 requirements: 1) 5e standard character sheet provided by roll20 (don't know the name), 2) Each character uses my spreadsheet to construct an ability that prints their spell list, and 3) The GM creates 10 characters that have between 3-10 abilities which are macros the detailed descriptions rely on. Here is a txt file that contains the abilities the 10 helper characters should have <a href="https://drive.google.com/open?id=1twRv3QQynf2qw94siIWUNBm9k3oRhR4i" rel="nofollow">https://drive.google.com/open?id=1twRv3QQynf2qw94siIWUNBm9k3oRhR4i</a> The name of the character should be spellcardcantrip, spellcard1, spellcard2... Each of their abilities should be named $0, $1, $2 and so forth. The text file above starts with the $0 /wp "@{selected|character_name}".... Copy the stuff starting with /wp Here is an example of what spellcard3's $2 ability does. /w "@{selected|character_name}" &{template:spell} {{level=@{selected|repeating_spell-3_$2_spellschool} @{selected|repeating_spell-3_$2_spelllevel}}} {{name=@{selected|repeating_spell-3_$2_spellname} [Query]}} {{castingtime=@{selected|repeating_spell-3_$2_spellcastingtime}}} {{range=@{selected|repeating_spell-3_$2_spellrange}}} {{target=@{selected|repeating_spell-3_$2_spelltarget}}} @{selected|repeating_spell-3_$2_spellcomp_v} @{selected|repeating_spell-3_$2_spellcomp_s} {@{selected|repeating_spell-3_$2_spellcomp_m}} {{material=@{selected|repeating_spell-3_$2_spellcomp_materials}}} {{duration=@{selected|repeating_spell-3_$2_spellduration}}} {{description=@{selected|repeating_spell-3_$2_spelldescription} [Cast](~Selected|repeating_spell-3_$2_spell) [Spell List](~selected|Spells)}} {{athigherlevels=@{selected|repeating_spell-3_$2_spellathigherlevels}}} @{selected|repeating_spell-3_$2_spellritual} @{selected|repeating_spell-3_$2_spellconcentration} {{charname=charname}} &{noerror} Essentially it formats a spell template with all the relevant details of the spell. At the end it has [Cast](~Selected|repeating_spell-3_$2_spell) [Spell List](~selected|Spells) which cast the spell and invoke the selected character's Spell ability. Each character that wants to have this feature would go to this spreadsheet and make a copy for themselves <a href="https://docs.google.com/spreadsheets/d/1l-NXRTV0bxF_CfXyUy-toIeWDy3PwQGLTZnSvAffFD0/copy#gid=0" rel="nofollow">https://docs.google.com/spreadsheets/d/1l-NXRTV0bxF_CfXyUy-toIeWDy3PwQGLTZnSvAffFD0/copy#gid=0</a> They would then edit the number of spells known in column C and copy out the macro generated down below. Make an ability labeled Spells and for the macro paste it the generated macro. You'll need to get rid of the double quotes that google so kindly adds in. Check the box to have it as a token action and test it out.