matthileo

Character Macros

Jul 10th, 2016
128
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. ^^ user.setup=function(){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 i=getNext("-classes");i&&(i=i.split(","));var c=getNext("-str");c||(c=10);var n=getNext("-dex");n||(n=10);var h=getNext("-con");h||(h=10);var o=getNext("-int");o||(o=10);var u=getNext("-wis");u||(u=10);var l=getNext("-cha");if(l||(l=10),e){if(user.characters[e]||(user.characters[e]=[],user.characters[e].sheet=new Character("5e",e,{str:c,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].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(i)for(idx in i)user.characters[e].sheet.classes.push(i[idx]);s&&(user.characters[e].sheet.maxHP=s)}else echo("\n**CHARACTERS MUST HAVE A NAME! DUH.**\n")};
  90.  
  91. -----------------------------------------------------------
  92.  
  93. ^setup -name CharacterName -hp MaxHP -str 18 -con 18 -int 12 -skills SkillProf1,SkillProf2,Athletics,Acrobatics -expertise Expertise1,Expertise2,Stealth -saves dex,int -classes Class1,Class2,Class3
  94.  
  95. ---------------------------------------------------------------------------
  96.  
  97. ^^ user.character = function()
  98. {
  99.     args = quoteArgs(arguments);
  100.     if (args[0]!="")
  101.     {
  102.         if (user.characters[args[0]])
  103.         {
  104.             echo("Switching from `" + user.currentCharacter + "` to `" + args[0] + "`.\n");
  105.             user.currentCharacter = args[0];
  106.         }
  107.         else echo("No character named `"+args[0]+"` exists...\n");
  108.     }
  109.     else echo("You must enter a character name...\n");
  110. }
  111.  
  112. ----------------------------------------------------------------------------------
  113.  
  114. ^^ user.list = function()
  115. {
  116.     echo("```Characters```");
  117.     for (idx in user.characters)
  118.     {
  119.         charString = "**" + idx +":** " + user.characters[idx].sheet.hp +"/" + user.characters[idx].sheet.maxHP;
  120.         if (user.characters[idx].status.condition!="none") charString+= ", " + user.characters[idx].status.condition;
  121.         if (user.characters[idx].status.concentration.spellname!="none") charString+= ", Concentrating on " + user.characters[idx].status.concentration.spellname;
  122.         if (user.characters[idx].status.stealth!="0") charString+= ", " + user.characters[idx].status.stealth + " Stealth";
  123.         echo(charString + "\n");
  124.     }
  125. }
  126.  
  127. ----------------------------------------------------------------------------
  128.  
  129. ^^ user.sheet =  function ()
  130. {
  131.     args = quoteArgs(arguments);
  132.     if(args[0]) echo (user.characters[args[0]]);
  133.     else echo (user.characters[user.currentCharacter])
  134. }
  135.  
  136.  
  137. --------------------------------------------------------
  138.  
  139.  
  140. ^^ echo("Skills 1\n");
  141. 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;}
  142. 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;}
  143. 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;}
  144. 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;}
  145. 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;}
  146. 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;}
  147.  
  148. ---------------------------------------------------------------------------------------
  149.  
  150. ^^ echo("Skills 2\n");
  151. 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;}
  152. 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;}
  153. 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;}
  154. 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;}
  155. 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;}
  156. 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;}
  157. 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;}
  158. 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;}
  159.  
  160. --------------------------------------------------------------------------------
  161.  
  162.  
  163. ^^ echo("Skills 3\n");
  164. 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;}
  165. 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;}
  166. user.stealth = function()
  167. {
  168.     args = [user.characters[user.currentCharacter].skills["stealth"],"dex", "-l", "Stealth"];
  169.     args=args.concat(Array.from(arguments));
  170.     var result = check.apply(this,args);
  171.    
  172.     args = ["-stealth",result.toString(), "silent"];
  173.     args=args.concat(Array.from(arguments))
  174.     status.apply(this,args);
  175.     return result;
  176. }
  177. 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;}
  178.  
  179.  
  180. -----------------------------------------------------------------------------------
  181.  
  182.  
  183. ^^  user.init = function()
  184. {
  185.     if (user.characters[user.currentCharacter].skills["initiative"] == "rake")
  186.         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!\""];
  187.     else
  188.         args = [user.characters[user.currentCharacter].skills["initiative"],"dex", "-l", "Initiative"];
  189.     args=args.concat(Array.from(arguments));
  190.     var result = check.apply(this,args);
  191.     return result;
  192. }
  193.  
  194.  
  195. --------------------------------------------------------------------------------------
  196.  
  197. ^^ user.save = function() {
  198.    
  199.     var args = Array.from(arguments);
  200.    
  201.     character = user.characters[user.currentCharacter];
  202.     saveBonus = character.saves["bonus"];
  203.    
  204.     for (var idx in args) {
  205.         if (character.sheet[args[idx]]) {
  206.             stat = args[idx];
  207.             break;
  208.         }
  209.         if (args[idx] == "death") stat = "death";
  210.     }
  211.    
  212.     if (user.properText[stat]) properStat = user.properText[stat];
  213.    
  214.     checkArgs = ["save", "-l", "a(n) "+properStat+" saving throw"];
  215.    
  216.     if (character.saves[stat]) checkArgs.push(character.saves[stat]);
  217.     if (saveBonus!=0) checkArgs=checkArgs.concat(["-mb", saveBonus.toString()]);
  218.  
  219.     checkArgs = checkArgs.concat(args);
  220.     result = check.apply(this,checkArgs);
  221.    
  222.     return result;
  223. }
  224.  
  225. -----------------------------------------
  226.  
  227. ^^ 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```"))};
  228.  
  229.  
  230. ------------------------------------------------------
  231.  
  232.  
  233. ^^ 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")))};
  234.  
  235.  
  236. ------------------------------------------------------------------
  237.  
  238.  
  239. ^^ 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)}};
  240.  
  241.  
  242. -----------------------------------------------------------------------
Advertisement
Add Comment
Please, Sign In to add comment