Here ya go! !mob-attack [[@{selected|strength_mod}+@{selected|pb}-@{target|ac}]] on('ready',function(){
"use strict";
var mobLookup=function(num){
switch(parseInt(num,10)){
case 1:
case 2:
case 3:
case 4:
case 5:
return 1;
case 6:
case 7:
case 8:
case 9:
case 10:
case 11:
case 12:
return 2;
case 13:
case 14:
return 3;
case 15:
case 16:
return 4;
case 17:
case 18:
return 5;
case 19:
return 10;
case 20:
return 20;
default:
return 0;
}
};
on('chat:message',function(msg){
var args,cmds,who,number;
if('api' === msg.type && msg.content.match(/^!mob-attack\b/) && playerIsGM(msg.playerid) ){
if(_.has(msg,'inlinerolls')){
msg.content = _.chain(msg.inlinerolls)
.reduce(function(m,v,k){
var ti=_.reduce(v.results.rolls,function(m2,v2){
if(_.has(v2,'table')){
m2.push(_.reduce(v2.results,function(m3,v3){
m3.push(v3.tableItem.name);
return m3;
},[]).join(', '));
}
return m2;
},[]).join(', ');
m['$[['+k+']]']= (ti.length && ti) || v.results.total || 0;
return m;
},{})
.reduce(function(m,v,k){
return m.replace(k,v);
},msg.content)
.value();
}
args = msg.content.split(/\s+/);
args.shift();
number=args.shift();
who=getObj('player',msg.playerid).get('_displayname');
sendChat('Mob-Attack',`/w "${who}" <div style="padding:1px 3px;border: 1px solid #8B4513;background: #eeffee; color: #8B4513; font-size: 80%;"><div style="background-color: #ffeeee;">Every ${mobLookup(number)} enemies is a hit.</div></div>`);
}
});
});
Here's an updated Macro from NeilGiraffeTyson : !mob-attack [[@{target|Defender|ac}-[[[[{@{target|Attackers|dexterity_mod},@{target|Attackers|strength_mod}}KH1]]+ @{target|Attackers|pb}]]]] It fixes cases where negative numbers would come up in the prior macro.