PageSourceSearch

https://acks-assistant.web.app/2-es2015.f7ae9e4d9e19bf02ce07.js

js acks-assistant.web.app collected 2026-10-03 12:16:57 UTC 43,789 bytes, 1 lines download raw bytes

1(window.webpackJsonp=window.webpackJsonp||[]).push([[2],{DoN9:function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var i=a("mrSG"),r=a("xbY4"),l=a("8Y7J"),n=a("vUMC");let s=(()=>{class e{constructor(e){this.csvProvider=e}getSpells(e,t,a){return i.__awaiter(this,void 0,void 0,(function*(){let i=[],r=[],l=[],n=[],s=[];const o=[],d=[];switch(e){case"Elven Spellsword":case"Mage":if(t>=1){i.push(yield this.getRandomArcaneSpell(1,i));for(let e=0;e<a;e++)i.push(yield this.getRandomArcaneSpell(1,i))}if(t>=2&&i.push(yield this.getRandomArcaneSpell(1,i)),t>=3){r.push(yield this.getRandomArcaneSpell(2,r));for(let e=0;e<a;e++)r.push(yield this.getRandomArcaneSpell(2,r))}if(t>=4&&r.push(yield this.getRandomArcaneSpell(2,r)),t>=5){l.push(yield this.getRandomArcaneSpell(3,l));for(let e=0;e<a;e++)l.push(yield this.getRandomArcaneSpell(3,l))}if(t>=6&&l.push(yield this.getRandomArcaneSpell(3,l)),t>=7){i.push(yield this.getRandomArcaneSpell(1,i)),n.push(yield this.getRandomArcaneSpell(4,n));for(let e=0;e<a;e++)n.push(yield this.getRandomArcaneSpell(4,n))}if(t>=8&&(r.push(yield this.getRandomArcaneSpell(2,r)),n.push(yield this.getRandomArcaneSpell(4,n))),t>=9){l.push(yield this.getRandomArcaneSpell(3,l)),s.push(yield this.getRandomArcaneSpell(5,s));for(let e=0;e<a;e++)s.push(yield this.getRandomArcaneSpell(5,s))}if(t>=10&&n.push(yield this.getRandomArcaneSpell(4,n)),t>=11){i.push(yield this.getRandomArcaneSpell(1,i)),o.push(yield this.getRandomArcaneSpell(6,o));for(let e=0;e<a;e++)o.push(yield this.getRandomArcaneSpell(6,o))}t>=12&&(r.push(yield this.getRandomArcaneSpell(2,r)),o.push(yield this.getRandomArcaneSpell(6,o))),t>=13&&l.push(yield this.getRandomArcaneSpell(3,l)),t>=14&&(n.push(yield this.getRandomArcaneSpell(4,n)),o.push(yield this.getRandomArcaneSpell(6,o)));break;case"Bladedancer":case"Cleric":case"Dwarven Craftpriest":let d;d="Bladedancer"===e?yield this.csvProvider.getCsvData("BladedancerSpellList").toPromise():yield this.csvProvider.getCsvData("ClericSpellList").toPromise(),t>=2&&(i=d.getRow(0)),t>=4&&(r=d.getRow(1)),t>=6&&(l=d.getRow(2),n=d.getRow(3)),t>=7&&(s=d.getRow(4));break;case"Elven Nightblade":if(t>=2){i.push(yield this.getRandomArcaneSpell(1,i));for(let e=0;e<a;e++)i.push(yield this.getRandomArcaneSpell(1,i))}if(t>=3&&i.push(yield this.getRandomArcaneSpell(1,i)),t>=5){r.push(yield this.getRandomArcaneSpell(2,r));for(let e=0;e<a;e++)r.push(yield this.getRandomArcaneSpell(2,r))}if(t>=7&&r.push(yield this.getRandomArcaneSpell(2,r)),t>=9){l.push(yield this.getRandomArcaneSpell(3,l));for(let e=0;e<a;e++)l.push(yield this.getRandomArcaneSpell(3,l))}t>=11&&l.push(yield this.getRandomArcaneSpell(3,l))}return i.length>0&&d.push(i),r.length>0&&d.push(r),l.length>0&&d.push(l),n.length>0&&d.push(n),s.length>0&&d.push(s),o.length>0&&d.push(o),d}))}getSpellsPerDay(e,t){const a=[];let i=0,r=0,l=0,n=0,s=0,o=0;switch(e){case"Elven Spellsword":case"Mage":t>=1&&i++,t>=2&&i++,t>=3&&r++,t>=4&&r++,t>=5&&l++,t>=6&&l++,t>=7&&(i++,n++),t>=8&&(r++,n++),t>=9&&(l++,s++),t>=10&&n++,t>=11&&(i++,o++),t>=12&&(r++,o++),t>=13&&l++,t>=14&&(n++,o++);break;case"Bladedancer":case"Cleric":case"Dwarven Craftpriest":t>=2&&i++,t>=3&&i++,t>=4&&r++,t>=5&&r++,t>=6&&(l++,n++),t>=7&&(l++,s++),t>=8&&(i++,r++,n++),t>=9&&(l++,s++),t>=10&&(i++,r++,n++),t>=11&&(l++,s++),t>=12&&(i++,r++,n++),t>=13&&l++,t>=14&&(i++,n++,s++);break;case"Elven Nightblade":t>=2&&i++,t>=3&&i++,t>=5&&r++,t>=7&&r++,t>=9&&l++,t>=11&&l++}return a.push(i),a.push(r),a.push(l),a.push(n),a.push(s),a.push(o),a}getRandomArcaneSpell(e,t){return i.__awaiter(this,void 0,void 0,(function*(){const a=(yield this.csvProvider.getCsvData("arcaneSpellList").toPromise()).getRow(e-1);let i=a[new r.a("1d"+a.length).roll()-1];return t.indexOf(i)>=0&&(i="***Judges Choice***"),i}))}}return e.ngInjectableDef=l.Yb({factory:function(){return new e(l.Zb(n.a))},token:e,providedIn:"root"}),e})()},c0WW:function(e,t,a){"use strict";a.d(t,"a",(function(){return s}));var i=a("mrSG"),r=a("xbY4"),l=a("8Y7J"),n=a("vUMC");let s=(()=>{class e{constructor(e){this.csvProvider=e}getRandomName(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=(yield this.csvProvider.getCsvData(e).toProm
1ise()).getRow(0);return t[new r.a("1D"+t.length).roll()-1]}))}getRandomMaleGivenName(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=(yield this.csvProvider.getCsvData(e).toPromise()).getRow(0),a=t[new r.a("1D"+t.length).roll()-1];return a.charAt(0).toUpperCase()+a.slice(1).toLowerCase()}))}getRandomFemaleGivenName(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=(yield this.csvProvider.getCsvData(e).toPromise()).getRow(1),a=t[new r.a("1D"+t.length).roll()-1];return a.charAt(0).toUpperCase()+a.slice(1).toLowerCase()}))}getRandomFamilyName(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=(yield this.csvProvider.getCsvData(e).toPromise()).getRow(2);if(null!=t){const e=t[new r.a("1D"+t.length).roll()-1];return e.charAt(0).toUpperCase()+e.slice(1).toLowerCase()}return""}))}getRandomNameFromRaceOrCulture(e,t){return i.__awaiter(this,void 0,void 0,(function*(){let a="";switch(e){case"Celdorean":a="celdorean";break;case"Corcani":a=new r.a("1d100").roll()<15?"rornish":"tirenean";break;case"Dwarf":a="dwarven";break;case"Elf":a="argollean";break;case"Jutlander":a="jutlandic";break;case"Meniri":case"Jutting":a="dwarven";break;case"Kemeshi":a="kemeshi";break;case"Krysean":a="krysean";break;case"Kushtu":a="kushtu";break;case"Nicean":a="nicean";break;case"Opelenean":a="opelenean";break;case"Rornish":a="rornish";break;case"Shebatean":a="shebatean";break;case"Skysos":a="skysos";break;case"Syrnasi":a="tirenean";break;case"Somirean":a="somirean";break;case"Thrassian":a="thrassian";break;case"Tirenean":a="tirenean";break;case"Zaharan":a="zaharan"}return this.getRandomAureposName(a,t)}))}getRandomAureposName(e,t){return i.__awaiter(this,void 0,void 0,(function*(){let a,i;switch(e=e.toLowerCase()){case"argollean":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("argolleanNames"),a="Mag "+(yield this.getRandomMaleGivenName("argolleanNames")),new r.a("1d100").roll()<5&&(a="Ua "+(yield this.getRandomFamilyName("argolleanNames")))):(i=yield this.getRandomFemaleGivenName("argolleanNames"),a="Ni "+(yield this.getRandomFemaleGivenName("argolleanNames")),new r.a("1d100").roll()<5&&(a="Ui "+(yield this.getRandomFamilyName("argolleanNames"))));break;case"celdorean":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("celdoreanNames"),(a=yield this.getRandomMaleGivenName("celdoreanNames")).endsWith("a")?a+="pur":a+="apur"):(i=yield this.getRandomFemaleGivenName("celdoreanNames"),(a=yield this.getRandomFemaleGivenName("celdoreanNames")).endsWith("a")?a+="dar":a+="adar"),new r.a("1d100").roll()<3&&(a=new r.a("1d2").roll()>1?(yield this.getRandomMaleGivenName("celdoreanNames"))+"zadeh":(yield this.getRandomFemaleGivenName("celdoreanNames"))+"ha");break;case"dwarven":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("dwarvenNames"),a=yield this.getRandomFamilyName("dwarvenNames"),new r.a("1d100").roll()<3&&(a+=" of the Vault of "+(yield this.getRandomMaleGivenName("dwarvenNames"))+" "+a)):(i=yield this.getRandomFemaleGivenName("dwarvenNames"),a=yield this.getRandomFamilyName("dwarvenNames"),new r.a("1d100").roll()<3&&(a+=" of the Vault of "+(yield this.getRandomMaleGivenName("dwarvenNames"))+" "+a));break;case"jutlandic":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("jutlandicNames"),a=(yield this.getRandomMaleGivenName("jutlandicNames"))+"sson"):(i=yield this.getRandomFemaleGivenName("jutlandicNames"),a=(yield this.getRandomFemaleGivenName("jutlandicNames"))+"dottir");break;case"kemeshi":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("kemeshiNames"),a="",new r.a("1d100").roll()<3&&(a=(yield this.getRandomMaleGivenName("zaharanNames"))+" "+a),new r.a("1d100").roll()<3&&(a+=" heir of "+(yield this.getRandomMaleGivenName("kemeshiNames"))+" "+a)):(i=yield this.getRandomFemaleGivenName("kemeshiNames"),a="",new r.a("1d100").roll()<3&&(a=(yield this.getRandomFemaleGivenName("zaharanNames"))+" "+a),new r.a("1d100").roll()<3&&(a+=" heiress of "+(yield this.getRandomFemaleGivenName("kemeshiNames"))+" "+a));break;case"krysean":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("kryseanNames"),a=yield this.getRandomMaleGivenName("kryseanNames"),new r.a("1d100").roll()<10&&((a=yield this.getRandomFamilyName("kryseanNames")).endsWith("a")?a+="tar":a+="atar"),new r.a("1d100").roll()<5&&(a=yield this.getRandomFamilyName("tireneanNames"))):(i=yield this.getRandomFemaleGivenName("kryseanNames"),a=yield this.getRandomFemaleGivenName("kryseanNames"),new r.a("1d100").roll()<10&&((a=yield this.getRandomFamilyName("kryseanNames")).endsWith("a")?a+="tar":a+="atar"),new r.a("1d100").roll()<5&&(a=yield this.getRandomFamilyName("tireneanNames")));break;case"kushtu":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("kushtuNames"),a=""):(i=yield this.getRandomFemaleGivenName("kushtuNames"),a="");break;case"nicean":{i="m"===t||"male"===t?yield this.getRandomMaleGivenName("niceanNames"):yield this.getRandomFemaleGivenName("niceanNames");const e=new r.a("1d100").roll();a=e<20?(yield this.getRandomMaleGivenName("niceanNames"))+"adis":e<40?(yield this.getRandomMaleGivenName("niceanNames"))+"akis":e<60?(yield this.getRandomMaleGivenName("niceanNames"))+"atos":e<80?(yield this.getRandomMaleGivenName("niceanNames"))+"ides":(yield this.getRandomMaleGivenName("niceanNames"))+"poulos";break}case"opelenean":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("opeleneanNames"),a="Bar "+(yield this.getRandomMaleGivenName("opeleneanNames"))):(i=yield this.getRandomFemaleGivenName("opeleneanNames"),a="Bat "+(yield this.getRandomFemaleGivenName("opeleneanNames")));break;case"rornish":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("rornishNames"),a=yield this.getRandomMaleGivenName("rornishNames")):(i=yield this.getRandomFemaleGivenName("rornishNames"),a=yield this.getRandomFemaleGivenName("rornishNames")),new r.a("1d100").roll()<5&&(a="Ty "+(yield this.getRandomMaleGivenName("rornishNames")));break;case"shebatean":if("m"===t||"male"===t){if(i=yield this.getRandomMaleGivenName("shebateanNames"),a="Ibn "+(yield this.getRandomMaleGivenName("shebateanNames"))+" ",new r.a("1d100").roll()<5){const e=new r.a("1d4").roll();for(let t=0;t<e;t++)a+="Ibn "+(yield this.getRandomMaleGivenName("shebateanNames"))+" "}}else if(i=yield this.getRandomFemaleGivenName("shebateanNames"),a="Bint "+(yield this.getRandomFemaleGivenName("shebateanNames"))+" ",new r.a("1d100").roll()<5){const e=new r.a("1d4").roll();for(let t=0;t<e;t++)a+="Bint "+(yield this.getRandomMaleGivenName("shebateanNames"))+" "}break;case"somirean":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("somireanNames"),a=(yield this.getRandomMaleGivenName("somireanNames"))+" ",new r.a("1d100").roll()<5&&(a=new r.a("1d100").roll()<50?(yield this.getRandomMaleGivenName("somireanNames"))+"ja":(yield this.getRandomMaleGivenName("somireanNames"))+"yata")):(i=yield this.getRandomFemaleGivenName("somireanNames"),a=(yield this.getRandomMaleGivenName("somireanNames"))+" ",new r.a("1d100").roll()<5&&(a=new r.a("1d100").roll()<50?(yield this.getRandomMaleGivenName("somireanNames"))+"ja":(yield this.getRandomMaleGivenName("somireanNames"))+"yata"));break;case"skysos":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("skysosNames"),a=""):(i=yield this.getRandomFemaleGivenName("skysosNames"),a="");break;case"thrassian":"m"===t||"male"===t?(i=yield this.getRandomMaleGivenName("thrassianNames"),a=""):(i=yield this.getRandomFemaleGivenName("thrassianNames"),a="");break;case"tirenean":i="m"===t||"male"===t?yield this.getRandomMaleGivenName("tireneanNames"):yield this.getRandomFemaleGivenName("tireneanNames"),a=yield this.getRandomFamilyName("tireneanNames"),new r.a("1d100").roll()<5&&(a+=" "+(yield this.getRandomFamilyName("tireneanNames")));break;case"zaharan":if("m"===t||"male"===t){if(i=yield this.getRandomMaleGivenName("zaharanNames"),a="Bet "+(yield this.getRandomMaleGivenName("zaharanNames"))+" ",new r.a("1d100").roll()<5){const e=new r.a("1d4").roll();for(let t=0;t<e;t++)a+="Bet "+(yield this.getRandomMaleGivenName("zaharanNames"))+" "}}else if(i=yield this.getRandomFemaleGivenName("zaharanNames"),a="Bet-"+(yield this.getRandomFemaleGivenName("zaharanNames"))+" ",new r.a("1d100").roll()<5){const e=new r.a("1d4").roll();for(let t=0;t<e;t++)a+="Bet-"+(yield this.getRandomMaleGivenName("zaharanNames"))+" "}}return""!==a?i+" "+a:i}))}}return e.ngInjectableDef=l.Yb({factory:function(){return new e(l.Zb(n.a))},token:e,providedIn:"root"}),e})()},"lx0+":function(e,t,a){"use strict";var i=a("mrSG"),r=a("xbY4"),l=a("8Y7J"),n=a("DoN9"),s=a("vUMC");let o=(()=>{class e{constructor(e){this.csvProvider=e}getProficiencyMatrix(){return i.__awaiter(this,void 0,void 0,(function*(){return(yield this.csvProvider.getCsvData("proficiencies").toProm
1ise()).getDataMatrix()}))}getProficiencyList(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=(yield this.csvProvider.getCsvData("proficiencies").toPromise()).getRowByHeader(e);return void 0!==t&&t.shift(),t}))}getEquipmentyList(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=(yield this.csvProvider.getCsvData("equipment").toPromise()).getRowByHeader(e);return void 0!==t&&t.shift(),t}))}getClassRequirementsList(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=yield this.csvProvider.getCsvData("classRequirements").toPromise(),a=yield t.getRowByHeader(e);return void 0!==a&&a.shift(),a}))}}return e.ngInjectableDef=l.Yb({factory:function(){return new e(l.Zb(s.a))},token:e,providedIn:"root"}),e})();var d=a("c0WW"),h=a("VICL");let c=(()=>{class e{constructor(e){this.csvProvider=e}getRandomOccupation(){return i.__awaiter(this,void 0,void 0,(function*(){const e=yield this.csvProvider.getCsvData("npcOccupations").toPromise(),t=["Urban","Rural"],a=t[new r.a("1d"+t.length).roll()-1],i=e.getColumnByHeader(a)[new r.a("1d20").roll()-1],l=i.split(" ")[0],n=i.split(" ")[1];return e.getColumnByHeader(l)[new r.a(n).roll()-1]}))}getBuild(e,t,a,r){return i.__awaiter(this,void 0,void 0,(function*(){const i=yield this.getBuildArray(t,a),l=this.getHeight(i[1],e,t,r),n=this.getWeight(i[2],e,t,r),s=[];return s.push("Build: "+i[0]),s.push("Height: "+l+"\xb4\xb4 ("+Math.ceil(l/.3937)+" cm)"),s.push("Weight: "+n+"lbs. ("+Math.floor(n/2.2)+" kg)"),s}))}getEyeColor(e,t){return i.__awaiter(this,void 0,void 0,(function*(){return(yield this.csvProvider.getCsvData(e+"Desc").toPromise()).getColumnByHeader(t+"EyeColor")[new r.a("1d20").roll()-1]}))}getHairColor(e,t){return i.__awaiter(this,void 0,void 0,(function*(){return(yield this.csvProvider.getCsvData(e+"Desc").toPromise()).getColumnByHeader(t+"HairColor")[new r.a("1d20").roll()-1]}))}getHairTexture(e,t){return i.__awaiter(this,void 0,void 0,(function*(){return(yield this.csvProvider.getCsvData(e+"Desc").toPromise()).getColumnByHeader(t+"HairTexture")[new r.a("1d20").roll()-1]}))}getSkinColor(e,t){return i.__awaiter(this,void 0,void 0,(function*(){return(yield this.csvProvider.getCsvData(e+"Desc").toPromise()).getColumnByHeader(t+"SkinColor")[new r.a("1d20").roll()-1]}))}getScaleColor(){return i.__awaiter(this,void 0,void 0,(function*(){return(yield this.csvProvider.getCsvData("ThrassianDesc").toPromise()).getColumnByHeader("ThrassianScaleColor")[new r.a("1d20").roll()-1]}))}getScalePatchExtent(){return i.__awaiter(this,void 0,void 0,(function*(){return(yield this.csvProvider.getCsvData("ThrassianDesc").toPromise()).getColumnByHeader("ThrassianScalePatchExtent")[new r.a("1d20").roll()-1]}))}getPhysicalFeatures(e,t){return i.__awaiter(this,void 0,void 0,(function*(){let a;const i=yield this.csvProvider.getCsvData("PhysicalFeatures").toPromise();let l="";const n=[];t<0?(a=-1*t,l="Negative"):0===t?(a=1,l="Average"):(a=t,l="Positive");for(let t=0;t<a;t++){const t=i.getColumnByHeader(l)[new r.a("1d100").roll()-1];"Roll Twice"===t?a+=2:"Thrassian"===e&&t.startsWith("Hair")?a++:n.push(t)}return n}))}getBelongings(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=yield this.csvProvider.getCsvData("Belongings").toPromise(),a=["ArmorOrWeapons","Clothing","Headwear","PersonalAdornments"][new r.a("1d4").roll()-1],i=t.getColumnByHeader(a);let l=[];"L"===e?l=t.getColumnByHeader("Lawful"+a):"C"===e&&(l=t.getColumnByHeader("Chaotic"+a));const n=l.filter(e=>""!==e),s=i.concat(n),o=[];return o.push(a.slice(0,1).toUpperCase()+a.slice(1).replace(/([A-Z])/g," $1")+" - "+s[new r.a("1d"+s.length).roll()-1]),o}))}getHeight(e,t,a,i){let l,n=new r.a("2d4");switch(a){case"Dwarf":l="male"===t?43+n.roll():41+n.roll();break;case"Elf":l="male"===t?61+n.roll():57+n.roll();break;case"Gnome":l="male"===t?34+n.roll():32+n.roll();break;case"Halfling":l="male"===t?32+n.roll():30+n.roll();break;case"Thrassian":n=new r.a("2d6"),l="male"===t?71+n.roll():67+n.roll();break;case"Celdorean":n=new r.a("2d6"),l="male"===t?62+n.roll():57+n.roll();break;case"Corcani":n=new r.a("2d6"),l="male"===t?61+n.roll():56+n.roll();break;case"Jutlander":n=new r.a("2d6"),l="male"===t?63+n.roll():58+n.roll();break;case"Krysean":n=new r.a("2d6"),l="male"===t?61+n.roll():56+n.roll();break;case"Kushtu":n=new r.a("2d6"),l="male"===t?63+n.roll():58+n.roll();break;case"Nicean":n=new r.a("2d6"),l="male"===t?61+n.roll():56+n.roll();break;case"Rornish":n=new r.a("2d6"),l="male"===t?63+n.roll():58+n.roll();break;case"Shebatean":n=new r.a("2d6"),l="male"===t?61+n.roll():56+n.roll();break;case"Skysos":case"Tirenean":case"Zaharan":n=new r.a("2d6"),l="male"===t?62+n.roll():57+n.roll();break;default:n=new r.a("2d6"),l="male"===t?60+n.roll():55+n.roll()}return i&&(l+=2),Math.floor(l*e)}
1getWeight(e,t,a,i){let l,n=new r.a("4d10");switch(a){case"Dwarf":l="male"===t?130+n.roll():110+n.roll();break;case"Elf":n=new r.a("6d6"),l="male"===t?110+n.roll():90+n.roll();break;case"Gnomish":n=new r.a("4d6"),l="male"===t?30+n.roll():25+n.roll();break;case"Halfling":n=new r.a("4d8"),l="male"===t?32+n.roll():30+n.roll();break;case"Thrassian":n=new r.a("8d6"),l="male"===t?235+n.roll():215+n.roll();break;case"Celdorean":n=new r.a("8d6"),l="male"===t?115+n.roll():94+n.roll();break;case"Corcani":n=new r.a("8d6"),l="male"===t?113+n.roll():93+n.roll();break;case"Jutlander":n=new r.a("8d6"),l="male"===t?124+n.roll():101+n.roll();break;case"Kemeshi":n=new r.a("8d6"),l="male"===t?100+n.roll():82+n.roll();break;case"Krysean":n=new r.a("8d6"),l="male"===t?117+n.roll():96+n.roll();break;case"Kushtu":n=new r.a("8d6"),l="male"===t?115+n.roll():94+n.roll();break;case"Nicean":case"Opelenean":n=new r.a("8d6"),l="male"===t?117+n.roll():96+n.roll();break;case"Rornish":n=new r.a("8d6"),l="male"===t?120+n.roll():98+n.roll();break;case"Somirean":n=new r.a("8d6"),l="male"===t?113+n.roll():93+n.roll();break;case"Tirenean":n=new r.a("8d6"),l="male"===t?117+n.roll():96+n.roll();break;case"Zaharan":n=new r.a("8d6"),l="male"===t?107+n.roll():88+n.roll();break;default:n=new r.a("8d6"),l="male"===t?110+n.roll():90+n.roll()}return i&&(l+=8),Math.floor(l*e)}getBuildArray(e,t){return i.__awaiter(this,void 0,void 0,(function*(){const a=2*t;let i,l="Human";i=a<0?"2d6"+a.toString():"2d6+"+a.toString();let n=new r.a(i).roll();n<1&&(n=1),"Elf"===e?l="Elf":"Meniri"!==e&&"Jutting"!==e||(l="Dwarf");const s=[],o=yield this.csvProvider.getCsvData(l+"Desc").toPromise(),d=o.getColumnByHeader("build"),h=o.getColumnByHeader("height"),c=o.getColumnByHeader("weight");return s.push(d[n-1]),s.push(h[n-1]),s.push(c[n-1]),s}))}getPositiveCharacterTrait(){return i.__awaiter(this,void 0,void 0,(function*(){const e=(yield this.csvProvider.getCsvData("TraitsPositive").toPromise()).getRow(0);return e[new r.a("1D"+e.length).roll()-1]}))}getNegativeCharacterTrait(){return i.__awaiter(this,void 0,void 0,(function*(){const e=(yield this.csvProvider.getCsvData("TraitsNegative").toPromise()).getRow(0);return e[new r.a("1D"+e.length).roll()-1]}))}getNeutralCharacterTrait(){return i.__awaiter(this,void 0,void 0,(function*(){const e=(yield this.csvProvider.getCsvData("TraitsNeutral").toProm
1ise()).getRow(0);return e[new r.a("1D"+e.length).roll()-1]}))}getCharacterTraits(e){return i.__awaiter(this,void 0,void 0,(function*(){let t;if(e<=-2)t=(yield this.getNegativeCharacterTrait())+" and "+(yield this.getNegativeCharacterTrait());else if(-1===e)t=(yield this.getNegativeCharacterTrait())+" and "+(yield this.getNeutralCharacterTrait());else if(0===e){const e=new r.a("1d100");t=e.roll()<=25?(yield this.getNegativeCharacterTrait())+" but "+(yield this.getPositiveCharacterTrait()):e.roll()<=50?(yield this.getNeutralCharacterTrait())+" and "+(yield this.getNegativeCharacterTrait()):e.roll()<=75?(yield this.getNeutralCharacterTrait())+" and "+(yield this.getPositiveCharacterTrait()):(yield this.getPositiveCharacterTrait())+" but "+(yield this.getNegativeCharacterTrait())}else 1===e?t=(yield this.getPositiveCharacterTrait())+" and "+(yield this.getNeutralCharacterTrait()):e>=2&&(t=(yield this.getPositiveCharacterTrait())+" and "+(yield this.getPositiveCharacterTrait()));return t}))}}return e.ngInjectableDef=l.Yb({factory:function(){return new e(l.Zb(s.a))},token:e,providedIn:"root"}),e})(),m=(()=>{class e{constructor(e){this.csvProvider=e}getNpcXp(e,t){return i.__awaiter(this,void 0,void 0,(function*(){let a=0;const i=yield this.csvProvider.getCsvData("xpChart").toPromise(),r=i.searchInColumn(0,t),l=i.getRow(r);return["Mage","Elven Spellsword","Elven Nightblade"].includes(e)?a=2*parseInt(l[2],10):["Cleric","Dwarven Craftpriest","Bladedancer"].includes(e)&&(a=parseInt(l[2],10)),a+parseInt(l[1],10)}))}}return e.ngInjectableDef=l.Yb({factory:function(){return new e(l.Zb(s.a))},token:e,providedIn:"root"}),e})();a.d(t,"a",(function(){return g}));let g=(()=>{class e{constructor(e,t,a,i,r,l,n){this.spellProvider=e,this.npcTableProvider=t,this.npcNamesProvider=a,this.treasureTableService=i,this.csvProvider=r,this.npcDescriptionProvider=l,this.xpService=n}generateRandomNpcWithBaseLevel(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=this.getRandomClass(),a=this.getRandomLevel(e);return yield this.generateCustomNpc(t,a,"","","")}))}generateRandomEthnicNpc(e,t,a,r){return i.__awaiter(this,void 0,void 0,(function*(){return"Random"===t?("Random"===a&&(a=this.getRandomClass()),t=this.getRandomEthnicity(a)):"Random"===a&&(a=this.getRandomHumanClass()),r&&(e=this.getRandomLevel(e)),this.generateCustomNpc(a,e,"",t,"")}))}generateRandomNpcWithAlignment(e,t,a){return i.__awaiter(this,void 0,void 0,(function*(){""!==t&&"Random"!==t||(t=this.getRandomClass());const i=this.getRandomLevel(e);return this.generateCustomNpc(t,i,a,"","")}))}generateNpc(e,t){return i.__awaiter(this,void 0,void 0,(function*(){return yield this.generateCustomNpc(e,t,"","","")}))}generateCustomNpc(e,t,a,r,l){return i.__awaiter(this,void 0,void 0,(function*(){const i=yield this.getRolledClassStats(e),n=new u(e,t,i);return n.sex=""===l?this.getRandomSex(n.klasse):l,n.ethnicity=""===r?this.getRandomEthnicity(n.klasse):r,n.alignment=""===a?this.getRandomAlignment(e):a,n.hp=this.getHp(n.level,n.klasse,n.conBonus),n.name=yield this.getName(n.ethnicity,n.sex),n.description=yield this.getDescription(n.sex,n.ethnicity,n.alignment,n.strBonus,n.chaBonus),n.proficiencies=yield this.getProficiencies(n.klasse,n.level,n.intBonus),n.equipment=yield this.getEquipment(n.klasse),n.ac=this.getAC(n.proficiencies,n.equipment,n.dexBonus,n.level,n.klasse),n.initiative=this.getInitiative(n.proficiencies,n.dexBonus),n.hearNoise=this.getHearNoise(n.proficiencies,n.klasse,n.level),n.encumbrance=this.getEncumbrance(n.equipment),n.animalCompanion=yield this.getAnimalCompanion(),n.treasure=yield this.getTreasure(n.level),n.magicItems=yield this.getMagicItems(n.level),n.movement=this.getMovement(n.proficiencies,n.encumbrance),n.spells=yield this.getSpells(n.klasse,n.level,n.intBonus),n.spellsPerDay=yield this.spellProvider.getSpellsPerDay(n.klasse,n.level),n.spellsPerDayString=yield this.getSpellsPerDay(n.klasse,n.level),n.thiefSkills=yield this.getThiefSkills(n.klasse,n.level,n.proficiencies),n.classAbilities=yield this.getClassAbilities(n.klasse,n.level),n.morale=this.getMorale(n.chaBonus,n.wisBonus),n.xp=yield this.getXp(n.klasse,n.level),n.save=yield this.get
1Saves(n.klasse,n.level,n.proficiencies,n.wisBonus),n.weaponStats=yield this.getWeaponStats(n.klasse,n.level,n.strBonus,n.dexBonus,n.equipment,n.spellsPerDay),n}))}generateHenchman(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=this.getRandomClass();return this.generateCustomNpc(0!==e?t:"Normal Men",e,"","","")}))}getRandomHumanClass(){return["","","Explorer","Bladedancer","Cleric","Fighter","Fighter","Fighter","Thief","Mage","Assassin","Bard"][new r.a("3d4").roll()]}getRandomClass(){return["","","Elven Nightblade","Elven Nightblade","Elven Spellsword","Explorer","Bladedancer","Cleric","Fighter","Fighter","Fighter","Thief","Mage","Assassin","Bard","Dwarven Vaultguard","Dwarven Craftpriest","Dwarven Craftpriest"][new r.a("3d6").roll()]}getRandomLevel(e){let t;return(t=+e+ +[-2,-1,0,0,1,2][new r.a("1d6").roll()-1])<1?t=1:t>14&&(t=14),t}getRandomAlignment(e){const t=["L","L","N","N","N","C"];return"Cleric"===e&&t.splice(2,3),"Bladedancer"===e&&t.splice(2,4),"Dwarf"===e&&t.splice(5,1),t[new r.a("1d"+t.length).roll()-1]}getClassSaves(e,t){return i.__awaiter(this,void 0,void 0,(function*(){switch(e){case"Assassin":case"Explorer":e="Fighter";break;case"Bladedancer":e="Cleric";break;case"Bard":e="Thief";break;case"Normal Men":e="Normal Men",t=1}const a=e.replace(" ",""),i=(yield this.csvProvider.getCsvData(a+"Saves").toPromise()).getRow(t-1),r=[];for(const e of i)r.push(parseInt(e,10));return r.pop(),r}))}getRandomSex(e){let t;return t=1===new r.a("1d2").roll()?"male":"female","Bladedancer"===e&&(t="female"),t}getRandomEthnicity(e){const t=["Celdorean","Corcani","Jutlander","Kemeshi","Krysean","Kushtu","Nicean","Opelenean","Rornish","Shebatean","Skysos","Syrnasi","Somirean","Tirenean","Zaharan"],a=["Meniri","Jutting"];let i="";return(i=e.startsWith("Elven")?"Elf":e.startsWith("Dwarven")?a[new r.a("1d"+a.length).roll()-1]:t[new r.a("1d"+t.length).roll()-1]).charAt(0).toUpperCase()+i.slice(1).toLowerCase()}getDescription(e,t,a,r,l){return i.__awaiter(this,void 0,void 0,(function*(){let i="Human";"Elf"===t?i="Elf":"Meniri"===t||"Jutting"===t?i="Dwarf":"Thrassian"===t&&(i="Thrassian");const n=[];return n.push((a="L"===a?"Lawful":"C"===a?"Chaotic":"Neutral")+" "+t+" who worked as/for a "+(yield this.npcDescriptionProvider.getRandomOccupation())),n.push(yield this.npcDescriptionProvider.getBuild(e,t,r,!1)),n.push("Eye color: "+(yield this.npcDescriptionProvider.getEyeColor(i,t))),"Thrassian"===t?(n.push("Scale color: "+(yield this.npcDescriptionProvider.getScaleColor())),n.push("Scale patch extend: "+(yield this.npcDescriptionProvider.getScalePatchExtent()))):(n.push("Hair color: "+(yield this.npcDescriptionProvider.getHairColor(i,t))),n.push("Hair texture: "+(yield this.npcDescriptionProvider.getHairTexture(i,t))),n.push("Skin color: "+(yield this.npcDescriptionProvider.getSkinColor(i,t)))),n.push("Physical features: "+(yield this.npcDescriptionProvider.getPhysicalFeatures(t,l))),n.push("Personal belongings: "+(yield this.npcDescriptionProvider.getBelongings(a))),n.push("Character traits: "+(yield this.npcDescriptionProvider.getCharacterTraits(l))),n}))}getMagicItems(e){return i.__awaiter(this,void 0,void 0,(function*(){return e>0?yield this.treasureTableService.generateNPCMagicItems(e):[]}))}getTreasure(e){return i.__awaiter(this,void 0,void 0,(function*(){if(e>0){const t="Level "+e+" NPC";return yield this.treasureTableService.generateNPCTreasure(t)}return[]}))}getInitiative(e,t){let a=t;return e.filter(e=>e.includes("Combat Reflexes")).length>=1&&(a+=1),a}getNotSoRandomProficiency(e,t){return(t.indexOf(e)>=0&&["Alchemy","Animal Husbandry","Animal Training","Art","Collegiate  Wizardry","Combat Trickery","Craft","Engineering","Fighting Style","Gambling","Healing","Knowledge","Labor","Language","Laying on Hands","Magical Engineering","Manual  of  Arms","Military Strategy","Performance","Profession","Theology","Weapon  Focus"].indexOf(e)<0?"***Judges Choice***":e).trim()}getProficiencies(e,t,a){return i.__awaiter(this,void 0,void 0,(function*(){let i=[];"Normal Men"!==e&&(i=yield this.npcTableProvider.getProficiencyList(e));const l=yield this.npcTableProvider.getProficiencyList("General"),n=i.length,s=["Adventuring"],o=new r.a("1d"+l.length),d=new r.a("1d"+n);for(let e=0;e<a;e++)s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s));switch(e){case"Assassin":case"Dwarven Vaultguard":case"Elven Spellsword":case"Explorer":case"Fighter":t>=1&&(s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s))),t>=3&&s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s)),t>=5&&s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),t>=6&&s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s)),t>=9&&(s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s))),t>=12&&s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s)),t>=13&&s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s));break;case"Mage":t>=1&&(s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s))),t>=5&&s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),t>=6&&s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s)),t>=9&&s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),t>=12&&s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s)),t>=13&&s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s));break;case"Bard":case"Bladedancer":case"Cleric":case"Dwarven Craftpriest":case"Elven Nightblade":case"Thief":t>=1&&(s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s))),t>=4&&s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s)),t>=5&&s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),t>=8&&s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s)),t>=9&&s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),t>=12&&s.push(this.getNotSoRandomProficiency(i[d.roll()-1],s)),t>=13&&s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s));break;case"Normal Men":s.pop(),s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s)),s.push(this.getNotSoRandomProficiency(l[o.roll()-1],s))}return s}))}getName(e,t){return i.__awaiter(this,void 0,void 0,(function*(){return(yield this.npcNamesProvider.getRandomNameFromRaceOrCulture(e,t)).trim()}))}getRolledStats(){const e=new r.a("3d6"),t=[];for(let a=0;a<6;a++)t.push(e.roll());return t}getRolledClassStats(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=yield this.npcTableProvider.getClassRequirementsList(e);let a,i=[];do{a=!1,i=this.getRolledStats();for(let e=0;e<6;e++)i[e]-parseInt(t[e],10)<0&&(a=!0)}while(a);return i}))}getHearNoise(e,t,a){let i=18;return"Thief"===t?i=15-a:"Normal Men"===t&&(i=20),e.filter(e=>e.includes("Alertness")).length>=1&&(i-=4),i}getEncumbrance(e){let t=0,a=e.filter(e=>e.includes("(2H)")).length;return a+=e.filter(e=>e.includes("Shield")).length,a+=e.filter(e=>e.includes("Armor")).length,t+=(e.length-a)/6,t+=a,e.filter(e=>e.includes("Leather Armor")).length>=1&&(t+=1),e.filter(e=>e.includes("Ring Mail or Scale Armor")).length>=1&&(t+=2),e.filter(e=>e.includes("Chain Mail Armor")).length>=1&&(t+=3),e.filter(e=>e.includes("Banded Plate or Lamellar Armor")).length>=1&&(t+=4),e.filter(e=>e.includes("Plate Armor")).length>=1&&(t+=5),Math.ceil(t)}getAC(e,t,a,i,r){let l=0;return e.filter(e=>e.includes("Swashbuckling")).length>=1&&(l+=1,i>=7&&(l+=1),i>=13&&(l+=1)),"Bladedancer"===r&&(l+=1,i>=7&&(l+=1),i>=13&&(l+=1)),t.filter(e=>e.includes("Hide and Fur Armor")).length>=1&&(l=1,e.filter(e=>e.includes("Swashbuckling")).length>=1&&(l+=1,i>=7&&(l+=1),i>=13&&(l+=1)),"Bladedancer"===r&&(l+=1,i>=7&&(l+=1),i>=13&&(l+=1))),t.filter(e=>e.includes("Leather Armor")).length>=1&&(l=2,e.filter(e=>e.includes("Swashbuckling")).length>=1&&(l+=1,i>=7&&(l+=1),i>=13&&(l+=1)),"Bladedancer"===r&&(l+=1,i>=7&&(l+=1),i>=13&&(l+=1))),t.filter(e=>e.includes("Ring Mail or Scale Armor")).length>=1&&(l=3),t.filter(e=>e.includes("Chain Mail Armor")).length>=1&&(l=4),t.filter(e=>e.includes("Banded Plate or Lamellar Armor")).length>=1&&(l=5),t.filter(e=>e.includes("Plate Armor")).length>=1&&(l=6),t.filter(e=>e.includes("Shield")).length>=1&&(l+=1,e.filter(e=>e.includes("Weapon and Shield")).length>=1&&(l+=1)),l+a}getMovement(e,t){let a=120;return t>5&&(a=90),t>7&&(a=60),t>10&&(a=30),e.filter(e=>
1e.includes("Running")).length>=1&&(a+=30),a}getToHit(e,t,a,i,r){const l=this.getClassHitBonus(e,t);return r.filter(e=>e.includes("Weapon Finesse")).length>=1&&a<i?"Melee: "+(l-i)+"+ / Ranged: "+(l-i)+"+":"Melee: "+(l-a)+"+ / Ranged: "+(l-i)+"+"}getClassHitBonus(e,t){let a=10;switch(e){case"Assassin":case"Dwarven Vaultguard":case"Elven Spellsword":case"Explorer":case"Fighter":t>=2&&(a=9),t>=4&&(a=8),t>=5&&(a=7),t>=7&&(a=6),t>=8&&(a=5),t>=10&&(a=4),t>=11&&(a=3),t>=13&&(a=2),t>=14&&(a=1);break;case"Mage":t>=4&&(a=9),t>=7&&(a=8),t>=10&&(a=7),t>=13&&(a=6);break;case"Bard":case"Bladedancer":case"Cleric":case"Dwarven Craftpriest":case"Elven Nightblade":case"Thief":t>=3&&(a=9),t>=5&&(a=8),t>=7&&(a=7),t>=9&&(a=6),t>=11&&(a=5),t>=13&&(a=4);break;case"Normal Men":a=11}return a}getDamageBonus(e,t,a){let i=0;switch(e){case"Assassin":case"Dwarven Vaultguard":case"Elven Spellsword":case"Explorer":case"Fighter":i=1,t>=3&&(i=2),t>=6&&(i=3),t>=9&&(i=4),t>=12&&(i=5)}return"Melee: "+(a+=i)+" / Ranged: "+i}getMeleeDamageBonus(e,t,a){let i=0;switch(e){case"Assassin":case"Dwarven Vaultguard":case"Elven Spellsword":case"Explorer":case"Fighter":i=1,t>=3&&(i=2),t>=6&&(i=3),t>=9&&(i=4),t>=12&&(i=5)}return(a+=i)>0?"+"+a:a<0?a.toString():""}getRangedDamageBonus(e,t){let a=0;switch(e){case"Assassin":case"Dwarven Vaultguard":case"Elven Spellsword":case"Explorer":case"Fighter":a=1,t>=3&&(a=2),t>=6&&(a=3),t>=9&&(a=4),t>=12&&(a=5)}return 0===a?"":"+"+a.toString()}getWeaponStats(e,t,a,r,l,n){return i.__awaiter(this,void 0,void 0,(function*(){let i,s,o="",d="",h="",c="",m="",g="",u="";const p=(yield this.csvProvider.getCsvData("equipment").toPromise()).getDataMatrix(),v=p[17],y=p[18],w=p[19],f=p[20],N=p[21],R=p[22],b=p[23],C=p[24],P=p[25],S=this.getRangedDamageBonus(e,t),k=this.getMeleeDamageBonus(e,t,a),D=this.getClassHitBonus(e,t);if(0===l.filter(e=>e.includes("Shield")).length?l.filter(e=>P.includes(e)).map(e=>c=e).length>0?o="1D10":l.filter(e=>b.includes(e)).map(e=>c=e).length>0?(o="1D8",c+=" (2H)"):l.filter(e=>N.includes(e)).map(e=>c=e).length>0?o="1D6":l.filter(e=>w.includes(e)).map(e=>c=e).length>0?o="1D4":l.filter(e=>v.includes(e)).map(e=>c=e).length>0&&(o="1D2"):l.filter(e=>b.includes(e)).map(e=>c=e).length>0?o="1D6":l.filter(e=>N.includes(e)).map(e=>c=e).length>0?o="1D6":l.filter(e=>w.includes(e)).map(e=>c=e).length>0?o="1D4":l.filter(e=>v.includes(e)).map(e=>c=e).length>0&&(o="1D2"),l.filter(e=>C.includes(e)).map(e=>h=e).length>0?d="1D8":l.filter(e=>R.includes(e)).map(e=>h=e).length>0?d="1D6":l.filter(e=>f.includes(e)).map(e=>h=e).length>0?d="1D4":l.filter(e=>y.includes(e)).map(e=>h=e).length>0&&(d="1D2"),i=D-a,s=D-r,""!==c&&""===h)m=c+" "+i+"+",g=o+k;else if(""===c&&""!==h)m=h+" "+s+"+",g=d+S;else if(""!==c&&""!==h){m=c+" "+i==h+" "+s?c+" "+i+"+":c+" "+i+"+ or "+h+" "+s+"+";const e=o+k,t=d+S;g=e===t?e:e+" or "+t}else m="Hands",g="1D2 non-lethal";return"#AT 1 ("+m+(u=0===n[0]?"":" or spell")+"), DMG "+g}))}getEquipment(e){return i.__awaiter(this,void 0,void 0,(function*(){const t=[],a=yield this.npcTableProvider.getEquipmentyList("Armor"),i=yield this.npcTableProvider.getEquipmentyList("Clothing"),l=yield this.npcTableProvider.getEquipmentyList("Bows and Crossbows"),n=yield this.npcTableProvider.getEquipmentyList("Equipment"),s=new r.a("1d100");let o=new r.a("1d"+i.length);switch(t.push(i[o.roll()-1]),t.push(i[o.roll()-1]),o=new r.a("1d"+n.length),t.push(n[o.roll()-1]),t.push(n[o.roll()-1]),t.push(n[o.roll()-1]),e){case"Fighter":{const e=yield this.npcTableProvider.getEquipmentyList("FighterWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]),t.push(e[o.roll()-1]),0===t.filter(e=>e.includes("(2H)")).length&&t.push("Shield");let i=(o=new r.a("1d6+1")).roll();i>6&&(i=6),t.push(a[i-1]);break}case"Mage":{const e=yield this.npcTableProvider.getEquipmentyList("MageWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]);break}case"Cleric":{const e=yield this.npcTableProvider.getEquipmentyList("ClericWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]),0===t.filter(e=>e.includes("(2H)")).length&&t.push("Shield");let i=(o=new r.a("1d6+1")).roll();i>6&&(i=6),t.push(a[i-1]);break}case"Thief":{const e=yield this.npcTableProvider.getEquipmentyList("ThiefWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]),t.push(e[o.roll()-1]);let i=(o=new r.a("1d4")).roll();i>2&&(i=2),t.push(a[i-1]);break}case"Assassin":{const e=yield this.npcTableProvider.getEquipmentyList("FighterWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]),s.roll()<=25&&(o=new r.a("1d"+l.length),t.push(l[o.roll()-1])),0===t.filter(e=>e.includes("(2H)")).length&&t.push("Shield");const i=(o=new r.a("1d6")).roll();t.push(a[i-1]);break}case"Bard":{const e=yield this.npcTableProvider.getEquipmentyList("ThiefWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]);let i=(o=new r.a("1d4")).roll();i>2&&(i=2),t.push(a[i-1]);break}case"Bladedancer":{const e=yield this.npcTableProvider.getEquipmentyList("BladedancerWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]);let i=(o=new r.a("1d4")).roll();i>2&&(i=2),t.push(a[i-1]);break}case"Explorer":{const e=yield this.npcTableProvider.getEquipmentyList("ThiefWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]),0===t.filter(e=>e.includes("(2H)")).length&&t.push("Shield"),o=new r.a("1d"+l.length),t.push(l[o.roll()-1]);const i=(o=new r.a("1d3")).roll();t.push(a[i-1]);break}case"Dwarven Vaultguard":{const e=yield this.npcTableProvider.getEquipmentyList("Dwarven VaultguardWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]),t.push(e[o.roll()-1]),t.push(e[o.roll()-1]),0===t.filter(e=>e.includes("(2H)")).length&&t.push("Shield");let i=(o=new r.a("1d6+1")).roll();i>6&&(i=6),t.push(a[i-1]);break}case"Dwarven Craftpriest":{const e=yield this.npcTableProvider.getEquipmentyList("Dwarven CraftpriestWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]),0===t.filter(e=>e.includes("(2H)")).length&&t.push("Shield");let i=(o=new r.a("1d6+1")).roll();i>6&&(i=6),t.push(a[i-1]);break}case"Elven Spellsword":{const e=yield this.npcTableProvider.getEquipmentyList("FighterWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]),0===t.filter(e=>e.includes("(2H)")).length&&t.push("Shield"),s.roll()<=75&&(o=new r.a("1d"+l.length),t.push(l[o.roll()-1]));let i=(o=new r.a("1d6+1")).roll();i>6&&(i=6),t.push(a[i-1]);break}case"Elven Nightblade":{const e=yield this.npcTableProvider.getEquipmentyList("ThiefWeapons");o=new r.a("1d"+e.length),t.push(e[o.roll()-1]);let i=(o=new r.a("1d4")).roll();i>2&&(i=2),t.push(a[i-1]);break}}return t}))}getThiefSkills(e,t,a){return i.__awaiter(this,void 0,void 0,(function*(){const i=[],r=[];if("Normal Men"===e||0===t)return[];
1const l=yield this.csvProvider.getCsvData("thiefSkills").toPromise(),n=l.getRow(0);return"Thief"===e?(i.push(parseInt(l.getRow(t)[0],10)),i.push(parseInt(l.getRow(t)[1],10)),i.push(parseInt(l.getRow(t)[2],10)),i.push(parseInt(l.getRow(t)[3],10)),i.push(parseInt(l.getRow(t)[4],10)),i.push(parseInt(l.getRow(t)[5],10)),i.push(parseInt(l.getRow(t)[6],10)),a.filter(e=>e.includes("Lockpicking")).length>=1&&(i[0]=i[0]-2),a.filter(e=>e.includes("Skulking")).length>=1&&(i[4]=i[4]-2,i[5]=i[5]-2),a.filter(e=>e.includes("Trap Finding")).length>=1&&(i[1]=i[1]-2),r.push(n[0]+" "+i[0]+"+"),r.push(n[1]+" "+i[1]+"+"),r.push(n[2]+" "+i[2]+"+"),r.push(n[3]+" "+i[3]+"+"),r.push(n[4]+" "+i[4]+"+"),r.push(n[5]+" "+i[5]+"+"),r.push(n[6]+" "+i[6]+"+")):"Assassin"===e?(i.push(parseInt(l.getRow(t)[3],10)),i.push(parseInt(l.getRow(t)[5],10)),a.filter(e=>e.includes("Skulking")).length>=1&&(i[0]=i[0]-2,i[1]=i[1]-2),r.push(n[3]+" "+i[0]+"+"),r.push(n[5]+" "+i[1]+"+")):"Elven Nightblade"===e&&(i.push(parseInt(l.getRow(t)[3],10)),i.push(parseInt(l.getRow(t)[4],10)),i.push(parseInt(l.getRow(t)[5],10)),a.filter(e=>e.includes("Skulking")).length>=1&&(i[0]=i[0]-2,i[2]=i[2]-2),r.push(n[3]+" "+i[0]+"+"),r.push(n[4]+" "+i[1]+"+"),r.push(n[5]+" "+i[2]+"+")),r}))}getAnimalCompanion(){return i.__awaiter(this,void 0,void 0,(function*(){const e=yield this.npcTableProvider.getEquipmentyList("Animal");return new r.a("1d100").roll()<=20?e[new r.a("1d"+e.length).roll()-1]:""}))}getHp(e,t,a){let i=0;switch(t){case"Dwarven Vaultguard":case"Fighter":if(e<=9)i=new r.a(e+"d8+"+e*a).roll();else{i=new r.a("9d8+"+9*a).roll();let l=2*(e-9);"Dwarven Vaultguard"===t&&(l=3*(e-9)),i+=l}break;case"Assassin":case"Elven Spellsword":case"Explorer":case"Bard":case"Bladedancer":case"Cleric":case"Dwarven Craftpriest":case"Elven Nightblade":if(e<=9)i=new r.a(e+"d6+"+e*a).roll();else{i=new r.a("9d6+"+9*a).roll();let l=2*(e-9);"Cleric"!==t&&"Bladedancer"!==t||(l=e-9),i+=l}break;case"Thief":case"Mage":if(e<=9)i=new r.a(e+"d4+"+e*a).roll();else{i=new r.a("9d4+"+9*a).roll();let l=2*(e-9);"Mage"===t&&(l=e-9),i+=l}break;case"Normal Men":(i=new r.a("1d4+"+a).roll())<1&&(i=1)}return i<e&&(i=e),i}getClassAbilities(e,t){return i.__awaiter(this,void 0,void 0,(function*(){const a=[],i=(yield this.csvProvider.getCsvData("classAbilities").toPromise()).getRowByHeader(e);for(let e=1;e<=t;e++)if(void 0!==i[e]&&""!==i[e])for(const t of i[e].split(","))if(a.filter(e=>e.includes(t.split(" ")[0])).length>=1){const e=a.indexOf(a.filter(e=>e.includes(t.split(" ")[0]))[0]);a.splice(e,1),a.push(t)}else a.push(t);return a}))}getSaves(e,t,a,r){return i.__awaiter(this,void 0,void 0,(function*(){const i=yield this.getClassSaves(e,t);if(a.filter(e=>e.includes("Divine  Blessing")).length>=1)for(let e=0;e<i.length;e++)i[e]=i[e]-2;for(let e=0;e<i.length;e++)i[e]=i[e]-r;return i}))}getMorale(e,t){let a=0;return e>=1&&a++,(t>0||t<0)&&a++,a}getXp(e,t){return i.__awaiter(this,void 0,void 0,(function*(){return yield this.xpService.getNpcXp(e,t.toString())}))}getSpells(e,t,a){return i.__awaiter(this,void 0,void 0,(function*(){if("Normal Men"===e||0===t)return"";{const i=yield this.spellProvider.getSpells(e,t,a);let r="Spells: ";for(let e=0;i.length>e;e++){r+="Level "+(e+1)+": ";for(let t=0;i[e].length>t;t++)r+=i[e][t]+", ";r=r.substring(0,r.lastIndexOf(", "))+"; "}return r.trim()}}))}getSpellsPerDay(e,t){return i.__awaiter(this,void 0,void 0,(function*(){const a=yield this.spellProvider.getSpellsPerDay(e,t),i=["1st","2nd","3rd","4th","5th","6th"];let r="";if(a[0]>0){r="Spells: ";for(let e=0;a.length>e;e++)0!==a[e]&&(r+=a[e]+" "+i[e]+", ");return(r=r.substring(0,r.lastIndexOf(", "))+"; ").trim()}return""}))}}return e.ngInjectableDef=l.Yb({factory:function(){return new e(l.Zb(n.a),l.Zb(o),l.Zb(d.a),l.Zb(h.a),l.Zb(s.a),l.Zb(c),l.Zb(m))},token:e,providedIn:"root"}),e})();class u{constructor(e,t,a){this.str=a[0],this.strBonus=this.bonus(this.str),this.int=a[1],this.intBonus=this.bonus(this.int),this.wis=a[2],this.wisBonus=this.bonus(this.wis),this.dex=a[3],this.dexBonus=this.bonus(this.dex),this.con=a[4],this.conBonus=this.bonus(this.con),this.cha=a[5],this.chaBonus=this.bonus(this.cha),this.klasse=e,this.level="Dwarven Vaultguard"===e&&t>13?13:"Dwarven Craftpriest"===e&&t>10?10:"Elven Spellsword"===e&&t>10?10:"Elven Nightblade"===e&&t>11?11:t}bonus(e){let t=-3;return e>=4&&(t=-2),e>=6&&(t=-1),e>=9&&(t=0),e>=13&&(t=1),e>=16&&(t=2),e>=18&&(t=3),t}}}}]);

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.