1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[2020],{20828:(e,a,i)=>{"use strict";i.d(a,{A:()=>m});var r=i(12115),t=i(47650);function m({children:e}){let[a,i]=r.useState(null);return r.useEffect(()=>{i(document.body)},[]),a?(0,t.createPortal)(e,a):null}},22020:(e,a,i)=>{"use strict";i.r(a),i.d(a,{default:()=>C});var r=i(95155),t=i(12115),m=i(78682),o=i(59368),n=i(72056),l=i(94265),s=i(10332),c=i(45540),d=i(20828),y=i(58924),u=i.n(y);let b=m?.items||{};function C({roomId:e}){let{language:a,t:i}=(0,o.o)(),m=(0,c.P)(e=>e.me),y=(0,c.P)(e=>Array.isArray(e.players)?e.players:[]),g=(0,c.P)(e=>e.charactersById||{}),p=(0,s.XX)(e=>e.ui.pendingCombatLoot),f=(0,s.XX)(e=>e.actions.markCombatEnded),[h,T]=(0,t.useState)(""),[v,_]=(0,t.useState)(null),[x,w]=(0,t.useState)(""),I=(0,t.useRef)(new Map),P=(0,t.useCallback)((e,a)=>{let r=i?.(e);return r&&r!==e?r:a},[i]),V=(0,t.useMemo)(()=>{let e=p?.eligibleHeroes||[];if(e.length>0)return e;let a=new Set;return y.flatMap(e=>{let i=String(e?.characterId||"").trim(),r=String(e?.userId||e?.id||"").trim(),t=g[i];return!i||!r||!t||e?.spectator===!0||"offline"===String(e?.status||"online").toLowerCase()||a.has(i)?[]:(a.add(i),[{characterId:i,playerId:r,name:String(t?.name||t?.data?.name||i)}])})},[p?.eligibleHeroes,g,y]),O=V.some(e=>e.characterId===h)?h:V[0]?.characterId||"",k=V.find(e=>e.characterId===O)?.name||"",N="deux"===String(m?.role||"").toLowerCase(),L=(0,t.useMemo)(()=>p?.enemyResults.map(e=>`${e.enemyName}: ${e.card.value}`).join(" \xb7 ")||"",[p]),S=(0,t.useCallback)(async a=>{if(!p||v)return;if("hero"===a&&!O)return void w(P("vtt.combat.loot.errors.noHero","Nessun eroe collegato disponibile."));_(a),w("");let i=`${a}:${O}`,r=I.current.get(i);r||(r=`combat-loot:${p.combatId}:${crypto.randomUUID()}`,I.current.set(i,r));try{let i=localStorage.getItem("roomToken"),t=await fetch(`/api/combat/v2/${encodeURIComponent(p.combatId)}/loot`,{method:"POST",headers:{"Content-Type":"application/json",...i?{Authorization:`Bearer ${i}`}:{}},body:JSON.stringify({roomId:e,decision:a,opId:r,..."hero"===a?{characterId:O}:{}})}),m=await t.json().catch(()=>null);if(!t.ok){let e=String(m?.code||"");if("LOOT_INVENTORY_FULL"===e)throw Error(P("vtt.combat.loot.errors.capacity","Gli eroi selezionati non hanno abbastanza slot liberi per questo loot."));if("LOOT_NO_CONNECTED_HERO"===e||"LOOT_HERO_NOT_ELIGIBLE"===e)throw Error(P("vtt.combat.loot.errors.noHero","Nessun eroe collegato disponibile."));if("LOOT_KINGDOM_NOT_AVAILABLE"===e)throw Error(P("vtt.combat.loot.errors.kingdomUnavailable","Nessun Regno \xe8 presente nella stanza."));if("LOOT_KINGDOM_STORAGE_FULL"===e)throw Error(P("vtt.combat.loot.errors.kingdomCapacity","Lo Stoccaggio del Regno non ha spazio sufficiente per questo loot."));throw Error(P("vtt.combat.loot.errors.generic","Impossibile assegnare il loot. Riprova."))}f(m?.combat||{id:p.combatId,pendingLoot:void 0})}catch(e){w(e instanceof Error?e.message:P("vtt.combat.loot.errors.generic","Impossibile assegnare il loot. Riprova."))}finally{_(null)}},[O,v,f,p,e,P]);return p&&"pending"===p.status&&N?(0,r.jsx)(d.A,{children:(0,r.jsx)("div",{className:u().backdrop,children:(0,r.jsxs)("section",{className:u().panel,role:"dialog","aria-modal":"true","aria-labelledby":"combat-loot-title",children:[(0,r.jsx)("div",{className:u().kicker,children:P("vtt.combat.loot.kicker","RICOMPENSE DELLO SCONTRO")}),(0,r.jsx)("h2",{id:"combat-loot-title",className:u().title,children:P("vtt.combat.loot.title","Loot ottenuto")}),(0,r.jsx)("p",{className:u().cards,children:L}),(0,r.jsx)("div",{className:u().itemGrid,children:p.items.map(e=>{var i;return(0,r.jsxs)("article",{className:u().item,children:[(0,r.jsx)("img",{src:(0,n.E)(e.id),alt:"",className:u().itemImage}),(0,r.jsx)("span",{className:u().itemName,children:(i=e.id,(0,l.Q)({id:i},a,b[i]))}),(0,r.jsxs)("strong",{className:u().quantity,children:["x",e.quantity]})]},e.id)})}),x&&(0,r.jsx)("div",{className:u().error,role:"alert",children:x}),(0,r.jsxs)("div",{className:u().heroPicker,children:[(0,r.jsx)("label",{htmlFor:"combat-loot-hero",children:P("vtt.combat.loot.selectHero","Eroe destinatario")}),(0,r.jsxs)("select",{id:"combat-loot-hero",value:O,onChange:e=>T(e.target.value),disabled:!!v||0===V.length,children:[0===V.length&&(0,r.jsx)("option",{value:"",children:"â"}),V.map(e=>(0,r.jsx)("option",{value:e.characterId,children:e.name},e.characterId))]})]}),(0,r.jsxs)("div",{className:u().actions,children:[(0,r.jsx)("button",{type:"button",onClick:()=>S("random"),disabled:!!v||0===V.length,children:"random"===v?P("vtt.combat.loot.working","Assegnazioneâ¦"):P("vtt.combat.loot.random","Assegna il loot in modo casuale")}),(0,r.jsxs)("button",{type:"button",onClick:()=>S("hero"),disabled:!!v||!O,children:["hero"===v?P("vtt.combat.loot.working","Assegnazioneâ¦"):P("vtt.combat.loot.sendAll","Invia tutto il loot a:")," ",k]}),p.kingdomAvailable&&(0,r.jsx)("button",{type:"button",onClick:()=>S("kingdom"),disabled:!!v,children:"kingdom"===v?P("vtt.combat.loot.working","Assegnazioneâ¦"):P("vtt.combat.loot.sendKingdom","Invia al Regno")}),(0,r.jsx)("button",{className:u().discard,type:"button",onClick:()=>S("discard"),disabled:!!v,children:"discard"===v?P("vtt.combat.loot.working","Assegnazioneâ¦"):P("vtt.combat.loot.discard","Scarta tutto")})]})]})})}):null}},54336:(e,a,i)=>{"use strict";i.d(a,{i2:()=>y,pb:()=>l,Qv:()=>c,Wj:()=>s,RZ:()=>n,ot:()=>d});
1var r=i(1930);let t=JSON.parse('[{"id":"drevorin","name":"Drevorin","rarity":"common","image":"/VTTfile/Pesci/Drevorin.webp","minCm":12,"maxCm":60},{"id":"lyrivar","name":"Lyrivar","rarity":"common","image":"/VTTfile/Pesci/Lyrivar.webp","minCm":12,"maxCm":60},{"id":"mavaris","name":"Mavaris","rarity":"rare","image":"/VTTfile/Pesci/Mavaris.webp","minCm":20,"maxCm":110},{"id":"sylylan","name":"Sylylan","rarity":"common","image":"/VTTfile/Pesci/Sylylan.webp","minCm":20,"maxCm":110},{"id":"nyrelis","name":"Nyrelis","rarity":"common","image":"/VTTfile/Pesci/Nyrelis.webp","minCm":10,"maxCm":40},{"id":"vaeladon","name":"Vaeladon","rarity":"common","image":"/VTTfile/Pesci/Vaeladon.webp","minCm":10,"maxCm":40},{"id":"oryeth","name":"Oryeth","rarity":"common","image":"/VTTfile/Pesci/Oryeth.webp","minCm":12,"maxCm":60},{"id":"ghalyris","name":"Ghalyris","rarity":"common","image":"/VTTfile/Pesci/Ghalyris.webp","minCm":12,"maxCm":60},{"id":"aelorin","name":"Aelorin","rarity":"common","image":"/VTTfile/Pesci/Aelorin.webp","minCm":12,"maxCm":60},{"id":"ilyivar","name":"Ilyivar","rarity":"rare","image":"/VTTfile/Pesci/Ilyivar.webp","minCm":12,"maxCm":60},{"id":"brynerun","name":"Brynerun","rarity":"common","image":"/VTTfile/Pesci/Brynerun.webp","minCm":12,"maxCm":60},{"id":"joraris","name":"Joraris","rarity":"rare","image":"/VTTfile/Pesci/Joraris.webp","minCm":12,"maxCm":60},{"id":"caerian","name":"Caerian","rarity":"common","image":"/VTTfile/Pesci/Caerian.webp","minCm":12,"maxCm":60},{"id":"eirivar","name":"Eirivar","rarity":"rare","image":"/VTTfile/Pesci/Eirivar.webp","minCm":12,"maxCm":60},{"id":"faelorak","name":"Faelorak","rarity":"common","image":"/VTTfile/Pesci/Faelorak.webp","minCm":12,"maxCm":60},{"id":"nyris","name":"Nyris","rarity":"common","image":"/VTTfile/Pesci/Nyris.webp","minCm":12,"maxCm":60},{"id":"vaelian","name":"Vaelian","rarity":"rare","image":"/VTTfile/Pesci/Vaelian.webp","minCm":12,"maxCm":60},{"id":"oryadon","name":"Oryadon","rarity":"rare","image":"/VTTfile/Pesci/Oryadon.webp","minCm":12,"maxCm":60},{"id":"vaeluris","name":"Vaeluris","rarity":"common","image":"/VTTfile/Pesci/Vaeluris.webp","minCm":12,"maxCm":60},{"id":"ilyeth","name":"Ilyeth","rarity":"rare","image":"/VTTfile/Pesci/Ilyeth.webp","minCm":12,"maxCm":60},{"id":"qirerun","name":"Qirerun","rarity":"common","image":"/VTTfile/Pesci/Qirerun.webp","minCm":12,"maxCm":60},{"id":"sylinor","name":"Sylinor","rarity":"rare","image":"/VTTfile/Pesci/Sylinor.webp","minCm":12,"maxCm":60},{"id":"mavorin","name":"Mavorin","rarity":"common","image":"/VTTfile/Pesci/Mavorin.webp","minCm":25,"maxCm":110},{"id":"nyrerun","name":"Nyrerun","rarity":"common","image":"/VTTfile/Pesci/Nyrerun.webp","minCm":25,"maxCm":110},{"id":"ilyadon","name":"Ilyadon","rarity":"common","image":"/VTTfile/Pesci/Ilyadon.webp","minCm":10,"maxCm":40},{"id":"oryuris","name":"Oryuris","rarity":"common","image":"/VTTfile/Pesci/Oryuris.webp","minCm":10,"maxCm":40},{"id":"ilyonis","name":"Ilyonis","rarity":"common","image":"/VTTfile/Pesci/Ilyonis.webp","minCm":10,"maxCm":40},{"id":"kaelerun","name":"Kaelerun","rarity":"common","image":"/VTTfile/Pesci/Kaelerun.webp","minCm":10,"maxCm":40},{"id":"sylelis","name":"Sylelis","rarity":"common","image":"/VTTfile/Pesci/Sylelis.webp","minCm":15,"maxCm":70},{"id":"eironis","name":"Eironis","rarity":"rare","image":"/VTTfile/Pesci/Eironis.webp","minCm":30,"maxCm":140},{"id":"mavinor","name":"Mavinor","rarity":"rare","image":"/VTTfile/Pesci/Mavinor.webp","minCm":30,"maxCm":140},{"id":"thaeunir","name":"Thaeunir","rarity":"common","image":"/VTTfile/Pesci/Thaeunir.webp","minCm":30,"maxCm":140},{"id":"faelorin","name":"Faelorin","rarity":"rare","image":"/VTTfile/Pesci/Faelorin.webp","minCm":35,"maxCm":150},{"id":"vaelilor","name":"Vaelilor","rarity":"common","image":"/VTTfile/Pesci/Vaelilor.webp","minCm":12,"maxCm":60},{"id":"ghalerun","name":"Ghalerun","rarity":"rare","image":"/VTTfile/Pesci/Ghalerun.webp","minCm":12,"maxCm":60},{"id":"ilyian","name":"Ilyian","rarity":"common","image":"/VTTfile/Pesci/Ilyian.webp","minCm":15,"maxCm":70},{"id":"brynadon","name":"Brynadon","rarity":"common","image":"/VTTfile/Pesci/Brynadon.webp","minCm":15,"maxCm":70},{"id":"ilyuris","name":"Ilyuris","rarity":"common","image":"/VTTfile/Pesci/Ilyuris.webp","minCm":15,"maxCm":70},{"id":"phaeoth","name":"Phaeoth","rarity":"common","image":"/VTTfile/Pesci/Phaeoth.webp","minCm":15,"maxCm":70},{"id":"brynonis","name":"Brynonis","rarity":"rare","image":"/VTTfile/Pesci/Brynonis.webp","minCm":15,"maxCm":70}]');var m=i(45515);let o=new Map(t.map(e=>[e.id,e]));t.filter(e=>"common"===e.rarity),t.filter(e=>"rare"===e.rarity);let n=e=>o.get(String(e).trim().toLowerCase())||t.find(a=>a.name.toLowerCase()===String(e).trim().toLowerCase()),l=r.Ik({speciesId:r.Yj(),rarity:r.k5(["common","rare"]),size:r.k5(["small","medium","large","trophy"]),lengthCm:r.ai().int().positive()}).refine(e=>{let a=o.get(e.speciesId);return!!(a&&a.rarity===e.rarity&&e.lengthCm>=a.minCm&&e.lengthCm<=a.maxCm)}),s=e=>"rare"===e.rarity?"pesceraro":"pescecomune";function c(e,a){let i=n(e.speciesId),r=(0,m.Mf)(a).map(e=>
1i?.names?.[e]).find(Boolean)||i?.name||e.speciesId;return`${r} \xb7 ${e.lengthCm} cm`}function d(e){let a=l.safeParse(e.__fish||e.fish);if(a.success)return a.data;let i=String(e.id||"").match(/^fish:([^:]+):(small|medium|large|trophy):(\d+)$/);if(!i)return;let r=n(i[1]);return l.safeParse({speciesId:r?.id,rarity:r?.rarity,size:i[2],lengthCm:Number(i[3])}).data}let y={small:.55,medium:.75,large:.95,trophy:1.12}},58924:e=>{e.exports={backdrop:"CombatLootOverlay_backdrop__9C9qS",panel:"CombatLootOverlay_panel__RLFt7",kicker:"CombatLootOverlay_kicker__C_h_2",title:"CombatLootOverlay_title__l_RyG",cards:"CombatLootOverlay_cards__kxZmE",itemGrid:"CombatLootOverlay_itemGrid__4vCXJ",item:"CombatLootOverlay_item__7sGR7",itemImage:"CombatLootOverlay_itemImage__PFuFO",itemName:"CombatLootOverlay_itemName__m19ML",quantity:"CombatLootOverlay_quantity__nwqfn",heroPicker:"CombatLootOverlay_heroPicker__jE0Ld",actions:"CombatLootOverlay_actions__XSOkC",discard:"CombatLootOverlay_discard__droKv",error:"CombatLootOverlay_error__6zhj7"}},72056:(e,a,i)=>{"use strict";i.d(a,{E:()=>m});var r=i(54336);let t={pesceraro:"pescecomune",acquasacralumina:"acquasacra",bombaavvelenante:"BombaAvvelenante",bombaincendiaria:"BombaIncendiaria"};function m(e,a){let i=String(e||"").trim();if(!i)return"";let m=(0,r.ot)({id:i,fish:a}),o=(0,r.RZ)(m?.speciesId||i);if(o)return o.image;let n=t[i.toLowerCase()]||i;return`/oggetti_art/${n}.webp`}},94265:(e,a,i)=>{"use strict";i.d(a,{Q:()=>m});var r=i(45515),t=i(54336);function m(e,a,i){let m=(0,t.ot)(e);if(m)return(0,t.Qv)(m,a);let o=String(e.id||e.catalogItemId||"").trim(),n=String(e.catalogItemId||i?.id||o).trim(),l=e=>"string"==typeof e&&e.trim()&&e.trim()!==o&&e.trim()!==n?e.trim():"",s=l(e.nome)||l(e.name),c=e.__isCustom||/^custom_/i.test(o)||/^custom$/i.test(e.manuale||e.manual||"");if(c&&s)return s;let d=(0,r.Mf)(a);if(c||e.forge||e.__forge||e.__forgedWith||e.workbench||e.__workbench||e.fish||e.__fish||e.catalogItemId&&e.catalogItemId!==o){for(let a of d){let i=l(e.names?.[a]);if(i)return i}if(s)return s}let y=i&&!i.names?l(i.nome)||l(i.name):"";for(let[a,r]of d.entries()){let t=l(i?.names?.[r])||l(e.names?.[r]);if(t)return t;if(0===a&&y)return y}return l(i?.nome)||l(i?.name)||l(i?.debugNameIt)||s||l(e.debugNameIt)||o}}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.