Monday, May 4, 2015

Roll20 Shadowrun Macros

I had my first session of Shadowrun 20th Anniversary Edition using the free Roll20 virtual tabletop on Saturday.  All in all, it took a huge amount of hackery in advance to make work, but I'm pleased at the result to a certain degree.  It made large combats not a horrible painful chore like they had been, and really smoothed up a lot of things.  All in all, it went well.  Two things were lacking: Firstly, their Wound Mod calculation didn't work most of the time; and secondly, it lacked the ability to take successes on an attack roll and turn them into a boost for damage dice, meaning that a second macro with more user inputs had to handle damage.  In any case, here's the set of macros that I used to work most of the combat in-engine, since I noticed next to no support on the wiki.

Most of these macros are meant to be used with a selected token.  Specific spells and Matrix stuff are not and will need manual editing to work for everything.  This is just meant to be a starting block.  If you use this, please comment with feedback!

Format is as follows:
# Name
# Description
Code

Basic Rolls

#Name:Roll
#Description:A basic roll.
/emas "@{selected|token_name}" rolls [[(?{Dice Pool|0}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1]] for ?{Reason|No Reason}.

#Name:EdgeRoll
#Description: Same as Roll, but using Edge in advance.
/emas "@{selected|token_name}" rolls [[(?{Dice Pool|0}+?{Bonuses|0}+?{Edge@{selected|edge}}-?{Penalties|0})d6>5!cf<1]] for ?{Reason|No Reason} using Edge.

Non-Combat Checks
#Perception
#Description: Rolls Perception.  Note that it requires a character sheet value for Perception.
/emas "@{selected|token_name}" has awareness of [[(?{INT|@{selected|Intuition}}+?{Perception|@{selected|Perception}}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1]].

#Assensing
#Description: Rolls Assensing.  Note that it requires a character sheet value for Assensing.
/emas "@{selected|token_name}" reaches out with eyes closed, glancing into the aether. [[(?{INT|@{selected|Intuition}}+?{Assensing|@{selected|Assensing}}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1]] successes.
Turn Order


#Name:Init
#Description:Rolls selected Init value, adds it to the Init Tracker.
/emas "@{selected|token_name}" rolls [[?{Initiative|@{selected|initiativestat}}+{(?{Reaction|@{selected|Reaction}}+?{Intuition|@{selected|Intuition}}-?{Wound Penalties|@{selected|woundmod}})d6>5cf<1} &{tracker}]] for initiative.

#Name:EndTurn
#Description: Subtracts 10 from Init at the end of the turn to determine next Initiative pass.
/emas "@{selected|token_name}" ends their turn. [[10 &{tracker:-}]]

#Name:Rally
#Description: Uses the Rally function of the Leadership skill to increase pary Init. Note: Needs the Leadership skill to be a saved variable.
/emas "@{selected|token_name}" spends his turn attempting to rally his peers.  All friendly targets in line of sight get a bonus [[(?{Leadership|@{Leadership}}+?{Charisma|@{Charisma}})d6>5cf<1]] this turn.

Damage and Soaking
#Name:SoakBody
#Description: Soaks using Body
/emas "@{selected|token_name}" soaks using Body. [[(?{Body|@{selected|body}} +?{Armor|@{selected|armor}} - (?{Wound Mod|@{selected|woundmod}} + ?{AP|0}))d6>5cf<1]] successes.

#Name:SoakWill
#Description: Soaks using Willpower
/emas "@{selected|token_name}" soaks using Will. [[(?{Will|@{selected|willpower}} +?{Armor|@{selected|armor}} - (?{Wound Mod|@{selected|woundmod}} + ?{AP|0}))d6>5cf<1]] successes.

#Name:Damage
#Description: Takes Weapon Damage, rolls Successes from Attack Roll
/em [[?{Successes|1}d6>5cf<1+?{Damage|0})]] damage dealt.

#Name:Defending
#Description: Rolls Defending Roll
/emas "@{selected|token_name}" rolls [[(?{Reaction|@{selected|Reaction}}+?{Def. Dodge (if applicable)|@{target|Target1|Dodge}}+?{Bonuses|0}-?{Penalties|0}-?{Wound Penalties|@{selected|woundmod}})d6>5cf<1}]] to defend.


Attack Rolls
#Name:Attack
#Description:Uses Primary Weapon to make a Ranged Attack.  Includes Defending roll.
/emas "@{selected|token_name}" levels his @{selected|primaryweaponname}, finger tightening on the trigger. @{target|Target1|token_name} is in his sights!
(@{selected|primaryweaponskill}+@{selected|agility}-@{selected|primaryweaponacc} dice; @{selected|primaryweapondam} DV; @{selected|primaryweaponap} AP )

[[ (?{Weapon Dice|@{selected|primaryweaponskill}}+?{Agility|@{selected|agility}}+?{Accuracy +|@{selected|primaryweaponacc}}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1]] successes to hit.

/emas "@{target|Target1|token_name}" rolls [[(?{Def. Reaction|@{target|Target1|Reaction}}+?{Def. Dodge (if applicable)|@{target|Target1|Dodge}}+?{Def. Bonuses|0}-?{Def. Penalties|0}-?{Def. Wound Penalties|@{target|Target1|woundmod}})d6>5cf<1}]] to defend.

[[ (?{Weapon Damage|@{selected|primaryweapondam}})d6>5]] ?{Damage Type|@{selected|primaryweapondamtyp}} Damage. Roll successes on to-hit as additional damage.

#Name:AttackBurst
#Description: Same as #Attack, but with a burst attack.
/emas "@{selected|token_name}" levels his @{selected|primaryweaponname}, finger tightening on the trigger. @{target|Target1|token_name} is in his sights!
(@{selected|primaryweaponskill}+@{selected|agility}-@{selected|primaryweaponacc} dice; @{selected|primaryweapondam} DV; @{selected|primaryweaponap} AP )

[[ (?{Att. Weapon Dice|@{selected|primaryweaponskill}}+?{Att. Agility|@{selected|agility}}+?{Att. Accuracy +|@{selected|primaryweaponacc}}+?{Att. Bonuses|0}-?{Att. Penalties|0}-(?{Rounds Fired This Phase|0}-?{Recoil Comp|0}-1))d6>5cf<1]] successes to hit.

/emas "@{target|Target1|token_name}" rolls [[(?{Def. Reaction|@{target|Target1|Reaction}}+?{Def. Dodge (if applicable)|@{target|Target1|Dodge}}+?{Def. Bonuses|0}-?{Def. Penalties|0}-?{Def. Wound Penalties|@{target|Target1|woundmod}})d6>5cf<1}]] to defend.

[[ (?{Weapon Damage|@{selected|primaryweapondam}})d6>5]] ?{Damage Type|@{selected|primaryweapondamtyp}} Damage. Roll successes on to-hit as additional damage.

#Name:AttackMelee
#Description: Same as #Attack, but with Primary Melee
/emas "@{selected|token_name}" readies his @{selected|primarymeleeweaponname}, taking a swing at @{target|Target1|token_name}
@{selected|primarymeleeweaponskill}+?{Att. Agility|@{selected|agility}}+@{selected|primarymeleeweaponacc} dice to hit ; @{selected|primarymeleeweapondam} Damage ; @{selected|primarymeleeweaponap} AP

[[ (?{Weapon Dice|@{selected|primarymeleeweaponskill}}+?{Att. Agility|@{selected|agility}}+?{Att. Accuracy +|@{selected|primarymeleeweaponacc}})d6>5cf<1]] successes to hit.

/emas "@{target|Target1|token_name}" rolls [[(?{Def. Reaction|@{target|Target1|Reaction}}+?{Def. Dodge (if applicable)|@{target|Target1|Dodge}}+?{Def. Bonuses|0}-?{Def. Penalties|0}-?{Def. Wound Penalties|@{target|Target1|woundmod}})d6>5cf<1}]] to defend.

[[ (?{Weapon Damage|@{selected|primarymeleeweapondam}})d6>5cf<1]]  Damage. Roll successes on to-hit as additional damage.

Magic
#Name: Banish
#Description: Use the Banishing skill to de-summon a spirit
/emas "@{selected|token_name}" reaches out with eyes closed, attempting to banish @{target|Spirit|token_name}!
/emas "@{selected|token_name}" gets [[((?{Magic|@{selected|magicresonance}} + ?{Banishing|@{selected|magicresonance}} +?{Bonuses|0} - ?{Wound Mod|@{selected|woundmod}})d6>5cf<1)]] successes on the roll to banish.  The spirit resists [[(?{Force|@{target|Spirit|magicresonance}}+?{Summoner's Magic|@{target|Spirit|magicresonance}})d6>5cf<1)]] of those.
/w "@{target|Spirit|token_name}" You lose the difference in Services.
/w "@{selected|token_name}" Your banishing Drain Value is the number of  successes @{target|Spirit|token_name} achieved x2.

#Name: Counterspell
#Description: Counters spells.
/emas "@{selected|token_name}" prepares to counter any incoming magic as a Free Action.  All named targets in Line of Sight get  [[(?{Counterspelling|@{selected|Counterspell}} + ?{Magic|@{selected|magicresonance}} - ?{Penalties|0})d6>5cf<1]] additional successes to resist incoming spells.  These successes will protect against all magic until such time as Line of Sight is broken, or until the caster chooses to end the effect.

#Name:Dispel
#Description: Dispels an existing spell/effect.
/emas "@{selected|token_name}" attempts to dispel the ongoing effect.  [[((?{Counterspell|@{selected|Counterspell}} + ?{Magic|@{selected|magicresonance}} - ?{Penalties|0})d6>5cf<1)-((?{Force of Effect?|1} + ?{Caster's Magic|1} + ?{Karma Spent On Effect|0})d6>5cf<1)]] successes on the roll, which remove successes from the spell.
/emas "@{selected|token_name}" must now roll a Drain save, with the original spell's Force value.

#Name:Drain-Hermetic
#Description: Makes a drain save using the Hermetic tradition.
/emas "@{selected|token_name}" takes a deep breath and closes his eyes, a single finger reaching out to trace invisible sigils in the air, soaking in [[(?{Willpower|@{selected|willpower}} + ?{Logic|@{selected|Logic}} - ?{Wound Mod|@{selected|woundmod}})d6>5cf<1]] Spell Drain.

#Name:Drain-Shamanic
#Description: Makes a drain save using the Shamanic tradition.
/emas "@{selected|token_name}" takes a deep breath and closes their eyes, focusing on attunement to the spirits, soaking in [[(?{Willpower|@{selected|willpower}} + ?{Charisma|@{selected|Charisma}} - ?{Wound Mod|@{selected|woundmod}})d6>5cf<1]] Spell Drain.

Specific Spells
Please note that these spells soak using the Shamanic tradition by defailt.

#Name: Detect Enemies
#Description: Uses the Detect Enemies Spell
/emas "@{selected|token_name}" activates Detect Enemies.  @{selected|token_name} gets [[((?{Spellcasting|@{Spellcasting}}+?{Magic|@{magicresonance}}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1))d6>5cf<1)]] successes as a passive magic-based Perception check to detect all hostility from organic threats in [[?{Force|1}*10]] meters.
/emas "@{selected|token_name}" takes a deep breath and closes his eyes, focusing on attunement to the spirits.  He attempts to soak [[(?{Force|1}/2)+1]] Spell Drain.  He successfully soaks [[(?{Willpower|@{selected|willpower}} + ?{Charisma|@{selected|Charisma}} - ?{Wound Mod|@{selected|woundmod}})d6>5cf<1]] of that.



#Name: Stun Ball
#Description: Uses the Stun Ball Spell
/emas "@{selected|token_name}" lobs a Stun Ball at "@{Target|Target1|token_name}.  @{selected|token_name} gets [[((?{Spellcasting|@{Spellcasting}}+?{Magic|@{magicresonance}}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1)-((?{Target's Willpower|@{Target|Target1|willpower}}+?{Target's Counterspelling|0})d6>5cf<1)]] successes on the Opposed test, dealing direct damage with no soaking.
/w "@{selected|token_name}" AoE is equal to Force in M, damage is equal to Force in S, Successes can either increase damage by 1 or AoE by 1m.  Note that successes used to increase damage increase Drain Value by 1 each.  Target saves using Willpower v Stun damage.  You have chosen [[?{Force|1}]] to cast this spell at.  Base Drain Value is [[(?{Force|1}/2)+1]]
/w "@{selected|token_name}" Please divide your successes between increasing damage and increasing AOE, and notify GM of final damage, as well as rolling for drain.

#Name: Knock Out
#Description: Uses the Knock Out Spell
/emas "@{selected|token_name}" touches "@{Target|Target1|token_name}, casting Knockout.  @{selected|token_name} gets [[((?{Spellcasting|@{Spellcasting}}+?{Magic|@{magicresonance}}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1)-((?{Target's Willpower|@{Target|Target1|willpower}}+?{Target's Counterspelling|0})d6>5cf<1)]] successes on the Opposed test, dealing direct damage with no soaking.
/w "@{selected|token_name}" Successes increase damage by 1 each.  Note that successes used to increase damage increase Drain Value by 1 each.  Target opposed your test using Willpower v Stun damage.  You have chosen [[?{Force|1}]] to cast this spell at.  Base Drain Value is [[(?{Force|1}/2)-3]].
/w "@{selected|token_name}" Please roll your final damage and drain.

#Name: Mana Barrier
#Description: Uses the Mana Barrier spell
/emas "@{selected|token_name}" creates a Mana Barrier.  @{selected|token_name} gets [[((?{Spellcasting|@{Spellcasting}}+?{Magic|@{magicresonance}}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1))d6>5cf<1)]] successes to create a barrier of [[?{Force|1}]] meters, granting [[?{Force|1}]] bonus dice to resist magic damage from on the other side.  Successes may either boost the resist dice or the barrier size.
/emas "@{selected|token_name}" takes a deep breath and closes his eyes, focusing on attunement to the spirits.  He attempts to soak [[(?{Force|1}/2)+1]] Spell Drain.  He successfully soaks [[(?{Willpower|@{selected|willpower}} + ?{Charisma|@{selected|Charisma}} - ?{Wound Mod|@{selected|woundmod}})d6>5cf<1]] of that.

#Name: Stun Ball
#Description: Uses the Stun Ball Spell

/emas "@{selected|token_name}" lobs a Stun Ball at "@{Target|Target1|token_name}.  @{selected|token_name} gets [[((?{Spellcasting|@{Spellcasting}}+?{Magic|@{magicresonance}}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1)-((?{Target's Willpower|@{Target|Target1|willpower}}+?{Target's Counterspelling|0})d6>5cf<1)]] successes on the Opposed test, dealing direct damage with no soaking.
/w "@{selected|token_name}" Successes increase damage by 1 each.  Note that successes used to increase damage increase Drain Value by 1 each.  Target opposed your test using Willpower v Stun damage.  You have chosen [[?{Force|1}]] to cast this spell at.  Base Drain Value is [[(?{Force|1}/2)+2]].
/w "@{selected|token_name}" Please roll your final damage and drain.

#Name: Cure Disease
#Description: Uses the Cure Disease Spell
/emas "@{selected|token_name}" reaches his hand over, placing it on @{target|Touch Range Target|token_name}, attempting to Cure Disease. 
/w "@{selected|token_name}" The infected character receives a number of additional dice on her Disease Resistance Test equal to the spell’s net hits. It does not heal any damage already inflected by the disease.  Force determines maximum number of successes.
/emas "@{selected|token_name}" generates [[(?{Magic|@{magicresonance}}+?{Spellcasting|@{Spellcasting}})d6>5cf<1]] successes to serve as a bonus on damage resistance tests.  The number of successes cannot exceed [[?{Force|1}]].
/emas "@{selected|token_name}" takes [[(?{Disease Value|1}-2)-((?{Willpower|@{willpower}} + ?{Charisma|@{Charisma}} - ?{Wound Mod|@{woundmod}})d6>5cf<1)]] Spell Drain damage.

#Name: Heal
#Description: Uses the Heal Spell
/emas "@{selected|token_name}" reaches his hand over, placing it on @{target|Touch Range Target|token_name}, attempting to heal them.
/w "@{selected|token_name}" Heal repairs physical injuries. It heals a number of boxes of Physical damage equal to the spell’s hits from the Spellcasting Test. Hits can
also be used to reduce the base time for the spell to become permanent; each hit spent this way shaves of 1 Combat Turn (hits can be split between healing and reducing time as the caster desires).  A character can only be magically healed once for any single set
of injuries.
/emas "@{selected|token_name}" generates [[(?{Magic|1}+?{Spellcasting|@{Spellcasting}})d6>5cf<1]] successes to heal the target as he sees fit.  The number of successes cannot exceed [[?{Force|1}]].
/emas "@{selected|token_name}" takes [[(?{Damage Value|1}-2)-((?{Willpower|@{willpower}} + ?{Charisma|@{Charisma}} - ?{Wound Mod|@{woundmod}})d6>5cf<1)]] Spell Drain damage.

The Matrix

#Name: MatrixInit
#Desc: Rolls Matrix Init, variable based on hot or not
/emas "CorpSec Decker" rolls [[(((?{Hot Sim?|0}*1)+?{Matrix Init|@{matrixinitiativedice}})d6>5cf<1)+?{Matrix Init|@{matrixinitiativedice}} &{tracker}]] for Init.  He gets an additional [[?{Hot Sim?|0}+1]] pass(es).

#Name: MatrixAttack
#Desc: Uses an attack roll based on programs.
/emas "CorpSec Decker" makes a matrix attack on ?{Target|Name}, netting [[((?{Cybercombat|4}+?{Program Rating|4}+?{Bonuses|0}-?{Penalties|0})d6>5cf<1)-((?{Target's Response|1}+?{Target's Firewall|1}+?{Bonuses|0}-?{Penalties|0}+(?{Defender Taking Full Defense?|0}*?{Target's Hacking|1}))d6>5cf<1)]] Successes.
/emas "CorpSec Decker" deals a base of [[?{Program Rating|4}d6>5cf<1]] damage.  Please roll successes to add to this.
/emas "Target" will soak using [[((?{Black IC?|0}*?{Target's Willpower?|1}) + (?{Black IC?|0}*?{Target's Biofeedback Filter?|1}) + ({1-?{Black IC?|0}}*?{Target's System?|1}) + ({1-?{Black IC?|0}}*?{Target's Armor Program?|1}))]] damage dice.

#Name:IconWounds
#Desc:Shows the number of wounds on an icon.
/emas "CorpSec's" icon has [[8+(?{System|4}/2)]] wounds.










No comments:

Post a Comment