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

Help with Dark Heresy Attack Macro Using Power Cards

Hi There, I am still pretty new to the whole Javascripting thing and especially powercards but I am trying to make a rather complicated macro that will let you first choose weather or not you are aiming then the Attack type then roll a D100 for the attack comparing it to the characters Weapon skill + the previously chosen answers to determine if it is a hit or a miss. I plan on adding in damage and hit locations after this once a hit is determined or not but I am stuck already lol. Any help would be greatly appreciated! Here is what I have so far. !Power {{   --name|@{selected|token_name} is attacking @{target|token_name}!   --tokenid|@{selected|token_id}   --target_list|@{target|token_id}   --emote|Weapon Skill Test   --leftsub| [$Aim] ?{Aim | No aim (+0),+0 | Half aim (+10),+10 | Full aim (+20),+20}   --rightsub| [$Atyp] ?{Attack Type|Standard (+10),+10 | Charge (+20),+20 | All Out Attack (+30),+30 | Guarded Attack (-10),-10 | Called Shot (-20),-20}   --audioattr *1|@{selected|token_id} AudioOnAttack   --Attack *1|[[ [$Atk] 1D100]] vs **Weapon Skill** [[@{selected|WS}+$Aim+$Atyp+?{Modifier|0}]]   --?? $Atk base == 100 OR $Atk total < [[@{selected|WS}+$Aim+$Atyp+?{Modifier|0}]] ?? Miss *1|The Attack Missed.   --?? $Atk base == 1 OR $Atk total > [[@{selected|WS}+$Aim+$Atyp+?{Modifier|0}]] ?? Hit *1|The Attack Hits.   --audioattr *2|@{target|token_id} AudioOnHurt   --audioattr *3|@{selected|token_id} AudioOnMiss   --vfxattr  *1|@{selected|token_id} EffectOnAttack   --vfxattr  *2|@{selected|token_id} EffectOnEnemyHit   --vfxattr  *3|@{target|token_id} EffectOnHurt   --!Desc| }}
This is an impressive concept. I would love to know how you would make this work.
Mongo said: This is an impressive concept. I would love to know how you would make this work. Hey thanks man, I've been working on these macros for the last few months and I still haven't been able to get them to do everything that I want but I keep getting closer lol. I ended up giving up on making 1 macro for attacking and dealing damage as I couldn't figure out a way to determine multiple hits and hit locations and then roll for damage referencing those specific body parts. So I went back to two separate ones but so far they are working rather well. I now have one Melee attack and Ranged Attack macro with all the weapons listed so you choose what you are using then what type of attack and so on. It then compares the results and tells you the hit location. I still haven't been able to get it to display degrees of success. I then have 1 for Damage which after you choose the location that was hit it then automatically references and subtracts Armour and Toughness from the target. And everything of course has sound effects and effects for different weapons and attacks lol. Here is an example of Our Psykers Melee Macros if you are interested. !Power {{ --name|@{selected|token_name} is attacking @{target|token_name}! --inlinereplace|WS|@{selected|WS} --inlinereplace|Ss|(floor(@{selected|s}/10)) --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|Tal|?{Talent|No, 0| Frenzy (-10), [Frenzy] -10} --inlinereplace|Aim|?{Aim | No aim (+0), [No Aim] 0| Half aim (+10), [Half Aim] 10| Full aim (+20), [Full Aim] 20} --inlinereplace|AType|?{Attack Type|Standard (+10),[Standard] 10| Charge (+20),[Charge] 20| All Out Attack (+30),[All Out Attack] 30| Guarded Attack (-10),[Guarded Attack] -10| Called Shot (-20),[Called Shot] -20} --inlinereplace|Called Shot|?{Called Shot | No, [[1t[Hitloc]]]| Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --leftsub|?{Weapon | Bonesplitter (1D10+3), Bonesplitter| Mono Axe (1D10+1), Mono Axe| Staff (1D10), Staff| Knife (1D5), Knife} --rightsub|~AType$ --audioattr *1|@{selected|token_id} AudioOnAttack --soundfx|_audio,play,nomenu|Blade Attack --Attack| [[ [$Atk] 1D100 ]] vs **Weapon Skill** [#[ [$Def] 0d0 + ~WS$ + ~Modifier$ + ~Aim$ + ~AType$ + ~Tal$ ]#] -- ?? $Atk == 100 OR $Atk.total > $Def.total ?? !Miss|@{selected|token_name} missed. -- ?? $Atk == 100 or $Atk.total > $Def.total ?? audioattr *2|@{selected|token_id} AudioOnMiss -- ?? $Atk == 1 OR $Atk.total <= $Def.total ?? Hit:|@{selected|token_name} hits @{target|token_name} in the ~Called Shot$! }} !Power {{ --name|@{selected|token_name} is attacking @{target|token_name}! --inlinereplace|Ss|(floor(@{selected|s}/10)) --inlinereplace|Tt|(floor(@{target|T}/10)) --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|Tal|?{Talent|No, 0| Frenzy, 1} --inlinereplace|Called Shot|?{Called Shot | Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --inlinereplace|Wpn|?{Weapon | Bonesplitter (1D10+3 Pen:2), [Bonesplitter] 2d10d1+3| Mono Axe (1D10+1 Pen:2), [Mono Axe] 1d10+1| Staff (1D10 Pen:0), [Staff] 1d10| Knife (1D5 Pen:0), [Knife] 1d5} --inlinereplace|Head|[[ {0d0 , 0d0 + @{target|Headarmourvalue} - ?{Pen | Bonesplitter,2| Mono Axe,2| Staff,0| Knife,0} }kh1 ]] --inlinereplace|Larm|[[ {0d0 , 0d0 + @{target|LeftArmarmourvalue} - ?{Pen | Bonesplitter,2| Mono Axe,2| Staff,0| Knife,0} }kh1 ]] --inlinereplace|Rarm|[[ {0d0 , 0d0 + @{target|RightArmarmourvalue} - ?{Pen | Bonesplitter,2| Mono Axe,2| Staff,0| Knife,0} }kh1 ]] --inlinereplace|Body|[[ {0d0 , 0d0 + @{target|Bodyarmourvalue} - ?{Pen | Bonesplitter,2| Mono Axe,2| Staff,0| Knife,0} }kh1 ]] --inlinereplace|Lleg|[[ {0d0 , 0d0 + @{target|LeftLegarmourvalue} - ?{Pen | Bonesplitter,2| Mono Axe,2| Staff,0| Knife,0} }kh1 ]] --inlinereplace|Rleg|[[ {0d0 , 0d0 + @{target|RightLegarmourvalue} - ?{Pen | Bonesplitter,2| Mono Axe,2| Staff,0| Knife,0} }kh1 ]] --inlinereplace|Hloc|[#[ [$Hit] 0d0 + ?{Hit Location | Head, ~Head$| Right Arm, ~Rarm$| Left Arm, ~Larm$| Body, ~Body$| Right Leg, ~Rleg$| Left Leg, ~Lleg$} ]#] --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --hroll|[[ [$Wpn] 0d0 + ?{Choose Weapon | Bonesplitter,1| Mono Axe,2| Staff,3| Knife,4} ]] --Attack#?{Number of attacks|1}| @{target|token_name} takes [#[ [$Crt] 0d0 + ~Wpn$ + ~Ss$ + ~Tal$ + ~Modifier$ - ~Tt$ - ~Hloc$ ]#] **?{Damage Type | Impact| Rending| Energy| Explosive}** Damage to the ~Called Shot$! -- ?? $Wpn == 1 ?? soundfx|_audio,play,nomenu|Axe Hit -- ?? $Wpn == 2 ?? soundfx|_audio,play,nomenu|Axe Hit -- ?? $Wpn == 3 ?? soundfx|_audio,play,nomenu|Staff Hit -- ?? $Wpn == 4 ?? soundfx|_audio,play,nomenu|Knife Hit -- ?? $Atk == 1 OR $Atk.total <= $Def.total ?? audioattr *1|@{target|token_id} AudioOnHurt -- ?? $Atk == 1 OR $Atk.total <= $Def.total ?? vfxattr *1|@{target|token_id} EffectOnHurt }}
Holy Moley, Thank you for this very much. I cannot wait to try this out.
1549132527

Edited 1549133096
Mongo said: Holy Moley, Thank you for this very much. I cannot wait to try this out. Haha Thanks man, in response to your message about a ranged attack Macro i will go ahead and post a few of my macros that I have been working on for you and anyone else interested in trying them out. Just a heads up I am still super new to the whole Java Scripting thing and I am sure there are lots of improvements that could be made to make these work better then they do at the moment but I'm getting there lol. Also I never would of been able to figure any of these out without the help of everyone else that posted similar macros in the forum that I was able to use for inspiration and problem solving. Also a big thanks to Kurt J for helping me streamline my power cards. They were getting ridiculously complicated before he showed me some tips lol. Anyone that's interested in using these you will need a Pro Level account with access to the API, and the scripts that I am running are "Ammo" "Roll20 Audio Master" and "Powercards". Oh and I also learned how to add the sounds and effects to the characters themselves by watching Kurts Video on Youtube! <a href="https://www.youtube.com/watch?v=JwUkdO-F3LQ" rel="nofollow">https://www.youtube.com/watch?v=JwUkdO-F3LQ</a> The following will be some of the Macros I am using in my game that we are currently playing for Dark Heresy 1st ed.
I will start with the Melee Macros again as I am not sure if I changed anything on them since the last time I posted it. Also I will go with a different character, our resident Tech Priest Constantine. I still need to implement a way to show number of success's and I would like to find a way to make it so you didn't have to choose your weapon multiple times for Damage, Pen, and Sound Effects but It works for now! Weapon Skill Test !Power {{ --name|@{selected|token_name} is attacking @{target|token_name}! --inlinereplace|WS|@{selected|WS} --inlinereplace|Ss|(floor(@{selected|s}/10)) --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|Tal|?{Talent|No, 0| Frenzy (-10), [Frenzy] -10} --inlinereplace|Aim|?{Aim | No aim (+0), [No Aim] 0| Half aim (+10), [Half Aim] 10| Full aim (+20), [Full Aim] 20} --inlinereplace|AType|?{Attack Type|Standard (+10),[Standard] 10| Charge (+20),[Charge] 20| All Out Attack (+30),[All Out Attack] 30| Guarded Attack (-10),[Guarded Attack] -10| Called Shot (-10),[Called Shot] -10} --inlinereplace|Called Shot|?{Called Shot | No, [[1t[Hitloc]]]| Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --leftsub|?{Weapon | Serenity (1D10+2), Serenity| Flail (1D10+2), Flail| Metal Staff (1D10), Metal Staff| Knife (1D5), Knife} --rightsub|~AType$ --audioattr *1|@{selected|token_id} AudioOnAttack --soundfx|_audio,play,nomenu|Blade Attack --Attack| [[ [$Atk] 1D100 ]] vs **Weapon Skill** [#[ [$Def] 0d0 + ~WS$ + ~Modifier$ + ~Aim$ + ~AType$ + ~Tal$ ]#] -- ?? $Atk == 100 OR $Atk.total &gt; $Def.total ?? !Miss|@{selected|token_name} missed. -- ?? $Atk == 100 or $Atk.total &gt; $Def.total ?? audioattr *2|@{selected|token_id} AudioOnMiss -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? Hit:|@{selected|token_name} hits @{target|token_name} in the ~Called Shot$! }} Melee Damage !Power {{ --name|@{selected|token_name} is attacking @{target|token_name}! --inlinereplace|Ss|(floor(@{selected|s}/10)) --inlinereplace|Tt|(floor(@{target|T}/10)) --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|Called Shot|?{Called Shot | Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --inlinereplace|Wpn|?{Weapon | Serenity (1D10+2 Pen:3), [Serenity] 1d10+2| Flail (1D10+2 Pen:0), [Flail] 1d10+2| Metal Staff (1D10 Pen:0), [Metal Staff] 1d10| Knife (1D5 Pen:0), [Knife] 1d5} --inlinereplace|Head|[[ {0d0 , 0d0 + @{target|Headarmourvalue} - ?{Pen | Serenity,3| Flail,0| Metal Staff,0| Knife,0} }kh1 ]] --inlinereplace|Larm|[[ {0d0 , 0d0 + @{target|LeftArmarmourvalue} - ?{Pen | Serenity,3| Flail,0| Metal Staff,0| Knife,0} }kh1 ]] --inlinereplace|Rarm|[[ {0d0 , 0d0 + @{target|RightArmarmourvalue} - ?{Pen | Serenity,3| Flail,0| Metal Staff,0| Knife,0} }kh1 ]] --inlinereplace|Body|[[ {0d0 , 0d0 + @{target|Bodyarmourvalue} - ?{Pen | Serenity,3| Flail,0| Metal Staff,0| Knife,0} }kh1 ]] --inlinereplace|Lleg|[[ {0d0 , 0d0 + @{target|LeftLegarmourvalue} - ?{Pen | Serenity,3| Flail,0| Metal Staff,0| Knife,0} }kh1 ]] --inlinereplace|Rleg|[[ {0d0 , 0d0 + @{target|RightLegarmourvalue} - ?{Pen | Serenity,3| Flail,0| Metal Staff,0| Knife,0} }kh1 ]] --inlinereplace|Hloc|[#[ [$Hit] 0d0 + ?{Hit Location | Head, ~Head$| Right Arm, ~Rarm$| Left Arm, ~Larm$| Body, ~Body$| Right Leg, ~Rleg$| Left Leg, ~Lleg$} ]#] --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --hroll|[[ [$Wpn] 0d0 + ?{Choose Weapon | Serenity,1| Flail,2| Metal Staff,3| Knife,4} ]] --Attack#?{Number of attacks|1}| @{target|token_name} takes [#[ [$Crt] 0d0 + ~Wpn$ + ~Ss$ + ~Modifier$ - ~Tt$ - ~Hloc$ ]#] **?{Damage Type | Rending| Impact| Energy| Explosive}** Damage to the ~Called Shot$! -- ?? $Wpn == 1 ?? soundfx|_audio,play,nomenu|Great Sword Hit -- ?? $Wpn == 2 ?? soundfx|_audio,play,nomenu|Impact Hit -- ?? $Wpn == 3 ?? soundfx|_audio,play,nomenu|Staff Hit -- ?? $Wpn == 4 ?? soundfx|_audio,play,nomenu|Knife Hit -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? audioattr *1|@{target|token_id} AudioOnHurt -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? vfxattr *1|@{target|token_id} EffectOnHurt }}
Next up will be the Ranged Macros, same as before I need to implement number of successes and failures and you will need the "Ammo" Script for the ammo to be deducted from your token but other than that it works pretty well! Ballistic Skill Test !Power {{ --name|@{selected|token_name} is attacking @{target|token_name}! --inlinereplace|BS|@{selected|BS} --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|Rnge|?{Range| Point Blank (+30), [Point Blank] 30| Short Range (+10), [Short Range] 10| Standard range (+0), [Standard Range] 0| Long Range (-10), [Long Range] -10| Extreme Range (-30), [Extreme Range] -30} --inlinereplace|Aim|?{Aim | No aim (+0), [No Aim] 0| Half aim (+10), [Half Aim] 10| Full aim (+20), [Full Aim] 20} --inlinereplace|AType|[[ [$Rat] 0d0 + ?{Rate of Fire| Standard (+10), [Standard] 10| Semi Auto (+0), [Semi Auto] 0| Full Auto (-10), [Full Auto] -10| Called Shot (-20), [Called Shot] -20}]] --inlinereplace|Called Shot|?{Called Shot | No, [[1t[Hitloc]]]| Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --inlinereplace|Tal|?{Talent|No, 0| Deadeye Shot (+10), [Deadeye Shot] 10} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --leftsub|?{Weapon | Minerva Aegis (1D10+2), Minerva Aegis| Las Carbine (1D10+2), Las Carbine| Rusty Autogun (1D10+2), Rusty Autogun| Laspistol (1D10+2), Laspistol| Old Revolver (1D10+1), Old Revolver| Knife (1D5), Knife} --hroll|[[ [$Wpn] 0d0 + ?{Weapon Type | Minerva Aegis, 1| Las Carbine, 2| Rusty Autogun, 3| Laspistol, 4| Old Revolver, 5| Knife, 6}]] -- ?? $Wpn == 1 AND $Rat == 10 ?? soundfx|_audio,play,nomenu|Lasgun Single Attack -- ?? $Wpn == 1 AND $Rat == -20 ?? soundfx|_audio,play,nomenu|Lasgun Single Attack -- ?? $Wpn == 1 AND $Rat == 0 ?? soundfx|_audio,play,nomenu|Lasgun Semi-Auto Attack -- ?? $Wpn == 1 AND $Rat == -10 ?? soundfx|_audio,play,nomenu|Lasgun Semi-Auto Attack -- ?? $Wpn == 4 ?? soundfx|_audio,play,nomenu|Laspistol Attack -- ?? $Wpn == 2 AND $Rat == 10 ?? soundfx|_audio,play,nomenu|Lascarbine Single Attack -- ?? $Wpn == 2 AND $Rat == -20 ?? soundfx|_audio,play,nomenu|Lascarbine Single Attack -- ?? $Wpn == 2 AND $Rat == 0 ?? soundfx|_audio,play,nomenu|Lascarbine Semi-Auto Attack -- ?? $Wpn == 3 AND $Rat == 10 ?? soundfx|_audio,play,nomenu|Autopistol Single Attack -- ?? $Wpn == 3 AND $Rat == -20 ?? soundfx|_audio,play,nomenu|Autopistol Single Attack -- ?? $Wpn == 3 AND $Rat == 0 ?? soundfx|_audio,play,nomenu|Autogun Semi-Auto Attack -- ?? $Wpn == 3 AND $Rat == -10 ?? soundfx|_audio,play,nomenu|Autogun Automatic Attack -- ?? $Wpn == 1 ?? vfxattr *1|@{selected|token_id} EffectOnAttackLaser -- ?? $Wpn == 2 ?? vfxattr *2|@{selected|token_id} EffectOnAttackLaser -- ?? $Wpn == 4 ?? vfxattr *3|@{selected|token_id} EffectOnAttackLaser -- ?? $Wpn == 5 ?? soundfx|_audio,play,nomenu|Stub Revolver Single Attack -- ?? $Wpn == 6 ?? soundfx|_audio,play,nomenu|Knife Throw --Attack| [[ [$Atk] 1D100 ]] vs **Ballistic Skill** [#[ [$Def] 0d0 + ~BS$ + ~Modifier$ + ~Aim$ + ~AType$ + ~Rnge$ + ~Tal$ ]#] -- ?? $Atk &gt; 93 AND $Wpn == 1 ?? !Jam|@{selected|token_name} weapon has Jammed! **Reliable** [[1d10]] -- ?? $Atk &gt; 93 AND $Wpn == 2 ?? !Jam|@{selected|token_name} weapon has Jammed! **Reliable** [[1d10]] -- ?? $Atk &gt; 93 AND $Wpn == 4 ?? !Jam|@{selected|token_name} weapon has Jammed! **Reliable** [[1d10]] -- ?? $Atk &gt; 93 AND $Wpn == 3 ?? !Jam|@{selected|token_name} weapon has Jammed! -- ?? $Atk &gt; 93 AND $Wpn == 5 ?? !Jam|@{selected|token_name} weapon has Jammed! -- ?? $Atk == 100 OR $Atk.total &gt; $Def.total ?? !Miss|@{selected|token_name} missed. -- ?? $Atk == 100 or $Atk.total &gt; $Def.total ?? soundfx|_audio,play,nomenu|Ricochet -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? Hit:|@{selected|token_name} hits @{target|token_name} in the ~Called Shot$! }} !ammo @{selected|token_id} Ammo ?{Ammo Usage|-1} Ranged Damage !Power {{ --name|@{selected|token_name} is attacking @{target|token_name}! --inlinereplace|Tt|(floor(@{target|T}/10)) --inlinereplace|Called Shot|?{Called Shot | Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --inlinereplace|Wpn|?{Weapon | Minerva Aegis (1D10+2 Pen:0), [Minerva Aegis] 1d10+2| Las Carbine (1D10+2 Pen:0), [Las Carbine] 1d10+2| Rusty Autogun (1D10+2 Pen:0), [Rusty Autogun] 1d10+2| Laspistol (1D10+2 Pen:0), [Laspistol] 1d10+2| Old Revolver (1D10+1 Pen:0), [Old Revolver] 1d10+1| Knife (1D5 Pen:0), [Knife] 1d5} --hroll|[[ [$Wep] 0d0 + ?{Choose Weapon | Minerva Aegis, 1| Las Carbine, 2| Rusty Autogun, 3| Laspistol, 4| Old Revolver, 5| Knife, 6} ]] [[ [$Rat] 0d0 + ?{Rate of Fire| Standard, [Standard] 10| Semi Auto, [Semi Auto] 0| Full Auto, [Full Auto] -10| Called Shot, [Called Shot] -20} ]] --inlinereplace|Head|[[ {0d0 , 0d0 + @{target|Headarmourvalue} - ?{Pen | Minerva Aegis,0| Las Carbine,0| Rusty Autogun,0| Laspistol,0| Old Revolver,0| Knife,0} }kh1 ]] --inlinereplace|Larm|[[ {0d0 , 0d0 + @{target|LeftArmarmourvalue} - ?{Pen | Minerva Aegis,0| Las Carbine,0| Rusty Autogun,0| Laspistol,0| Old Revolver,0| Knife,0} }kh1 ]] --inlinereplace|Rarm|[[ {0d0 , 0d0 + @{target|RightArmarmourvalue} - ?{Pen | Minerva Aegis,0| Las Carbine,0| Rusty Autogun,0| Laspistol,0| Old Revolver,0| Knife,0} }kh1 ]] --inlinereplace|Body|[[ {0d0 , 0d0 + @{target|Bodyarmourvalue} - ?{Pen | Minerva Aegis,0| Las Carbine,0| Rusty Autogun,0| Laspistol,0| Old Revolver,0| Knife,0} }kh1 ]] --inlinereplace|Lleg|[[ {0d0 , 0d0 + @{target|LeftLegarmourvalue} - ?{Pen | Minerva Aegis,0| Las Carbine,0| Rusty Autogun,0| Laspistol,0| Old Revolver,0| Knife,0} }kh1 ]] --inlinereplace|Rleg|[[ {0d0 , 0d0 + @{target|RightLegarmourvalue} - ?{Pen | Minerva Aegis,0| Las Carbine,0| Rusty Autogun,0| Laspistol,0| Old Revolver,0| Knife,0} }kh1 ]] --inlinereplace|Hloc|[#[ [$Hit] 0d0 + ?{Hit Location | Head, ~Head$| Right Arm, ~Rarm$| Left Arm, ~Larm$| Body, ~Body$| Right Leg, ~Rleg$| Left Leg, ~Lleg$} ]#] --inlinereplace|Modifier|?{Cover | No, 0| Light Wood or Metal, 4| Heavy Wood or Sandbags, 8| Rockcrete or Stone, 16| Plasteel or Armaplas, 32} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --Attack#?{Number of attacks|1}| @{target|token_name} takes [#[ [$Crt] 0d0 + ~Wpn$ - ~Modifier$ - ~Tt$ - ~Hloc$ ]#] **?{Damage Type | Energy| Rending| Impact| Explosive}** Damage to the ~Called Shot$! -- ?? $Wep == 1 AND $Rat == 10 ?? soundfx|_audio,play,nomenu|Laser Impact -- ?? $Wep == 1 AND $Rat == -20 ?? soundfx|_audio,play,nomenu|Laser Impact -- ?? $Wep == 1 AND $Rat == 0 ?? soundfx|_audio,play,nomenu|Laser Semi-Auto Impact -- ?? $Wep == 1 AND $Rat == -10 ?? soundfx|_audio,play,nomenu|Laser Automatic Impact -- ?? $Wep == 2 AND $Rat == 10 ?? soundfx|_audio,play,nomenu|Laser Impact -- ?? $Wep == 2 AND $Rat == -20 ?? soundfx|_audio,play,nomenu|Laser Impact -- ?? $Wep == 2 AND $Rat == 0 ?? soundfx|_audio,play,nomenu|Laser Semi-Auto Impact -- ?? $Wep == 3 AND $Rat == 10 ?? soundfx|_audio,play,nomenu|Medium Bullet Impact -- ?? $Wep == 3 AND $Rat == -20 ?? soundfx|_audio,play,nomenu|Medium Bullet Impact -- ?? $Wep == 3 AND $Rat == 0 ?? soundfx|_audio,play,nomenu|Medium Bullet Impact -- ?? $Wep == 3 AND $Rat == 0 ?? soundfx|_audio,play,nomenu|Bullet Impact -- ?? $Wep == 3 AND $Rat == -10 ?? soundfx|_audio,play,nomenu|Bullet Automatic Impact -- ?? $Wep == 4 ?? soundfx|_audio,play,nomenu|Laser Impact -- ?? $Wep == 5 ?? soundfx|_audio,play,nomenu|Small Bullet Impact -- ?? $Wep == 6 ?? soundfx|_audio,play,nomenu|Knife Hit -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? audioattr *1|@{target|token_id} AudioOnHurt -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? vfxattr *1|@{target|token_id} EffectOnHurt }}
How about Psychic Powers next, I still need to find a way to nest the specific spell macros into the casting macro itself but it will require making the spell macros using html coding and I have yet to mess with that yet lol. Psychic Power Test !Power {{ --name|@{selected|token_name} is attempting to harness the power of the warp! --inlinereplace|WP|floor(@{Eolith|wp}/10) --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|Skill|?{Skill|No, 0| Invocation (+WP Bonus), [Invocation] floor(@{Eolith|wp}/10)} --inlinereplace|Pwr|?{Power| Flashbang (TH:6), [Flashbang] 6| Healer (TH:7), [Healer] 7| Spasm (TH:7), [Spasm] 7| Inflict Pain (TH:8), [Inflict Pain] 8| Touch of Madness (TH:11), [Touch of Madness] 11} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|Psychic Power Test --inlinereplace|Pow|?{Psychic Power| Flashbang, Flashbang| Healer, Healer| Spasm, Spasm| Inflict Pain, Inflict Pain| Touch of Madness, Touch of Madness} --inlinereplace|Psy|((?{Psy Rating|1}d10cs9cf11)) --leftsub|~Pow$ --rightsub|@{target|token_name} --soundfx|_audio,play,nomenu|Male Psychic Test --Power Roll|[#[ [$Atk] 0d0 + ~Psy$ + ~WP$ + ~Skill$ ]#] vs **Threshold** [#[ [$Def] 0d0 + ~Modifier$ + ~Pwr$ ]#] -- ?? $Atk.total &lt; $Def.total ?? !Miss|@{selected|token_name} failed. -- ?? $Atk.total &lt; $Def.total ?? soundfx|_audio,play,nomenu|Spell Fizzle -- ?? $Atk.total &gt;= $Def.total ?? !Result:|@{selected|token_name} successfully casts **~Pow$** on **@{target|token_name}!** }} An Example of a Spell that would be used if the Psychic Test was successful. Spasm !Power {{ --name|@{target|foe|token_name}'s muscles begin to spasm and uncontrollably shake! --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|Spasm --!Target:| **@{target||token_name}'s WP** [[ [$Tgt] 0d0 + @{target|Wp} +?{Difficulty|-0}]] --Roll:| [[ [$Roll] 1d100]] --soundfx|_audio,play,nomenu|Spasm -- ?? $Roll.total &lt;= $Tgt.total ?? !Miss|**@{target||token_name}** is Successful and holds firm against the psychic onslaught! -- ?? $Roll.total &gt; $Tgt.total ?? !Miss|**@{target||token_name}** Fails, and is now knocked **Prone** as they fall to the floor violently shaking and convulsing! If they are holding a ranged weapon it goes off hitting the closest target!! }}
Here are my Grenade and Firebomb Macros that I have just made last night actually. I probably could of implemented the Firebomb into the Grenade Macro but I just couldn't stand the thought of not saying that "the character pulls the pin" lol.. Also the Range output is just so that we can easily tell what should of been considered short, normal, or extreme ranges exc. Would be nice to have a separate Macro to figure this out before hand but I have way to many macros as it is lol. I left out the hit location in the Ballistic skill test as we always have them hit the body but I did leave the locations in the damage rolls just in case someone is behind cover and all that is peeking out is there head and blah blah blah. I still need to figure out how to make it so I can choose multiple targets that get caught in the blast and roll separate damage rolls for each one. If anyone has any tips on this that would be fantastic! Grenade Ballistic Skill Test !Power {{ --name|@{selected|token_name} pulls the pin and tosses the grenade in *"@{target|foe|character_name}'s"* direction!! --inlinereplace|BS|@{selected|BS} --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|Rnge|?{Range| Point Blank (+30), [Point Blank] 30| Short Range (+10), [Short Range] 10| Standard range (+0), [Standard Range] 0| Long Range (-10), [Long Range] -10| Extreme Range (-30), [Extreme Range] -30} --inlinereplace|Aim|?{Aim | No aim (+0), [No Aim] 0| Half aim (+10), [Half Aim] 10| Full aim (+20), [Full Aim] 20} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --leftsub|?{Type | Frag Grenade (2D10 Blast 4), Frag Grenade| Krak Grenade (2D10+4 Pen 6), Krak Grenade| Improvised Grenade (1D10 Blast 4), Improvised Grenade} --Throwing Range| [[(floor(@{selected|S}/10))*3]] Meter(s) --Attack| [[ [$Atk] 1D100 ]] vs **Ballistic Skill** [#[ [$Def] 0d0 + ~BS$ + ~Modifier$ + ~Aim$ + ~Rnge$ ]#] -- ?? $Atk == 100 OR $Atk &gt; 93 ?? Mishap|Something has gone wrong! [[ [$Mhp]1d10]] -- ?? $Atk == 100 OR $Atk &gt; 93 ?? soundfx|_audio,play,nomenu|Wah Wah Wah Fail Sound -- ?? $Atk &lt; 94 AND $Atk.total &gt; $Def.total ?? Miss|@{selected|token_name} missed and the grenade is scattering **[[1D5]]** Meter(s) in a random direction! **[[1D10]]** -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? Hit:|@{selected|token_name} hits @{target|token_name} with the grenade! --soundfx|_audio,play,nomenu|Grenade Toss Attack -- ?? $Atk == 100 OR $Atk &gt; 93 AND $Mhp &lt; 6 ?? Dud|The grenade fails to explode. -- ?? $Atk == 100 OR $Atk &gt; 93 AND $Mhp &gt; 5 AND $Mhp &lt; 9 ?? It Might Be Ok|Roll again on the Mishap Table next round. -- ?? $Atk == 100 OR $Atk &gt; 93 AND $Mhp &gt; 8 ?? Boom!|The grenade detonates immediately. Center the effect on the character! }} Grenade Damage !Power {{ --name|Boom!! --inlinereplace|Tt|(floor(@{target|T}/10)) --inlinereplace|Called Shot|?{Called Shot | Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --inlinereplace|Wpn|?{Weapon | Frag Grenade (2D10 Pen:0), [Frag Grenade] 2d10| Krak Grenade (2D10+4 Pen:6), [Krak Grenade] 2d10+4| Improvised Grenade (1D10 Pen:0), [Improvised Grenade] 1d10} --hroll|[[ [$Wep] 0d0 + ?{Choose Weapon | Frag Grenade, 1| Krak Grenade, 2| Improvised Grenade, 3} ]] --inlinereplace|Head|[[ {0d0 , 0d0 + @{target|Headarmourvalue} - ?{Pen | Frag Grenade,0| Krak Grenade,6| Improvised Grenade,0} }kh1 ]] --inlinereplace|Larm|[[ {0d0 , 0d0 + @{target|LeftArmarmourvalue} - ?{Pen | Frag Grenade,0| Krak Grenade,6| Improvised Grenade,0} }kh1 ]] --inlinereplace|Rarm|[[ {0d0 , 0d0 + @{target|RightArmarmourvalue} - ?{Pen | Frag Grenade,0| Krak Grenade,6| Improvised Grenade,0} }kh1 ]] --inlinereplace|Body|[[ {0d0 , 0d0 + @{target|Bodyarmourvalue} - ?{Pen | Frag Grenade,0| Krak Grenade,6| Improvised Grenade,0} }kh1 ]] --inlinereplace|Lleg|[[ {0d0 , 0d0 + @{target|LeftLegarmourvalue} - ?{Pen | Frag Grenade,0| Krak Grenade,6| Improvised Grenade,0} }kh1 ]] --inlinereplace|Rleg|[[ {0d0 , 0d0 + @{target|RightLegarmourvalue} - ?{Pen | Frag Grenade,0| Krak Grenade,6| Improvised Grenade,0} }kh1 ]] --inlinereplace|Hloc|[#[ [$Hit] 0d0 + ?{Hit Location | Head, ~Head$| Right Arm, ~Rarm$| Left Arm, ~Larm$| Body, ~Body$| Right Leg, ~Rleg$| Left Leg, ~Lleg$} ]#] --inlinereplace|Modifier|?{Cover | No, 0| Light Wood or Metal, 4| Heavy Wood or Sandbags, 8| Rockcrete or Stone, 16| Plasteel or Armaplas, 32} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --Attack#?{Number of attacks|1}| @{target|token_name} takes [#[ [$Crt] 0d0 + ~Wpn$ + ~Modifier$ - ~Tt$ - ~Hloc$ ]#] **?{Damage Type | Explosive| Impact| Energy| Rending}** Damage to the ~Called Shot$! -- ?? $Wep == 1 ?? soundfx|_audio,play,nomenu|Frag Grenade Impact -- ?? $Wep == 2 ?? soundfx|_audio,play,nomenu|Frag Grenade Impact -- ?? $Wep == 3 ?? soundfx|_audio,play,nomenu|Frag Grenade Impact -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? audioattr *1|@{target|token_id} AudioOnHurt -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? vfxattr&nbsp; *1|@{target|token_id} EffectOnHurt }}
Firebomb Ballistic Skill Test !Power {{ --name|@{selected|token_name} tosses the Firebomb in *"@{target|foe|character_name}'s"* direction!! --inlinereplace|BS|@{selected|BS} --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|Rnge|?{Range| Point Blank (+30), [Point Blank] 30| Short Range (+10), [Short Range] 10| Standard range (+0), [Standard Range] 0| Long Range (-10), [Long Range] -10| Extreme Range (-30), [Extreme Range] -30} --inlinereplace|Aim|?{Aim | No aim (+0), [No Aim] 0| Half aim (+10), [Half Aim] 10| Full aim (+20), [Full Aim] 20} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --leftsub|Firebomb --Throwing Range| [[(floor(@{selected|S}/10))*3]] Meter(s) --Attack| [[ [$Atk] 1D100 ]] vs **Ballistic Skill** [#[ [$Def] 0d0 + ~BS$ + ~Modifier$ + ~Aim$ + ~Rnge$ ]#] -- ?? $Atk == 100 OR $Atk &gt; 93 ?? Mishap|Something has gone wrong! [[ [$Mhp]1d10]] -- ?? $Atk == 100 OR $Atk &gt; 93 ?? soundfx|_audio,play,nomenu|Wah Wah Wah Fail Sound -- ?? $Atk &lt; 94 AND $Atk.total &gt; $Def.total ?? Miss|@{selected|token_name} missed and the Firebomb is scattering **[[1D5]]** Meter(s) in a random direction! **[[1D10]]** -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? Hit:|@{selected|token_name} scores a direct hit on @{target|token_name} with the Firebomb! --soundfx|_audio,play,nomenu|Grenade Toss Attack -- ?? $Atk == 100 OR $Atk &gt; 93 AND $Mhp &lt; 6 ?? Dud|The Firebomb fails to ignite. -- ?? $Atk == 100 OR $Atk &gt; 93 AND $Mhp &gt; 5 AND $Mhp &lt; 9 ?? It Might Be Ok|Roll again on the Mishap Table next round. -- ?? $Atk == 100 OR $Atk &gt; 93 AND $Mhp &gt; 8 ?? Boom!|The Firebomb detonates immediately. Center the effect on the character! }} Firebomb Damage !Power {{ --name|Boom!! --inlinereplace|Tt|(floor(@{target|T}/10)) --inlinereplace|Called Shot|?{Called Shot | Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --inlinereplace|Head|[[ {0d0 , 0d0 + @{target|Headarmourvalue} - 0 }kh1 ]] --inlinereplace|Larm|[[ {0d0 , 0d0 + @{target|LeftArmarmourvalue} - 0 }kh1 ]] --inlinereplace|Rarm|[[ {0d0 , 0d0 + @{target|RightArmarmourvalue} - 0 }kh1 ]] --inlinereplace|Body|[[ {0d0 , 0d0 + @{target|Bodyarmourvalue} - 0 }kh1 ]] --inlinereplace|Lleg|[[ {0d0 , 0d0 + @{target|LeftLegarmourvalue} - 0 }kh1 ]] --inlinereplace|Rleg|[[ {0d0 , 0d0 + @{target|RightLegarmourvalue} - 0 }kh1 ]] --inlinereplace|Hloc|[#[ [$Hit] 0d0 + ?{Hit Location | Head, ~Head$| Right Arm, ~Rarm$| Left Arm, ~Larm$| Body, ~Body$| Right Leg, ~Rleg$| Left Leg, ~Lleg$} ]#] --inlinereplace|Modifier|?{Cover | No, 0| Light Wood or Metal, 4| Heavy Wood or Sandbags, 8| Rockcrete or Stone, 16| Plasteel or Armaplas, 32} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --Attack#?{Number of attacks|1}| @{target|token_name} takes [#[ [$Crt] 1d10 + 3 + ~Modifier$ - ~Tt$ - ~Hloc$ ]#] **Energy** Damage to the ~Called Shot$! -- soundfx|_audio,play,nomenu|Firebomb Impact -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? audioattr *1|@{target|token_id} AudioOnHurt -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total ?? vfxattr&nbsp; *1|@{target|token_id} EffectOnHurt --!^4Title:|&nbsp;&nbsp;&nbsp; **Agility Test** --Target:| [[ [$Tgt] 0d0 + @{target|Ag} +?{Difficulty|-0}]] --Roll:| [[ [$Roll] 1d100]] -- ?? $Roll.total &lt;= $Tgt.total ?? !Miss|**@{target||token_name}** is Successful and manages to avoid being set on fire! -- ?? $Roll.total &gt; $Tgt.total ?? !Miss|**@{target||token_name}** Fails, and is now **On Fire**!! }}
1549134596

Edited 1549134672
Next up some of the general tables in the main rule book. The Critical Hits, Psychic Phenomenon and Perils ones I found in the Discord 40k Roleplay group and made a couple minor changes. On a side note none of my macros use the "Correct" Hit location table from the Main book, instead I have a rollable table that has the same chances of hitting said body part as flipping the dice like you are supposed to. I couldn't figure out a good way to do it the proper way. Explosive Mishap table !Power {{ --titlefontshadow|none --titlefont|Georgia --titlefontsize| 20px --orowbg|#D7BDE2 --erowbg|#D7BDE2 --corners|10 --format|Psy --name|Explosive Mishap Table --leftsub|Something has gone terribly wrong... -- Roll| [[ [$Mhp]1d10]] --soundfx|_audio,play,nomenu|Wah Wah Wah Fail Sound -- ?? $Mhp &lt; 6 ?? Dud|The grenade fails to explode. -- ?? $Mhp &gt; 5 AND $Mhp &lt; 9 ?? It Might Be Ok|Roll again on the Mishap Table next round. -- ?? $Mhp &gt; 8 ?? Boom!|The grenade detonates immediately. Center the effect on the character! }} Psychic Phenomenon !power {{ --hroll|[[ [$ARoll] 1d100 ]] --titlefontshadow|none --titlefont|Georgia --titlefontsize| 20px --orowbg|#D7BDE2 --erowbg|#D7BDE2 --corners|10 --format|Psy --name|Psychic Phenomena --leftsub| The warp has been disturbed --?? $ARoll &lt;= 3 ?? Dark Foreboding|A faint breeze blows past the psyker and those near him, and everyone gets the feeling that doom is about to befall them. --?? $ARoll &gt;= 4 AND $ARoll &lt;= 5 ?? Warp Echo|For a few seconds, all noises cause sinister echoes, regardless of the surroundings. --?? $ARoll &gt;= 6 AND $ARoll &lt;= 8 ?? Unholy Stench|The air around the psyker becomes permeated with a bizarre and foul smell. --?? $ARoll &gt;= 9 AND $ARoll &lt;= 11 ?? Mind Warp|The psyker suffers **1** Insanity Point as his own inherent phobias, suspicions, and hatred surge to the surface of his mind in a wave of negative emotion. --?? $ARoll &gt;= 12 AND $ARoll &lt;= 14 ?? Hoarfrost|The temperature plummets for an instant and a thin coating of frost covers everything within **[[ [TXT] 3d10]]** metres of the psyker. --?? $ARoll &gt;= 15 AND $ARoll &lt;= 17 ?? Aura of Taint|All animals within **[[ [TXT] 1d100 ]]** metres of the psyker become spooked and agitated. Characters with Psyniscience can pinpoint the psyker as the cause. --?? $ARoll &gt;= 18 AND $ARoll &lt;= 20 ?? Memory Worm|All people within line of sight of the psyker forget something trivial. --?? $ARoll &gt;= 21 AND $ARoll &lt;= 23 ?? Spoilage|Food and drink go bad within **[[ [TXT] 5d10]]** metres of the psyker. --?? $ARoll &gt;= 24 AND $ARoll &lt;= 26 ?? Haunting Breeze|Winds whip up around the psyker for a few seconds, blowing light objects about and guttering fires within **[[ [TXT] 3d10]]** metres of him. --?? $ARoll &gt;= 27 AND $ARoll &lt;= 29 ?? Veil of Darkness|For a brief moment (effectively the remainder of the Round), an area within **[[ [TXT] 3d10]]** metres of the psyker is plunged into immediate darkness. --?? $ARoll &gt;= 30 AND $ARoll &lt;= 32 ?? Distorted Reflections|Mirrors and other reflective surfaces within **[[ [TXT] 5d10]]** metres of the psyker distort or shatter. --?? $ARoll &gt;= 33 AND $ARoll &lt;= 35 ?? Breath Leech|Everyone (including the psyker) becomes short of breath for **1** Round and cannot make any Run or Charge actions. --?? $ARoll &gt;= 36 AND $ARoll &lt;= 38 ?? Daemonic Mask|For a fleeting moment the psyker takes on a Daemonic appearance and gains a Fear rating of **1** for the rest of the Round. He also gains **1** Corruption Point. --?? $ARoll &gt;= 39 AND $ARoll &lt;= 41 ?? Unnatural Decay|All plant life within **[[ [TXT] 3d10]]** metres of the psyker withers and dies. --?? $ARoll &gt;= 42 AND $ARoll &lt;= 44 ?? Spectral Gale|Howling winds erupt around the psyker. The psyker and anyone within **[[ [TXT] 4d10 ]]** metres of him must make an **Easy (+30) Agility or Strength Test** to avoid being knocked to the ground. --?? $ARoll &gt;= 45 AND $ARoll &lt;= 47 ?? Bloody Tears|Blood weeps from stone and wood within **[[ [TXT] 3d10 ]]** metres of the psyker. If there are any pictures or statues of people within this area, they appear to be crying blood. --?? $ARoll &gt;= 48 AND $ARoll &lt;= 50 ?? The Earth Protests|The ground suddenly shakes and everyone (including the psyker) within **[[ [TXT] 5d10 ]]** metres of the psyker must make a **Routine (+10) Agility Test** or be knocked down. --?? $ARoll &gt;= 51 AND $ARoll &lt;= 53 ?? Psy Discharge|Static Electricity fills the air within **[[ [TXT] 5d10 ]]** metres of the psyker, causing hair to stand on end and unprotected electrics to short out. The psyker is illuminated by eldritch light. --?? $ARoll &gt;= 54 AND $ARoll &lt;= 56 ?? Warp Ghosts|Ghostly apparitions fill the air within **[[ [TXT] 3d10 ]]** metres of the psyker, flying around and howling in pain for a few brief moments. Everyone within this area must test against **Fear (1).** --?? $ARoll &gt;= 57 AND $ARoll &lt;= 59 ?? Falling Upwards|Everything within **[[ [TXT] 2d10]]** metres of the psyker (including the psyker himself ) rises **[[ [TXT] 1d10]]** metres into the air as gravity briefly ceases. After a second or two, everything crashes back to earth. (Falling Damage) --?? $ARoll &gt;= 60 AND $ARoll &lt;= 62 ?? Banshee Howl|A shrill keening rings out across the immediate area, shattering glass and forcing every mortal creature able to hear it (including the psyker) to make a **Challenging (+0) Toughness Test** or be deafened for **[[ [TXT] 1d10 ]]** rounds. --?? $ARoll &gt;= 63 AND $ARoll &lt;= 65 ?? The Furies|The psyker is assailed by unseen horrors. He is slammed to the ground and suffers **[[ [TXT] 1d5 ]]** Wounds in damage (Toughness protects, but armour, unless warded does not). The psyker must test against **Fear (2).** --?? $ARoll &gt;= 66 AND $ARoll &lt;= 68 ?? Shadow of the Warp|For a split second the world changes in appearance and everyone within **[[ [TXT] 1d100 ]]** metres of the psyker has a mercifully brief glimpse of the shadow of the Warp. Everyone in the area (including the psyker) must make a **Difficult (–10) Willpower Test** or gain **[[ [TXT] 1d5 ]]** Insanity points. --?? $ARoll &gt;= 69 AND $ARoll &lt;= 71 ?? Tech Scorn|The machine spirits reject you’re the psyker’s unnatural ways. All unwarded tech devices within **[[ [TXT] 5d10 ]]** metres of the psyker malfunction momentarily, and all ranged weapons within this area **Jam.** Characters with cybernetic implants must pass a **Routine (+10) Toughness Test** or suffer **[[ [TXT] 1d5 ]]** damage. --?? $ARoll &gt;= 72 AND $ARoll &lt;= 74 ?? Warp Madness|A violent ripple of tainted discord causes all creatures within **[[ [TXT] 2d10 ]]** metres of the psyker (with the exception of the psyker himself ) to become Frenzied for **1** Round. Affected creatures gain **[[ [TXT] 1d5 ]]** Corruption Points unless they can pass a **Difficult (–10) Willpower Test.** --?? $ARoll &gt;= 75 ?? Perils of the Warp|The Warp opens in a maelstrom of energy. Make a roll on Perils -- }} !roll20AM --audio,play|Psychic Phenomena
Perils of the Warp !power {{ --hroll|[[ [$ARoll] 1d100 ]] --titlefontshadow|none --titlefont|Georgia --titlefontsize| 20px --orowbg|#D7BDE2 --erowbg|#D7BDE2 --corners|10 --format|Psy --name|Perils of the Warp --leftsub| The warp cracks open... --?? $ARoll &lt;= 5 ?? The Gibbering|The psyker screams in pain as uncontrolled warp energies surge through his unprotected mind. He must make a **Challenging (+0) Willpower Test** to avoid gaining **[[ [TXT] 1d5 + 1 ]]** Insanity Points and becoming Stunned for **[[ [TXT] 1d5 ]]** rounds. --?? $ARoll &gt;= 6 AND $ARoll &lt;= 9 ?? Warp Burn|A violent burst of energy from the Warp smashes into the psyker’s mind, sending him reeling. He suffers **[[ [TXT] 1d5 ]]** Wounds (not reduced by armour or Toughness) and is Stunned for **[[ [TXT] 1d5 ]]** Rounds. --?? $ARoll &gt;= 10 AND $ARoll &lt;= 13 ?? Psychic Concussion|With a crack of energy, the psyker is knocked unconscious for **[[ [TXT] 1d5 ]]** Rounds. Everyone within **[[ [TXT] 3d10 ]]** metres of the psyker must make a **Routine (+10) Willpower Test** or be Stunned for **1** Round. --?? $ARoll &gt;= 14 AND $ARoll &lt;= 18 ?? Psy-Blast|There is an explosion of power and the psyker is thrown **[[ [TXT] 1d10 ]]** metres into the air, falling to the ground. --?? $ARoll &gt;= 19 AND $ARoll &lt;= 24 ?? Soul Sear|Warp power courses through the psyker’s body, scorching his soul. The psyker cannot use any powers for **1** hour and gains **5** Corruption Points. --?? $ARoll &gt;= 25 AND $ARoll &lt;= 30 ?? Locked In|The power cages the psyker’s mind in an ethereal prison. The psyker falls to the ground in a catatonic state. Each Round thereafter, he must spend a Full Action and make a **Difficult (–10) Willpower Test.** On a success, his mind is freed and restored to his body. --?? $ARoll &gt;= 31 AND $ARoll &lt;= 38 ?? Chronological Incontinence|Time warps around the psyker. He winks out of existence and reappears in **[[ [TXT] 1d10 ]]** Rounds (or in 1 minute in narrative time). The psyker suffers **[[ [TXT] 1d5 ]]** Insanity Points and **[[ [TXT] 1d5 ]]** permanent Toughness damage. --?? $ARoll &gt;= 39 AND $ARoll &lt;= 46 ?? Psychic Mirror|The psyker’s power is turned back on him. Resolve the power’s effects as normal, but the power targets the psyker instead. If the power is beneficial, it instead deals **[[ [TXT] 1d10+5 ]]** Energy Damage to the psyker and the beneficial effect is cancelled. Armour is ignored by the damage unless it is warded.. --?? $ARoll &gt;= 47 AND $ARoll &lt;= 55 ?? Warp Whispers|The voices of Daemons fill the air within **[[ [TXT] 4d10 ]]** metres of the psyker, whispering terrible secrets and shocking truths. Everyone in the area (including the psyker) must make a **Hard (–20) Willpower Test** or gain **[[ [TXT] 1d10 ]] Corruption Points. --?? $ARoll &gt;= 56 AND $ARoll &lt;= 58 ?? Vice Versa|The psyker’s mind is thrown out of his body and into another nearby creature or person. The psyker and a random being within 50 metres of him (note that this cannot be a Daemon, Untouchable or other ‘soulless’ creature) swap consciousnesses for **[[ [TXT] 1d10 ]]** Rounds. The affected being may be an ally or even an enemy combatant. Each individual retains his Weapon Skill, Ballistic Skill, Intelligence, Perception, Willpower, and Fellowship during the swap, but all other Characteristics are the same as those of the new host body. If either body is slain, the effect ends immediately. Both affected individuals gain **[[ [TXT] 1d5 ]]** Insanity Points from the experience. If there are no beings within range, the psyker must make a Willpower Test or become catatonic for **[[ [TXT] 1d5 ]]** Rounds while his mind wanders the Warp. He gains **[[ [TXT] 2d10 ]]** Insanity Points from this journey. --?? $ARoll &gt;= 59 AND $ARoll &lt;= 67 ?? Rending the Veil|The air vibrates with images of cackling Daemons, and the kaleidoscopic taint of the Warp is rendered visible. All sentient creatures (including the psyker) within **[[ [TXT] 1d100 ]]** metres of the psyker must test against **Fear (3)**. This effect lasts for **[[ [TXT] 1d5 ]]** rounds. --?? $ARoll &gt;= 68 AND $ARoll &lt;= 72 ?? Blood Rain|A psychic storm of howling winds erupts, and a torrential rain of blood covers an area within **[[ [TXT] 5d10 ]]** metres of the psyker. Anyone within this area (including the psyker himself ) must pass a **Challenging (+0) Strength Test** or be knocked to the ground. If anyone uses Psychic Powers within this area, they automatically invoke a Perils of the Warp Test. The storm lasts for **[[ [TXT] 1d5 ]]** Rounds --?? $ARoll &gt;= 73 AND $ARoll &lt;= 78 ?? Cataclysmic Blast|The psyker’s power overloads, arcing out in great bolts of warp energy. Anyone within **[[ [TXT] 1d10 ]]** metres of the psyker (including the psyker himself ) takes **[[ [TXT] 1d10+5 ]]** Energy Damage. The psyker may use no further powers for **[[ [TXT] 1d5 ]]** hours after this event. --?? $ARoll &gt;= 79 AND $ARoll &lt;= 82 ?? A Hole in the World|A Vortex of Doom with a PR of **[[ [TXT] 2d10 ]]** springs into existence within **[[ [TXT] 1d10 ]]** metres of the psyker. It then begins to move randomly **[[ [TXT] 1d10 ]]** metres use the scatter diagram on page 248 for direction, devouring all in its path. The Vortex lasts for **[[ [TXT] 1d5 ]]** Rounds and then vanishes. --?? $ARoll &gt;= 83 AND $ARoll &lt;= 86 ?? Lost to the Warp|The psyker must make an immediate **Very Hard (–30) Willpower Test**. If he fails, he is immediately dragged into the Warp by a Daemon, which possesses him and uses his body for vile purposes. The psyker appears on an inhabited planet **[[ [TXT] 1d10 ]]** weeks later with dim memories of the horrific acts he has performed while possessed. He gains **[[ [TXT] 4d10 ]]** Corruption Points, and may experience complications caused by his actions while possessed. He may receive a visit from the Inquisition if his fate becomes known to that organisation. From now on, the psyker must adjust all Perils of the Warp checks by **+10** due to his body serving as a conduit for blasphemous forces. --?? $ARoll &gt;= 87 AND $ARoll &lt;= 90 ?? Reality Quake|Reality buckles around the psyker, and an area within **[[ [TXT] 3d10 ]]** metres of him is sundered. Solid objects alternately rot, burn, and freeze, and everyone and everything in the area takes **[[ [TXT] 2d10 ]]** Rending damage. Warded objects and Untouchables suffer half the damage rolled. --?? $ARoll &gt;= 91 AND $ARoll &lt;= 99 ?? Something is Coming...|With a blood curdling howl, a Daemon Prince rips into existence within **[[ [TXT] 3d10 ]]** metres of the psyker. It detests the psyker and trains its attacks on the fool that unwittingly summoned it. Only its destruction or the death of the psyker will send it back to the Warp. --?? $ARoll &gt;= 100 ?? Destruction|The psyker is immediately and irrevocably destroyed. He is either sucked screaming into the Warp, never to be seen again, or consumed utterly by hellfire. The GM may rule that there is a 50% chance that a Daemon Prince appears in the psyker’s place. -- }} !roll20AM --audio,play|Perils of the Warp Shock Table !power {{ --hroll|[[ [$ARoll] 1d100 +?{Modifier|0}]] --titlefontshadow|none --titlefont|Georgia --titlefontsize| 20px --orowbg|#D7BDE2 --erowbg|#D7BDE2 --corners|10 --format|Psy --name|Shock Table --leftsub| And they shall know no fear... --?? $ARoll &gt;= 1 AND $ARoll &lt;= 20 ?? !|@{target|token_name} is badly startled. He may only take a single Half Action during his next Turn, but afterward he may act normally. --?? $ARoll &gt;= 21 AND $ARoll &lt;= 40 ?? !|Fear grips @{target|token_name} and he begins to shake and tremble. He is at a –10 penalty on all tests for the rest of the encounter unless he can recover his wits (see Shock and Snapping Out of it, page 278) --?? $ARoll &gt;= 41 AND $ARoll &lt;= 60 ?? !|Reeling with shock, @{target|token_name} backs away from the thing that confronts him. The character cannot willingly approach the object of his Fear, but may otherwise act normally, with a –10 penalty on all tests until the end of the encounter --?? $ARoll &gt;= 61 AND $ARoll &lt;= 80 ?? !|@{target|token_name} is frozen by terror. He may take no Actions until he snaps out of it. After snapping out of it, the character makes all tests with a –10 penalty for the rest of the encounter --?? $ARoll &gt;= 81 AND $ARoll &lt;= 100 ?? !|Panic grips @{target|token_name}. He must flee the source of his fear, if able, as fast as he can, and if prevented from doing so may only take Half Actions and is at a –20 penalty to all tests. Once away from the danger, he must successfully Snap Out of It (see Shock and Snapping Out of it, page 278) to regain control --?? $ARoll &gt;= 101 AND $ARoll &lt;= 120 ?? !|Fainting dead away, @{target|token_name} keels over and remains unconscious for [[ [TXT] 1d5]] Rounds. Once he regains consciousness, he is still shaken and takes all tests with a –10 penalty until the end of the encounter --?? $ARoll &gt;= 121 AND $ARoll &lt;= 130 ?? !|Totally overcome, @{target|token_name} screams and vomits uncontrollably for [[ [TXT] 1d5]] Rounds. During this time, he may do nothing and drops anything he is holding. Afterward, until the end of the encounter, the character may only take a single Half Action each Turn until he can rest. --?? $ARoll &gt;= 131 AND $ARoll &lt;= 140 ?? !|@{target|token_name} laughs hysterically and randomly attacks anything near him in a manic frenzy, fring wildly or using whatever weapon he has in hand. This effect lasts until the character Snaps Out of It, or until he is knocked unconscious. --?? $ARoll &gt;= 141 AND $ARoll &lt;= 160 ?? !|@{target|token_name} crumples to the ground for [[ [TXT] 1d5+1]] Rounds sobbing, babbling, and tearing at his own flesh, and may do nothing. Even after he returns to his senses, he is a complete mess and suffers a –20 penalty on all tests until the end of the encounter --?? $ARoll &gt;= 161 AND $ARoll &lt;= 170 ?? !| @{target|token_name}’s mind snaps and he become catatonic for [[ [TXT] 1d5]] hours and may not be roused. --?? $ARoll &gt;= 171 ?? !|@{target|token_name} is so over come with fear that his heart stops. He must make a Challenging (+0) Toughness or die. If successful, his mind snaps and he become catatonic for [[ [TXT] 1d5]] hours and may not be roused. }}
And finally the Hit Location table I have been using is an actual roll-able table that you need to create. Pretty easily done. Just need to add the Body Parts and set the appropriate weight for each one so they can be randomly selected. If you need any help with this feel free to ask! Also anything else that anyone has questions about shoot me a message, I am no expert but I will help if I can! Cheers!
And I finished my Grapple Macros! They are not perfect as you can only win if you pass your Strength Test and the Opponent Fails theirs instead of checking to see how much you failed by and comparing it to how much they failed by and if you failed by less then you can win that way too but oh well, its good enough for me! Grapple Attack !Power {{ --name|@{selected|token_name} is attempting to grapple @{target|token_name}! --inlinereplace|WS|@{selected|WS} --inlinereplace|Modifier|?{Modifier|0} --inlinereplace|AType|?{Attack Type|Standard (+10),[Standard] 10| Charge (+20),[Charge] 20} --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --leftsub|Grapple --rightsub|~AType$ --soundfx|_audio,play,nomenu|MK - GET OVER HERE! --Attack| [[ [$Atk] 1D100 ]] vs **Weapon Skill** [#[ [$Def] 0d0 + ~WS$ + ~Modifier$ + ~AType$ ]#] --Reaction| [[ [$Agt] 1D100 ]] vs **Agility test** [[ [$Tgt] 0d0 + @{target|Ag} +?{Difficulty|-0}]] -- ?? $Atk == 100 OR $Atk.total &gt; $Def.total ?? !Miss|@{selected|token_name} missed. -- ?? $Atk == 100 or $Atk.total &gt; $Def.total ?? audioattr *2|@{selected|token_id} AudioOnMiss -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total AND $Agt == 1 OR $Agt.total &lt;= $Tgt.total ?? Failure:|@{target|token_name} dodges @{selected|token_name}'s attack! -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total AND $Agt == 100 OR $Agt.total &gt; $Tgt.total ?? Success:|@{selected|token_name} is now Grappling with @{target|token_name}! }} Grapple Damage !Power {{ --name|@{selected|token_name} is attempting to use one of their sweet wrestling moves on @{target|token_name}! --inlinereplace|Ss|(floor(@{selected|s}/10)) --inlinereplace|Tt|(floor(@{target|T}/10)) --inlinereplace|Stg|[[0d0 + @{selected|s}]] --inlinereplace|Ost|[[0d0 + @{target|s}]] --inlinereplace|Modifier|?{Your Difficulty|0} --inlinereplace|Mod|?{Opponents Difficulty|0} --inlinereplace|Called Shot|?{Called Shot | Head, Head| Right Arm, Right Arm| Left Arm, Left Arm| Body, Body| Right Leg, Right Leg| Left Leg, Left Leg} --inlinereplace|Head|[[ 0d0 + @{target|Headarmourvalue}*2 ]] --inlinereplace|Larm|[[ 0d0 + @{target|LeftArmarmourvalue}*2 ]] --inlinereplace|Rarm|[[ 0d0 + @{target|RightArmarmourvalue}*2 ]] --inlinereplace|Body|[[ 0d0 + @{target|Bodyarmourvalue}*2 ]] --inlinereplace|Lleg|[[ 0d0 + @{target|LeftLegarmourvalue}*2 ]] --inlinereplace|Rleg|[[ 0d0 + @{target|RightLegarmourvalue}*2 ]] --inlinereplace|Hloc|[#[ [$Hit] 0d0 + ?{Hit Location | Head, ~Head$| Right Arm, ~Rarm$| Left Arm, ~Larm$| Body, ~Body$| Right Leg, ~Rleg$| Left Leg, ~Lleg$} ]#] --inlinereplace|Dam|[[1d5-3]] --tokenid|@{selected|token_id} --target_list|@{target|token_id} --emote|VS --leftsub|Opposed Strength Test --soundfx|_audio,play,nomenu|Wrestling Ring Bell --audioattr *1|@{selected|token_id} AudioOnAttack --audioattr *2|@{target|token_id} AudioOnAttack --Attack| [[ [$Atk] 1D100 ]] vs **Strength** [#[ [$Def] 0d0 + ~Stg$ + ~Modifier$ ]#] --Defense| [[ [$Agt] 1D100 ]] vs **Strength** [#[ [$Tgt] 0d0 + ~Ost$ + ~Mod$ ]#] -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total AND $Agt == 100 OR $Agt.total &gt; $Tgt.total ?? Success:|@{target|token_name} takes [#[ [$Crt] 0d0 + ~Dam$ + ~Ss$ - ~Tt$ - ~Hloc$ ]#] **Impact** Damage to the ~Called Shot$ and **1** level of Fatigue! -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total AND $Agt == 1 OR $Agt.total &lt;= $Tgt.total ?? Tie:|@{target|token_name} and @{selected|token_name} are at a standoff and still locked in Mortal Kombat! -- ?? $Atk == 100 OR $Atk.total &gt; $Def.total AND $Agt == 1 OR $Agt.total &lt;= $Tgt.total ?? Failure:|@{target|token_name} overpowers @{selected|token_name} and is now in control of the Grapple! -- ?? $Atk == 100 OR $Atk.total &gt; $Def.total AND $Agt == 100 OR $Agt.total &gt; $Tgt.total ?? Tie:|@{target|token_name} and @{selected|token_name} are at a standoff and still locked in Mortal Kombat! -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total AND $Agt == 100 OR $Agt.total &gt; $Tgt.total ?? audioattr *3|@{target|token_id} AudioOnHurt -- ?? $Atk == 1 OR $Atk.total &lt;= $Def.total AND $Agt == 100 OR $Agt.total &gt; $Tgt.total ?? vfxattr *1|@{target|token_id} EffectOnHurt }}