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

Bless Macro for PC

Hey artificers! Question, does anyone have a Macro they use for the "Bless Spell"?  Our clerics always tend to take it and I would love to give them an option when they click the macro to cast the spell slot (they could pick what level), choose relevant targets, targets get the buff automatically, they get the concentration and status icon, status icon goes on the target, the whole shebang. Anyone have anything written already?
Here's a ScriptCard I wrote a while back that uses ChatSetAttr and TokenMod !scriptcard {{ --/|TODO: allow upcasting --/|Requires: SC, ChatSetAttr, TokenMod --&FeatureName|Bless --#title|[&FeatureName] --&TID|@{selected|token_id} --&CharID|@{selected|character_id} --#sourceToken|[&TID] --/|Variables --&BlessMarker|Blessed --&ConcentrationMarker|Concentrating --&UseStoredFormatting|true --?"[&UseStoredFormatting]" -ne "true"|ScriptStart --Lsettings|[*[&TID]:t-name] --:ScriptStart| --=RemainingSlots|[*S:lvl1_slots_expended] --?[$RemainingSlots] -eq 0|InsufficientResources --~GlobalModName|string;touppercase;[&FeatureName] --:GetTargets| --&Token1|@{target|BlessTarget1|token_id} --&Token2|@{target|BlessTarget2|token_id} --&Token3|@{target|BlessTarget3|token_id} --~TargetsT|array;define;targettokenids;[&Token1];[&Token2];[&Token3] --:LoopThroughTargets| --%LoopCounter|0;2;1 --&TTID|[@targettokenids([&LoopCounter])] --&CID|[*[&TTID]:t-represents] --&Name|[*[&TTID]:t-name] --Rfind|[&CID];[&GlobalModName];repeating_savemod;global_save_name --?"[*R:name]" -eq "NoRepeatingAttributeLoaded"|>CreateSaveMod;[&CID];[&GlobalModName];1d4 --@setattr|_silent _charid [&CID] _[*R>global_save_active_flag]|1 --:SetAttackMod| --Rfind|[&CID];[&GlobalModName];repeating_tohitmod;global_attack_name --?"[*R:name]" -eq "NoRepeatingAttributeLoaded"|>CreateAttackMod;[&CID];[&GlobalModName];1d4 --@setattr|_silent _charid [&CID] _[*R>global_attack_active_flag]|1 --:SetStatusMarker| --@token-mod|_ids [&TTID] _set statusmarkers|+[&BlessMarker] --+|[b][&Name][/b] has received a blessing from [*S:character_name] --%| --:SetDisplay| --#emoteText|[*S:character_name] decides to bless folks --Rfind|[&CharID];[&FeatureName];repeating_spell-1;spellname --+[*R:spellname]|[*R:spelldescription] --#leftsub|Range: [*R:spellrange] --#rightsub|Duration: [*R:spellduration] --:DeductResources| --@modattr|_silent _charid [&CharID] _lvl1_slots_expended|-1 --@token-mod|_ids [&TID] _set statusmarkers|+[&ConcentrationMarker] -->Done| --:CreateSaveMod|characterID;saveNameVar;saveRollVar --@setattr|_silent _charid [%1%] _global_save_mod_flag|1 _repeating_savemod_-CREATE_global_save_name|[%2%] _repeating_savemod_-CREATE_global_save_roll|[%3%] _repeating_savemod_-CREATE_global_save_active_flag|1 _repeating_savemod_-CREATE_options-flag|0 -->SetAttackMod| --:CreateAttackMod|characterID;attackNameVar;attackRollVar --@setattr|_silent _charid [%1%] _global_attack_mod_flag|1 _repeating_tohitmod_-CREATE_global_attack_name|[%2%] _repeating_tohitmod_-CREATE_global_attack_roll|[%3%] _repeating_tohitmod_-CREATE_global_attack_active_flag|1 _repeating_tohitmod_-CREATE_options-flag|0 -->SetStatusMarker| --:InsufficientResources| --#emoteText|Out of Level 1 Spells --+Out of Uses|No more level 1 spells to cast [&FeatureName] --:Done| }} It is hardcoded right now to 3 targets but it could be updated to allow upcasting through  ScriptCards information requests for targets . Been a while since I had to use it in a game but just set the Bless and Concentration status markers in the Variables section near the top and it should do what you said in giving the status markers, deducting the spell, and activating/creating the global attack and global save for Bless on each target.
Nick Olivo  just posted a video detailing how to do this for Aid.  I suspect it's similar.
The difference between Aid and Bless in terms of upcasting is that Aid has a static number of targets, 3. So you can use @{target} since that is always processed first. Bless upcasts to add additional targets which @{target} cannot have a variable number, they are always processed. That's why I mentioned ScriptCards information requests `--i` since SC has a different mechanism to prompt a user or allow a conditional for things like queries, ?{}, or targets, @{target}, where those normally would processed first before any conditions are checked.