matthileo

NEW Character Setup Macros

Jul 10th, 2016
162
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. $$ user.getNext = function(key)
  2. {
  3.         var i = args.indexOf(key);
  4.         if (i >= 0 && i != args.length - 1) return args[i+1];
  5.         return null;
  6. }
  7.  
  8. ------------------------------------------------------------------------
  9.  
  10. $$ user.quoteArgs= function(args) {
  11.     var newArguments = [];
  12.  
  13.     var inQuote = false;
  14.     var currentArgument = '';
  15.     for (var i = 0; i < args.length; i++) {
  16.         if (!inQuote) {
  17.             if (args[i][0] == '"') {
  18.                 if (args[i][args[i].length-1] == '"') {
  19.                     newArguments.push(getTime(args[i].split("''").join('"')));
  20.                 } else {
  21.                     inQuote = true;
  22.                     currentArgument = args[i];
  23.                 }
  24.             } else {
  25.                 newArguments.push(getTime(args[i].split("''").join('"')));
  26.             }
  27.         } else {
  28.             currentArgument += ' ' + args[i];
  29.             if (args[i][args[i].length-1] == '"') {
  30.                 inQuote = false;
  31.                 newArguments.push(getTime(currentArgument.split('"').join('').split("''").join('"')));
  32.             }
  33.         }
  34.     }
  35.     return newArguments;
  36. }
  37.  
  38. --------------------------------------------------------------------
  39.  
  40. $$ user.getTime= function(arg) {
  41.    
  42.     var duration = 0;
  43.     var unit = "m";
  44.     var currentTime = new Date();
  45.     var newTime=new Date();
  46.     var result = "";
  47.    
  48.     if (arg.startsWith("$time"))
  49.     {
  50.         duration = arg.split(":")[1];
  51.         unit = arg.split(":")[2];
  52.         switch (unit)
  53.         {
  54.             case "s":
  55.                 newTime= newTime.setSeconds(currentTime.getSeconds() + parseInt(duration));
  56.                 break;
  57.             case "m":
  58.                 newTime= newTime.setMinutes(currentTime.getMinutes() + parseInt(duration));
  59.                 break;
  60.             case "h":
  61.                 newTime= newTime.setHours(currentTime.getHours() + parseInt(duration));
  62.                 break;
  63.             case "d":
  64.                 newTime= newTime.setHours(currentTime.getHours() + (parseInt(duration)*24));
  65.                 break; 
  66.         }
  67.         var options = {hour: '2-digit', minute:'2-digit'};
  68.         options.timeZone = 'America/Los_Angeles';
  69.         options.timeZoneName = 'short';
  70.         d = new Date();
  71.         d.setTime(newTime);
  72.        
  73.         strOldDate = currentTime.toLocaleDateString('en-US', options).split(", ")[0];
  74.         strNewDate = d.toLocaleDateString('en-US', options).split(", ")[0];
  75.         strNewTime  = d.toLocaleTimeString('en-US', options).split(", ")[1];
  76.        
  77.         result += strNewTime;
  78.        
  79.        
  80.         if (strOldDate != strNewDate) result += " " + strNewDate;
  81.        
  82.         return  result;
  83.     }
  84.     return arg;
  85. }
  86.  
  87.  
  88. -----------------------------------------
  89.  
  90. $$ user.status=function(){args=quoteArgs(Array.from(arguments));var t=getNext("-character");t||(t=user.currentCharacter),character=user.characters[t];var e=getNext("-hp");"reset"==e?character.sheet.hp=character.sheet.maxHP:e&&(character.sheet.hp=parseInt(character.sheet.hp)+parseInt(e));var a=getNext("-spell");a&&(character.status.concentration.spellname=a);var r=getNext("-effect");r&&(character.status.concentration.effect=r);var n=getNext("-target");n&&(character.status.concentration.target=n);var c=getNext("-ends");c&&(character.status.concentration.ends=c);var s=getNext("-condition");s&&(character.status.condition=s);var o=getNext("-conditionends");o&&(character.status.conditionEnds=o);var h=getNext("-stealth");h&&(character.status.stealth=h);var i=getNext("-pos");i&&(character.status.position=i),inArguments(args,"silent")||(echo("```"+character.sheet.name+"'s Status```"),echo("**Hit Points: **"+character.sheet.hp+"/"+character.sheet.maxHP+"\n"),echo("**Position: **"+character.status.position+"\n"),"none"!=character.status.condition&&(conditionString=character.status.condition,"none"!=character.status.conditionEnds&&(conditionString+=" (Ends "+character.status.conditionEnds+")"),echo("**Condition: **"+conditionString+"\n")),0!=character.status.stealth&&echo("**Stealth: **"+character.status.stealth+"\n"),"none"!=character.status.concentration.spellname&&(spellstring="**Concentration: **"+character.status.concentration.spellname,"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```"))};
  91.  
  92.  
  93. ---------------------------------------------------------------------------
  94.  
  95. $$ user.setup=function(){user.characters||(user.characters=[]),args=quoteArgs(arguments),user.properText={dex:"Dexterity",str:"Strength",con:"Constitution","int":"Intelligence",wis:"Wisdom",cha:"Charisma",death:"Death"};var e=getNext("-name"),s=getNext("-hp"),t=getNext("-skills");t&&(t=t.split(","));var r=getNext("-expertise");r&&(r=r.split(","));var a=getNext("-saves");a&&(a=a.split(","));var c=getNext("-classes");c&&(c=c.split(","));var i=getNext("-str",10),n=getNext("-dex",10),h=getNext("-con",10),o=getNext("-int",10),u=getNext("-wis",10),l=getNext("-cha",10);if(e){if(user.characters[e]||(user.characters[e]=[],user.characters[e].sheet=new Character("5e",e,{str:i,dex:n,con:h,"int":o,wis:u,cha:l}),user.characters[e].sheet.name=e,user.characters[e].skills=[],user.characters[e].skills={acrobatics:"",animal:"",arcana:"",athletics:"",deception:"",history:"",insight:"",intimidation:"",investigation:"",medicine:"",nature:"",perception:"",performance:"",persuasion:"",religion:"",sleight:"",stealth:"",survival:"",initiative:"",bonus:0},user.characters[e].saves=[],user.characters[e].saves={str:"",dex:"",con:"","int":"",wis:"",cha:"",death:"",bonus:0},user.characters[e].tools=[],user.characters[e].sheet.classes=[],user.characters[e].lastAttack=[],user.characters[e].lastSave=[],user.characters[e].lastCheck=[],user.characters[e].sheet.hp=0,user.characters[e].status=[],user.characters[e].status.concentration=[],statusArgs=["-character",e,"silent","-pos","Outside Combat","-condition","none","-conditionends","none","-stealth","0","-spell","none","-target","none","-effect","none","-ends","none"],status.apply(this,statusArgs)),t)for(idx in t)user.characters[e].skills[t[idx]]="prof";if(r)for(idx in r)user.characters[e].skills[r[idx]]="exp";if(a)for(idx in a)user.characters[e].saves[a[idx]]="prof";if(c)for(idx in c)user.characters[e].sheet.classes.push(c[idx]);s&&(user.characters[e].sheet.maxHP=s)}else echo("\n**CHARACTERS MUST HAVE A NAME! DUH.**\n")};
  96.  
  97. -----------------------------------------------------------
  98.  
  99. $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
  100.  
  101. ---------------------------------------------------------------------------
  102.  
  103. $$ user.character = function()
  104. {
  105.     args = quoteArgs(arguments);
  106.     if (args[0]!="")
  107.     {
  108.         if (user.characters[args[0]])
  109.         {
  110.             echo("Switching from `" + user.currentCharacter + "` to `" + args[0] + "`.\n");
  111.             user.currentCharacter = args[0];
  112.         }
  113.         else echo("No character named `"+args[0]+"` exists...\n");
  114.     }
  115.     else echo("You must enter a character name...\n");
  116. }
  117.  
  118. ----------------------------------------------------------------------------------
  119.  
  120. $character CharacterName
  121.  
  122. --------------------------------------------------------------------------------
  123.  
  124. $$ user.list = function()
  125. {
  126.     echo("```Characters```");
  127.     for (idx in user.characters)
  128.     {
  129.         charString = "**" + idx +":** " + user.characters[idx].sheet.hp +"/" + user.characters[idx].sheet.maxHP;
  130.         if (user.characters[idx].status.condition!="none") charString+= ", " + user.characters[idx].status.condition;
  131.         if (user.characters[idx].status.concentration.spellname!="none") charString+= ", Concentrating on " + user.characters[idx].status.concentration.spellname;
  132.         if (user.characters[idx].status.stealth!="0") charString+= ", " + user.characters[idx].status.stealth + " Stealth";
  133.         echo(charString + "\n");
  134.     }
  135. }
  136.  
  137. ----------------------------------------------------------------------------
  138.  
  139. $$ user.sheet =  function ()
  140. {
  141.     args = quoteArgs(arguments);
  142.     if(args[0]) echo (user.characters[args[0]]);
  143.     else echo (user.characters[user.currentCharacter])
  144. }
  145.  
  146.  
  147. --------------------------------------------------------
  148.  
  149. $$ user.check=function(){args=quoteArgs(Array.from(arguments)),character=user.characters[user.currentCharacter];var e=character.sheet.proficiencyBonus,r=inArguments(arguments,"bard"),t=inArguments(arguments,"save"),n=inArguments(arguments,"reliable")&&(inArguments(arguments,"prof")||inArguments(arguments,"exp")),a=inArguments(arguments,"attack")||inArguments(arguments,"atk"),s=0,i=1,g="",u="",c=getNext("-l"),o=getNext("-phrase"),m=getNext("-csphrase"),h=getNext("-cfphrase"),l=getNext("-failphrase"),p=getNext("-dc");p||(p=0);for(var A in args)character.sheet[args[A]+"Mod"]&&(s+=character.sheet[args[A]+"Mod"],u+=args[A]);inArguments(arguments,"exp")?s+="+"+2*e:inArguments(arguments,"prof")?s+="+"+e:!r||t||a||(s+="+"+Math.floor(e/2)),inArguments(arguments,"adv")&&!inArguments(arguments,"dis")?(i=2,g="-H"):inArguments(arguments,"dis")&&!inArguments(arguments,"adv")&&(i=2,g="-L"),magicBonus=getNext("-mb"),magicBonus&&(s+="+"+magicBonus);var d=i+"d20"+g+" + "+s;inArguments(args,"bless")?d+=" + 1d4[Bless]":inArguments(args,"guide")&&(d+=" + 1d4[Guidance]"),additionalBonus=getNext("-b"),additionalBonus&&(d+="+"+additionalBonus),abilityCheck=roll(d);var k=0;for(var A in abilityCheck.tokens[0].rolls){var b=abilityCheck.tokens[0].rolls[A];b.kept&&(k=b.keptValue)}var x=20==k,f=1==k,y="```"+character.sheet.name+" rolling ";return c?y+=c:u?(y+=user.properText[u],inArguments(arguments,"prof")?y+=" with proficiency":inArguments(arguments,"exp")&&(y+=" with expertise")):y+="a check",y+="...```",inArguments(args,"silent")||(echo("\n"),echo(y),n&&10>k&&echo("~~"),echo(abilityCheck.string+"\n"),n&&10>k&&echo("~~"),n&&10>k&&echo("`"+(abilityCheck.plain-k+10)+"` with Reliable Talent!\n"),m&&x&&abilityCheck.plain>=p?echo("*"+m+"*\n"):h&&f?echo("*"+h+"*\n"):l&&abilityCheck.plain<p?echo("*"+l+"*\n"):o&&echo("*"+o+"*\n")),abilityCheck.plain};
  150.  
  151. ------------------------------------------------------------------
  152.  
  153. $$ echo("Skills 1\n");
  154. 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;}
  155. 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;}
  156. 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;}
  157. 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;}
  158. 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;}
  159. 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;}
  160.  
  161. ---------------------------------------------------------------------------------------
  162.  
  163. $$ echo("Skills 2\n");
  164. 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;}
  165. 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;}
  166. 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;}
  167. 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;}
  168. 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;}
  169. 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;}
  170. 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;}
  171. 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;}
  172.  
  173. --------------------------------------------------------------------------------
  174.  
  175.  
  176. $$ echo("Skills 3\n");
  177. 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;}
  178. 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;}
  179. user.stealth = function()
  180. {
  181.     args = [user.characters[user.currentCharacter].skills["stealth"],"dex", "-l", "Stealth"];
  182.     args=args.concat(Array.from(arguments));
  183.     var result = check.apply(this,args);
  184.    
  185.     args = ["-stealth",result.toString(), "silent"];
  186.     args=args.concat(Array.from(arguments))
  187.     status.apply(this,args);
  188.     return result;
  189. }
  190. 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;}
  191.  
  192.  
  193. -----------------------------------------------------------------------------------
  194.  
  195.  
  196. $$  user.init = function()
  197. {
  198.     if (user.characters[user.currentCharacter].skills["initiative"] == "rake")
  199.         args = ["dex", "-mb", user.characters[user.currentCharacter].sheet.chaMod + "[Rakish Audacity]", "-l", "Initiative","-phrase", "\"I am the only one able to take the lead in this battle!\""];
  200.     else
  201.         args = [user.characters[user.currentCharacter].skills["initiative"],"dex", "-l", "Initiative"];
  202.     args=args.concat(Array.from(arguments));
  203.     var result = check.apply(this,args);
  204.     return result;
  205. }
  206.  
  207.  
  208. --------------------------------------------------------------------------------------
  209.  
  210. $$ user.save = function() {
  211.    
  212.     var args = Array.from(arguments);
  213.    
  214.     character = user.characters[user.currentCharacter];
  215.     saveBonus = character.saves["bonus"];
  216.    
  217.     for (var idx in args) {
  218.         if (character.sheet[args[idx]]) {
  219.             stat = args[idx];
  220.             break;
  221.         }
  222.         if (args[idx] == "death") stat = "death";
  223.     }
  224.    
  225.     if (user.properText[stat]) properStat = user.properText[stat];
  226.    
  227.     checkArgs = ["save", "-l", "a(n) "+properStat+" saving throw"];
  228.    
  229.     if (character.saves[stat]) checkArgs.push(character.saves[stat]);
  230.     if (saveBonus!=0) checkArgs=checkArgs.concat(["-mb", saveBonus.toString()]);
  231.  
  232.     checkArgs = checkArgs.concat(args);
  233.     result = check.apply(this,checkArgs);
  234.    
  235.     return result;
  236. }
  237.  
  238.  
  239. ------------------------------------------------------
  240.  
  241.  
  242. $$ user.formatAttack=function(e,t,r,s,h,c,o,a,n,i,g,f){var m="";a&&0==rr&&(f?echo("\n*"+f+" "+h+" "+n+" times"):echo("\n*"+user.characters[user.currentCharacter].sheet.name+" "+h+" "+n+" times"),o&&echo(" at "+o),echo(".*\n")),r?hits++:echo("~~"),a?(m+="Attack "+(rr+1)+": "+e.simple+" to hit, "+t.simple+" damage.",""!=g&&(m+=" "+g),s&&(m+=" :crossed_swords:"),echo(m)):(h&&(echo("\n"),f?stringPhrase="*"+f+" "+h:stringPhrase="*"+user.characters[user.currentCharacter].sheet.name+" "+h,o&&(stringPhrase+=" at "+o),s&&(stringPhrase+=" and scores a CRITICAL HIT"),stringPhrase+="!*",echo(stringPhrase)),e&&(echo("\n"),echo("**To Hit:** "+e.string)),t.tokens.length>0&&(echo("\n"),echo("**Damage: **"+t.string)),""!=c&&(echo("\n"),o?echo(c.split("Target").join(o)):echo(c))),r||echo("~~"),n>1&&echo("\n"),rr>=n-1&&(a||echo("\n"),n>1&&echo("**Total Damage:** "+i+"\n"),n>1&&a&&""!=c&&hits>0&&(o?echo(c.split("Target").join(o).split("Effect:").join("Effect (x"+hits+"):")):echo(c.split("Effect:").join("Effect (x"+hits+"):")),n>1&&echo("\n")))};
  243.  
  244.  
  245. ------------------------------------------------------------------
  246.  
  247.  
  248. $$ user.a=function(){args=quoteArgs(Array.from(arguments)),character=user.characters[user.currentCharacter];var e=inArguments(args,"summary"),r=[],t=getNext("-lvl"),i=getNext("-t"),a=getNext("-ac"),o=getNext("-ab"),n=getNext("-db");a||(a=0);var c=getNext("-rr"),f=0;for(c||(c=1),hits=0,rr=0;rr<c;rr++){var d="",s="",u="",m={dieCount:0,dieSize:20,diceMod:"",modifier:0},g=[],v=[];for(var C in args){var h=args[C];"function"==typeof character.attacks[h]&&character.attacks[h](v,m,t),"function"==typeof character.attackModifiers[h]&&character.attackModifiers[h](m),"function"==typeof character.damageModifiers[h]&&character.damageModifiers[h](g)}var l="",p=m.dieCount+"d"+m.dieSize+m.diceMod+" + "+m.modifier;o&&(p+="+"+o);var k=roll(p),x=k.plain>=a;if(0==m.dieCount){k="";var O=inArguments(args,"crit")}else{var A=0;for(var C in k.tokens[0].rolls){var M=k.tokens[0].rolls[C];M.kept&&(A=M.keptValue)}var O=20==A||inArguments(args,"crit"),N=20==A;N&&(x=!0)}1==A&&(x=!1);for(var C in v){if(C>0)break;var M=v[C],y=M.dieCount;O&&(y*=2),l&&(M.dieCount||M.modifier)&&(l+="+"),M.dieCount&&(l+=y+"d"+M.dieSize),M.modifier&&M.dieCount&&(l+="+"),M.modifier&&(l+=M.modifier),M.comment&&(l+="["+M.comment+"]"),M.phrase&&(d=M.phrase),M.effect&&""!=s&&(s+="\n"),M.effect&&(s+=M.effect),M.icon&&(u+=M.icon)}for(var C in g)if(!g[C].useOnce&&!g[C].onCrit||(g[C].useOnce&&O&&x||g[C].useOnce&&!g[C].onCrit&&x||g[C].onCrit&&rr==c-1&&x&&c>1&&g[C].useOnce||!g[C].useOnce&&g[C].onCrit&&O)&&-1==r.indexOf(g[C].comment)){var M=g[C],y=M.dieCount;O&&(y*=2),l&&(M.dieCount||M.modifier)&&(l+="+"),M.dieCount&&(l+=y+"d"+M.dieSize),M.modifier&&M.dieCount&&(l+="+"),M.modifier&&(l+=M.modifier),M.comment&&(l+="["+M.comment+"]"),M.phrase&&!e&&(d=M.phrase),M.effect&&""!=s&&(s+="\n"),M.effect&&(s+=M.effect),M.icon&&(u+=M.icon),M.useOnce&&r.push(M.comment)}n&&(l+="+"+n);var z=roll(l);x&&(f+=z.plain),formatAttack(k,z,x,O,d,s,i,e,c,f,u,!1)}};
  249.  
  250.  
  251. -----------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment