!function r(s,n,o){function l(t,e){if(!n[t]){if(!s[t]){var a="function"==typeof require&&require;if(!e&&a)return a(t,!0);if(i)return i(t,!0);throw(e=new Error("Cannot find module '"+t+"'")).code="MODULE_NOT_FOUND",e}a=n[t]={exports:{}},s[t][0].call(a.exports,function(e){return l(s[t][1][e]||e)},a,a.exports,r,s,n,o)}return n[t].exports}for(var i="function"==typeof require&&require,e=0;e>1&1)*e*255,(t>>2&1)*e*255]},n.ansi256.rgb=function(e){var t;return 232<=e?[t=10*(e-232)+8,t,t]:(e-=16,[Math.floor(e/36)/5*255,Math.floor((t=e%36)/6)/5*255,t%6/5*255])},n.rgb.hex=function(e){e=(((255&Math.round(e[0]))<<16)+((255&Math.round(e[1]))<<8)+(255&Math.round(e[2]))).toString(16).toUpperCase();return"000000".substring(e.length)+e},n.hex.rgb=function(e){var t,e=e.toString(16).match(/[a-f0-9]{6}|[a-f0-9]{3}/i);return e?(t=e[0],3===e[0].length&&(t=t.split("").map(function(e){return e+e}).join("")),[(e=parseInt(t,16))>>16&255,e>>8&255,255&e]):[0,0,0]},n.rgb.hcg=function(e){var t=e[0]/255,a=e[1]/255,e=e[2]/255,r=Math.max(Math.max(t,a),e),s=Math.min(Math.min(t,a),e),n=r-s,s=n<1?s/(1-n):0,r=n<=0?0:r===t?(a-e)/n%6:r===a?2+(e-t)/n:4+(t-a)/n+4;return[360*(r=r/6%1),100*n,100*s]},n.hsl.hcg=function(e){var t=e[1]/100,a=e[2]/100,r=1,s=0,r=a<.5?2*t*a:2*t*(1-a);return[e[0],100*r,100*(s=r<1?(a-.5*r)/(1-r):s)]},n.hsv.hcg=function(e){var t=e[1]/100,a=e[2]/100,t=t*a,a=t<1?(a-t)/(1-t):0;return[e[0],100*t,100*a]},n.hcg.rgb=function(e){var t=e[0]/360,a=e[1]/100,e=e[2]/100;if(0==a)return[255*e,255*e,255*e];var r=[0,0,0],t=t%1*6,s=t%1,n=1-s;switch(Math.floor(t)){case 0:r[0]=1,r[1]=s,r[2]=0;break;case 1:r[0]=n,r[1]=1,r[2]=0;break;case 2:r[0]=0,r[1]=1,r[2]=s;break;case 3:r[0]=0,r[1]=n,r[2]=1;break;case 4:r[0]=s,r[1]=0,r[2]=1;break;default:r[0]=1,r[1]=0,r[2]=n}return[255*(a*r[0]+(t=(1-a)*e)),255*(a*r[1]+t),255*(a*r[2]+t)]},n.hcg.hsv=function(e){var t=e[1]/100,a=t+e[2]/100*(1-t),t=0>16&255,e>>8&255,255&e],this.valpha=1;else{this.valpha=1;t=Object.keys(e),a=("alpha"in e&&(t.splice(t.indexOf("alpha"),1),this.valpha="number"==typeof e.alpha?e.alpha:0),t.sort().join(""));if(!(a in h))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=h[a];for(var s=u[this.model].labels,n=[],o=0;o{const t=`${s.default.isModule?"modules":"systems"}/${s.default.name}/templates/`;return loadTemplates(["sheets/character/attribute.hbs","sheets/character/base_values.hbs","sheets/character/skills.hbs","sheets/character/gear.hbs","sheets/character/spells.hbs","sheets/item/rolls.hbs","chat/roll-m5.hbs"].map(e=>t+e))}},{"./Globals":9}],11:[function(e,t,a){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});const s=r(e("./utils/Logger")),n=r(e("./module/sheets/M5CharacterSheet")),o=r(e("./PreloadTemplates")),l=e("./module/actors/M5Character"),i=e("./module/sheets/M5ItemSheet"),u=e("./module/items/M5Item");Hooks.once("init",async()=>{s.default.log("M5 | Initialisierung Midgard 5"),Handlebars.registerHelper("times",(t,a)=>{var r="";for(let e=0;ee[t]),Handlebars.registerHelper("m5concat",(...e)=>{var t=(null==(t=e.pop().hash)?void 0:t.join)||"";return e.map(e=>e.toString()).join(t)}),Handlebars.registerHelper("add",(...e)=>{e.pop();return e.reduce((e,t)=>e+t)}),Handlebars.registerHelper("localizeMidgard",e=>{return Handlebars.compile("{{localize value}}")({value:"midgard5."+e})}),Handlebars.registerHelper("skillBonus",(e,t)=>{return game.actors.get(e).skillBonus(t).toString()}),Handlebars.registerHelper("skillEw",(e,t)=>{return game.actors.get(e).skillEw(t).toString()}),Handlebars.registerHelper("skill",e=>game.items.get(e)),Handlebars.registerHelper("itemValue",(e,t)=>{let a=game.items.get(e);return t.split(".").forEach(e=>a=a[e]),""+a}),Handlebars.registerHelper("actorItemValue",(e,t,a)=>{let r=game.actors.get(e).items.get(t).system;return a.split(".").forEach(e=>{r=r&&r[e]}),""+r}),Handlebars.registerHelper("icon",e=>"systems/midgard5e/assets/icons/"+e),Handlebars.registerHelper("isSkillInList",(e,t)=>{var a,r;for(r in t)if((null==(a=null==(a=t[r])?void 0:a.label)?void 0:a.toLowerCase())===(null==e?void 0:e.toLowerCase()))return!0;return!1}),Items.unregisterSheet("core",ItemSheet),Items.registerSheet("midgard5",i.M5ItemSheet,{makeDefault:!0}),Actors.unregisterSheet("core",ActorSheet),Actors.registerSheet("midgard5",n.default,{makeDefault:!0}),CONFIG.Actor.documentClass=l.M5Character,CONFIG.Item.documentClass=u.M5Item,await(0,o.default)()}),Hooks.once("setup",()=>{s.default.log("Template module is being setup.")}),Hooks.once("ready",()=>{s.default.ok("Template module is now ready.")})},{"./PreloadTemplates":10,"./module/actors/M5Character":13,"./module/items/M5Item":15,"./module/sheets/M5CharacterSheet":17,"./module/sheets/M5ItemSheet":18,"./utils/Logger":19}],12:[function(e,t,a){"use strict";var r;Object.defineProperty(a,"__esModule",{value:!0}),a.enumKeys=a.M5ModOperation=a.M5ModType=a.M5Stats=a.M5Attributes=a.M5EwResult=void 0,(r=a.M5EwResult||(a.M5EwResult={})).TBD="",r.FUMBLE="roll-ew-result-fumble",r.CRITICAL="roll-ew-result-critical",r.HIGH="roll-ew-result-high",r.FAIL="roll-ew-result-fail",r.PASS="roll-ew-result-pass",(r=a.M5Attributes||(a.M5Attributes={})).ST="st",r.GW="gw",r.GS="gs",r.KO="ko",r.IN="in",r.ZT="zt",r.AU="au",r.PA="pa",r.WK="wk",(r=a.M5Stats||(a.M5Stats={})).DEFENSE="defenseBonus",r.ATTACK="attackBonus",r.DAMAGE="damageBonus",r.MOVEMENT="movement",r.RESISTANCE_MIND="resistanceMind",r.RESISTANCE_BODY="resistanceBody",r.SPELL_CASTING="spellCasting",r.BRAWL="brawl",r.POISON_RESISTANCE="poisonResistance",r.LP="lp",r.AP="ap",(r=a.M5ModType||(a.M5ModType={})).ATTRIBUTE="attribute",r.STAT="stat",r.SKILL="skill",(r=a.M5ModOperation||(a.M5ModOperation={})).ADD_100="add100",r.ADD="add",r.SET="set",r.FIXED="fixed",a.enumKeys=function(e){return Object.keys(e).filter(e=>Number.isNaN(+e))}},{}],13:[function(e,t,a){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0}),a.M5Character=void 0;const s=e("../M5Base"),n=r(e("./M5ModAggregate"));class o extends Actor{static attributeMinMax(e){return Math.min(100,Math.max(0,e.value+e.bonus))}static attributeBonus(e){e=this.attributeMinMax(e);return 95"item"===e.type).forEach(t=>{const a=t.system.mods;Object.keys(a).forEach(e=>{e=a[e];s.push(e,t.name)})}),a.skillMods=s.calculate()}return null!=e&&e.items||null!=(r=t.items)&&r.filter(e=>"item"===e.type).forEach(e=>{e.prepareDerivedData();let t=e.name;e.system.magic&&(t+="*"),a.gear.items[e.id]={label:t,magic:e.system.magic,calc:e.system.calc}}),null!=e&&e.skills||null!=(r=t.items)&&r.filter(e=>"skill"===e.type).forEach(e=>{e.prepareDerivedData(),a.skills[e.system.type][e.id]={label:e.name,fw:e.system.fw,attribute:e.system.attribute,pp:e.system.pp,calc:e.system.calc}}),null!=e&&e.weapons||null!=(r=t.items)&&r.filter(e=>"weapon"===e.type).forEach(e=>{e.prepareDerivedData();let t=e.name;e.system.magic&&(t+="*("+(e.system.stats.attackBonus<0?"":"+")+e.system.stats.attackBonus+"/"+(e.system.stats.damageBonus<0?"":"+")+e.system.stats.damageBonus+")"),a.gear.weapons[e.id]={label:t,skillId:e.system.skillId,magic:e.system.magic,calc:e.system.calc}}),null!=e&&e.defensiveWeapons||null!=(r=t.items)&&r.filter(e=>"defensiveWeapon"===e.type).forEach(e=>{e.prepareDerivedData();let t=e.name;e.system.magic&&(t+="*("+(e.system.stats.defenseBonus<0?"":"+")+e.system.stats.defenseBonus+")"),a.gear.defensiveWeapons[e.id]={label:t,skillId:e.system.skillId,magic:e.system.magic,calc:e.system.calc}}),null!=e&&e.armor||null!=(r=t.items)&&r.filter(e=>"armor"===e.type).forEach(e=>{e.prepareDerivedData();let t=e.name;e.system.magic&&(t+="*"),a.gear.armor[e.id]={label:t,magic:e.system.magic,calc:e.system.calc}}),null!=e&&e.spells||null!=(r=t.items)&&r.filter(e=>"spell"===e.type).forEach(e=>{e.prepareDerivedData(),a.spells[e.id]={label:e.name,process:"midgard5.spell-process-"+e.system.process,calc:e.system.calc}}),a}raceBonus(e){switch(e){case"Elf":return 2;case"Gnom":case"Halbling":return 4;case"Zwerg":return 3;default:return 0}}prepareDerivedData(){console.log("M5Character","prepareDerivedData"),this.system.calc=this.derivedData({})}getRollData(){return{c:this.system,i:null,iType:null,rolls:{},res:{}}}static levelFromExp(t){var e=o.levelThreshold.findIndex(e=>te[0]<=t);return(e||o.defenseThreshold[o.defenseThreshold.length-1])[1]}static spellCastingFromLevel(t){var e=o.spellCastingThreshold.find(e=>e[0]<=t);return(e||o.spellCastingThreshold[o.spellCastingThreshold.length-1])[1]}skillBonus(e,t){var a;return null!=(e=null==(a=null==(a=this.system.calc)?void 0:a.attributes[e.attribute])?void 0:a.bonus)?e:0}skillEw(e,t){t=this.skillBonus(e,t);return e.fw+t}attribute(e){var t=this.system;return null==t?void 0:t.attributes[e]}createSkill(e){return this.createEmbeddedDocuments("Item",[{name:e,type:"skill"}]).then(e=>{return e[0]})}getItem(e){return this.items?this.getEmbeddedDocument("Item",e):null}modResult(e){return{value:e,mods:[{item:game.i18n.localize("ACTOR.TypeCharacter"),operation:s.M5ModOperation.SET,value:e}]}}}(a.M5Character=o).levelThreshold=[0,100,250,500,750,1e3,1250,1500,1750,2e3,2500,3e3,3500,4e3,4500,5e3,6e3,7e3,8e3,9e3,1e4,12500,15e3,17500,2e4,22500,25e3,3e4,35e3,4e4,45e3,5e4,55e3,6e4,65e3,7e4,75e3,8e4,85e3,9e4,95e3,1e5,105e3,11e4,115e3,12e4,125e3,13e4,135e3,14e4,145e3,15e4,155e3,16e4,165e3,17e4,175e3,18e4,185e3,19e4,195e3,2e5,205e3,21e4,215e3,22e4,225e3,23e4,235e3,24e4,245e3,25e4,255e3,26e4,265e3,27e4,275e3,28e4],o.defenseThreshold=[[30,18],[25,17],[20,16],[15,15],[10,14],[5,13],[2,12],[1,11]],o.spellCastingThreshold=[[20,18],[15,17],[10,16],[8,15],[6,14],[4,13],[2,12],[1,11]]},{"../M5Base":12,"./M5ModAggregate":14}],14:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});const s=e("../M5Base");class n{constructor(e,t){this.data=e,this.calc=t,this.attributes=new Map,this.stats=new Map,this.skills=new Map;var a=game.i18n.localize("ACTOR.TypeCharacter");this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.ST,operation:s.M5ModOperation.SET,value:e.attributes.st.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.GS,operation:s.M5ModOperation.SET,value:e.attributes.gs.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.GW,operation:s.M5ModOperation.SET,value:e.attributes.gw.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.KO,operation:s.M5ModOperation.SET,value:e.attributes.ko.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.IN,operation:s.M5ModOperation.SET,value:e.attributes.in.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.ZT,operation:s.M5ModOperation.SET,value:e.attributes.zt.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.AU,operation:s.M5ModOperation.SET,value:e.attributes.au.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.PA,operation:s.M5ModOperation.SET,value:e.attributes.pa.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.WK,operation:s.M5ModOperation.SET,value:e.attributes.wk.value},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.ST,operation:s.M5ModOperation.ADD_100,value:e.attributes.st.bonus},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.GS,operation:s.M5ModOperation.ADD_100,value:e.attributes.gs.bonus},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.GW,operation:s.M5ModOperation.ADD_100,value:e.attributes.gw.bonus},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.KO,operation:s.M5ModOperation.ADD_100,value:e.attributes.ko.bonus},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.IN,operation:s.M5ModOperation.ADD_100,value:e.attributes.in.bonus},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.ZT,operation:s.M5ModOperation.ADD_100,value:e.attributes.zt.bonus},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.AU,operation:s.M5ModOperation.ADD_100,value:e.attributes.au.bonus},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.PA,operation:s.M5ModOperation.ADD_100,value:e.attributes.pa.bonus},a),this.push({type:s.M5ModType.ATTRIBUTE,id:s.M5Attributes.WK,operation:s.M5ModOperation.ADD_100,value:e.attributes.wk.bonus},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.DEFENSE,operation:s.M5ModOperation.SET,value:t.stats.defenseBonus.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.ATTACK,operation:s.M5ModOperation.SET,value:t.stats.attackBonus.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.DAMAGE,operation:s.M5ModOperation.SET,value:t.stats.damageBonus.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.MOVEMENT,operation:s.M5ModOperation.SET,value:t.stats.movementBonus.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.RESISTANCE_MIND,operation:s.M5ModOperation.SET,value:t.stats.resistanceMind.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.RESISTANCE_BODY,operation:s.M5ModOperation.SET,value:t.stats.resistanceBody.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.SPELL_CASTING,operation:s.M5ModOperation.SET,value:t.stats.spellCasting.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.BRAWL,operation:s.M5ModOperation.SET,value:t.stats.brawl.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.POISON_RESISTANCE,operation:s.M5ModOperation.SET,value:t.stats.poisonResistance.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.LP,operation:s.M5ModOperation.SET,value:t.stats.lp.value},a),this.push({type:s.M5ModType.STAT,id:s.M5Stats.AP,operation:s.M5ModOperation.SET,value:t.stats.ap.value},a)}push(t,a){if(null!=t&&t.id&&""!==t.id){let e=null;t.type===s.M5ModType.ATTRIBUTE?e=this.attributes:t.type===s.M5ModType.STAT?e=this.stats:t.type===s.M5ModType.SKILL&&(e=this.skills),e&&(a={mod:t,source:a},e.has(t.id)?e.get(t.id).push(a):e.set(t.id,[a]))}}calculate(){const a=this.calc,r=(this.attributes.forEach((e,t)=>{e=n.processPairs(e);a.attributes[t]={value:e.value,bonus:n.attributeBonus(e.value),mods:e.mods}}),this.stats.forEach((e,t)=>{e=n.processPairs(e);a.stats[t]=e}),{});return this.skills.forEach((e,t)=>{r[t]=e}),r}static pairAsSource(e){return{operation:e.mod.operation,value:e.mod.value,item:e.source}}static processPairs(e){var t={mods:[],value:0};let a=e.filter(e=>e.mod.operation===s.M5ModOperation.FIXED).sort((e,t)=>t.mod.value-e.mod.value);var r=0===a.length?null:a[0];return r?(t.mods.push(this.pairAsSource(r)),t.value=r.mod.value):(0!==(a=e.filter(e=>e.mod.operation===s.M5ModOperation.SET).sort((e,t)=>t.mod.value-e.mod.value)).length&&(t.mods.push(this.pairAsSource(a[0])),t.value=a[0].mod.value),0!==(a=e.filter(e=>e.mod.operation===s.M5ModOperation.ADD_100)).length&&(t.mods=t.mods.concat(a.map(this.pairAsSource)),r=a.map(e=>e.mod.value).reduce((e,t)=>e+t,0),t.value=Math.min(100,Math.max(0,t.value+r))),0!==(a=e.filter(e=>e.mod.operation===s.M5ModOperation.ADD)).length&&(t.mods=t.mods.concat(a.map(this.pairAsSource)),r=a.map(e=>e.mod.value).reduce((e,t)=>e+t,0),t.value=Math.max(0,t.value+r))),t}static attributeMinMax(e){return Math.min(100,Math.max(0,e.value+e.bonus))}static attributeBonus(e){return 95{[u.M5ModOperation.SET,u.M5ModOperation.FIXED].includes(e.operation)?i.fw=e.value:i.bonus+=e.value}),i.ew=i.fw+i.bonus,i.sources=t.mods}else"weapon"===e?(i.fw=0,i.bonus=0,i.special=l.special?2:0,i.ew=i.special+l.stats.attackBonus,i.combatSkills=null,a&&((r=o.derivedData({weapons:!0,defensiveWeapons:!0,armor:!0,items:!0,spells:!0}))&&(i.ew+=r.stats.attackBonus.value,i.combatSkills=r.skills.combat),t=o.getItem(l.skillId))&&(t.prepareDerivedData(),r=t.system,i.ew+=r.calc.ew,i.bonus+=r.calc.bonus,i.fw+=r.fw)):"defensiveWeapon"===e?(i.fw=0,i.bonus=0,i.special=l.special?2:0,i.ew=i.special+l.stats.defenseBonus,i.combatSkills=null,a&&((t=o.derivedData({weapons:!0,defensiveWeapons:!0,armor:!0,items:!0,spells:!0}))&&(i.ew+=t.stats.defense.value+t.stats.defenseBonus.value,i.combatSkills=t.skills.combat),r=o.getItem(l.skillId))&&(r.prepareDerivedData(),t=r.system,i.ew+=t.calc.ew,i.bonus+=t.calc.bonus,i.fw+=t.fw)):"spell"===e?(i.fw=0,a&&(r=o.derivedData({weapons:!0,defensiveWeapons:!0,armor:!0,items:!0,spells:!0}))&&(i.ew=r.stats.spellCasting.value)):"item"===e&&(i.mods={},Object.keys(null===l||void 0===l?void 0:l.mods).forEach(e=>{var t=l.mods[e];const r={};switch(t.type){case u.M5ModType.ATTRIBUTE:for(const e of(0,u.enumKeys)(u.M5Attributes)){var a=u.M5Attributes[e];r[a]=game.i18n.localize(`midgard5.actor-${a}-long`)}break;case u.M5ModType.STAT:for(const e of(0,u.enumKeys)(u.M5Stats)){var s=u.M5Stats[e];r[s]=game.i18n.localize("midgard5.mod-stat-"+s)}break;case u.M5ModType.SKILL:if(o){var n=o.derivedData({weapons:!0,defensiveWeapons:!0,armor:!0,items:!0,spells:!0});if(n){let a=game.i18n.localize("midgard5.skill");Object.keys(n.skills.general).forEach(e=>{var t=o.getItem(e);t&&(r[e]=a+": "+t.name)}),a=game.i18n.localize("midgard5.language"),Object.keys(n.skills.language).forEach(e=>{var t=o.getItem(e);t&&(r[e]=a+": "+t.name)}),a=game.i18n.localize("midgard5.weapon-skill"),Object.keys(n.skills.combat).forEach(e=>{var t=o.getItem(e);t&&(r[e]=a+": "+t.name)}),a=game.i18n.localize("midgard5.innate-ability"),Object.keys(n.skills.innate).forEach(e=>{var t=o.getItem(e);t&&(r[e]=a+": "+t.name)})}}}i.mods[e]=r}))}getRollData(){var e=this.actor,e=null!=(e=null==e?void 0:e.getRollData())?e:{c:null,i:null,iType:null,rolls:{},res:{}};return e.i=this.system,e.iType=this.type,e}async roll(){const a=this;var e=ChatMessage.getSpeaker({actor:this.actor}),t=game.settings.get("core","rollMode"),r=`[${a.type}] `+a.name,s=null!=(s=a.system.rolls)&&s.formulas?Object.keys(a.system.rolls.formulas):[];if(0{var t=a.system.rolls.formulas[e];t&&(n.rolls[e]={formula:t.formula,label:t.label,enabled:t.enabled,result:"",total:0,totalStr:"",dice:{}})}),new o.M5Roll(n,this.actor,a.name).toMessage()}return ChatMessage.create({speaker:e,rollMode:t,flavor:r,content:null!=(s=a.system.description)?s:""}),null}getItem(e){return this.getEmbeddedDocument("Item",e)}}(a.M5Item=n).SKILL="skill"},{"../M5Base":12,"../actors/M5ModAggregate":14,"../rolls/M5Roll":16}],16:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.M5Roll=void 0;const o=e("../M5Base");class l{constructor(e,t,a){this.data=e,this.actor=t,this.label=a,this._evaluated=!1,this._total=0,this.pool=null}evaluate(){const n=new Map;var e=Object.keys(this.data.rolls).filter(e=>this.data.rolls[e].enabled).map((e,t)=>{n.set(t,e);t=this.data.rolls[e];return new Roll(t.formula,this.data)});return this.pool=PoolTerm.fromRolls(e),console.log("evaluate",this._evaluated,this.pool),this.pool.evaluate({async:!0}).then(e=>(this._total=0,e.rolls.forEach((e,t)=>{t=n.get(t);const a=this.data.rolls[t];a.result=e.result,a.total=e.total,a.totalStr=e.total.toString(),this._total+=e.total;let r=o.M5EwResult.TBD,s=-1;e.dice.forEach((e,t)=>{a.dice[t.toString()]=e.total,r===o.M5EwResult.TBD&&0===t&&(20===e.faces?1===e.total?r=o.M5EwResult.FUMBLE:20===e.total?r=o.M5EwResult.CRITICAL:16<=e.total&&(r=o.M5EwResult.HIGH):100===e.faces&&(s=e.total))});var t=l.parseDiceSides(a.formula);20===(null==t?void 0:t.sides)?e.total<20?r!==o.M5EwResult.TBD&&r!==o.M5EwResult.HIGH||(r=o.M5EwResult.FAIL):r===o.M5EwResult.TBD&&(r=o.M5EwResult.PASS):0<=s&&(t=e.total+s,t=Math.floor(t/10),100===s?r===o.M5EwResult.TBD&&(r=o.M5EwResult.FUMBLE):e.total<0?r===o.M5EwResult.TBD&&(r=o.M5EwResult.FAIL):s<=t?r===o.M5EwResult.TBD&&(r=o.M5EwResult.CRITICAL):r===o.M5EwResult.TBD&&(r=o.M5EwResult.PASS)),a.css=r}),this.data.res.label=this.label,this._evaluated=!0,this))}async render(){return renderTemplate(l.TEMPLATE_PATH,this.data)}async toMessage(){this._evaluated||await this.evaluate();var e=game.settings.get("core","rollMode"),t={type:CONST.CHAT_MESSAGE_TYPES.ROLL,content:await this.render(),speaker:ChatMessage.getSpeaker({actor:this.actor}),sound:CONFIG.sounds.dice,roll:Roll.fromTerms([this.pool])};return ChatMessage.applyRollMode(t,e),ChatMessage.create(t)}static fromAttribute(e,t){var a=e.attribute(t),r=e.getRollData();return r.i=a.value+a.bonus,r.rolls[0]={formula:"@i - 1d100",enabled:!0,label:game.i18n.localize("midgard5.pw"),result:"",total:0,totalStr:"",dice:{},css:""},new l(r,e,game.i18n.localize(`midgard5.actor-${t}-long`))}static fromAttributeValue(e,t,a){var r=e.getRollData();return r.i=a,r.rolls[0]={formula:"@i - 1d100",enabled:!0,label:game.i18n.localize("midgard5.pw"),result:"",total:0,totalStr:"",dice:{},css:""},new l(r,e,game.i18n.localize(`midgard5.actor-${t}-long`))}static fromUnlearnedSkill(e,t,a){var r,s=e.getRollData();return s.i={fw:t.fw,bonus:null!=(t=null==(r=null==(r=e.system.calc)?void 0:r.attributes[t.attribute])?void 0:r.bonus)?t:0},s.iType="skill",s.rolls[0]={formula:"1d20 + @i.fw + @i.bonus",enabled:!0,label:game.i18n.localize("midgard5.pw"),result:"",total:0,totalStr:"",dice:{},css:""},new l(s,e,game.i18n.localize("midgard5."+a))}static brawl(e){var t=e.getRollData();return t.i={attackBonus:0,damageBonus:0},t.rolls[0]={formula:"1d20 + @c.calc.stats.brawl + @c.calc.stats.attackBonus + @i.attackBonus",enabled:!0,label:game.i18n.localize("midgard5.attack"),result:"",total:0,totalStr:"",dice:{},css:""},t.rolls[1]={formula:"1d6 - 4 + @c.calc.stats.damageBonus + @i.damageBonus",enabled:!0,label:game.i18n.localize("midgard5.damage"),result:"",total:0,totalStr:"",dice:{},css:""},new l(t,e,game.i18n.localize("midgard5.brawl"))}static defense(e){var t=e.getRollData();return t.i={defenseBonus:0},t.rolls[0]={formula:"1d20 + @c.calc.stats.defense.value + @c.calc.stats.defenseBonus.value",enabled:!0,label:game.i18n.localize("midgard5.defense"),result:"",total:0,totalStr:"",dice:{},css:""},new l(t,e,game.i18n.localize("midgard5.defense"))}static resistanceMind(e){var t=e.getRollData();return t.i={defenseBonus:0},t.rolls[0]={formula:"1d20 + @c.calc.stats.resistanceMind.value",enabled:!0,label:game.i18n.localize("midgard5.resistanceMind"),result:"",total:0,totalStr:"",dice:{},css:""},new l(t,e,game.i18n.localize("midgard5.resistanceMind"))}static resistanceBody(e){var t=e.getRollData();return t.i={defenseBonus:0},t.rolls[0]={formula:"1d20 + @c.calc.stats.resistanceBody.value",enabled:!0,label:game.i18n.localize("midgard5.resistanceBody"),result:"",total:0,totalStr:"",dice:{},css:""},new l(t,e,game.i18n.localize("midgard5.resistanceBody"))}static parseDiceSides(e){var t=e.match(/\d*[dD]20/g);return t&&t[0]?{sides:20,type:"ew",threshold:null}:(t=e.match(/(\d+)\s*\-\s*\d*[dD]100/g))&&t[1]?{sides:100,type:"pw",threshold:parseInt(t[1])}:null}}(a.M5Roll=l).TEMPLATE_PATH="systems/midgard5e/templates/chat/roll-m5.hbs"},{"../M5Base":12}],17:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0});const r=e("../rolls/M5Roll");class s extends ActorSheet{static get defaultOptions(){return mergeObject(super.defaultOptions,{template:"systems/midgard5e/templates/sheets/character/main.hbs",width:800,height:800,classes:["midgard5","sheet","character"],tabs:[{navSelector:".sheet-navigation",contentSelector:".sheet-content",initial:"base_values"}]})}getData(e){const t=this.actor;return Promise.resolve(super.getData(e)).then(e=>(t.prepareDerivedData(),e.actor=t.toObject(!1),e.data=t.system,e))}setPosition(e={}){var e=super.setPosition(e),t=this.element.find(".attributes .filler:first").width();return this.element.find(".attributes .attribute-filler-fixed").width(t),e}activateListeners(e){super.activateListeners(e),e.find(".update-lp").on("click",async e=>{e=e.target.dataset.value,e=parseInt(e);this.actor.update({data:{lp:{value:e+1}}})}),e.find(".update-ap").on("click",async e=>{e=e.target.dataset.value,e=parseInt(e);this.actor.update({data:{ap:{value:e+1}}})}),e.find(".roll-attribute-button").on("click",async e=>{let t=e.target,a=t.dataset.attribute;for(;!a;){if(!(t=t.parentElement))return;a=t.dataset.attribute}e=parseInt(t.dataset.value);await r.M5Roll.fromAttributeValue(this.actor,a,e).toMessage()}),e.find(".edit-item").on("click",async e=>{let t=e.target.parentElement,a=t.dataset.item;for(;!a;){if(!(t=t.parentElement))return;a=t.dataset.item}e=this.actor.items.get(a);console.log("edit-item",e),e.sheet.render(!0)}),e.find(".item-delete").on("click",async e=>{let t=e.target.parentElement,a=t.dataset.item;for(;!a;){if(!(t=t.parentElement))return;a=t.dataset.item}this.actor.items.get(a).delete(),this.render(!1)}),e.find(".roll-learned-button").on("click",async e=>{e=e.target.parentElement.parentElement.dataset.item;await this.actor.items.get(e).roll()}),e.find(".roll-general-button").on("click",async e=>{var e=e.target.parentElement.parentElement.dataset.skill,t=this.actor.system.skills.general[e];await r.M5Roll.fromUnlearnedSkill(this.actor,t,e).toMessage()}),e.find(".learn-button").on("click",async e=>{let t=e.target.parentElement.parentElement.dataset.skill;const a=this.actor.system.skills.general[t];this.actor.createSkill(game.i18n.localize("midgard5."+t)).then(e=>{e.update({data:{fw:a.initial,attribute:a.attribute,skill:t,type:"general"}})})}),e.find(".roll-weapon-button").on("click",async e=>{e=e.target.parentElement.parentElement.dataset.item;await this.actor.items.get(e).roll()}),e.find(".roll-brawl-button").on("click",async e=>{await r.M5Roll.brawl(this.actor).toMessage()}),e.find(".roll-defense-button").on("click",async e=>{await r.M5Roll.defense(this.actor).toMessage()}),e.find(".roll-resistanceMind-button").on("click",async e=>{await r.M5Roll.resistanceMind(this.actor).toMessage()}),e.find(".roll-resistanceBody-button").on("click",async e=>{await r.M5Roll.resistanceBody(this.actor).toMessage()}),new DragDrop({dragSelector:".items-list .item",dropSelector:".sheet-body",permissions:{dragstart:this._canDragStart.bind(this),drop:this._canDragDrop.bind(this)},callbacks:{dragstart:this._onTransferItemDragStart.bind(this),drop:this._onTransferItemDrop.bind(this)}}).bind(e[0])}_canDragStart(e){return this.options.editable&&this.actor.isOwner}_canDragDrop(e){return!0}_onTransferItemDragStart(e){var t=e.currentTarget,t=($(e.currentTarget).attr("data-item-actorid",this.actor.id),this.actor.items.get(t.dataset.itemId));if(!["skill","item","weapon","defensiveWeapon","armor","spell"].includes(t.type))return!1;t={type:"Transfer",actorId:this.actor.id,data:t.toObject(!1),tokenId:null};this.actor.isToken&&(t.tokenId=this.actor.token.id),e.dataTransfer.setData("text/plain",JSON.stringify(t))}async _onTransferItemDrop(e){var t;let a=null;try{if("Transfer"!==(a=JSON.parse(e.dataTransfer.getData("text/plain"))).type)return!1}catch(e){return!1}if(!a.data)return!1;if(a.actorId===this.actor.id)return!1;try{this.actor.createEmbeddedDocuments("Item",[duplicate(a.data)]),await(null==(t=game.actors.get(a.actorId).items.get(a.data._id))?void 0:t.delete())}catch(e){return console.error("Error transfering item between actors",e),!1}return!0}}a.default=s},{"../rolls/M5Roll":16}],18:[function(e,t,a){"use strict";Object.defineProperty(a,"__esModule",{value:!0}),a.M5ItemSheet=void 0;const r=e("../M5Base");class s extends ItemSheet{static get defaultOptions(){return mergeObject(super.defaultOptions,{width:640,height:480,classes:["midgard5","sheet","item"]})}get template(){return`systems/midgard5e/templates/sheets/item/${this.item.type}.hbs`}getData(e){const r=this.item;return Promise.resolve(super.getData()).then(e=>{r.prepareDerivedData();var t=e.item,a=(e.rollData={},null!=(a=null==(a=this.object)?void 0:a.parent)?a:null);return a&&(e.rollData=a.getRollData()),e.data=t.system,e.flags=t.flags,e})}activateListeners(e){super.activateListeners(e),e.find(".add-mod").on("click",async e=>{var t=this.object.system.mods;t[Object.keys(t).length.toString()]={type:r.M5ModType.ATTRIBUTE,id:r.M5Attributes.ST,operation:r.M5ModOperation.ADD,value:0},this.object.update({data:{mods:t}})}),e.find(".item-delete").on("click",async e=>{let t=e.target.parentElement,a=t.dataset.item;for(;!a;){if(!(t=t.parentElement))return;a=t.dataset.item}this.item.items.get(a).delete(),this.render(!1)}),e.find(".roll-delete").on("click",async e=>{let t=e.target.parentElement,a=t.dataset.roll;for(;!a;){if(!(t=t.parentElement))return;a=t.dataset.roll}e=this.item.system.rolls.formulas;e[a]=null,this.item.update({data:{rolls:{formulas:e}}}),this.render(!1)}),e.find(".roll-create").on("click",async e=>{const t=this.item.system.rolls.formulas;var a=Object.keys(t).map(e=>parseInt(e)).sort().reverse(),r=(null!=(r=a.find(e=>!!t[e.toString()]))?r:-1)+1;console.log("roll-create",t,a,r),t[r.toString()]={formula:"1d6",label:game.i18n.localize("midgard5.roll"),enabled:!0},this.item.update({data:{rolls:{formulas:t}}}),this.render(!1)}),["item"].includes(this.object.type)&&new DragDrop({dragSelector:".item",dropSelector:null,permissions:{dragstart:this._canDragStart.bind(this),drop:this._canDragDrop.bind(this)},callbacks:{drop:this._onDropItem.bind(this)}}).bind(e[0])}_canDragStart(e){return console.log("M5ItemSheet._canDragStart",e),this.options.editable&&this.object.isOwner}_canDragDrop(e){return console.log("M5ItemSheet._canDragDrop",e),!0}async _onDropItem(t){let e;var a=this.object;t.currentTarget;try{if("Item"!==(e=JSON.parse(t.dataTransfer.getData("text/plain"))).type)return!1}catch(e){return!1}let r;if(e.pack){var t=await this.importItemFromCollection(e.pack,e.id);r=t.data}else{t=await game.items.get(e.id);if(!(r=duplicate(t)))return}if("mod"===r.type){let e=null==(t=null==a?void 0:a.system)?void 0:t.mods;e=e||[],r.id=randomID(),console.log("M5ItemSheet._onDropItem",r),e.push(r),a.update({data:{mods:e}})}}async _onDragItemStart(e){}}a.M5ItemSheet=s},{"../M5Base":12}],19:[function(e,t,a){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(a,"__esModule",{value:!0});const n=r(e("../Globals")),o=r(e("color"));class l{constructor(){}static GetCurrentTime(){return`[${(new Date).toLocaleTimeString()}] `}static log(e,t=(0,o.default)("white"),a=!1){var r=i(l.GetCurrentTime(),(0,o.default)("gray"),!1),s=i(n.default.name+" ",(0,o.default)("cyan"),!0),e=i(e,t,a);console.log(r.str+s.str+e.str,...r.params.concat(s.params,e.params))}static err(e){l.log(e,(0,o.default)("orange"))}static warn(e){l.log(e,(0,o.default)("yellow"))}static ok(e){l.log(e,(0,o.default)("green"))}}const i=(e,t,a)=>({str:"%c"+e+"%c",params:["color: "+t.hex()+";"+(a?"font-weight: bold;":""),"color: unset; font-weight: unset;"]});a.default=l},{"../Globals":9,color:6}]},{},[11]); //# sourceMappingURL=bundle.js.map