Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- HELPER FUNCTIONS AND CORE MACROS
- 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.
- --------------------------------------------------
- !! echo("HELPER FUNCTIONS...");
- user.getNext=function(a,b){var c=args.indexOf(a);return c>=0&&c!=args.length-1?args[c+1]:b},user.send=function(a,b){b||(b="echo"),"echo"==b?echo(a):"pm"==b&&pm(a)},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])),"private"==a[c]&&(echo=pm);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};
- echo("DONE.");
- --------------------------------------------------
- !! echo("STATUS...");
- user.status=function(){args=setupArgs(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(a),inArguments(args,"update")&&updateStatus()};
- echo("DONE.");
- --------------------------------------------------
- !! echo("STATUS DISPLAY...");
- user.displayStatus=function(a){var b=[];a||(a=user.currentCharacter);var c=user.characters[a];if(inArguments(args,"summary")){var d="((";inArguments(args,"end")&&(d+="**END TURN: **"),d+=c.sheet.hp+"/"+c.sheet.maxHP+" HP","none"!=c.status.position&&(""!=d&&(d+=", "),d+="Position: "+c.status.position);for(condition in c.status.conditions)""!=d&&(d+=", "),d+=condition;"none"!=c.status.concentration.name&&(""!=d&&(d+=", "),d+="Concentrating on "+c.status.concentration.name),"none"!=c.status.stealth&&(""!=d&&(d+=", "),d+=c.status.stealth+" Stealth"),d+="))",echo(d+"\n")}else{echo("```"+c.sheet.name+"'s Status```"),echo("**Hit Points: **"+c.sheet.hp+"/"+c.sheet.maxHP+"\n"),echo("**Position: **"+c.status.position+"\n");for(condition in c.status.conditions)conditionString="",c.status.conditions[condition].ends&&c.status.conditions[condition].effect?conditionString+=c.status.conditions[condition].effect+" (Ends "+c.status.conditions[condition].ends+")":c.status.conditions[condition].ends?conditionString+=" Ends "+c.status.conditions[condition].ends:c.status.conditions[condition].effect&&(conditionString+=c.status.conditions[condition].effect),c.status.conditions[condition].ends||c.status.conditions[condition].effect?echo("**"+condition+": **"+conditionString+"\n"):b.push(condition);b.length>0&&echo("**Conditions:** "+b.join(", ")+"\n"),"none"!=c.status.stealth&&echo("**Stealth: **"+c.status.stealth+"\n"),"none"!=c.status.concentration.name&&(spellstring="**Concentration: **"+c.status.concentration.name,"none"!=c.status.concentration.effect&&(spellstring+=" ["+c.status.concentration.effect+"]"),"none"!=c.status.concentration.target&&(spellstring+=" on "+c.status.concentration.target),"none"!=c.status.concentration.ends&&(spellstring+=" (Ends "+c.status.concentration.ends+")"),echo(spellstring+"\n")),inArguments(args,"end")&&echo("```END TURN```")}};
- echo("DONE.");
- --------------------------------------------------
- !! echo("CHARACTER SETUP...");
- 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")};
- echo("DONE.");
- --------------------------------------------------
- !! echo("CHARACTER MACROS...");
- 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")};
- echo("DONE.");
- --------------------------------------------------
- !! user.a=function(){args=setupArgs(arguments),character=user.characters[user.currentCharacter];var a=inArguments(args,"summary"),b=[],c=getNext("-t"),d=getNext("-ac",0),e=20;character.features["Improved Critical"]&&(e=character.features["Improved Critical"]);for(var f=getNext("-ab"),g=getNext("-db"),h=getNext("-phrase",""),i=getNext("-rr",1),j=0,k=0,l=0;l<i;l++){var m="",n="",o="",p={dieCount:0,dieSize:20,diceMod:"",modifier:0},q=[],r=[];for(var s in args){var t=args[s];"function"==typeof character.attacks[t]&&character.attacks[t](r,p),"function"==typeof character.attackModifiers[t]&&character.attackModifiers[t](p),"function"==typeof character.damageModifiers[t]&&character.damageModifiers[t](q)}var u="",v=p.dieCount+"d"+p.dieSize+p.diceMod+" + "+p.modifier;f&&(v+="+"+f);var w=roll(v),x=w.plain>=d;if(0==p.dieCount){w="";var y=inArguments(args,"crit")}else{var z=getDieRoll(w),y=z>=e||inArguments(args,"crit"),A=20==z;A&&(x=!0)}1==z&&(x=!1);var B=r[0],C=B.dieCount;y&&(C*=2),B.extraCritDice&&y&&(C+=B.extraCritDice),u&&(B.dieCount||B.modifier)&&(u+="+"),B.dieCount&&(u+=C+"d"+B.dieSize),B.modifier&&B.dieCount&&(u+="+"),B.modifier&&(u+=B.modifier),B.comment&&(u+="["+B.comment+"]"),B.phrase&&(m=B.phrase),B.effect&&""!=n&&(n+="\n"),B.effect&&(n+=B.effect),B.icon&&(o+=B.icon);for(var s in q){var D=q[s].useOnce,E=q[s].onCrit;if(!D&&!E||(D&&y&&x||D&&!E&&x||E&&l==i-1&&x&&i>1&&D||!D&&E&&y)&&b.indexOf(q[s].comment)==-1){var B=q[s],C=B.dieCount;y&&(C*=2),u&&(B.dieCount||B.modifier)&&(u+="+"),B.dieCount&&(u+=C+"d"+B.dieSize),B.modifier&&B.dieCount&&(u+="+"),B.modifier&&(u+=B.modifier),B.comment&&(B.dieCount>0||B.modifier>0)&&(u+="["+B.comment+"]"),B.phrase&&!a&&(m=B.phrase),B.effect&&""!=n&&(n+="\n"),B.effect&&(n+=B.effect),B.icon&&(o+=B.icon),B.useOnce&&b.push(B.comment)}}""!=h&&(m=h),g&&(u+="+"+g);var F=roll(u);x&&(j+=F.plain),character.lastAttack.phrase=m,character.lastAttack.toHit=w,character.lastAttack.damage=F,k=formatAttack(w,F,x,y,m,n,c,a,i,j,l,k,o,!1)}return j};
- --------------------------------------------------
- !! echo("DISPLAY ATTACK...");
- 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};
- echo("DONE.");
- --------------------------------------------------
- !! echo("ABILITY CHECK...");
- user.check=function(){args=setupArgs(arguments);var a=user.characters[user.currentCharacter],d=a.sheet.proficiencyBonus,e=a.features["Jack of all Trades"]||inArguments(args,"bard"),f=inArguments(args,"save"),g=(a.features["Reliable Talent"]||inArguments(args,"reliable"))&&(inArguments(args,"prof")||inArguments(args,"exp")),h=inArguments(args,"summary"),i=0,j=1,k="",l="",m=getNext("-l"),n=getNext("-phrase"),o=getNext("-csphrase"),p=getNext("-cfphrase"),q=getNext("-failphrase"),r=getNext("-dc");r||(r=0);for(var s in args)a.sheet[args[s]+"Mod"]&&(i+=a.sheet[args[s]+"Mod"],l+=args[s]);inArguments(args,"exp")?i+="+"+2*d:inArguments(args,"prof")?i+="+"+d:e&&!f&&(i+="+"+Math.floor(d/2)),inArguments(args,"adv")&&!inArguments(args,"dis")?(j=2,k="-H"):inArguments(args,"dis")&&!inArguments(args,"adv")&&(j=2,k="-L");var t=getNext("-mb");t&&(i+="+"+t);var u=j+"d20"+k+" + "+i;inArguments(args,"bless")?u+=" + 1d4[Bless]":inArguments(args,"guide")&&(u+=" + 1d4[Guidance]"),additionalBonus=getNext("-b"),additionalBonus&&(u+="+"+additionalBonus),abilityCheck=roll(u);var v=0;for(var s in abilityCheck.tokens[0].rolls){var w=abilityCheck.tokens[0].rolls[s];w.kept&&(v=w.keptValue)}var x=20==v,y=1==v,z="```"+a.sheet.name+" rolling ";return h&&(z="**"),m?z+=m:l?(z+=user.properText[l],inArguments(args,"prof")?z+=" with proficiency":inArguments(args,"exp")&&(z+=" with expertise")):z+="a check",z+=h?":** ":"...```",inArguments(args,"silent")||(echo("\n"),echo(z),g&&v<10&&echo("~~"),echo(abilityCheck.string+"\n"),g&&v<10&&echo("~~"),g&&v<10&&(echo("`"+(abilityCheck.plain-v+10)+"` with Reliable Talent!\n"),abilityCheck=roll(abilityCheck.plain-v+10)),o&&x&&abilityCheck.plain>=r?echo("*"+o+"*\n"):p&&y?echo("*"+p+"*\n"):q&&abilityCheck.plain<r?echo("*"+q+"*\n"):n&&echo("*"+n+"*\n")),f?(a.lastSave.label=m,a.lastSave.roll=abilityCheck):(a.lastCheck.label=m,a.lastCheck.roll=abilityCheck),abilityCheck.plain};
- echo("DONE.");
- --------------------------------------------------
- !! echo("SAVING THROW...");
- 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};
- echo("DONE.");
- --------------------------------------------------
- !! echo("SKILLS (GROUP 1)...");
- 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;}
- 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;}
- 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;}
- 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;}
- 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;}
- 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;}
- echo("DONE.");
- --------------------------------------------------
- !! echo("SKILLS (GROUP 2)...");
- 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;}
- 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;}
- 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;}
- 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;}
- 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;}
- 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;}
- 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;}
- 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;}
- echo("DONE.");
- --------------------------------------------------
- !! echo("SKILLS (GROUP 3)...");
- 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;}
- 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;}
- user.stealth = function()
- {
- args = [user.characters[user.currentCharacter].skills["stealth"],"dex", "-l", "Stealth"];
- args=args.concat(Array.from(arguments));
- var result = check.apply(this,args);
- args = ["-stealth",result.toString(), "silent"];
- args=args.concat(Array.from(arguments))
- status.apply(this,args);
- return result;
- }
- 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;}
- echo("DONE.");
- --------------------------------------------------
- !! echo("INITIATIVE...");
- user.init = function()
- {
- args = [user.characters[user.currentCharacter].skills["initiative"],"dex", "-l", "Initiative"];
- mbString = "";
- if (user.characters[user.currentCharacter].features["Rakish Audacity"])
- {
- if (mbString!="") mbString+="+";
- mbString += user.characters[user.currentCharacter].sheet.chaMod + "[Rakish Audacity]";
- args.push("-phrase", "\"I am the only one able to take the lead in this battle!\"");
- }
- if (user.characters[user.currentCharacter].features["Alert"])
- {
- if (mbString!="") mbString+="+";
- mbString += 5 + "[Alert]";
- }
- if (mbString!="") args.push("-mb", mbString);
- args=args.concat(Array.from(arguments));
- var result = check.apply(this,args);
- return result;
- }
- echo("DONE.");
- --------------------------------------------------
- SETUP FIRST CHARACTER
- NOTE: The following are commands. Replace the information below with information on the character you are creating!
- 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>
- $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
- $character CharacterName
- --------------------------------------------------
- THE FOLLOWING ARE MACROS FOR YOUR CHARACTERS ATTACKS. THEY MUST BE CUSTOMIZED FOR YOUR CHARACTER, AND WILL BE APPLIED TO YOUR CURRENTLY SELECTED CHARACTER
- You should make a copy of each of these Macros, for each of your characters, and save them on your computer.
- --------------------------------------------------
- ATTACK MODIFIERS
- Things that regularly modify your to hit. Bless, great weapon master, sharpshooter, etc.
- --------------------------------------------------
- !! character=user.characters[user.currentCharacter];
- character.attackModifiers = {
- na: function(toHit) {
- toHit.dieCount = 0;
- },
- adv: function(toHit) {
- toHit.dieCount = 2;
- toHit.diceMod = '-H';
- },
- dis: function(toHit) {
- toHit.dieCount = 2;
- toHit.diceMod = '-L';
- },
- bless: function(toHit) {
- toHit.modifier += "+1d4 [Bless]";
- },
- gwm: function(toHit) {
- toHit.modifier += "-5 [Great Weapon Master]";
- },
- }
- -------------------------------------------------------
- DAMAGE MODIFIERS
- Things that modify the damage output of an attack, like sneak attack, great weapon master, hunters mark, etc.
- -------------------------------------------------------
- !! character=user.characters[user.currentCharacter];
- character.damageModifiers = {
- gwm: function(damage) {
- damage.push(
- {
- modifier:10,
- comment: 'Great Weapon Master',
- }
- )
- },
- sneak: function(damage) {
- damage.push(
- {
- dieCount: character.features["Sneak Attack"].dice,
- dieSize: 6,
- comment: 'Sneak Attack',
- icon: ":spy:",
- phrase: 'makes a sneak attack',
- useOnce:true
- }
- )
- },
- crit: function(damage) {
- damage.push(
- {
- effect: "*That's an automatic CRIT!*"
- }
- )
- },
- }
- -------------------------------------------------------
- HERE ARE SOME EXAMPLE ATTACKS
- Each one is added one at a time
- -------------------------------------------------------
- !! user.characters[user.currentCharacter].attacks.longsword = function (damage,toHit)
- {
- damage.push(
- {
- dieCount: 1,
- dieSize: 8,
- modifier: user.characters[user.currentCharacter].sheet.strMod,
- comment: 'Slashing',
- phrase: 'slices with his longsword',
- }
- )
- toHit.dieCount=1;
- toHit.modifier = user.characters[user.currentCharacter].sheet.strMod + "+" + user.characters[user.currentCharacter].sheet.proficiencyBonus;
- }
- !! user.characters[user.currentCharacter].attacks.greataxe = function (damage,toHit)
- {
- damage.push(
- {
- dieCount: 1,
- dieSize: 12,
- extraCritDice: 1, /*Brutal Critical and Savage Attacks*/
- modifier: user.characters[user.currentCharacter].sheet.strMod,
- comment: 'Slashing',
- phrase: 'slices with his greataxe',
- }
- )
- toHit.dieCount=1;
- toHit.modifier = user.characters[user.currentCharacter].sheet.strMod + "+" + user.characters[user.currentCharacter].sheet.proficiencyBonus;
- }
- !! user.characters[user.currentCharacter].attacks.longbow = function (damage,toHit)
- {
- damage.push(
- {
- dieCount: 1,
- dieSize: 8,
- modifier: user.characters[user.currentCharacter].sheet.dexMod,
- comment: 'Piercing',
- phrase: 'fires an arrow',
- }
- )
- toHit.dieCount=1;
- toHit.modifier = user.characters[user.currentCharacter].sheet.dexMod + "+" + user.characters[user.currentCharacter].sheet.proficiencyBonus;
- }
- !! user.characters[user.currentCharacter].attacks.chilltouch = function(damage,toHit)
- {
- damage.push(
- {
- dieCount: 3,
- dieSize: 8,
- comment: 'Necrotic',
- phrase: 'launches a creepy hand',
- 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."
- }
- )
- toHit.dieCount=1;
- toHit.modifier = character.sheet.intMod + character.sheet.proficiencyBonus;
- }
Add Comment
Please, Sign In to add comment