From 165b0817e8c10bd867d04b8a3ba7ba11e6e4102a Mon Sep 17 00:00:00 2001 From: theripper93 Date: Sat, 25 Jan 2025 14:01:00 +0100 Subject: [PATCH] a --- index.js | 2 +- index.js.map | 2 +- scripts/config.js | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/index.js b/index.js index 5589394..07f8f57 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 _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 asyncGeneratorStep(t,r,a,i,o,l,c){try{var u=t[l](c),d=u.value}catch(t){return void a(t)}u.done?r(d):Promise.resolve(d).then(i,o)}function _asyncToGenerator(t){return function(){var r=this,a=arguments;return new Promise((function(i,o){var l=t.apply(r,a);function _next(t){asyncGeneratorStep(l,i,o,_next,_throw,"next",t)}function _throw(t){asyncGeneratorStep(l,i,o,_next,_throw,"throw",t)}_next(void 0)}))}}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("updateItem",(function(t){t.parent===ui.ARGON._actor&&ui.ARGON.rendered&&ui.ARGON.components.portrait.refresh()})),Hooks.on("argonInit",(function(t){var i;if("dnd5e"===game.system.id){!function registerItems(){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"}},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"},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"},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"},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"},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"},sort:0,flags:{"midi-qol":{onUseMacroName:""}}}}();var o=t.ARGON,l=function(t){_inherits(DND5eTooltip,t);var r=_createSuper(DND5eTooltip);function DND5eTooltip(){return _classCallCheck(this,DND5eTooltip),r.apply(this,arguments)}return _createClass(DND5eTooltip,[{key:"classes",get:function get(){return _get(_getPrototypeOf(DND5eTooltip.prototype),"classes",this).concat(["dnd5e2"])}}]),DND5eTooltip}(o.CORE.Tooltip),c=null===(i=game.modules.get("midi-qol"))||void 0===i?void 0:i.active,u=function getMidiFlag(t){var r,a;return c&&ui.ARGON._actor?null!==(a=(null!==(r=ui.ARGON._actor.getFlag("midi-qol","actions"))&&void 0!==r?r:{})[t])&&void 0!==a&&a?0:1:null},d=function getActivationType(t){var r,a;if(null!=t&&null!==(r=t.system)&&void 0!==r&&r.activities)return null===(a=Array.from(t.system.activities)[0])||void 0===a||null===(a=a.activation)||void 0===a?void 0:a.type},p=function getActionType(t){var r,a;if(null!=t&&null!==(r=t.system)&&void 0!==r&&r.activities)return null===(a=Array.from(t.system.activities)[0])||void 0===a?void 0:a.actionType},m={action:["action"],bonus:["bonus"],reaction:["reaction","reactiondamage","reactionmanual"],free:["special"]},h={spell:["spell"],feat:["feat"],consumable:["consumable","equipment","loot"]},y=[];game.settings.get(a,"showWeaponsItems")&&h.consumable.push("weapon"),game.settings.get(a,"showClassActions")&&y.push("class"),t.DND5E={actionTypes:m,itemTypes:h,mainBarFeatures:y,ECHItems:r},Hooks.callAll("enhanced-combat-hud.dnd5e.initConfig",{actionTypes:m,itemTypes:h,ECHItems:r});var v=function(t){_inherits(DND5ePortraitPanel,t);var r,a,i=_createSuper(DND5ePortraitPanel);function DND5ePortraitPanel(){_classCallCheck(this,DND5ePortraitPanel);for(var t=arguments.length,r=new Array(t),a=0;a=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),g=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),b=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 g([{label:CONFIG.DND5E.abilities[a].label,onClick:function onClick(r){return t.actor.rollAbilityCheck({ability:a,event:r})}},{label:o(i.mod+(i.checkBonus||0)),onClick:function onClick(r){return t.actor.rollAbilityCheck({ability:a,event:r})}},{label:o(i.save),onClick:function onClick(r){return t.actor.rollSavingThrow({ability: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 g([{label:getProficiencyIcon(i.proficient)+CONFIG.DND5E.skills[r].label,onClick:function onClick(a){return t.actor.rollSkill({skill: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 g([{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),_=function(i){_inherits(DND5eActionActionPanel,i);var l,c=_createSuper(DND5eActionActionPanel);function DND5eActionActionPanel(){_classCallCheck(this,DND5eActionActionPanel);for(var t=arguments.length,r=new Array(t),a=0;a\n\n
\n\n
\n \n
\n ').concat(this.label,'\n \n Feature\n \n
\n \n
\n\n
\n
\n ').concat(this.item.system.description.value,"\n
\n
\n
\n\n\n\n ")});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),_callee18,this)}))),function createChatMessage(){return r.apply(this,arguments)})}]),DND5eSpecialActionButton}(o.MAIN.BUTTONS.ActionButton),O=function(t){_inherits(DND5eMovementHud,t);var r=_createSuper(DND5eMovementHud);function DND5eMovementHud(){var t,a;_classCallCheck(this,DND5eMovementHud);for(var i=arguments.length,o=new Array(i),l=0;l';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 C({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 _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 asyncGeneratorStep(t,r,a,i,o,l,c){try{var u=t[l](c),d=u.value}catch(t){return void a(t)}u.done?r(d):Promise.resolve(d).then(i,o)}function _asyncToGenerator(t){return function(){var r=this,a=arguments;return new Promise((function(i,o){var l=t.apply(r,a);function _next(t){asyncGeneratorStep(l,i,o,_next,_throw,"next",t)}function _throw(t){asyncGeneratorStep(l,i,o,_next,_throw,"throw",t)}_next(void 0)}))}}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("updateItem",(function(t){t.parent===ui.ARGON._actor&&ui.ARGON.rendered&&ui.ARGON.components.portrait.refresh()})),Hooks.on("argonInit",(function(t){var i;if("dnd5e"===game.system.id){!function registerItems(){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"}},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"},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"},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"},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"},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"},sort:0,flags:{"midi-qol":{onUseMacroName:""}}}}();var o=t.ARGON,l=function(t){_inherits(DND5eTooltip,t);var r=_createSuper(DND5eTooltip);function DND5eTooltip(){return _classCallCheck(this,DND5eTooltip),r.apply(this,arguments)}return _createClass(DND5eTooltip,[{key:"classes",get:function get(){return _get(_getPrototypeOf(DND5eTooltip.prototype),"classes",this).concat(["dnd5e2"])}}]),DND5eTooltip}(o.CORE.Tooltip),c=null===(i=game.modules.get("midi-qol"))||void 0===i?void 0:i.active,u=function getMidiFlag(t){var r,a;return c&&ui.ARGON._actor?null!==(a=(null!==(r=ui.ARGON._actor.getFlag("midi-qol","actions"))&&void 0!==r?r:{})[t])&&void 0!==a&&a?0:1:null},d=function getActivationType(t){var r,a;if(null!=t&&null!==(r=t.system)&&void 0!==r&&r.activities)return null===(a=Array.from(t.system.activities)[0])||void 0===a||null===(a=a.activation)||void 0===a?void 0:a.type},p=function getActionType(t){var r,a;if(null!=t&&null!==(r=t.system)&&void 0!==r&&r.activities)return null===(a=Array.from(t.system.activities)[0])||void 0===a?void 0:a.actionType},m={action:["action"],bonus:["bonus"],reaction:["reaction","reactiondamage","reactionmanual"],free:["special"]},h={spell:["spell"],feat:["feat"],consumable:["consumable","equipment","loot"]},y=[];game.settings.get(a,"showWeaponsItems")&&h.consumable.push("weapon"),game.settings.get(a,"showClassActions")&&y.push("class"),t.DND5E={actionTypes:m,itemTypes:h,mainBarFeatures:y,ECHItems:r},Hooks.callAll("enhanced-combat-hud.dnd5e.initConfig",{actionTypes:m,itemTypes:h,ECHItems:r});var v=function(t){_inherits(DND5ePortraitPanel,t);var r,a,i=_createSuper(DND5ePortraitPanel);function DND5ePortraitPanel(){_classCallCheck(this,DND5ePortraitPanel);for(var t=arguments.length,r=new Array(t),a=0;a=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),g=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),b=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 g([{label:CONFIG.DND5E.abilities[a].label,onClick:function onClick(r){return t.actor.rollAbilityCheck({ability:a,event:r})}},{label:o(i.mod+(i.checkBonus||0)),onClick:function onClick(r){return t.actor.rollAbilityCheck({ability:a,event:r})}},{label:o(i.save),onClick:function onClick(r){return t.actor.rollSavingThrow({ability: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 g([{label:getProficiencyIcon(i.proficient)+CONFIG.DND5E.skills[r].label,onClick:function onClick(a){return t.actor.rollSkill({skill: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 g([{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),_=function(i){_inherits(DND5eActionActionPanel,i);var l,c=_createSuper(DND5eActionActionPanel);function DND5eActionActionPanel(){_classCallCheck(this,DND5eActionActionPanel);for(var t=arguments.length,r=new Array(t),a=0;a\n\n
\n\n
\n \n
\n ').concat(this.label,'\n \n Feature\n \n
\n \n
\n\n
\n
\n ').concat(this.item.system.description.value,"\n
\n
\n
\n\n\n\n ")});case 2:return t.abrupt("return",t.sent);case 3:case"end":return t.stop()}}),_callee18,this)}))),function createChatMessage(){return r.apply(this,arguments)})}]),DND5eSpecialActionButton}(o.MAIN.BUTTONS.ActionButton),O=function(t){_inherits(DND5eMovementHud,t);var r=_createSuper(DND5eMovementHud);function DND5eMovementHud(){var t,a;_classCallCheck(this,DND5eMovementHud);for(var i=arguments.length,o=new Array(i),l=0;l';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 C({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\r\n Hooks.on(\"updateItem\", (item) => {\r\n if(item.parent === ui.ARGON._actor && ui.ARGON.rendered) ui.ARGON.components.portrait.refresh()\r\n })\r\n\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 class DND5eTooltip extends ARGON.CORE.Tooltip {\r\n get classes() {\r\n const original = super.classes;\r\n return original.concat([\"dnd5e2\"]);\r\n }\r\n }\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 getActivationType = (item) => {\r\n if (!item?.system?.activities) {\r\n return;\r\n }\r\n return Array.from(item.system.activities)[0]?.activation?.type;\r\n };\r\n\r\n const getActionType = (item) => {\r\n if (!item?.system?.activities) {\r\n return;\r\n }\r\n return Array.from(item.system.activities)[0]?.actionType;\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.identified ? item.system.description.value : item.system.description.unidentified ?? 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?.damages?.map(d => d.damageType);\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[getActionType(item)]);\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[getActionType(item)]);\r\n break;\r\n case \"feat\":\r\n subtitle = item.system.requirements;\r\n properties.push(CONFIG.DND5E.itemActionTypes[getActionType(item)]);\r\n break;\r\n }\r\n }\r\n\r\n if (description) description = await TextEditor.enrichHTML(description, { async: true, relativeTo: item.parent });\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?.damages?.length) {\r\n let dmgString = \"\";\r\n item.labels.damages.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 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.rollAbilityCheck({ ability, event }),\r\n },\r\n {\r\n label: addSign(abilityData.mod + (abilityData.checkBonus || 0)),\r\n onClick: (event) => this.actor.rollAbilityCheck({ ability, event }),\r\n },\r\n {\r\n label: addSign(abilityData.save),\r\n onClick: (event) => this.actor.rollSavingThrow({ 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(getActivationType(item)) && !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(getActivationType(item)) && !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(getActivationType(item)) && !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(getActivationType(item)));\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(getActivationType(item)) && !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(getActivationType(item)));\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(getActivationType(item)) && !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(getActivationType(item)));\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(getActivationType(item)) && !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(getActivationType(item)));\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) => getActivationType(item) === \"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) => getActivationType(item) === \"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) => getActivationType(item) === \"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 activity() {\r\n if (!this.item?.system?.activities) {\r\n return;\r\n }\r\n return Array.from(this.item.system.activities)[0];\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.activity;\r\n const touchRange = item.range.units == \"touch\" ? canvas?.scene?.grid?.distance : null;\r\n return {\r\n normal: item?.range?.value ?? touchRange,\r\n long: item?.range?.long ?? null,\r\n };\r\n }\r\n\r\n get targets() {\r\n const item = this.activity;\r\n const validTargets = [\"creature\", \"ally\", \"enemy\"];\r\n const actionType = item.actionType;\r\n const affects = item.target?.affects ?? {};\r\n const targetType = affects.type;\r\n if (!item.target?.template?.units && validTargets.includes(targetType)) {\r\n return affects.count ?? 1;\r\n } else if (validTargets.includes(targetType) && affects.count) {\r\n return affects.count;\r\n } else if (actionType === \"mwak\" || actionType === \"rwak\" || actionType === \"msak\" || actionType === \"rsak\") {\r\n return affects.count || 1;\r\n }\r\n return null;\r\n }\r\n\r\n get visible() {\r\n if (!this._isWeaponSet) return super.visible;\r\n const isReaction = this.parent instanceof DND5eReactionActionPanel;\r\n const isMelee = this.activity?.actionType === \"mwak\";\r\n if (isReaction && !isMelee) return false;\r\n if (this._isPrimary) return super.visible;\r\n if (this.activity?.type?.value === \"shield\") return false;\r\n return super.visible;\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, legacy: false }, { event });\r\n if (used) {\r\n DND5eItemButton.consumeActionEconomy(this.activity);\r\n const useOtherItem = this.activity?.consumption?.targets?.find(t => t.type === \"itemUses\");\r\n if (useOtherItem) {\r\n const otherItem = this.actor.items.get(useOtherItem.target);\r\n const allConnectedItems = this.actor.items.filter(i => i.system.activities?.find(a => a.consumption?.targets?.find(t => t.type === \"itemUses\" && t.target === otherItem.id)));\r\n ui.ARGON.updateItemButtons(allConnectedItems);\r\n }\r\n this.render(true)\r\n }\r\n }\r\n\r\n async _onRightClick(event) {\r\n this.activity?.sheet?.render(true);\r\n }\r\n\r\n static consumeActionEconomy(item) {\r\n const activationType = getActivationType(item);\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.activity) {\r\n const weapons = this.actor.items.filter((item) => item.consume?.target === this.activity.id);\r\n ui.ARGON.updateItemButtons(weapons);\r\n }\r\n }\r\n\r\n get quantity() {\r\n if (this.item.system.uses?.max) return this.item.system.uses.max - this.item.system.uses.spent;\r\n if (!this.activity) return null;\r\n const showQuantityItemTypes = [\"consumable\"];\r\n const consumeType = this.activity?.consume?.type;\r\n const useAmmo = this.item.system.ammunition?.type;\r\n const useOtherItem = this.activity?.consumption?.targets?.find(t => t.type === \"itemUses\");\r\n if (useOtherItem) {\r\n const otherItem = this.actor.items.get(useOtherItem.target);\r\n if (otherItem && otherItem.system.uses?.max) {\r\n return otherItem.system.uses.max - otherItem.system.uses.spent;\r\n }\r\n }\r\n if (useAmmo) {\r\n const ammoItem = this.item.system.ammunitionOptions[0]?.item;\r\n if (!ammoItem) return null;\r\n return Math.floor(ammoItem.system.quantity ?? 0);\r\n } else if (consumeType === \"attribute\") {\r\n return Math.floor(getProperty(this.actor, this.activity.consume.target) / this.activity.consume.amount);\r\n } else if (consumeType === \"charges\") {\r\n const chargesItem = this.actor.items.get(this.activity.consume.target);\r\n if (!chargesItem) return null;\r\n return Math.floor((chargesItem.uses?.value ?? 0) / this.activity.consume.amount);\r\n } else if (showQuantityItemTypes.includes(this.item.type) && !this.activity.uses.max) {\r\n return this.item.system.quantity;\r\n } else if (this.activity.uses.value !== null && this.activity.uses.per !== null && this.activity.uses.max) {\r\n return this.activity.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 IWSAPI = game.modules.get(\"items-with-spells-5e\").api;\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 && getActivationType(item) === actionType);\r\n if (!itemsInSpell.length) continue;\r\n itemsToIgnore.push(...itemsInSpell);\r\n if (!IWSAPI.isUsableItem(item)) 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 const magicItemsSpells = this.items.filter((item) => item.flags.dnd5e?.cachedFor?.includes(\"Activity\"));\r\n const magicItems = magicItemsSpells.map((item) => ({ spell: item, item: this.actor.items.get(item.flags.dnd5e.cachedFor.split(\".Activity.\")[0].replace(\".Item.\", \"\")) }));\r\n const magicItemsMap = new Map();\r\n magicItems.forEach((item) => {\r\n const current = magicItemsMap.get(item.item);\r\n if (current) {\r\n current.push(item.spell);\r\n } else {\r\n magicItemsMap.set(item.item, [item.spell]);\r\n }\r\n });\r\n for (const [item, spells] of magicItemsMap) {\r\n const requiresAttunement = item.system.attunement === \"required\";\r\n const isAttuned = item.system.attuned;\r\n itemsToIgnore.push(...spells);\r\n\r\n if (requiresAttunement && !isAttuned) continue;\r\n\r\n this.itemsWithSpells.push({\r\n label: item.name,\r\n buttons: spells.map((spell) => new DND5eItemButton({ item: spell })),\r\n uses: () => {\r\n return { max: item.system.uses?.max, value: item.system.uses?.value };\r\n },\r\n });\r\n }\r\n if (magicItems.length) this.items = this.items.filter((item) => !itemsToIgnore.includes(item));\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.actorItem = actorItem;\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 get activity() {\r\n if (!this.item?.system?.activities) {\r\n return;\r\n }\r\n return Array.from(this.item.system.activities)[0];\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.findEffect({ effectName: this.label });\r\n let success = false;\r\n if (useCE) {\r\n success = true;\r\n await game.dfreds.effectInterface.toggleEffect({ effectName: this.label, overlay: false, uuids: [this.actor.uuid] });\r\n } else {\r\n success = this.actorItem ? await this.activity.use({ event }, { event }) : await this.createChatMessage();\r\n }\r\n if (success) {\r\n DND5eItemButton.consumeActionEconomy(this.item);\r\n }\r\n }\r\n\r\n async createChatMessage() {\r\n return await ChatMessage.create({\r\n user: game.user,\r\n speaker: {\r\n actor: this.actor,\r\n token: this.actor.token,\r\n alias: this.actor.name,\r\n },\r\n content: `\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n ${this.label}\r\n \r\n Feature\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n ${this.item.system.description.value}\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n `,\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\" && getActivationType(item) === \"action\");\r\n const bonus = this.actor.items.filter((item) => item.type === \"weapon\" && getActivationType(item) === \"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() : foundry.utils.mergeObject(await this.getDefaultSets(), foundry.utils.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.defineTooltip(DND5eTooltip);\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 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 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 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 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 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 sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\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 };\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","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPrimitive","input","hint","prim","toPrimitive","res","String","Number","_createClass","protoProps","staticProps","_get","Reflect","bind","property","receiver","base","_superPropBase","_getPrototypeOf","getOwnPropertyDescriptor","_inherits","subClass","superClass","_setPrototypeOf","p","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","e","_createSuperInternal","Super","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","ECHItems","initConfig","Hooks","on","item","parent","ui","ARGON","_actor","rendered","components","portrait","refresh","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","sort","flags","core","sourceId","onUseMacroName","consumableType","recharge","charged","DND5eTooltip","_ARGON$CORE$Tooltip","_super","concat","CORE","Tooltip","isMIDI","modules","active","getMidiFlag","_ui$ARGON$_actor$getF","_flag$actionType","getFlag","getActivationType","_item$system","_Array$from$","activities","Array","from","getActionType","_item$system2","_Array$from$2","actionTypes","action","bonus","reaction","free","itemTypes","spell","feat","consumable","mainBarFeatures","settings","MODULE_ID","DND5E","callAll","DND5ePortraitPanel","_ARGON$PORTRAIT$Portr","_getStatBlocks","_onDeathSave2","_super2","_len","_key","_this$actor","this","actor","isPC","_CONFIG$DND5E$creatur","_CONFIG$DND5E$creatur2","creatureType","CONFIG","creatureTypes","details","label","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","_super3","buttons","_this","TooltipManager","TOOLTIP_DIRECTIONS","RIGHT","_callee3","tooltipData","_callee3$","_context3","getTooltipDetails","getTooltipData","DRAWER","DrawerButton","DND5eDrawerPanel","_ARGON$DRAWER$DrawerP","_super4","_len2","_key2","_this2","abilities","skills","tools","tool","addSign","gridCols","captions","align","abilityData","onClick","rollAbilityCheck","mod","checkBonus","rollSavingThrow","skill","skillData","getProficiencyIcon","proficient","rollSkill","total","passive","style","rollToolCheck","abilityMod","proficiencyMultiplier","prof","DrawerPanel","DND5eActionActionPanel","_ARGON$MAIN$ActionPan","_getButtons2","_super5","_len3","_key3","_this$actor2","inCombat","_getMidiFlag","isActionUsed","_onNewRound","combat","updateActionUse","_callee4","spellItems","featItems","consumableItems","spellButton","specialActions","showSpecialActions","barItems","_callee4$","_context4","items","filter","_item$system$type","includes","_item$system$type2","_item$system$type3","DND5eButtonPanelButton","button","hasContents","DND5eItemButton","isWeaponSet","isPrimary","MAIN","BUTTONS","SplitButton","DND5eSpecialActionButton","_toConsumableArray","_item$system$type4","condenseItemButtons","_getButtons","ActionPanel","DND5eBonusActionPanel","_ARGON$MAIN$ActionPan2","_getButtons3","_super6","_len4","_key4","_this$actor3","_getMidiFlag2","_callee5","_loop","_i","_Object$entries","_this3","_callee5$","_context6","_Object$entries$_i","types","_loop$","_context5","_slicedToArray","_item$system$type5","entries","t0","_item$system$type6","DND5eReactionActionPanel","_ARGON$MAIN$ActionPan3","_getButtons4","_super7","_len5","_key5","_this$actor4","_getMidiFlag3","_callee6","_loop2","_i2","_Object$entries2","_this4","_callee6$","_context8","_Object$entries2$_i","_loop2$","_context7","_item$system$type7","_item$system$type8","DND5eFreeActionPanel","_ARGON$MAIN$ActionPan4","_getButtons5","_super8","_len6","_key6","_this$actor5","_callee7","_loop3","_i3","_Object$entries3","_this5","_callee7$","_context10","_Object$entries3$_i","_loop3$","_context9","_item$system$type9","_item$system$type10","DND5eLegActionPanel","_ARGON$MAIN$ActionPan5","_getButtons6","_super9","_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","inActionPanel","DND5eLairActionPanel","_ARGON$MAIN$ActionPan6","_getButtons7","_super10","_len8","_key8","_this$actor7","_this$actor$system$re5","lair","_callee9","_callee9$","_context12","DND5eMythicActionPanel","_ARGON$MAIN$ActionPan7","_getButtons8","_super11","_len9","_key9","_callee10","_callee10$","_context13","_ARGON$MAIN$BUTTONS$I","_render","_onRightClick2","_onLeftClick2","_getTooltipData2","_super12","_len10","_key10","_this$item","_canvas","_item$range$value","_item$range","_item$range$long","_item$range2","activity","touchRange","canvas","scene","grid","distance","normal","_item$target$affects","_item$target","_item$target2","_affects$count","validTargets","affects","targetType","template","count","_this$activity","_this$activity2","_isWeaponSet","isReaction","isMelee","_isPrimary","_callee11","_callee11$","_context14","propertiesLabel","_callee12","_this$activity3","useOtherItem","otherItem","allConnectedItems","_callee12$","_context15","interceptNextDialog","currentTarget","use","legacy","consumeActionEconomy","consumption","targets","find","t","_i$system$activities","a","_a$consumption","updateItemButtons","render","_onLeftClick","_x4","_callee13","_this$activity4","_callee13$","_context16","sheet","_onRightClick","_x5","_callee14","_get2","_len11","_key11","weapons","_this6","_args17","_callee14$","_context17","_item$consume","_this$item$system$use","_this$activity5","_this$item$system$amm","_this$activity6","uses","spent","consumeType","useAmmo","ammunition","_otherItem$system$use","_this$item$system$amm2","_ammoItem$system$quan","ammoItem","ammunitionOptions","Math","floor","getProperty","_chargesItem$uses$val","_chargesItem$uses","chargesItem","per","_game$combat","activationType","_i4","_Object$entries4","_Object$entries4$_i","combatant","main","ItemButton","_ARGON$MAIN$BUTTONS$B","_getPanel2","_super13","_ref","_this7","itemsWithSpells","_spells","prePrepareSpells","preparedFlag","some","className","_game$modules$get2","_this8","spellLevels","itemsToIgnore","_this$items$0$system$","_step","IWSAPI","api","_iterator","_createForOfIteratorHelper","_item$flags$itemsWit","_loop4","itemsInSpell","isUsableItem","_item$system$uses","_item$system$uses2","s","n","f","magicItems","_item$flags$dnd5e","dnd5e","cachedFor","magicItemsMap","Map","current","set","_step2","_iterator2","_loop6","_step2$value","spells","requiresAttunement","isAttuned","_item$system$uses3","_item$system$uses4","showPreparedOnly","allowIfNotPrepared","preparation","mode","prepared","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","_createChatMessage","_onLeftClick3","_getTooltipData3","_super14","specialItem","_this9","actorItem","getName","Item","documentClass","_this$item2","_callee16","_callee16$","_context19","_callee17","_game$modules$get3","useCE","_callee17$","_context20","dfreds","effectInterface","findEffect","effectName","toggleEffect","overlay","uuids","uuid","createChatMessage","_x6","_callee18","_callee18$","_context21","ChatMessage","user","speaker","token","alias","content","icon","ActionButton","DND5eMovementHud","_ARGON$MovementHud","_super15","_game$modules$get4","_this10","_len12","_key12","getMovementMode","_game$combat2","started","movement","movementMode","dimensions","MovementHud","DND5eButtonHud","_ARGON$ButtonHud","_getButtons9","_super16","_len13","_key13","_game$combat3","_callee19","_this11","_callee19$","_context22","longRest","shortRest","ButtonHud","DND5eWeaponSets","_ARGON$WeaponSets","_onSetChange2","_getSets2","_getDefaultSets","_super17","_callee20","_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","_callee20$","_context23","isPolymorphed","primary","secondary","getDefaultSets","_callee21","_this$actor$flags2","_i6","_Object$entries6","_Object$entries6$_i","slots","_callee21$","_context24","t1","foundry","utils","t2","t3","deepClone","mergeObject","fromUuid","t4","t5","_getSets","_callee22","_ref3","updates","activeSet","activeItems","inactiveSets","inactiveItems","_callee22$","_context25","flatMap","_item$system3","_id","_item$system4","updateEmbeddedDocuments","_onSetChange","_x7","WeaponSets","enableMacroPanel","mainPanels","PREFAB","MacroPanel","PassTurnPanel","definePortraitPanel","defineDrawerPanel","defineMainPanels","defineMovementHud","defineButtonHud","defineWeaponSets","defineTooltip","defineSupportedActorTypes","_x","_x2","_getTooltipDetails","_callee23","_item$labels4","_item$labels5","_damageTypes","_properties","title","itemType","subtitle","dt","damageTypes","properties","materialComponents","_item$system$descript","_item$labels","_item$labels2","_item$labels3","_i7","_Object$entries7","_Object$entries7$_i","_iterator3","_step3","comp","dmgString","tooltipProperties","_callee23$","_context26","labels","damages","d","damageType","weaponTypes","weaponType","itemActionTypes","weaponProperties","school","spellSchools","all","abbr","materials","consumableTypes","requirements","TextEditor","enrichHTML","relativeTo","toHit","dDmg","getDamageTypeIcon","_p$label","footerText","_damageType","toLowerCase","proficiency","condensedItems","barItemsLength","barItemsMultipleOfTwo","currentSplitButtonItemButton","isCondensedButton","arr","_arrayWithHoles","isArray","_iterableToArrayLimit","_s","_e","_r","_arr","_n","_d","_unsupportedIterableToArray","minLen","_arrayLikeToArray","toString","test","_nonIterableRest","len","arr2","registerSettings","registerSettingsArray","register","showWeaponsItems","scope","config","default","onChange","sett","showClassActions","condenseClassActions","macroPanel","requiresReload","switchEquip"],"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\r\n Hooks.on(\"updateItem\", (item) => {\r\n if(item.parent === ui.ARGON._actor && ui.ARGON.rendered) ui.ARGON.components.portrait.refresh()\r\n })\r\n\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 class DND5eTooltip extends ARGON.CORE.Tooltip {\r\n get classes() {\r\n const original = super.classes;\r\n return original.concat([\"dnd5e2\"]);\r\n }\r\n }\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 getActivationType = (item) => {\r\n if (!item?.system?.activities) {\r\n return;\r\n }\r\n return Array.from(item.system.activities)[0]?.activation?.type;\r\n };\r\n\r\n const getActionType = (item) => {\r\n if (!item?.system?.activities) {\r\n return;\r\n }\r\n return Array.from(item.system.activities)[0]?.actionType;\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.identified ? item.system.description.value : item.system.description.unidentified ?? 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?.damages?.map(d => d.damageType);\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[getActionType(item)]);\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[getActionType(item)]);\r\n break;\r\n case \"feat\":\r\n subtitle = item.system.requirements;\r\n properties.push(CONFIG.DND5E.itemActionTypes[getActionType(item)]);\r\n break;\r\n }\r\n }\r\n\r\n if (description) description = await TextEditor.enrichHTML(description, { async: true, relativeTo: item.parent });\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?.damages?.length) {\r\n let dmgString = \"\";\r\n item.labels.damages.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 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.rollAbilityCheck({ ability, event }),\r\n },\r\n {\r\n label: addSign(abilityData.mod + (abilityData.checkBonus || 0)),\r\n onClick: (event) => this.actor.rollAbilityCheck({ ability, event }),\r\n },\r\n {\r\n label: addSign(abilityData.save),\r\n onClick: (event) => this.actor.rollSavingThrow({ 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(getActivationType(item)) && !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(getActivationType(item)) && !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(getActivationType(item)) && !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(getActivationType(item)));\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(getActivationType(item)) && !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(getActivationType(item)));\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(getActivationType(item)) && !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(getActivationType(item)));\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(getActivationType(item)) && !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(getActivationType(item)));\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) => getActivationType(item) === \"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) => getActivationType(item) === \"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) => getActivationType(item) === \"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 activity() {\r\n if (!this.item?.system?.activities) {\r\n return;\r\n }\r\n return Array.from(this.item.system.activities)[0];\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.activity;\r\n const touchRange = item.range.units == \"touch\" ? canvas?.scene?.grid?.distance : null;\r\n return {\r\n normal: item?.range?.value ?? touchRange,\r\n long: item?.range?.long ?? null,\r\n };\r\n }\r\n\r\n get targets() {\r\n const item = this.activity;\r\n const validTargets = [\"creature\", \"ally\", \"enemy\"];\r\n const actionType = item.actionType;\r\n const affects = item.target?.affects ?? {};\r\n const targetType = affects.type;\r\n if (!item.target?.template?.units && validTargets.includes(targetType)) {\r\n return affects.count ?? 1;\r\n } else if (validTargets.includes(targetType) && affects.count) {\r\n return affects.count;\r\n } else if (actionType === \"mwak\" || actionType === \"rwak\" || actionType === \"msak\" || actionType === \"rsak\") {\r\n return affects.count || 1;\r\n }\r\n return null;\r\n }\r\n\r\n get visible() {\r\n if (!this._isWeaponSet) return super.visible;\r\n const isReaction = this.parent instanceof DND5eReactionActionPanel;\r\n const isMelee = this.activity?.actionType === \"mwak\";\r\n if (isReaction && !isMelee) return false;\r\n if (this._isPrimary) return super.visible;\r\n if (this.activity?.type?.value === \"shield\") return false;\r\n return super.visible;\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, legacy: false }, { event });\r\n if (used) {\r\n DND5eItemButton.consumeActionEconomy(this.activity);\r\n const useOtherItem = this.activity?.consumption?.targets?.find(t => t.type === \"itemUses\");\r\n if (useOtherItem) {\r\n const otherItem = this.actor.items.get(useOtherItem.target);\r\n const allConnectedItems = this.actor.items.filter(i => i.system.activities?.find(a => a.consumption?.targets?.find(t => t.type === \"itemUses\" && t.target === otherItem.id)));\r\n ui.ARGON.updateItemButtons(allConnectedItems);\r\n }\r\n this.render(true)\r\n }\r\n }\r\n\r\n async _onRightClick(event) {\r\n this.activity?.sheet?.render(true);\r\n }\r\n\r\n static consumeActionEconomy(item) {\r\n const activationType = getActivationType(item);\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.activity) {\r\n const weapons = this.actor.items.filter((item) => item.consume?.target === this.activity.id);\r\n ui.ARGON.updateItemButtons(weapons);\r\n }\r\n }\r\n\r\n get quantity() {\r\n if (this.item.system.uses?.max) return this.item.system.uses.max - this.item.system.uses.spent;\r\n if (!this.activity) return null;\r\n const showQuantityItemTypes = [\"consumable\"];\r\n const consumeType = this.activity?.consume?.type;\r\n const useAmmo = this.item.system.ammunition?.type;\r\n const useOtherItem = this.activity?.consumption?.targets?.find(t => t.type === \"itemUses\");\r\n if (useOtherItem) {\r\n const otherItem = this.actor.items.get(useOtherItem.target);\r\n if (otherItem && otherItem.system.uses?.max) {\r\n return otherItem.system.uses.max - otherItem.system.uses.spent;\r\n }\r\n }\r\n if (useAmmo) {\r\n const ammoItem = this.item.system.ammunitionOptions[0]?.item;\r\n if (!ammoItem) return null;\r\n return Math.floor(ammoItem.system.quantity ?? 0);\r\n } else if (consumeType === \"attribute\") {\r\n return Math.floor(getProperty(this.actor, this.activity.consume.target) / this.activity.consume.amount);\r\n } else if (consumeType === \"charges\") {\r\n const chargesItem = this.actor.items.get(this.activity.consume.target);\r\n if (!chargesItem) return null;\r\n return Math.floor((chargesItem.uses?.value ?? 0) / this.activity.consume.amount);\r\n } else if (showQuantityItemTypes.includes(this.item.type) && !this.activity.uses.max) {\r\n return this.item.system.quantity;\r\n } else if (this.activity.uses.value !== null && this.activity.uses.per !== null && this.activity.uses.max) {\r\n return this.activity.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 IWSAPI = game.modules.get(\"items-with-spells-5e\").api;\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 && getActivationType(item) === actionType);\r\n if (!itemsInSpell.length) continue;\r\n itemsToIgnore.push(...itemsInSpell);\r\n if (!IWSAPI.isUsableItem(item)) 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 const magicItemsSpells = this.items.filter((item) => item.flags.dnd5e?.cachedFor?.includes(\"Activity\"));\r\n const magicItems = magicItemsSpells.map((item) => ({ spell: item, item: this.actor.items.get(item.flags.dnd5e.cachedFor.split(\".Activity.\")[0].replace(\".Item.\", \"\")) }));\r\n const magicItemsMap = new Map();\r\n magicItems.forEach((item) => {\r\n const current = magicItemsMap.get(item.item);\r\n if (current) {\r\n current.push(item.spell);\r\n } else {\r\n magicItemsMap.set(item.item, [item.spell]);\r\n }\r\n });\r\n for (const [item, spells] of magicItemsMap) {\r\n const requiresAttunement = item.system.attunement === \"required\";\r\n const isAttuned = item.system.attuned;\r\n itemsToIgnore.push(...spells);\r\n\r\n if (requiresAttunement && !isAttuned) continue;\r\n\r\n this.itemsWithSpells.push({\r\n label: item.name,\r\n buttons: spells.map((spell) => new DND5eItemButton({ item: spell })),\r\n uses: () => {\r\n return { max: item.system.uses?.max, value: item.system.uses?.value };\r\n },\r\n });\r\n }\r\n if (magicItems.length) this.items = this.items.filter((item) => !itemsToIgnore.includes(item));\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.actorItem = actorItem;\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 get activity() {\r\n if (!this.item?.system?.activities) {\r\n return;\r\n }\r\n return Array.from(this.item.system.activities)[0];\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.findEffect({ effectName: this.label });\r\n let success = false;\r\n if (useCE) {\r\n success = true;\r\n await game.dfreds.effectInterface.toggleEffect({ effectName: this.label, overlay: false, uuids: [this.actor.uuid] });\r\n } else {\r\n success = this.actorItem ? await this.activity.use({ event }, { event }) : await this.createChatMessage();\r\n }\r\n if (success) {\r\n DND5eItemButton.consumeActionEconomy(this.item);\r\n }\r\n }\r\n\r\n async createChatMessage() {\r\n return await ChatMessage.create({\r\n user: game.user,\r\n speaker: {\r\n actor: this.actor,\r\n token: this.actor.token,\r\n alias: this.actor.name,\r\n },\r\n content: `\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n ${this.label}\r\n \r\n Feature\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n ${this.item.system.description.value}\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n `,\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.REST.Long.Label\",\r\n onClick: (event) => this.actor.longRest(),\r\n icon: \"fas fa-bed\",\r\n },\r\n {\r\n label: \"DND5E.REST.Short.Label\",\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\" && getActivationType(item) === \"action\");\r\n const bonus = this.actor.items.filter((item) => item.type === \"weapon\" && getActivationType(item) === \"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() : foundry.utils.mergeObject(await this.getDefaultSets(), foundry.utils.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.defineTooltip(DND5eTooltip);\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 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 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 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 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 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 sort: 0,\r\n flags: {\r\n \"midi-qol\": {\r\n onUseMacroName: \"\",\r\n },\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 };\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","asyncGeneratorStep","gen","_next","_throw","_asyncToGenerator","args","arguments","apply","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","_toPrimitive","input","hint","prim","toPrimitive","res","String","Number","_createClass","protoProps","staticProps","_get","Reflect","bind","property","receiver","base","_superPropBase","_getPrototypeOf","getOwnPropertyDescriptor","_inherits","subClass","superClass","_setPrototypeOf","p","_createSuper","Derived","hasNativeReflectConstruct","_isNativeReflectConstruct","construct","sham","Proxy","Boolean","valueOf","e","_createSuperInternal","Super","NewTarget","_possibleConstructorReturn","_assertThisInitialized","ReferenceError","ECHItems","initConfig","Hooks","on","item","parent","ui","ARGON","_actor","rendered","components","portrait","refresh","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","sort","flags","core","sourceId","onUseMacroName","consumableType","recharge","charged","DND5eTooltip","_ARGON$CORE$Tooltip","_super","concat","CORE","Tooltip","isMIDI","modules","active","getMidiFlag","_ui$ARGON$_actor$getF","_flag$actionType","getFlag","getActivationType","_item$system","_Array$from$","activities","Array","from","getActionType","_item$system2","_Array$from$2","actionTypes","action","bonus","reaction","free","itemTypes","spell","feat","consumable","mainBarFeatures","settings","MODULE_ID","DND5E","callAll","DND5ePortraitPanel","_ARGON$PORTRAIT$Portr","_getStatBlocks","_onDeathSave2","_super2","_len","_key","_this$actor","this","actor","isPC","_CONFIG$DND5E$creatur","_CONFIG$DND5E$creatur2","creatureType","CONFIG","creatureTypes","details","label","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","_super3","buttons","_this","TooltipManager","TOOLTIP_DIRECTIONS","RIGHT","_callee3","tooltipData","_callee3$","_context3","getTooltipDetails","getTooltipData","DRAWER","DrawerButton","DND5eDrawerPanel","_ARGON$DRAWER$DrawerP","_super4","_len2","_key2","_this2","abilities","skills","tools","tool","addSign","gridCols","captions","align","abilityData","onClick","rollAbilityCheck","mod","checkBonus","rollSavingThrow","skill","skillData","getProficiencyIcon","proficient","rollSkill","total","passive","style","rollToolCheck","abilityMod","proficiencyMultiplier","prof","DrawerPanel","DND5eActionActionPanel","_ARGON$MAIN$ActionPan","_getButtons2","_super5","_len3","_key3","_this$actor2","inCombat","_getMidiFlag","isActionUsed","_onNewRound","combat","updateActionUse","_callee4","spellItems","featItems","consumableItems","spellButton","specialActions","showSpecialActions","barItems","_callee4$","_context4","items","filter","_item$system$type","includes","_item$system$type2","_item$system$type3","DND5eButtonPanelButton","button","hasContents","DND5eItemButton","isWeaponSet","isPrimary","MAIN","BUTTONS","SplitButton","DND5eSpecialActionButton","_toConsumableArray","_item$system$type4","condenseItemButtons","_getButtons","ActionPanel","DND5eBonusActionPanel","_ARGON$MAIN$ActionPan2","_getButtons3","_super6","_len4","_key4","_this$actor3","_getMidiFlag2","_callee5","_loop","_i","_Object$entries","_this3","_callee5$","_context6","_Object$entries$_i","types","_loop$","_context5","_slicedToArray","_item$system$type5","entries","t0","_item$system$type6","DND5eReactionActionPanel","_ARGON$MAIN$ActionPan3","_getButtons4","_super7","_len5","_key5","_this$actor4","_getMidiFlag3","_callee6","_loop2","_i2","_Object$entries2","_this4","_callee6$","_context8","_Object$entries2$_i","_loop2$","_context7","_item$system$type7","_item$system$type8","DND5eFreeActionPanel","_ARGON$MAIN$ActionPan4","_getButtons5","_super8","_len6","_key6","_this$actor5","_callee7","_loop3","_i3","_Object$entries3","_this5","_callee7$","_context10","_Object$entries3$_i","_loop3$","_context9","_item$system$type9","_item$system$type10","DND5eLegActionPanel","_ARGON$MAIN$ActionPan5","_getButtons6","_super9","_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","inActionPanel","DND5eLairActionPanel","_ARGON$MAIN$ActionPan6","_getButtons7","_super10","_len8","_key8","_this$actor7","_this$actor$system$re5","lair","_callee9","_callee9$","_context12","DND5eMythicActionPanel","_ARGON$MAIN$ActionPan7","_getButtons8","_super11","_len9","_key9","_callee10","_callee10$","_context13","_ARGON$MAIN$BUTTONS$I","_render","_onRightClick2","_onLeftClick2","_getTooltipData2","_super12","_len10","_key10","_this$item","_canvas","_item$range$value","_item$range","_item$range$long","_item$range2","activity","touchRange","canvas","scene","grid","distance","normal","_item$target$affects","_item$target","_item$target2","_affects$count","validTargets","affects","targetType","template","count","_this$activity","_this$activity2","_isWeaponSet","isReaction","isMelee","_isPrimary","_callee11","_callee11$","_context14","propertiesLabel","_callee12","_this$activity3","useOtherItem","otherItem","allConnectedItems","_callee12$","_context15","interceptNextDialog","currentTarget","use","legacy","consumeActionEconomy","consumption","targets","find","t","_i$system$activities","a","_a$consumption","updateItemButtons","render","_onLeftClick","_x4","_callee13","_this$activity4","_callee13$","_context16","sheet","_onRightClick","_x5","_callee14","_get2","_len11","_key11","weapons","_this6","_args17","_callee14$","_context17","_item$consume","_this$item$system$use","_this$activity5","_this$item$system$amm","_this$activity6","uses","spent","consumeType","useAmmo","ammunition","_otherItem$system$use","_this$item$system$amm2","_ammoItem$system$quan","ammoItem","ammunitionOptions","Math","floor","getProperty","_chargesItem$uses$val","_chargesItem$uses","chargesItem","per","_game$combat","activationType","_i4","_Object$entries4","_Object$entries4$_i","combatant","main","ItemButton","_ARGON$MAIN$BUTTONS$B","_getPanel2","_super13","_ref","_this7","itemsWithSpells","_spells","prePrepareSpells","preparedFlag","some","className","_game$modules$get2","_this8","spellLevels","itemsToIgnore","_this$items$0$system$","_step","IWSAPI","api","_iterator","_createForOfIteratorHelper","_item$flags$itemsWit","_loop4","itemsInSpell","isUsableItem","_item$system$uses","_item$system$uses2","s","n","f","magicItems","_item$flags$dnd5e","dnd5e","cachedFor","magicItemsMap","Map","current","set","_step2","_iterator2","_loop6","_step2$value","spells","requiresAttunement","isAttuned","_item$system$uses3","_item$system$uses4","showPreparedOnly","allowIfNotPrepared","preparation","mode","prepared","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","_createChatMessage","_onLeftClick3","_getTooltipData3","_super14","specialItem","_this9","actorItem","getName","Item","documentClass","_this$item2","_callee16","_callee16$","_context19","_callee17","_game$modules$get3","useCE","_callee17$","_context20","dfreds","effectInterface","findEffect","effectName","toggleEffect","overlay","uuids","uuid","createChatMessage","_x6","_callee18","_callee18$","_context21","ChatMessage","user","speaker","token","alias","content","icon","ActionButton","DND5eMovementHud","_ARGON$MovementHud","_super15","_game$modules$get4","_this10","_len12","_key12","getMovementMode","_game$combat2","started","movement","movementMode","dimensions","MovementHud","DND5eButtonHud","_ARGON$ButtonHud","_getButtons9","_super16","_len13","_key13","_game$combat3","_callee19","_this11","_callee19$","_context22","longRest","shortRest","ButtonHud","DND5eWeaponSets","_ARGON$WeaponSets","_onSetChange2","_getSets2","_getDefaultSets","_super17","_callee20","_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","_callee20$","_context23","isPolymorphed","primary","secondary","getDefaultSets","_callee21","_this$actor$flags2","_i6","_Object$entries6","_Object$entries6$_i","slots","_callee21$","_context24","t1","foundry","utils","t2","t3","deepClone","mergeObject","fromUuid","t4","t5","_getSets","_callee22","_ref3","updates","activeSet","activeItems","inactiveSets","inactiveItems","_callee22$","_context25","flatMap","_item$system3","_id","_item$system4","updateEmbeddedDocuments","_onSetChange","_x7","WeaponSets","enableMacroPanel","mainPanels","PREFAB","MacroPanel","PassTurnPanel","definePortraitPanel","defineDrawerPanel","defineMainPanels","defineMovementHud","defineButtonHud","defineWeaponSets","defineTooltip","defineSupportedActorTypes","_x","_x2","_getTooltipDetails","_callee23","_item$labels4","_item$labels5","_damageTypes","_properties","title","itemType","subtitle","dt","damageTypes","properties","materialComponents","_item$system$descript","_item$labels","_item$labels2","_item$labels3","_i7","_Object$entries7","_Object$entries7$_i","_iterator3","_step3","comp","dmgString","tooltipProperties","_callee23$","_context26","labels","damages","d","damageType","weaponTypes","weaponType","itemActionTypes","weaponProperties","school","spellSchools","all","abbr","materials","consumableTypes","requirements","TextEditor","enrichHTML","relativeTo","toHit","dDmg","getDamageTypeIcon","_p$label","footerText","_damageType","toLowerCase","proficiency","condensedItems","barItemsLength","barItemsMultipleOfTwo","currentSplitButtonItemButton","isCondensedButton","arr","_arrayWithHoles","isArray","_iterableToArrayLimit","_s","_e","_r","_arr","_n","_d","_unsupportedIterableToArray","minLen","_arrayLikeToArray","toString","test","_nonIterableRest","len","arr2","registerSettings","registerSettingsArray","register","showWeaponsItems","scope","config","default","onChange","sett","showClassActions","condenseClassActions","macroPanel","requiresReload","switchEquip"],"sourceRoot":""} \ No newline at end of file diff --git a/scripts/config.js b/scripts/config.js index 3303fd5..cd0b6da 100644 --- a/scripts/config.js +++ b/scripts/config.js @@ -1146,12 +1146,12 @@ export function initConfig() { async _getButtons() { return [ { - label: "DND5E.LongRest", + label: "DND5E.REST.Long.Label", onClick: (event) => this.actor.longRest(), icon: "fas fa-bed", }, { - label: "DND5E.ShortRest", + label: "DND5E.REST.Short.Label", onClick: (event) => this.actor.shortRest(), icon: "fas fa-coffee", },