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

Tool Proficiency Macro

Hi, I was wondering if anyone knew a good token macro for tool proficiencies. I'm looking for it to kind of be like the skill check macro I use for my games where it will give you a drop down box with ALL available tool proficiencies listed (whether they have them or not so it can be a universal macro) and I still want the tool proficiencies to to have the query to which attribute you want to use for it's roll. below, I have added the skill macro I use to get a look at what I'm after:  @{selected|wtype}&{template:simple} @{selected|rtype}?{Skill |Acrobatics,+ [[( @{selected|acrobatics_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_acrobatics}*@{selected|npc})]][ACRO] ]]}} {{rname=^{acrobatics-u}}} {{mod=[[ [[(@{selected|acrobatics_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_acrobatics}*@{selected|npc})]][ACRO] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|acrobatics_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_acrobatics}*@{selected|npc})]][ACRO] ]] |Animal Handling,+[[(@{selected|animal_handling_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_animal_handling}*@{selected|npc})]][ANIM] ]]}} {{rname=^{animal-handling-u}}}{{mod=[[ (@{selected|animal_handling_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_animal_handling}*@{selected|npc})]][ANIM] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|animal_handling_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_animal_handling}*@{selected|npc})]][ANIM] ]] |Arcana,+[[(@{selected|arcana_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_arcana}*@{selected|npc})]][ARC] ]]}} {{rname=^{arcana-u}}} {{mod=[[ [[(@{selected|arcana_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_arcana}*@{selected|npc})]][ARCA] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|arcana_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_arcana}*@{selected|npc})]][ARCA] ]] |Athletics,+[[(@{selected|athletics_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_athletics}*@{selected|npc})]][ARC] ]]}} {{rname=^{athletics-u}}} {{mod=[[ [[(@{selected|athletics_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_athletics}*@{selected|npc})]][ATHL] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|athletics_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_athletics}*@{selected|npc})]][ATHL] ]] |Decpetion,+[[(@{selected|deception_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_deception}*@{selected|npc})]][ARC] ]]}} {{rname=^{deception-u}}} {{mod=[[ [[(@{selected|deception_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_deception}*@{selected|npc})]][DECE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|deception_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_deception}*@{selected|npc})]][DECE] ]] |History,+[[(@{selected|history_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_history}*@{selected|npc})]][ARC] ]]}} {{rname=^{history-u}}} {{mod=[[ [[(@{selected|history_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_history}*@{selected|npc})]][HIST] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|history_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_history}*@{selected|npc})]][HIST] ]] |Insight,+[[(@{selected|insight_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_insight}*@{selected|npc})]][ARC] ]]}} {{rname=^{insight-u}}} {{mod=[[ [[(@{selected|insight_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_insight}*@{selected|npc})]][INSI] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|insight_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_insight}*@{selected|npc})]][INSI] ]] |Intimidation,+[[(@{selected|intimidation_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_intimidation}*@{selected|npc})]][ARC] ]]}} {{rname=^{intimidation-u}}} {{mod=[[ [[(@{selected|intimidation_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_intimidation}*@{selected|npc})]][INTI] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|intimidation_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_intimidation}*@{selected|npc})]][INTI] ]] |Investigation,+[[(@{selected|investigation_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_investigation}*@{selected|npc})]][ARC] ]]}} {{rname=^{investigation-u}}} {{mod=[[ [[(@{selected|investigation_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_investigation}*@{selected|npc})]][INVE] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|investigation_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_investigation}*@{selected|npc})]][INVE] ]] |Medicine,+[[(@{selected|medicine_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_medicine}*@{selected|npc})]][ARC] ]]}} {{rname=^{medicine-u}}} {{mod=[[ [[(@{selected|medicine_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_medicine}*@{selected|npc})]][MEDI] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|medicine_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_medicine}*@{selected|npc})]][MEDI] ]] |Nature,+[[(@{selected|nature_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_nature}*@{selected|npc})]][ARC] ]]}} {{rname=^{nature-u}}} {{mod=[[ [[(@{selected|nature_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_nature}*@{selected|npc})]][NATU] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|nature_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_nature}*@{selected|npc})]][NATU] ]] |Perception,+[[(@{selected|perception_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_perception}*@{selected|npc})]][ARC] ]]}} {{rname=^{perception-u}}} {{mod=[[ [[(@{selected|perception_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_perception}*@{selected|npc})]][PERC] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|perception_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_perception}*@{selected|npc})]][PERC] ]] |Performance,+[[(@{selected|performance_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_performance}*@{selected|npc})]][ARC] ]]}} {{rname=^{performance-u}}} {{mod=[[ [[(@{selected|performance_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_performance}*@{selected|npc})]][PERF] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|performance_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_performance}*@{selected|npc})]][PERF] ]] |Persuasion,+[[(@{selected|persuasion_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_persuasion}*@{selected|npc})]][ARC] ]]}} {{rname=^{persuasion-u}}} {{mod=[[ [[(@{selected|persuasion_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_persuasion}*@{selected|npc})]][PERS] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|persuasion_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_persuasion}*@{selected|npc})]][PERS] ]] |Religion,+[[(@{selected|religion_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_religion}*@{selected|npc})]][ARC] ]]}} {{rname=^{religion-u}}} {{mod=[[ [[(@{selected|religion_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_religion}*@{selected|npc})]][RELI] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|religion_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_religion}*@{selected|npc})]][RELI] ]] |Sleight of Hand,+[[(@{selected|sleight_of_hand_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_sleight_of_hand}*@{selected|npc})]][ARC] ]]}} {{rname=^{sleight_of_hand-u}}} {{mod=[[ [[(@{selected|sleight_of_hand_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_sleight_of_hand}*@{selected|npc})]][SLEI] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|sleight_of_hand_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_sleight_of_hand}*@{selected|npc})]][SLEI] ]] |Stealth,+[[(@{selected|stealth_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_stealth}*@{selected|npc})]][ARC] ]]}} {{rname=^{stealth-u}}} {{mod=[[ [[(@{selected|stealth_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_stealth}*@{selected|npc})]][STEA] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|stealth_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_stealth}*@{selected|npc})]][STEA] ]] |Survival,+[[(@{selected|survival_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_survival}*@{selected|npc})]][ARC] ]]}} {{rname=^{survival-u}}} {{mod=[[ [[(@{selected|survival_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_survival}*@{selected|npc})]][SURV] ]]}} {{r1=[[@{selected|d20}+[[(@{selected|survival_bonus}@{selected|pbd_safe}*(1-ceil((@{selected|npc})*0.00001)))+(@{selected|npc_survival}*@{selected|npc})]][SURV] ]] }}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}  
Make a tool proficiency on your sheet, then fire it.  Then put your mouse cursor in the text field and hit the up arrow so it prints out the previously run entry.  CTRL A that entry and then paste that into a text editor.  This will give you the general syntax for a tool proficiency with a name to it and it will query the attribute.  You need to somehow make it also query none, jack, proficiency, and expertise too and then you will be set.  However, what you will realize after making that query finally work is that you made the ultimate d20 roller and you will no longer need the above skill check macro cause ultimately all a tool proficiency roll is, is a skill check with or without proficiency.  
DM Eddie said: Make a tool proficiency on your sheet, then fire it.  Then put your mouse cursor in the text field and hit the up arrow so it prints out the previously run entry.  CTRL A that entry and then paste that into a text editor.  This will give you the general syntax for a tool proficiency with a name to it and it will query the attribute.  You need to somehow make it also query none, jack, proficiency, and expertise too and then you will be set.  However, what you will realize after making that query finally work is that you made the ultimate d20 roller and you will no longer need the above skill check macro cause ultimately all a tool proficiency roll is, is a skill check with or without proficiency.   I've done that before on loads of stuff, but unfortunately copying and pasting a tool proficiency's code into a macro where I'm trying to make a drop down box to select from all tool proficiencies doesn't work like that. the macro that I shared for the skill proficiencies wasn't created by me, and I'm not advanced enough on coding to know where I need to translate the uses of "|" and "}" to "|" and "}" in this new macro.  Here's the code for the Alchemist's tools for a specified player, with an attribute query connected to the tool selection: @{Cap Madak|wtype}&{template:simple} {{rname=Alchemist's Supplies}} {{mod=?{Attribute?|Strength,@{Cap Madak|strength_mod}|Dexterity,@{Cap Madak|dexterity_mod}|Constitution,@{Cap Madak|constitution_mod}|Intelligence,@{Cap Madak|intelligence_mod}|Wisdom,@{Cap Madak|wisdom_mod}|Charisma,@{Cap Madak|charisma_mod}}+0+2}} {{r1=[[@{Cap Madak|d20}+?{Attribute?|Strength,@{Cap Madak|strength_mod}|Dexterity,@{Cap Madak|dexterity_mod}|Constitution,@{Cap Madak|constitution_mod}|Intelligence,@{Cap Madak|intelligence_mod}|Wisdom,@{Cap Madak|wisdom_mod}|Charisma,@{Cap Madak|charisma_mod}}+0+2[Mods]@{Cap Madak|pbd_safe}]]}} @{Cap Madak|advantagetoggle}+?{Attribute?|Strength,@{Cap Madak|strength_mod}|Dexterity,@{Cap Madak|dexterity_mod}|Constitution,@{Cap Madak|constitution_mod}|Intelligence,@{Cap Madak|intelligence_mod}|Wisdom,@{Cap Madak|wisdom_mod}|Charisma,@{Cap Madak|charisma_mod}}+0+2[Mods]@{Cap Madak|pbd_safe}]]}} {{global=@{Cap Madak|global_skill_mod}}} @{Cap Madak|charname_output} I want to change the name from he specified player "Cap Madak" to a more universal macro that I can copy and paste to any character sheet by applying "selected" instead, making it a token macro. I want to have the full list of every available tool on this macro (even if a player has it or not, for universal use). and I want to have it be in a drop down box as the code I provided for the skill check does. (A picture of the skill check macro is below)  (Not gonna Lie, when roll20 did the update on October 20th that changed how you could code macros may have broke alot of the macros I already had in place, but it was extremely easy to recreate them to the new setup, and I was able to make this tool macro with ease)
1635719923

Edited 1635719996
You could bypass alot of work by making a simiple D20+0 or pb or jack or expertise+Query of 6 attribute mods.  If a player doesn't know their attributes, tool proficiencies, and mods by now, you are writing alot of code for someone whose going to phone in even shit you hand to them on a silver platter.   You can get alot of the code for this macro by firing a query tool proficiency once and amend it further to include what else its missing.  
DM Eddie said: You could bypass alot of work by making a simiple D20+0 or pb or jack or expertise+Query of 6 attribute mods.  If a player doesn't know their attributes, tool proficiencies, and mods by now, you are writing alot of code for someone whose going to phone in even shit you hand to them on a silver platter.   You can get alot of the code for this macro by firing a query tool proficiency once and amend it further to include what else its missing.   Yeah I was just trying to get it on a token macro to make it easy access for the player in the moment so they didn't need to open their character sheet.
Yeah but the actual mechanics of a tool check is usually just Proficiency and the Dm calls out the attribute to use in that moment as not every tool check is the same attribute, even thieves tools can use diffferent attributes depending on the situation.  So ultimately all the player needs is a button that queries level of proficiency and which attribute for the tool as its just a standard ability check with a special name.  It sounds complicated cause most sheets specifically setup sections for tools, but they really are just ability checks.  In fact this button if you made it, would make like 90% of the character sheet obsolete for players who know their characters well too cause most of the sheet is just a bunch of buttons for various combinations of d20 rolls and mods.  
1635748852

Edited 1635808023
Oosh
Sheet Author
API Scripter
Well, here's a couple of options. They're both @{selected} macros so you can paste them into chat and see what you think, but you can do a Replace All with note pad and remove "selected|" from both of them to turn them into Ability/Token Action Macros. So you could go for a universal option, as you've said: @{selected|wtype}&{template:simple} {{mod=[[@{selected|pb} + ?{Ability|Strength,@{selected|strength_mod}[Str]]]| Dexterity,@{selected|dexterity_mod}[Dex]]]| Constitution,@{selected|constitution_mod}[Con]]]| Intelligence,@{selected|intelligence_mod}[Int]]]| Wisdom,@{selected|wisdom_mod}[Wis]]]| Charisma,@{selected|charisma_mod}[Cha]]]}}} {{rname=?{Tool|Alchemist's Supplies|Thieves' Tools}}} {{r1=[[@{selected|d20} + [[?{Ability} + @{selected|pb}[PB]]]}} @{selected|rtype} + [[?{Ability} + @{selected|pb}[PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output} You'd just need to add all the tool options into {{rname=}}, there's only a couple of placeholders there now. There is the issue that you don't have any idea if the character is proficient or not - you'd need an API script for that, and even then it would be relying on correct spellings or a clever regex to make sure it finds the right tool names on their sheet. Another option is to use a more substantial macro, one that will make the neighbours covet your things: /w "@{selected|character_name}" &{template:npcaction} &{noerror} {{rname=Tools}} {{description= [@{selected|repeating_tool_$0_toolname}](`#&{template:simple} {{rname=@{selected|repeating_tool_$0_toolname}}} {{mod=[[[[@{selected|repeating_tool_$0_toolbonus_display} - @{selected|repeating_tool_$0_toolattr_base}]][PB] + ?{Ability|Strength,@{selected|strength_mod}[Str]]]|Dexterity,@{selected|dexterity_mod}[Dex]]]|Constitution,@{selected|constitution_mod}[Con]]]|Intelligence,@{selected|intelligence_mod}[Int]]]|Wisdom,@{selected|wisdom_mod}[Wis]]]|Charisma,@{selected|charisma_mod}[Cha]]]}}}{{r1=[[@{selected|d20} + [[?{Ability} + [[@{selected|repeating_tool_$0_toolbonus_display} - @{selected|repeating_tool_$0_toolattr_base}]][PB]]]}} @{selected|rtype} + [[?{Ability} + [[@{selected|repeating_tool_$0_toolbonus_display} - @{selected|repeating_tool_$0_toolattr_base}]][PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}" style="display:none; display:block@{selected|repeating_tool_$0_toolname|max};color:darkblue; padding: 2px 0px 2px 5px; border: 1px darkblue solid; border-radius: 5px; margin-bottom: -12px;) [@{selected|repeating_tool_$1_toolname}](`#&{template:simple} {{rname=@{selected|repeating_tool_$1_toolname}}} {{mod=[[[[@{selected|repeating_tool_$1_toolbonus_display} - @{selected|repeating_tool_$1_toolattr_base}]][PB] + ?{Ability|Strength,@{selected|strength_mod}[Str]]]|Dexterity,@{selected|dexterity_mod}[Dex]]]|Constitution,@{selected|constitution_mod}[Con]]]|Intelligence,@{selected|intelligence_mod}[Int]]]|Wisdom,@{selected|wisdom_mod}[Wis]]]|Charisma,@{selected|charisma_mod}[Cha]]]}}}{{r1=[[@{selected|d20} + [[?{Ability} + [[@{selected|repeating_tool_$1_toolbonus_display} - @{selected|repeating_tool_$1_toolattr_base}]][PB]]]}} @{selected|rtype} + [[?{Ability} + [[@{selected|repeating_tool_$1_toolbonus_display} - @{selected|repeating_tool_$1_toolattr_base}]][PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}" style="display:none; display:block@{selected|repeating_tool_$1_toolname|max};color:darkblue; padding: 2px 0px 2px 5px; border: 1px darkblue solid; border-radius: 5px; margin-bottom: -12px;) [@{selected|repeating_tool_$2_toolname}](`#&{template:simple} {{rname=@{selected|repeating_tool_$2_toolname}}} {{mod=[[[[@{selected|repeating_tool_$2_toolbonus_display} - @{selected|repeating_tool_$2_toolattr_base}]][PB] + ?{Ability|Strength,@{selected|strength_mod}[Str]]]|Dexterity,@{selected|dexterity_mod}[Dex]]]|Constitution,@{selected|constitution_mod}[Con]]]|Intelligence,@{selected|intelligence_mod}[Int]]]|Wisdom,@{selected|wisdom_mod}[Wis]]]|Charisma,@{selected|charisma_mod}[Cha]]]}}}{{r1=[[@{selected|d20} + [[?{Ability} + [[@{selected|repeating_tool_$2_toolbonus_display} - @{selected|repeating_tool_$2_toolattr_base}]][PB]]]}} @{selected|rtype} + [[?{Ability} + [[@{selected|repeating_tool_$2_toolbonus_display} - @{selected|repeating_tool_$2_toolattr_base}]][PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}" style="display:none; display:block@{selected|repeating_tool_$2_toolname|max};color:darkblue; padding: 2px 0px 2px 5px; border: 1px darkblue solid; border-radius: 5px; margin-bottom: -12px;) [@{selected|repeating_tool_$3_toolname}](`#&{template:simple} {{rname=@{selected|repeating_tool_$3_toolname}}} {{mod=[[[[@{selected|repeating_tool_$3_toolbonus_display} - @{selected|repeating_tool_$3_toolattr_base}]][PB] + ?{Ability|Strength,@{selected|strength_mod}[Str]]]|Dexterity,@{selected|dexterity_mod}[Dex]]]|Constitution,@{selected|constitution_mod}[Con]]]|Intelligence,@{selected|intelligence_mod}[Int]]]|Wisdom,@{selected|wisdom_mod}[Wis]]]|Charisma,@{selected|charisma_mod}[Cha]]]}}}{{r1=[[@{selected|d20} + [[?{Ability} + [[@{selected|repeating_tool_$3_toolbonus_display} - @{selected|repeating_tool_$3_toolattr_base}]][PB]]]}} @{selected|rtype} + [[?{Ability} + [[@{selected|repeating_tool_$3_toolbonus_display} - @{selected|repeating_tool_$3_toolattr_base}]][PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}" style="display:none; display:block@{selected|repeating_tool_$3_toolname|max};color:darkblue; padding: 2px 0px 2px 5px; border: 1px darkblue solid; border-radius: 5px; margin-bottom: -12px;) }} This one whispers the player a menu with a list of their current Tool Profs, all clickable links to a nested template roll. It only does 4 lines, but you can increase it as necessary by copying from [@{selected|repeating_tool_$3_toolname} all the way down to margin-bottom: -12px;) , replace the instances of $3 with $4, then paste it afterwards (but before the closing }} braces). The advantages of this approach: - it's cool, because of all the escaped stuff and templates nested in a template, which you aren't allowed to do - we know the player is proficient in whatever they click, since otherwise it wouldn't be on the list - you could tweak this to pick up on whether the player has selected JoaT or Expertise under the tool settings... I don't have time right this minute though :) (it probably involves reading the toolbonus_display attribute (which already includes the calculated proficiency type) and subtracting the currently selected Ability mod from it (since we're selecting an Ability in the next step, we don't want the default one included here)
Oosh said: Well, here's a couple of options. They're both @{selected} macros so you can paste them into chat and see what you think, but you can do a Replace All with note pad and remove "selected|" from both of them to turn them into Ability/Token Action Macros. So you could go for a universal option, as you've said: @{selected|wtype}&{template:simple} {{mod=[[@{selected|pb} + ?{Ability|Strength,@{selected|strength_mod}[Str]]]| Dexterity,@{selected|dexterity_mod}[Dex]]]| Constitution,@{selected|constitution_mod}[Con]]]| Intelligence,@{selected|intelligence_mod}[Int]]]| Wisdom,@{selected|wisdom_mod}[Wis]]]| Charisma,@{selected|charisma_mod}[Cha]]]}}} {{rname=?{Tool|Alchemist's Supplies|Thieves' Tools}}} {{r1=[[@{selected|d20} + [[?{Ability} + @{selected|pb}[PB]]]}} @{selected|rtype} + [[?{Ability} + @{selected|pb}[PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output} You'd just need to add all the tool options into {{rname=}}, there's only a couple of placeholders there now. There is the issue that you don't have any idea if the character is proficient or not - you'd need an API script for that, and even then it would be relying on correct spellings or a clever regex to make sure it finds the right tool names on their sheet. Another option is to use a more substantial macro, one that will make the neighbours covet your things: /w "@{selected|character_name}" &{template:npcaction} &{noerror} {{rname=Tools}} {{description= [@{selected|repeating_tool_$0_toolname}](`#&{template:simple} {{rname=@{selected|repeating_tool_$0_toolname}}} {{mod=[[@{selected|pb} + ?{Ability|Strength,@{selected|strength_mod}[Str]]]|Dexterity,@{selected|dexterity_mod}[Dex]]]|Constitution,@{selected|constitution_mod}[Con]]]|Intelligence,@{selected|intelligence_mod}[Int]]]|Wisdom,@{selected|wisdom_mod}[Wis]]]|Charisma,@{selected|charisma_mod}[Cha]]]}}}{{r1=[[@{selected|d20} + [[?{Ability} + @{selected|pb}[PB]]]}} @{selected|rtype} + [[?{Ability} + @{selected|pb}[PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}" style="display:none; display:block@{selected|repeating_tool_$0_toolname|max};color:darkblue; padding: 2px 0px 2px 5px; border: 1px darkblue solid; border-radius: 5px; margin-bottom: -12px;) [@{selected|repeating_tool_$1_toolname}](`#&{template:simple} {{rname=@{selected|repeating_tool_$1_toolname}}} {{mod=[[@{selected|pb} + ?{Ability|Strength,@{selected|strength_mod}[Str]]]|Dexterity,@{selected|dexterity_mod}[Dex]]]|Constitution,@{selected|constitution_mod}[Con]]]|Intelligence,@{selected|intelligence_mod}[Int]]]|Wisdom,@{selected|wisdom_mod}[Wis]]]|Charisma,@{selected|charisma_mod}[Cha]]]}}}{{r1=[[@{selected|d20} + [[?{Ability} + @{selected|pb}[PB]]]}} @{selected|rtype} + [[?{Ability} + @{selected|pb}[PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}" style="display:none; display:block@{selected|repeating_tool_$1_toolname|max};color:darkblue; padding: 2px 0px 2px 5px; border: 1px darkblue solid; border-radius: 5px; margin-bottom: -12px;) [@{selected|repeating_tool_$2_toolname}](`#&{template:simple} {{rname=@{selected|repeating_tool_$2_toolname}}} {{mod=[[@{selected|pb} + ?{Ability|Strength,@{selected|strength_mod}[Str]]]|Dexterity,@{selected|dexterity_mod}[Dex]]]|Constitution,@{selected|constitution_mod}[Con]]]|Intelligence,@{selected|intelligence_mod}[Int]]]|Wisdom,@{selected|wisdom_mod}[Wis]]]|Charisma,@{selected|charisma_mod}[Cha]]]}}}{{r1=[[@{selected|d20} + [[?{Ability} + @{selected|pb}[PB]]]}} @{selected|rtype} + [[?{Ability} + @{selected|pb}[PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}" style="display:none; display:block@{selected|repeating_tool_$2_toolname|max};color:darkblue; padding: 2px 0px 2px 5px; border: 1px darkblue solid; border-radius: 5px; margin-bottom: -12px;) [@{selected|repeating_tool_$3_toolname}](`#&{template:simple} {{rname=@{selected|repeating_tool_$3_toolname}}} {{mod=[[@{selected|pb} + ?{Ability|Strength,@{selected|strength_mod}[Str]]]|Dexterity,@{selected|dexterity_mod}[Dex]]]|Constitution,@{selected|constitution_mod}[Con]]]|Intelligence,@{selected|intelligence_mod}[Int]]]|Wisdom,@{selected|wisdom_mod}[Wis]]]|Charisma,@{selected|charisma_mod}[Cha]]]}}}{{r1=[[@{selected|d20} + [[?{Ability} + @{selected|pb}[PB]]]}} @{selected|rtype} + [[?{Ability} + @{selected|pb}[PB]]]}} {{global=@{selected|global_skill_mod}}} @{selected|charname_output}" style="display:none; display:block@{selected|repeating_tool_$3_toolname|max};color:darkblue; padding: 2px 0px 2px 5px; border: 1px darkblue solid; border-radius: 5px; margin-bottom: -12px;) }} This one whispers the player a menu with a list of their current Tool Profs, all clickable links to a nested template roll. It only does 4 lines, but you can increase it as necessary by copying from [@{selected|repeating_tool_$3_toolname} all the way down to margin-bottom: -12px;) , replace the instances of $3 with $4, then paste it afterwards (but before the closing }} braces). The advantages of this approach: - it's cool, because of all the escaped stuff and templates nested in a template, which you aren't allowed to do - we know the player is proficient in whatever they click, since otherwise it wouldn't be on the list - you could tweak this to pick up on whether the player has selected JoaT or Expertise under the tool settings... I don't have time right this minute though :) (it probably involves reading the toolbonus_display attribute (which already includes the calculated proficiency type) and subtracting the currently selected Ability mod from it (since we're selecting an Ability in the next step, we don't want the default one included here) OMG! Thank you! this is exactly what I was looking for. you are the best, I cannot tell you how happy I am to see this. I have been fiddling with this thing for like 2 weeks. (I'm learning the coding, but just wasn't at this level just yet. this code will help me further understand coding)
1635808091
Oosh
Sheet Author
API Scripter
No problem! I've edited the second macro above so it takes into account Expertise/JoaT, as set in the Tool Profs section for each entry.