matthileo

NEWBOT Macro Setup

Aug 9th, 2016
156
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. $$ user.getNext = function (key, def)
  7. {
  8.     var i = args.indexOf(key);
  9.     if (i >= 0 && i != args.length - 1) return args[i+1];
  10.     return def;
  11. }
  12.  
  13. --------------------------------------------------
  14.  
  15. $$ user.getDieRoll = function(roll)
  16. {
  17.     var dieRoll = 0;
  18.     for (var idx in roll.tokens[0].rolls) {
  19.         var r = roll.tokens[0].rolls[idx];
  20.         if (r.kept) {
  21.             dieRoll = r.keptValue;
  22.         }
  23.     }
  24.     return dieRoll;
  25. }
  26.  
  27. --------------------------------------------------
  28.  
  29. $$ user.setupArgs= function(args) {
  30.     var newArguments = [];
  31.    
  32.     for (var idx in args)
  33.     {
  34.         if (args[idx].startsWith("$time"))
  35.         {
  36.             newArguments.push(getTime(args[idx]));
  37.         }
  38.         else
  39.         {
  40.             newArguments.push(replaceString(args[idx]));
  41.         }
  42.     }
  43.     return newArguments;
  44. }
  45.  
  46. --------------------------------------------------
  47.  
  48. $$ user.replaceString= function(arg) {
  49.     var result = "";
  50.    
  51.     if (arg.startsWith("$"))
  52.     {
  53.         result = user.strings[arg.substr(1)];
  54.         return  result;
  55.     }
  56.     return arg;
  57. }
  58.  
  59. --------------------------------------------------
  60.  
  61. $$ user.getTime= function(arg) {
  62.    
  63.     var duration = 0;
  64.     var unit = "m";
  65.     var currentTime = new Date();
  66.     var newTime=new Date();
  67.     var result = "";
  68.    
  69.     if (arg.startsWith("$time"))
  70.     {
  71.         duration = arg.split(":")[1];
  72.         unit = arg.split(":")[2];
  73.         switch (unit)
  74.         {
  75.             case "s":
  76.                 newTime= newTime.setSeconds(currentTime.getSeconds() + parseInt(duration));
  77.                 break;
  78.             case "m":
  79.                 newTime= newTime.setMinutes(currentTime.getMinutes() + parseInt(duration));
  80.                 break;
  81.             case "h":
  82.                 newTime= newTime.setHours(currentTime.getHours() + parseInt(duration));
  83.                 break;
  84.             case "d":
  85.                 newTime= newTime.setHours(currentTime.getHours() + (parseInt(duration)*24));
  86.                 break; 
  87.         }
  88.         var options = {hour: '2-digit', minute:'2-digit'};
  89.         options.timeZone = 'America/Los_Angeles';
  90.         options.timeZoneName = 'short';
  91.         d = new Date();
  92.         d.setTime(newTime);
  93.        
  94.         strOldDate = currentTime.toLocaleDateString('en-US', options).split(", ")[0];
  95.         strNewDate = d.toLocaleDateString('en-US', options).split(", ")[0];
  96.         strNewTime  = d.toLocaleTimeString('en-US', options).split(", ")[1];
  97.        
  98.         result += strNewTime;
  99.        
  100.        
  101.         if (strOldDate != strNewDate) result += " " + strNewDate;
  102.        
  103.         return  result;
  104.     }
  105.     return arg;
  106. }
  107.  
  108. --------------------------------------------------
  109.  
  110. $$ user.addString = function()
  111. {
  112.     var args = setupArgs(arguments);
  113.     var stringName = args[0];
  114.     var stringText = args[1];
  115.     if (!stringName || !stringText)
  116.     {
  117.         return 0;
  118.     }
  119.     user.strings[stringName] = stringText;
  120.     echo("`" + user.strings[stringName] + "` has been added to your list of strings.\n")
  121.    
  122. }
  123.  
  124. --------------------------------------------------
  125.  
  126. $$ 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=0,character.status.position="Outside Combat"}inArguments(args,"silent")||displayStatus()};
  127.  
  128. --------------------------------------------------
  129.  
  130. $$ user.displayStatus = function()
  131. {
  132.     echo("```"+character.sheet.name+"'s Status```");
  133.     echo("**Hit Points: **" + character.sheet.hp + "/" + character.sheet.maxHP + "\n");
  134.     echo("**Position: **" + character.status.position + "\n");
  135.    
  136.     for (condition in character.status.conditions)
  137.     {
  138.         conditionString = "";
  139.         if (character.status.conditions[condition].ends && character.status.conditions[condition].effect)
  140.             conditionString += character.status.conditions[condition].effect + " (Ends " + character.status.conditions[condition].ends + ")";
  141.         else if (character.status.conditions[condition].ends)
  142.             conditionString += " Ends " + character.status.conditions[condition].ends;
  143.         else if (character.status.conditions[condition].effect)
  144.             conditionString += character.status.conditions[condition].effect;
  145.         echo("**" + condition + ": **" + conditionString + "\n");
  146.     }
  147.    
  148.     if (character.status.stealth!=0) echo("**Stealth: **" + character.status.stealth + "\n");
  149.  
  150.     if (character.status.concentration.name!="none")
  151.     {
  152.         spellstring = "**Concentration: **" + character.status.concentration.name;
  153.         if (character.status.concentration.effect!="none") spellstring+= " [" + character.status.concentration.effect + "]";
  154.         if (character.status.concentration.target!="none") spellstring+= " on " + character.status.concentration.target;
  155.         if (character.status.concentration.ends!="none") spellstring+= " (Ends " + character.status.concentration.ends + ")";
  156.         echo(spellstring + "\n");
  157.     }
  158.    
  159.     if (inArguments(args,"end")) echo("```END TURN```");
  160. }
  161.  
  162. --------------------------------------------------
  163.  
  164. $$ user.setup=function(){user.characters||(user.characters=[]),args=setupArgs(arguments),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","-condition","none","-conditionends","none","-stealth","0","-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")};
  165.  
  166. --------------------------------------------------
  167.  
  168. $$ user.character = function()
  169. {
  170.     args = setupArgs(arguments);
  171.     if (args[0]!="")
  172.     {
  173.         if (user.characters[args[0]])
  174.         {
  175.             echo("Switching from `" + user.currentCharacter + "` to `" + args[0] + "`.\n");
  176.             user.currentCharacter = args[0];
  177.         }
  178.         else echo("No character named `"+args[0]+"` exists...\n");
  179.     }
  180.     else echo("You must enter a character name...\n");
  181. }
  182.  
  183. --------------------------------------------------
  184.  
  185. $$ user.list = function()
  186. {
  187.     echo("```Characters```");
  188.     for (idx in user.characters)
  189.     {
  190.         charString = "**" + idx +":** " + user.characters[idx].sheet.hp +"/" + user.characters[idx].sheet.maxHP;
  191.        
  192.         for (condition in user.characters[idx].status.conditions)
  193.         {
  194.             if (charString!="") charString+=", ";
  195.             charString += condition;
  196.         }
  197.        
  198.         if (user.characters[idx].status.concentration.name!="none")
  199.         {
  200.             if (charString!="") charString+=", ";
  201.             charString+= "Concentrating on " + user.characters[idx].status.concentration.name;
  202.         }
  203.        
  204.         if (user.characters[idx].status.stealth!="0")
  205.         {
  206.             if (charString!="") charString+=", ";
  207.             charString+= user.characters[idx].status.stealth + "Stealth";
  208.         }
  209.         echo(charString + "\n");
  210.     }
  211. }
  212.  
  213. --------------------------------------------------
  214.  
  215. $$ user.sheet = function(charName)
  216. {
  217.     args = setupArgs(arguments);
  218.     var character;
  219.     if (charName) character = user.characters[charName];
  220.     else character = user.characters[user.currentCharacter];
  221.    
  222.     echo("```" + character.sheet.name + "'s Character Sheet```");
  223.     for (var idx in character.sheet)
  224.     {
  225.         if(user.properText[idx])
  226.             echo("**" + user.properText[idx]+":** " + character.sheet[idx]+"\n");
  227.         else if (idx == "proficiencyBonus")
  228.             echo("**Proficiency Bonus:** +" + character.sheet[idx]+"\n");
  229.         else if (idx == "hp")
  230.             echo("**Hit Points:** " + character.sheet["hp"] + "/" + character.sheet["maxHP"] + "\n");
  231.     }
  232.     echo("**Skills:** ");
  233.     for (var idx in character.skills)
  234.     {
  235.         if (character.skills[idx]=="prof") echo(idx + ", ")
  236.         else if (character.skills[idx]=="exp") echo(idx + "[e], ");
  237.     }
  238. }
  239.  
  240. --------------------------------------------------
  241.  
  242. $$ user.a=function(){args=setupArgs(Array.from(arguments)),character=user.characters[user.currentCharacter];for(var a=inArguments(args,"summary"),b=[],d=(getNext("-lvl",1),getNext("-t")),e=getNext("-ac",0),f=getNext("-ab"),g=getNext("-db"),h=getNext("-phrase",""),i=getNext("-rr",1),j=0,l=0,m=0;m<i;m++){var n="",o="",p="",q={dieCount:0,dieSize:20,diceMod:"",modifier:0},r=[],s=[];for(var t in args){var u=args[t];"function"==typeof character.attacks[u]&&character.attacks[u](s,q),"function"==typeof character.attackModifiers[u]&&character.attackModifiers[u](q),"function"==typeof character.damageModifiers[u]&&character.damageModifiers[u](r)}var v="",w=q.dieCount+"d"+q.dieSize+q.diceMod+" + "+q.modifier;f&&(w+="+"+f);var x=roll(w),y=x.plain>=e;if(0==q.dieCount){x="";var z=inArguments(args,"crit")}else{var A=getDieRoll(x),z=20==A||inArguments(args,"crit"),B=20==A;B&&(y=!0)}1==A&&(y=!1);for(var t in s){if(t>0)break;var C=s[t],D=C.dieCount;z&&(D*=2),v&&(C.dieCount||C.modifier)&&(v+="+"),C.dieCount&&(v+=D+"d"+C.dieSize),C.modifier&&C.dieCount&&(v+="+"),C.modifier&&(v+=C.modifier),C.comment&&(v+="["+C.comment+"]"),C.phrase&&(n=C.phrase),C.effect&&""!=o&&(o+="\n"),C.effect&&(o+=C.effect),C.icon&&(p+=C.icon)}for(var t in r)if(!r[t].useOnce&&!r[t].onCrit||(r[t].useOnce&&z&&y||r[t].useOnce&&!r[t].onCrit&&y||r[t].onCrit&&m==i-1&&y&&i>1&&r[t].useOnce||!r[t].useOnce&&r[t].onCrit&&z)&&b.indexOf(r[t].comment)==-1){var C=r[t],D=C.dieCount;z&&(D*=2),v&&(C.dieCount||C.modifier)&&(v+="+"),C.dieCount&&(v+=D+"d"+C.dieSize),C.modifier&&C.dieCount&&(v+="+"),C.modifier&&(v+=C.modifier),C.comment&&(C.dieCount>0||C.modifier>0)&&(v+="["+C.comment+"]"),C.phrase&&!a&&(n=C.phrase),C.effect&&""!=o&&(o+="\n"),C.effect&&(o+=C.effect),C.icon&&(p+=C.icon),C.useOnce&&b.push(C.comment)}""!=h&&(n=h),g&&(v+="+"+g);var E=roll(v);y&&(j+=E.plain),character.lastAttack.phrase=n,character.lastAttack.toHit=x,character.lastAttack.damage=E,l=formatAttack(x,E,y,z,n,o,d,a,i,j,m,l,p,!1)}return j};
  243.  
  244. --------------------------------------------------
  245.  
  246. $$ 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};
  247.  
  248. --------------------------------------------------
  249.  
  250. $$ 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};
  251.  
  252. --------------------------------------------------
  253.  
  254. $$ 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"],inArguments(arguments,"defy")&&(deathPhrase=csDeathPhrase),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};
  255.  
  256. --------------------------------------------------
  257.  
  258. SKILL MACROS
  259.  
  260. --------------------------------------------------
  261.  
  262. $$ echo("Skills 1\n");
  263. 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;}
  264. 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;}
  265. 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;}
  266. 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;}
  267. 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;}
  268. 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;}
  269.  
  270. --------------------------------------------------
  271.  
  272. $$ echo("Skills 2\n");
  273. 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;}
  274. 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;}
  275. 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;}
  276. 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;}
  277. 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;}
  278. 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;}
  279. 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;}
  280. 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;}
  281.  
  282. --------------------------------------------------
  283.  
  284. $$ echo("Skills 3\n");
  285. 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;}
  286. 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;}
  287. user.stealth = function()
  288. {
  289.     args = [user.characters[user.currentCharacter].skills["stealth"],"dex", "-l", "Stealth"];
  290.     args=args.concat(Array.from(arguments));
  291.     var result = check.apply(this,args);
  292.    
  293.     args = ["-stealth",result.toString(), "silent"];
  294.     args=args.concat(Array.from(arguments))
  295.     status.apply(this,args);
  296.     return result;
  297. }
  298. 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;}
  299.  
  300. --------------------------------------------------
  301.  
  302. $$ user.init = function()
  303. {
  304.     args = [user.characters[user.currentCharacter].skills["initiative"],"dex", "-l", "Initiative"];
  305.     mbString = "";
  306.     if (user.characters[user.currentCharacter].features["Rakish Audacity"])
  307.     {
  308.         if (mbString!="") mbString+="+";
  309.         mbString += user.characters[user.currentCharacter].sheet.chaMod + "[Rakish Audacity]";
  310.     }
  311.     if (user.characters[user.currentCharacter].features["Alert"])
  312.     {
  313.         if (mbString!="") mbString+="+";
  314.         mbString += 5 + "[Alert]";
  315.     }
  316.    
  317.     if (mbString!="") args.push("-mb", mbString);
  318.    
  319.     args=args.concat(Array.from(arguments));
  320.     var result = check.apply(this,args);
  321.     return result;
  322. }
  323.  
  324. --------------------------------------------------
  325.  
  326. SETUP FIRST CHARACTER
  327.  
  328. NOTE: The following are commands. Replace the information below with information on the character you are creating!
  329.  
  330. $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
  331.  
  332. $character CharacterName
  333.  
  334. --------------------------------------------------
  335.  
  336. THE FOLLOWING ARE MACROS FOR YOUR CHARACTERS ATTACKS. THEY MUST BE CUSTOMIZED FOR YOUR CHARACTER, AND WILL BE APPLIED TO YOUR CURRENTLY SELECTED CHARACTER
  337. You should make a copy of each of these Macros, for each of your characters, and save them on your computer.
  338.  
  339. --------------------------------------------------
  340.  
  341. $$ character=user.characters[user.currentCharacter];
  342. character.attacks = {
  343.     longsword: function(damage,toHit) {
  344.         damage.push(
  345.             {
  346.                 dieCount: 1,
  347.                 dieSize: 8,
  348.                 modifier: character.sheet.strMod,
  349.                 comment: 'Slashing',
  350.                 phrase: 'slashes with his longssword'
  351.             }
  352.         )
  353.         toHit.dieCount=1;
  354.         toHit.modifier = character.sheet.strMod + character.sheet.proficiencyBonus;
  355.     },
  356.     longbow: function(damage,toHit) {
  357.         damage.push(
  358.             {
  359.                 dieCount: 1,
  360.                 dieSize: 8,
  361.                 modifier:character.sheet.dexMod ,
  362.                 comment: 'Piercing',
  363.                 phrase: 'fires an arrow'
  364.             }
  365.         )
  366.         toHit.dieCount=1;
  367.         toHit.modifier = character.sheet.dexMod + character.sheet.proficiencyBonus;
  368.     },
  369.     chilltouch: function(damage,toHit) {
  370.         damage.push(
  371.             {
  372.                 dieCount: 3,
  373.                 dieSize: 8,
  374.                 comment: 'Necrotic',
  375.                 phrase: 'launches a creepy hand',
  376.                 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."
  377.             }
  378.         )
  379.         toHit.dieCount=1;
  380.         toHit.modifier = character.sheet.intMod + character.sheet.proficiencyBonus;
  381.     },
  382. }
  383.  
  384. --------------------------------------------------
  385.  
  386. $$ character=user.characters[user.currentCharacter];
  387. character.attackModifiers  = {
  388.     na: function(toHit) {
  389.         toHit.dieCount = 0;
  390.     },
  391.     adv: function(toHit) {
  392.         toHit.dieCount = 2;
  393.         toHit.diceMod = '-H';
  394.     },
  395.     dis: function(toHit) {
  396.         toHit.dieCount = 2;
  397.         toHit.diceMod = '-L';
  398.     },
  399.     bless: function(toHit) {
  400.         toHit.modifier += "+1d4 [Bless]";
  401.     },
  402.     gwm: function(toHit) {
  403.         toHit.modifier += "-5 [Great Weapon Master]";
  404.     },
  405. }
  406.  
  407. --------------------------------------------------
  408.  
  409. $$ character=user.characters[user.currentCharacter];
  410. character.damageModifiers  = {
  411.     gwm: function(damage) {
  412.         damage.push(
  413.             {
  414.                 modifier:10,
  415.                 comment: 'Great Weapon Master',
  416.                
  417.             }
  418.         )
  419.     },
  420.     sneak: function(damage) {
  421.         damage.push(
  422.             {
  423.                 dieCount: character.features["Sneak Attack"].dice,
  424.                 dieSize: 6,
  425.                 comment: 'Sneak Attack',
  426.                 icon: ":spy:",
  427.                 phrase: 'makes a sneak attack',
  428.                 useOnce:true
  429.             }
  430.         )
  431.     },
  432.     crit: function(damage) {
  433.         damage.push(
  434.             {
  435.                 effect: "*That's an automatic CRIT!*"
  436.             }
  437.         )
  438.     },
  439. }
Advertisement
Add Comment
Please, Sign In to add comment