PageSourceSearch

https://nukesdragons.com/_nuxt/C-OA268j.js

js nukesdragons.com collected 2026-10-07 17:23:04 UTC 89,950 bytes, 8 lines download raw bytes

1import{a as we,z as x,E as ve,q as P,l as ie,t as Ve,r as ue,w as Mt,d as ke,p as Nt,B as Se,_ as je,y as fe,v as X,o as pt,j as ht,e as Oe,n as Ce,c as ms,x as ft,i as Ge,k as zs,g as Qs}from"./D7s0jYV2.js";import Ye from"./C27G8QXw.js";import{_ as re}from"./R_CEtQWz.js";import{f as Te,h as xt,i as Ft}from"./daYzaN_A.js";import{W as _e,b as Js}from"./B-t-OS7b.js";import{q as Kt,s as Re,p as lt,Q as Rt,C as Xs,b as rt,c as gt,j as Zs,m as en,E as at,a6 as ze,x as De,_ as tn,o as _s,r as $t,S as sn,J as qt,W as ns,a2 as nn,D as an,v as on,V as ln}from"./C27A_i2K.js";import{d as Wt}from"./Dla2Rlr7.js";import"./CXl88QlF.js";import{af as ne,ba as me,b2 as n,a2 as _,ab as m,co as r,bv as e,X as i,_ as T,i as rn,$ as k,Z as d,bd as cn,bk as g,aa as Z,a0 as j,h as K,bc as Q,D as ps,c1 as ye,aT as Ke,ch as dn,a8 as hs,cr as un,c3 as mn,a3 as _n,cn as pn}from"./DVyqBkvr.js";import{i as Qe,U as vt,k as Je,d as Be,j as fs,b as Vt,e as yt,c as wt,h as gs,g as vs,f as Xe,s as bs,a as hn}from"./BDFJZ04f.js";import{u as pe}from"./BmHHcHw3.js";import ct from"./BPlAf2M-.js";import{SOURCE_NAMES as Ze,codexUrl as Ee,isDiagram as kt,DIAGRAM_KIND_NAMES as xs,RECIPE_KIND_NAMES as $s,HORSE_GEAR_KIND_NAMES as ys,INGREDIENT_KIND_NAMES as ws,FOOD_KIND_NAMES as ks,partLink as Pt,formulaUrl as Ne,WEAKNESS_KIND_NAMES as as,monsterStats as fn,madeBy as gn,usedIn as vn}from"./D6HaZWr7.js";import{d as bt,s as bn,b as It}from"./DYH4HCy7.js";import{a as Ss,A as xn,d as js,b as Ie}from"./DWN9ybKV.js";import{u as St}from"./CgQ8YCEX.js";import Os from"./CfVwMX_R.js";import Ht from"./CjvGHdIa.js";import{_ as $n}from"./DlAUqK2U.js";import Cs from"./BYtZB1cg.js";import Yt from"./D19j5cEo.js";import yn from"./CfcrnWN6.js";import{_ as dt}from"./CzoCxq5G.js";import{_ as zt}from"./CT_ngYPw.js";import{_ as ut}from"./DTMv1_vq.js";import{_ as wn}from"./VHzwF4K1.js";import{b as kn}from"./B7A7wm_E.js";import{_ as Sn,a as jn,d as On,D as Cn}from"./wqT3N83r.js";import{_ as Tn}from"./CGuT783M.js";import{a as Dn}from"./BsI7370e.js";import{a as En}from"./7njyMG1D.js";import"./Bfzp_4w0.js";import"./DbzW7DkD.js";import"./CIXmcdme.js";import"./BCJtjyks.js";import"./CfkJy1Tc.js";import"./Uvz3rCSC.js";import"./D3zIBnsJ.js";import"./DaIWLGP-.js";import"./DMkkqNrw.js";import"./ujMZ7K03.js";import"./D6j3iFyC.js";import"./BAf71tqf.js";import"./De6lzYSy.js";import"./C6XkplIr.js";import"./CsV3GPem.js";import"./6fwdNxN-.js";import"./CilCzgdJ.js";import"./Dk1g7juZ.js";import"./Cyyl4m3E.js";import"./DZEsTFD7.js";import"./CJB6Un3s.js";import"./r4InGLyN.js";import"./D8KJdtqq.js";import"./DlJBQnTW.js";import"./WU11j1Uu.js";import"./CqFF9kcT.js";import"./BuSvyPqS.js";import"./vxRmtX26.js";import"./rrYT6UYI.js";import"./cFAT9MaQ.js";import"./BOE7wnOg.js";import"./WSSPqBmb.js";import"./_Dy2zPzC.js";import"./DeIXANTa.js";import"./CHeZks9k.js";import"./L-CZliqt.js";import"./DVySDvTx.js";import"./C0HET0_K.js";import"./CL_OYHGa.js";import"./Dj8Ce69L.js";import"./BfezxRKx.js";import"./BCVwaQ9_.js";import"./BdNYvX3Z.js";import"./CcKCrYur.js";import"./BQmuOfuq.js";import"./C2-Gw81K.js";import"./D5dJWYXO.js";import"./DOUgrocC.js";import"./BKSEGrC7.js";import"./DqmU_6fh.js";import"./CysQ2Hal.js";import"./DG2J1fCB.js";import"./CedC-bq0.js";import"./ghK_LtIn.js";import"./BdZGSwCn.js";const An={class:"flex flex-col gap-8"},Ln=ne({__name:"skills",props:{db:{}},setup(t){const s=t,{model:c}=pe(_e,s.db,me(void 0)),l=i(()=>Qe(c.value)),o=i(()=>Kt.map(a=>({name:Re[a].name,items:l.value.filter(u=>u.$data.tree===a)})));return(a,u)=>{const h=we,y=Ye,O=re,b=Te;return n(),_("div",An,[m(h,{title:"The Witcher 3 Remastered Skills",tagline:"Database"}),m(b,{categories:e(o),"with-index":"","show-count":"","index-prefix":"skills"},{item:r(({item:S})=>[m(O,{item:S},{default:r(()=>[m(y,{item:S,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["categories"])])}}}),In=Object.assign(Ln,{__name:"W3DbSpaceSkills"}),Bn=["base","dlc","hearts-of-stone","blood-and-wine"],Ts=t=>Ze[t]??"Base game",Qt=t=>({key:"source",label:"Source",of:t,format:Ts,order:Bn});function Ds(t){const s=c=>Object.values(c.$data.variants);return[{key:"tier",label:"Tier",of:c=>
1T.uniq(s(c).map(l=>l.tier)),format:c=>lt[Number(c)]||"Base"},{key:"quality",label:"Quality",of:c=>T.uniq(s(c).map(l=>l.quality)),format:c=>Rt[Number(c)]??c},{key:"set",label:"Set",of:c=>c.$data.set,format:c=>t[c]?.name??T.startCase(c)},Qt(c=>T.uniq(s(c).map(l=>l.source)))]}const se=rn["witcher-3"].name,Mn={"hearts-of-stone":"Hearts of Stone","blood-and-wine":"Blood and Wine"},Nn=t=>t?Mn[t]:void 0,Fe=t=>{const s=Nn(t);return s?`, added in the ${s} expansion`:""},ge=(t,s)=>`/witcher-3/db/${t}${s?`#${t}-${T.kebabCase(s)}`:""}`,He=t=>ge("skills",Re[t].name),ot=t=>ge("upgrades",vt[t]),Rn=t=>ge("consumables",t==="potion"?"Potions":"Decoctions"),os=t=>ge("armor",Ss[t]),nt=t=>ge("weapons",t==="crossbow"?"Crossbows":`${t} swords`),Ut={steel:"steel sword",silver:"silver sword",crossbow:"crossbow",armor:"chest armor",gloves:"gauntlets",pants:"trousers",boots:"boots",mask:"mask"},Gt=t=>t==="gloves"||t==="pants"||t==="boots",qn=t=>Ve(t,{unique:!/\b(sword|crossbow|armor|boots|gauntlets|trousers|mask)\b/i.test(t)||/\w's\b/.test(t)}),Le=t=>t>=60&&t%60===0?`${t/60} ${Mt(t/60,"minute")}`:`${t} ${Mt(t,"second")}`,Es=(t,s="Its")=>x(s,t.length===1?"other tier is":"other tiers are",ue(t)),Wn=/^(Aard|Igni|Yrden|Quen|Axii)\b/,Pn=new Set(Object.values(Xs).filter(t=>t.kind==="percent").map(t=>t.attr)),Un=t=>Wn.test(t)?t:t.charAt(0).toLowerCase()+t.slice(1),it=t=>{const s=Un(t.label);return t.type==="mult"||Math.abs(t.value)<=1||Pn.has(t.attr)?`${bt(Math.round(t.value*1e3)/10)}% ${s}`:`${t.type==="base"?t.value:bt(t.value)} ${s}`},As=t=>(t??[]).filter(s=>!(s.type==="base"&&s.value===0)),Ls=t=>t.range?`${it({...t,value:t.range[0]}).split(" ")[0]} to ${it({...t,value:t.range[1]})}`:it(t),Is=(t,s,c="It",l="Its")=>t.length<=3?x(l,P("built-in bonuses",s),":",ve(t.map(Ls))):x(c,c==="It"?"carries":"carry",ie(t.length,"built-in bonus",{link:s})),is=t=>t.split(`
2
3`)[0]?.trim()??"",ls=new WeakMap,Bs=(t,s,c=5)=>{if(!s)return;let l=ls.get(t);return l||(l=T.countBy(Object.values(t).flatMap(o=>o.desc?[is(o.desc)]:[])),ls.set(t,l)),(l[is(s)]??0)<c?s:s.split(`
4
5`).slice(1).join(`
6
7`).trim()||void 0},Ms=(t,s)=>{if(!t.scaled)return t.desc;const{text:c,perPiece:l}=t.scaled,o=/\$N\$(\S*?)\.?\s*$/.exec(c)?.[1]??"",a=c.replace(/\s*[^.]*\$N\$[^.]*\.?\s*$/,""),u=parseFloat((l*s).toFixed(2));return`${a} With all ${s} pieces: ${u}${o}.`},Gn={class:"flex flex-col gap-8"},Fn=ne({__name:"weapons",props:{db:{}},setup(t){const s=t,{model:c}=pe(_e,s.db,me(void 0)),l=u=>[u.$data.set?0:1,u.$data.set??"",u.$data.name],o=i(()=>{const u=Je(c.value);return[{name:"Steel swords",items:T.sortBy(u.filter(h=>h.kind==="steel"&&!h.isSecondary),l)},{name:"Axes, clubs and maces",items:T.sortBy(u.filter(h=>h.isSecondary),l)},{name:"Silver swords",items:T.sortBy(u.filter(h=>h.kind==="silver"),l)},{name:"Crossbows",items:T.sortBy(u.filter(h=>h.kind==="crossbow"),l)}]}),a=St({categories:o,facets:Ds(s.db.data.sets)});return(u,h)=>{const y=we,O=ct,b=re,S=Te;return n(),_("div",Gn,[m(y,{title:`${e(se)} Weapons`,tagline:"Database"},null,8,["title"]),m(S,{categories:e(o),filter:e(a),"with-index":"","show-count":"","index-prefix":"weapons"},{item:r(({item:W})=>[m(b,{item:W},{default:r(()=>[m(O,{item:W,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["categories","filter"])])}}}),Kn=Object.assign(Fn,{__name:"W3DbSpaceWeapons"}),Vn={class:"flex flex-col gap-8"},Hn=ne({__name:"armors",props:{db:{}},setup(t){const s=t,{model:c}=pe(_e,s.db,me(void 0)),l=h=>[h.$data.set?0:1,h.$data.set??"",h.$data.name],o=i(()=>{const h=Be(c.value);return xn.map(y=>({name:Ss[y],items:T.sortBy(h.filter(O=>O.kind===y),l)}))}),a=["light","medium","heavy"],u=St({categories:o,facets:[{key:"weight",label:"Weight class",of:h=>h.$data.weightClass,format:T.upperFirst,order:a},...Ds(s.db.data.sets)]});return(h,y)=>{const O=we,b=ct,S=re,W=Te;return n(),_("div",Vn,[m(O,{title:`${e(se)} Armor`,tagline:"Database"},null,8,["title"]),m(W,{categories:e(o),filter:e(u),"with-index":"","show-count":"","index-prefix":"armor"},{item:r(({item:L})=>[m(S,{item:L},{default:r(()=>[m(b,{item:L,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["categories","filter"])])}}}),Yn=Object.assign(Hn,{__name:"W3DbSpaceArmors"}),zn={class:"flex flex-col gap-8"},Qn=ne({__name:"upgrades",props:{db:{}},setup(t){const s=t,{model:c}=pe(_e,s.db,me(void 0)),l=i(()=>{const u=fs(c.value);return Object.keys(vt).map(h=>({name:vt[h],items:T.sortBy(u.filter(y=>y.kind===h),y=>[String(y.$data.tier??""),y.$data.name])}))}),a=St({categories:l,facets:[{key:"tier",label:"Tier",of:u=>{const h=u.$data.tier;if(h!==void 0)return typeof h=="string"&&Number.isNaN(Number(h))?h:`${u.isEnchantment?"level":"tier"}-${h}`},format:u=>T.upperFirst(u.replace("-"," ")),order:["lesser","normal","greater","tier-1","tier-2","tier-3","level-1","level-2","level-3"]},Qt(u=>u.$data.source)]});return(u,h)=>{const y=we,O=Os,b=re,S=Te;return n(),_("div",zn,[m(y,{title:`${e(se)} Upgrades`,tagline:"Database"},null,8,["title"]),m(S,{categories:e(l),filter:e(a),"with-index":"","show-count":"","index-prefix":"upgrades"},{item:r(({item:W})=>[m(b,{item:W},{default:r(()=>[m(O,{item:W,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["categories","filter"])])}}}),Jn=Object.assign(Qn,{__name:"W3DbSpaceUpgrades"}),Xn={class:"flex flex-col gap-8"},Zn=ne({__name:"consumables",props:{db:{}},setup(t){const s=t,{model:c}=pe(_e,s.db,me(void 0)),l=i(()=>{const o=Vt(c.value);return[{name:"Potions",items:o.filter(a=>a.kind==="potion")},{name:"Decoctions",items:o.filter(a=>a.kind==="decoction")}]});return(o,a)=>{const u=we,h=Ht,y=re,O=Te;return n(),_("div",Xn,[m(u,{title:"The Witcher 3 Remastered Potions and Decoctions",tagline:"Database"}),m(O,{categories:e(l),"with-index":"","show-count":"","index-prefix":"consumables"},{item:r(({item:b})=>[m(y,{item:b},{default:r(()=>[m(h,{item:b,plain:"",tier:b.maxTier},null,8,["item","tier"])]),_:2},1032,["item"])]),_:1},8,["categories"])])}}}),ea=Object.assign(Zn,{__name:"W3DbSpaceConsumables"}),ta={},sa={class:"max-w-[600px] flex flex-col gap-2 text-white/75"};
7function na(t,s){const c=ke;return n(),k(c,{class:"flex justify-center"},{default:r(()=>[d("div",sa,[cn(t.$slots,"default")])]),_:3})}const mt=Object.assign($n(ta,[["render",na]]),{__name:"DbDesc"}),aa={class:"flex flex-col gap-8"},oa=ne({__name:"mutations",props:{db:{}},setup(t){const s=t,{model:c}=pe(_e,s.db,me(void 0)),l=u=>T.sortBy(u.$data.colors,h=>rt.indexOf(h)),o=i(()=>T.sortBy(Object.values(T.groupBy(yt(c.value),u=>l(u).join("-"))),u=>l(u[0]).length,u=>l(u[0]).map(h=>rt.indexOf(h)).join("")).map(u=>({name:Nt(l(u[0]).map(h=>gt[h].name)),items:u}))),a=i(()=>(s.db.data.leveling.geralt?.skillSlots??[]).map(u=>u.mutations).filter(u=>typeof u=="number"));return(u,h)=>{const y=we,O=mt,b=Cs,S=re,W=Te;return n(),_("div",aa,[m(y,{title:`${e(se)} Mutations`,tagline:"Database"},null,8,["title"]),m(O,null,{default:r(()=>[d("p",null," Mutations come with the Blood and Wine expansion. Research spends greater mutagens and skill points; one mutation is active at a time, and its colours decide which skills the Strengthened Synapses slots take. Those slots open at "+g(e(Nt)(e(a).map(String)))+" researched mutations. ",1)]),_:1}),m(W,{categories:e(o),"with-index":"","show-count":"","index-prefix":"mutations"},{item:r(({item:L})=>[m(S,{item:L},{default:r(()=>[m(b,{item:L,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["categories"])])}}}),ia=Object.assign(oa,{__name:"W3DbSpaceMutations"}),la={class:"flex flex-col gap-8"},ra=ne({__name:"mutagens",props:{db:{}},setup(t){const s=t,{model:c}=pe(_e,s.db,me(void 0)),l=i(()=>{const a=wt(c.value);return rt.map(u=>({name:gt[u].name,items:a.filter(h=>h.$data.color===u)}))}),o=i(()=>(s.db.data.leveling.geralt?.mutagenSlots??[]).map(a=>a.points));return(a,u)=>{const h=we,y=mt,O=Yt,b=re,S=Te;return n(),_("div",la,[m(h,{title:`${e(se)} Mutagens`,tagline:"Database"},null,8,["title"]),m(y,null,{default:r(()=>[d("p",null," A mutagen fills one skill group's slot (opening at "+g(e(Nt)(e(o).map(String)))+" ability points acquired) and its bonus counts once for itself and once more for every equipped skill of its colour in that group. ",1)]),_:1}),m(S,{categories:e(l),"with-index":"","show-count":"","index-prefix":"mutagens"},{item:r(({item:W})=>[m(b,{item:W},{default:r(()=>[m(O,{item:W},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["categories"])])}}}),ca=Object.assign(ra,{__name:"W3DbSpaceMutagens"}),da={class:"flex flex-col gap-8"},ua=ne({__name:"sets",props:{db:{}},setup(t){const s=["light","medium","heavy"],c=t,{model:l}=pe(_e,c.db,me(void 0)),o=i(()=>{const u={};for(const h of Be(l.value)){const{set:y,weightClass:O}=h.$data;y&&O&&(u[y]??=O)}return u}),a=i(()=>{const u=T.groupBy(gs(l.value),h=>o.value[h.id]);return s.filter(h=>u[h]).map(h=>({name:`${T.capitalize(h)} armor sets`,items:u[h]}))});return(u,h)=>{const y=we,O=mt,b=yn,S=re,W=Te;return n(),_("div",da,[m(y,{title:`${e(se)} Witcher Sets`,tagline:"Database"},null,8,["title"]),m(O,null,{default:r(()=>[...h[0]||(h[0]=[d("p",null,"Three worn bonus pieces open the minor bonus, six the major (Blood and Wine).",-1)])]),_:1}),m(W,{categories:e(a),"with-index":"","show-count":"","index-prefix":"sets"},{item:r(({item:L})=>[m(S,{item:L},{default:r(()=>[m(b,{item:L},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["categories"])])}}}),ma=Object.assign(ua,{__name:"W3DbSpaceSets"}),_a={class:"h-full min-h-0 w-full overflow-hidden flex flex-col items-center justify-center-safe gap-1.5 px-3 text-center"},pa={class:"text-xs text-white/50 leading-tight"},ha={class:"text-xs uppercase u-font-d py-1 text-white/50"},fa=ne({__name:"sign-card",props:{item:{}},setup(t){const s=t,c=i(()=>s.item.desc.split(`
8`)[0]??"");return(l,o)=>{const a=dt,u=zt,h=ut;return n(),k(h,{format:"200-220",clamp:"",class:"border-2 rounded bg-black u-bg-highlight border-white/30","data-test-id":`sign:${t.item.id}`},{header:r(()=>[m(a,{title:t.item.name,scale:5,tagline:"Sign",class:"px-4"},null,8,["title"])]),footer:r(()=>[d("div",ha,g(t.item.title),1)]),default:r(()=>[d("div",_a,[m(u,{desc:e(c),scale:4,class:"text-white/75"},null,8,["desc"]),d("div",pa,"Alternate: "+g(t.item.alternate.name),1)])]),_:1},8,["data-test-id"])}}}),ga=Object.assign(fa,{__name:"W3CodexSignCard"}),va={class:"flex flex-col gap-8"},ba=ne({__name:"signs",props:{db:{}},setup(t){const s=t,c=i(()=>[{name:"Signs",items:T.sortBy(Object.values(s.db.data.signs),"key").map(l=>({...l,link:Ee("signs",l.id)}))}]);return(l,o)=>{const a=we,u=mt,h=ga,y=re,O=Te;return n(),_("div",va,[m(a,{title:`${e(se)} Signs`,tagline:"Database"},null,8,["title"]),m(u,null,{default:r(()=>[...o[0]||(o[0]=[d("p",null," Geralt casts five Signs. Each has an alternate mode that a Signs skill unlocks, and the bestiary names the Signs each creature is 
8weak to. ",-1)])]),_:1}),m(O,{categories:e(c),"show-count":"","index-prefix":"signs"},{item:r(({item:b})=>[m(y,{item:b},{default:r(()=>[m(h,{item:b},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["categories"])])}}}),xa=Object.assign(ba,{__name:"W3DbSpaceSigns"}),$a={class:"h-full min-h-0 w-full overflow-hidden flex flex-col items-center justify-center gap-2 px-3 text-center"},ya={class:"flex flex-col items-center leading-tight"},wa={class:"u-font-d text-base"},ka={key:0,class:"text-white/60"},Sa={class:"w-full flex flex-col text-xs"},ja={class:"text-left"},Oa={class:"text-white/60 whitespace-nowrap"},Ca={class:"text-xs uppercase u-font-d py-1 text-white/50"},Ta=ne({__name:"formula-card",props:{item:{}},setup(t){const s=t,c=i(()=>kt(s.item)?s.item:void 0),l=i(()=>{if(!c.value)return"Alchemy recipe";const o=`${c.value.craftsmanLevel} ${c.value.craftsman.toLowerCase()}`;return c.value.fee?`${o} · ${c.value.fee} crowns`:o});return(o,a)=>{const u=dt,h=ut;return n(),k(h,{format:"220-280",clamp:"",class:"border-2 rounded bg-black u-bg-highlight border-white/30","data-test-id":`formula:${t.item.id}`},{header:r(()=>[m(u,{title:t.item.name,scale:4,"tight-from":30,tagline:e(c)?"Diagram":"Recipe",class:"px-4"},null,8,["title","tagline"])]),footer:r(()=>[d("div",Ca,g(e(l)),1)]),default:r(()=>[d("div",$a,[d("div",ya,[a[0]||(a[0]=d("span",{class:"u-font-d uppercase text-xs text-white/50"},"Makes",-1)),d("span",wa,[Z(g(t.item.product.name)+" ",1),t.item.product.quantity>1?(n(),_("span",ka,"× "+g(t.item.product.quantity),1)):j("",!0)])]),d("div",Sa,[(n(!0),_(K,null,Q(t.item.ingredients,y=>(n(),_("div",{key:y.key,class:"flex justify-between gap-3 border-t border-white/10 first:border-t-0 py-0.5"},[d("span",ja,g(y.name),1),d("span",Oa,"× "+g(y.quantity),1)]))),128))])])]),_:1},8,["data-test-id"])}}}),Ns=Object.assign(Ta,{__name:"W3CodexFormulaCard"}),Da={class:"h-full min-h-0 w-full overflow-hidden flex flex-col items-center justify-center gap-1.5 px-3 text-center"},Ea={class:"flex flex-wrap justify-center gap-x-2 gap-y-0.5 text-sm text-yellow leading-tight"},Aa={key:1,class:"text-xs text-white/50"},La={class:"text-xs uppercase u-font-d py-1 text-white/50"},Ia=ne({__name:"monster-card",props:{item:{}},setup(t){const s=t,c=i(()=>{const l=s.item.stats?.level;return l?`Level ${l}`:Ze[s.item.source]??"Bestiary"});return(l,o)=>{const a=dt,u=ut;return n(),k(u,{format:"200-220",clamp:"",class:"border-2 rounded bg-black u-bg-highlight border-white/30","data-test-id":`monster:${t.item.id}`},{header:r(()=>[m(a,{title:t.item.name,scale:5,tagline:t.item.groupName,class:"px-4 bg-red/60"},null,8,["title","tagline"])]),footer:r(()=>[d("div",La,g(e(c)),1)]),default:r(()=>[d("div",Da,[t.item.weaknesses.length?(n(),_(K,{key:0},[o[0]||(o[0]=d("div",{class:"u-font-d uppercase text-xs text-white/50 leading-none"},"Vulnerable to",-1)),d("div",Ea,[(n(!0),_(K,null,Q(t.item.weaknesses,h=>(n(),_("span",{key:h.key},g(h.name),1))),128))])],64)):(n(),_("div",Aa,"No listed vulnerability"))])]),_:1},8,["data-test-id"])}}}),Rs=Object.assign(Ia,{__name:"W3CodexMonsterCard"}),Ba={class:"h-full min-h-0 w-full overflow-hidden flex flex-col items-center justify-center-safe gap-2 px-3 text-center"},Ma={class:"w-full flex flex-col gap-0.5 text-xs"},Na={class:"flex justify-between gap-2"},Ra={class:"u-font-d uppercase text-white/75"},qa={class:"flex gap-2 text-white/75"},Wa={key:0},Pa={key:0,class:"text-right text-yellow text-[11px] leading-tight"},Ua={key:0,class:"text-sm text-yellow leading-tight"},Ga={key:2,class:"text-[11px] leading-tight text-white/60"},Fa={class:"text-xs uppercase u-font-d py-1 text-white/50"},Ka=ne({__name:"bomb-card",props:{item:{}},setup(t){const s=t,c=u=>Object.entries(u.damage).map(([h,y])=>`${y} ${T.lowerCase(h)}`).join(" / "),l=u=>T.compact([c(u)&&`${c(u)} damage`,...u.effects.map(h=>h.name)]).join(", "),o=i(()=>{const u=T.uniq(s.item.tiers.map(l));return u.length===1?u[0]:void 0}),a=i(()=>Ze[s.item.source]??"Bomb");return(u,h)=>{const y=dt,O=zt,b=ut;return n(),k(b,{format:"220-280",clamp:"",class:"border-2 rounded bg-black u-bg-highlight border-white/30","data-test-id":`bomb:${t.item.id}`},{header:r(()=>[m(y,{title:t.item.name,scale:5,tagline:"Bomb",class:"px-4 bg-orange/60"},null,8,["title"])]),footer:r(()=>[d("div",Fa,g(e(a)),1)]),default:r(()=>[d("div",Ba,[d("div",Ma,[(n(!0),_(K,null,Q(t.item.tiers,S=>(n(),_("div",{key:S.tier,class:"flex flex-col"},[d("div",Na,[d("span",Ra,g(S.label),1),d("span",qa,[d("span",null,g(S.charges)+" "+g(S.charges===1?"charge":"charges"),1),S.duration?(n(),_("span",Wa,g(S.duration)+"s",1)):j("",!0)])]),!e(o)&&l(S)?(n(),_("div",Pa,g(l(S)),1)):j("",!0)]))),128))]),e(o)?(n(),_("div",Ua,g(e(o)),1)):j("",!0),t.item.desc&&e(o)?(n(),k(O,{key:1,desc:t.item.desc,scale:3,class:"text-white/60"},null,8,["desc"])):t.item.desc?(n(),_("div",Ga,g(t.item.desc),1)):j("",!0)])]),_:1},8,["data-test-id"])}}}),qs=Object.assign(Ka,{__name:"W3CodexBombCard"}),Va={class:"h-full min-h-0 w-full overflow-hidden flex flex-col items-center justify-center-safe gap-1.5 px-2 text-center"},Ha={key:1,class:"text-xs text-white/75"},Ya={key:3,class:"text-xs leading-tight text-white/50"},za={key:4,class:"text-xs text-white/60 leading-tight"},Qa={class:"flex justify-center gap-2 text-xs uppercase u-font-d py-1 text-white/50"},Ja={key:0},Xa=ne({__name:"item-card",props:{item:{},badge:{},desc:{}},setup(t){const s=t,c=i(()=>s.desc??s.item.desc),l=i(()=>"attrs"in s.item?s.item.attrs:void 0),o=i(()=>"lines"in s.item?s.item.lines:void 0),a=i(()=>"yields"in s.item?s.item.yields:void 0),u=i(()=>"duration"in s.item?s.item.duration:void 0),h=i(()=>!!(Object.keys(l.value??{}).length||o.value?.length)),y=i(()=>{const b=s.item,S=[];return b.price!==void 0&&S.push(`${b.price} crowns`),b.weight&&S.push(`${b.weight} weight`),S}),O=i(()=>Ze[s.item.source]);return(b,S)=>{const W=dt,L=wn,D=zt,V=ut;return n(),k(V,{format:"200-220",clamp:"",class:"border-2 rounded bg-black u-bg-highlight border-white/30","data-test-id":`item:${t.item.id}`},{header:r(()=>[m(W,{title:t.item.name,scale:5,tagline:t.badge,class:"px-4 capitalize"},null,8,["title","tagline"])]),footer:r(()=>[d("div",Qa,[(n(!0),_(K,null,Q(e(y),v=>(n(),_("span",{key:v},g(v),1))),128)),e(y).length?j("",!0):(n(),_("span",Ja,g(e(O)??"Item"),1))])]),default:r(()=>[d("div",Va,[e(h)?(n(),k(L,{key:0,attrs:e(l),extra:e(o),class:"justify-center text-sm"},null,8,["attrs","extra"])):j("",!0),e(u)?(n(),_("div",Ha,"Lasts "+g(e(u))+"s",1)):j("",!0),e(c)&&!e(h)?(n(),k(D,{key:2,desc:e(c),scale:4,class:"text-white/75"},null,8,["desc"])):e(c)?(n(),_("div",Ya,g(e(c)),1)):j("",!0),e(a)?.length?(n(),_("div",za," Dismantles into "+g(e(a).map(v=>`${v.quantity} ${v.name}`).join(", ")),1)):j("",!0)])]),_:1},8,["data-test-id"])}}}),Ws=Object.assign(Xa,{__name:"W3CodexItemCard"}),Za={class:"flex flex-col gap-8"},rs="Several bonuses",cs="Bombs without damage",eo=ne({__name:"codex-index",props:{db:{},entity:{}},setup(t){const s=t,c=ps["witcher-3/db"],l=i(()=>c.entities[s.entity]),o={bombs:"Each bomb comes in three tiers. A higher tier carries more charges, and most hit harder or last longer.",food:"Food and drink restore Vital
8ity over time. Better food restores it faster or for longer.",ingredients:"What alchemy recipes and crafting diagrams are made of, plus the junk that can be sold or dismantled into materials.","horse-gear":"Saddles raise Roach's stamina, saddlebags raise the weight Geralt can carry, and blinders keep Roach calm for longer.",trophies:"A trophy hangs on Roach's saddle and gives its bonus while it hangs there. One trophy is worn at a time.",recipes:"Every alchemy formula with what it makes and the ingredients it takes.",diagrams:"Every crafting diagram with what it makes, who can forge it, the fee, and the materials it takes."},a=i(()=>o[s.entity]??l.value.description),u=v=>{if("tiers"in v)return v.tiers.some(B=>Object.keys(B.damage).length)?"Damaging bombs":cs;if("groupName"in v)return v.groupName;if("lines"in v&&!("kind"in v)){const B=T.uniq(v.lines.map(R=>R.label));return B.length===1?B[0]:rs}return"kind"in v?v.kind:""},h={food:ks,ingredients:ws,"horse-gear":ys,recipes:$s,diagrams:xs},y=i(()=>s.db.data),O=i(()=>T.sortBy(Object.values(kn(y.value,c,s.entity)),"name").map(v=>({...v,entity:s.entity,link:Ee(s.entity,v.id),category:u(v)}))),b=i(()=>{const v=h[s.entity];return(v?Object.keys(v):T.sortBy(T.uniq(O.value.map(R=>R.category)),R=>[R===rs||R===cs,R])).map(R=>({name:v?.[R]??R,items:O.value.filter(Y=>Y.category===R)})).filter(R=>R.items.length)}),S=["Amateur","Journeyman","Master","Grandmaster"],W={ingredients:[{key:"rarity",label:"Rarity",of:v=>"rarity"in v?v.rarity:void 0,format:T.upperFirst,order:["valuable","precious"]}],diagrams:[{key:"craftsman",label:"Craftsman",of:v=>"craftsman"in v?v.craftsman:void 0},{key:"craftsman-level",label:"Craftsman level",of:v=>"craftsmanLevel"in v?v.craftsmanLevel:void 0,order:S}],recipes:[{key:"level",label:"Level",of:v=>"level"in v?v.level:void 0,format:v=>`Level ${v}`}]},L=i(()=>{const v=W[s.entity]??[];return T.uniq(O.value.map(R=>R.source)).length>1?[...v,Qt(R=>R.source)]:v}),D=St({categories:b,facets:L.value}),V=v=>v.entity==="trophies"?"trophy":v.entity==="horse-gear"?v.kind:void 0;return(v,B)=>{const R=we,Y=mt,p=Ns,$=Rs,H=qs,E=Ws,f=re,w=Te;return n(),_("div",Za,[m(R,{title:`${e(se)} ${e(l).plural}`,tagline:"Database"},null,8,["title"]),m(Y,null,{default:r(()=>[d("p",null,g(e(a)),1)]),_:1}),m(w,{categories:e(b),filter:e(L).length?e(D):void 0,"with-index":"","show-count":"","index-prefix":t.entity},{item:r(({item:N})=>[m(f,{item:N},{default:r(()=>[N.entity==="recipes"||N.entity==="diagrams"?(n(),k(p,{key:0,item:N},null,8,["item"])):N.entity==="monsters"?(n(),k($,{key:1,item:N},null,8,["item"])):N.entity==="bombs"?(n(),k(H,{key:2,item:N},null,8,["item"])):(n(),k(E,{key:3,item:N,badge:V(N)},null,8,["item","badge"]))]),_:2},1032,["item"])]),_:1},8,["categories","filter","index-prefix"])])}}}),to=Object.assign(eo,{__name:"W3DbSpaceCodexIndex"});function jt(t,s,c){const l=Object.values(t.data.monsters).filter(o=>o.weaknesses.some(a=>a.collection===s&&!!a.id&&c.includes(a.id)));return T.sortBy(Object.values(T.groupBy(l,o=>o.group)).map(o=>({name:o[0].groupName,items:T.sortBy(o,a=>a.name).map(a=>({name:a.name,link:Ee("monsters",a.id)}))})),o=>o.name)}function Ps(t,s,c){const l=Object.values(t.data.monsters).filter(o=>(o.drops??[]).some(a=>a.collection===s&&!!a.id&&c.includes(a.id)));return T.sortBy(Object.values(T.groupBy(l,o=>o.group)).map(o=>({name:o[0].groupName,items:T.sortBy(o,a=>a.name).map(a=>({name:a.name,link:Ee("monsters",a.id)}))})),o=>o.name)}function so(t){return(t.dropTables??[]).map(s=>{const c=(t.drops??[]).filter(o=>o.table===s.table),l=T.sumBy(c,o=>Math.max(o.chance,0));return{...s,entries:T.sortBy(c.map(o=>({...o,always:o.chance<0,share:o.chance>0&&l?o.chance/l:void 0})),o=>o.always?-2:-(o.share??0),"name")}})}const no=(t,s)=>Object.values(t.data.signs??{}).filter(c=>c.alternate.skill===s||c.skills.includes(s));function Us(t,s,c){return T.sortBy([...Object.values(t.data.recipes),...Object.values(t.data.diagrams)].filter(l=>l.product.collection===s&&l.product.id===c),l=>l.product.tier??0,l=>l.name)}
8function Gs(t){const s=t.target[1],c=en.char[s],l=t.data;return{value:l.addmult!==void 0?`${bt(Math.round(l.addmult*100))}%`:`${bt(Math.round((l.add??0)*10)/10)}${c?.suffix??""}`,label:bn(c,s)}}function Fs(t,s,c){return js(t.data.leveling.geralt?.treeBonuses?.[s],[],c).map(Gs)}const Ks=["alchemy_s14",...T.keys(T.pickBy(Zs,t=>t==="decoctions"))];function ao(t){return Qe(t).filter(s=>Ks.includes(s.$data.key))}function oo(t){return Ks.includes(t.$data.key)}function io(t,s){const c=Qe(t);return{colour:c.filter(l=>$t[l.$data.tree]===s.color),synergy:c.filter(l=>l.$data.id===_s)}}function lo(t,s){const c=t.char.skills.allPool.find(l=>l.$data.id===s);c&&c.learn({level:c.maxLevel,slot:t.char.claimSlot(1,c)})}function ro(t,s){t.char.mutationPool.find(c=>c.$data.id===s)?.activate()}function co(t,s){const c=t.char.mutagens.$slots.main.$pool.find(l=>l.$data.id===s);c&&t.char.equipMutagen(c,1)}function uo(t,s,c){[...t.char.consumables.$slots.potions.$pool,...t.char.consumables.$slots.decoctions.$pool].find(o=>o.$data.id===s)?.$add({tier:c})}function mo(t,s){const c=t.$db.upgrades,l=s.kind==="runeword"||s.kind==="glyphword"?at:s.kind==="rune"||s.kind==="glyph"?1:0,o=[...Je(t),...Be(t)].flatMap(u=>ze(u.$data).flatMap(h=>{const y={variant:De(h),upgrades:[{id:s.id}]};return tn(y,u.$data,c),y.upgrades.length&&y.variant===De(h)?[{unit:u,variant:y.variant,own:h.slots>=l}]:[]})),a=o.find(u=>u.own)??o[0];return a?(a.unit.$add({variant:a.variant,upgrades:[{id:s.id}]}),!0):!1}function Jt(t){return sn[t.key]}function _o(t,s){return s?Qe(t).filter(c=>Jt(c.$data)===s):[]}function po(t,s){return s instanceof Ie&&!s.isMask?_o(t,s.$data.weightClass):[]}function ho(t,s){const c=Jt(s);return c?Be(t).filter(l=>l.$data.weightClass===c):[]}function fo(t,s){const c=s instanceof Ie?"armors":"weapons",l=ze(s.$data).map(o=>o.form);return T.sortBy(Object.values(t).filter(o=>o.product.collection===c&&o.product.id===s.$data.id),o=>l.indexOf(o.product.form??""))}function ds(t,s){return t.autogen?qt(t,s)[0]:t.level??0}const us=t=>{const s=ze(t.$data);return s.some(c=>c.setBonusPiece)?"set":s.some(c=>c.quality>=4)?"relic":"loot"},Bt=t=>T.last(ze(t.$data));function go(t,s,c=8){const l=s instanceof Ie?Be(t):Je(t),o=s.$data,a=s instanceof Ie?s.$data.weightClass:void 0,u=us(s),h=Bt(s),y=h?ds(h,s.kind):0,O=l.filter(b=>b.$data.id!==o.id&&b.kind===s.kind&&(!o.set||b.$data.set!==o.set)&&b.$data.type===o.type&&(!(b instanceof Ie)||b.$data.weightClass===a));return T.sortBy(O,[b=>us(b)===u?0:1,b=>{const S=Bt(b);return S?Math.abs(ds(S,b.kind)-y):1/0},b=>{const S=Bt(b);return S?De(S):0}]).slice(0,c)}const vo={class:"flex flex-col items-center gap-2 shrink-0 max-w-full"},bo={class:"max-w-full overflow-x-auto rounded border-2 border-white/30 bg-black/40 p-3"},xo={class:"flex gap-3 flex-col items-center dt:items-start min-w-0"},$o={class:"flex flex-col gap-2 text-center dt:text-left max-w-[640px]"},yo={key:0,class:"u-font-d uppercase text-sm text-white/50"},wo={class:"flex gap-2"},ko={key:0,class:"u-font-c bg-white text-black px-2 py-0.5 text-sm leading-none rounded-sm uppercase opacity-50"},So={class:"flex flex-wrap justify-center gap-4"},jo={class:"flex flex-wrap justify-center gap-4"},Oo=ne({__name:"skill",props:{db:{}},setup(t){const s=t,{startCase:c}=T,{id:l}=ye().params,{model:o}=pe(_e,s.db,me(void 0),{imprint:vs(s.db,E=>E.char.skills.allPool.find(f=>f.$data.id===l)?.learn())}),a=i(()=>Qe(o.value)),u=i(()=>a.value.find(E=>E.$data.id===l)),h=i(()=>(u.value?.$data.reqs??[]).map(E=>a.value.find(f=>f.$data.id===E)).filter(E=>!!E)),y=i(()=>a.value.filter(E=>(E.$data.reqs??[]).includes(l))),O=i(()=>u.value&&Re[u.value.$data.tree]),b=i(()=>u.value?o.value.char.treeSkills(u.value.$data.tree):[]),S=i(()=>u.value&&$t[u.value.$data.tree]),W=i(()=>!!u.value?.$data.tags?.includes("GlobalPassiveBonus")),L=i(()=>S.value?wt(o.value).filter(E=>E.color===S.value):[]),D=i(()=>{const E=S.value;return E?yt(o.value).filter(f=>f.colors.includes(E)):[]}),V=i(()=>{const E=u.value;if(!E)return;const[f]=Fs(s.db,E.$data.tree,E.maxLevel);return f&&{label:f.label.charAt(0).toLowerCase()+f.label.slice(1),top:f.value}}),v=i(()=>{const E=u.value;if(!E)return[];const f=Jt(E.$data);return[{name:`${T.startCase(f??"")} armor`,items:ho(o.value,E.$data)},{name:"Decoctions",items:oo(E)?Vt(o.value).filter(w=>w.kind==="decoction"):[]},{name:`${T.startCase(S.value??"")} mutagens`,items:L.value}]}),B=E=>E instanceof Js,R=E=>E instanceof Ie,Y=i(()=>no(s.db,l)),p=i(()=>Xe(s.db,E=>lo(E,l))),$=i(()=>{const E=u.value,f=O.value;if(!E||!f)return[];const w=E.$data,N=w.levels.length,U=h.value.map(A=>P(A.$data.name,A.link)),G=V.value,ae=L.value.map(A=>P(A.$data.name,A.link)),ee=ae.length>0&&ae.length<=3,ce=D.value.map(A=>P(A.$data.name,A.link));return fe(X(x(w.name,"is",ht(f.name),P(f.name,He(w.tree)),`skill in ${se}`,!!w.branch&&`in the ${T.startCase(w.branch)} branch`,N===1?"with a single level, costing":`with ${N} levels at`,ie(w.cost,"skill point"),N>1&&"each"),U.length>0?x("It opens once",U.length>1&&"any one of",ue(U,"or"),"is learned"):x("It is a starting skill of the tree: n
8othing has to be learned before it"),G&&(N===1?x("It also raises",G.label,`by ${G.top}`):x("Each level also raises",G.label,`, up to ${G.top} at level ${N}`)),x(W.value?"Its bonuses fold straight into the character stats while it is equipped":"It works only while equipped in an open skill slot")),X(S.value?x(`As a ${S.value} skill it multiplies the bonus of`,ee&&"a",ee?ue(ae,"or"):P(`${S.value} mutagens`,"/witcher-3/db/mutagens"),"slotted in its skill group",ce.length>0&&", and fits the Strengthened Synapses slots opened by",ce.length>0&&pt(ce,{noun:"mutation",section:"/witcher-3/db/mutations"}),ce.length>3&&`with ${S.value} among their colours`):x(`${f.name} skills have no mutagen colour: it neither multiplies a`,P("mutagen","/witcher-3/db/mutagens"),"nor fits a Strengthened Synapses slot opened by a",P("mutation","/witcher-3/db/mutations"))),X(x("It leads to",ue(y.value.map(A=>P(A.$data.name,A.link))))))}),H=i(()=>{const E=Ce($.value);if(E)return`${E} Every level's effect and what it works with.`});return Se(H),(E,f)=>{const w=Sn,N=re,U=je,G=Ye,ae=ke,ee=ct,ce=Ht,A=Yt,M=xt,q=Oe;return e(u)&&e(O)?(n(),k(q,{key:0,name:e(u).$data.name,tagline:`${e(se)} ${e(O).name} Skill`,seo:"",details:"","planner-url":e(p)},{aside:r(()=>[d("div",vo,[d("div",bo,[m(w,{skills:e(b),layout:e(jn),active:e(u),mini:"",links:""},null,8,["skills","layout","active"])]),m(N,{item:{link:e(He)(e(u).$data.tree)},class:"u-font-d text-sm text-white/75 uppercase"},{default:r(()=>[Z(g(e(O).name)+" tree ",1)]),_:1},8,["item"])])]),intro:r(()=>[d("div",xo,[d("div",$o,[(n(!0),_(K,null,Q(e(u).$data.levels,(I,te)=>(n(),_("div",{key:te,class:"whitespace-pre-line opacity-75"},[e(u).$data.levels.length>1?(n(),_("span",yo,"Level "+g(te+1)+": ",1)):j("",!0),Z(g(I.desc),1)]))),128))]),d("div",wo,[d("div",{class:Ke(["u-font-c px-2 py-0.5 text-sm leading-none rounded-sm uppercase border",[e(O).ink,e(O).border]])},g(e(O).name),3),e(u).$data.branch?(n(),_("div",ko,g(e(c)(e(u).$data.branch)),1)):j("",!0),(n(!0),_(K,null,Q(e(Y),I=>(n(),k(N,{key:I.id,item:{link:e(Ee)("signs",I.id)},class:"u-font-d text-sm text-white/75 uppercase"},{default:r(()=>[Z(g(I.title),1)]),_:2},1032,["item"]))),128))]),m(U,{paragraphs:e($),class:"w-full max-w-[640px] mt-2"},null,8,["paragraphs"])])]),builds:r(()=>[...f[0]||(f[0]=[Z(" Open the character build planner with this skill learned at its top level and slotted, then plan the tree, the slots and the mutagens around it. ",-1)])]),default:r(()=>[e(h).length?(n(),k(ae,{key:0,title:"Opened by"},{default:r(()=>[d("div",So,[(n(!0),_(K,null,Q(e(h),I=>(n(),k(N,{key:I.$data.id,item:I},{default:r(()=>[m(G,{item:I,plain:""},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1})):j("",!0),e(y).length?(n(),k(ae,{key:1,title:"Leads to"},{default:r(()=>[d("div",jo,[(n(!0),_(K,null,Q(e(y),I=>(n(),k(N,{key:I.$data.id,item:I},{default:r(()=>[m(G,{item:I,plain:""},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1})):j("",!0),m(M,{title:"Affects",groups:e(v)},{item:r(({item:I})=>[m(N,{item:I},{default:r(()=>[R(I)?(n(),k(ee,{key:0,item:I,plain:""},null,8,["item"])):B(I)?(n(),k(ce,{key:1,item:I,tier:1,plain:""},null,8,["item"])):(n(),k(A,{key:2,item:I},null,8,["item"]))]),_:2},1032,["item"])]),_:1},8,["groups"])]),_:1},8,["name","tagline","planner-url"])):j("",!0)}}}),Co=Object.assign(Oo,{__name:"W3DbSpaceSkill"}),To={class:"flex flex-col text-sm"},Do={key:1,class:"grow px-2 py-1"},Eo={class:"px-2 py-1 text-white/75 whitespace-nowrap"},Ao=ne({__name:"codex-parts",props:{parts:{},plain:{type:Boolean}},setup(t){return(s,c)=>{const l=re;return n(),_("div",To,[(n(!0),_(K,null,Q(t.parts,o=>(n(),_("div",{key:o.key,class:"flex justify-between gap-4 border-t border-white/10 first:border-t-0"},[!t.plain&&e(Pt)(o)?(n(),k(l,{key:0,item:{link:e(Pt)(o)},variant:"row",class:"grow px-2 py-1 text-yellow"},{default:r(()=>[Z(g(o.name),1)]),_:2},1032,["item"])):(n(),_("span",Do,g(o.name),1)),d("span",Eo," × "+g(o.quantity),1)]))),128))])}}}),Ot=Object.assign(Ao,{__name:"W3DbSpaceCodexParts"}),Lo={class:"flex flex-col items-center gap-3 w-full max-w-[384px]"},Io={class:"u-font-d text-4xl leading-none text-center"},Bo={class:"u-font-d text-xl text-white/50 text-center leading-none"},Mo={key:0,class:"u-font-d text-sm uppercase text-white/50 text-center"},No={class:"flex flex-col gap-4 w-full"},Ro={class:"flex justify-center"},qo={class:"overflow-x-auto"},Wo={class:"mx-auto text-sm"},Po={class:"text-xs uppercase u-font-d text-white/50"},Uo={key:0,scope:"col",class:"px-3 py-1 text-right"},Go={scope:"col",class:"px-3 py-1 text-right"},Fo={key:1,scope:"col",class:"px-3 py-1 text-right"},Ko={key:2,scope:"col",class:"px-3 py-1 text-left"},Vo={key:3,scope:"col",class:"px-3 py-1 text-left"},Ho=["onClick"],Yo={class:"px-1"},zo={scope:"row",class:"px-3 py-1 text-left font-normal"},Qo={class:"px-3 py-1 text-white/75"},Jo={class:"px-3 py-1"},Xo={key:0,class:"px-3 py-1 text-right whitespace-nowrap"},Zo={class:"px-3 py-1 text-right"},ei={class:"px-3 py-1 text-right whitespace-nowrap"},ti={key:1,class:"px-3 py-1 text-right"},si={key:2,class:"px-3 py-1 text-white/75"},ni={key:3,class:"px-3 py-1 text-white/50"},ai={class:"flex flex-wrap justify-center gap-4"},oi={class:"text-xs text-white/60"},ii={key:0},li={key:1},ri={class:"flex flex-col gap-4 items-center"},ci={class:"max-w-[640px] flex flex-col gap-1 text-sm"},di={class:"u-font-d uppercase text-green"},ui={key:0,class:"text-white/50"},mi={class:"flex flex-wrap justify-center gap-4"},_i=ne({__name:"gear-page",props:{subject:{},model:{},db:{}},setup(t){const s=t,c=i(()=>s.subject.$data),l=i(()=>ze(c.value)),o=i(()=>l.value[0]??s.subject.current),a=i(()=>T.last(l.value)??s.subject.current),u=i(()=>s.subject instanceof Ie?s.subject:void 0),h=i(()=>s.subject instanceof Ie?void 0:s.subject),y=i(()=>h.value?.isCrossbow?h.value:void 0),O=i(()=>s.subject.kind),b=i(()=>c.value.set?s.model.$db.sets[c.value.set]:void 0),S=i(()=>[...Je(s.model),...Be(s.model)].filter(C=>C.$data.set&&C.$data.set===c.value.set&&C.$data.id!==c.value.id)),W=i(()=>T.sortedUniq(l.value.map(C=>C.tier).sort((C,F)=>C-F))),L=i(()=>W.value.length>1),D=i(()=>l.value.some(C=>C.crafted)&&l.value.some(C=>!C.crafted)),V=i(()=>T.sortedUniq(l.value.filter(C=>!C.crafted).map(C=>C.quality).sort((C,F)=>C-F))),v=i(()=>h.value?.isSecondary?h.value.$data.type:void 0),B=i(()=>u.value?`${se} Armor`:y.value?`${se} Crossbow`:v.value?`${se} ${ns[v.value]}`:`${se} Sword`),R=i(()=>v.value?ns[v.value].toLowerCase():Ut[O.value]),Y=me(De(a.value));dn(()=>c.value.id,()=>Y.value=De(a.value));const p=i(()=>nn(c.value,Y.value)??a.value),$=C=>Y.value=De(C),H=i(()=>{const C=c.value.id,F=Y.value,J=O.value,de=!!u.value;return Xe(s.db,xe=>{(de?xe.char.armors.$slots:xe.char.weapons.$slots)[J]?.$pool?.find(We=>We.$data.id===C)?.$add({variant:F})})}),E=i(()=>Bs(u.value?s.model.$db.armors:s.model.$db.weapons,c.value.desc)),f=i(()=>fo(s.db.data.diagrams,s.subject)),w=C=>C.product.form?c.value.variants[C.product.form]:void 0,N=C=>{const F=w(C);return!!F&&De(F)===Y.value},U=i(()=>{const C=po(s.model,s.subject),F=u.value?.$data.weightClass;return!F||!C.length?[]:[{name:`${T.capitalize(F)} armor techniques`,items:C}]}),G=i(()=>go(s.model,s.subject)),ae=i(()=>{const C=u.value?.$data.weightClass,F=Gt(O.value)||O.value==="armor"?R.value:ft(R.value);return`More ${T.compact([C,F]).join(" ")}`}),ee=C=>C.price,ce=i(()=>l.value.some(C=>ee(C)!==void 0)),A=i(()=>l.value.some(C=>C.source&&C.source!=="base")),M=C=>{if(C.autogen){if(C.autogen.roll!=="range")return"varies";const[F,J]=qt(C,O.value);return F===J?`${F}`:`${F}–${J}`}return C.level?`${C.level}`:""},q=i(()=>l.value.some(C=>M(C))),I=i(()=>u.value?"armor":"damage"),te=C=>y.value?`${It(C.power??0,{signed:!0})} attack power`:C.autogen?`${C.value?`${C.value} + `:""}${C.autogen.base} + ${C.autogen.perLevel}/level`:C.value===void 0?"":`${C.value}`,oe=(C,F)=>on(C,ln(C,O.value,F)),le=i(()=>{const C=p.value;if(y.value)return{value:It(C.power??0,{signed:!0}),label:"attack power"};if(!u.value?.isMask){if(C.autogen){const[F,J]=qt(C,O.value),de=oe(C,F),xe=oe(C,J);return de===xe?{value:`${de}`,label:`${I.value} at item level ${F}`}:{value:`${de} to ${xe}`,label:`${I.value} from item level ${F} to ${J}`}}if(C.value!==void 0)return{value:`${C.value}`,label:C.level?`${I.value}, level ${C.level}`:I.value}}}),be=C=>Object.values(s.model.$db.upgrades).filter(C).length,$e=i(()=>{const C=c.value,F=o.value,J=Gt(O.value),de=J?"They":"It",xe=J?"Their":"Its",Ae=J?"have":"has",We=R.value,Me=T.compact([F.autogen&&"level-scaling",u.value?.$data.weightClass,We]).join(" "),Ct=b.value&&`#${T.kebabCase(`${b.value.name}
8 set`)}`,Pe=b.value&&P(`${b.value.name} set`,Wt("witcher-3","sets",b.value.id)),et=P("set bonuses",Ct),Ue=J?"belong":"belongs",tt=l.value.filter(he=>he.setBonusPiece),z=T.uniq(tt.map(he=>lt[he.tier]||"base")),Tt=u.value?"glyph":"rune",Dt=u.value?"glyphword":"runeword",Zt=l.value.map(he=>he.slots),Et=Math.min(...Zt),st=Math.max(...Zt),At=(u.value?O.value==="armor":!!h.value?.isSword)&&st>=3,Lt=s.model.$db.upgrades[an],es=Lt?.name?["and plain",P(Lt.name,Wt("witcher-3","upgrades",Lt.id)),"when none is"]:[],Hs=be(he=>he.kind==="oil"&&!!he.swords?.includes(O.value)),_t=a.value,Ys=u.value?.$data.weightClass,ts=U.value[0]?.items??[],ss=f.value.length===1?f.value[0]:void 0;return fe(X(x(qn(C.name),zs(J),J||O.value==="armor"?Me:Ge(Me),`in ${se}`,Fe(F.source)),b.value&&(b.value.bonuses.length?tt.length===l.value.length?x(de,Ue,"to the",Pe,"and",J?"count":"counts","toward its",et):tt.length?x(de,Ue,"to the",Pe,"and",J?"count":"counts","toward its",et,"at the",ue(z.map(he=>P(he,"#variants"))),"tier"):x(de,Ue,"to the",Pe,", but",J?"do":"does","not count toward its",et):x(de,Ue,"to the",Pe,", which has no set bonus")),y.value?x(`Its ${It(F.power??0,{signed:!0})} attack power multiplies the damage of the bolt it shoots`):F.autogen?x(xe,I.value,"scales with the level",J?"they drop":"it drops",`at: ${F.autogen.base} plus ${F.autogen.perLevel} per level`):F.value===void 0?void 0:L.value&&_t.value!==void 0?x(de,J?"give":u.value?"gives":"deals",F.value,I.value,"at the base tier and",_t.value,`at ${lt[_t.tier]}`):u.value?.isMask?x("It has no armor value and is worn in a quick access slot"):u.value?x(de,J?"give":"gives",F.value,"armor"):x("It deals",F.value,"damage"),Is(As(F.lines),"#stats",de,xe)),ts.length>0&&X(x("As",Ys,"armor",J?"they count":"it counts","as a piece toward",ue(ts.map(he=>P(he.$data.name,he.link)),"and"))),v.value?X(x("It is a secondary weapon: it takes the",P("steel sword",ge("weapons","Steel swords")),"slot and has no sockets, and it cannot be coated with an oil or enchanted with a runeword")):y.value?X(x("It shoots any of the",ie(be(he=>he.kind==="bolt"),"crossbow bolt",{link:ot("bolt")}),", one kind loaded at a time",es.length>0&&",",...es)):X(st>0?x(de,Ae,Et===st?ie(st,"socket"):`${Et} to ${st} sockets across its variants`,"for",P(u.value?"glyphs":"runestones",ot(Tt)),At&&`, or ${ht(Dt)}`,At&&P(Dt,ot(Dt)),At&&(Et>=3?"in place of all of them":"in place of all three where it has three")):x(de,Ae,"no sockets"),!!h.value?.isSword&&x("It can be coated with any of the",ie(Hs,"oil",{link:ot("oil")}),"made for",ft(We))),X(L.value&&x(de,J?"come":"comes","in",ie(W.value.length,"crafting tier",{link:"#variants"}),`, from ${o.value.name} to ${_t.name}`),D.value&&x(de,J?"drop":"drops","as loot and can be forged from",J?"their":"its",P("diagram",ss?Ne(ss):f.value.length?"#crafting":void 0),"with fixed figures"),V.value.length>1&&x(de,J?"drop":"drops","at",ue(V.value.map(he=>P(Rt[he]??"","#variants"))),"quality")))}),qe=i(()=>{const C=Ce($e.value);if(C)return`${C} Stats, sockets, and set bonuses.`});return Se(qe),(C,F)=>{const J=Tn,de=je,xe=ct,Ae=ke,We=ms,Me=re,Ct=Ot,Pe=Ye,et=xt,Ue=Ft,tt=Oe;return n(),k(tt,{name:t.subject.$data.name,tagline:e(B),seo:"","planner-url":e(H)},hs({intro:r(()=>[d("div",No,[e(E)?(n(),_("div",{key:0,class:Ke(["text-sm text-white/75 whitespace-pre-line",e(le)?"":"text-center"])},g(e(E)),3)):j("",!0),m(de,{paragraphs:e($e)},null,8,["paragraphs"])])]),builds:r(()=>[F[1]||(F[1]=Z(" Open the character build planner with this piece equipped and build the skills, mutagens and the rest of the loadout around it. ",-1))]),default:r(()=>[m(Ae,{title:"Stats"},{default:r(()=>[d("div",Ro,[m(xe,{item:t.subject,variant:e(Y),plain:"",onVariant:F[0]||(F[0]=z=>Y.value=z)},null,8,["item","variant"])])]),_:1}),e(l).length>1?(n(),k(Ae,{key:0,title:"Variants",interactive:""},{default:r(()=>[d("div",qo,[d("table",Wo,[d("thead",Po,[d("tr",null,[F[2]||(F[2]=d("th",{scope:"col"},[d("span",{class:"sr-only"},"Shown")],-1)),F[3]||(F[3]=d("th",{scope:"col",class:"px-3 py-1 text-left"},"Form",-1)),F[4]||(F[4]=d("th",{scope:"col",class:"px-3 py-1 text-left"},"Item",-1)),F[5]||(F[5]=d("th",{scope:"col",class:"px-3 py-1 text-left"},"Quality",-1)),e(q)?(n(),_("th",Uo,"Level")):j("",!0),F[6]||(F[6]=d("th",{scope:"col",class:"px-3 py-1 text-right"},"Sockets",-1)),d("th",Go,g(e(y)?"Attack power":e(I)),1),e(ce)?(n(),_("th",Fo,"Price")):j("",!0),e(A)?(n(),_("th",Ko,"Source")):j("",!0),e(b)?(n(),_("th",Vo,"Set bonus")):j("",!0)])]),d("tbody",null,[(n(!0),_(K,null,Q(e(l),z=>(n(),_("tr",{key:z.form,class:Ke(["border-t border-white/10 cursor-pointer u-transition",e(De)(z)===e(Y)?"bg-white/10":"dt:hover:bg-white/5"]),onClick:Tt=>$(z)},[d("td",Yo,[m(We,{name:`select-form:${z.form}`,selected:e(De)(z)===e(Y),onClick:un(Tt=>$(z),["stop"])},null,8,["name","selected","onClick"])]),d("th",zo,g(z.label),1),d("td",Qo,g(z.name),1),d("td",Jo,g(e(Rt)[z.quality]),1),e(q)?(n(),_("td",Xo,g(M(z)),1
8)):j("",!0),d("td",Zo,g(z.slots),1),d("td",ei,g(te(z)),1),e(ce)?(n(),_("td",ti,g(ee(z)??""),1)):j("",!0),e(A)?(n(),_("td",si,g(e(Ts)(z.source)),1)):j("",!0),e(b)?(n(),_("td",ni,g(z.setBonusPiece?"counts":"no"),1)):j("",!0)],10,Ho))),128))])])])]),_:1})):j("",!0),e(f).length?(n(),k(Ae,{key:1,title:"Crafting"},{default:r(()=>[d("div",ai,[(n(!0),_(K,null,Q(e(f),z=>(n(),_("div",{key:z.id,class:Ke(["w-full max-w-[320px] flex flex-col gap-2 border-2 rounded p-3",N(z)?"border-white/50":"border-white/15"])},[m(Me,{item:{link:e(Ne)(z)},variant:"row",class:"u-font-d uppercase text-yellow"},{default:r(()=>[Z(g(z.name),1)]),_:2},1032,["item"]),d("div",oi,[w(z)?(n(),_("span",ii,g(w(z)?.label)+" · ",1)):j("",!0),Z(" "+g(z.craftsmanLevel)+" "+g(z.craftsman.toLowerCase()),1),z.fee?(n(),_("span",li," · "+g(z.fee)+" crowns",1)):j("",!0)]),m(Ct,{parts:z.ingredients},null,8,["parts"])],2))),128))])]),_:1})):j("",!0),e(b)?(n(),k(Ae,{key:2,title:`${e(b).name} set`},{default:r(()=>[d("div",ri,[d("div",ci,[(n(!0),_(K,null,Q(e(b).bonuses,z=>(n(),_("div",{key:z.pieces},[d("span",di,g(z.pieces)+" pieces:",1),Z(" "+g(e(Ms)(z,e(bs)(t.model,e(b).id))),1)]))),128)),e(b).bonuses.length?j("",!0):(n(),_("div",ui," No set bonus. "))]),d("div",mi,[(n(!0),_(K,null,Q(e(S),z=>(n(),k(Me,{key:z.$data.id,item:z},{default:r(()=>[m(xe,{item:z,plain:""},null,8,["item"])]),_:2},1032,["item"]))),128))])])]),_:1},8,["title"])):j("",!0),m(et,{title:"Boosted by",groups:e(U)},{item:r(({item:z})=>[m(Me,{item:z},{default:r(()=>[m(Pe,{item:z,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["groups"]),m(Ue,{items:e(G),title:e(ae)},{item:r(({item:z})=>[m(Me,{item:z},{default:r(()=>[m(xe,{item:z,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["items","title"])]),_:2},[e(le)?{name:"aside",fn:r(()=>[d("div",Lo,[m(J,{item:t.subject,variant:e(p),size:"lg"},null,8,["item","variant"]),d("div",Io,g(e(le).value),1),d("div",Bo,g(e(le).label),1),e(l).length>1?(n(),_("div",Mo,g(e(p).label),1)):j("",!0)])]),key:"0"}:void 0]),1032,["name","tagline","planner-url"])}}}),Vs=Object.assign(_i,{__name:"W3DbSpaceGearPage"}),pi=ne({__name:"weapon",props:{db:{}},setup(t){const s=t,{id:c}=ye().params,{model:l}=pe(_e,s.db,me(void 0)),o=i(()=>Je(l.value).find(a=>a.$data.id===c));return(a,u)=>{const h=Vs;return e(o)?(n(),k(h,{key:0,subject:e(o),model:e(l),db:t.db},null,8,["subject","model","db"])):j("",!0)}}}),hi=Object.assign(pi,{__name:"W3DbSpaceWeapon"}),fi=ne({__name:"armor",props:{db:{}},setup(t){const s=t,{id:c}=ye().params,{model:l}=pe(_e,s.db,me(void 0)),o=i(()=>Be(l.value).find(a=>a.$data.id===c));return(a,u)=>{const h=Vs;return e(o)?(n(),k(h,{key:0,subject:e(o),model:e(l),db:t.db},null,8,["subject","model","db"])):j("",!0)}}}),gi=Object.assign(fi,{__name:"W3DbSpaceArmor"}),vi={class:"w-full max-w-2xl mx-auto flex flex-col gap-3"},bi={class:"u-font-d uppercase text-white/50 dt:w-40 dt:shrink-0 dt:text-right"},xi={class:"flex flex-wrap gap-x-4 gap-y-1"},$i=ne({__name:"linked-groups",props:{groups:{}},setup(t){return(s,c)=>{const l=re;return n(),_("div",vi,[(n(!0),_(K,null,Q(t.groups,o=>(n(),_("div",{key:o.name,class:"flex flex-col dt:flex-row gap-1 dt:gap-4"},[d("div",bi,g(o.name),1),d("div",xi,[(n(!0),_(K,null,Q(o.items,a=>(n(),k(l,{key:a.link,item:a,variant:"row",class:"text-yellow"},{default:r(()=>[Z(g(a.name),1)]),_:2},1032,["item"]))),128))])]))),128))])}}}),Xt=Object.assign($i,{__name:"W3CodexLinkedGroups"}),yi={class:"flex flex-col gap-4 w-full"},wi={key:0,class:"opacity-75 text-center dt:text-left"},ki={class:"w-full max-w-md mx-auto flex flex-col text-sm"},Si={class:"w-full max-w-md mx-auto flex flex-col gap-2"},ji={key:0,class:"px-2 text-sm text-white/75"},Oi={class:"flex flex-wrap justify-center gap-6"},Ci={key:0,class:"px-2 text-sm text-white/75"},Ti={class:"w-full max-w-2xl mx-auto flex flex-col gap-3"},Di={class:"u-font-d uppercase text-white/50 dt:w-40 dt:shrink-0 dt:text-right"},Ei={class:"flex flex-wrap gap-x-4 gap-y-1"},Ai={class:"w-full max-w-md mx-auto flex flex-col text-sm"},Li={class:"text-white/50"},Ii=ne({__name:"upgrade",props:{db:{}},setup(t){const s=t,c=ye().params.id,{model:l}=pe(_e,s.db,me(void 0)),o=i(()=>fs(l.value)),a=i(()=>o.value.find(f=>f.$data.id===c)),u=i(()=>Object.values(s.db.data.weapons).filter(f=>f.kind!=="crossbow")),h=i(()=>Object.values(s.db.data.weapons).filter(f=>f.kind==="crossbow")),y=i(()=>Object.values(s.db.data.armors)),O=f=>{const w=f.$data;if(w.kind==="oil")return`oil:${f.oilTarget?.type??w.id}`;if(w.kind==="rune"||w.kind==="glyph")return`${w.kind}:${w.name.replace(/^(Lesser|Greater) /,"")}`},b={lesser:0,normal:1,greater:2},S=i(()=>{const f=a.value;if(!f)return[];const w=O(f);return w?T.sortBy(o.value.filter(N=>N!==f&&O(N)===w),N=>b[String(N.$data.tier)]??Number(N.$data.tier)):[]}),W=i(()=>T.keyBy(o.value,f=>f.$data.id)),L=i(()=>(a.value?.usedFor??[]).flatMap(f=>W.value[f.id]??[])),D=i(()=>As(a.value?.$data.lines)),V=i(()=>Us(s.db,"upgrades",c)),v=i(()=>Ps(s.db,"upgrades",[c])),B=i(()=>{const f=a.value;return f?.kind!=="oil"?[]:jt(s.db,"upgrades",[f.$data.id,...S.value.map(w=>w.$data.id)])}),R=i(()=>o.value.filter(f=>f.kind===a.value?.kind&&f!==a.value)),Y=i(()=>{const f=a.value;if(!f)return;let w=!1;const N=Xe(s.db,U=>w=mo(U,f.$data));return w?N:void 0}),p=i(()=>{const f=a.value;if(f?.ingredients.length)return x("Applying it uses up",ue(f.ingredients.map(w=>P(w.quantity>1?`${w.quantity} ${ft(w.name)}`:Ge(w.name),W.value[w.id]?.link))),!!f.$data.fee&&`and costs ${f.$data.fee} crowns`)}),$=i(()=>
8{if(L.value.length)return x("The Runewright uses it up for the",ue(L.value.map(f=>P(`${f.$data.name} ${f.kind}`,f.link)),"or"))}),H=i(()=>{const f=a.value;if(!f)return[];const w=f.$data,N=ot(w.kind),U=`in ${se}`,G=typeof w.tier=="string"&&w.tier!=="normal"?w.tier:void 0,ae=()=>{switch(w.kind){case"rune":case"glyph":{const A=`${G?`${G} `:""}${w.kind==="rune"?"runestone":"glyph"}`;return[x(Ve(w.name),"is",ht(A),P(A,N),U,Fe(w.source)),w.kind==="rune"?x("It fills one socket of a",P("steel",nt("steel")),"or",P("silver sword",nt("silver")),`; ${u.value.filter(M=>Object.values(M.variants).some(q=>q.slots>0)).length} of the swords have sockets to take it`):x("It fills one socket of any",P("armor piece",ge("armor")),`; ${y.value.filter(M=>Object.values(M.variants).some(q=>q.slots>0)).length} of the armor pieces have sockets to take it`)]}case"oil":{const A=typeof w.tier=="number"&&w.tier>1?`tier ${w.tier}`:"";return[x(w.name,"is",ht(A||"oil"),A,P("oil",N),U,Fe(w.source)),x("It coats a",ue((w.swords??[]).map(M=>P(`${M} sword`,nt(M))),"or"),!!w.charges&&`, and its ${w.charges} charges wear off with hits`)]}case"bolt":{const A=!/bolt$/i.test(w.name),M=Object.entries(w.damage??{}).filter(([,q])=>q).map(([q,I])=>`${I} ${q}`);return[x(A?w.name:Ve(w.name),A?"are plain":"is a",P(A?"crossbow bolts":"crossbow bolt",N),U,Fe(w.source),...M.length?["dealing",ve(M),"damage"]:[]),x(A?"They load":"It loads","in any of the",ie(h.value.length,"crossbow",{link:nt("crossbow")}),", one kind at a time")]}case"effect":{const A=Object.entries(w.pools??{}),M=le=>le==="steel"||le==="silver"||le==="crossbow"?nt(le):os(le),q=le=>le==="armor"||Gt(le)?Ut[le]:ft(Ut[le]),I=le=>ue(A.filter(([,be])=>be===le).map(([be])=>P(q(be),M(be)))),te=I("masterwork"),oe=I("magical");return[x(w.name,"is a",P("random effect",N),`${U}: a Master drop rolls one effect from its Master pool, a Magic drop two from either pool`),x(te.length>0&&"It sits in the Master pool of",...te,te.length>0&&oe.length>0&&"and in the Magic pool of",te.length===0&&"It sits in the Magic pool of",...oe)]}case"runeword":case"glyphword":{const A=x(w.name,`is a level ${w.tier}`,P(w.kind,N),U,Fe(w.source));if(w.kind==="runeword"){const q=u.value.filter(I=>Object.values(I.variants).some(te=>te.slots>=at)).length;return[A,x(`The Runewright applies it to a sword with ${at} sockets, in place of its runestones;`,ie(q,"sword",{link:ge("weapons")}),"qualify")]}const M=y.value.filter(q=>q.kind==="armor"&&Object.values(q.variants).some(I=>I.slots>=at)).length;return[A,x(`The Runewright applies it to chest armor with ${at} sockets, in place of its glyphs;`,ie(M,"chest piece",{link:os("armor")}),"qualify")]}}},[ee,ce]=ae();return fe(X(ee,Is(D.value,"#stats")),X(ce,p.value),X(f.hasNoBonus&&x("It gives no bonus in a socket"),$.value),X(Es(S.value.map(A=>P(A.$data.name,A.link)))))}),E=i(()=>{const f=Ce(H.value);if(f)return`${f} Stats and what it fits.`});return Se(E),(f,w)=>{const N=Os,U=je,G=ke,ae=Ot,ee=re,ce=Xt,A=Ft,M=Oe;return e(a)?(n(),k(M,{key:0,name:e(a).$data.name,tagline:`${e(se)} ${e(hn)[e(a).kind]}`,"planner-url":e(Y)},{aside:r(()=>[m(N,{item:e(a),plain:""},null,8,["item"])]),intro:r(()=>[d("div",yi,[e(a).$data.desc?(n(),_("div",wi,g(e(a).$data.desc),1)):j("",!0),m(U,{paragraphs:e(H)},null,8,["paragraphs"])])]),builds:r(()=>[Z(" Open the character build planner with this upgrade "+g(e(a).kind==="oil"?"on a sword":e(a).kind==="bolt"?"loaded in a crossbow":e(a).kind==="effect"?"rolled on a piece of gear":"socketed in gear")+" it fits, and build the rest of the loadout around it. ",1)]),default:r(()=>[e(D).length?(n(),k(G,{key:0,title:"Stats"},{default:r(()=>[d("div",ki,[(n(!0),_(K,null,Q(e(D),q=>(n(),_("div",{key:q.attr,class:"px-2 py-1 border-t border-white/10 first:border-t-0"},g(e(Ls)(q)),1))),128))])]),_:1})):j("",!0),e(a).ingredients.length?(n(),k(G,{key:1,title:"Recipe"},{default:r(()=>[d("div",Si,[m(ae,{parts:e(a).ingredients},null,8,["parts"]),e(a).$data.fee?(n(),_("div",ji," Runewright's fee: "+g(e(a).$data.fee)+" crowns ",1)):j("",!0)])]),_:1})):j("",!0),e(V).length?(n(),k(G,{key:2,title:"Made from"},{default:r(()=>[d("div",Oi,[(n(!0),_(K,null,Q(e(V),q=>(n(),_("div",{key:q.id,class:"w-full max-w-[360px] flex flex-col gap-1"},[m(ee,{item:{link:e(Ne)(q)},variant:"row",class:"px-2 py-1 text-yellow u-font-d uppercase"},{default:r(()=>[Z(g(q.name),1)]),_:2},1032,["item"]),m(ae,{parts:q.ingredients},null,8,["parts"]),e(kt)(q)?(n(),_("div",Ci,[Z(g(q.craftsmanLevel)+" "+g(q.craftsman.toLowerCase()),1),q.fee?(n(),_(K,{key:0},[Z(", "+g(q.fee)+" crowns",1)],64)):j("",!0)])):j("",!0)]))),128))])]),_:1})):j("",!0),e(v).length?(n(),k(G,{key:3,title:"Dropped by"},{default:r(()=>[m(ce,{groups:e(v)},null,8,["groups"])]),_:1})):j("",!0),e(B).length?(n(),k(G,{key:4,title:"Effective against"},{default:r(()=>[d("div",Ti,[(n(!0),_(K,null,Q(e(B),q=>(n(),_("div",{key:q.name,class:"flex flex-col dt:flex-row gap-1 dt:gap-4"},[d("div",Di,g(q.name),1),d("div",Ei,[(n(!0),_(K,null,Q(q.items,I=>(n(),k(ee,{key:I.link,item:I,variant:"row",class:"text-yellow"},{default:r(()=>[Z(g(I.name),1)]),_:2},1032,["item"]))),128))])]))),128))])]),_:1})):j("",!0),e(L).length?(n(),k(G,{key:5,title:"Used for"},{default:r(()=>[d("div",Ai,[(n(!0),_(K,null,Q(e(L),q=>(n(),k(ee,{key:q.$data.id,item:q,variant:"row",class:"px-2 py-1 text-yellow border-t border-white/10 first:border-t-0"},{default:r(()=>[Z(g(q.$data.name)+" ",1),d("span",Li,g(q.kind),1)]),_:2},1032,["item"]))),128))])]),_:1})):j("",!0),m(A,{items:e(R),title:`More ${e(vt)[e(a).kind].toLowerCase()}`},{item:r(({item:q})=>[m(ee,{item:q},{default:r(()=>[m(N,{item:q,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["items","title"])]),_:1},8,["name","tagline","planner-url"])):j("",!0)}}}),Bi=Object.assign(Ii,{__name:"W3DbSpaceUpgrade"}),Mi={class:"flex flex-col gap-4 w-full"},Ni={key:0,class:"opacity-75 text-center dt:text-left"},Ri={class:"w-full max-w-2xl mx-auto flex flex-col"},qi={class:"flex flex-col gap-1 min-w-0"},Wi={class:"flex flex-wrap items-baseline gap-x-3"},Pi={class:"u-font-d uppercase"},Ui={class:"text-sm text-green"},Gi={class:"text-sm text-white/75"}
8,Fi={key:0,class:"text-sm text-white/75"},Ki={key:0,class:"text-sm opacity-75"},Vi={class:"flex flex-wrap justify-center gap-6"},Hi={key:0,class:"px-2 text-sm text-white/50"},Yi={key:1,class:"px-2 text-sm text-white/75"},zi={class:"w-full max-w-2xl mx-auto flex flex-col gap-3"},Qi={class:"u-font-d uppercase text-white/50 dt:w-40 dt:shrink-0 dt:text-right"},Ji={class:"flex flex-wrap gap-x-4 gap-y-1"},Xi=ne({__name:"consumable",props:{db:{}},setup(t){const s=t,c=ye().params.id,{model:l}=pe(_e,s.db,me(void 0)),o=i(()=>Vt(l.value)),a=i(()=>o.value.find(p=>p.$data.id===c)),u=i(()=>a.value?.kind==="potion"?"Potion":"Decoction"),h=i(()=>{const p=a.value;return p?p.$selected?p.tier.value:p.maxTier:1}),y=p=>{const $=a.value;$&&($.$selected&&$.tier.value===p?$.$remove():$.setTier(p))},O=p=>a.value?.kind==="potion"&&p.charges?`${p.charges} ${p.charges===1?"dose":"doses"}`:void 0,b=i(()=>Us(s.db,"consumables",c)),S=p=>p?a.value?.$data.tiers[p-1]?.name:void 0,W=i(()=>jt(s.db,"consumables",[c])),L=i(()=>a.value?.kind==="decoction"?[{name:"Skills",items:ao(l.value)}]:[]),D=i(()=>o.value.filter(p=>p.kind===a.value?.kind&&p!==a.value)),V=i(()=>Fs(s.db,"alchemy",1)[0]),v=i(()=>Xe(s.db,p=>uo(p,c,h.value))),B=i(()=>{const p=a.value;if(!p||!p.$data.passive)return[];const $=p.$data.tiers[p.$data.tiers.length-1];return js($?.attrs,[],1,{global:!0}).map(H=>{const{value:E,label:f}=Gs(H);return`${E} ${f.toLowerCase()}`})}),R=i(()=>{const p=a.value;if(!p)return[];const $=p.$data,H=$.tiers,E=H[0],f=H[H.length-1],w=$.kind==="potion",N=E.toxicity===f.toxicity?`${E.toxicity} toxicity`:`${E.toxicity} to ${f.toxicity} toxicity`,U=E.duration===f.duration?Le(E.duration):`${Le(E.duration)} at base and ${Le(f.duration)} at the top tier`,G=E.charges===f.charges?ie(E.charges,"charge"):`${E.charges} to ${f.charges} charges`,ae=H.length>1?["with",ie(H.length,"tier",{link:"#tiers"}),":",ve(H.map(ce=>ce.name))]:[],ee=B.value;return fe(X(x($.name,"is a",P(w?"potion":"decoction",Rn($.kind)),`in ${se}`,...ae),w?x("It spends",N,"while it runs, for",U,", and carries",G):x("It locks",N,"for",U,"and carries",G)),X(ee.length?x(H.length>1?"At its top tier it adds":"It adds",ve(ee),"while active"):$.passive?void 0:x("Its effect is conditional rather than a flat stat, so it does not show up in the character numbers"),x(w?"Like every potion it counts toward the toxicity maximum only while it runs":"Like every decoction it holds its toxicity for the whole duration",", and everything active must stay under the toxicity maximum"),V.value&&x("Every level of a slotted",P("Alchemy",He("alchemy")),"skill adds",V.value.value,V.value.label.toLowerCase())))}),Y=i(()=>{const p=Ce(R.value);if(p)return`${p} Toxicity, duration, and charges per tier.`});return Se(Y),(p,$)=>{const H=Ht,E=je,f=ms,w=ke,N=re,U=Ot,G=Ye,ae=xt,ee=Ft,ce=Oe;return e(a)?(n(),k(ce,{key:0,name:e(a).$data.name,tagline:`${e(se)} ${e(u)}`,"planner-url":e(v)},{aside:r(()=>[m(H,{item:e(a),tier:e(h),plain:""},null,8,["item","tier"])]),intro:r(()=>[d("div",Mi,[e(a).$data.desc?(n(),_("div",Ni,g(e(a).$data.desc),1)):j("",!0),m(E,{paragraphs:e(R)},null,8,["paragraphs"])])]),builds:r(()=>[Z(" Open the character build planner with this "+g(e(u).toLowerCase())+" active",1),e(a).maxTier>1?(n(),_(K,{key:0},[Z(" at the tier picked below")],64)):j("",!0),$[0]||($[0]=Z(" and fit the rest of the alchemy loadout under the toxicity cap. ",-1))]),default:r(()=>[e(a).maxTier>1?(n(),k(w,{key:0,title:"Tiers",interactive:"Pick a tier to see it on the card and in the planner link."},{default:r(()=>[d("div",Ri,[(n(!0),_(K,null,Q(e(a).$data.tiers,(A,M)=>(n(),_("div",{key:A.key,class:"flex gap-3 items-start py-2 border-t border-white/10 first:border-t-0"},[m(f,{name:`select-consumables:${e(a).$data.id}:${M+1}`,selected:!!e(a).$selected&&e(a).tier.value===M+1,label:M+1,onClick:q=>y(M+1)},null,8,["name","selected","label","onClick"]),d("div",qi,[d("div",Wi,[d("span",Pi,g(A.name),1),d("span",Ui,g(A.toxicity)+" toxicity",1),d("span",Gi,g(e(Le)(A.duration)),1),O(A)?(n(),_("span",Fi,g(O(A)),1)):j("",!0)]),A.desc?(n(),_("div",Ki,g(A.desc),1)):j("",!0)])]))),128))])]),_:1})):j("",!0),e(b).length?(n(),k(w,{key:1,title:"Made from"},{default:r(()=>[d("div",Vi,[(n(!0),_(K,null,Q(e(b),A=>(n(),_("div",{key:A.id,class:"w-full max-w-[360px] flex flex-col gap-1"},[m(N,{item:{link:e(Ne)(A)},variant:"row",class:"px-2 py-1 text-yellow u-font-d uppercase"},{default:r(()=>[Z(g(A.name),1)]),_:2},1032,["item"]),S(A.product.tier)?(n(),_("div",Hi," Makes "+g(S(A.product.tier)),1)):j("",!0),m(U,{parts:A.ingredients},null,8,["parts"]),e(kt)(A)?(n(),_("div",Yi,[Z(g(A.craftsmanLevel)+" "+g(A.craftsman.toLowerCase()),1),A.fee?(n(),_(K,{key:0},[Z(", "+g(A.fee)+" crowns",1)],64)):j("",!0)])):j("",!0)]))),128))])]),_:1})):j("",!0),e(W).length?(n(),k(w,{key:2,title:"Effective against"},{default:r(()=>[d("div",zi,[(n(!0),_(K,null,Q(e(W),A=>(n(),_("div",{key:A.name,class:"flex flex-col dt:flex-row gap-1 dt:gap-4"},[d("div",Qi,g(A.name),1),d("div",Ji,[(n(!0),_(K,null,Q(A.items,M=>
8(n(),k(N,{key:M.link,item:M,variant:"row",class:"text-yellow"},{default:r(()=>[Z(g(M.name),1)]),_:2},1032,["item"]))),128))])]))),128))])]),_:1})):j("",!0),m(ae,{title:"Boosted by",groups:e(L)},{item:r(({item:A})=>[m(N,{item:A},{default:r(()=>[m(G,{item:A,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["groups"]),m(ee,{items:e(D),title:e(a).kind==="potion"?"More potions":"More decoctions"},{item:r(({item:A})=>[m(N,{item:A},{default:r(()=>[m(H,{item:A,tier:1,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["items","title"])]),_:1},8,["name","tagline","planner-url"])):j("",!0)}}}),Zi=Object.assign(Xi,{__name:"W3DbSpaceConsumable"}),el={class:"flex flex-col items-center gap-2 shrink-0 max-w-full"},tl={class:"max-w-full overflow-x-auto rounded border-2 border-white/30 bg-black/40 p-3"},sl={class:"flex gap-3 flex-col items-center dt:items-start min-w-0"},nl={class:"opacity-75 text-center dt:text-left max-w-[640px]"},al={class:"flex gap-2"},ol={class:"flex justify-center"},il={class:"flex flex-wrap justify-center gap-4"},ll={class:"flex flex-wrap justify-center gap-4"},rl=ne({__name:"mutation",props:{db:{}},setup(t){const s=t,{id:c}=ye().params,{model:l}=pe(_e,s.db,me(void 0),{imprint:vs(s.db,L=>L.char.mutationPool.find(D=>D.$data.id===c)?.research())}),o=i(()=>yt(l.value)),a=i(()=>o.value.find(L=>L.$data.id===c)),u=i(()=>(a.value?.$data.reqs??[]).map(L=>o.value.find(D=>D.$data.id===L)).filter(L=>!!L)),h=i(()=>o.value.filter(L=>(L.$data.reqs??[]).includes(c))),y=i(()=>wt(l.value).filter(L=>L.$data.tier==="greater")),O=i(()=>(s.db.data.leveling.geralt?.skillSlots??[]).map(L=>L.mutations).filter(L=>typeof L=="number")),b=i(()=>{const L=a.value;if(!L)return[];const D=L.$data,V=rt.filter(p=>D.colors.includes(p)),v=rt.filter(p=>D.cost[p]>0).map(p=>{const $=y.value.find(H=>H.color===p);return $?ie(D.cost[p],$.$data.name,{link:$.link}):ie(D.cost[p],`greater ${p} mutagen`)});D.cost.skillPoints&&v.push(ie(D.cost.skillPoints,"skill point"));const B=h.value.map(p=>P(p.$data.name,p.link)),R=Kt.filter(p=>{const $=$t[p];return $&&V.includes($)}),Y=O.value;return fe(X(x(D.name,"is a",ve(V),`mutation in ${se}, added in the Blood and Wine expansion`),x("Researching it costs",ue(v))),X(x("It needs",u.value.length?ue(u.value.map(p=>P(p.$data.name,p.link))):"no other mutation","researched first",B.length>0&&", and unlocks",B.length>0&&ue(B)),x("While it is active, the Strengthened Synapses slots take",ue(R.map(p=>P(Re[p].name,He(p)))),"skills only",Y.length>0&&"; those slots open at",Y.length>0&&ve(Y.map(String)),Y.length>0&&"researched mutations")))}),S=i(()=>Xe(s.db,L=>ro(L,c))),W=i(()=>{const L=Ce(b.value);if(L)return`${L} Effect, research cost, and the mutations around it.`});return Se(W),(L,D)=>{const V=On,v=re,B=je,R=Cs,Y=ke,p=Oe;
8return e(a)?(n(),k(p,{key:0,name:e(a).$data.name,tagline:`${e(se)} Mutation`,seo:"",details:"","planner-url":e(S)},{aside:r(()=>[d("div",el,[d("div",tl,[m(V,{items:e(o),layout:e(Cn),active:e(a),mini:"",links:""},null,8,["items","layout","active"])]),m(v,{item:{link:"/witcher-3/db/mutations"},class:"u-font-d text-sm text-white/75 uppercase"},{default:r(()=>[...D[0]||(D[0]=[Z(" All mutations ",-1)])]),_:1})])]),intro:r(()=>[d("div",sl,[d("div",nl,g(e(a).$data.desc),1),d("div",al,[(n(!0),_(K,null,Q(e(a).$data.colors,$=>(n(),_("div",{key:$,class:Ke(["u-font-c px-2 py-0.5 text-sm leading-none rounded-sm uppercase border",[e(gt)[$].ink,e(gt)[$].border]])},g($),3))),128))]),m(B,{paragraphs:e(b),class:"w-full max-w-[640px] mt-2"},null,8,["paragraphs"])])]),builds:r(()=>[...D[1]||(D[1]=[Z(" Open the character build planner with this mutation researched and active, its prerequisites included, and plan the skills its Strengthened Synapses slots take. ",-1)])]),default:r(()=>[m(Y,{title:"Research"},{default:r(()=>[d("div",ol,[m(R,{item:e(a),plain:""},null,8,["item"])])]),_:1}),e(u).length?(n(),k(Y,{key:0,title:"Requires"},{default:r(()=>[d("div",il,[(n(!0),_(K,null,Q(e(u),$=>(n(),k(v,{key:$.$data.id,item:$},{default:r(()=>[m(R,{item:$,plain:""},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1})):j("",!0),e(h).length?(n(),k(Y,{key:1,title:"Leads to"},{default:r(()=>[d("div",ll,[(n(!0),_(K,null,Q(e(h),$=>(n(),k(v,{key:$.$data.id,item:$},{default:r(()=>[m(R,{item:$,plain:""},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1})):j("",!0)]),_:1},8,["name","tagline","planner-url"])):j("",!0)}}}),cl=Object.assign(rl,{__name:"W3DbSpaceMutation"}),dl={class:"flex flex-col gap-4 w-full"},ul={class:"u-font-d text-4xl text-center leading-none text-yellow"},ml=ne({__name:"mutagen",props:{db:{}},setup(t){const s=t,{id:c}=ye().params,{model:l}=pe(_e,s.db,me(void 0)),o=i(()=>wt(l.value)),a=i(()=>o.value.find(v=>v.$data.id===c)),u=["lesser","normal","greater"],h=i(()=>T.sortBy(o.value.filter(v=>v.color===a.value?.color&&v!==a.value),v=>u.indexOf(v.$data.tier))),y=i(()=>Kt.find(v=>$t[v]===a.value?.color)),O=i(()=>(s.db.data.leveling.geralt?.mutagenSlots??[]).map(v=>v.points)),b=i(()=>s.db.data.skills[_s]),S=i(()=>{const v=a.value;return v?.$data.tier==="greater"?yt(l.value).filter(B=>B.$data.cost[v.color]>0):[]}),W=i(()=>{const v=a.value,B=y.value;if(!v||!B)return[];const{colour:R,synergy:Y}=io(l.value,v);return[{name:`${Re[B].name} skills`,items:R},{name:"Synergy",items:Y}]}),L=i(()=>Xe(s.db,v=>co(v,c))),D=i(()=>{const v=a.value;if(!v)return[];const B=v.$data,R=y.value,Y=O.value,p=S.value.map($=>P($.$data.name,$.link));return fe(X(x(Ve(B.name),"is the",B.tier==="normal"?"standard":B.tier,"tier of",B.color,`mutagen in ${se}`),x(`Slotted in a skill group it adds ${v.baseText}, once for itself and once more for every`,R?P(Re[R].name,He(R)):B.color,"skill equipped in that group"),Y.length>0&&x("The",Y.length,"mutagen slots open at",ve(Y.map(String)),"ability points acquired")),X(b.value?.name?x("The",P(b.value.name,Wt("witcher-3","skills",b.value.id)),"skill adds a sixth of that linked total per level"):void 0,x("Greater mutagens also pay for mutation research:",pt(p,{noun:"mutation",section:"/witcher-3/db/mutations"}),p.length===1?"spends":"spend",B.color,"ones")),X(Es(h.value.map($=>P($.$data.name,$.link)))))}),V=i(()=>{const v=Ce(D.value);if(v)return`${v} The bonus and how it stacks.`});return Se(V),(v,B)=>{const R=Yt,Y=je,p=Ye,$=re,H=xt,E=Oe;return e(a)?(n(),k(E,{key:0,name:e(a).$data.name,tagline:`${e(se)} Mutagen`,seo:"",details:"","planner-url":e(L)},{aside:r(()=>[m(R,{item:e(a)},null,8,["item"])]),intro:r(()=>[d("div",dl,[d("div",ul,g(e(a).baseText),1),m(Y,{paragraphs:e(D)},null,8,["paragraphs"])])]),builds:r(()=>[...B[0]||(B[0]=[Z(" Open the character build planner with this mutagen in the first skill group and line up the skills of its colour around it. ",-1)])]),default:r(()=>[m(H,{title:"Boosted by",groups:e(W)},{item:r(({item:f})=>[m($,{item:f},{default:r(()=>[m(p,{item:f,plain:""},null,8,["item"])]),_:2},1032,["item"])]),_:1},8,["groups"])]),_:1},8,["name","tagline","planner-url"])):j("",!0)}}}),_l=Object.assign(ml,{__name:"W3DbSpaceMutagen"}),pl={class:"max-w-[640px] mx-auto flex flex-col gap-2 text-sm"},hl={class:"u-font-d uppercase text-green"},fl={key:0,class:"text-white/50"},gl={class:"flex flex-wrap justify-center gap-4"},vl=ne({__name:"set",props:{db:{}},setup(t){const s=t,{id:c}=ye().params,{model:l}=pe(_e,s.db,me(void 0)),o=i(()=>gs(l.value).find(b=>b.id===c)),a=i(()=>T.sortBy([...Je(l.value),...Be(l.value)].filter(b=>b.$data.set===c),b=>b.$data.name)),u={steel:["steel sword","steel swords"],silver:["silver sword","silver swords"],crossbow:["crossbow","crossbows"],armor:["chest piece","chest pieces"],gloves:["pair of gauntlets","pairs of gauntlets"],pants:["pair of trousers","pairs of trousers"],boots:["pair of boots","pairs of boots"]},h=Object.keys(u),y=i(()=>{const b=o.value;if(!b)return[];const S=a.value,W=S.flatMap(f=>ze(f.$data).map(w=>({v:w,g:f}))),L=T.uniq(W.map(({v:f})=>f.source)),D=L.length===1?Fe(L[0]):"",V=T.countBy(S,f=>f.kind),v=h.filter(f=>V[f]).map(f=>{const w=V[f]??0,[N,U]=u[f]??[f,f];return`${w===1?"one":w} ${Mt(w,N,U)}`}),B=T.uniq(W.map(({v:f})=>f.tier)).sort((f,w)=>f-w),R=lt[T.last(B)??1],Y=S.length?[`${D?", ":""}with`,ie(S.length,"piece",{link:"#pieces"}),":",ve(v)]:[],p=W.filter(({v:f})=>f.setBonusPiece),$=T.uniq(p.map(({v:f})=>f.tier)),H=$.length===1?lt[$[0]??1]:void 0,E=p.length===W.length;return fe(X(x(`The ${b.name} set is a witcher gear set in ${se}`,D,...Y,B.length>1&&!!R&&`, across ${B.length} tiers from base to ${R}`)),X(b.bonuses.length?x("It has",ie(b.bonuses.length,"set bonus",{link:"#bonuses"}),", unlocked at",ve(b.bonuses.map(f=>`${f.pieces}`)),"worn bonus pieces"):x("It has no set bonus: its pieces are worn for their own stats"),b.bonuses.length>0&&(p.length<=3?x("The pieces that count are",ue(p.map(({v:f,g:w})=>P(f.name,w.link)))):x(E&&"All",P(`${p.length} of its pieces`,"#pieces"),"count toward",b.bonuses.length===1?"it":"them",!E&&H?`, all at the ${H}
8 tier`:""))))}),O=i(()=>{const b=Ce(y.value);if(b)return`${b} Set bonuses and every piece.`});return Se(O),(b,S)=>{const W=je,L=ke,D=ct,V=re,v=Oe;return e(o)?(n(),k(v,{key:0,name:`${e(o).name} set`,tagline:`${e(se)} Witcher Set`},{intro:r(()=>[m(W,{paragraphs:e(y)},null,8,["paragraphs"])]),default:r(()=>[m(L,{title:"Bonuses"},{default:r(()=>[d("div",pl,[(n(!0),_(K,null,Q(e(o).bonuses,B=>(n(),_("div",{key:B.pieces},[d("span",hl,g(B.pieces)+" pieces:",1),Z(" "+g(e(Ms)(B,e(bs)(e(l),e(o).id))),1)]))),128)),e(o).bonuses.length?j("",!0):(n(),_("div",fl," No set bonus. "))])]),_:1}),m(L,{title:"Pieces"},{default:r(()=>[d("div",gl,[(n(!0),_(K,null,Q(e(a),B=>(n(),k(V,{key:B.$data.id,item:B},{default:r(()=>[m(D,{item:B,plain:""},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1})]),_:1},8,["name","tagline"])):j("",!0)}}}),bl=Object.assign(vl,{__name:"W3DbSpaceSet"}),xl={class:"flex flex-col gap-4 w-full"},$l={class:"opacity-75 text-center whitespace-pre-line"},yl={class:"flex justify-center"},wl={class:"max-w-full overflow-x-auto"},kl={class:"text-sm"},Sl={class:"px-3 py-1 text-white/75"},jl={class:"px-3 py-1 text-right whitespace-nowrap"},Ol={class:"flex flex-col items-center gap-3"},Cl={class:"max-w-[640px] text-center text-white/75"},Tl={class:"flex flex-wrap justify-center gap-4"},Dl=ne({__name:"sign",props:{db:{}},setup(t){const s=t,c=ye().params.id,{model:l}=pe(_e,s.db,me(void 0)),o=i(()=>s.db.data.signs[c]),a=i(()=>{const D=o.value?.skills??[];return T.sortBy(Qe(l.value).filter(V=>D.includes(V.$data.id)),V=>D.indexOf(V.$data.id))}),u=i(()=>a.value.find(D=>D.$data.id===o.value?.alternate.skill)),h=i(()=>a.value.filter(D=>D.$data.id!==o.value?.alternate.skill)),y=i(()=>jt(s.db,"signs",[c])),O=i(()=>T.sumBy(y.value,D=>D.items.length)),b=D=>D.unit==="%"?`${D.value}%`:D.unit?`${D.value} ${D.unit}`:`${D.value}`,S=Re.signs.name,W=i(()=>{const D=o.value;if(!D)return[];const V=h.value;return fe(X(x(D.name,"is one of the",P("five Signs",ge("signs")),`Geralt casts in ${se}`),x("The",P(D.alternate.name,Ee("skills",D.alternate.skill)),"skill of the",P(S,He("signs")),"tree unlocks its alternate mode")),X(V.length>0&&x(V.length===1?"One more Signs skill works with it:":`${V.length} more Signs skills work with it:`,ue(V.map(v=>P(v.$data.name,v.link)))),O.value>0&&x("The bestiary names it as a vulnerability of",ie(O.value,"creature",{link:"#effective-against"}))))}),L=i(()=>Ce(W.value)||void 0);return Se(L),(D,V)=>{const v=je,B=ke,R=Ye,Y=re,p=Xt,$=Oe;return e(o)?(n(),k($,{key:0,name:e(o).name,tagline:`${e(se)} Sign`},{intro:r(()=>[d("div",xl,[d("div",$l,g(e(o).desc),1),m(v,{paragraphs:e(W)},null,8,["paragraphs"])])]),default:r(()=>[m(B,{title:"Base stats"},{default:r(()=>[d("div",yl,[d("div",wl,[d("table",kl,[V[0]||(V[0]=d("thead",null,[d("tr",{class:"u-font-d uppercase text-xs text-white/50"},[d("th",{class:"px-3 py-1 text-left font-normal"},"Stat"),d("th",{class:"px-3 py-1 text-right font-normal"},"Value")])],-1)),d("tbody",null,[(n(!0),_(K,null,Q(e(o).stats,H=>(n(),_("tr",{key:H.attr,class:"border-t border-white/10"},[d("td",Sl,g(H.label),1),d("td",jl,g(b(H)),1)]))),128))])])])])]),_:1}),m(B,{title:"Alternate mode"},{default:r(()=>[d("div",Ol,[d("div",Cl,g(e(o).alternate.desc),1),e(u)?(n(),k(Y,{key:0,item:e(u)},{default:r(()=>[m(R,{item:e(u),plain:""},null,8,["item"])]),_:1},8,["item"])):j("",!0)])]),_:1}),e(h).length?(n(),k(B,{key:0,title:"More Signs skills"},{default:r(()=>[d("div",Tl,[(n(!0),_(K,null,Q(e(h),H=>(n(),k(Y,{key:H.$data.id,item:H},{default:r(()=>[m(R,{item:H,plain:""},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1})):j("",!0),e(y).length?(n(),k(B,{key:1,title:"Effective against"},{default:r(()=>[m(p,{groups:e(y)},null,8,["groups"])]),_:1})):j("",!0)]),_:1},8,["name","tagline"])):j("",!0)}}}),El=Object.assign(Dl,{__name:"W3DbSpaceSign"}),Al={class:"flex flex-wrap justify-center gap-6"},Ll={class:"u-font-d uppercase text-sm text-white/50"},Il={key:1,class:"px-1"},Bl={class:"flex flex-col items-center gap-2"},Ml={class:"text-sm text-white/50 text-center max-w-[600px]"},Nl={class:"max-w-full overflow-x-auto"},Rl={class:"text-sm"},ql={class:"px-3 py-1 capitalize text-white/75"},Wl={class:"px-3 py-1 text-right"},Pl={class:"flex flex-col items-center gap-6"},Ul={class:"u-font-d uppercase text-sm text-white/50 text-center"},Gl={class:"max-w-full overflow-x-auto"},Fl={class:"w-full text-sm"},Kl={class:"p-0"},Vl={key:1,class:"block px-2 py-1"},Hl={class:"px-2 py-1 text-right whitespace-nowrap text-white/75"},Yl={class:"px-2 py-1 text-right whitespace-nowrap"},zl={class:"flex justify-center"},Ql={class:"max-w-[640px] flex flex-col gap-3 text-white/75"},Jl={key:0,class:"italic border-l-2 border-white/30 pl-3 whitespace-pre-line"},Xl={class:"not-italic text-white/50 text-sm"},Zl={key:1,class:"whitespace-pre-line"},er={class:"flex flex-col items-center gap-4"},tr={key:0,class:"italic border-l-2 border-white/30 pl-3 whitespace-pre-line"},sr={class:"not-italic text-white/50 text-sm"},nr={key:1,class:"whitespace-pre-line"},ar={class:"flex flex-wrap justify-center gap-4"},or=ne({__name:"monster",props:{db:{}},setup(t){const s=t,c=ye().params.id;pe(_e,s.db,me(void 0));const l=i(()=>s.db.data.monsters[c]),o=p=>p.collection&&p.id?Ee(p.collection,p.id):void 0,a=p=>p.collection&&p.id?Ee(p.collection,p.id):void 0,u=i(()=>Object.keys(as).map(p=>({kind:p,name:as[p],items:(l.value?.weaknesses??[]).filter($=>$.kind===p)})).filter(p=>p.items.length)),h=i(()=>l.value?fn(l.value):[]),y=i(()=>T.sortBy(Object.values(s.db.data.monsters).filter(p=>p.group===l.value?.group&&p.id!==c),"name")),O=p=>p.split(/\n{2,}/).map($=>
8$.trim()).filter(Boolean).map($=>{const H=/^\*([\s\S]+?)\*\s*([\s\S]*)$/.exec($);return H?{quote:H[1],text:H[2].trim()}:{text:$.replace(/\*/g,"")}}),b=i(()=>(l.value?.pages??[]).filter(p=>p.outcome).map(p=>O(p.text))),S=i(()=>!!l.value?.pages?.length&&l.value.pages.every(p=>p.outcome)),W=i(()=>S.value?[]:O(l.value?.desc??"")),L=i(()=>l.value?so(l.value):[]),D=i(()=>T.uniqBy(l.value?.drops??[],"key").length),V=(p,$)=>p===$?`Rolls ${p} ${p===1?"time":"times"}`:`Rolls ${p} to ${$} times`,v=(p,$)=>p===$?`× ${p}`:`× ${p}–${$}`,B=p=>{const $=p*100;return`${$<1?Math.round($*10)/10:Math.round($)}%`},R=i(()=>{const p=l.value;if(!p)return[];const $=Ze[p.source],H=$?$==="Free DLC"?", added by a free DLC":`, added in the ${$} expansion`:"";return fe(X(x(`The bestiary of ${se} lists`,p.name,"under",P(p.groupName,ge("monsters",p.groupName)),H),p.weaknesses.length?x("It names",ie(p.weaknesses.length,"vulnerability",{plural:"vulnerabilities",link:"#vulnerable-to"}),":",ue(p.weaknesses.map(E=>P(E.name,o(E))))):x("It names no vulnerability for them"),D.value>0&&x("Its loot tables hold",ie(D.value,"item",{link:"#drops"})),b.value.length>1&&x("The entry has",ie(b.value.length,"ending",{link:"#contract-endings"}),", one for each way the contract can end")))}),Y=i(()=>Ce(R.value)||void 0);return Se(Y),(p,$)=>{const H=je,E=re,f=ke,w=Rs,N=Oe;return e(l)?(n(),k(N,{key:0,name:e(l).name,tagline:`${e(se)} ${e(l).groupName}`},{intro:r(()=>[m(H,{paragraphs:e(R)},null,8,["paragraphs"])]),default:r(()=>[e(u).length?(n(),k(f,{key:0,title:"Vulnerable to"},{default:r(()=>[d("div",Al,[(n(!0),_(K,null,Q(e(u),U=>(n(),_("div",{key:U.kind,class:"flex flex-col gap-1"},[d("div",Ll,g(U.name),1),(n(!0),_(K,null,Q(U.items,G=>(n(),_(K,{key:G.key},[o(G)?(n(),k(E,{key:0,item:{link:o(G)},variant:"row",class:"text-yellow px-1"},{default:r(()=>[Z(g(G.name),1)]),_:2},1032,["item"])):(n(),_("span",Il,g(G.name),1))],64))),128))]))),128))])]),_:1})):j("",!0),e(h).length?(n(),k(f,{key:1,title:"Stats"},{default:r(()=>[d("div",Bl,[d("div",Ml,[e(l).templateSource==="hand"?(n(),_(K,{key:0},[Z(" The bestiary entry names no creature, so these are one representative creature's, at level "+g(e(l).stats.level)+". ",1)],64)):(n(),_(K,{key:1},[Z(" The creature the bestiary entry names, at level "+g(e(l).stats.level)+". ",1)],64)),$[0]||($[0]=Z(" Encounters and quests can set their own level. ",-1))]),d("div",Nl,[d("table",Rl,[$[1]||($[1]=d("thead",null,[d("tr",{class:"u-font-d uppercase text-xs text-white/50"},[d("th",{class:"px-3 py-1 text-left font-normal"},"Stat"),d("th",{class:"px-3 py-1 text-right font-normal"},"Value")])],-1)),d("tbody",null,[(n(!0),_(K,null,Q(e(h),U=>(n(),_("tr",{key:U.attr,class:"border-t border-white/10"},[d("td",ql,g(U.label),1),d("td",Wl,g(U.text),1)]))),128))])])])])]),_:1})):j("",!0),e(L).length?(n(),k(f,{key:2,title:"Drops"},{default:r(()=>[d("div",Pl,[$[3]||($[3]=d("div",{class:"text-sm text-white/50 text-center max-w-[600px]"}," Each list rolls the number of times shown. Items marked Always drop every time; the share is an item's weight in the game files against the other weighted items in its list, for one roll. ",-1)),(n(!0),_(K,null,Q(e(L),U=>(n(),_("div",{key:U.table,class:"w-full max-w-[480px] flex flex-col gap-1"},[d("div",Ul,g(V(U.min,U.max)),1),d("div",Gl,[d("table",Fl,[$[2]||($[2]=d("thead",null,[d("tr",{class:"u-font-d uppercase text-xs text-white/50"},[d("th",{class:"px-2 py-1 text-left font-normal"},"Item"),d("th",{class:"px-2 py-1 text-right font-normal"},"Quantity"),d("th",{class:"px-2 py-1 text-right font-normal"},"Share")])],-1)),d("tbody",null,[(n(!0),_(K,null,Q(U.entries,G=>(n(),_("tr",{key:G.key,class:"border-t border-white/10"},[d("td",Kl,[a(G)?(n(),k(E,{key:0,item:{link:a(G)},variant:"row",class:"px-2 py-1 text-yellow"},{default:r(()=>[Z(g(G.name),1)]),_:2},1032,["item"])):(n(),_("span",Vl,g(G.name),1))]),d("td",Hl,g(v(G.min,G.max)),1),d("td",Yl,g(G.always?"Always":G.share?B(G.share):""),1)]))),128))])])])]))),128))])]),_:1})):j("",!0),e(W).length?(n(),k(f,{key:3,title:"Bestiary entry"},{default:r(()=>[d("div",zl,[d("div",Ql,[(n(!0),_(K,null,Q(e(W),(U,G)=>(n(),_(K,{key:G},[U.quote?(n(),_("blockquote",Jl,[Z(g(U.quote)+" ",1),d("div",Xl,g(U.text),1)])):(n(),_("p",Zl,g(U.text),1))],64))),128))])])]),_:1})):j("",!0),e(b).length?(n(),k(f,{key:4,title:"Contract endings"},{default:r(()=>[d("div",er,[$[4]||($[4]=d("div",{class:"text-sm text-white/50 text-center max-w-[600px]"}," The journal shows one of these, depending on how the contract ends. ",-1)),(n(!0),_(K,null,Q(e(b),(U,G)=>(n(),_("div",{key:G,class:Ke(["max-w-[640px] flex flex-col gap-3 text-white/75",G>0&&"border-t border-white/10 pt-4"])},[(n(!0),_(K,null,Q(U,(ae,ee)=>(n(),_(K,{key:ee},[ae.quote?(n(),_("blockquote",tr,[Z(g(ae.quote)+" ",1),d("div",sr,g(ae.text),1)])):(n(),_("p",nr,g(ae.text),1))],64))),128))],2))),128))])]),_:1})):j("",!0),e(y).length?(n(),k(f,{key:5,title:`Other ${e(l).groupName}`},{default:r(()=>[d("div",ar,[(n(!0),_(K,null,Q(e(y),U=>(n(),k(E,{key:U.id,item:{link:e(Ee)("monsters",U.id)}},{default:r(()=>[m(w,{item:U},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1},8,["title"])):j("",!0)]),_:1},8,["name","tagline"])):j("",!0)}}}),ir=Object.assign(or,{__name:"W3DbSpaceMonster"}),lr={class:"flex flex-col gap-4 w-full"},rr={key:0,class:"opacity-75 text-center whitespace-pre-line"},cr={key:1,class:"flex justify-center gap-2"},dr={class:"flex justify-center"},ur={class:"flex justify-center"},mr={class:"w-full max-w-[420px]"},_r={class:"flex justify-center"},pr={class:"flex justify-center"},hr={class:"w-full max-w-[420px]"},fr={class:"flex justify-center"},gr={class:"w-full max-w-[420px]"},vr={class:"flex flex-wrap justify-center gap-4"},br={class:"flex flex-wrap justify-center gap-4"},xr=ne({__name:"codex-entry",props:{db:{},entity:{}},setup(t){const s=t,c=ye().params.id;pe(_e,s.db,me(void 0));const l=i(()=>s.db.data[T.camelCase(s.entity)]),o=i(()=>l.value[c]),a=i(()=>Bs(l.value,o.value?.desc)),u=i(()=>s.entity==="bombs"?o.value:void 0),h=i(()=>s.entity==="food"?o.value:void 0),y=i(()=>s.entity==="ingredients"?o.value:void 0),O=i(()=>s.entity==="horse-gear"?o.value:void 0),b=i(()=>s.entity==="trophies"?o.value:void 0),S=i(()=>s.entity==="recipes"||s.entity==="diagrams"?o.value:void 0),W=i(()=>S.value&&kt(S.value)?S.value:void 0),L=i(()=>u.value?u.value.tiers.map(M=>
8M.key):o.value?[o.value.key]:[]),D=i(()=>S.value?[]:T.sortBy(gn(s.db,L.value),"name")),V=i(()=>S.value?[]:T.sortBy(T.uniqBy(L.value.flatMap(M=>vn(s.db,M)),"key"),"name")),v=i(()=>u.value?jt(s.db,"bombs",[c]):[]),B=i(()=>y.value||h.value?Ps(s.db,y.value?"ingredients":"food",[c]):[]),R=M=>T.sumBy(M,q=>q.items.length),Y=["Vegetables","Fruits","Wheat","Meat","Fish","Dairy","Sweets"],p=i(()=>y.value?.rarity?[T.upperFirst(y.value.rarity)]:h.value?h.value.tags.filter(M=>Y.includes(M)):[]),$={bombs:"Bomb",food:"Food",ingredients:"Item","horse-gear":"Horse Gear",trophies:"Trophy",recipes:"Alchemy Recipe",diagrams:"Crafting Diagram"},H={herb:"herb",alchemy:"alchemy ingredient",mutagen:"mutagen",alcohol:"alchemy base",crafting:"crafting material",dye:"armor dye",junk:"junk item"},E={saddle:"saddle",saddlebags:"set of saddlebags",blinders:"set of blinders"},f={food:"food item",drink:"drink",alcohol:"alcoholic drink"},w=i(()=>{const M=o.value&&Ze[o.value.source];return M?M==="Free DLC"?", added by a free DLC":`, added in the ${M} expansion`:""}),N=M=>P(M.quantity>1?`${M.quantity} ${M.name}`:M.name,Pt(M)),U=M=>M.map(q=>P(q.name,Ne(q))),G=(M=!1)=>o.value?.price?x(M?"They have":"It has","a base price of",ie(o.value.price,"crown"),!!o.value.weight&&`and ${M?"weigh":"weighs"} ${o.value.weight}`):void 0,ae=()=>D.value.length?D.value.length>3?x(ie(D.value.length,"recipe",{link:"#made-from"}),"make it"):x(D.value.length>1?"Its recipes are":"Its recipe is",ue(U(D.value))):void 0,ee=()=>V.value.length?x("It is an ingredient of",pt(U(V.value),{noun:"recipe",section:"#used-in"})):void 0,ce=i(()=>{const M=o.value;if(!M)return[];const q=`in ${se}${w.value}`;if(u.value){const I=u.value.tiers,te=I[0],oe=I[I.length-1],le=Object.entries(oe.damage).map(([$e,qe])=>`${qe} ${T.lowerCase($e)}`),be=T.uniq(oe.effects.map($e=>$e.name));return fe(X(x(M.name,"is a bomb",q,"with",ie(I.length,"tier",{link:"#tiers"}),":",ve(I.map($e=>$e.name))),x("It carries",te.charges===oe.charges?ie(te.charges,"charge"):`${te.charges} to ${oe.charges} charges`,!!oe.duration&&`, and what it leaves behind lasts ${te.duration===oe.duration?Le(oe.duration):`${Le(te.duration??0)} to ${Le(oe.duration)}`}`)),X(le.length>0&&x(I.length>1?"At its top tier it deals":"It deals",ve(le),"damage"),be.length>0&&x("It applies the",ve(be),be.length>1?"effects":"effect"),ae(),v.value.length>0&&x("The bestiary names it as a vulnerability of",ie(R(v.value),"creature",{link:"#effective-against"}))))}if(h.value){const I=f[h.value.kind],te=h.value.attrs.vitalityRegen?.[0]?.min;return fe(X(x(M.name,"is",Ge(I).split(" ")[0],P(I,ge("food",ks[h.value.kind])),q),!!te&&!!h.value.duration&&x("It restores",te,"Vitality per second for",Le(h.value.duration)),G()),X(ee(),ae()))}if(y.value){const I=H[y.value.kind],te=y.value.yields??[];return fe(X(x(M.name,"is",Ge(I).split(" ")[0],P(I,ge("ingredients",ws[y.value.kind])),q),G()),X(ee(),ae(),te.length>0&&x("Dismantling it gives",ue(te.map(N))),B.value.length>0&&x("The loot tables of",ie(R(B.value),"bestiary creature",{link:"#dropped-by"}),"hold it")))}if(O.value){const I=E[O.value.kind],te=O.value.kind!=="saddle";return fe(X(x(Ve(M.name,{unique:!0}),te?"are":"is","a",P(I,ge("horse-gear",ys[O.value.kind])),"for Roach",q),O.value.lines.length>0&&x(te?"They give":"It gives",ve(O.value.lines.map(it))),G(te)))}if(b.value)return fe(X(x(Ve(M.name),"is a",P("trophy",ge("trophies")),q),b.value.lines.length>0&&x("Hung on Roach's saddle it gives",ve(b.value.lines.map(it))),G()));if(S.value){const I=S.value,te=W.value?xs[W.value.kind]:$s[I.kind],oe=W.value?"crafting diagram":"alchemy recipe";return fe(X(x(M.name,"is",Ge(oe).split(" ")[0],P(oe,ge(s.entity,te)),q),x("It makes",N(I.product)),W.value&&x(Ge(`${W.value.craftsmanLevel} ${W.value.craftsman.toLowerCase()}`).replace(/^a/,"A"),"or better forges it",!!W.value.fee&&`for ${W.value.fee} crowns`)),X(x("It takes",pt(I.ingredients.map(N),{noun:"ingredient",section:"#ingredients",limit:6})),!!I.price&&x("The",oe,"itself has a base price of",ie(I.price,"crown"))))}return[]}),A=i(()=>Ce(ce.value)||void 0);return Se(A),(M,q)=>{const I=je,te=qs,oe=ke,le=Ot,be=Ws,$e=Xt,qe=Ns,C=re,F=Oe;return e(o)?(n(),k(F,{key:0,name:e(o).name,tagline:`${e(se)} ${$[t.entity]}`},{intro:r(()=>[d("div",lr,[e(a)&&!e(S)?(n(),_("div",rr,g(e(a)),1)):j("",!0),e(p).length?(n(),_("div",cr,[(n(!0),_(K,null,Q(e(p),J=>(n(),_("div",{key:J,class:"u-font-c bg-white text-black px-2 py-0.5 text-sm leading-none rounded-sm uppercase opacity-50"},g(J),1))),128))])):j("",!0),m(I,{paragraphs:e(ce)},null,8,["paragraphs"])])]),default:r(()=>[e(u)?(n(),k(oe,{key:0,title:"Tiers"},{default:r(()=>[d("div",dr,[m(te,{item:e(u)},null,8,["item"])])]),_:1})):e(S)?(n(),k(oe,{key:1,title:"Makes"},{default:r(()=>[d("div",ur,[d("div",mr,[m(le,{parts:[e(S).product]},null,8,["parts"])])])]),_:1})):(n(),k(oe,{key:2,title:"Stats"},{default:r(()=>[d("div",_r,[m(be,{item:e(h)??e(y)??e(O)??e(b),desc:e(a)??""},null,8,["item","desc"])])]),_:1})),e(S)?(n(),k(oe,{key:3,title:"Ingredients"},{default:r(()=>[d("div",pr,[d("div",hr,[m(le,{parts:e(S).ingredients},null,8,["parts"])])])]),_:1})):j("",!0),e(y)?.yields?.length?(n(),k(oe,{key:4,title:"Dismantles into"},{default:r(()=>[d("div",fr,[d("div",gr,[m(le,{parts:e(y).yields},null,8,["parts"])])])]),_:1})):j("",!0),e(v).length?(n(),k(oe,{key:5,title:"Effective against"},{default:r(()=>[m($e,{groups:e(v)},null,8,["groups"])]),_:1})):j("",!0),e(B).length?(n(),k(oe,{key:6,title:"Dropped by"},{default:r(()=>[m($e,{groups:e(B)},null,8,["groups"])]),_:1})):j("",!0),e(D).length?(n(),k(oe,{key:7,title:"Made from"},{default:r(()=>[d("div",vr,[(n(!0),_(K,null,Q(e(D),J=>(n(),k(C,{key:J.key,item:{link:e(Ne)(J)}},{default:r(()=>[m(qe,{item:J},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1})):j("",!0),e(V).length?(n(),k(oe,{key:8,title:"Used in"},{default:r(()=>[d("div",br,[(n(!0),_(K,null,Q(e(V),J=>(n(),k(C,{key:J.key,item:{link:e(Ne)(J)}},{default:r(()=>[m(qe,{item:J},null,8,["item"])]),_:2},1032,["item"]))),128))])]),_:1})):j("",!0)]),_:1},8,["name","tagline"])):j("",!0)}}}),$r=Object.assign(xr,{__name:"W3DbSpaceCodexEntry"}),ed=ne({__name:"page",async setup(t){let s,c;if(Dn("witcher-3"),!mn().public.witcher3Db)throw _n({statusCode:404,statusMessage:"Page Not Found"});const l=ps["witcher-3/db"],o=["bombs","food","ingredients","recipes","diagrams","horse-gear","trophies","monsters"],{db:a}=([s,c]=pn(()=>En("witcher-3/codex")),s=await s,c(),s);return(u,h)=>{const y=In,O=Kn,b=Yn,S=Jn,W=ea,L=ia,D=ca,V=ma,v=xa,B=to,R=Co,Y=hi,p=gi,$=Bi,H=Zi,E=cl,f=_l,w=bl,N=El,U=ir,G=$r,ae=Qs;return n(),k(ae,{db:e(a),space:e(l),class:"witcher-3-theme bg-black p-2 dt:p-4"},hs({skills:r(()=>[m(y,{db:e(a)},null,8,["db"])]),weapons:r(()=>[m(O,{db:e(a)},null,8,["db"])]),armor:r(()=>[m(b,{db:e(a)},null,8,["db"])]),upgrades:r(()=>[m(S,{db:e(a)}
8,null,8,["db"])]),consumables:r(()=>[m(W,{db:e(a)},null,8,["db"])]),mutations:r(()=>[m(L,{db:e(a)},null,8,["db"])]),mutagens:r(()=>[m(D,{db:e(a)},null,8,["db"])]),sets:r(()=>[m(V,{db:e(a)},null,8,["db"])]),signs:r(()=>[m(v,{db:e(a)},null,8,["db"])]),"skills-item":r(()=>[m(R,{db:e(a)},null,8,["db"])]),"weapons-item":r(()=>[m(Y,{db:e(a)},null,8,["db"])]),"armor-item":r(()=>[m(p,{db:e(a)},null,8,["db"])]),"upgrades-item":r(()=>[m($,{db:e(a)},null,8,["db"])]),"consumables-item":r(()=>[m(H,{db:e(a)},null,8,["db"])]),"mutations-item":r(()=>[m(E,{db:e(a)},null,8,["db"])]),"mutagens-item":r(()=>[m(f,{db:e(a)},null,8,["db"])]),"sets-item":r(()=>[m(w,{db:e(a)},null,8,["db"])]),"signs-item":r(()=>[m(N,{db:e(a)},null,8,["db"])]),_:2},[Q(o,ee=>({name:ee,fn:r(()=>[m(B,{db:e(a),entity:ee},null,8,["db","entity"])])})),Q(o,ee=>({name:`${ee}-item`,fn:r(()=>[ee==="monsters"?(n(),k(U,{key:0,db:e(a)},null,8,["db"])):(n(),k(G,{key:1,db:e(a),entity:ee},null,8,["db","entity"]))])}))]),1032,["db","space"])}}});export{ed as default};

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.