From e6cf1d08e6b8c2c0a7ba677a00be0190d4832a30 Mon Sep 17 00:00:00 2001 From: theripper93 Date: Mon, 4 Mar 2024 23:46:54 +0100 Subject: [PATCH] a --- index.js | 2 +- index.js.map | 2 +- scripts/config.js | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/index.js b/index.js index 7a60668..506280b 100644 --- a/index.js +++ b/index.js @@ -1,3 +1,3 @@ /*! For license information please see index.js.LICENSE.txt */ -(()=>{"use strict";var t={d:(r,a)=>{for(var i in a)t.o(a,i)&&!t.o(r,i)&&Object.defineProperty(r,i,{enumerable:!0,get:a[i]})},o:(t,r)=>Object.prototype.hasOwnProperty.call(t,r)};function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}function _createForOfIteratorHelper(t,r){var a="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!a){if(Array.isArray(t)||(a=_unsupportedIterableToArray(t))||r&&t&&"number"==typeof t.length){a&&(t=a);var i=0,o=function F(){};return{s:o,n:function n(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function e(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,c=!0,u=!1;return{s:function s(){a=a.call(t)},n:function n(){var t=a.next();return c=t.done,t},e:function e(t){u=!0,l=t},f:function f(){try{c||null==a.return||a.return()}finally{if(u)throw l}}}}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function _get(t,r,a){var i=function _superPropBase(t,r){for(;!Object.prototype.hasOwnProperty.call(t,r)&&null!==(t=_getPrototypeOf(t)););return t}(t,r);if(i){var o=Object.getOwnPropertyDescriptor(i,r);return o.get?o.get.call(arguments.length<3?t:a):o.value}},_get.apply(this,arguments)}function _slicedToArray(t,r){return function _arrayWithHoles(t){if(Array.isArray(t))return t}(t)||function _iterableToArrayLimit(t,r){var a=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=a){var i,o,l,c,u=[],d=!0,p=!1;try{if(l=(a=a.call(t)).next,0===r){if(Object(a)!==a)return;d=!1}else for(;!(d=(i=l.call(a)).done)&&(u.push(i.value),u.length!==r);d=!0);}catch(t){p=!0,o=t}finally{try{if(!d&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(p)throw o}}return u}}(t,r)||_unsupportedIterableToArray(t,r)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _toConsumableArray(t){return function _arrayWithoutHoles(t){if(Array.isArray(t))return _arrayLikeToArray(t)}(t)||function _iterableToArray(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||_unsupportedIterableToArray(t)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(t,r){if(t){if("string"==typeof t)return _arrayLikeToArray(t,r);var a=Object.prototype.toString.call(t).slice(8,-1);return"Object"===a&&t.constructor&&(a=t.constructor.name),"Map"===a||"Set"===a?Array.from(t):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(t,r):void 0}}function _arrayLikeToArray(t,r){(null==r||r>t.length)&&(r=t.length);for(var a=0,i=new Array(r);a=0;--i){var o=this.tryEntries[i],l=o.completion;if("root"===o.tryLoc)return handle("end");if(o.tryLoc<=this.prev){var c=a.call(o,"catchLoc"),u=a.call(o,"finallyLoc");if(c&&u){if(this.prev=0;--i){var o=this.tryEntries[i];if(o.tryLoc<=this.prev&&a.call(o,"finallyLoc")&&this.prev=0;--r){var a=this.tryEntries[r];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),resetTryEntry(a),d}},catch:function _catch(t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc===t){var i=a.completion;if("throw"===i.type){var o=i.arg;resetTryEntry(a)}return o}}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(t,r,a){return this.delegate={iterator:values(t),resultName:r,nextLoc:a},"next"===this.method&&(this.arg=void 0),d}},t}function _classCallCheck(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function _defineProperties(t,r){for(var a=0;aa});var r={};function initConfig(){Hooks.on("argonInit",(function(t){var i;if("dnd5e"===game.system.id){!function registerItems(){if(r[game.i18n.localize("enhancedcombathud-dnd5e.items.disengage.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.disengage.name"),type:"feat",img:"modules/enhancedcombathud/icons/journey.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.disengage.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:1,units:"turn"},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"}},effects:[{_id:"8FtZnIC1vbyKZ6xF",changes:[],disabled:!1,duration:{startTime:null,turns:1},icon:"modules/enhancedcombathud/icons/journey.webp",label:"Disengage",origin:"Item.wyQkeuZkttllAFB1",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{core:{sourceId:"Item.wyQkeuZkttllAFB1"},"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.dodge.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.dodge.name"),type:"feat",img:"modules/enhancedcombathud/icons/armor-upgrade.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.dodge.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:1,units:"round"},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[{_id:"2xH2YQ6pm430O0Aq",changes:[],disabled:!1,duration:{startTime:null,rounds:1},icon:"modules/enhancedcombathud/icons/armor-upgrade.webp",label:"Dodge",origin:"Item.pakEYcgLYxtKGv7J",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.ready.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.ready.name"),type:"feat",img:"modules/enhancedcombathud/icons/clockwork.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.ready.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:null,units:""},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[{_id:"BevDb0J80M9BdoEl",changes:[],disabled:!1,duration:{startTime:null,turns:1},icon:"modules/enhancedcombathud/icons/clockwork.webp",label:"Ready",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.hide.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.hide.name"),type:"feat",img:"modules/enhancedcombathud/icons/cloak-dagger.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.hide.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:null,units:""},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},recharge:{value:null,charged:!1},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[{_id:"SZkbtgGCICrpH0GJ",changes:[],disabled:!1,duration:{startTime:null,turns:10},icon:"modules/enhancedcombathud/icons/cloak-dagger.webp",label:"Hide",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.dash.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.dash.name"),type:"feat",img:"modules/enhancedcombathud/icons/walking-boot.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.dash.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:null,units:""},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[{_id:"PPMPZY1t3AUB7UGA",changes:[],disabled:!1,duration:{startTime:null,rounds:1},icon:"modules/enhancedcombathud/icons/walking-boot.webp",label:"Dash",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.shove.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.shove.name"),type:"feat",img:"modules/enhancedcombathud/icons/shield-bash.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.shove.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:null,units:""},target:{value:1,width:null,units:"",type:"creature"},range:{value:null,long:null,units:"touch"},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},game.settings.get("enhancedcombathud-dnd5e","noAA"))for(var t=0,a=Object.keys(r);t=1||a.details.cr<=0?a.details.cr:"1/".concat(1/a.details.cr);return"CR ".concat(d," ").concat(u)}if(o){var p=Object.values(i.classes).map((function(t){return t.name})).join(" / ");return"Level ".concat(a.details.level," ").concat(p," (").concat(a.details.race,")")}return""}},{key:"isDead",get:function get(){return this.isDying&&"character"!==this.actor.type}},{key:"isDying",get:function get(){return this.actor.system.attributes.hp.value<=0}},{key:"successes",get:function get(){var t,r;return null!==(t=null===(r=this.actor.system.attributes)||void 0===r||null===(r=r.death)||void 0===r?void 0:r.success)&&void 0!==t?t:0}},{key:"failures",get:function get(){var t,r;return null!==(t=null===(r=this.actor.system.attributes)||void 0===r||null===(r=r.death)||void 0===r?void 0:r.failure)&&void 0!==t?t:0}},{key:"configurationTemplate",get:function get(){return"modules/enhancedcombathud-dnd5e/templates/argon-actor-config.hbs"}},{key:"_onDeathSave",value:(a=_asyncToGenerator(_regeneratorRuntime().mark((function _callee(t){return _regeneratorRuntime().wrap((function _callee$(t){for(;;)switch(t.prev=t.next){case 0:this.actor.rollDeathSave({});case 1:case"end":return t.stop()}}),_callee,this)}))),function _onDeathSave(t){return a.apply(this,arguments)})},{key:"getStatBlocks",value:(r=_asyncToGenerator(_regeneratorRuntime().mark((function _callee2(){var t,r,a,i,o,l,c,u;return _regeneratorRuntime().wrap((function _callee2$(d){for(;;)switch(d.prev=d.next){case 0:return a=game.i18n.localize("DND5E.HitPoints").split(" ").map((function(t){return t.charAt(0).toUpperCase()})).join(""),i=game.i18n.localize("DND5E.ArmorClass").split(" ").map((function(t){return t.charAt(0).toUpperCase()})).join(""),o=game.i18n.localize("DND5E.SaveDC").replace("{ability}","").replace("{dc}","").trim(),l=this.actor.system.attributes.hp.temp?"#6698f3":"rgb(0 255 170)",c=this.actor.system.attributes.hp.tempmax,u=c?c>0?"rgb(222 91 255)":"#ffb000":"rgb(255 255 255)",d.abrupt("return",[[{text:"".concat(this.actor.system.attributes.hp.value+(null!==(t=this.actor.system.attributes.hp.temp)&&void 0!==t?t:0)),color:l},{text:"/"},{text:"".concat(this.actor.system.attributes.hp.max+(null!==(r=this.actor.system.attributes.hp.tempmax)&&void 0!==r?r:0)),color:u},{text:a}],[{text:i},{text:this.actor.system.attributes.ac.value,color:"var(--ech-movement-baseMovement-background)"}],[{text:o},{text:this.actor.system.attributes.spelldc,color:"var(--ech-movement-baseMovement-background)"}]]);case 7:case"end":return d.stop()}}),_callee2,this)}))),function getStatBlocks(){return r.apply(this,arguments)})}]),DND5ePortraitPanel}(o.PORTRAIT.PortraitPanel),h=function(t){_inherits(DND5eDrawerButton,t);var r,a=_createSuper(DND5eDrawerButton);function DND5eDrawerButton(t,r,i){var o;return _classCallCheck(this,DND5eDrawerButton),(o=a.call(this,t)).item=r,o.type=i,o}return _createClass(DND5eDrawerButton,[{key:"hasTooltip",get:function get(){return!0}},{key:"tooltipOrientation",get:function get(){return TooltipManager.TOOLTIP_DIRECTIONS.RIGHT}},{key:"getTooltipData",value:(r=_asyncToGenerator(_regeneratorRuntime().mark((function _callee3(){var t;return _regeneratorRuntime().wrap((function _callee3$(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,getTooltipDetails(this.item,this.type);case 2:return t=r.sent,r.abrupt("return",t);case 4:case"end":return r.stop()}}),_callee3,this)}))),function getTooltipData(){return r.apply(this,arguments)})}]),DND5eDrawerButton}(o.DRAWER.DrawerButton),y=function(t){_inherits(DND5eDrawerPanel,t);var r=_createSuper(DND5eDrawerPanel);function DND5eDrawerPanel(){_classCallCheck(this,DND5eDrawerPanel);for(var t=arguments.length,a=new Array(t),i=0;i=0?"+".concat(t):t};return[{gridCols:"5fr 2fr 2fr",captions:[{label:"Abilities",align:"left"},{label:"Check",align:"center"},{label:"Save",align:"center"}],align:["left","center","center"],buttons:Object.keys(r).map((function(a){var i=r[a];return new h([{label:CONFIG.DND5E.abilities[a].label,onClick:function onClick(r){return t.actor.rollAbility(a,{event:r})}},{label:o(i.mod+(i.checkBonus||0)),onClick:function onClick(r){return t.actor.rollAbilityTest(a,{event:r})}},{label:o(i.save),onClick:function onClick(r){return t.actor.rollAbilitySave(a,{event:r})}}],a,"save")}))},{gridCols:"7fr 2fr",captions:[{label:"Skills"},{label:""}],buttons:Object.keys(a).map((function(r){var i=a[r];return new h([{label:getProficiencyIcon(i.proficient)+CONFIG.DND5E.skills[r].label,onClick:function onClick(a){return t.actor.rollSkill(r,{event:a})}},{label:"".concat(o(i.total),'(').concat(i.passive,")"),style:"display: flex; justify-content: flex-end;"}],r,"skill")}))},{gridCols:"7fr 2fr",captions:[{label:"Tools"},{label:""}],buttons:i.map((function(a){return new h([{label:getProficiencyIcon(a.system.proficient)+a.name,onClick:function onClick(t){return a.rollToolCheck({event:t})}},{label:o(r[a.abilityMod].mod+a.system.proficiencyMultiplier*t.actor.system.attributes.prof)}],a)}))}]}},{key:"title",get:function get(){return"".concat(game.i18n.localize("enhancedcombathud-dnd5e.hud.saves.name")," / ").concat(game.i18n.localize("enhancedcombathud-dnd5e.hud.skills.name")," / ").concat(game.i18n.localize("enhancedcombathud-dnd5e.hud.tools.name"))}}]),DND5eDrawerPanel}(o.DRAWER.DrawerPanel),v=function(i){_inherits(DND5eActionActionPanel,i);var l,p=_createSuper(DND5eActionActionPanel);function DND5eActionActionPanel(){_classCallCheck(this,DND5eActionActionPanel);for(var t=arguments.length,r=new Array(t),a=0;a';case"bludgeoning":return'';case"cold":return'';case"fire":return'';case"force":return'';case"lightning":return'';case"necrotic":return'';case"piercing":return'';case"poison":return'';case"psychic":return'';case"radiant":return'';case"slashing":return'';case"thunder":return'';case"healing":return'';default:return""}}function getProficiencyIcon(t){return 0==t?' ':1==t?' ':2==t?' ':.5==t?' ':' '}function condenseItemButtons(t){if(!game.settings.get(a,"condenseClassActions"))return t.map((function(t){return new k({item:t,inActionPanel:!0})}));for(var r=[],i=t.length,l=i-i%2,c=null,u=0;ut.length)&&(r=t.length);for(var a=0,i=new Array(r);a{"use strict";var t={d:(r,a)=>{for(var i in a)t.o(a,i)&&!t.o(r,i)&&Object.defineProperty(r,i,{enumerable:!0,get:a[i]})},o:(t,r)=>Object.prototype.hasOwnProperty.call(t,r)};function _typeof(t){return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},_typeof(t)}function _createForOfIteratorHelper(t,r){var a="undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(!a){if(Array.isArray(t)||(a=_unsupportedIterableToArray(t))||r&&t&&"number"==typeof t.length){a&&(t=a);var i=0,o=function F(){};return{s:o,n:function n(){return i>=t.length?{done:!0}:{done:!1,value:t[i++]}},e:function e(t){throw t},f:o}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var l,c=!0,u=!1;return{s:function s(){a=a.call(t)},n:function n(){var t=a.next();return c=t.done,t},e:function e(t){u=!0,l=t},f:function f(){try{c||null==a.return||a.return()}finally{if(u)throw l}}}}function _get(){return _get="undefined"!=typeof Reflect&&Reflect.get?Reflect.get.bind():function _get(t,r,a){var i=function _superPropBase(t,r){for(;!Object.prototype.hasOwnProperty.call(t,r)&&null!==(t=_getPrototypeOf(t)););return t}(t,r);if(i){var o=Object.getOwnPropertyDescriptor(i,r);return o.get?o.get.call(arguments.length<3?t:a):o.value}},_get.apply(this,arguments)}function _slicedToArray(t,r){return function _arrayWithHoles(t){if(Array.isArray(t))return t}(t)||function _iterableToArrayLimit(t,r){var a=null==t?null:"undefined"!=typeof Symbol&&t[Symbol.iterator]||t["@@iterator"];if(null!=a){var i,o,l,c,u=[],d=!0,p=!1;try{if(l=(a=a.call(t)).next,0===r){if(Object(a)!==a)return;d=!1}else for(;!(d=(i=l.call(a)).done)&&(u.push(i.value),u.length!==r);d=!0);}catch(t){p=!0,o=t}finally{try{if(!d&&null!=a.return&&(c=a.return(),Object(c)!==c))return}finally{if(p)throw o}}return u}}(t,r)||_unsupportedIterableToArray(t,r)||function _nonIterableRest(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _toConsumableArray(t){return function _arrayWithoutHoles(t){if(Array.isArray(t))return _arrayLikeToArray(t)}(t)||function _iterableToArray(t){if("undefined"!=typeof Symbol&&null!=t[Symbol.iterator]||null!=t["@@iterator"])return Array.from(t)}(t)||_unsupportedIterableToArray(t)||function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}function _unsupportedIterableToArray(t,r){if(t){if("string"==typeof t)return _arrayLikeToArray(t,r);var a=Object.prototype.toString.call(t).slice(8,-1);return"Object"===a&&t.constructor&&(a=t.constructor.name),"Map"===a||"Set"===a?Array.from(t):"Arguments"===a||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(a)?_arrayLikeToArray(t,r):void 0}}function _arrayLikeToArray(t,r){(null==r||r>t.length)&&(r=t.length);for(var a=0,i=new Array(r);a=0;--i){var o=this.tryEntries[i],l=o.completion;if("root"===o.tryLoc)return handle("end");if(o.tryLoc<=this.prev){var c=a.call(o,"catchLoc"),u=a.call(o,"finallyLoc");if(c&&u){if(this.prev=0;--i){var o=this.tryEntries[i];if(o.tryLoc<=this.prev&&a.call(o,"finallyLoc")&&this.prev=0;--r){var a=this.tryEntries[r];if(a.finallyLoc===t)return this.complete(a.completion,a.afterLoc),resetTryEntry(a),d}},catch:function _catch(t){for(var r=this.tryEntries.length-1;r>=0;--r){var a=this.tryEntries[r];if(a.tryLoc===t){var i=a.completion;if("throw"===i.type){var o=i.arg;resetTryEntry(a)}return o}}throw new Error("illegal catch attempt")},delegateYield:function delegateYield(t,r,a){return this.delegate={iterator:values(t),resultName:r,nextLoc:a},"next"===this.method&&(this.arg=void 0),d}},t}function _classCallCheck(t,r){if(!(t instanceof r))throw new TypeError("Cannot call a class as a function")}function _defineProperties(t,r){for(var a=0;aa});var r={};function initConfig(){Hooks.on("argonInit",(function(t){var i;if("dnd5e"===game.system.id){!function registerItems(){if(r[game.i18n.localize("enhancedcombathud-dnd5e.items.disengage.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.disengage.name"),type:"feat",img:"modules/enhancedcombathud/icons/journey.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.disengage.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:1,units:"turn"},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"}},effects:[{_id:"8FtZnIC1vbyKZ6xF",changes:[],disabled:!1,duration:{startTime:null,turns:1},icon:"modules/enhancedcombathud/icons/journey.webp",label:"Disengage",origin:"Item.wyQkeuZkttllAFB1",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{core:{sourceId:"Item.wyQkeuZkttllAFB1"},"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.dodge.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.dodge.name"),type:"feat",img:"modules/enhancedcombathud/icons/armor-upgrade.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.dodge.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:1,units:"round"},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[{_id:"2xH2YQ6pm430O0Aq",changes:[],disabled:!1,duration:{startTime:null,rounds:1},icon:"modules/enhancedcombathud/icons/armor-upgrade.webp",label:"Dodge",origin:"Item.pakEYcgLYxtKGv7J",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.ready.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.ready.name"),type:"feat",img:"modules/enhancedcombathud/icons/clockwork.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.ready.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:null,units:""},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[{_id:"BevDb0J80M9BdoEl",changes:[],disabled:!1,duration:{startTime:null,turns:1},icon:"modules/enhancedcombathud/icons/clockwork.webp",label:"Ready",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.hide.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.hide.name"),type:"feat",img:"modules/enhancedcombathud/icons/cloak-dagger.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.hide.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:null,units:""},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},recharge:{value:null,charged:!1},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[{_id:"SZkbtgGCICrpH0GJ",changes:[],disabled:!1,duration:{startTime:null,turns:10},icon:"modules/enhancedcombathud/icons/cloak-dagger.webp",label:"Hide",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.dash.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.dash.name"),type:"feat",img:"modules/enhancedcombathud/icons/walking-boot.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.dash.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:null,units:""},target:{value:null,width:null,units:"",type:"self"},range:{value:null,long:null,units:""},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[{_id:"PPMPZY1t3AUB7UGA",changes:[],disabled:!1,duration:{startTime:null,rounds:1},icon:"modules/enhancedcombathud/icons/walking-boot.webp",label:"Dash",transfer:!1,flags:{dae:{stackable:"none",macroRepeat:"none",specialDuration:[],transfer:!1}},tint:""}],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},r[game.i18n.localize("enhancedcombathud-dnd5e.items.shove.name")]={name:game.i18n.localize("enhancedcombathud-dnd5e.items.shove.name"),type:"feat",img:"modules/enhancedcombathud/icons/shield-bash.webp",system:{type:{value:"",subtype:""},description:{value:game.i18n.localize("enhancedcombathud-dnd5e.items.shove.desc"),chat:"",unidentified:""},source:"",quantity:1,weight:0,price:0,attuned:!1,attunement:0,equipped:!1,rarity:"",identified:!0,activation:{type:"action",cost:1,condition:""},duration:{value:null,units:""},target:{value:1,width:null,units:"",type:"creature"},range:{value:null,long:null,units:"touch"},consume:{type:"",target:"",amount:null},ability:"",actionType:"util",attackBonus:0,chatFlavor:"",critical:null,damage:{parts:[],versatile:""},formula:"",save:{ability:"",dc:null,scaling:"spell"},consumableType:"trinket"},effects:[],sort:0,flags:{"midi-qol":{onUseMacroName:""}}},game.settings.get("enhancedcombathud-dnd5e","noAA"))for(var t=0,a=Object.keys(r);t=1||a.details.cr<=0?a.details.cr:"1/".concat(1/a.details.cr);return"CR ".concat(d," ").concat(u)}if(o){var p=Object.values(i.classes).map((function(t){return t.name})).join(" / ");return"Level ".concat(a.details.level," ").concat(p," (").concat(a.details.race,")")}return""}},{key:"isDead",get:function get(){return this.isDying&&"character"!==this.actor.type}},{key:"isDying",get:function get(){return this.actor.system.attributes.hp.value<=0}},{key:"successes",get:function get(){var t,r;return null!==(t=null===(r=this.actor.system.attributes)||void 0===r||null===(r=r.death)||void 0===r?void 0:r.success)&&void 0!==t?t:0}},{key:"failures",get:function get(){var t,r;return null!==(t=null===(r=this.actor.system.attributes)||void 0===r||null===(r=r.death)||void 0===r?void 0:r.failure)&&void 0!==t?t:0}},{key:"configurationTemplate",get:function get(){return"modules/enhancedcombathud-dnd5e/templates/argon-actor-config.hbs"}},{key:"_onDeathSave",value:(a=_asyncToGenerator(_regeneratorRuntime().mark((function _callee(t){return _regeneratorRuntime().wrap((function _callee$(t){for(;;)switch(t.prev=t.next){case 0:this.actor.rollDeathSave({});case 1:case"end":return t.stop()}}),_callee,this)}))),function _onDeathSave(t){return a.apply(this,arguments)})},{key:"getStatBlocks",value:(r=_asyncToGenerator(_regeneratorRuntime().mark((function _callee2(){var t,r,a,i,o,l,c,u;return _regeneratorRuntime().wrap((function _callee2$(d){for(;;)switch(d.prev=d.next){case 0:return a=game.i18n.localize("DND5E.HitPoints").split(" ").map((function(t){return t.charAt(0).toUpperCase()})).join(""),i=game.i18n.localize("DND5E.ArmorClass").split(" ").map((function(t){return t.charAt(0).toUpperCase()})).join(""),o=game.i18n.localize("DND5E.SaveDC").replace("{ability}","").replace("{dc}","").trim(),l=this.actor.system.attributes.hp.temp?"#6698f3":"rgb(0 255 170)",c=this.actor.system.attributes.hp.tempmax,u=c?c>0?"rgb(222 91 255)":"#ffb000":"rgb(255 255 255)",d.abrupt("return",[[{text:"".concat(this.actor.system.attributes.hp.value+(null!==(t=this.actor.system.attributes.hp.temp)&&void 0!==t?t:0)),color:l},{text:"/"},{text:"".concat(this.actor.system.attributes.hp.max+(null!==(r=this.actor.system.attributes.hp.tempmax)&&void 0!==r?r:0)),color:u},{text:a}],[{text:i},{text:this.actor.system.attributes.ac.value,color:"var(--ech-movement-baseMovement-background)"}],[{text:o},{text:this.actor.system.attributes.spelldc,color:"var(--ech-movement-baseMovement-background)"}]]);case 7:case"end":return d.stop()}}),_callee2,this)}))),function getStatBlocks(){return r.apply(this,arguments)})}]),DND5ePortraitPanel}(o.PORTRAIT.PortraitPanel),h=function(t){_inherits(DND5eDrawerButton,t);var r,a=_createSuper(DND5eDrawerButton);function DND5eDrawerButton(t,r,i){var o;return _classCallCheck(this,DND5eDrawerButton),(o=a.call(this,t)).item=r,o.type=i,o}return _createClass(DND5eDrawerButton,[{key:"hasTooltip",get:function get(){return!0}},{key:"tooltipOrientation",get:function get(){return TooltipManager.TOOLTIP_DIRECTIONS.RIGHT}},{key:"getTooltipData",value:(r=_asyncToGenerator(_regeneratorRuntime().mark((function _callee3(){var t;return _regeneratorRuntime().wrap((function _callee3$(r){for(;;)switch(r.prev=r.next){case 0:return r.next=2,getTooltipDetails(this.item,this.type);case 2:return t=r.sent,r.abrupt("return",t);case 4:case"end":return r.stop()}}),_callee3,this)}))),function getTooltipData(){return r.apply(this,arguments)})}]),DND5eDrawerButton}(o.DRAWER.DrawerButton),y=function(t){_inherits(DND5eDrawerPanel,t);var r=_createSuper(DND5eDrawerPanel);function DND5eDrawerPanel(){_classCallCheck(this,DND5eDrawerPanel);for(var t=arguments.length,a=new Array(t),i=0;i=0?"+".concat(t):t};return[{gridCols:"5fr 2fr 2fr",captions:[{label:"Abilities",align:"left"},{label:"Check",align:"center"},{label:"Save",align:"center"}],align:["left","center","center"],buttons:Object.keys(r).map((function(a){var i=r[a];return new h([{label:CONFIG.DND5E.abilities[a].label,onClick:function onClick(r){return t.actor.rollAbility(a,{event:r})}},{label:o(i.mod+(i.checkBonus||0)),onClick:function onClick(r){return t.actor.rollAbilityTest(a,{event:r})}},{label:o(i.save),onClick:function onClick(r){return t.actor.rollAbilitySave(a,{event:r})}}],a,"save")}))},{gridCols:"7fr 2fr",captions:[{label:"Skills"},{label:""}],buttons:Object.keys(a).map((function(r){var i=a[r];return new h([{label:getProficiencyIcon(i.proficient)+CONFIG.DND5E.skills[r].label,onClick:function onClick(a){return t.actor.rollSkill(r,{event:a})}},{label:"".concat(o(i.total),'(').concat(i.passive,")"),style:"display: flex; justify-content: flex-end;"}],r,"skill")}))},{gridCols:"7fr 2fr",captions:[{label:"Tools"},{label:""}],buttons:i.map((function(a){return new h([{label:getProficiencyIcon(a.system.proficient)+a.name,onClick:function onClick(t){return a.rollToolCheck({event:t})}},{label:o(r[a.abilityMod].mod+a.system.proficiencyMultiplier*t.actor.system.attributes.prof)}],a)}))}]}},{key:"title",get:function get(){return"".concat(game.i18n.localize("enhancedcombathud-dnd5e.hud.saves.name")," / ").concat(game.i18n.localize("enhancedcombathud-dnd5e.hud.skills.name")," / ").concat(game.i18n.localize("enhancedcombathud-dnd5e.hud.tools.name"))}}]),DND5eDrawerPanel}(o.DRAWER.DrawerPanel),v=function(i){_inherits(DND5eActionActionPanel,i);var l,p=_createSuper(DND5eActionActionPanel);function DND5eActionActionPanel(){_classCallCheck(this,DND5eActionActionPanel);for(var t=arguments.length,r=new Array(t),a=0;a';case"bludgeoning":return'';case"cold":return'';case"fire":return'';case"force":return'';case"lightning":return'';case"necrotic":return'';case"piercing":return'';case"poison":return'';case"psychic":return'';case"radiant":return'';case"slashing":return'';case"thunder":return'';case"healing":return'';default:return""}}function getProficiencyIcon(t){return 0==t?' ':1==t?' ':2==t?' ':.5==t?' ':' '}function condenseItemButtons(t){if(!game.settings.get(a,"condenseClassActions"))return t.map((function(t){return new k({item:t,inActionPanel:!0})}));for(var r=[],i=t.length,l=i-i%2,c=null,u=0;ut.length)&&(r=t.length);for(var a=0,i=new Array(r);a {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import { MODULE_ID } from \"./main.js\";\r\n\r\nconst ECHItems = {};\r\n\r\nexport function initConfig() {\r\n Hooks.on(\"argonInit\", (CoreHUD) => {\r\n if (game.system.id !== \"dnd5e\") return;\r\n registerItems();\r\n const ARGON = CoreHUD.ARGON;\r\n\r\n const isMIDI = game.modules.get(\"midi-qol\")?.active;\r\n const getMidiFlag = (actionType) => {\r\n if (!isMIDI || !ui.ARGON._actor) return null;\r\n const flag = ui.ARGON._actor.getFlag(\"midi-qol\", \"actions\") ?? {};\r\n const value = flag[actionType] ?? false;\r\n const midiAction = value ? 0 : 1;\r\n return midiAction;\r\n };\r\n\r\n const actionTypes = {\r\n action: [\"action\"],\r\n bonus: [\"bonus\"],\r\n reaction: [\"reaction\", \"reactiondamage\", \"reactionmanual\"],\r\n free: [\"special\"],\r\n };\r\n\r\n const itemTypes = {\r\n spell: [\"spell\"],\r\n feat: [\"feat\"],\r\n consumable: [\"consumable\", \"equipment\", \"loot\"],\r\n };\r\n\r\n const mainBarFeatures = [];\r\n\r\n if (game.settings.get(MODULE_ID, \"showWeaponsItems\")) itemTypes.consumable.push(\"weapon\");\r\n if (game.settings.get(MODULE_ID, \"showClassActions\")) mainBarFeatures.push(\"class\");\r\n\r\n CoreHUD.DND5E = {\r\n actionTypes,\r\n itemTypes,\r\n mainBarFeatures,\r\n ECHItems,\r\n };\r\n\r\n Hooks.callAll(\"enhanced-combat-hud.dnd5e.initConfig\", { actionTypes, itemTypes, ECHItems });\r\n\r\n async function getTooltipDetails(item, type) {\r\n let title, description, itemType, subtitle, target, range, dt;\r\n let damageTypes = [];\r\n let properties = [];\r\n let materialComponents = \"\";\r\n\r\n if (type == \"skill\") {\r\n title = CONFIG.DND5E.skills[item].label;\r\n description = game.i18n.localize(`enhancedcombathud-dnd5e.skills.${item}.tooltip`);\r\n } else if (type == \"save\") {\r\n title = CONFIG.DND5E.abilities[item].label;\r\n description = game.i18n.localize(`enhancedcombathud-dnd5e.abilities.${item}.tooltip`);\r\n } else {\r\n if (!item || !item.system) return;\r\n\r\n title = item.name;\r\n description = item.system.description.value;\r\n itemType = item.type;\r\n target = item.labels?.target || \"-\";\r\n range = item.labels?.range || \"-\";\r\n properties = [];\r\n dt = item.labels?.damageTypes?.split(\", \");\r\n damageTypes = dt && dt.length ? dt : [];\r\n materialComponents = \"\";\r\n\r\n switch (itemType) {\r\n case \"weapon\":\r\n subtitle = CONFIG.DND5E.weaponTypes[item.system.weaponType];\r\n properties.push(CONFIG.DND5E.itemActionTypes[item.system.actionType]);\r\n for (let [key, value] of Object.entries(item.system.properties)) {\r\n let prop = value && CONFIG.DND5E.weaponProperties[key] ? CONFIG.DND5E.weaponProperties[key] : undefined;\r\n if (prop) properties.push(prop);\r\n }\r\n break;\r\n case \"spell\":\r\n subtitle = `${item.labels.level} ${item.labels.school}`;\r\n properties.push(CONFIG.DND5E.spellSchools[item.system.school]);\r\n properties.push(item.labels.duration);\r\n properties.push(item.labels.save);\r\n for (let comp of item.labels.components.all) {\r\n properties.push(comp.abbr);\r\n }\r\n if (item.labels.materials) materialComponents = item.labels.materials;\r\n break;\r\n case \"consumable\":\r\n subtitle = CONFIG.DND5E.consumableTypes[item.system.consumableType];\r\n properties.push(CONFIG.DND5E.itemActionTypes[item.system.actionType]);\r\n break;\r\n case \"feat\":\r\n subtitle = item.system.requirements;\r\n properties.push(CONFIG.DND5E.itemActionTypes[item.system.actionType]);\r\n break;\r\n }\r\n }\r\n\r\n if (description) description = await TextEditor.enrichHTML(description);\r\n let details = [];\r\n if (target || range) {\r\n details = [\r\n {\r\n label: \"enhancedcombathud-dnd5e.tooltip.target.name\",\r\n value: target,\r\n },\r\n {\r\n label: \"enhancedcombathud-dnd5e.tooltip.range.name\",\r\n value: range,\r\n },\r\n ];\r\n }\r\n if (item?.labels?.toHit) {\r\n details.push({\r\n label: \"enhancedcombathud-dnd5e.tooltip.toHit.name\",\r\n value: item.labels.toHit,\r\n });\r\n }\r\n if (item?.labels?.derivedDamage?.length) {\r\n let dmgString = \"\";\r\n item.labels.derivedDamage.forEach((dDmg) => {\r\n dmgString += dDmg.formula + \" \" + getDamageTypeIcon(dDmg.damageType) + \" \";\r\n });\r\n details.push({\r\n label: \"enhancedcombathud-dnd5e.tooltip.damage.name\",\r\n value: dmgString,\r\n });\r\n }\r\n\r\n const tooltipProperties = [];\r\n if (damageTypes?.length) damageTypes.forEach((d) => tooltipProperties.push({ label: d, primary: true }));\r\n if (properties?.length) properties.forEach((p) => tooltipProperties.push({ label: p?.label ?? p, secondary: true }));\r\n return { title, description, subtitle, details, properties: tooltipProperties, footerText: materialComponents };\r\n }\r\n\r\n function getDamageTypeIcon(damageType) {\r\n switch (damageType.toLowerCase()) {\r\n case \"acid\":\r\n return '';\r\n case \"bludgeoning\":\r\n return '';\r\n case \"cold\":\r\n return '';\r\n case \"fire\":\r\n return '';\r\n case \"force\":\r\n return '';\r\n case \"lightning\":\r\n return '';\r\n case \"necrotic\":\r\n return '';\r\n case \"piercing\":\r\n return '';\r\n case \"poison\":\r\n return '';\r\n case \"psychic\":\r\n return '';\r\n case \"radiant\":\r\n return '';\r\n case \"slashing\":\r\n return '';\r\n case \"thunder\":\r\n return '';\r\n case \"healing\":\r\n return '';\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n function getProficiencyIcon(proficiency) {\r\n if (proficiency == 0) return ' ';\r\n else if (proficiency == 1) return ' ';\r\n else if (proficiency == 2) return ' ';\r\n else if (proficiency == 0.5) return ' ';\r\n else return ' ';\r\n }\r\n\r\n function condenseItemButtons(items) {\r\n const condenseClassActions = game.settings.get(MODULE_ID, \"condenseClassActions\");\r\n if (!condenseClassActions) return items.map((item) => new DND5eItemButton({ item, inActionPanel: true }));\r\n const condensedItems = [];\r\n const barItemsLength = items.length;\r\n const barItemsMultipleOfTwo = barItemsLength - (barItemsLength % 2);\r\n let currentSplitButtonItemButton = null;\r\n for (let i = 0; i < barItemsLength; i++) {\r\n const isCondensedButton = i < barItemsMultipleOfTwo;\r\n const item = items[i];\r\n if (isCondensedButton) {\r\n if (currentSplitButtonItemButton) {\r\n const button = new DND5eItemButton({ item, inActionPanel: false });\r\n condensedItems.push(new ARGON.MAIN.BUTTONS.SplitButton(currentSplitButtonItemButton, button));\r\n currentSplitButtonItemButton = null;\r\n } else {\r\n currentSplitButtonItemButton = new DND5eItemButton({ item, inActionPanel: false });\r\n }\r\n } else {\r\n condensedItems.push(new DND5eItemButton({ item, inActionPanel: true }));\r\n }\r\n }\r\n return condensedItems;\r\n }\r\n\r\n class DND5ePortraitPanel extends ARGON.PORTRAIT.PortraitPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get description() {\r\n const { type, system } = this.actor;\r\n const actor = this.actor;\r\n const isNPC = type === \"npc\";\r\n const isPC = type === \"character\";\r\n if (isNPC) {\r\n const creatureType = game.i18n.localize(CONFIG.DND5E.creatureTypes[actor.system.details.type.value]?.label ?? actor.system.details.type.custom);\r\n const cr = system.details.cr >= 1 || system.details.cr <= 0 ? system.details.cr : `1/${1 / system.details.cr}`;\r\n return `CR ${cr} ${creatureType}`;\r\n } else if (isPC) {\r\n const classes = Object.values(actor.classes)\r\n .map((c) => c.name)\r\n .join(\" / \");\r\n return `Level ${system.details.level} ${classes} (${system.details.race})`;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n get isDead() {\r\n return this.isDying && this.actor.type !== \"character\";\r\n }\r\n\r\n get isDying() {\r\n return this.actor.system.attributes.hp.value <= 0;\r\n }\r\n\r\n get successes() {\r\n return this.actor.system.attributes?.death?.success ?? 0;\r\n }\r\n\r\n get failures() {\r\n return this.actor.system.attributes?.death?.failure ?? 0;\r\n }\r\n\r\n get configurationTemplate() {\r\n return \"modules/enhancedcombathud-dnd5e/templates/argon-actor-config.hbs\";\r\n }\r\n\r\n async _onDeathSave(event) {\r\n this.actor.rollDeathSave({});\r\n }\r\n\r\n async getStatBlocks() {\r\n const HPText = game.i18n\r\n .localize(\"DND5E.HitPoints\")\r\n .split(\" \")\r\n .map((word) => word.charAt(0).toUpperCase())\r\n .join(\"\");\r\n const ACText = game.i18n\r\n .localize(\"DND5E.ArmorClass\")\r\n .split(\" \")\r\n .map((word) => word.charAt(0).toUpperCase())\r\n .join(\"\");\r\n const SpellDC = game.i18n.localize(\"DND5E.SaveDC\").replace(\"{ability}\", \"\").replace(\"{dc}\", \"\").trim();\r\n\r\n const hpColor = this.actor.system.attributes.hp.temp ? \"#6698f3\" : \"rgb(0 255 170)\";\r\n const tempMax = this.actor.system.attributes.hp.tempmax;\r\n const hpMaxColor = tempMax ? (tempMax > 0 ? \"rgb(222 91 255)\" : \"#ffb000\") : \"rgb(255 255 255)\";\r\n\r\n return [\r\n [\r\n {\r\n text: `${this.actor.system.attributes.hp.value + (this.actor.system.attributes.hp.temp ?? 0)}`,\r\n color: hpColor,\r\n },\r\n {\r\n text: `/`,\r\n },\r\n {\r\n text: `${this.actor.system.attributes.hp.max + (this.actor.system.attributes.hp.tempmax ?? 0)}`,\r\n color: hpMaxColor,\r\n },\r\n {\r\n text: HPText,\r\n },\r\n ],\r\n [\r\n {\r\n text: ACText,\r\n },\r\n {\r\n text: this.actor.system.attributes.ac.value,\r\n color: \"var(--ech-movement-baseMovement-background)\",\r\n },\r\n ],\r\n [\r\n {\r\n text: SpellDC,\r\n },\r\n {\r\n text: this.actor.system.attributes.spelldc,\r\n color: \"var(--ech-movement-baseMovement-background)\",\r\n },\r\n ],\r\n ];\r\n }\r\n }\r\n\r\n class DND5eDrawerButton extends ARGON.DRAWER.DrawerButton {\r\n constructor(buttons, item, type) {\r\n super(buttons);\r\n this.item = item;\r\n this.type = type;\r\n }\r\n\r\n get hasTooltip() {\r\n return true;\r\n }\r\n\r\n get tooltipOrientation() {\r\n return TooltipManager.TOOLTIP_DIRECTIONS.RIGHT;\r\n }\r\n\r\n async getTooltipData() {\r\n const tooltipData = await getTooltipDetails(this.item, this.type);\r\n return tooltipData;\r\n }\r\n }\r\n\r\n class DND5eDrawerPanel extends ARGON.DRAWER.DrawerPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get categories() {\r\n const abilities = this.actor.system.abilities;\r\n const skills = this.actor.system.skills;\r\n const tools = this.actor.itemTypes.tool;\r\n\r\n const addSign = (value) => {\r\n if (value >= 0) return `+${value}`;\r\n return value;\r\n };\r\n\r\n const abilitiesButtons = Object.keys(abilities).map((ability) => {\r\n const abilityData = abilities[ability];\r\n return new DND5eDrawerButton(\r\n [\r\n {\r\n label: CONFIG.DND5E.abilities[ability].label,\r\n onClick: (event) => this.actor.rollAbility(ability, { event }),\r\n },\r\n {\r\n label: addSign(abilityData.mod + (abilityData.checkBonus || 0)),\r\n onClick: (event) => this.actor.rollAbilityTest(ability, { event }),\r\n },\r\n {\r\n label: addSign(abilityData.save),\r\n onClick: (event) => this.actor.rollAbilitySave(ability, { event }),\r\n },\r\n ],\r\n ability,\r\n \"save\",\r\n );\r\n });\r\n\r\n const skillsButtons = Object.keys(skills).map((skill) => {\r\n const skillData = skills[skill];\r\n return new DND5eDrawerButton(\r\n [\r\n {\r\n label: getProficiencyIcon(skillData.proficient) + CONFIG.DND5E.skills[skill].label,\r\n onClick: (event) => this.actor.rollSkill(skill, { event }),\r\n },\r\n {\r\n label: `${addSign(skillData.total)}(${skillData.passive})`,\r\n style: \"display: flex; justify-content: flex-end;\",\r\n },\r\n ],\r\n skill,\r\n \"skill\",\r\n );\r\n });\r\n\r\n const toolButtons = tools.map((tool) => {\r\n return new DND5eDrawerButton(\r\n [\r\n {\r\n label: getProficiencyIcon(tool.system.proficient) + tool.name,\r\n onClick: (event) => tool.rollToolCheck({ event }),\r\n },\r\n {\r\n label: addSign(abilities[tool.abilityMod].mod + tool.system.proficiencyMultiplier * this.actor.system.attributes.prof),\r\n },\r\n ],\r\n tool,\r\n );\r\n });\r\n\r\n return [\r\n {\r\n gridCols: \"5fr 2fr 2fr\",\r\n captions: [\r\n {\r\n label: \"Abilities\",\r\n align: \"left\",\r\n },\r\n {\r\n label: \"Check\",\r\n align: \"center\",\r\n },\r\n {\r\n label: \"Save\",\r\n align: \"center\",\r\n },\r\n ],\r\n align: [\"left\", \"center\", \"center\"],\r\n buttons: abilitiesButtons,\r\n },\r\n {\r\n gridCols: \"7fr 2fr\",\r\n captions: [\r\n {\r\n label: \"Skills\",\r\n },\r\n {\r\n label: \"\",\r\n },\r\n ],\r\n buttons: skillsButtons,\r\n },\r\n {\r\n gridCols: \"7fr 2fr\",\r\n captions: [\r\n {\r\n label: \"Tools\",\r\n },\r\n {\r\n label: \"\",\r\n },\r\n ],\r\n buttons: toolButtons,\r\n },\r\n ];\r\n }\r\n\r\n get title() {\r\n return `${game.i18n.localize(\"enhancedcombathud-dnd5e.hud.saves.name\")} / ${game.i18n.localize(\"enhancedcombathud-dnd5e.hud.skills.name\")} / ${game.i18n.localize(\"enhancedcombathud-dnd5e.hud.tools.name\")}`;\r\n }\r\n }\r\n\r\n class DND5eActionActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.Action\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return getMidiFlag(\"action\") ?? (this.isActionUsed ? 0 : 1);\r\n }\r\n\r\n _onNewRound(combat) {\r\n this.isActionUsed = false;\r\n this.updateActionUse();\r\n }\r\n\r\n async _getButtons() {\r\n const spellItems = this.actor.items.filter((item) => itemTypes.spell.includes(item.type) && actionTypes.action.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n const featItems = this.actor.items.filter((item) => itemTypes.feat.includes(item.type) && actionTypes.action.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n const consumableItems = this.actor.items.filter((item) => itemTypes.consumable.includes(item.type) && actionTypes.action.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n\r\n const spellButton = !spellItems.length ? [] : [new DND5eButtonPanelButton({ type: \"spell\", items: spellItems, color: 0 })].filter((button) => button.hasContents);\r\n\r\n const specialActions = Object.values(ECHItems);\r\n\r\n const showSpecialActions = game.settings.get(MODULE_ID, \"showSpecialActions\");\r\n const buttons = [];\r\n if (showSpecialActions) {\r\n buttons.push(...[new DND5eItemButton({ item: null, isWeaponSet: true, isPrimary: true }), new ARGON.MAIN.BUTTONS.SplitButton(new DND5eSpecialActionButton(specialActions[0]), new DND5eSpecialActionButton(specialActions[1])), ...spellButton, new DND5eButtonPanelButton({ type: \"feat\", items: featItems, color: 0 }), new ARGON.MAIN.BUTTONS.SplitButton(new DND5eSpecialActionButton(specialActions[2]), new DND5eSpecialActionButton(specialActions[3])), new ARGON.MAIN.BUTTONS.SplitButton(new DND5eSpecialActionButton(specialActions[4]), new DND5eSpecialActionButton(specialActions[5])), new DND5eButtonPanelButton({ type: \"consumable\", items: consumableItems, color: 0 })]);\r\n } else {\r\n buttons.push(...[new DND5eItemButton({ item: null, isWeaponSet: true, isPrimary: true }), ...spellButton, new DND5eButtonPanelButton({ type: \"feat\", items: featItems, color: 0 }), new DND5eButtonPanelButton({ type: \"consumable\", items: consumableItems, color: 0 })]);\r\n }\r\n\r\n const barItems = this.actor.items.filter((item) => CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value) && actionTypes.action.includes(item.system.activation?.type));\r\n buttons.push(...condenseItemButtons(barItems));\r\n\r\n return buttons.filter((button) => button.hasContents || button.items == undefined || button.items.length);\r\n }\r\n }\r\n\r\n class DND5eBonusActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.BonusAction\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return getMidiFlag(\"bonus\") ?? (this.isActionUsed ? 0 : 1);\r\n }\r\n\r\n _onNewRound(combat) {\r\n this.isActionUsed = false;\r\n this.updateActionUse();\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [new DND5eItemButton({ item: null, isWeaponSet: true, isPrimary: false })];\r\n for (const [type, types] of Object.entries(itemTypes)) {\r\n const items = this.actor.items.filter((item) => types.includes(item.type) && actionTypes.bonus.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n if (!items.length) continue;\r\n const button = new DND5eButtonPanelButton({ type, items, color: 1 });\r\n if (button.hasContents) buttons.push(button);\r\n }\r\n\r\n const barItems = this.actor.items.filter((item) => CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value) && actionTypes.bonus.includes(item.system.activation?.type));\r\n buttons.push(...condenseItemButtons(barItems));\r\n\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eReactionActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.Reaction\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return getMidiFlag(\"reaction\") ?? (this.isActionUsed ? 0 : 1);\r\n }\r\n\r\n _onNewRound(combat) {\r\n this.isActionUsed = false;\r\n this.updateActionUse();\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [new DND5eItemButton({ item: null, isWeaponSet: true, isPrimary: true })];\r\n //buttons.push(new DND5eEquipmentButton({slot: 1}));\r\n for (const [type, types] of Object.entries(itemTypes)) {\r\n const items = this.actor.items.filter((item) => types.includes(item.type) && actionTypes.reaction.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n if (!items.length) continue;\r\n const button = new DND5eButtonPanelButton({ type, items, color: 3 });\r\n if (button.hasContents) buttons.push(button);\r\n }\r\n\r\n const barItems = this.actor.items.filter((item) => CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value) && actionTypes.reaction.includes(item.system.activation?.type));\r\n buttons.push(...condenseItemButtons(barItems));\r\n\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eFreeActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.Special\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return this.isActionUsed ? 0 : 1;\r\n }\r\n\r\n _onNewRound(combat) {\r\n this.isActionUsed = false;\r\n this.updateActionUse();\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [];\r\n\r\n for (const [type, types] of Object.entries(itemTypes)) {\r\n const items = this.actor.items.filter((item) => types.includes(item.type) && actionTypes.free.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n if (!items.length) continue;\r\n const button = new DND5eButtonPanelButton({ type, items, color: 2 });\r\n if (button.hasContents) buttons.push(button);\r\n }\r\n\r\n const barItems = this.actor.items.filter((item) => CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value) && actionTypes.free.includes(item.system.activation?.type));\r\n buttons.push(...condenseItemButtons(barItems));\r\n\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eLegActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.LegendaryActionLabel\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? this.actor.system.resources?.legact?.max ?? null : null;\r\n }\r\n\r\n get currentActions() {\r\n return this.actor.system.resources?.legact?.value ?? null;\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [];\r\n const legendary = this.actor.items.filter((item) => item.system.activation?.type === \"legendary\");\r\n legendary.forEach((item) => {\r\n buttons.push(new DND5eItemButton({ item, inActionPanel: true }));\r\n });\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eLairActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.LairActionLabel\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return this.actor.system.resources.lair?.value * 1;\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [];\r\n const lair = this.actor.items.filter((item) => item.system.activation?.type === \"lair\");\r\n lair.forEach((item) => {\r\n buttons.push(new DND5eItemButton({ item, inActionPanel: true }));\r\n });\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eMythicActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.MythicActionLabel\";\r\n }\r\n\r\n get maxActions() {\r\n return null; //this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return null; //this.actor.system.resources.mythic?.value * 1;\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [];\r\n const mythic = this.actor.items.filter((item) => item.system.activation?.type === \"mythic\");\r\n mythic.forEach((item) => {\r\n buttons.push(new DND5eItemButton({ item, inActionPanel: true }));\r\n });\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eItemButton extends ARGON.MAIN.BUTTONS.ItemButton {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get hasTooltip() {\r\n return true;\r\n }\r\n\r\n get ranges() {\r\n const item = this.item;\r\n const touchRange = item.system.range.units == \"touch\" ? canvas?.scene?.grid?.distance : null;\r\n return {\r\n normal: item.system?.range?.value ?? touchRange,\r\n long: item.system?.range?.long ?? null,\r\n };\r\n }\r\n\r\n get targets() {\r\n const item = this.item;\r\n const validTargets = [\"creature\", \"ally\", \"enemy\"];\r\n const actionType = item.system.actionType;\r\n const targetType = item.system.target?.type;\r\n if (!item.system.target?.units && validTargets.includes(targetType)) {\r\n return item.system.target?.value;\r\n } else if (actionType === \"mwak\" || actionType === \"rwak\") {\r\n return 1;\r\n }\r\n return null;\r\n }\r\n\r\n get visible() {\r\n if (!this._isWeaponSet || this._isPrimary) return super.visible;\r\n return super.visible && this.item?.system?.type?.value !== \"shield\";\r\n }\r\n\r\n async getTooltipData() {\r\n const tooltipData = await getTooltipDetails(this.item);\r\n tooltipData.propertiesLabel = \"enhancedcombathud-dnd5e.tooltip.properties.name\";\r\n return tooltipData;\r\n }\r\n\r\n async _onLeftClick(event) {\r\n ui.ARGON.interceptNextDialog(event.currentTarget);\r\n const used = await this.item.use({ event }, { event });\r\n if (used) {\r\n DND5eItemButton.consumeActionEconomy(this.item);\r\n }\r\n }\r\n\r\n async _onRightClick(event) {\r\n this.item?.sheet?.render(true);\r\n }\r\n\r\n static consumeActionEconomy(item) {\r\n const activationType = item.system.activation?.type;\r\n let actionType = null;\r\n for (const [type, types] of Object.entries(actionTypes)) {\r\n if (types.includes(activationType)) actionType = type;\r\n }\r\n if (!actionType) return;\r\n if (game.combat?.combatant?.actor !== item.parent) actionType = \"reaction\";\r\n if (actionType === \"action\") {\r\n ui.ARGON.components.main[0].isActionUsed = true;\r\n ui.ARGON.components.main[0].updateActionUse();\r\n } else if (actionType === \"bonus\") {\r\n ui.ARGON.components.main[1].isActionUsed = true;\r\n ui.ARGON.components.main[1].updateActionUse();\r\n } else if (actionType === \"reaction\") {\r\n ui.ARGON.components.main[2].isActionUsed = true;\r\n ui.ARGON.components.main[2].updateActionUse();\r\n } else if (actionType === \"free\") {\r\n ui.ARGON.components.main[3].isActionUsed = true;\r\n ui.ARGON.components.main[3].updateActionUse();\r\n } else if (actionType === \"legendary\") {\r\n ui.ARGON.components.main[4].isActionUsed = true;\r\n }\r\n }\r\n\r\n async render(...args) {\r\n await super.render(...args);\r\n if (this.item) {\r\n const weapons = this.actor.items.filter((item) => item.system.consume?.target === this.item.id);\r\n ui.ARGON.updateItemButtons(weapons);\r\n }\r\n }\r\n\r\n get quantity() {\r\n if (!this.item?.system) return null;\r\n const showQuantityItemTypes = [\"consumable\"];\r\n const consumeType = this.item.system.consume?.type;\r\n if (consumeType === \"ammo\") {\r\n const ammoItem = this.actor.items.get(this.item.system.consume.target);\r\n if (!ammoItem) return null;\r\n return Math.floor((ammoItem.system.quantity ?? 0) / this.item.system.consume.amount);\r\n } else if (consumeType === \"attribute\") {\r\n return Math.floor(getProperty(this.actor.system, this.item.system.consume.target) / this.item.system.consume.amount);\r\n } else if (consumeType === \"charges\") {\r\n const chargesItem = this.actor.items.get(this.item.system.consume.target);\r\n if (!chargesItem) return null;\r\n return Math.floor((chargesItem.system.uses?.value ?? 0) / this.item.system.consume.amount);\r\n } else if (showQuantityItemTypes.includes(this.item.type)) {\r\n return this.item.system.uses?.value ?? this.item.system.quantity;\r\n } else if (this.item.system.uses.value !== null && this.item.system.uses.per !== null) {\r\n return this.item.system.uses.value;\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n class DND5eButtonPanelButton extends ARGON.MAIN.BUTTONS.ButtonPanelButton {\r\n constructor({ type, items, color }) {\r\n super();\r\n this.type = type;\r\n this.items = items;\r\n this.color = color;\r\n this.itemsWithSpells = [];\r\n this._spells = this.prePrepareSpells();\r\n }\r\n\r\n get hasContents() {\r\n return this._spells ? !!this._spells.length || !!this.itemsWithSpells.length : !!this.items.length;\r\n }\r\n\r\n get colorScheme() {\r\n return this.color;\r\n }\r\n\r\n get id() {\r\n return `${this.type}-${this.color}`;\r\n }\r\n\r\n get label() {\r\n switch (this.type) {\r\n case \"spell\":\r\n return \"enhancedcombathud-dnd5e.hud.castspell.name\";\r\n case \"feat\":\r\n return \"enhancedcombathud-dnd5e.hud.usepower.name\";\r\n case \"consumable\":\r\n return \"enhancedcombathud-dnd5e.hud.useitem.name\";\r\n }\r\n }\r\n\r\n get icon() {\r\n switch (this.type) {\r\n case \"spell\":\r\n return \"modules/enhancedcombathud/icons/spell-book.webp\";\r\n case \"feat\":\r\n return \"modules/enhancedcombathud/icons/mighty-force.webp\";\r\n case \"consumable\":\r\n return \"modules/enhancedcombathud/icons/drink-me.webp\";\r\n }\r\n }\r\n\r\n get showPreparedOnly() {\r\n if (this.actor.type !== \"character\") return false;\r\n const preparedFlag = this.actor.getFlag(MODULE_ID, \"showPrepared\");\r\n if (preparedFlag === \"all\") return false;\r\n if (preparedFlag === \"preparedOnly\") return true;\r\n const classes = Object.keys(this.actor.classes);\r\n const requiresPreparation = [\"cleric\", \"druid\", \"paladin\", \"wizard\", \"artificer\", \"ranger\"].some((className) => classes.includes(className));\r\n return requiresPreparation;\r\n }\r\n\r\n prePrepareSpells() {\r\n if (this.type !== \"spell\") return;\r\n\r\n const spellLevels = CONFIG.DND5E.spellLevels;\r\n const itemsToIgnore = [];\r\n if (game.modules.get(\"items-with-spells-5e\")?.active) {\r\n const actionType = this.items[0].system.activation?.type;\r\n const spellItems = this.actor.items.filter((item) => item.flags[\"items-with-spells-5e\"]?.[\"item-spells\"]?.length);\r\n for (const item of spellItems) {\r\n const spellData = item.flags[\"items-with-spells-5e\"][\"item-spells\"];\r\n const itemsInSpell = spellData.map((spell) => this.actor.items.get(spell.id)).filter((item) => item && item.system.activation?.type === actionType);\r\n if (!itemsInSpell.length) continue;\r\n itemsToIgnore.push(...itemsInSpell);\r\n if (item.system.attunement === 1) continue;\r\n this.itemsWithSpells.push({\r\n label: item.name,\r\n buttons: itemsInSpell.map((item) => new DND5eItemButton({ item })),\r\n uses: () => {\r\n return { max: item.system.uses?.max, value: item.system.uses?.value };\r\n },\r\n });\r\n }\r\n this.items = this.items.filter((item) => !itemsToIgnore.includes(item));\r\n }\r\n if (this.showPreparedOnly) {\r\n const allowIfNotPrepared = [\"atwill\", \"innate\", \"pact\", \"always\"];\r\n this.items = this.items.filter((item) => {\r\n if (allowIfNotPrepared.includes(item.system.preparation.mode)) return true;\r\n if (item.system.level == 0) return true;\r\n return item.system.preparation.prepared;\r\n });\r\n }\r\n\r\n const spells = [\r\n ...this.itemsWithSpells,\r\n {\r\n label: \"DND5E.SpellPrepAtWill\",\r\n buttons: this.items.filter((item) => item.system.preparation.mode === \"atwill\").map((item) => new DND5eItemButton({ item })),\r\n uses: { max: Infinity, value: Infinity },\r\n },\r\n {\r\n label: \"DND5E.SpellPrepInnate\",\r\n buttons: this.items.filter((item) => item.system.preparation.mode === \"innate\").map((item) => new DND5eItemButton({ item })),\r\n uses: { max: Infinity, value: Infinity },\r\n },\r\n {\r\n label: Object.values(spellLevels)[0],\r\n buttons: this.items.filter((item) => item.system.level == 0).map((item) => new DND5eItemButton({ item })),\r\n uses: { max: Infinity, value: Infinity },\r\n },\r\n {\r\n label: \"DND5E.PactMagic\",\r\n buttons: this.items.filter((item) => item.system.preparation.mode === \"pact\").map((item) => new DND5eItemButton({ item })),\r\n uses: () => {\r\n return this.actor.system.spells.pact;\r\n },\r\n },\r\n ];\r\n for (const [level, label] of Object.entries(spellLevels)) {\r\n const levelSpells = this.items.filter((item) => item.system.level == level && (item.system.preparation.mode === \"prepared\" || item.system.preparation.mode === \"always\"));\r\n if (!levelSpells.length || level == 0) continue;\r\n spells.push({\r\n label,\r\n buttons: levelSpells.map((item) => new DND5eItemButton({ item })),\r\n uses: () => {\r\n return this.actor.system.spells[`spell${level}`];\r\n },\r\n });\r\n }\r\n return spells.filter((spell) => spell.buttons.length);\r\n }\r\n\r\n async _getPanel() {\r\n if (this.type === \"spell\") {\r\n return new ARGON.MAIN.BUTTON_PANELS.ACCORDION.AccordionPanel({ id: this.id, accordionPanelCategories: this._spells.map(({ label, buttons, uses }) => new ARGON.MAIN.BUTTON_PANELS.ACCORDION.AccordionPanelCategory({ label, buttons, uses })) });\r\n } else {\r\n return new ARGON.MAIN.BUTTON_PANELS.ButtonPanel({ id: this.id, buttons: this.items.map((item) => new DND5eItemButton({ item })) });\r\n }\r\n }\r\n }\r\n\r\n class DND5eSpecialActionButton extends ARGON.MAIN.BUTTONS.ActionButton {\r\n constructor(specialItem) {\r\n super();\r\n const actorItem = this.actor.items.getName(specialItem.name);\r\n this.item =\r\n actorItem ??\r\n new CONFIG.Item.documentClass(specialItem, {\r\n parent: this.actor,\r\n });\r\n }\r\n\r\n get label() {\r\n return this.item.name;\r\n }\r\n\r\n get icon() {\r\n return this.item.img;\r\n }\r\n\r\n get hasTooltip() {\r\n return true;\r\n }\r\n\r\n async getTooltipData() {\r\n const tooltipData = await getTooltipDetails(this.item);\r\n tooltipData.propertiesLabel = \"enhancedcombathud-dnd5e.tooltip.properties.name\";\r\n return tooltipData;\r\n }\r\n\r\n async _onLeftClick(event) {\r\n const useCE = game.modules.get(\"dfreds-convenient-effects\")?.active && game.dfreds.effectInterface.findEffectByName(this.label);\r\n let success = false;\r\n if (useCE) {\r\n success = true;\r\n await game.dfreds.effectInterface.toggleEffect(this.label, { overlay: false, uuids: [this.actor.uuid] });\r\n } else {\r\n success = await this.item.use({ event }, { event });\r\n }\r\n if (success) {\r\n DND5eItemButton.consumeActionEconomy(this.item);\r\n }\r\n }\r\n }\r\n\r\n class DND5eMovementHud extends ARGON.MovementHud {\r\n constructor(...args) {\r\n super(...args);\r\n this.getMovementMode = game.modules.get(\"elevation-drag-ruler\")?.api?.getMovementMode;\r\n }\r\n\r\n get visible() {\r\n return game.combat?.started;\r\n }\r\n\r\n get movementMode() {\r\n return this.getMovementMode ? this.getMovementMode(this.token) : \"walk\";\r\n }\r\n\r\n get movementMax() {\r\n if(!this.actor) return 0;\r\n return this.actor.system.attributes.movement[this.movementMode] / canvas.scene.dimensions.distance;\r\n }\r\n }\r\n\r\n class DND5eButtonHud extends ARGON.ButtonHud {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get visible() {\r\n return !game.combat?.started;\r\n }\r\n\r\n async _getButtons() {\r\n return [\r\n {\r\n label: \"DND5E.LongRest\",\r\n onClick: (event) => this.actor.longRest(),\r\n icon: \"fas fa-bed\",\r\n },\r\n {\r\n label: \"DND5E.ShortRest\",\r\n onClick: (event) => this.actor.shortRest(),\r\n icon: \"fas fa-coffee\",\r\n },\r\n ];\r\n }\r\n }\r\n\r\n class DND5eWeaponSets extends ARGON.WeaponSets {\r\n async getDefaultSets() {\r\n const sets = await super.getDefaultSets();\r\n const isTransformed = this.actor.flags?.dnd5e?.isPolymorphed;\r\n if (this.actor.type !== \"npc\" && !isTransformed) return sets;\r\n const actions = this.actor.items.filter((item) => item.type === \"weapon\" && item.system.activation?.type === \"action\");\r\n const bonus = this.actor.items.filter((item) => item.type === \"weapon\" && item.system.activation?.type === \"bonus\");\r\n return {\r\n 1: {\r\n primary: actions[0]?.uuid ?? null,\r\n secondary: bonus[0]?.uuid ?? null,\r\n },\r\n 2: {\r\n primary: actions[1]?.uuid ?? null,\r\n secondary: bonus[1]?.uuid ?? null,\r\n },\r\n 3: {\r\n primary: actions[2]?.uuid ?? null,\r\n secondary: bonus[2]?.uuid ?? null,\r\n },\r\n };\r\n }\r\n\r\n async _getSets() {\r\n const isTransformed = this.actor.flags?.dnd5e?.isPolymorphed;\r\n\r\n const sets = isTransformed ? await this.getDefaultSets() : mergeObject(await this.getDefaultSets(), deepClone(this.actor.getFlag(\"enhancedcombathud\", \"weaponSets\") || {}));\r\n\r\n for (const [set, slots] of Object.entries(sets)) {\r\n slots.primary = slots.primary ? await fromUuid(slots.primary) : null;\r\n slots.secondary = slots.secondary ? await fromUuid(slots.secondary) : null;\r\n }\r\n return sets;\r\n }\r\n\r\n async _onSetChange({ sets, active }) {\r\n const switchEquip = game.settings.get(\"enhancedcombathud-dnd5e\", \"switchEquip\");\r\n if (!switchEquip) return;\r\n const updates = [];\r\n const activeSet = sets[active];\r\n const activeItems = Object.values(activeSet).filter((item) => item);\r\n const inactiveSets = Object.values(sets).filter((set) => set !== activeSet);\r\n const inactiveItems = inactiveSets\r\n .flatMap((set) => Object.values(set))\r\n .filter((item) => item)\r\n .filter((item) => !activeItems.includes(item));\r\n activeItems.forEach((item) => {\r\n if (!item.system?.equipped) updates.push({ _id: item.id, \"system.equipped\": true });\r\n });\r\n inactiveItems.forEach((item) => {\r\n if (item.system?.equipped) updates.push({ _id: item.id, \"system.equipped\": false });\r\n });\r\n return await this.actor.updateEmbeddedDocuments(\"Item\", updates);\r\n }\r\n }\r\n\r\n const enableMacroPanel = game.settings.get(MODULE_ID, \"macroPanel\");\r\n\r\n const mainPanels = [DND5eActionActionPanel, DND5eBonusActionPanel, DND5eReactionActionPanel, DND5eFreeActionPanel, DND5eLegActionPanel, DND5eLairActionPanel, DND5eMythicActionPanel]\r\n if(enableMacroPanel) mainPanels.push(ARGON.PREFAB.MacroPanel);\r\n mainPanels.push(ARGON.PREFAB.PassTurnPanel);\r\n\r\n CoreHUD.definePortraitPanel(DND5ePortraitPanel);\r\n CoreHUD.defineDrawerPanel(DND5eDrawerPanel);\r\n CoreHUD.defineMainPanels(mainPanels);\r\n CoreHUD.defineMovementHud(DND5eMovementHud);\r\n CoreHUD.defineButtonHud(DND5eButtonHud);\r\n CoreHUD.defineWeaponSets(DND5eWeaponSets);\r\n CoreHUD.defineSupportedActorTypes([\"character\", \"npc\"]);\r\n });\r\n}\r\n\r\nfunction registerItems() {\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.disengage.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.disengage.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/journey.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.disengage.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: 1,\r\n units: \"turn\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n },\r\n effects: [\r\n {\r\n _id: \"8FtZnIC1vbyKZ6xF\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n turns: 1,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/journey.webp\",\r\n label: \"Disengage\",\r\n origin: \"Item.wyQkeuZkttllAFB1\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n core: {\r\n sourceId: \"Item.wyQkeuZkttllAFB1\",\r\n },\r\n\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.dodge.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.dodge.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/armor-upgrade.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.dodge.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: 1,\r\n units: \"round\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [\r\n {\r\n _id: \"2xH2YQ6pm430O0Aq\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n rounds: 1,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/armor-upgrade.webp\",\r\n label: \"Dodge\",\r\n origin: \"Item.pakEYcgLYxtKGv7J\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.ready.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.ready.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/clockwork.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.ready.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: null,\r\n units: \"\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [\r\n {\r\n _id: \"BevDb0J80M9BdoEl\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n turns: 1,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/clockwork.webp\",\r\n label: \"Ready\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.hide.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.hide.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/cloak-dagger.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.hide.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: null,\r\n units: \"\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n recharge: {\r\n value: null,\r\n charged: false,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [\r\n {\r\n _id: \"SZkbtgGCICrpH0GJ\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n turns: 10,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/cloak-dagger.webp\",\r\n label: \"Hide\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.dash.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.dash.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/walking-boot.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.dash.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: null,\r\n units: \"\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [\r\n {\r\n _id: \"PPMPZY1t3AUB7UGA\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n rounds: 1,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/walking-boot.webp\",\r\n label: \"Dash\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.shove.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.shove.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/shield-bash.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.shove.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: null,\r\n units: \"\",\r\n },\r\n target: {\r\n value: 1,\r\n width: null,\r\n units: \"\",\r\n type: \"creature\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"touch\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n\r\n if (game.settings.get(\"enhancedcombathud-dnd5e\", \"noAA\")) {\r\n for (let key of Object.keys(ECHItems)) {\r\n delete ECHItems[key].effects;\r\n }\r\n }\r\n}\r\n","import { MODULE_ID } from \"./main.js\";\r\n\r\nexport function registerSettings() {\r\n const settings = {\r\n showWeaponsItems: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showWeaponsItems.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showWeaponsItems.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: false,\r\n onChange: (sett) => {\r\n ui.ARGON.constructor.DND5E.itemTypes.consumable = ui.ARGON.constructor.DND5E.itemTypes.consumable.filter(i => i !== \"weapon\");\r\n if(sett) ui.ARGON.constructor.DND5E.itemTypes.consumable.push(\"weapon\");\r\n ui.ARGON.refresh()\r\n },\r\n },\r\n showClassActions: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showClassActions.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showClassActions.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: true,\r\n onChange: (sett) => {\r\n ui.ARGON.constructor.DND5E.mainBarFeatures = ui.ARGON.constructor.DND5E.mainBarFeatures.filter(i => i !== \"class\");\r\n if(sett) ui.ARGON.constructor.DND5E.mainBarFeatures.push(\"class\");\r\n ui.ARGON.refresh()\r\n },\r\n },\r\n condenseClassActions: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.condenseClassActions.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.condenseClassActions.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: true,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n macroPanel: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.macroPanel.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.macroPanel.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: false,\r\n requiresReload: true,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n switchEquip: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.switchEquip.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.switchEquip.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: true,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n showSpecialActions: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showSpecialActions.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showSpecialActions.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: true,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n noAA: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.noAA.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.noAA.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: false,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n };\r\n\r\n registerSettingsArray(settings);\r\n}\r\n\r\nexport function getSetting(key) {\r\n return game.settings.get(MODULE_ID, key);\r\n}\r\n\r\nexport async function setSetting(key, value) {\r\n return await game.settings.set(MODULE_ID, key, value);\r\n}\r\n\r\nfunction registerSettingsArray(settings) {\r\n for(const [key, value] of Object.entries(settings)) {\r\n game.settings.register(MODULE_ID, key, value);\r\n }\r\n}","import {initConfig} from \"./config.js\";\r\nimport { registerSettings } from \"./settings.js\";\r\n\r\nexport const MODULE_ID = \"enhancedcombathud-dnd5e\";\r\n\r\nHooks.on(\"setup\", () => {\r\n registerSettings();\r\n initConfig();\r\n});"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","_regeneratorRuntime","Op","hasOwn","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPrimitive","input","hint","prim","toPrimitive","res","String","Number","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","p","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","_createSuperInternal","Super","_getPrototypeOf","NewTarget","arguments","apply","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","ECHItems","initConfig","Hooks","on","CoreHUD","_game$modules$get","game","system","id","registerItems","i18n","localize","img","subtype","description","chat","unidentified","source","quantity","weight","price","attuned","attunement","equipped","rarity","identified","activation","cost","condition","duration","units","width","range","long","consume","amount","ability","actionType","attackBonus","chatFlavor","critical","damage","parts","versatile","formula","save","dc","scaling","effects","_id","changes","disabled","startTime","turns","icon","label","origin","transfer","flags","dae","stackable","macroRepeat","specialDuration","tint","sort","core","sourceId","onUseMacroName","consumableType","rounds","recharge","charged","settings","_i8","_Object$keys","ARGON","isMIDI","modules","active","getMidiFlag","_ui$ARGON$_actor$getF","_flag$actionType","ui","_actor","getFlag","actionTypes","action","bonus","reaction","free","itemTypes","spell","feat","consumable","mainBarFeatures","MODULE_ID","DND5E","callAll","DND5ePortraitPanel","_ARGON$PORTRAIT$Portr","_getStatBlocks","_onDeathSave2","_super","_len","Array","_key","concat","_this$actor","this","actor","isPC","_CONFIG$DND5E$creatur","_CONFIG$DND5E$creatur2","creatureType","CONFIG","creatureTypes","details","custom","cr","classes","map","c","join","level","race","isDying","attributes","hp","_this$actor$system$at","_this$actor$system$at2","death","success","_this$actor$system$at3","_this$actor$system$at4","failure","_callee","event","_callee$","_context","rollDeathSave","_onDeathSave","_x3","_callee2","_this$actor$system$at5","_this$actor$system$at6","HPText","ACText","SpellDC","hpColor","tempMax","hpMaxColor","_callee2$","_context2","split","word","toUpperCase","replace","trim","temp","tempmax","text","color","max","ac","spelldc","getStatBlocks","PORTRAIT","PortraitPanel","DND5eDrawerButton","_ARGON$DRAWER$DrawerB","_getTooltipData","_super2","buttons","item","_this","TooltipManager","TOOLTIP_DIRECTIONS","RIGHT","_callee3","tooltipData","_callee3$","_context3","getTooltipDetails","getTooltipData","DRAWER","DrawerButton","DND5eDrawerPanel","_ARGON$DRAWER$DrawerP","_super3","_len2","_key2","_this2","abilities","skills","tools","tool","addSign","gridCols","captions","align","abilityData","onClick","rollAbility","mod","checkBonus","rollAbilityTest","rollAbilitySave","skill","skillData","getProficiencyIcon","proficient","rollSkill","total","passive","style","rollToolCheck","abilityMod","proficiencyMultiplier","prof","DrawerPanel","DND5eActionActionPanel","_ARGON$MAIN$ActionPan","_getButtons2","_super4","_len3","_key3","_this$actor2","inCombat","_getMidiFlag","isActionUsed","_onNewRound","combat","updateActionUse","_callee4","spellItems","featItems","consumableItems","spellButton","specialActions","showSpecialActions","barItems","_callee4$","_context4","items","filter","_item$system$activati","_item$system$type","includes","_item$system$activati2","_item$system$type2","_item$system$activati3","_item$system$type3","DND5eButtonPanelButton","button","hasContents","DND5eItemButton","isWeaponSet","isPrimary","MAIN","BUTTONS","SplitButton","DND5eSpecialActionButton","_toConsumableArray","_item$system$type4","_item$system$activati4","condenseItemButtons","_getButtons","ActionPanel","DND5eBonusActionPanel","_ARGON$MAIN$ActionPan2","_getButtons3","_super5","_len4","_key4","_this$actor3","_getMidiFlag2","_callee5","_loop","_i","_Object$entries","_this3","_callee5$","_context6","_Object$entries$_i","types","_loop$","_context5","_slicedToArray","_item$system$activati5","_item$system$type5","entries","t0","_item$system$type6","_item$system$activati6","DND5eReactionActionPanel","_ARGON$MAIN$ActionPan3","_getButtons4","_super6","_len5","_key5","_this$actor4","_getMidiFlag3","_callee6","_loop2","_i2","_Object$entries2","_this4","_callee6$","_context8","_Object$entries2$_i","_loop2$","_context7","_item$system$activati7","_item$system$type7","_item$system$type8","_item$system$activati8","DND5eFreeActionPanel","_ARGON$MAIN$ActionPan4","_getButtons5","_super7","_len6","_key6","_this$actor5","_callee7","_loop3","_i3","_Object$entries3","_this5","_callee7$","_context10","_Object$entries3$_i","_loop3$","_context9","_item$system$activati9","_item$system$type9","_item$system$type10","_item$system$activati10","DND5eLegActionPanel","_ARGON$MAIN$ActionPan5","_getButtons6","_super8","_len7","_key7","_this$actor6","_this$actor$system$re","_this$actor$system$re2","resources","legact","_this$actor$system$re3","_this$actor$system$re4","_callee8","_callee8$","_context11","_item$system$activati11","inActionPanel","DND5eLairActionPanel","_ARGON$MAIN$ActionPan6","_getButtons7","_super9","_len8","_key8","_this$actor7","_this$actor$system$re5","lair","_callee9","_callee9$","_context12","_item$system$activati12","DND5eMythicActionPanel","_ARGON$MAIN$ActionPan7","_getButtons8","_super10","_len9","_key9","_callee10","_callee10$","_context13","_item$system$activati13","_ARGON$MAIN$BUTTONS$I","_render","_onRightClick2","_onLeftClick2","_getTooltipData2","_super11","_len10","_key10","_canvas","_item$system$range$va","_item$system","_item$system$range$lo","_item$system2","touchRange","canvas","scene","grid","distance","normal","_item$system$target","_item$system$target2","_item$system$target3","targetType","_this$item","_isWeaponSet","_isPrimary","_get","_callee11","_callee11$","_context14","propertiesLabel","_callee12","_callee12$","_context15","interceptNextDialog","currentTarget","use","consumeActionEconomy","_onLeftClick","_x4","_callee13","_this$item2","_callee13$","_context16","sheet","render","_onRightClick","_x5","_callee14","_get2","_len11","_key11","weapons","_this6","_args17","_callee14$","_context17","_item$system$consume","updateItemButtons","_this$item3","_this$item$system$con","_this$item$system$use","_this$item$system$use2","consumeType","_ammoItem$system$quan","ammoItem","Math","floor","getProperty","_chargesItem$system$u","_chargesItem$system$u2","chargesItem","uses","per","_item$system$activati14","_game$combat","activationType","_i4","_Object$entries4","_Object$entries4$_i","combatant","parent","components","main","ItemButton","_ARGON$MAIN$BUTTONS$B","_getPanel2","_super12","_ref","_this7","itemsWithSpells","_spells","prePrepareSpells","preparedFlag","some","className","_game$modules$get2","_this8","spellLevels","itemsToIgnore","_this$items$0$system$","_step","_iterator","_createForOfIteratorHelper","_item$flags$itemsWit","_loop4","itemsInSpell","_item$system$activati15","_item$system$uses","_item$system$uses2","s","n","f","showPreparedOnly","allowIfNotPrepared","preparation","mode","prepared","spells","Infinity","pact","_loop5","_Object$entries5$_i","_Object$entries5","_i5","levelSpells","_callee15","_callee15$","_context18","BUTTON_PANELS","ACCORDION","AccordionPanel","accordionPanelCategories","_ref2","AccordionPanelCategory","ButtonPanel","_getPanel","ButtonPanelButton","_ARGON$MAIN$BUTTONS$A","_onLeftClick3","_getTooltipData3","_super13","specialItem","_this9","actorItem","getName","Item","documentClass","_callee16","_callee16$","_context19","_callee17","_game$modules$get3","useCE","_callee17$","_context20","dfreds","effectInterface","findEffectByName","toggleEffect","overlay","uuids","uuid","_x6","ActionButton","DND5eMovementHud","_ARGON$MovementHud","_super14","_game$modules$get4","_this10","_len12","_key12","getMovementMode","api","_game$combat2","started","token","movement","movementMode","dimensions","MovementHud","DND5eButtonHud","_ARGON$ButtonHud","_getButtons9","_super15","_len13","_key13","_game$combat3","_callee18","_this11","_callee18$","_context21","longRest","shortRest","ButtonHud","DND5eWeaponSets","_ARGON$WeaponSets","_onSetChange2","_getSets2","_getDefaultSets","_super16","_callee19","_this$actor$flags","_actions$0$uuid","_actions$","_bonus$0$uuid","_bonus$","_actions$1$uuid","_actions$2","_bonus$1$uuid","_bonus$2","_actions$2$uuid","_actions$3","_bonus$2$uuid","_bonus$3","sets","isTransformed","actions","_callee19$","_context22","dnd5e","isPolymorphed","_item$system$activati16","_item$system$activati17","primary","secondary","getDefaultSets","_callee20","_this$actor$flags2","_i6","_Object$entries6","_Object$entries6$_i","slots","_callee20$","_context23","t1","mergeObject","t2","t3","deepClone","fromUuid","t4","t5","_getSets","_callee21","_ref3","updates","activeSet","activeItems","inactiveSets","inactiveItems","_callee21$","_context24","set","flatMap","_item$system3","_item$system4","updateEmbeddedDocuments","_onSetChange","_x7","WeaponSets","mainPanels","PREFAB","MacroPanel","PassTurnPanel","definePortraitPanel","defineDrawerPanel","defineMainPanels","defineMovementHud","defineButtonHud","defineWeaponSets","defineSupportedActorTypes","_x","_x2","_getTooltipDetails","_callee22","_item$labels4","_item$labels5","_damageTypes","_properties","title","itemType","subtitle","dt","damageTypes","properties","materialComponents","_item$labels","_item$labels2","_item$labels3","_i7","_Object$entries7","_Object$entries7$_i","_iterator2","_step2","comp","dmgString","tooltipProperties","_callee22$","_context25","labels","weaponTypes","weaponType","itemActionTypes","weaponProperties","school","spellSchools","all","abbr","materials","consumableTypes","requirements","TextEditor","enrichHTML","toHit","derivedDamage","dDmg","getDamageTypeIcon","damageType","d","_p$label","footerText","toLowerCase","proficiency","condensedItems","barItemsLength","barItemsMultipleOfTwo","currentSplitButtonItemButton","isCondensedButton","arr","_arrayWithHoles","isArray","_iterableToArrayLimit","_s","_e","_r","_arr","_n","_d","_unsupportedIterableToArray","minLen","_arrayLikeToArray","toString","from","test","_nonIterableRest","len","arr2","registerSettings","registerSettingsArray","register","showWeaponsItems","scope","config","default","onChange","sett","refresh","showClassActions","condenseClassActions","macroPanel","requiresReload","switchEquip","noAA"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"./index.js","mappings":"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","sources":["webpack:///webpack/bootstrap","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./scripts/config.js","webpack:///./scripts/settings.js","webpack:///./scripts/main.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import { MODULE_ID } from \"./main.js\";\r\n\r\nconst ECHItems = {};\r\n\r\nexport function initConfig() {\r\n Hooks.on(\"argonInit\", (CoreHUD) => {\r\n if (game.system.id !== \"dnd5e\") return;\r\n registerItems();\r\n const ARGON = CoreHUD.ARGON;\r\n\r\n const isMIDI = game.modules.get(\"midi-qol\")?.active;\r\n const getMidiFlag = (actionType) => {\r\n if (!isMIDI || !ui.ARGON._actor) return null;\r\n const flag = ui.ARGON._actor.getFlag(\"midi-qol\", \"actions\") ?? {};\r\n const value = flag[actionType] ?? false;\r\n const midiAction = value ? 0 : 1;\r\n return midiAction;\r\n };\r\n\r\n const actionTypes = {\r\n action: [\"action\"],\r\n bonus: [\"bonus\"],\r\n reaction: [\"reaction\", \"reactiondamage\", \"reactionmanual\"],\r\n free: [\"special\"],\r\n };\r\n\r\n const itemTypes = {\r\n spell: [\"spell\"],\r\n feat: [\"feat\"],\r\n consumable: [\"consumable\", \"equipment\", \"loot\"],\r\n };\r\n\r\n const mainBarFeatures = [];\r\n\r\n if (game.settings.get(MODULE_ID, \"showWeaponsItems\")) itemTypes.consumable.push(\"weapon\");\r\n if (game.settings.get(MODULE_ID, \"showClassActions\")) mainBarFeatures.push(\"class\");\r\n\r\n CoreHUD.DND5E = {\r\n actionTypes,\r\n itemTypes,\r\n mainBarFeatures,\r\n ECHItems,\r\n };\r\n\r\n Hooks.callAll(\"enhanced-combat-hud.dnd5e.initConfig\", { actionTypes, itemTypes, ECHItems });\r\n\r\n async function getTooltipDetails(item, type) {\r\n let title, description, itemType, subtitle, target, range, dt;\r\n let damageTypes = [];\r\n let properties = [];\r\n let materialComponents = \"\";\r\n\r\n if (type == \"skill\") {\r\n title = CONFIG.DND5E.skills[item].label;\r\n description = game.i18n.localize(`enhancedcombathud-dnd5e.skills.${item}.tooltip`);\r\n } else if (type == \"save\") {\r\n title = CONFIG.DND5E.abilities[item].label;\r\n description = game.i18n.localize(`enhancedcombathud-dnd5e.abilities.${item}.tooltip`);\r\n } else {\r\n if (!item || !item.system) return;\r\n\r\n title = item.name;\r\n description = item.system.description.value;\r\n itemType = item.type;\r\n target = item.labels?.target || \"-\";\r\n range = item.labels?.range || \"-\";\r\n properties = [];\r\n dt = item.labels?.damageTypes?.split(\", \");\r\n damageTypes = dt && dt.length ? dt : [];\r\n materialComponents = \"\";\r\n\r\n switch (itemType) {\r\n case \"weapon\":\r\n subtitle = CONFIG.DND5E.weaponTypes[item.system.weaponType];\r\n properties.push(CONFIG.DND5E.itemActionTypes[item.system.actionType]);\r\n for (let [key, value] of Object.entries(item.system.properties)) {\r\n let prop = value && CONFIG.DND5E.weaponProperties[key] ? CONFIG.DND5E.weaponProperties[key] : undefined;\r\n if (prop) properties.push(prop);\r\n }\r\n break;\r\n case \"spell\":\r\n subtitle = `${item.labels.level} ${item.labels.school}`;\r\n properties.push(CONFIG.DND5E.spellSchools[item.system.school]);\r\n properties.push(item.labels.duration);\r\n properties.push(item.labels.save);\r\n for (let comp of item.labels.components.all) {\r\n properties.push(comp.abbr);\r\n }\r\n if (item.labels.materials) materialComponents = item.labels.materials;\r\n break;\r\n case \"consumable\":\r\n subtitle = CONFIG.DND5E.consumableTypes[item.system.consumableType];\r\n properties.push(CONFIG.DND5E.itemActionTypes[item.system.actionType]);\r\n break;\r\n case \"feat\":\r\n subtitle = item.system.requirements;\r\n properties.push(CONFIG.DND5E.itemActionTypes[item.system.actionType]);\r\n break;\r\n }\r\n }\r\n\r\n if (description) description = await TextEditor.enrichHTML(description);\r\n let details = [];\r\n if (target || range) {\r\n details = [\r\n {\r\n label: \"enhancedcombathud-dnd5e.tooltip.target.name\",\r\n value: target,\r\n },\r\n {\r\n label: \"enhancedcombathud-dnd5e.tooltip.range.name\",\r\n value: range,\r\n },\r\n ];\r\n }\r\n if (item?.labels?.toHit) {\r\n details.push({\r\n label: \"enhancedcombathud-dnd5e.tooltip.toHit.name\",\r\n value: item.labels.toHit,\r\n });\r\n }\r\n if (item?.labels?.derivedDamage?.length) {\r\n let dmgString = \"\";\r\n item.labels.derivedDamage.forEach((dDmg) => {\r\n dmgString += dDmg.formula + \" \" + getDamageTypeIcon(dDmg.damageType) + \" \";\r\n });\r\n details.push({\r\n label: \"enhancedcombathud-dnd5e.tooltip.damage.name\",\r\n value: dmgString,\r\n });\r\n }\r\n\r\n const tooltipProperties = [];\r\n if (damageTypes?.length) damageTypes.forEach((d) => tooltipProperties.push({ label: d, primary: true }));\r\n if (properties?.length) properties.forEach((p) => tooltipProperties.push({ label: p?.label ?? p, secondary: true }));\r\n return { title, description, subtitle, details, properties: tooltipProperties, footerText: materialComponents };\r\n }\r\n\r\n function getDamageTypeIcon(damageType) {\r\n switch (damageType.toLowerCase()) {\r\n case \"acid\":\r\n return '';\r\n case \"bludgeoning\":\r\n return '';\r\n case \"cold\":\r\n return '';\r\n case \"fire\":\r\n return '';\r\n case \"force\":\r\n return '';\r\n case \"lightning\":\r\n return '';\r\n case \"necrotic\":\r\n return '';\r\n case \"piercing\":\r\n return '';\r\n case \"poison\":\r\n return '';\r\n case \"psychic\":\r\n return '';\r\n case \"radiant\":\r\n return '';\r\n case \"slashing\":\r\n return '';\r\n case \"thunder\":\r\n return '';\r\n case \"healing\":\r\n return '';\r\n default:\r\n return \"\";\r\n }\r\n }\r\n\r\n function getProficiencyIcon(proficiency) {\r\n if (proficiency == 0) return ' ';\r\n else if (proficiency == 1) return ' ';\r\n else if (proficiency == 2) return ' ';\r\n else if (proficiency == 0.5) return ' ';\r\n else return ' ';\r\n }\r\n\r\n function condenseItemButtons(items) {\r\n const condenseClassActions = game.settings.get(MODULE_ID, \"condenseClassActions\");\r\n if (!condenseClassActions) return items.map((item) => new DND5eItemButton({ item, inActionPanel: true }));\r\n const condensedItems = [];\r\n const barItemsLength = items.length;\r\n const barItemsMultipleOfTwo = barItemsLength - (barItemsLength % 2);\r\n let currentSplitButtonItemButton = null;\r\n for (let i = 0; i < barItemsLength; i++) {\r\n const isCondensedButton = i < barItemsMultipleOfTwo;\r\n const item = items[i];\r\n if (isCondensedButton) {\r\n if (currentSplitButtonItemButton) {\r\n const button = new DND5eItemButton({ item, inActionPanel: false });\r\n condensedItems.push(new ARGON.MAIN.BUTTONS.SplitButton(currentSplitButtonItemButton, button));\r\n currentSplitButtonItemButton = null;\r\n } else {\r\n currentSplitButtonItemButton = new DND5eItemButton({ item, inActionPanel: false });\r\n }\r\n } else {\r\n condensedItems.push(new DND5eItemButton({ item, inActionPanel: true }));\r\n }\r\n }\r\n return condensedItems;\r\n }\r\n\r\n class DND5ePortraitPanel extends ARGON.PORTRAIT.PortraitPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get description() {\r\n const { type, system } = this.actor;\r\n const actor = this.actor;\r\n const isNPC = type === \"npc\";\r\n const isPC = type === \"character\";\r\n if (isNPC) {\r\n const creatureType = game.i18n.localize(CONFIG.DND5E.creatureTypes[actor.system.details.type.value]?.label ?? actor.system.details.type.custom);\r\n const cr = system.details.cr >= 1 || system.details.cr <= 0 ? system.details.cr : `1/${1 / system.details.cr}`;\r\n return `CR ${cr} ${creatureType}`;\r\n } else if (isPC) {\r\n const classes = Object.values(actor.classes)\r\n .map((c) => c.name)\r\n .join(\" / \");\r\n return `Level ${system.details.level} ${classes} (${system.details.race})`;\r\n } else {\r\n return \"\";\r\n }\r\n }\r\n\r\n get isDead() {\r\n return this.isDying && this.actor.type !== \"character\";\r\n }\r\n\r\n get isDying() {\r\n return this.actor.system.attributes.hp.value <= 0;\r\n }\r\n\r\n get successes() {\r\n return this.actor.system.attributes?.death?.success ?? 0;\r\n }\r\n\r\n get failures() {\r\n return this.actor.system.attributes?.death?.failure ?? 0;\r\n }\r\n\r\n get configurationTemplate() {\r\n return \"modules/enhancedcombathud-dnd5e/templates/argon-actor-config.hbs\";\r\n }\r\n\r\n async _onDeathSave(event) {\r\n this.actor.rollDeathSave({});\r\n }\r\n\r\n async getStatBlocks() {\r\n const HPText = game.i18n\r\n .localize(\"DND5E.HitPoints\")\r\n .split(\" \")\r\n .map((word) => word.charAt(0).toUpperCase())\r\n .join(\"\");\r\n const ACText = game.i18n\r\n .localize(\"DND5E.ArmorClass\")\r\n .split(\" \")\r\n .map((word) => word.charAt(0).toUpperCase())\r\n .join(\"\");\r\n const SpellDC = game.i18n.localize(\"DND5E.SaveDC\").replace(\"{ability}\", \"\").replace(\"{dc}\", \"\").trim();\r\n\r\n const hpColor = this.actor.system.attributes.hp.temp ? \"#6698f3\" : \"rgb(0 255 170)\";\r\n const tempMax = this.actor.system.attributes.hp.tempmax;\r\n const hpMaxColor = tempMax ? (tempMax > 0 ? \"rgb(222 91 255)\" : \"#ffb000\") : \"rgb(255 255 255)\";\r\n\r\n return [\r\n [\r\n {\r\n text: `${this.actor.system.attributes.hp.value + (this.actor.system.attributes.hp.temp ?? 0)}`,\r\n color: hpColor,\r\n },\r\n {\r\n text: `/`,\r\n },\r\n {\r\n text: `${this.actor.system.attributes.hp.max + (this.actor.system.attributes.hp.tempmax ?? 0)}`,\r\n color: hpMaxColor,\r\n },\r\n {\r\n text: HPText,\r\n },\r\n ],\r\n [\r\n {\r\n text: ACText,\r\n },\r\n {\r\n text: this.actor.system.attributes.ac.value,\r\n color: \"var(--ech-movement-baseMovement-background)\",\r\n },\r\n ],\r\n [\r\n {\r\n text: SpellDC,\r\n },\r\n {\r\n text: this.actor.system.attributes.spelldc,\r\n color: \"var(--ech-movement-baseMovement-background)\",\r\n },\r\n ],\r\n ];\r\n }\r\n }\r\n\r\n class DND5eDrawerButton extends ARGON.DRAWER.DrawerButton {\r\n constructor(buttons, item, type) {\r\n super(buttons);\r\n this.item = item;\r\n this.type = type;\r\n }\r\n\r\n get hasTooltip() {\r\n return true;\r\n }\r\n\r\n get tooltipOrientation() {\r\n return TooltipManager.TOOLTIP_DIRECTIONS.RIGHT;\r\n }\r\n\r\n async getTooltipData() {\r\n const tooltipData = await getTooltipDetails(this.item, this.type);\r\n return tooltipData;\r\n }\r\n }\r\n\r\n class DND5eDrawerPanel extends ARGON.DRAWER.DrawerPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get categories() {\r\n const abilities = this.actor.system.abilities;\r\n const skills = this.actor.system.skills;\r\n const tools = this.actor.itemTypes.tool;\r\n\r\n const addSign = (value) => {\r\n if (value >= 0) return `+${value}`;\r\n return value;\r\n };\r\n\r\n const abilitiesButtons = Object.keys(abilities).map((ability) => {\r\n const abilityData = abilities[ability];\r\n return new DND5eDrawerButton(\r\n [\r\n {\r\n label: CONFIG.DND5E.abilities[ability].label,\r\n onClick: (event) => this.actor.rollAbility(ability, { event }),\r\n },\r\n {\r\n label: addSign(abilityData.mod + (abilityData.checkBonus || 0)),\r\n onClick: (event) => this.actor.rollAbilityTest(ability, { event }),\r\n },\r\n {\r\n label: addSign(abilityData.save),\r\n onClick: (event) => this.actor.rollAbilitySave(ability, { event }),\r\n },\r\n ],\r\n ability,\r\n \"save\",\r\n );\r\n });\r\n\r\n const skillsButtons = Object.keys(skills).map((skill) => {\r\n const skillData = skills[skill];\r\n return new DND5eDrawerButton(\r\n [\r\n {\r\n label: getProficiencyIcon(skillData.proficient) + CONFIG.DND5E.skills[skill].label,\r\n onClick: (event) => this.actor.rollSkill(skill, { event }),\r\n },\r\n {\r\n label: `${addSign(skillData.total)}(${skillData.passive})`,\r\n style: \"display: flex; justify-content: flex-end;\",\r\n },\r\n ],\r\n skill,\r\n \"skill\",\r\n );\r\n });\r\n\r\n const toolButtons = tools.map((tool) => {\r\n return new DND5eDrawerButton(\r\n [\r\n {\r\n label: getProficiencyIcon(tool.system.proficient) + tool.name,\r\n onClick: (event) => tool.rollToolCheck({ event }),\r\n },\r\n {\r\n label: addSign(abilities[tool.abilityMod].mod + tool.system.proficiencyMultiplier * this.actor.system.attributes.prof),\r\n },\r\n ],\r\n tool,\r\n );\r\n });\r\n\r\n return [\r\n {\r\n gridCols: \"5fr 2fr 2fr\",\r\n captions: [\r\n {\r\n label: \"Abilities\",\r\n align: \"left\",\r\n },\r\n {\r\n label: \"Check\",\r\n align: \"center\",\r\n },\r\n {\r\n label: \"Save\",\r\n align: \"center\",\r\n },\r\n ],\r\n align: [\"left\", \"center\", \"center\"],\r\n buttons: abilitiesButtons,\r\n },\r\n {\r\n gridCols: \"7fr 2fr\",\r\n captions: [\r\n {\r\n label: \"Skills\",\r\n },\r\n {\r\n label: \"\",\r\n },\r\n ],\r\n buttons: skillsButtons,\r\n },\r\n {\r\n gridCols: \"7fr 2fr\",\r\n captions: [\r\n {\r\n label: \"Tools\",\r\n },\r\n {\r\n label: \"\",\r\n },\r\n ],\r\n buttons: toolButtons,\r\n },\r\n ];\r\n }\r\n\r\n get title() {\r\n return `${game.i18n.localize(\"enhancedcombathud-dnd5e.hud.saves.name\")} / ${game.i18n.localize(\"enhancedcombathud-dnd5e.hud.skills.name\")} / ${game.i18n.localize(\"enhancedcombathud-dnd5e.hud.tools.name\")}`;\r\n }\r\n }\r\n\r\n class DND5eActionActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.Action\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return getMidiFlag(\"action\") ?? (this.isActionUsed ? 0 : 1);\r\n }\r\n\r\n _onNewRound(combat) {\r\n this.isActionUsed = false;\r\n this.updateActionUse();\r\n }\r\n\r\n async _getButtons() {\r\n const spellItems = this.actor.items.filter((item) => itemTypes.spell.includes(item.type) && actionTypes.action.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n const featItems = this.actor.items.filter((item) => itemTypes.feat.includes(item.type) && actionTypes.action.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n const consumableItems = this.actor.items.filter((item) => itemTypes.consumable.includes(item.type) && actionTypes.action.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n\r\n const spellButton = !spellItems.length ? [] : [new DND5eButtonPanelButton({ type: \"spell\", items: spellItems, color: 0 })].filter((button) => button.hasContents);\r\n\r\n const specialActions = Object.values(ECHItems);\r\n\r\n const showSpecialActions = game.settings.get(MODULE_ID, \"showSpecialActions\");\r\n const buttons = [];\r\n if (showSpecialActions) {\r\n buttons.push(...[new DND5eItemButton({ item: null, isWeaponSet: true, isPrimary: true }), new ARGON.MAIN.BUTTONS.SplitButton(new DND5eSpecialActionButton(specialActions[0]), new DND5eSpecialActionButton(specialActions[1])), ...spellButton, new DND5eButtonPanelButton({ type: \"feat\", items: featItems, color: 0 }), new ARGON.MAIN.BUTTONS.SplitButton(new DND5eSpecialActionButton(specialActions[2]), new DND5eSpecialActionButton(specialActions[3])), new ARGON.MAIN.BUTTONS.SplitButton(new DND5eSpecialActionButton(specialActions[4]), new DND5eSpecialActionButton(specialActions[5])), new DND5eButtonPanelButton({ type: \"consumable\", items: consumableItems, color: 0 })]);\r\n } else {\r\n buttons.push(...[new DND5eItemButton({ item: null, isWeaponSet: true, isPrimary: true }), ...spellButton, new DND5eButtonPanelButton({ type: \"feat\", items: featItems, color: 0 }), new DND5eButtonPanelButton({ type: \"consumable\", items: consumableItems, color: 0 })]);\r\n }\r\n\r\n const barItems = this.actor.items.filter((item) => CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value) && actionTypes.action.includes(item.system.activation?.type));\r\n buttons.push(...condenseItemButtons(barItems));\r\n\r\n return buttons.filter((button) => button.hasContents || button.items == undefined || button.items.length);\r\n }\r\n }\r\n\r\n class DND5eBonusActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.BonusAction\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return getMidiFlag(\"bonus\") ?? (this.isActionUsed ? 0 : 1);\r\n }\r\n\r\n _onNewRound(combat) {\r\n this.isActionUsed = false;\r\n this.updateActionUse();\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [new DND5eItemButton({ item: null, isWeaponSet: true, isPrimary: false })];\r\n for (const [type, types] of Object.entries(itemTypes)) {\r\n const items = this.actor.items.filter((item) => types.includes(item.type) && actionTypes.bonus.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n if (!items.length) continue;\r\n const button = new DND5eButtonPanelButton({ type, items, color: 1 });\r\n if (button.hasContents) buttons.push(button);\r\n }\r\n\r\n const barItems = this.actor.items.filter((item) => CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value) && actionTypes.bonus.includes(item.system.activation?.type));\r\n buttons.push(...condenseItemButtons(barItems));\r\n\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eReactionActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.Reaction\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return getMidiFlag(\"reaction\") ?? (this.isActionUsed ? 0 : 1);\r\n }\r\n\r\n _onNewRound(combat) {\r\n this.isActionUsed = false;\r\n this.updateActionUse();\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [new DND5eItemButton({ item: null, isWeaponSet: true, isPrimary: true })];\r\n //buttons.push(new DND5eEquipmentButton({slot: 1}));\r\n for (const [type, types] of Object.entries(itemTypes)) {\r\n const items = this.actor.items.filter((item) => types.includes(item.type) && actionTypes.reaction.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n if (!items.length) continue;\r\n const button = new DND5eButtonPanelButton({ type, items, color: 3 });\r\n if (button.hasContents) buttons.push(button);\r\n }\r\n\r\n const barItems = this.actor.items.filter((item) => CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value) && actionTypes.reaction.includes(item.system.activation?.type));\r\n buttons.push(...condenseItemButtons(barItems));\r\n\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eFreeActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.Special\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return this.isActionUsed ? 0 : 1;\r\n }\r\n\r\n _onNewRound(combat) {\r\n this.isActionUsed = false;\r\n this.updateActionUse();\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [];\r\n\r\n for (const [type, types] of Object.entries(itemTypes)) {\r\n const items = this.actor.items.filter((item) => types.includes(item.type) && actionTypes.free.includes(item.system.activation?.type) && !CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value));\r\n if (!items.length) continue;\r\n const button = new DND5eButtonPanelButton({ type, items, color: 2 });\r\n if (button.hasContents) buttons.push(button);\r\n }\r\n\r\n const barItems = this.actor.items.filter((item) => CoreHUD.DND5E.mainBarFeatures.includes(item.system.type?.value) && actionTypes.free.includes(item.system.activation?.type));\r\n buttons.push(...condenseItemButtons(barItems));\r\n\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eLegActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.LegendaryActionLabel\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? this.actor.system.resources?.legact?.max ?? null : null;\r\n }\r\n\r\n get currentActions() {\r\n return this.actor.system.resources?.legact?.value ?? null;\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [];\r\n const legendary = this.actor.items.filter((item) => item.system.activation?.type === \"legendary\");\r\n legendary.forEach((item) => {\r\n buttons.push(new DND5eItemButton({ item, inActionPanel: true }));\r\n });\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eLairActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.LairActionLabel\";\r\n }\r\n\r\n get maxActions() {\r\n return this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return this.actor.system.resources.lair?.value * 1;\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [];\r\n const lair = this.actor.items.filter((item) => item.system.activation?.type === \"lair\");\r\n lair.forEach((item) => {\r\n buttons.push(new DND5eItemButton({ item, inActionPanel: true }));\r\n });\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eMythicActionPanel extends ARGON.MAIN.ActionPanel {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get label() {\r\n return \"DND5E.MythicActionLabel\";\r\n }\r\n\r\n get maxActions() {\r\n return null; //this.actor?.inCombat ? 1 : null;\r\n }\r\n\r\n get currentActions() {\r\n return null; //this.actor.system.resources.mythic?.value * 1;\r\n }\r\n\r\n async _getButtons() {\r\n const buttons = [];\r\n const mythic = this.actor.items.filter((item) => item.system.activation?.type === \"mythic\");\r\n mythic.forEach((item) => {\r\n buttons.push(new DND5eItemButton({ item, inActionPanel: true }));\r\n });\r\n return buttons;\r\n }\r\n }\r\n\r\n class DND5eItemButton extends ARGON.MAIN.BUTTONS.ItemButton {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get hasTooltip() {\r\n return true;\r\n }\r\n\r\n get ranges() {\r\n const item = this.item;\r\n const touchRange = item.system.range.units == \"touch\" ? canvas?.scene?.grid?.distance : null;\r\n return {\r\n normal: item.system?.range?.value ?? touchRange,\r\n long: item.system?.range?.long ?? null,\r\n };\r\n }\r\n\r\n get targets() {\r\n const item = this.item;\r\n const validTargets = [\"creature\", \"ally\", \"enemy\"];\r\n const actionType = item.system.actionType;\r\n const targetType = item.system.target?.type;\r\n if (!item.system.target?.units && validTargets.includes(targetType)) {\r\n return item.system.target?.value;\r\n } else if (actionType === \"mwak\" || actionType === \"rwak\") {\r\n return 1;\r\n }\r\n return null;\r\n }\r\n\r\n get visible() {\r\n if (!this._isWeaponSet || this._isPrimary) return super.visible;\r\n return super.visible && this.item?.system?.type?.value !== \"shield\";\r\n }\r\n\r\n async getTooltipData() {\r\n const tooltipData = await getTooltipDetails(this.item);\r\n tooltipData.propertiesLabel = \"enhancedcombathud-dnd5e.tooltip.properties.name\";\r\n return tooltipData;\r\n }\r\n\r\n async _onLeftClick(event) {\r\n ui.ARGON.interceptNextDialog(event.currentTarget);\r\n const used = await this.item.use({ event }, { event });\r\n if (used) {\r\n DND5eItemButton.consumeActionEconomy(this.item);\r\n }\r\n }\r\n\r\n async _onRightClick(event) {\r\n this.item?.sheet?.render(true);\r\n }\r\n\r\n static consumeActionEconomy(item) {\r\n const activationType = item.system.activation?.type;\r\n let actionType = null;\r\n for (const [type, types] of Object.entries(actionTypes)) {\r\n if (types.includes(activationType)) actionType = type;\r\n }\r\n if (!actionType) return;\r\n if (game.combat?.combatant?.actor !== item.parent) actionType = \"reaction\";\r\n if (actionType === \"action\") {\r\n ui.ARGON.components.main[0].isActionUsed = true;\r\n ui.ARGON.components.main[0].updateActionUse();\r\n } else if (actionType === \"bonus\") {\r\n ui.ARGON.components.main[1].isActionUsed = true;\r\n ui.ARGON.components.main[1].updateActionUse();\r\n } else if (actionType === \"reaction\") {\r\n ui.ARGON.components.main[2].isActionUsed = true;\r\n ui.ARGON.components.main[2].updateActionUse();\r\n } else if (actionType === \"free\") {\r\n ui.ARGON.components.main[3].isActionUsed = true;\r\n ui.ARGON.components.main[3].updateActionUse();\r\n } else if (actionType === \"legendary\") {\r\n ui.ARGON.components.main[4].isActionUsed = true;\r\n }\r\n }\r\n\r\n async render(...args) {\r\n await super.render(...args);\r\n if (this.item) {\r\n const weapons = this.actor.items.filter((item) => item.system.consume?.target === this.item.id);\r\n ui.ARGON.updateItemButtons(weapons);\r\n }\r\n }\r\n\r\n get quantity() {\r\n if (!this.item?.system) return null;\r\n const showQuantityItemTypes = [\"consumable\"];\r\n const consumeType = this.item.system.consume?.type;\r\n if (consumeType === \"ammo\") {\r\n const ammoItem = this.actor.items.get(this.item.system.consume.target);\r\n if (!ammoItem) return null;\r\n return Math.floor((ammoItem.system.quantity ?? 0) / this.item.system.consume.amount);\r\n } else if (consumeType === \"attribute\") {\r\n return Math.floor(getProperty(this.actor.system, this.item.system.consume.target) / this.item.system.consume.amount);\r\n } else if (consumeType === \"charges\") {\r\n const chargesItem = this.actor.items.get(this.item.system.consume.target);\r\n if (!chargesItem) return null;\r\n return Math.floor((chargesItem.system.uses?.value ?? 0) / this.item.system.consume.amount);\r\n } else if (showQuantityItemTypes.includes(this.item.type)) {\r\n return this.item.system.uses?.value ?? this.item.system.quantity;\r\n } else if (this.item.system.uses.value !== null && this.item.system.uses.per !== null) {\r\n return this.item.system.uses.value;\r\n }\r\n return null;\r\n }\r\n }\r\n\r\n class DND5eButtonPanelButton extends ARGON.MAIN.BUTTONS.ButtonPanelButton {\r\n constructor({ type, items, color }) {\r\n super();\r\n this.type = type;\r\n this.items = items;\r\n this.color = color;\r\n this.itemsWithSpells = [];\r\n this._spells = this.prePrepareSpells();\r\n }\r\n\r\n get hasContents() {\r\n return this._spells ? !!this._spells.length || !!this.itemsWithSpells.length : !!this.items.length;\r\n }\r\n\r\n get colorScheme() {\r\n return this.color;\r\n }\r\n\r\n get id() {\r\n return `${this.type}-${this.color}`;\r\n }\r\n\r\n get label() {\r\n switch (this.type) {\r\n case \"spell\":\r\n return \"enhancedcombathud-dnd5e.hud.castspell.name\";\r\n case \"feat\":\r\n return \"enhancedcombathud-dnd5e.hud.usepower.name\";\r\n case \"consumable\":\r\n return \"enhancedcombathud-dnd5e.hud.useitem.name\";\r\n }\r\n }\r\n\r\n get icon() {\r\n switch (this.type) {\r\n case \"spell\":\r\n return \"modules/enhancedcombathud/icons/spell-book.webp\";\r\n case \"feat\":\r\n return \"modules/enhancedcombathud/icons/mighty-force.webp\";\r\n case \"consumable\":\r\n return \"modules/enhancedcombathud/icons/drink-me.webp\";\r\n }\r\n }\r\n\r\n get showPreparedOnly() {\r\n if (this.actor.type !== \"character\") return false;\r\n const preparedFlag = this.actor.getFlag(MODULE_ID, \"showPrepared\");\r\n if (preparedFlag === \"all\") return false;\r\n if (preparedFlag === \"preparedOnly\") return true;\r\n const classes = Object.keys(this.actor.classes);\r\n const requiresPreparation = [\"cleric\", \"druid\", \"paladin\", \"wizard\", \"artificer\"].some((className) => classes.includes(className));\r\n return requiresPreparation;\r\n }\r\n\r\n prePrepareSpells() {\r\n if (this.type !== \"spell\") return;\r\n\r\n const spellLevels = CONFIG.DND5E.spellLevels;\r\n const itemsToIgnore = [];\r\n if (game.modules.get(\"items-with-spells-5e\")?.active) {\r\n const actionType = this.items[0].system.activation?.type;\r\n const spellItems = this.actor.items.filter((item) => item.flags[\"items-with-spells-5e\"]?.[\"item-spells\"]?.length);\r\n for (const item of spellItems) {\r\n const spellData = item.flags[\"items-with-spells-5e\"][\"item-spells\"];\r\n const itemsInSpell = spellData.map((spell) => this.actor.items.get(spell.id)).filter((item) => item && item.system.activation?.type === actionType);\r\n if (!itemsInSpell.length) continue;\r\n itemsToIgnore.push(...itemsInSpell);\r\n if (item.system.attunement === 1) continue;\r\n this.itemsWithSpells.push({\r\n label: item.name,\r\n buttons: itemsInSpell.map((item) => new DND5eItemButton({ item })),\r\n uses: () => {\r\n return { max: item.system.uses?.max, value: item.system.uses?.value };\r\n },\r\n });\r\n }\r\n this.items = this.items.filter((item) => !itemsToIgnore.includes(item));\r\n }\r\n if (this.showPreparedOnly) {\r\n const allowIfNotPrepared = [\"atwill\", \"innate\", \"pact\", \"always\"];\r\n this.items = this.items.filter((item) => {\r\n if (allowIfNotPrepared.includes(item.system.preparation.mode)) return true;\r\n if (item.system.level == 0) return true;\r\n return item.system.preparation.prepared;\r\n });\r\n }\r\n\r\n const spells = [\r\n ...this.itemsWithSpells,\r\n {\r\n label: \"DND5E.SpellPrepAtWill\",\r\n buttons: this.items.filter((item) => item.system.preparation.mode === \"atwill\").map((item) => new DND5eItemButton({ item })),\r\n uses: { max: Infinity, value: Infinity },\r\n },\r\n {\r\n label: \"DND5E.SpellPrepInnate\",\r\n buttons: this.items.filter((item) => item.system.preparation.mode === \"innate\").map((item) => new DND5eItemButton({ item })),\r\n uses: { max: Infinity, value: Infinity },\r\n },\r\n {\r\n label: Object.values(spellLevels)[0],\r\n buttons: this.items.filter((item) => item.system.level == 0).map((item) => new DND5eItemButton({ item })),\r\n uses: { max: Infinity, value: Infinity },\r\n },\r\n {\r\n label: \"DND5E.PactMagic\",\r\n buttons: this.items.filter((item) => item.system.preparation.mode === \"pact\").map((item) => new DND5eItemButton({ item })),\r\n uses: () => {\r\n return this.actor.system.spells.pact;\r\n },\r\n },\r\n ];\r\n for (const [level, label] of Object.entries(spellLevels)) {\r\n const levelSpells = this.items.filter((item) => item.system.level == level && (item.system.preparation.mode === \"prepared\" || item.system.preparation.mode === \"always\"));\r\n if (!levelSpells.length || level == 0) continue;\r\n spells.push({\r\n label,\r\n buttons: levelSpells.map((item) => new DND5eItemButton({ item })),\r\n uses: () => {\r\n return this.actor.system.spells[`spell${level}`];\r\n },\r\n });\r\n }\r\n return spells.filter((spell) => spell.buttons.length);\r\n }\r\n\r\n async _getPanel() {\r\n if (this.type === \"spell\") {\r\n return new ARGON.MAIN.BUTTON_PANELS.ACCORDION.AccordionPanel({ id: this.id, accordionPanelCategories: this._spells.map(({ label, buttons, uses }) => new ARGON.MAIN.BUTTON_PANELS.ACCORDION.AccordionPanelCategory({ label, buttons, uses })) });\r\n } else {\r\n return new ARGON.MAIN.BUTTON_PANELS.ButtonPanel({ id: this.id, buttons: this.items.map((item) => new DND5eItemButton({ item })) });\r\n }\r\n }\r\n }\r\n\r\n class DND5eSpecialActionButton extends ARGON.MAIN.BUTTONS.ActionButton {\r\n constructor(specialItem) {\r\n super();\r\n const actorItem = this.actor.items.getName(specialItem.name);\r\n this.item =\r\n actorItem ??\r\n new CONFIG.Item.documentClass(specialItem, {\r\n parent: this.actor,\r\n });\r\n }\r\n\r\n get label() {\r\n return this.item.name;\r\n }\r\n\r\n get icon() {\r\n return this.item.img;\r\n }\r\n\r\n get hasTooltip() {\r\n return true;\r\n }\r\n\r\n async getTooltipData() {\r\n const tooltipData = await getTooltipDetails(this.item);\r\n tooltipData.propertiesLabel = \"enhancedcombathud-dnd5e.tooltip.properties.name\";\r\n return tooltipData;\r\n }\r\n\r\n async _onLeftClick(event) {\r\n const useCE = game.modules.get(\"dfreds-convenient-effects\")?.active && game.dfreds.effectInterface.findEffectByName(this.label);\r\n let success = false;\r\n if (useCE) {\r\n success = true;\r\n await game.dfreds.effectInterface.toggleEffect(this.label, { overlay: false, uuids: [this.actor.uuid] });\r\n } else {\r\n success = await this.item.use({ event }, { event });\r\n }\r\n if (success) {\r\n DND5eItemButton.consumeActionEconomy(this.item);\r\n }\r\n }\r\n }\r\n\r\n class DND5eMovementHud extends ARGON.MovementHud {\r\n constructor(...args) {\r\n super(...args);\r\n this.getMovementMode = game.modules.get(\"elevation-drag-ruler\")?.api?.getMovementMode;\r\n }\r\n\r\n get visible() {\r\n return game.combat?.started;\r\n }\r\n\r\n get movementMode() {\r\n return this.getMovementMode ? this.getMovementMode(this.token) : \"walk\";\r\n }\r\n\r\n get movementMax() {\r\n if(!this.actor) return 0;\r\n return this.actor.system.attributes.movement[this.movementMode] / canvas.scene.dimensions.distance;\r\n }\r\n }\r\n\r\n class DND5eButtonHud extends ARGON.ButtonHud {\r\n constructor(...args) {\r\n super(...args);\r\n }\r\n\r\n get visible() {\r\n return !game.combat?.started;\r\n }\r\n\r\n async _getButtons() {\r\n return [\r\n {\r\n label: \"DND5E.LongRest\",\r\n onClick: (event) => this.actor.longRest(),\r\n icon: \"fas fa-bed\",\r\n },\r\n {\r\n label: \"DND5E.ShortRest\",\r\n onClick: (event) => this.actor.shortRest(),\r\n icon: \"fas fa-coffee\",\r\n },\r\n ];\r\n }\r\n }\r\n\r\n class DND5eWeaponSets extends ARGON.WeaponSets {\r\n async getDefaultSets() {\r\n const sets = await super.getDefaultSets();\r\n const isTransformed = this.actor.flags?.dnd5e?.isPolymorphed;\r\n if (this.actor.type !== \"npc\" && !isTransformed) return sets;\r\n const actions = this.actor.items.filter((item) => item.type === \"weapon\" && item.system.activation?.type === \"action\");\r\n const bonus = this.actor.items.filter((item) => item.type === \"weapon\" && item.system.activation?.type === \"bonus\");\r\n return {\r\n 1: {\r\n primary: actions[0]?.uuid ?? null,\r\n secondary: bonus[0]?.uuid ?? null,\r\n },\r\n 2: {\r\n primary: actions[1]?.uuid ?? null,\r\n secondary: bonus[1]?.uuid ?? null,\r\n },\r\n 3: {\r\n primary: actions[2]?.uuid ?? null,\r\n secondary: bonus[2]?.uuid ?? null,\r\n },\r\n };\r\n }\r\n\r\n async _getSets() {\r\n const isTransformed = this.actor.flags?.dnd5e?.isPolymorphed;\r\n\r\n const sets = isTransformed ? await this.getDefaultSets() : mergeObject(await this.getDefaultSets(), deepClone(this.actor.getFlag(\"enhancedcombathud\", \"weaponSets\") || {}));\r\n\r\n for (const [set, slots] of Object.entries(sets)) {\r\n slots.primary = slots.primary ? await fromUuid(slots.primary) : null;\r\n slots.secondary = slots.secondary ? await fromUuid(slots.secondary) : null;\r\n }\r\n return sets;\r\n }\r\n\r\n async _onSetChange({ sets, active }) {\r\n const switchEquip = game.settings.get(\"enhancedcombathud-dnd5e\", \"switchEquip\");\r\n if (!switchEquip) return;\r\n const updates = [];\r\n const activeSet = sets[active];\r\n const activeItems = Object.values(activeSet).filter((item) => item);\r\n const inactiveSets = Object.values(sets).filter((set) => set !== activeSet);\r\n const inactiveItems = inactiveSets\r\n .flatMap((set) => Object.values(set))\r\n .filter((item) => item)\r\n .filter((item) => !activeItems.includes(item));\r\n activeItems.forEach((item) => {\r\n if (!item.system?.equipped) updates.push({ _id: item.id, \"system.equipped\": true });\r\n });\r\n inactiveItems.forEach((item) => {\r\n if (item.system?.equipped) updates.push({ _id: item.id, \"system.equipped\": false });\r\n });\r\n return await this.actor.updateEmbeddedDocuments(\"Item\", updates);\r\n }\r\n }\r\n\r\n const enableMacroPanel = game.settings.get(MODULE_ID, \"macroPanel\");\r\n\r\n const mainPanels = [DND5eActionActionPanel, DND5eBonusActionPanel, DND5eReactionActionPanel, DND5eFreeActionPanel, DND5eLegActionPanel, DND5eLairActionPanel, DND5eMythicActionPanel]\r\n if(enableMacroPanel) mainPanels.push(ARGON.PREFAB.MacroPanel);\r\n mainPanels.push(ARGON.PREFAB.PassTurnPanel);\r\n\r\n CoreHUD.definePortraitPanel(DND5ePortraitPanel);\r\n CoreHUD.defineDrawerPanel(DND5eDrawerPanel);\r\n CoreHUD.defineMainPanels(mainPanels);\r\n CoreHUD.defineMovementHud(DND5eMovementHud);\r\n CoreHUD.defineButtonHud(DND5eButtonHud);\r\n CoreHUD.defineWeaponSets(DND5eWeaponSets);\r\n CoreHUD.defineSupportedActorTypes([\"character\", \"npc\"]);\r\n });\r\n}\r\n\r\nfunction registerItems() {\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.disengage.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.disengage.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/journey.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.disengage.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: 1,\r\n units: \"turn\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n },\r\n effects: [\r\n {\r\n _id: \"8FtZnIC1vbyKZ6xF\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n turns: 1,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/journey.webp\",\r\n label: \"Disengage\",\r\n origin: \"Item.wyQkeuZkttllAFB1\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n core: {\r\n sourceId: \"Item.wyQkeuZkttllAFB1\",\r\n },\r\n\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.dodge.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.dodge.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/armor-upgrade.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.dodge.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: 1,\r\n units: \"round\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [\r\n {\r\n _id: \"2xH2YQ6pm430O0Aq\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n rounds: 1,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/armor-upgrade.webp\",\r\n label: \"Dodge\",\r\n origin: \"Item.pakEYcgLYxtKGv7J\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.ready.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.ready.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/clockwork.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.ready.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: null,\r\n units: \"\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [\r\n {\r\n _id: \"BevDb0J80M9BdoEl\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n turns: 1,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/clockwork.webp\",\r\n label: \"Ready\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.hide.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.hide.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/cloak-dagger.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.hide.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: null,\r\n units: \"\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n recharge: {\r\n value: null,\r\n charged: false,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [\r\n {\r\n _id: \"SZkbtgGCICrpH0GJ\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n turns: 10,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/cloak-dagger.webp\",\r\n label: \"Hide\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.dash.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.dash.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/walking-boot.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.dash.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: null,\r\n units: \"\",\r\n },\r\n target: {\r\n value: null,\r\n width: null,\r\n units: \"\",\r\n type: \"self\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [\r\n {\r\n _id: \"PPMPZY1t3AUB7UGA\",\r\n changes: [],\r\n disabled: false,\r\n duration: {\r\n startTime: null,\r\n rounds: 1,\r\n },\r\n icon: \"modules/enhancedcombathud/icons/walking-boot.webp\",\r\n label: \"Dash\",\r\n transfer: false,\r\n flags: {\r\n dae: {\r\n stackable: \"none\",\r\n macroRepeat: \"none\",\r\n specialDuration: [],\r\n transfer: false,\r\n },\r\n },\r\n tint: \"\",\r\n },\r\n ],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n ECHItems[game.i18n.localize(\"enhancedcombathud-dnd5e.items.shove.name\")] = {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.items.shove.name\"),\r\n type: \"feat\",\r\n img: \"modules/enhancedcombathud/icons/shield-bash.webp\",\r\n system: {\r\n type: {\r\n value: \"\",\r\n subtype: \"\",\r\n },\r\n description: {\r\n value: game.i18n.localize(\"enhancedcombathud-dnd5e.items.shove.desc\"),\r\n chat: \"\",\r\n unidentified: \"\",\r\n },\r\n source: \"\",\r\n quantity: 1,\r\n weight: 0,\r\n price: 0,\r\n attuned: false,\r\n attunement: 0,\r\n equipped: false,\r\n rarity: \"\",\r\n identified: true,\r\n activation: {\r\n type: \"action\",\r\n cost: 1,\r\n condition: \"\",\r\n },\r\n duration: {\r\n value: null,\r\n units: \"\",\r\n },\r\n target: {\r\n value: 1,\r\n width: null,\r\n units: \"\",\r\n type: \"creature\",\r\n },\r\n range: {\r\n value: null,\r\n long: null,\r\n units: \"touch\",\r\n },\r\n\r\n consume: {\r\n type: \"\",\r\n target: \"\",\r\n amount: null,\r\n },\r\n ability: \"\",\r\n actionType: \"util\",\r\n attackBonus: 0,\r\n chatFlavor: \"\",\r\n critical: null,\r\n damage: {\r\n parts: [],\r\n versatile: \"\",\r\n },\r\n formula: \"\",\r\n save: {\r\n ability: \"\",\r\n dc: null,\r\n scaling: \"spell\",\r\n },\r\n consumableType: \"trinket\",\r\n },\r\n effects: [],\r\n sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\r\n },\r\n };\r\n\r\n if (game.settings.get(\"enhancedcombathud-dnd5e\", \"noAA\")) {\r\n for (let key of Object.keys(ECHItems)) {\r\n delete ECHItems[key].effects;\r\n }\r\n }\r\n}\r\n","import { MODULE_ID } from \"./main.js\";\r\n\r\nexport function registerSettings() {\r\n const settings = {\r\n showWeaponsItems: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showWeaponsItems.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showWeaponsItems.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: false,\r\n onChange: (sett) => {\r\n ui.ARGON.constructor.DND5E.itemTypes.consumable = ui.ARGON.constructor.DND5E.itemTypes.consumable.filter(i => i !== \"weapon\");\r\n if(sett) ui.ARGON.constructor.DND5E.itemTypes.consumable.push(\"weapon\");\r\n ui.ARGON.refresh()\r\n },\r\n },\r\n showClassActions: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showClassActions.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showClassActions.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: true,\r\n onChange: (sett) => {\r\n ui.ARGON.constructor.DND5E.mainBarFeatures = ui.ARGON.constructor.DND5E.mainBarFeatures.filter(i => i !== \"class\");\r\n if(sett) ui.ARGON.constructor.DND5E.mainBarFeatures.push(\"class\");\r\n ui.ARGON.refresh()\r\n },\r\n },\r\n condenseClassActions: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.condenseClassActions.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.condenseClassActions.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: true,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n macroPanel: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.macroPanel.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.macroPanel.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: false,\r\n requiresReload: true,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n switchEquip: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.switchEquip.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.switchEquip.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: true,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n showSpecialActions: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showSpecialActions.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.showSpecialActions.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: true,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n noAA: {\r\n name: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.noAA.name\"),\r\n hint: game.i18n.localize(\"enhancedcombathud-dnd5e.settings.noAA.hint\"),\r\n scope: \"world\",\r\n config: true,\r\n type: Boolean,\r\n default: false,\r\n onChange: () => ui.ARGON.refresh(),\r\n },\r\n };\r\n\r\n registerSettingsArray(settings);\r\n}\r\n\r\nexport function getSetting(key) {\r\n return game.settings.get(MODULE_ID, key);\r\n}\r\n\r\nexport async function setSetting(key, value) {\r\n return await game.settings.set(MODULE_ID, key, value);\r\n}\r\n\r\nfunction registerSettingsArray(settings) {\r\n for(const [key, value] of Object.entries(settings)) {\r\n game.settings.register(MODULE_ID, key, value);\r\n }\r\n}","import {initConfig} from \"./config.js\";\r\nimport { registerSettings } from \"./settings.js\";\r\n\r\nexport const MODULE_ID = \"enhancedcombathud-dnd5e\";\r\n\r\nHooks.on(\"setup\", () => {\r\n registerSettings();\r\n initConfig();\r\n});"],"names":["__webpack_require__","exports","definition","key","o","Object","defineProperty","enumerable","get","obj","prop","prototype","hasOwnProperty","call","_regeneratorRuntime","Op","hasOwn","desc","value","$Symbol","Symbol","iteratorSymbol","iterator","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","toStringTag","define","configurable","writable","err","wrap","innerFn","outerFn","self","tryLocsList","protoGenerator","Generator","generator","create","context","Context","makeInvokeMethod","tryCatch","fn","arg","type","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","IteratorPrototype","getProto","getPrototypeOf","NativeIteratorPrototype","values","Gp","defineIteratorMethods","forEach","method","_invoke","AsyncIterator","PromiseImpl","invoke","resolve","reject","record","result","_typeof","__await","then","unwrapped","error","previousPromise","callInvokeWithMethodAndArg","state","Error","doneResult","delegate","delegateResult","maybeInvokeDelegate","sent","_sent","dispatchException","abrupt","done","methodName","undefined","TypeError","info","resultName","next","nextLoc","pushTryEntry","locs","entry","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","push","resetTryEntry","completion","reset","iterable","iteratorMethod","isNaN","length","i","displayName","isGeneratorFunction","genFun","ctor","constructor","name","mark","setPrototypeOf","__proto__","awrap","async","Promise","iter","keys","val","object","reverse","pop","skipTempReset","prev","charAt","slice","stop","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","complete","finish","_catch","thrown","delegateYield","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPrimitive","input","hint","prim","toPrimitive","res","String","Number","_createClass","protoProps","staticProps","_inherits","subClass","superClass","_setPrototypeOf","p","bind","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","Reflect","construct","sham","Proxy","Boolean","valueOf","e","_createSuperInternal","Super","_getPrototypeOf","NewTarget","arguments","apply","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","ECHItems","initConfig","Hooks","on","CoreHUD","_game$modules$get","game","system","id","registerItems","i18n","localize","img","subtype","description","chat","unidentified","source","quantity","weight","price","attuned","attunement","equipped","rarity","identified","activation","cost","condition","duration","units","width","range","long","consume","amount","ability","actionType","attackBonus","chatFlavor","critical","damage","parts","versatile","formula","save","dc","scaling","effects","_id","changes","disabled","startTime","turns","icon","label","origin","transfer","flags","dae","stackable","macroRepeat","specialDuration","tint","sort","core","sourceId","onUseMacroName","consumableType","rounds","recharge","charged","settings","_i8","_Object$keys","ARGON","isMIDI","modules","active","getMidiFlag","_ui$ARGON$_actor$getF","_flag$actionType","ui","_actor","getFlag","actionTypes","action","bonus","reaction","free","itemTypes","spell","feat","consumable","mainBarFeatures","MODULE_ID","DND5E","callAll","DND5ePortraitPanel","_ARGON$PORTRAIT$Portr","_getStatBlocks","_onDeathSave2","_super","_len","Array","_key","concat","_this$actor","this","actor","isPC","_CONFIG$DND5E$creatur","_CONFIG$DND5E$creatur2","creatureType","CONFIG","creatureTypes","details","custom","cr","classes","map","c","join","level","race","isDying","attributes","hp","_this$actor$system$at","_this$actor$system$at2","death","success","_this$actor$system$at3","_this$actor$system$at4","failure","_callee","event","_callee$","_context","rollDeathSave","_onDeathSave","_x3","_callee2","_this$actor$system$at5","_this$actor$system$at6","HPText","ACText","SpellDC","hpColor","tempMax","hpMaxColor","_callee2$","_context2","split","word","toUpperCase","replace","trim","temp","tempmax","text","color","max","ac","spelldc","getStatBlocks","PORTRAIT","PortraitPanel","DND5eDrawerButton","_ARGON$DRAWER$DrawerB","_getTooltipData","_super2","buttons","item","_this","TooltipManager","TOOLTIP_DIRECTIONS","RIGHT","_callee3","tooltipData","_callee3$","_context3","getTooltipDetails","getTooltipData","DRAWER","DrawerButton","DND5eDrawerPanel","_ARGON$DRAWER$DrawerP","_super3","_len2","_key2","_this2","abilities","skills","tools","tool","addSign","gridCols","captions","align","abilityData","onClick","rollAbility","mod","checkBonus","rollAbilityTest","rollAbilitySave","skill","skillData","getProficiencyIcon","proficient","rollSkill","total","passive","style","rollToolCheck","abilityMod","proficiencyMultiplier","prof","DrawerPanel","DND5eActionActionPanel","_ARGON$MAIN$ActionPan","_getButtons2","_super4","_len3","_key3","_this$actor2","inCombat","_getMidiFlag","isActionUsed","_onNewRound","combat","updateActionUse","_callee4","spellItems","featItems","consumableItems","spellButton","specialActions","showSpecialActions","barItems","_callee4$","_context4","items","filter","_item$system$activati","_item$system$type","includes","_item$system$activati2","_item$system$type2","_item$system$activati3","_item$system$type3","DND5eButtonPanelButton","button","hasContents","DND5eItemButton","isWeaponSet","isPrimary","MAIN","BUTTONS","SplitButton","DND5eSpecialActionButton","_toConsumableArray","_item$system$type4","_item$system$activati4","condenseItemButtons","_getButtons","ActionPanel","DND5eBonusActionPanel","_ARGON$MAIN$ActionPan2","_getButtons3","_super5","_len4","_key4","_this$actor3","_getMidiFlag2","_callee5","_loop","_i","_Object$entries","_this3","_callee5$","_context6","_Object$entries$_i","types","_loop$","_context5","_slicedToArray","_item$system$activati5","_item$system$type5","entries","t0","_item$system$type6","_item$system$activati6","DND5eReactionActionPanel","_ARGON$MAIN$ActionPan3","_getButtons4","_super6","_len5","_key5","_this$actor4","_getMidiFlag3","_callee6","_loop2","_i2","_Object$entries2","_this4","_callee6$","_context8","_Object$entries2$_i","_loop2$","_context7","_item$system$activati7","_item$system$type7","_item$system$type8","_item$system$activati8","DND5eFreeActionPanel","_ARGON$MAIN$ActionPan4","_getButtons5","_super7","_len6","_key6","_this$actor5","_callee7","_loop3","_i3","_Object$entries3","_this5","_callee7$","_context10","_Object$entries3$_i","_loop3$","_context9","_item$system$activati9","_item$system$type9","_item$system$type10","_item$system$activati10","DND5eLegActionPanel","_ARGON$MAIN$ActionPan5","_getButtons6","_super8","_len7","_key7","_this$actor6","_this$actor$system$re","_this$actor$system$re2","resources","legact","_this$actor$system$re3","_this$actor$system$re4","_callee8","_callee8$","_context11","_item$system$activati11","inActionPanel","DND5eLairActionPanel","_ARGON$MAIN$ActionPan6","_getButtons7","_super9","_len8","_key8","_this$actor7","_this$actor$system$re5","lair","_callee9","_callee9$","_context12","_item$system$activati12","DND5eMythicActionPanel","_ARGON$MAIN$ActionPan7","_getButtons8","_super10","_len9","_key9","_callee10","_callee10$","_context13","_item$system$activati13","_ARGON$MAIN$BUTTONS$I","_render","_onRightClick2","_onLeftClick2","_getTooltipData2","_super11","_len10","_key10","_canvas","_item$system$range$va","_item$system","_item$system$range$lo","_item$system2","touchRange","canvas","scene","grid","distance","normal","_item$system$target","_item$system$target2","_item$system$target3","targetType","_this$item","_isWeaponSet","_isPrimary","_get","_callee11","_callee11$","_context14","propertiesLabel","_callee12","_callee12$","_context15","interceptNextDialog","currentTarget","use","consumeActionEconomy","_onLeftClick","_x4","_callee13","_this$item2","_callee13$","_context16","sheet","render","_onRightClick","_x5","_callee14","_get2","_len11","_key11","weapons","_this6","_args17","_callee14$","_context17","_item$system$consume","updateItemButtons","_this$item3","_this$item$system$con","_this$item$system$use","_this$item$system$use2","consumeType","_ammoItem$system$quan","ammoItem","Math","floor","getProperty","_chargesItem$system$u","_chargesItem$system$u2","chargesItem","uses","per","_item$system$activati14","_game$combat","activationType","_i4","_Object$entries4","_Object$entries4$_i","combatant","parent","components","main","ItemButton","_ARGON$MAIN$BUTTONS$B","_getPanel2","_super12","_ref","_this7","itemsWithSpells","_spells","prePrepareSpells","preparedFlag","some","className","_game$modules$get2","_this8","spellLevels","itemsToIgnore","_this$items$0$system$","_step","_iterator","_createForOfIteratorHelper","_item$flags$itemsWit","_loop4","itemsInSpell","_item$system$activati15","_item$system$uses","_item$system$uses2","s","n","f","showPreparedOnly","allowIfNotPrepared","preparation","mode","prepared","spells","Infinity","pact","_loop5","_Object$entries5$_i","_Object$entries5","_i5","levelSpells","_callee15","_callee15$","_context18","BUTTON_PANELS","ACCORDION","AccordionPanel","accordionPanelCategories","_ref2","AccordionPanelCategory","ButtonPanel","_getPanel","ButtonPanelButton","_ARGON$MAIN$BUTTONS$A","_onLeftClick3","_getTooltipData3","_super13","specialItem","_this9","actorItem","getName","Item","documentClass","_callee16","_callee16$","_context19","_callee17","_game$modules$get3","useCE","_callee17$","_context20","dfreds","effectInterface","findEffectByName","toggleEffect","overlay","uuids","uuid","_x6","ActionButton","DND5eMovementHud","_ARGON$MovementHud","_super14","_game$modules$get4","_this10","_len12","_key12","getMovementMode","api","_game$combat2","started","token","movement","movementMode","dimensions","MovementHud","DND5eButtonHud","_ARGON$ButtonHud","_getButtons9","_super15","_len13","_key13","_game$combat3","_callee18","_this11","_callee18$","_context21","longRest","shortRest","ButtonHud","DND5eWeaponSets","_ARGON$WeaponSets","_onSetChange2","_getSets2","_getDefaultSets","_super16","_callee19","_this$actor$flags","_actions$0$uuid","_actions$","_bonus$0$uuid","_bonus$","_actions$1$uuid","_actions$2","_bonus$1$uuid","_bonus$2","_actions$2$uuid","_actions$3","_bonus$2$uuid","_bonus$3","sets","isTransformed","actions","_callee19$","_context22","dnd5e","isPolymorphed","_item$system$activati16","_item$system$activati17","primary","secondary","getDefaultSets","_callee20","_this$actor$flags2","_i6","_Object$entries6","_Object$entries6$_i","slots","_callee20$","_context23","t1","mergeObject","t2","t3","deepClone","fromUuid","t4","t5","_getSets","_callee21","_ref3","updates","activeSet","activeItems","inactiveSets","inactiveItems","_callee21$","_context24","set","flatMap","_item$system3","_item$system4","updateEmbeddedDocuments","_onSetChange","_x7","WeaponSets","mainPanels","PREFAB","MacroPanel","PassTurnPanel","definePortraitPanel","defineDrawerPanel","defineMainPanels","defineMovementHud","defineButtonHud","defineWeaponSets","defineSupportedActorTypes","_x","_x2","_getTooltipDetails","_callee22","_item$labels4","_item$labels5","_damageTypes","_properties","title","itemType","subtitle","dt","damageTypes","properties","materialComponents","_item$labels","_item$labels2","_item$labels3","_i7","_Object$entries7","_Object$entries7$_i","_iterator2","_step2","comp","dmgString","tooltipProperties","_callee22$","_context25","labels","weaponTypes","weaponType","itemActionTypes","weaponProperties","school","spellSchools","all","abbr","materials","consumableTypes","requirements","TextEditor","enrichHTML","toHit","derivedDamage","dDmg","getDamageTypeIcon","damageType","d","_p$label","footerText","toLowerCase","proficiency","condensedItems","barItemsLength","barItemsMultipleOfTwo","currentSplitButtonItemButton","isCondensedButton","arr","_arrayWithHoles","isArray","_iterableToArrayLimit","_s","_e","_r","_arr","_n","_d","_unsupportedIterableToArray","minLen","_arrayLikeToArray","toString","from","test","_nonIterableRest","len","arr2","registerSettings","registerSettingsArray","register","showWeaponsItems","scope","config","default","onChange","sett","refresh","showClassActions","condenseClassActions","macroPanel","requiresReload","switchEquip","noAA"],"sourceRoot":""} \ No newline at end of file diff --git a/scripts/config.js b/scripts/config.js index d35b7be..5b9f8d3 100644 --- a/scripts/config.js +++ b/scripts/config.js @@ -854,7 +854,7 @@ export function initConfig() { if (preparedFlag === "all") return false; if (preparedFlag === "preparedOnly") return true; const classes = Object.keys(this.actor.classes); - const requiresPreparation = ["cleric", "druid", "paladin", "wizard", "artificer", "ranger"].some((className) => classes.includes(className)); + const requiresPreparation = ["cleric", "druid", "paladin", "wizard", "artificer"].some((className) => classes.includes(className)); return requiresPreparation; }