matthileo

Matt's Newbot Macro Setup v3

Aug 13th, 2016
195
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. HELPER FUNCTIONS AND CORE MACROS
  2. Copy and paste the following, each one at a time, until you get to the section labeled SETUP FIRST CHARACTER. Once you reach that section, customize the two listed commands for your character.
  3.  
  4. --------------------------------------------------
  5.  
  6. $$ echo("HELPER FUNCTIONS...");
  7. user.getNext=function(a,b){var c=args.indexOf(a);return c>=0&&c!=args.length-1?args[c+1]:b},user.setupArgs=function(a){var b=[];for(var c in a)a[c].startsWith("$time")?b.push(getTime(a[c])):b.push(replaceString(a[c]));return b},user.replaceString=function(a){var b="";return a.startsWith("$")?b=user.strings[a.substr(1)]:a},user.getTime=function(a){var b=0,c="m",e=new Date,f=new Date,g="",h=!1;switch(b=a.split(":")[1],c=a.split(":")[2]){case"s":f=f.setSeconds(e.getSeconds()+parseInt(b)),h=b>=86400;break;case"m":f=f.setMinutes(e.getMinutes()+parseInt(b)),h=b>=1440;break;case"h":f=f.setHours(e.getHours()+parseInt(b)),h=b>=24;break;case"d":f=f.setHours(e.getHours()+24*parseInt(b)),h=!0}var i={hour:"2-digit",minute:"2-digit"};return i.timeZone="America/Los_Angeles",i.timeZoneName="short",d=new Date,d.setTime(f),strOldDate=e.toLocaleDateString("en-US",i).split(", ")[0],strNewDate=d.toLocaleDateString("en-US",i).split(", ")[0],strNewTime=d.toLocaleTimeString("en-US",i).split(", ")[1],g+=strNewTime,h&&(g+=" "+strNewDate),g},user.getDieRoll=function(a){var b=0;for(var c in a.tokens[0].rolls){var d=a.tokens[0].rolls[c];d.kept&&(b=d.keptValue)}return b},user.addString=function(){var a=setupArgs(arguments),b=a[0],c=a[1];return b&&c?(user.strings[b]=c,void echo("`"+user.strings[b]+"` has been added to your list of strings.\n")):0};
  8. echo("DONE.");
  9.  
  10. --------------------------------------------------
  11.  
  12. $$ echo("STATUS...");
  13. user.status=function(){args=setupArgs(Array.from(arguments));var a=getNext("-character",user.currentCharacter);character=user.characters[a];var b=getNext("-hp");"reset"==b?character.sheet.hp=character.sheet.maxHP:b&&(character.sheet.hp=parseInt(character.sheet.hp)+parseInt(b));var c=getNext("-spell");c&&(character.status.concentration.name=c);var d=getNext("-effect");d&&(character.status.concentration.effect=d);var e=getNext("-target");e&&(character.status.concentration.target=e);var f=getNext("-ends");f&&(character.status.concentration.ends=f);for(idx in args)"-condition"==args[idx]?(idx=parseInt(idx),character.status.conditions||(character.status.conditions={}),character.status.conditions[args[idx+1]]||(character.status.conditions[args[idx+1]]=[]),"ends"==args[idx+2]&&(character.status.conditions[args[idx+1]].ends=args[idx+3]),"effect"==args[idx+2]&&(character.status.conditions[args[idx+1]].effect=args[idx+3]),"ends"==args[idx+4]&&"effect"==args[idx+2]&&(character.status.conditions[args[idx+1]].ends=args[idx+5]),"effect"==args[idx+4]&&"ends"==args[idx+2]&&(character.status.conditions[args[idx+1]].effect=args[idx+5])):"-clear"==args[idx]&&delete character.status.conditions[args[parseInt(idx)+1]];var g=getNext("-stealth");g&&(character.status.stealth=g);var h=getNext("-pos");if(h&&(character.status.position=h),inArguments(args,"clear")){if(inArguments(args,"spell"))for(idx in character.status.concentration)character.status.concentration[idx]="none";inArguments(args,"conditions")&&(character.status.conditions={}),character.status.stealth="none",character.status.position="Outside Combat"}inArguments(args,"silent")||displayStatus(),inArguments(args,"update")&&updateStatus()};
  14. echo("DONE.");
  15.  
  16. --------------------------------------------------
  17.  
  18. $$ echo("STATUS DISPLAY...");
  19. user.displayStatus=function(){var a=[];echo("```"+character.sheet.name+"'s Status```"),echo("**Hit Points: **"+character.sheet.hp+"/"+character.sheet.maxHP+"\n"),echo("**Position: **"+character.status.position+"\n");for(condition in character.status.conditions)conditionString="",character.status.conditions[condition].ends&&character.status.conditions[condition].effect?conditionString+=character.status.conditions[condition].effect+" (Ends "+character.status.conditions[condition].ends+")":character.status.conditions[condition].ends?conditionString+=" Ends "+character.status.conditions[condition].ends:character.status.conditions[condition].effect&&(conditionString+=character.status.conditions[condition].effect),character.status.conditions[condition].ends||character.status.conditions[condition].effect?echo("**"+condition+": **"+conditionString+"\n"):a.push(condition);a.length>0&&echo("**Conditions:** "+a.join(", ")+"\n"),"none"!=character.status.stealth&&echo("**Stealth: **"+character.status.stealth+"\n"),"none"!=character.status.concentration.name&&(spellstring="**Concentration: **"+character.status.concentration.name,"none"!=character.status.concentration.effect&&(spellstring+=" ["+character.status.concentration.effect+"]"),"none"!=character.status.concentration.target&&(spellstring+=" on "+character.status.concentration.target),"none"!=character.status.concentration.ends&&(spellstring+=" (Ends "+character.status.concentration.ends+")"),echo(spellstring+"\n")),inArguments(args,"end")&&echo("```END TURN```")};
  20. echo("DONE.");
  21.  
  22. --------------------------------------------------
  23.  
  24. $$ echo("CHARACTER SETUP...");
  25. user.setup=function(){user.characters||(user.characters=[]),args=setupArgs(arguments),user.strings||(user.strings=[]),user.properText={dex:"Dexterity",str:"Strength",con:"Constitution",int:"Intelligence",wis:"Wisdom",cha:"Charisma",death:"Death"};var a=getNext("-name"),b=getNext("-hp"),c=getNext("-skills");c&&(c=c.split(","));var d=getNext("-expertise");d&&(d=d.split(","));var e=getNext("-saves");e&&(e=e.split(","));var f=getNext("-classes");f&&(f=f.split(","));var g=getNext("-str",10),h=getNext("-dex",10),i=getNext("-con",10),j=getNext("-int",10),k=getNext("-wis",10),l=getNext("-cha",10);if(a){if(user.characters[a]||(user.characters[a]=[],user.characters[a].sheet=new Character("5e",a,{str:g,dex:h,con:i,int:j,wis:k,cha:l}),user.characters[a].sheet.name=a,user.characters[a].skills={acrobatics:"",animal:"",arcana:"",athletics:"",deception:"",history:"",insight:"",intimidation:"",investigation:"",medicine:"",nature:"",perception:"",performance:"",persuasion:"",religion:"",sleight:"",stealth:"",survival:"",initiative:"",bonus:0},user.characters[a].saves={str:"",dex:"",con:"",int:"",wis:"",cha:"",death:"",bonus:0},user.characters[a].sheet.classes=[],user.characters[a].lastAttack=[],user.characters[a].lastSave=[],user.characters[a].lastCheck=[],user.characters[a].features=[],user.strings=[],user.characters[a].sheet.hp=0,user.characters[a].status=[],user.characters[a].status.concentration=[],user.characters[a].status.conditions={},statusArgs=["-character",a,"silent","-pos","Outside Combat","-stealth","none","-spell","none","-target","none","-effect","none","-ends","none"],status.apply(this,statusArgs)),c)for(idx in c)user.characters[a].skills[c[idx]]="prof";if(d)for(idx in d)user.characters[a].skills[d[idx]]="exp";if(e)for(idx in e)user.characters[a].saves[e[idx]]="prof";if(f)for(idx in f)user.characters[a].sheet.classes.push(f[idx]);b&&(user.characters[a].sheet.maxHP=b)}else echo("\n**INVALID INPUT.**\n")};
  26. echo("DONE.");
  27.  
  28. --------------------------------------------------
  29.  
  30. $$ echo("CHARACTER MACROS...");
  31. user.list=function(){echo("```Characters```");for(idx in user.characters){charString="**"+idx+":** "+user.characters[idx].sheet.hp+"/"+user.characters[idx].sheet.maxHP;for(condition in user.characters[idx].status.conditions)""!=charString&&(charString+=", "),charString+=condition;"none"!=user.characters[idx].status.concentration.name&&(""!=charString&&(charString+=", "),charString+="Concentrating on "+user.characters[idx].status.concentration.name),"none"!=user.characters[idx].status.stealth&&(""!=charString&&(charString+=", "),charString+=user.characters[idx].status.stealth+" Stealth"),echo(charString+"\n")}},user.sheet=function(){args=setupArgs(arguments);var a;a=args[0]?user.characters[args[0]]:user.characters[user.currentCharacter],echo("```"+a.sheet.name+"'s Character Sheet```");for(var b in a.sheet)user.properText[b]?echo("**"+user.properText[b]+":** "+a.sheet[b]+"\n"):"proficiencyBonus"==b?echo("**Proficiency Bonus:** +"+a.sheet[b]+"\n"):"hp"==b&&echo("**Hit Points:** "+a.sheet.hp+"/"+a.sheet.maxHP+"\n");echo("**Skills:** ");for(var b in a.skills)"prof"==a.skills[b]?echo(b+", "):"exp"==a.skills[b]&&echo(b+"[e], ")},user.character=function(){args=setupArgs(arguments),""!=args[0]?user.characters[args[0]]?(echo("Switching from `"+user.currentCharacter+"` to `"+args[0]+"`.\n"),user.currentCharacter=args[0]):echo("No character named `"+args[0]+"` exists...\n"):echo("You must enter a character name...\n")};
  32. echo("DONE.");
  33.  
  34.  
  35. --------------------------------------------------
  36.  
  37. $$ echo("ATTACK...");
  38. user.a=function(){args=setupArgs(Array.from(arguments)),character=user.characters[user.currentCharacter];for(var a=inArguments(args,"summary"),b=[],c=getNext("-t"),d=getNext("-ac",0),e=getNext("-ab"),f=getNext("-db"),g=getNext("-phrase",""),h=getNext("-rr",1),i=0,j=0,k=0;k<h;k++){var l="",m="",n="",o={dieCount:0,dieSize:20,diceMod:"",modifier:0},p=[],q=[];for(var r in args){var s=args[r];"function"==typeof character.attacks[s]&&character.attacks[s](q,o),"function"==typeof character.attackModifiers[s]&&character.attackModifiers[s](o),"function"==typeof character.damageModifiers[s]&&character.damageModifiers[s](p)}var t="",u=o.dieCount+"d"+o.dieSize+o.diceMod+" + "+o.modifier;e&&(u+="+"+e);var v=roll(u),w=v.plain>=d;if(0==o.dieCount){v="";var x=inArguments(args,"crit")}else{var y=getDieRoll(v),x=20==y||inArguments(args,"crit"),z=20==y;z&&(w=!0)}1==y&&(w=!1);for(var r in q){if(r>0)break;var A=q[r],B=A.dieCount;x&&(B*=2),t&&(A.dieCount||A.modifier)&&(t+="+"),A.dieCount&&(t+=B+"d"+A.dieSize),A.modifier&&A.dieCount&&(t+="+"),A.modifier&&(t+=A.modifier),A.comment&&(t+="["+A.comment+"]"),A.phrase&&(l=A.phrase),A.effect&&""!=m&&(m+="\n"),A.effect&&(m+=A.effect),A.icon&&(n+=A.icon)}for(var r in p)if(!p[r].useOnce&&!p[r].onCrit||(p[r].useOnce&&x&&w||p[r].useOnce&&!p[r].onCrit&&w||p[r].onCrit&&k==h-1&&w&&h>1&&p[r].useOnce||!p[r].useOnce&&p[r].onCrit&&x)&&b.indexOf(p[r].comment)==-1){var A=p[r],B=A.dieCount;x&&(B*=2),t&&(A.dieCount||A.modifier)&&(t+="+"),A.dieCount&&(t+=B+"d"+A.dieSize),A.modifier&&A.dieCount&&(t+="+"),A.modifier&&(t+=A.modifier),A.comment&&(A.dieCount>0||A.modifier>0)&&(t+="["+A.comment+"]"),A.phrase&&!a&&(l=A.phrase),A.effect&&""!=m&&(m+="\n"),A.effect&&(m+=A.effect),A.icon&&(n+=A.icon),A.useOnce&&b.push(A.comment)}""!=g&&(l=g),f&&(t+="+"+f);var C=roll(t);w&&(i+=C.plain),character.lastAttack.phrase=l,character.lastAttack.toHit=v,character.lastAttack.damage=C,j=formatAttack(v,C,w,x,l,m,c,a,h,i,k,j,n,!1)}return i};
  39. echo("DONE.");
  40.  
  41. --------------------------------------------------
  42.  
  43. $$ echo("DISPLAY ATTACK...");
  44. user.formatAttack=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n){var o="";return h&&0==k&&(n?echo("\n*"+n+" "+e+" "+i+" times"):echo("\n*"+user.characters[user.currentCharacter].sheet.name+" "+e+" "+i+" times"),g&&echo(" at "+g),echo(".*\n")),c?l++:echo("~~"),h?(o+="Attack "+(k+1)+": "+a.simple+" to hit, "+b.simple+" damage.",""!=m&&(o+=" "+m),d&&(o+=" :crossed_swords:"),echo(o)):(e&&(echo("\n"),n?stringPhrase="*"+n+" "+e:stringPhrase="*"+user.characters[user.currentCharacter].sheet.name+" "+e,g&&(stringPhrase+=" at "+g),d&&(stringPhrase+=" and scores a CRITICAL HIT"),stringPhrase+="!*",echo(stringPhrase)),a&&(echo("\n"),echo("**To Hit:** "+a.string)),b.tokens.length>0&&(echo("\n"),echo("**Damage: **"+b.string)),""!=f&&(echo("\n"),g?echo(f.split("Target").join(g)):echo(f))),c||echo("~~"),i>1&&echo("\n"),k>=i-1&&(h||echo("\n"),i>1&&echo("**Total Damage:** "+j+"\n"),i>1&&h&&""!=f&&l>0&&(g?echo(f.split("Target").join(g).split("Effect:").join("Effect (x"+l+"):")):echo(f.split("Effect:").join("Effect (x"+l+"):")),i>1&&echo("\n"))),l};
  45. echo("DONE.");
  46.  
  47. --------------------------------------------------
  48.  
  49. $$ echo("ABILITY CHECK...");
  50. user.check=function(){args=setupArgs(Array.from(arguments));var a=user.characters[user.currentCharacter],b=a.sheet.proficiencyBonus,c=a.features["Jack of all Trades"]||inArguments(args,"bard"),d=inArguments(args,"save"),e=(a.features["Reliable Talent"]||inArguments(args,"reliable"))&&(inArguments(args,"prof")||inArguments(args,"exp")),f=inArguments(args,"summary"),g=0,h=1,i="",j="",k=getNext("-l"),l=getNext("-phrase"),m=getNext("-csphrase"),n=getNext("-cfphrase"),o=getNext("-failphrase"),p=getNext("-dc");p||(p=0);for(var q in args)a.sheet[args[q]+"Mod"]&&(g+=a.sheet[args[q]+"Mod"],j+=args[q]);inArguments(args,"exp")?g+="+"+2*b:inArguments(args,"prof")?g+="+"+b:c&&!d&&(g+="+"+Math.floor(b/2)),inArguments(args,"adv")&&!inArguments(args,"dis")?(h=2,i="-H"):inArguments(args,"dis")&&!inArguments(args,"adv")&&(h=2,i="-L");var r=getNext("-mb");r&&(g+="+"+r);var s=h+"d20"+i+" + "+g;inArguments(args,"bless")?s+=" + 1d4[Bless]":inArguments(args,"guide")&&(s+=" + 1d4[Guidance]"),additionalBonus=getNext("-b"),additionalBonus&&(s+="+"+additionalBonus),abilityCheck=roll(s);var t=0;for(var q in abilityCheck.tokens[0].rolls){var u=abilityCheck.tokens[0].rolls[q];u.kept&&(t=u.keptValue)}var v=20==t,w=1==t,x="```"+a.sheet.name+" rolling ";return f&&(x="**"),k?x+=k:j?(x+=user.properText[j],inArguments(args,"prof")?x+=" with proficiency":inArguments(args,"exp")&&(x+=" with expertise")):x+="a check",x+=f?":** ":"...```",inArguments(args,"silent")||(echo("\n"),echo(x),e&&t<10&&echo("~~"),echo(abilityCheck.string+"\n"),e&&t<10&&echo("~~"),e&&t<10&&(echo("`"+(abilityCheck.plain-t+10)+"` with Reliable Talent!\n"),abilityCheck=roll(abilityCheck.plain-t+10)),m&&v&&abilityCheck.plain>=p?echo("*"+m+"*\n"):n&&w?echo("*"+n+"*\n"):o&&abilityCheck.plain<p?echo("*"+o+"*\n"):l&&echo("*"+l+"*\n")),d?(a.lastSave.label=k,a.lastSave.roll=abilityCheck):(a.lastCheck.label=k,a.lastCheck.roll=abilityCheck),abilityCheck.plain};
  51. echo("DONE.");
  52.  
  53. --------------------------------------------------
  54.  
  55. $$ echo("SAVING THROW...");
  56. user.save=function(){var a=Array.from(arguments);character=user.characters[user.currentCharacter],saveBonus=character.saves.bonus;for(var b in a){if(character.sheet[a[b]]){stat=a[b];break}"death"==a[b]&&(stat="death")}return user.properText[stat]&&(properStat=user.properText[stat]),inArguments(a,"summary")?checkArgs=["save","-l",properStat+" Save"]:checkArgs=["save","-l","a(n) "+properStat+" saving throw"],character.saves[stat]&&checkArgs.push(character.saves[stat]),0!=saveBonus&&(checkArgs=checkArgs.concat(["-mb",saveBonus.toString()])),checkArgs=checkArgs.concat(a),result=check.apply(this,checkArgs),result};
  57. echo("DONE.");
  58.  
  59. --------------------------------------------------
  60.  
  61. $$ echo("SKILLS (GROUP 1)...");
  62. user.acrobatics = function(){args = [user.characters[user.currentCharacter].skills["acrobatics"],"dex", "-l", "Acrobatics"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  63. user.animal = function(){args = [user.characters[user.currentCharacter].skills["animal"],"wis", "-l", "Animal Handling"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  64. user.arcana = function(){args = [user.characters[user.currentCharacter].skills["arcana"],"int", "-l", "Arcana"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  65. user.athletics = function(){args = [user.characters[user.currentCharacter].skills["athletics"],"str", "-l", "Athletics"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  66. user.deception = function(){args = [user.characters[user.currentCharacter].skills["deception"],"cha", "-l", "Deception"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  67. user.history = function(){args = [user.characters[user.currentCharacter].skills["history"],"int", "-l", "History"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  68. echo("DONE.");
  69.  
  70. --------------------------------------------------
  71.  
  72. $$ echo("SKILLS (GROUP 2)...");
  73. user.insight = function(){args = [user.characters[user.currentCharacter].skills["insight"],"wis", "-l", "Insight"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  74. user.intimidation = function(){args = [user.characters[user.currentCharacter].skills["intimidation"],"cha", "-l", "Intimidation"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  75. user.investigation = function(){args = [user.characters[user.currentCharacter].skills["investigation"],"int", "-l", "Investigation"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  76. user.medicine = function(){args = [user.characters[user.currentCharacter].skills["medicine"],"wis", "-l", "Medicine"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  77. user.nature = function(){args = [user.characters[user.currentCharacter].skills["nature"],"int", "-l", "Nature"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  78. user.perception = function(){args = [user.characters[user.currentCharacter].skills["perception"],"wis", "-l", "Perception"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  79. user.performance = function(){args = [user.characters[user.currentCharacter].skills["performance"],"cha", "-l", "Performance"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  80. user.persuasion = function(){args = [user.characters[user.currentCharacter].skills["persuasion"],"cha", "-l", "Persuasion"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  81. echo("DONE.");
  82.  
  83. --------------------------------------------------
  84.  
  85. $$ echo("SKILLS (GROUP 3)...");
  86. user.religion = function(){args = [user.characters[user.currentCharacter].skills["religion"],"int", "-l", "Religion"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  87. user.sleight = function(){args = [user.characters[user.currentCharacter].skills["sleight"],"dex", "-l", "Sleight of Hand"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  88. user.stealth = function()
  89. {
  90.     args = [user.characters[user.currentCharacter].skills["stealth"],"dex", "-l", "Stealth"];
  91.     args=args.concat(Array.from(arguments));
  92.     var result = check.apply(this,args);
  93.    
  94.     args = ["-stealth",result.toString(), "silent"];
  95.     args=args.concat(Array.from(arguments))
  96.     status.apply(this,args);
  97.     return result;
  98. }
  99. user.survival = function(){args = [user.characters[user.currentCharacter].skills["survival"],"wis", "-l", "Survival"]; args=args.concat(Array.from(arguments)); var result = check.apply(this,args); return result;}
  100. echo("DONE.");
  101.  
  102. --------------------------------------------------
  103.  
  104. $$ echo("INITIATIVE...");
  105. user.init = function()
  106. {
  107.     args = [user.characters[user.currentCharacter].skills["initiative"],"dex", "-l", "Initiative"];
  108.     mbString = "";
  109.     if (user.characters[user.currentCharacter].features["Rakish Audacity"])
  110.     {
  111.         if (mbString!="") mbString+="+";
  112.         mbString += user.characters[user.currentCharacter].sheet.chaMod + "[Rakish Audacity]";
  113.         args.push("-phrase", "\"I am the only one able to take the lead in this battle!\"");
  114.     }
  115.     if (user.characters[user.currentCharacter].features["Alert"])
  116.     {
  117.         if (mbString!="") mbString+="+";
  118.         mbString += 5 + "[Alert]";
  119.     }
  120.    
  121.     if (mbString!="") args.push("-mb", mbString);
  122.    
  123.     args=args.concat(Array.from(arguments));
  124.     var result = check.apply(this,args);
  125.     return result;
  126. }
  127. echo("DONE.");
  128.  
  129. --------------------------------------------------
  130.  
  131. SETUP FIRST CHARACTER
  132.  
  133. NOTE: The following are commands. Replace the information below with information on the character you are creating!
  134.  
  135. Setting your class levels is a little weird. You must include each class once for each level you have in it, for example a 3rd level rogue, 1st level ranger would do <-classes Rogue,Rogue,Rogue,Ranger>
  136.  
  137. $setup -name CharacterName -hp MaxHP -str 18 -dex 10 -con 18 -int 12 -wis 9 -cha 20 -skills athletics,acrobatics,animal,sleight -expertise arcana,stealth -saves dex,int -classes Class1,Class1,Class1,Class2,Class2
  138.  
  139. $character CharacterName
  140.  
  141. --------------------------------------------------
  142.  
  143. THE FOLLOWING ARE MACROS FOR YOUR CHARACTERS ATTACKS. THEY MUST BE CUSTOMIZED FOR YOUR CHARACTER, AND WILL BE APPLIED TO YOUR CURRENTLY SELECTED CHARACTER
  144. You should make a copy of each of these Macros, for each of your characters, and save them on your computer.
  145.  
  146. --------------------------------------------------
  147.  
  148. $$ character=user.characters[user.currentCharacter];
  149. character.attacks = {
  150.     longsword: function(damage,toHit) {
  151.         damage.push(
  152.             {
  153.                 dieCount: 1,
  154.                 dieSize: 8,
  155.                 modifier: character.sheet.strMod,
  156.                 comment: 'Slashing',
  157.                 phrase: 'slashes with his longssword'
  158.             }
  159.         )
  160.         toHit.dieCount=1;
  161.         toHit.modifier = character.sheet.strMod + character.sheet.proficiencyBonus;
  162.     },
  163.     longbow: function(damage,toHit) {
  164.         damage.push(
  165.             {
  166.                 dieCount: 1,
  167.                 dieSize: 8,
  168.                 modifier:character.sheet.dexMod ,
  169.                 comment: 'Piercing',
  170.                 phrase: 'fires an arrow'
  171.             }
  172.         )
  173.         toHit.dieCount=1;
  174.         toHit.modifier = character.sheet.dexMod + character.sheet.proficiencyBonus;
  175.     },
  176.     chilltouch: function(damage,toHit) {
  177.         damage.push(
  178.             {
  179.                 dieCount: 3,
  180.                 dieSize: 8,
  181.                 comment: 'Necrotic',
  182.                 phrase: 'launches a creepy hand',
  183.                 effect: "**Effect:** Target can’t regain hit points until the start of my next turn. If Target is undead, it also has disadvantage on attack rolls against me until the end of my next turn."
  184.             }
  185.         )
  186.         toHit.dieCount=1;
  187.         toHit.modifier = character.sheet.intMod + character.sheet.proficiencyBonus;
  188.     },
  189. }
  190.  
  191. --------------------------------------------------
  192.  
  193. $$ character=user.characters[user.currentCharacter];
  194. character.attackModifiers  = {
  195.     na: function(toHit) {
  196.         toHit.dieCount = 0;
  197.     },
  198.     adv: function(toHit) {
  199.         toHit.dieCount = 2;
  200.         toHit.diceMod = '-H';
  201.     },
  202.     dis: function(toHit) {
  203.         toHit.dieCount = 2;
  204.         toHit.diceMod = '-L';
  205.     },
  206.     bless: function(toHit) {
  207.         toHit.modifier += "+1d4 [Bless]";
  208.     },
  209.     gwm: function(toHit) {
  210.         toHit.modifier += "-5 [Great Weapon Master]";
  211.     },
  212. }
  213.  
  214. --------------------------------------------------
  215.  
  216. $$ character=user.characters[user.currentCharacter];
  217. character.damageModifiers  = {
  218.     gwm: function(damage) {
  219.         damage.push(
  220.             {
  221.                 modifier:10,
  222.                 comment: 'Great Weapon Master',
  223.                
  224.             }
  225.         )
  226.     },
  227.     sneak: function(damage) {
  228.         damage.push(
  229.             {
  230.                 dieCount: character.features["Sneak Attack"].dice,
  231.                 dieSize: 6,
  232.                 comment: 'Sneak Attack',
  233.                 icon: ":spy:",
  234.                 phrase: 'makes a sneak attack',
  235.                 useOnce:true
  236.             }
  237.         )
  238.     },
  239.     crit: function(damage) {
  240.         damage.push(
  241.             {
  242.                 effect: "*That's an automatic CRIT!*"
  243.             }
  244.         )
  245.     },
  246. }
Advertisement
Add Comment
Please, Sign In to add comment