quake2ts 0.0.210 → 0.0.211

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -146,5 +146,5 @@ void main() {
146
146
  `),d=n.height/2-u.length*10;for(let m of u)ue.SCR_DrawCenterString(d,m),d+=16}pi.drawCenterPrint(ue,o,c),pi.drawNotifications(ue,o),y0(ue,n.width,n.height)}function Ln(){return pi}function I0(e,t,n){t>=te.Models&&t<te.Models+Pt?e.RegisterModel(n):t>=te.Sounds&&t<te.Sounds+Dt?e.RegisterSound(n):t>=te.Images&&t<te.Images+Ft&&e.Draw_RegisterPic(n)}var hi=1e-6,zn=typeof Float32Array<"u"?Float32Array:Array,Bs=Math.random;function fi(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var C0={};p0(C0,{add:()=>B0,angle:()=>uh,bezier:()=>th,ceil:()=>G0,clone:()=>P0,copy:()=>F0,create:()=>Ws,cross:()=>Z0,dist:()=>ph,distance:()=>js,div:()=>_h,divide:()=>Ys,dot:()=>vi,equals:()=>hh,exactEquals:()=>lh,floor:()=>H0,forEach:()=>wh,fromValues:()=>D0,hermite:()=>eh,inverse:()=>j0,len:()=>yh,length:()=>Ks,lerp:()=>J0,max:()=>W0,min:()=>V0,mul:()=>gh,multiply:()=>$s,negate:()=>Y0,normalize:()=>q0,random:()=>nh,rotateX:()=>sh,rotateY:()=>oh,rotateZ:()=>ch,round:()=>K0,scale:()=>X0,scaleAndAdd:()=>$0,set:()=>U0,slerp:()=>Q0,sqrDist:()=>vh,sqrLen:()=>Sh,squaredDistance:()=>qs,squaredLength:()=>Zs,str:()=>mh,sub:()=>fh,subtract:()=>Xs,transformMat3:()=>ih,transformMat4:()=>rh,transformQuat:()=>ah,zero:()=>dh});function Ws(){var e=new zn(3);return zn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function P0(e){var t=new zn(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Ks(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function D0(e,t,n){var r=new zn(3);return r[0]=e,r[1]=t,r[2]=n,r}function F0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function U0(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function B0(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Xs(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function $s(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function Ys(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function G0(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function H0(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function V0(e,t,n){return e[0]=Math.min(t[0],n[0]),e[1]=Math.min(t[1],n[1]),e[2]=Math.min(t[2],n[2]),e}function W0(e,t,n){return e[0]=Math.max(t[0],n[0]),e[1]=Math.max(t[1],n[1]),e[2]=Math.max(t[2],n[2]),e}function K0(e,t){return e[0]=fi(t[0]),e[1]=fi(t[1]),e[2]=fi(t[2]),e}function X0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function $0(e,t,n,r){return e[0]=t[0]+n[0]*r,e[1]=t[1]+n[1]*r,e[2]=t[2]+n[2]*r,e}function js(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return Math.sqrt(n*n+r*r+i*i)}function qs(e,t){var n=t[0]-e[0],r=t[1]-e[1],i=t[2]-e[2];return n*n+r*r+i*i}function Zs(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function Y0(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function j0(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function q0(e,t){var n=t[0],r=t[1],i=t[2],a=n*n+r*r+i*i;return a>0&&(a=1/Math.sqrt(a)),e[0]=t[0]*a,e[1]=t[1]*a,e[2]=t[2]*a,e}function vi(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Z0(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[0],o=n[1],c=n[2];return e[0]=i*c-a*o,e[1]=a*s-r*c,e[2]=r*o-i*s,e}function J0(e,t,n,r){var i=t[0],a=t[1],s=t[2];return e[0]=i+r*(n[0]-i),e[1]=a+r*(n[1]-a),e[2]=s+r*(n[2]-s),e}function Q0(e,t,n,r){var i=Math.acos(Math.min(Math.max(vi(t,n),-1),1)),a=Math.sin(i),s=Math.sin((1-r)*i)/a,o=Math.sin(r*i)/a;return e[0]=s*t[0]+o*n[0],e[1]=s*t[1]+o*n[1],e[2]=s*t[2]+o*n[2],e}function eh(e,t,n,r,i,a){var s=a*a,o=s*(2*a-3)+1,c=s*(a-2)+a,u=s*(a-1),d=s*(3-2*a);return e[0]=t[0]*o+n[0]*c+r[0]*u+i[0]*d,e[1]=t[1]*o+n[1]*c+r[1]*u+i[1]*d,e[2]=t[2]*o+n[2]*c+r[2]*u+i[2]*d,e}function th(e,t,n,r,i,a){var s=1-a,o=s*s,c=a*a,u=o*s,d=3*a*o,m=3*c*s,l=c*a;return e[0]=t[0]*u+n[0]*d+r[0]*m+i[0]*l,e[1]=t[1]*u+n[1]*d+r[1]*m+i[1]*l,e[2]=t[2]*u+n[2]*d+r[2]*m+i[2]*l,e}function nh(e,t){t=t===void 0?1:t;var n=Bs()*2*Math.PI,r=Bs()*2-1,i=Math.sqrt(1-r*r)*t;return e[0]=Math.cos(n)*i,e[1]=Math.sin(n)*i,e[2]=r*t,e}function rh(e,t,n){var r=t[0],i=t[1],a=t[2],s=n[3]*r+n[7]*i+n[11]*a+n[15];return s=s||1,e[0]=(n[0]*r+n[4]*i+n[8]*a+n[12])/s,e[1]=(n[1]*r+n[5]*i+n[9]*a+n[13])/s,e[2]=(n[2]*r+n[6]*i+n[10]*a+n[14])/s,e}function ih(e,t,n){var r=t[0],i=t[1],a=t[2];return e[0]=r*n[0]+i*n[3]+a*n[6],e[1]=r*n[1]+i*n[4]+a*n[7],e[2]=r*n[2]+i*n[5]+a*n[8],e}function ah(e,t,n){var r=n[0],i=n[1],a=n[2],s=n[3],o=t[0],c=t[1],u=t[2],d=i*u-a*c,m=a*o-r*u,l=r*c-i*o;return d=d+d,m=m+m,l=l+l,e[0]=o+s*d+i*l-a*m,e[1]=c+s*m+a*d-r*l,e[2]=u+s*l+r*m-i*d,e}function sh(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0],a[1]=i[1]*Math.cos(r)-i[2]*Math.sin(r),a[2]=i[1]*Math.sin(r)+i[2]*Math.cos(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function oh(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[2]*Math.sin(r)+i[0]*Math.cos(r),a[1]=i[1],a[2]=i[2]*Math.cos(r)-i[0]*Math.sin(r),e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function ch(e,t,n,r){var i=[],a=[];return i[0]=t[0]-n[0],i[1]=t[1]-n[1],i[2]=t[2]-n[2],a[0]=i[0]*Math.cos(r)-i[1]*Math.sin(r),a[1]=i[0]*Math.sin(r)+i[1]*Math.cos(r),a[2]=i[2],e[0]=a[0]+n[0],e[1]=a[1]+n[1],e[2]=a[2]+n[2],e}function uh(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2],c=Math.sqrt((n*n+r*r+i*i)*(a*a+s*s+o*o)),u=c&&vi(e,t)/c;return Math.acos(Math.min(Math.max(u,-1),1))}function dh(e){return e[0]=0,e[1]=0,e[2]=0,e}function mh(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function lh(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function hh(e,t){var n=e[0],r=e[1],i=e[2],a=t[0],s=t[1],o=t[2];return Math.abs(n-a)<=hi*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=hi*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=hi*Math.max(1,Math.abs(i),Math.abs(o))}var fh=Xs,gh=$s,_h=Ys,ph=js,vh=qs,yh=Ks,Sh=Zs,wh=(function(){var e=Ws();return function(t,n,r,i,a,s){var o,c;for(n||(n=3),r||(r=0),i?c=Math.min(i*n+r,t.length):c=t.length,o=r;o<c;o+=n)e[0]=t[o],e[1]=t[o+1],e[2]=t[o+2],a(e,e,s),t[o]=e[0],t[o+1]=e[1],t[o+2]=e[2];return t}})();var xh={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function Ah(e){return{x:Math.max(-14,Math.min(14,e.x)),y:Math.max(-14,Math.min(14,e.y)),z:Math.max(-22,Math.min(30,e.z))}}function Eh(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function kh(e,t,n,r,i){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=Eh(t,r,i),s=e+a,c=De(n,Ee.Ducked)&&r?s*4:s;return{bobTime:s,bobCycle:Math.floor(c),bobCycleRun:Math.floor(s),bobFracSin:Math.abs(Math.sin(c*Math.PI))}}var Nn=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...xh,...e}}addKick(e){e.durationMs<=0||(this.kick={...e,remainingMs:e.durationMs})}get last(){return this.lastSample}sample(e,t){let{forward:n,right:r}=ii(ui({pmFlags:e.pmFlags,cmdAngles:e.viewAngles,deltaAngles:e.deltaAngles??ut}).viewangles),i=Math.sqrt(e.velocity.x*e.velocity.x+e.velocity.y*e.velocity.y),a=De(e.pmFlags,Ee.OnGround),s=kh(this.bobTime,i,e.pmFlags,a,t);this.bobTime=s.bobTime,this.bobCycle=s.bobCycle,this.bobCycleRun=s.bobCycleRun,this.bobFracSin=s.bobFracSin;let o=mt(e.velocity,n)*this.settings.runPitch,c=mt(e.velocity,r),u=c<0?-1:1,m=Math.abs(c)*this.settings.runRoll;m>2&&(m=2),m*=u;let l=this.bobFracSin*this.settings.bobPitch*i,h=this.bobFracSin*this.settings.bobRoll*i;De(e.pmFlags,Ee.Ducked)&&a&&(l*=6,h*=6),o+=Math.min(l,this.settings.maxBobAngle),h=Math.min(h,this.settings.maxBobAngle),this.bobCycle&1&&(h=-h),m+=h;let f=Math.min(this.bobFracSin*i*this.settings.bobUp,this.settings.maxBobHeight),p=0,g=0;if(this.kick&&this.kick.remainingMs>0){let x=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));p+=x*this.kick.pitch,g+=x*this.kick.roll,this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let v={angles:{x:o+p,y:0,z:m+g},offset:Ah({x:0,y:0,z:f}),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:i};return this.lastSample=v,v}},Th={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},Js=800,Fe={x:0,y:0,z:0},Mh=250;function et(){return{origin:Fe,velocity:Fe,viewAngles:Fe,onGround:!1,pmFlags:Ee.OnGround,pmType:oi.Normal,waterLevel:Qe.None,gravity:Js,deltaAngles:Fe,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:0,damageIndicators:[],blend:[0,0,0,0],stats:[],kick_angles:Fe,gunoffset:Fe,gunangles:Fe,gunindex:0,pickupIcon:void 0,centerPrint:void 0,notify:void 0,client:void 0,health:0,armor:0,ammo:0}}function Gs(e){return e?{...et(),...e,origin:{...e.origin},velocity:{...e.velocity},viewAngles:{...e.viewAngles},deltaAngles:e.deltaAngles?{...e.deltaAngles}:Fe,blend:e.blend?[...e.blend]:[0,0,0,0],damageIndicators:e.damageIndicators?[...e.damageIndicators]:[],stats:e.stats?[...e.stats]:[]}:et()}function fe(e,t,n){return e+(t-e)*n}function gi(e,t,n){let r=ct(t-e);return r>180&&(r-=360),ct(e+r*n)}function ht(e,t,n){let r=Math.max(0,Math.min(n,1));return{...t,origin:{x:fe(e.origin.x,t.origin.x,r),y:fe(e.origin.y,t.origin.y,r),z:fe(e.origin.z,t.origin.z,r)},velocity:{x:fe(e.velocity.x,t.velocity.x,r),y:fe(e.velocity.y,t.velocity.y,r),z:fe(e.velocity.z,t.velocity.z,r)},viewAngles:{x:gi(e.viewAngles.x,t.viewAngles.x,r),y:gi(e.viewAngles.y,t.viewAngles.y,r),z:gi(e.viewAngles.z,t.viewAngles.z,r)},damageAlpha:fe(e.damageAlpha,t.damageAlpha,r),blend:[fe(e.blend[0],t.blend[0],r),fe(e.blend[1],t.blend[1],r),fe(e.blend[2],t.blend[2],r),fe(e.blend[3],t.blend[3],r)],health:fe(e.health||0,t.health||0,r),armor:fe(e.armor||0,t.armor||0,r),ammo:fe(e.ammo||0,t.ammo||0,r)}}function bh(e,t,n,r){let i=Math.min(Math.max(t.msec,0),Mh)/1e3,a=De(e.pmFlags,Ee.OnGround),s=De(e.pmFlags,Ee.OnLadder),o=As({velocity:e.velocity,frametime:i,onGround:a,groundIsSlick:n.groundIsSlick,onLadder:s,waterlevel:e.waterLevel,pmFriction:n.pmFriction,pmStopSpeed:n.pmStopSpeed,pmWaterFriction:n.pmWaterFriction}),{viewangles:c,forward:u,right:d}=ui({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Fe}),m=e.waterLevel>Qe.None?Ts({forward:u,right:d,cmd:t,maxSpeed:n.pmWaterSpeed}):ks({forward:u,right:d,cmd:t,maxSpeed:n.pmMaxSpeed});if(e.waterLevel>Qe.None)o=ci({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmWaterAccelerate,frametime:i});else if(a||s){let f=De(e.pmFlags,Ee.Ducked)?n.pmDuckSpeed:n.pmMaxSpeed,p=m.wishspeed>f?{wishdir:m.wishdir,wishspeed:f}:m;o=ci({velocity:o,wishdir:p.wishdir,wishspeed:p.wishspeed,accel:n.pmAccelerate,frametime:i})}else o=Es({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmAirAccelerate,frametime:i}),o={...o,z:o.z-(e.gravity??Js)*i};let h=r(e.origin,It(e.origin,dt(o,i))).endpos;return{...e,origin:h,velocity:o,viewAngles:c}}var On=class{constructor(e,t={}){this.baseFrame={frame:0,timeMs:0,state:et()},this.commands=[],this.predicted=et(),this.settings={...Th,...t},this.trace=e,this.predicted=this.baseFrame.state??et()}setAuthoritative(e){let t=Gs(e.state);return this.baseFrame={...e,state:t},this.commands=this.commands.filter(n=>(n.serverFrame??Number.MAX_SAFE_INTEGER)>e.frame),this.recompute()}enqueueCommand(e){return this.commands.push(e),this.recompute()}getPredictedState(){return this.predicted}recompute(){let e=Gs(this.baseFrame.state);for(let t of this.commands)e=bh(e,t,this.settings,this.trace);return this.predicted=e,e}},ge=null;function Rh(){if(!ge){console.error("CGame Init: cgame imports not set");return}ge.Com_Print(`===== CGame Initialization =====
147
147
  `),L0(ge),ge.Com_Print(`CGame initialized
148
148
  `)}function zh(){ge&&ge.Com_Print(`CGame shutdown
149
- `),ge=null}function Lh(e,t,n,r,i,a,s){O0(e,t,n,r,i,a,s)}function Nh(){N0()}function Oh(e){return 0}function Ih(e){return 0}function Ch(e){return[]}function Ph(e,t){return 0}function Dh(e){return 0}function Fh(e){return 0}function Uh(e){}function Bh(e,t){ge&&I0(ge,e,t)}function Gh(e,t,n){if(!ge)return;Ln().setCenterPrint(e,ge.CL_ClientTime())}function Hh(e,t,n){if(!ge)return;Ln().addNotification(t,n,ge.CL_ClientTime())}function Vh(e){Ln().clearNotifications()}function Wh(e){Ln().clearCenterPrint()}function Kh(e){return{x:0,y:0,z:0}}function Xh(e){return null}function Qs(e){return ge=e,{Init:Rh,Shutdown:zh,DrawHUD:Lh,TouchPics:Nh,LayoutFlags:Oh,GetActiveWeaponWheelWeapon:Ih,GetOwnedWeaponWheelWeapons:Ch,GetWeaponWheelAmmoCount:Ph,GetPowerupWheelCount:Dh,GetHitMarkerDamage:Fh,Pmove:Uh,ParseConfigString:Bh,ParseCenterPrint:Gh,NotifyMessage:Hh,ClearNotify:Vh,ClearCenterprint:Wh,GetMonsterFlashOffset:Kh,GetExtension:Xh}}function eo(e,t){let n=new Map,r=new Set,i=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{let c=e.host?.cvars?.get(a);return c||null},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||r.has(a)||(r.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}r.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),r.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{i()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let c=o,u=n.get(c);u&&i()?.drawPic(a,s,u)},SCR_DrawColorPic:(a,s,o,c,u)=>{let d=o,m=n.get(d);m&&i()?.drawPic(a,s,m,[c.x,c.y,c.z,u])},SCR_DrawFontString:(a,s,o)=>{i()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{i()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let c=t.getKeyBinding(o);i()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,c)=>e.engine.trace(a,s,o,c)}}var ft=null,Ke=0;var Ut=!0,Bt=["ch1","ch2","ch3"],gt=[null,null,null],to=async(e,t)=>{for(let n=0;n<Bt.length;n++){let r=Bt[n];try{let i=await t.loadTexture(`pics/${r}.pcx`);gt[n]=e.registerTexture(r,i)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");gt[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}ft=gt[0]};var no=()=>{if(Ut?(Ke++,Ke>=Bt.length&&(Ut=!1,Ke=0)):(Ut=!0,Ke=0),Ut){if(ft=gt[Ke],!ft){let e=!1;for(let t=0;t<Bt.length;t++){let n=(Ke+t)%Bt.length;if(gt[n]){Ke=n,ft=gt[n],e=!0;break}}e||(ft=null)}}else ft=null;return Ut?Ke:-1};var $h=Object.defineProperty,go=(e,t)=>{for(var n in t)$h(e,n,{get:t[n],enumerable:!0})},W={x:0,y:0,z:0};var E5=Math.PI/180;function Yh(e){return{x:e.x,y:e.y,z:e.z}}function F(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function O(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function U(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function _o(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function jh(e){return _o(e,e)}function At(e){return Math.sqrt(jh(e))}function P(e){let t=At(e);return t===0?e:U(e,1/t)}function qh(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function Zh(e,t,n,r){let i=0;if(t.x<n.x){let a=t.x-n.x;i+=a*a}else if(e.x>r.x){let a=e.x-r.x;i+=a*a}if(t.y<n.y){let a=t.y-n.y;i+=a*a}else if(e.y>r.y){let a=e.y-r.y;i+=a*a}if(t.z<n.z){let a=t.z-n.z;i+=a*a}else if(e.z>r.z){let a=e.z-r.z;i+=a*a}return i}var Ii=0,Ci=1,po=2,Jh=Math.PI/180,Qh=180/Math.PI;function Ht(e,t){switch(t){case Ii:return e.x;case Ci:return e.y;case po:default:return e.z}}function Cn(e){return e*Jh}function Ti(e){return e*Qh}function Mi(e){let t=e%360;return t<0?360+t:t}function Q(e){let t=Cn(Ht(e,Ci)),n=Cn(Ht(e,Ii)),r=Cn(Ht(e,po)),i=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),c=Math.sin(r),u=Math.cos(r),d={x:o*a,y:o*i,z:-s},m={x:-c*s*a-u*-i,y:-c*s*i-u*a,z:-c*o},l={x:u*s*a-c*-i,y:u*s*i-c*a,z:u*o};return{forward:d,right:m,up:l}}function Pi(e){let t=Ht(e,Ii),n=Ht(e,Ci);if(t===0)return n===0?0:n>0?90:270;let r=Ti(Math.atan2(n,t));return r<0?r+360:r}function $t(e){let t=e.x,n=e.y,r=e.z;if(n===0&&t===0)return{x:r>0?-90:-270,y:0,z:0};let i;t?i=Ti(Math.atan2(n,t)):n>0?i=90:i=270,i<0&&(i+=360);let a=Math.sqrt(t*t+n*n),s=Ti(Math.atan2(r,a));return s<0&&(s+=360),{x:-s,y:i,z:0}}var Ie=624,ef=397,tf=2567483615,nf=2147483648,rf=2147483647,yi=4294967296,af=class{constructor(e=5489){this.state=new Uint32Array(Ie),this.index=Ie,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Ie;t++){let n=this.state[t-1]^this.state[t-1]>>>30,r=Math.imul(n>>>0,1812433253)+t;this.state[t]=r>>>0}this.index=Ie}nextUint32(){this.index>=Ie&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<Ie;e++){let t=this.state[e]&nf|this.state[(e+1)%Ie]&rf,n=this.state[(e+ef)%Ie]^t>>>1;(t&1)!==0&&(n^=tf),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Ie)throw new Error(`Expected ${Ie} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},vo=class{constructor(e={}){this.mt=new af(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/yi}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,r=yi-yi%n,i;do i=this.mt.nextUint32();while(i>=r);return e+i%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}};function Di(e){return new vo(e)}var _e=1,je=2;var Fi=8,Ui=16,sf=32;var of=16384;var Vn=65536,yo=1<<17,cf=1<<18,uf=1<<19,df=1<<20,mf=1<<21,lf=1<<22,hf=1<<23,k5=1<<24,nt=1<<25,Wn=1<<26,T5=1<<27,M5=1<<28,b5=1<<29,Et=1<<30,R5=1<<31;var z5=1<<25,L5=1<<28,N5=1<<29,O5=1<<30,I5=1<<31,ff=_e|je,C5=_e|Vn|je|nt|Et,P5=_e|Vn|je,Dn=_e|yo|je|nt|Et,gf=sf|Fi|Ui,D5=_e|Ui|Fi,Yt=_e|nt|Et|je|Wn,F5=cf|uf|df|mf|lf|hf,U5=_e|Fi|Ui|nt|Et,B5=_e|Vn|je,G5=_e|je,H5=_e|Vn|je|yo,V5=Yt|of,W5=Number.MAX_SAFE_INTEGER-1;var So=256,_f=256,pf=8192,vf=2048,yf=512,Sf=256,wf=So*2,xf=256,Si=32,wo=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+pf]="Sounds",e[e.Images=e.Sounds+vf]="Images",e[e.Lights=e.Images+yf]="Lights",e[e.ShadowLights=e.Lights+_f]="ShadowLights",e[e.Items=e.ShadowLights+xf]="Items",e[e.PlayerSkins=e.Items+Sf]="PlayerSkins",e[e.General=e.PlayerSkins+So]="General",e[e.WheelWeapons=e.General+wf]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Si]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Si]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Si]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(wo||{}),K5=wo.MaxConfigStrings,Af={};go(Af,{addReplayFrame:()=>Mf,createReplaySession:()=>Tf,deserializeReplay:()=>kf,serializeReplay:()=>Ef});function Ef(e){return JSON.stringify(e,null,2)}function kf(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function Tf(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Mf(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var pe=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e))(pe||{}),we=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(we||{});var $=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))($||{});var bf=12,Rf=9,X5=Math.ceil(bf*Rf/16),zf=23,Lf=2,$5=Math.ceil(zf*Lf/16);var Nf={};go(Nf,{U_ANGLE1:()=>Uf,U_ANGLE2:()=>Bf,U_ANGLE3:()=>Gf,U_EFFECTS:()=>Wf,U_EVENT:()=>$f,U_FRAME:()=>Hf,U_MODEL:()=>If,U_MODEL2:()=>jf,U_MODEL3:()=>qf,U_MODEL4:()=>Zf,U_MOREBITS:()=>Yf,U_NUMBER:()=>Of,U_ORIGIN1:()=>Pf,U_ORIGIN2:()=>Df,U_ORIGIN3:()=>Ff,U_REMOVE:()=>Jf,U_RENDERFX:()=>Kf,U_SKIN:()=>Vf,U_SOLID:()=>Xf,U_SOUND:()=>Cf});var Of=1,If=2,Cf=4,Pf=8,Df=16,Ff=32,Uf=64,Bf=128,Gf=256,Hf=512,Vf=1024,Wf=2048,Kf=4096,Xf=8192,$f=16384,Yf=32768,jf=1,qf=2,Zf=4,Jf=32768;var C=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="super_shotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.GrenadeLauncher="grenade_launcher",e.RocketLauncher="rocket_launcher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e))(C||{}),V=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(V||{}),Y5=Object.keys(V).length/2,ye=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e))(ye||{});function Ye(e,t){return(e&t)!==0}var kt=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(kt||{}),Qf={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}};function e1(e,t,n){if(e<=0||Ye(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let r=Qf[n.armorType],i=Ye(t,4)?r.energyProtection:r.normalProtection,a=Math.ceil(i*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function t1(e,t,n,r,i,a={}){if(i.health<=0||e<=0)return{saved:0,remainingCells:i.cellCount};if(Ye(t,258))return{saved:0,remainingCells:i.cellCount};if(!i.type||i.cellCount<=0)return{saved:0,remainingCells:i.cellCount};let{forward:s}=Q(i.angles),o={x:n.x-i.origin.x,y:n.y-i.origin.y,z:n.z-i.origin.z},c=Math.hypot(o.x,o.y,o.z);if(i.type==="screen"&&c>0){let g={x:o.x/c,y:o.y/c,z:o.z/c};if(g.x*s.x+g.y*s.y+g.z*s.z<=.3)return{saved:0,remainingCells:i.cellCount}}let u=a.ctfMode??!1,d=i.type==="screen"||u?1:2,m=i.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let l=i.cellCount*d;Ye(t,4)&&(l=Math.max(1,Math.floor(l/2))),l>m&&(l=Math.floor(m));let h=l/d;Ye(t,4)&&(h*=2),h=Math.max(1,Math.floor(h));let f=Math.max(d,h),p=Math.max(0,i.cellCount-f);return{saved:l,remainingCells:p}}var j5={[ye.Shells]:{id:ye.Shells,ammoType:V.Shells,quantity:10,weaponAmmo:!1},[ye.Bullets]:{id:ye.Bullets,ammoType:V.Bullets,quantity:50,weaponAmmo:!1},[ye.Rockets]:{id:ye.Rockets,ammoType:V.Rockets,quantity:5,weaponAmmo:!1},[ye.Grenades]:{id:ye.Grenades,ammoType:V.Grenades,quantity:5,weaponAmmo:!0},[ye.Cells]:{id:ye.Cells,ammoType:V.Cells,quantity:50,weaponAmmo:!1},[ye.Slugs]:{id:ye.Slugs,ammoType:V.Slugs,quantity:10,weaponAmmo:!1}};var oe=(e=>(e.Blue="blue",e.Red="red",e.Green="green",e.Yellow="yellow",e.DataCD="data_cd",e.PowerCube="power_cube",e.ExplosiveCharges="explosive_charges",e.PowerCore="power_core",e.Pyramid="pyramid",e.DataSpinner="data_spinner",e.Pass="pass",e.CommanderHead="commander_head",e.Airstrike="airstrike",e.NukeContainer="nuke_container",e.Nuke="nuke",e.RedFlag="red_flag",e.BlueFlag="blue_flag",e))(oe||{});var n1={...W};var q5=Object.freeze({aiflags:0,last_sighting:n1,trail_time:0,pausetime:0});var Bi=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],r1=20,i1=440,a1=940,wi=32,s1=1<<24,Fn=1;function ro(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function qe(e,t){let n=ro(e),r=ro(t),i=Zh(n.mins,n.maxs,r.mins,r.maxs);return Math.sqrt(i)}function o1(e){return e<=r1?"melee":e<=i1?"near":e<=a1?"mid":"far"}function Wt(e,t){let{forward:n}=Q(e.angles),r=P(O(t.origin,e.origin)),i=_o(r,n);return(e.spawnflags&Fn)!==0&&e.trail_time===0&&e.enemy===null?i>.15:i>-.3}function jt(e,t,n,r){if((t.flags&s1)!==0)return!1;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=r?.throughGlass?1:3,o=n(i,null,null,a,e,s);return o.fraction===1||o.ent===t}function c1(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=Pi(n)}function xo(e){e.angles.y=Mi(e.ideal_yaw)}function u1(e,t,n){e.enemy&&(e.goalentity=e.enemy,c1(e,e.enemy),xo(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function d1(e,t,n,r){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let i=e.monsterinfo.last_sighting;if(i.x=e.enemy.origin.x,i.y=e.enemy.origin.y,i.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){u1(e,t,n);return}let a=r?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function m1(e,t,n,r){let i=qe(e,t),a=o1(i);return a==="far"||t.light_level<=5||!jt(e,t,r,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||Wt(e,t):a==="mid"?Wt(e,t):!0}function l1(e,t,n,r,i){if((e.spawnflags&Fn)!==0){if(!jt(e,t,i))return!1}else if(r.canHear&&!r.canHear(e,t))return!1;let a=O(t.origin,e.origin);return At(a)>1e3||r.areasConnected&&!r.areasConnected(e,t)?!1:(e.ideal_yaw=Pi(a),xo(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function h1(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Fn)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&Fn)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function f1(e){return(e.flags&wi)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&wi)!==0:!!(e.enemy&&(e.enemy.flags&wi)!==0)}function Gi(e,t,n,r,i={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=h1(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(f1(a))return!1;if(s){if(!l1(e,a,t,i,r))return!1}else{if(!m1(e,a,t,r))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return d1(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function Ao(e,t){if(t===0)return{x:0,y:0,z:0};let n=Cn(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Hi(e,t,n){let r=Ao(t,n),i=e.origin;return i.x+=r.x,i.y+=r.y,i.z+=r.z,!0}function qt(e,t){let n=Mi(e.angles.y),r=e.ideal_yaw;if(n===r){e.angles.y=n;return}let i=e.yaw_speed*t*10,a=r-n;r>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>i?a=i:a<-i&&(a=-i),e.angles.y=Mi(n+a)}function ae(e,t){Hi(e,e.angles.y,t)}function Kn(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=Pi(n)}function ne(e,t,n){Gi(e,n.targetAwareness,n,n.trace)||qt(e,t)}function ce(e,t,n,r){if(!Gi(e,r.targetAwareness,r,r.trace)&&(Kn(e,e.goalentity),qt(e,n),t!==0&&Hi(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&qe(e,e.goalentity)<64&&e.goalentity.target)){let a=r.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function se(e,t,n,r){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,r);return}Gi(e,r.targetAwareness,r,r.trace),Kn(e,e.enemy??e.goalentity),qt(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Eo(e,e.angles.y,t,r)}function g1(e,t,n,r){t&&Kn(e,t),qt(e,r),n!==0&&Hi(e,e.angles.y,n)}function re(e,t,n,r){Kn(e,e.enemy),qt(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Eo(e,e.angles.y,t,r)}function _1(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},r=t.trace(e.origin,e.mins,e.maxs,n,e,Dn);if(e.groundentity=r.ent,!e.groundentity&&!r.allsolid&&!r.startsolid&&r.fraction===1){let i=t.pointcontents(n);i&gf?(e.waterlevel=1,e.watertype=i):(e.waterlevel=0,e.watertype=0)}}function p1(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},r={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},i={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?i={x:n.x,y:n.y,z:0}:i={x:r.x,y:n.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,Dn).fraction<1)||(s===1?i={x:n.x,y:r.y,z:0}:i={x:r.x,y:r.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0)||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,Dn).fraction<1))return!0;return!1}function Eo(e,t,n,r){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let i=Ao(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+i.x,y:e.origin.y+i.y,z:e.origin.z+i.z};if(r.trace(e.origin,e.mins,e.maxs,a,e,Dn).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!p1(e,r)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&_1(e,r),!0)}var v1=Bi.filter(e=>e.save||e.type==="callback"),Z5=new Map(v1.map(e=>[e.name,e]));var J5=1/40;function y1(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var S1=1;function w1(e,t){if(!e.client)return;let n=y1(e.client.weaponStates,C.Chaingun);!(e.client.buttons&S1)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var Q5={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:C.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:C.Shotgun,ammoType:V.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:C.SuperShotgun,ammoType:V.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:C.Machinegun,ammoType:V.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:w1},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:C.Chaingun,ammoType:V.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:C.GrenadeLauncher,ammoType:V.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:C.RocketLauncher,ammoType:V.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:C.HyperBlaster,ammoType:V.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:C.Railgun,ammoType:V.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:C.BFG10K,ammoType:V.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1}};function x1(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let r=1;return n.quad_time&&n.quad_time>t&&(r*=4),n.double_time&&n.double_time>t&&(r*=2),r}function A1(e,t,n,r,i){if(Ye(i,8)||((e.flags??0)&4)!==0||r===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=P(n),u=U(o,(t===e?1600:500)*r/s);return e.velocity=F(e.velocity,u),u}function E1(e,t,n,r,i){let a=r,s=0,o=0,c,u;if(e.powerArmor){let d=t1(r,i,t,n,e.powerArmor);s=d.saved,c=d.remainingCells,a-=s}if(e.regularArmor){let d=e1(a,i,e.regularArmor);o=d.saved,u=d.remainingArmor,a-=o}return[Math.max(0,a),s,o,c,u]}function io(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function le(e,t,n,r,i,a,s,o,c,u,d,m){if(!e.takedamage)return null;let l=x1(n,d),h=s*l,f=o*l;if(!Ye(c,32)&&((e.flags??0)&1)!==0&&h>0)return{take:0,psave:0,asave:h,knocked:{x:0,y:0,z:0},killed:!1};let g=A1(e,n,r,f,c),[y,E,v,x,w]=E1(e,i,a,h,c);e.powerArmor&&x!==void 0&&(e.powerArmor.cellCount=x),e.regularArmor&&(e.regularArmor.armorCount=w??e.regularArmor.armorCount);let A=y;A>0&&(e.health-=A,m&&!Ye(c,1024)&&(e.classname==="player"||e.monsterinfo)&&m(i,1,pe.temp_entity,we.BLOOD,i,a));let I=e.health<=0;return I?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,A,i,u):A>0&&e.pain&&e.pain(e,n,o,A,u),{take:A,psave:E,asave:v,knocked:g,killed:I,remainingCells:x,remainingArmor:w}}function Vi(e,t,n,r,i,a,s,o,c,u={},d){let m=[],l=io(t),h=u.canDamage??(()=>!0);for(let f of e){if(f===i||!f.takedamage||!h(f,t))continue;let p=f.mins&&f.maxs?qh(l,F(f.origin,f.mins),F(f.origin,f.maxs)):io(f),g=O(l,p),y=At(g);if(a>0&&y>a)continue;let E=r-.5*y;if(E<=0)continue;let v=f===n?E*.5:E,x=P(O(f.origin,l)),w=le(f,t,n,x,p,x,v,v,s|1,o,c,d);m.push({target:f,result:w,appliedDamage:v})}return m}var ek=Di();var Xn=.1,Vt=80,ko=Di();function k1(){return ko.frandom()}function To(e,t){return Math.floor(ko.frandom()*(t-e+1)+e)}function yt(e,t,n){ne(e,Xn,n)}function Te(e,t,n){ce(e,t,Xn,n)}function _t(e,t,n){se(e,t,Xn,n)}function ee(e,t,n){re(e,t,Xn,n)}function L(e,t,n){ae(e,t)}var Kt={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function ze(e,t){t.sound(e,2,Kt.footstep,1,1,0)}function Un(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function T1(e,t){}var Wi,Mo,M1,bo,b1,R1,z1,L1,N1,Ro,O1;function I1(e,t){Un(e,Wi)}function C1(e,t){e.monsterinfo.aiflags&1||e.enemy||k1()>.15||(Un(e,Mo),t.sound(e,1,Kt.idle,1,2,0))}var P1=[{ai:yt,dist:0,think:C1},{ai:yt,dist:0},{ai:yt,dist:0},{ai:yt,dist:0},{ai:yt,dist:0}];Wi={firstframe:0,lastframe:4,frames:P1,endfunc:null};var D1=Array.from({length:20},()=>({ai:yt,dist:0}));Mo={firstframe:5,lastframe:24,frames:D1,endfunc:I1};var F1=[{ai:Te,dist:9.1},{ai:Te,dist:6.3},{ai:Te,dist:4.9},{ai:Te,dist:6.7,think:ze},{ai:Te,dist:6},{ai:Te,dist:8.2},{ai:Te,dist:7.2},{ai:Te,dist:6.1},{ai:Te,dist:4.9},{ai:Te,dist:4.7,think:ze},{ai:Te,dist:4.7}];M1={firstframe:25,lastframe:35,frames:F1,endfunc:null};var U1=[{ai:_t,dist:21},{ai:_t,dist:11,think:ze},{ai:_t,dist:21},{ai:_t,dist:25,think:T1},{ai:_t,dist:18,think:ze},{ai:_t,dist:19}];bo={firstframe:36,lastframe:41,frames:U1,endfunc:null};function Zt(e,t){e.monsterinfo.aiflags&1?Un(e,Wi):Un(e,bo)}function zo(e,t,n,r,i){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=Q(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},c={x:a.x+s.x*Vt,y:a.y+s.y*Vt,z:a.z+s.z*Vt},u=i.trace(a,null,null,c,e,536870913);return!u.ent||!u.ent.takedamage?!1:(le(u.ent,e,e,s,u.endpos,u.plane?.normal||W,n,r,0,0,i.timeSeconds,i.multicast.bind(i)),!0)}function B1(e,t){zo(e,{x:Vt,y:0,z:-24},To(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function Lo(e,t){t.sound(e,1,Kt.punch,1,1,0)}var G1=[{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0,think:Lo},{ai:ee,dist:0,think:B1},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0}];b1={firstframe:67,lastframe:74,frames:G1,endfunc:Zt};function H1(e,t){zo(e,{x:Vt,y:0,z:-4},To(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var V1=[{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0,think:ze},{ai:ee,dist:0},{ai:ee,dist:0,think:Lo},{ai:ee,dist:0},{ai:ee,dist:0,think:H1},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0}];R1={firstframe:75,lastframe:86,frames:V1,endfunc:Zt};function No(e,t){t.sound(e,1,Kt.thud,1,1,0),t.sound(e,2,Kt.explod,.75,1,0);let{forward:n,right:r}=Q(e.angles),i={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*i.x+r.x*i.y,y:e.origin.y+n.y*i.x+r.y*i.y,z:e.origin.z+n.z*i.x+r.z*i.y+i.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,pe.temp_entity,we.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0};let o=8,c=300,u=165,d=t.findByRadius(s.endpos,u*2);for(let m of d){if(m===e||!m.takedamage)continue;let l=Math.sqrt(Math.pow(m.origin.x-s.endpos.x,2)+Math.pow(m.origin.y-s.endpos.y,2)+Math.pow(m.origin.z-s.endpos.z,2)),h=Math.max(0,1-l/u);if(h<=0)continue;let f=Math.max(1,o*h*h),p=c*h*h,g=P(O(m.origin,s.endpos));if(le(m,e,e,g,m.origin,g,f,p,1,0,t.timeSeconds,t.multicast.bind(t)),m.client){let y={...m.velocity};y.z=Math.max(270,y.z),m.velocity=y}}}function W1(e,t,n,r,i){if(e.health<=0){e.touch=void 0;return}}function Ki(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function K1(e,t){if(!e.enemy)return;let n=O(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=P({x:n.x,y:n.y,z:0}),s=$t(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*i,y:a.y*i,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(c,u,d,m)=>{W1(c,u,d,m,t),c.groundentity&&(c.frame=104,No(c,t),c.touch=void 0)},Ki(e,t)}function X1(e,t){if(Ki(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(No(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var $1=[{ai:ee,dist:0},{ai:ee,dist:0},{ai:L,dist:0,think:K1},{ai:L,dist:0,think:Ki},{ai:L,dist:0,think:X1},{ai:L,dist:0,think:ze},{ai:L,dist:0},{ai:L,dist:0,think:ze},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:ze}];z1={firstframe:87,lastframe:109,frames:$1,endfunc:Zt};var Y1=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];L1={firstframe:149,lastframe:152,frames:Y1,endfunc:Zt};var j1=Array.from({length:20},(e,t)=>({ai:L,dist:0,think:t%5===4?ze:void 0}));N1={firstframe:153,lastframe:172,frames:j1,endfunc:Zt};function Oo(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=Ro.lastframe,e.nextthink=-1,e.deadflag=2}var q1=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:ze},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];Ro={firstframe:173,lastframe:185,frames:q1,endfunc:Oo};var Z1=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:ze},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];O1={firstframe:186,lastframe:193,frames:Z1,endfunc:Oo};function J1(e,t,n,r,i,a,s,o=0){let c=e.spawn();c.classname="rocket",c.movetype=8,c.solid=2,c.owner=t,c.origin={...n},c.velocity={x:r.x*s,y:r.y*s,z:r.z*s},c.mins={x:-4,y:-4,z:-4},c.maxs={x:4,y:4,z:4},c.touch=(u,d,m,l)=>{if(d===u.owner)return;d&&d.takedamage&&le(d,u,u.owner,u.velocity,u.origin,m?m.normal:W,i,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(u.origin,120);Vi(h,u,u.owner,a,u.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,pe.temp_entity,we.ROCKET_EXPLOSION,u.origin),e.free(u)},e.finalizeSpawn(c)}function Io(e,t,n,r,i,a){let s=e.spawn();s.classname="grenade",s.owner=t,s.origin={...n},s.velocity={x:r.x*a,y:r.y*a,z:r.z*a},s.movetype=9,s.clipmask=268566530,s.solid=2,s.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),s.mins={x:-4,y:-4,z:-4},s.maxs={x:4,y:4,z:4};let o=c=>{let u=e.findByRadius(c.origin,120);Vi(u,c,c.owner,i,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,pe.temp_entity,we.GRENADE_EXPLOSION,c.origin),e.free(c)};s.touch=(c,u,d,m)=>{if(u!==c.owner&&u&&u.takedamage){o(c);return}},s.think=c=>{o(c)},e.scheduleThink(s,e.timeSeconds+2.5),e.finalizeSpawn(s)}function Q1(e,t,n,r,i,a,s){let o=e.spawn();o.classname=s===10?"hyperblaster_bolt":"blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(c,u,d,m)=>{u!==c.owner&&(u&&u.takedamage?le(u,c,c.owner,c.velocity,c.origin,d?d.normal:W,i,1,0,s,e.timeSeconds,e.multicast.bind(e)):d&&e.multicast(c.origin,1,pe.temp_entity,we.BLASTER,c.origin,d.normal),e.free(c))},e.finalizeSpawn(o)}function eg(e,t,n,r){let i={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=P(O(a,i)),o={x:i.x+s.x*2048,y:i.y+s.y*2048,z:i.z+s.z*2048},c=16,u=[],d=[],m={...i};try{for(let h=0;h<c;h++){let f=e.trace(m,null,null,o,t,_e|nt|Et|Wn);if(!f.ent||f.fraction>=1||(f.ent.takedamage&&f.ent!==t.owner&&le(f.ent,t,t.owner,s,f.endpos,W,r,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(f.ent.svflags&4)&&!f.ent.client&&f.ent.classname!=="misc_explobox"))break;u.push(f.ent),d.push(f.ent.solid),f.ent.solid=0,m={...f.endpos}}let l=e.trace(i,null,null,o,t,_e);e.multicast(t.origin,2,pe.temp_entity,we.BFG_LASER,i,l.endpos)}finally{for(let l=0;l<u.length;l++)u[l].solid=d[l]}}function tg(e,t){let n=t.deathmatch?5:10,r=t.findByRadius(e.origin,256);for(let i of r){if(i===e||i===e.owner||!i.takedamage||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let a={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5};t.trace(e.origin,null,null,a,null,ff).fraction<1||eg(t,e,i,n)}t.scheduleThink(e,t.timeSeconds+.1)}function ng(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let r of n){if(!r.takedamage||r===e.owner||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let i={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5},a=O(e.origin,i),s=At(a),o=e.dmg_radius||100,c=(e.radius_dmg||200)*(1-Math.sqrt(s/o));c>0&&le(r,e,e.owner,e.velocity,i,W,Math.floor(c),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function rg(e,t,n,r,i,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=i,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(c,u,d,m)=>{if(u===c.owner)return;u&&u.takedamage&&le(u,c,c.owner,c.velocity,c.origin,d?d.normal:W,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let l=e.findByRadius(c.origin,100);Vi(l,c,c.owner,200,u,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,pe.temp_entity,we.BFG_BIGEXPLOSION,c.origin),c.solid=0,c.touch=void 0,c.velocity=W,c.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),c.frame=0,c.enemy=u,c.think=(h,f)=>ng(h,f),e.scheduleThink(c,e.timeSeconds+.1)},o.think=(c,u)=>tg(c,u),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function ao(){return 2*Math.random()-1}function Bn(e,t,n,r,i,a,s,o,c,u=0){let d=n;if(a>0||s>0){let h=$t(n),{right:f,up:p}=Q(h),g=ao()*a,y=ao()*s;d={x:n.x+f.x*g+p.x*y,y:n.y+f.y*g+p.y*y,z:n.z+f.z*g+p.z*y},d=P(d)}let m=F(t,U(d,8192)),l=c.trace(t,m,W,W,e,Yt);!l.ent||l.fraction===1||le(l.ent,e,e,d,l.endpos,l.plane?.normal||W,r,i,18,u,c.timeSeconds)}var tt=Bn;function ig(e,t,n,r,i,a,s,o,c,u,d=2){for(let m=0;m<o;m++)tt(e,t,n,r,i,a,s,c,u,d)}function He(e,t,n,r,i,a,s,o,c=1){Q1(o,e,t,n,r,i,c)}function ag(e,t,n,r,i,a,s){Io(s,e,t,n,r,i)}function Jt(e,t,n,r,i,a,s){J1(s,e,t,n,r,120,i)}function Co(e,t,n,r,i,a,s,o,c){rg(c,e,t,n,r,i,s)}function Po(e,t,n,r,i,a,s){let o=F(t,U(n,8192)),c=s.trace(t,o,W,W,e,Yt);s.multicast(t,2,pe.temp_entity,we.RAILTRAIL,t,c.endpos),c.ent&&c.ent.takedamage&&le(c.ent,e,e,n,c.endpos,W,r,i,6,11,s.timeSeconds)}function Qt(e,t,n,r,i){if(!e.enemy)return!1;let{forward:a}=Q(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,c=F(s,U(a,o)),u=i.trace(s,c,W,W,e,Yt);if(u.ent===e.enemy||u.ent&&u.ent.takedamage){let d=P(O(u.endpos,s));return le(u.ent,e,e,d,u.endpos,u.plane?.normal||W,n,r,0,0,i.timeSeconds),!0}return!1}function sg(e,t,n,r,i,a,s,o){Jt(e,t,n,r,i,a,o)}function so(e,t){let n={...e.origin},r=F(n,U(e.movedir,2048)),i=t.trace(n,r,W,W,e,_e|nt|Et|Wn);e.dmg>0&&i.ent&&i.ent.takedamage&&i.ent!==e.owner&&le(i.ent,e,e.owner,e.movedir,i.endpos,W,e.dmg,0,4,31,t.timeSeconds),i.ent&&i.ent.solid===3&&t.multicast(i.endpos,1,pe.temp_entity,we.LASER_SPARKS,10,i.endpos,i.plane?.normal||W,e.skin),t.linkentity(e)}function og(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function oo(e,t,n,r,i){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=i.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,e.monsterinfo.aiflags&64?a.skin=4092850673:a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?og(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{r(s,o),so(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=i.timeSeconds+.2,a.nextthink=i.timeSeconds+.01,r(a,i),so(a,i)}var Xi=.1,cg={x:0,y:30,z:-15},ug={x:0,y:15,z:0},dg={x:0,y:-15,z:0},mg={x:0,y:-30,z:-15},lg={x:30,y:20,z:0},hg={x:30,y:-20,z:0};function fg(e,t,n){ne(e,Xi,n)}function gg(e,t,n){ce(e,t,Xi,n)}function $n(e,t,n){re(e,t,Xi,n)}function $i(e,t,n){ae(e,t)}var Yi,Do,Fo,_g,Uo,Bo,pg,vg,yg,Go;function Sg(e){e.monsterinfo.current_move=Yi}function wg(e){e.monsterinfo.current_move=Do}function en(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Fo:e.monsterinfo.current_move=Yi}function Ho(e){e.monsterinfo.current_move=Uo}function xg(e){e.enemy&&Wt(e,e.enemy)&&Math.random()<=.7?Ho(e):e.monsterinfo.current_move=Bo}function bi(e,t){let{forward:n,right:r,up:i}=Q(e.angles),a={...e.origin},s=U(n,t.x),o=U(r,t.y),c=U(i,t.z);return F(F(F(a,s),o),c)}function Ag(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=bi(e,lg),r=P(O(e.enemy.origin,n));tt(e,n,r,6,4,.1,.05,0,t,4);let i=bi(e,hg),a=P(O(e.enemy.origin,i));tt(e,i,a,6,4,.1,.05,0,t,4)}function Eg(e,t){if(!e.enemy)return;let n=[cg,ug,dg,mg],r=n[Math.floor(Math.random()*n.length)],i=bi(e,r),a=P(O(e.enemy.origin,i));Jt(e,i,a,50,500,0,t)}function kg(e){e.monsterinfo.nextframe=Go.lastframe,e.nextthink=-1}var Vo=Array.from({length:20},()=>({ai:gg,dist:10}));Do={firstframe:0,lastframe:19,frames:Vo,endfunc:wg};Fo={firstframe:0,lastframe:19,frames:Vo,endfunc:en};var Tg=Array.from({length:21},()=>({ai:fg,dist:0}));Yi={firstframe:29,lastframe:49,frames:Tg,endfunc:Sg};var Mg=Array.from({length:9},(e,t)=>({ai:$n,dist:2,think:t===8?Ho:null}));_g={firstframe:50,lastframe:58,frames:Mg,endfunc:null};var bg=Array.from({length:6},()=>({ai:$n,dist:2,think:Ag}));Uo={firstframe:59,lastframe:64,frames:bg,endfunc:xg};var Rg=Array.from({length:4},()=>({ai:$n,dist:2}));Bo={firstframe:65,lastframe:68,frames:Rg,endfunc:en};var zg=Array.from({length:21},(e,t)=>({ai:$n,dist:2,think:t===12?Eg:null}));pg={firstframe:69,lastframe:89,frames:zg,endfunc:en};var Lg=Array.from({length:18},()=>({ai:$i,dist:0}));vg={firstframe:90,lastframe:107,frames:Lg,endfunc:en};var Ng=Array.from({length:4},()=>({ai:$i,dist:0}));yg={firstframe:108,lastframe:111,frames:Ng,endfunc:en};var Og=Array.from({length:49},()=>({ai:$i,dist:0}));Go={firstframe:112,lastframe:160,frames:Og,endfunc:kg};var Yn=.1,ji=80,jn=Math.random;function Wo(e,t,n){ne(e,Yn,n)}function Me(e,t,n){ce(e,t,Yn,n)}function be(e,t,n){se(e,t,Yn,n)}function k(e,t,n){re(e,t,Yn,n)}function R(e,t,n){ae(e,t)}var qi,Ig,Cg,Ko,Xo,Pg,Dg,Fg,Ug,Bg,Gg,Hg,Vg,Wg;function $o(e){e.monsterinfo.current_move=qi}function Ze(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=qi:e.monsterinfo.current_move=Ko}function Kg(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function Xg(e,t){let n={x:ji,y:e.maxs.x,z:8};Qt(e,n,15+Math.floor(jn()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function $g(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function Yg(e,t){let n={x:ji,y:e.mins.x,z:8};Qt(e,n,15+Math.floor(jn()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Yo(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function jo(e,t){Qt(e,{x:ji,y:0,z:8},10+Math.floor(jn()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function qo(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Xo)}function co(e,t){if(!e.enemy)return;let n=Q(e.angles).forward,r={...e.origin};r.z+=24;let i={...e.enemy.origin};if(t.trace(r,i,W,W,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,pe.temp_entity,we.PARASITE_ATTACK,e,r,i);let s=O(r,i);le(e.enemy,e,e,s,e.enemy.origin,W,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=Q(e.angles).forward;e.enemy.velocity=U(o,-1200)}var uo=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],mo=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function jg(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=Q(n.angles),s=n.frame-0;(s<0||s>=uo.length)&&(s=0);let o=uo[s],c=F(n.origin,U(i,o.x));c=F(c,U(r,o.y)),c=F(c,U(a,o.z));let u=P(O(n.enemy.origin,c));e.origin=c,e.movedir=u,t.linkentity(e)}function qg(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=Q(n.angles),s=n.frame-0;(s<0||s>=mo.length)&&(s=0);let o=mo[s],c=F(n.origin,U(i,o.x));c=F(c,U(r,o.y)),c=F(c,U(a,o.z));let u=P(O(n.enemy.origin,c));e.origin=c,e.movedir=u,t.linkentity(e)}function Ce(e,t){oo(e,1,!1,jg,t),oo(e,1,!0,qg,t)}function Zg(e){jn()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function Jg(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function Qg(e){}function e_(e){e.monsterinfo.aiflags&=-17}var t_=Array.from({length:30},()=>({ai:Wo,dist:0}));qi={firstframe:162,lastframe:191,frames:t_,endfunc:$o};var n_=Array.from({length:30},()=>({ai:Wo,dist:0}));Ig={firstframe:192,lastframe:221,frames:n_,endfunc:$o};var r_=[{ai:Me,dist:7},{ai:Me,dist:2},{ai:Me,dist:3},{ai:Me,dist:3},{ai:Me,dist:1},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:9},{ai:Me,dist:-4},{ai:Me,dist:-1},{ai:Me,dist:2}];Cg={firstframe:0,lastframe:10,frames:r_,endfunc:null};var i_=[{ai:be,dist:9},{ai:be,dist:2},{ai:be,dist:3},{ai:be,dist:3},{ai:be,dist:1},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:10},{ai:be,dist:-4},{ai:be,dist:-1},{ai:be,dist:2}];Ko={firstframe:0,lastframe:10,frames:i_,endfunc:null};var a_=[{ai:k,dist:8},{ai:k,dist:3},{ai:k,dist:5},{ai:k,dist:0},{ai:k,dist:-3,think:Kg},{ai:k,dist:0},{ai:k,dist:-5},{ai:k,dist:-7,think:Xg},{ai:k,dist:0},{ai:k,dist:6,think:$g},{ai:k,dist:1},{ai:k,dist:2,think:Yg},{ai:k,dist:-3},{ai:k,dist:6},{ai:k,dist:-1},{ai:k,dist:-3},{ai:k,dist:2},{ai:k,dist:-11}];Xo={firstframe:53,lastframe:70,frames:a_,endfunc:Ze};var s_=[{ai:k,dist:5},{ai:k,dist:-4},{ai:k,dist:-4},{ai:k,dist:-3},{ai:k,dist:0,think:Yo},{ai:k,dist:0},{ai:k,dist:13,think:jo},{ai:k,dist:0},{ai:k,dist:2},{ai:k,dist:0},{ai:k,dist:-9,think:qo},{ai:k,dist:0},{ai:k,dist:4},{ai:k,dist:3},{ai:k,dist:2},{ai:k,dist:-3},{ai:k,dist:-6}];Pg={firstframe:71,lastframe:87,frames:s_,endfunc:Ze};var o_=[{ai:k,dist:5},{ai:k,dist:-4},{ai:k,dist:-4},{ai:k,dist:-3},{ai:k,dist:0,think:Yo},{ai:k,dist:0,think:co},{ai:k,dist:13},{ai:k,dist:0,think:jo},{ai:k,dist:2},{ai:k,dist:0,think:co},{ai:k,dist:-9,think:qo},{ai:k,dist:0},{ai:k,dist:4},{ai:k,dist:3},{ai:k,dist:2},{ai:k,dist:-3},{ai:k,dist:-6}];Dg={firstframe:71,lastframe:87,frames:o_,endfunc:Ze};var c_=[{ai:k,dist:9,think:Ce},{ai:k,dist:2,think:Ce},{ai:k,dist:3,think:Ce},{ai:k,dist:3,think:Ce},{ai:k,dist:1,think:Ce},{ai:k,dist:0,think:Ce},{ai:k,dist:0,think:Ce},{ai:k,dist:10,think:Ce},{ai:k,dist:-4,think:Ce},{ai:k,dist:-1,think:Ce},{ai:k,dist:2,think:Zg}];Fg={firstframe:0,lastframe:10,frames:c_,endfunc:Ze};var u_=[{ai:R,dist:-6},{ai:R,dist:-2},{ai:R,dist:-6},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:2},{ai:R,dist:0},{ai:R,dist:2},{ai:R,dist:1},{ai:R,dist:7},{ai:R,dist:0},{ai:R,dist:3},{ai:R,dist:-1}];Ug={firstframe:88,lastframe:108,frames:u_,endfunc:Ze};var d_=[{ai:R,dist:-2},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:3},{ai:R,dist:1},{ai:R,dist:-2}];Bg={firstframe:109,lastframe:116,frames:d_,endfunc:Ze};var m_=[{ai:R,dist:-2},{ai:R,dist:2},{ai:R,dist:1},{ai:R,dist:3},{ai:R,dist:0},{ai:R,dist:-4}];Gg={firstframe:117,lastframe:122,frames:m_,endfunc:Ze};var l_=Array.from({length:18},()=>({ai:R,dist:0}));Hg={firstframe:123,lastframe:140,frames:l_,endfunc:Zo};var h_=[{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:9},{ai:R,dist:0}];Vg={firstframe:141,lastframe:145,frames:h_,endfunc:Zo};var f_=[{ai:R,dist:0},{ai:R,dist:-2,think:Jg},{ai:R,dist:17,think:Qg},{ai:R,dist:-3},{ai:R,dist:-1,think:e_},{ai:R,dist:-5},{ai:R,dist:-6},{ai:R,dist:-6}];Wg={firstframe:146,lastframe:153,frames:f_,endfunc:Ze};function Zo(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var qn=.1,g_=80,Tt=Math.random;function Jo(e,t,n){ne(e,qn,n)}function __(e,t,n){ce(e,t,qn,n)}function p_(e,t,n){se(e,t,qn,n)}function z(e,t,n){re(e,t,qn,n)}function Mt(e,t,n){ae(e,t)}var Zi,Qo,ec,v_,Ji,Ri,y_,Qi,tc,S_,w_,x_,A_,E_,k_,nc;function rc(e){e.monsterinfo.current_move=Zi}function T_(e){e.monsterinfo.current_move=Qo}function rt(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Zi;return}e.monsterinfo.current_move=ec}function M_(e){e.monsterinfo.aiflags&4||e.enemy||Tt()<=.3&&(e.monsterinfo.current_move=nc)}function b_(e,t){Tt()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function R_(e,t){let n={x:g_,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),Qt(e,n,10+Math.floor(Tt()*6),100,t)}function z_(e,t){let{forward:n,right:r}=Q(e.angles),i={x:0,y:20,z:40},a=F(e.origin,U(n,i.x)),s=U(r,i.y),o=F(a,s),c={...o,z:o.z+i.z},u=e.skin>1?500:650,d=!!e.monsterinfo.blindfire,m=W;if(d&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let l=O(m,c);!d&&e.enemy&&(Tt()<.33||c.z<e.enemy.absmin.z?l={...l,z:l.z+e.enemy.viewheight}:l={...l,z:e.enemy.absmin.z+1-c.z});let h=P(l);e.skin>1?sg(e,c,h,50,u,0,.075,t):Jt(e,c,h,50,u,0,t)}function L_(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=O(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=$t(n).y}}function N_(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function O_(e){e.monsterinfo.current_move=Ji}function I_(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Ri;return}if(e.enemy&&e.enemy.health>0&&Tt()<=.6){e.monsterinfo.current_move=Ji;return}e.monsterinfo.current_move=Ri}function C_(e){if(e.enemy&&e.enemy.health>0&&Tt()<=.9){e.monsterinfo.current_move=Qi;return}e.monsterinfo.current_move=tc}function P_(e){e.monsterinfo.current_move=Qi}var D_=Array.from({length:30},(e,t)=>({ai:Jo,dist:0,think:t===8?(n,r)=>b_(n,r):null}));nc={firstframe:201,lastframe:230,frames:D_,endfunc:rc};var F_=Array.from({length:30},(e,t)=>({ai:Jo,dist:0,think:t===29?M_:null}));Zi={firstframe:101,lastframe:130,frames:F_,endfunc:rc};var U_=Array.from({length:10},()=>({ai:__,dist:6}));Qo={firstframe:171,lastframe:180,frames:U_,endfunc:T_};var B_=Array.from({length:10},()=>({ai:p_,dist:12}));ec={firstframe:171,lastframe:180,frames:B_,endfunc:rt};var G_=Array.from({length:5},()=>({ai:Mt,dist:0}));S_={firstframe:90,lastframe:94,frames:G_,endfunc:rt};var H_=Array.from({length:5},()=>({ai:Mt,dist:0}));w_={firstframe:95,lastframe:99,frames:H_,endfunc:rt};var V_=Array.from({length:21},()=>({ai:Mt,dist:0}));x_={firstframe:100,lastframe:120,frames:V_,endfunc:rt};var W_=Array.from({length:12},()=>({ai:Mt,dist:0}));A_={firstframe:48,lastframe:59,frames:W_,endfunc:ic};var K_=Array.from({length:23},()=>({ai:Mt,dist:0}));E_={firstframe:60,lastframe:82,frames:K_,endfunc:ic};function ic(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var X_=[{ai:z,dist:0,think:L_},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:4},{ai:z,dist:0},{ai:z,dist:-3},{ai:z,dist:3},{ai:z,dist:5},{ai:z,dist:7},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0,think:O_}];v_={firstframe:0,lastframe:12,frames:X_,endfunc:null};var $_=[{ai:z,dist:19,think:z_},{ai:z,dist:-6},{ai:z,dist:-5},{ai:z,dist:-2},{ai:z,dist:-7},{ai:z,dist:0},{ai:z,dist:1},{ai:z,dist:10,think:N_},{ai:z,dist:4},{ai:z,dist:5},{ai:z,dist:6},{ai:z,dist:6},{ai:z,dist:4},{ai:z,dist:3,think:I_}];Ji={firstframe:13,lastframe:26,frames:$_,endfunc:null};var Y_=[{ai:z,dist:-3},{ai:z,dist:0},{ai:z,dist:-6},{ai:z,dist:-4},{ai:z,dist:-2}];Ri={firstframe:27,lastframe:31,frames:Y_,endfunc:rt};var j_=[{ai:z,dist:1},{ai:z,dist:8},{ai:z,dist:3}];y_={firstframe:32,lastframe:34,frames:j_,endfunc:P_};var q_=[{ai:z,dist:1},{ai:z,dist:7,think:R_},{ai:z,dist:-7},{ai:z,dist:1},{ai:z,dist:-1},{ai:z,dist:1},{ai:z,dist:0},{ai:z,dist:1},{ai:z,dist:-2,think:C_}];Qi={firstframe:35,lastframe:43,frames:q_,endfunc:null};var Z_=[{ai:z,dist:-6},{ai:z,dist:-1},{ai:z,dist:-6},{ai:z,dist:0}];tc={firstframe:44,lastframe:47,frames:Z_,endfunc:rt};var J_=Array.from({length:7},()=>({ai:Mt,dist:0}));k_={firstframe:83,lastframe:89,frames:J_,endfunc:rt};var Zn=.1,Q_=80,ep=24;function tp(e,t,n){ne(e,Zn,n)}function np(e,t,n){ce(e,t,Zn,n)}function ac(e,t,n){se(e,t,Zn,n)}function ie(e,t,n){re(e,t,Zn,n)}function ea(e,t,n){ae(e,t)}var rp,ip,sc,oc,ap,sp,op,cp;function up(e){e.monsterinfo.current_move=oc}function ta(e){e.monsterinfo.current_move=sc}function lo(e,t){Qt(e,{x:Q_,y:0,z:0},5,0,t)}function dp(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var mp=[{ai:tp,dist:0}];rp={firstframe:41,lastframe:41,frames:mp,endfunc:null};var lp=Array.from({length:24},()=>({ai:ac,dist:ep}));oc={firstframe:70,lastframe:93,frames:lp,endfunc:null};var hp=Array.from({length:6},()=>({ai:ac,dist:8}));sc={firstframe:65,lastframe:70,frames:hp,endfunc:up};var fp=Array.from({length:24},()=>({ai:np,dist:4}));ip={firstframe:41,lastframe:64,frames:fp,endfunc:null};var gp=Array.from({length:5},()=>({ai:ea,dist:0}));sp={firstframe:99,lastframe:103,frames:gp,endfunc:ta};var _p=Array.from({length:5},()=>({ai:ea,dist:0}));op={firstframe:94,lastframe:98,frames:_p,endfunc:ta};var pp=[{ai:ie,dist:0,think:dp},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0,think:lo},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0,think:lo},{ai:ie,dist:0}];ap={firstframe:0,lastframe:19,frames:pp,endfunc:ta};function vp(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var yp=Array.from({length:56},()=>({ai:ea,dist:0}));cp={firstframe:104,lastframe:159,frames:yp,endfunc:vp};var Jn=.1;function Sp(e,t,n){ne(e,Jn,n)}function wp(e,t,n){ce(e,t,Jn,n)}function xp(e,t,n){se(e,t,Jn,n)}function Ap(e,t,n){re(e,t,Jn,n)}function cc(e,t,n){ae(e,t)}var na,uc,dc,Ep,kp,mc;function Tp(e){e.monsterinfo.current_move=na}function Mp(e){e.monsterinfo.current_move=uc}function ra(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=dc:e.monsterinfo.current_move=na}function bp(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function Rp(e){e.monsterinfo.nextframe=mc.lastframe,e.nextthink=-1}var zp=Array.from({length:46},()=>({ai:Sp,dist:0}));na={firstframe:0,lastframe:45,frames:zp,endfunc:Tp};var Lp=Array.from({length:46},()=>({ai:wp,dist:5}));uc={firstframe:0,lastframe:45,frames:Lp,endfunc:Mp};var Np=Array.from({length:46},()=>({ai:xp,dist:10}));dc={firstframe:0,lastframe:45,frames:Np,endfunc:ra};var Op=Array.from({length:20},(e,t)=>({ai:Ap,dist:0,think:t===10?bp:null}));Ep={firstframe:46,lastframe:65,frames:Op,endfunc:ra};var Ip=Array.from({length:6},()=>({ai:cc,dist:0}));kp={firstframe:66,lastframe:71,frames:Ip,endfunc:ra};var Cp=Array.from({length:10},()=>({ai:cc,dist:0}));mc={firstframe:84,lastframe:93,frames:Cp,endfunc:Rp};var Qn=.1;function Pp(e,t,n){ne(e,Qn,n)}function Dp(e,t,n){ce(e,t,Qn,n)}function Fp(e,t,n){se(e,t,Qn,n)}function Up(e,t,n){re(e,t,Qn,n)}function lc(e,t,n){ae(e,t)}var ia,hc,fc,Bp,Gp,gc;function Hp(e){e.monsterinfo.current_move=ia}function Vp(e){e.monsterinfo.current_move=hc}function aa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=fc:e.monsterinfo.current_move=ia}function Wp(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function Kp(e,t){if(!e.enemy)return;let n=5+Math.random()*5;qe(e,e.enemy)<=80&&Wt(e,e.enemy)&&le(e.enemy,e,e,P(O(e.enemy.origin,e.origin)),e.enemy.origin,W,n,5,2,0,t.timeSeconds)}function Xp(e){e.monsterinfo.nextframe=gc.lastframe,e.nextthink=-1}var $p=Array.from({length:46},()=>({ai:Pp,dist:0}));ia={firstframe:0,lastframe:45,frames:$p,endfunc:Hp};var Yp=Array.from({length:46},()=>({ai:Dp,dist:5}));hc={firstframe:0,lastframe:45,frames:Yp,endfunc:Vp};var jp=Array.from({length:46},()=>({ai:Fp,dist:10}));fc={firstframe:0,lastframe:45,frames:jp,endfunc:aa};var qp=Array.from({length:20},(e,t)=>({ai:Up,dist:0,think:t===10?Wp:t===12?Kp:null}));Bp={firstframe:46,lastframe:65,frames:qp,endfunc:aa};var Zp=Array.from({length:6},()=>({ai:lc,dist:0}));Gp={firstframe:66,lastframe:71,frames:Zp,endfunc:aa};var Jp=Array.from({length:10},()=>({ai:lc,dist:0}));gc={firstframe:84,lastframe:93,frames:Jp,endfunc:Xp};var er=.1;function Qp(e,t,n){ne(e,er,n)}function ev(e,t,n){ce(e,t,er,n)}function tv(e,t,n){se(e,t,er,n)}function _c(e,t,n){re(e,t,er,n)}function pc(e,t,n){ae(e,t)}var sa,vc,yc,nv,rv,iv,Sc;function av(e){e.monsterinfo.current_move=sa}function sv(e){e.monsterinfo.current_move=vc}function tr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=yc:e.monsterinfo.current_move=sa}function ov(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function cv(e,t){if(!e.enemy||!Wt(e,e.enemy))return;let n=qe(e,e.enemy);if(ov(n)!=="melee")return;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=P(O(e.enemy.origin,r));le(e.enemy,e,e,i,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function uv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(O(e.enemy.origin,n));Po(e,n,r,50,100,0,t)}function dv(e){e.monsterinfo.nextframe=Sc.lastframe,e.nextthink=-1}var mv=Array.from({length:30},()=>({ai:Qp,dist:0}));sa={firstframe:0,lastframe:29,frames:mv,endfunc:av};var lv=Array.from({length:40},()=>({ai:ev,dist:3}));vc={firstframe:30,lastframe:69,frames:lv,endfunc:sv};var hv=Array.from({length:20},()=>({ai:tv,dist:12}));yc={firstframe:70,lastframe:89,frames:hv,endfunc:tr};var fv=Array.from({length:10},(e,t)=>({ai:_c,dist:0,think:t===5?cv:null}));nv={firstframe:90,lastframe:99,frames:fv,endfunc:tr};var gv=Array.from({length:12},(e,t)=>({ai:_c,dist:0,think:t===6?uv:null}));rv={firstframe:100,lastframe:111,frames:gv,endfunc:tr};var _v=Array.from({length:6},()=>({ai:pc,dist:0}));iv={firstframe:112,lastframe:117,frames:_v,endfunc:tr};var pv=Array.from({length:12},()=>({ai:pc,dist:0}));Sc={firstframe:118,lastframe:129,frames:pv,endfunc:dv};var nr=.1;function vv(e,t,n){ne(e,nr,n)}function yv(e,t,n){ce(e,t,nr,n)}function Sv(e,t,n){se(e,t,nr,n)}function wc(e,t,n){re(e,t,nr,n)}function xc(e,t,n){ae(e,t)}var oa,Ac,Ec,wv,xv,Av,kc;function Ev(e){e.monsterinfo.current_move=oa}function kv(e){e.monsterinfo.current_move=Ac}function rr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ec:e.monsterinfo.current_move=oa}function Tv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},r=P(O(e.enemy.origin,n)),i=10,a=2;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),tt(e,n,r,i,a,0,0,0,t,5)}function Mv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n)),i=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Io(t,e,n,r,i,a)}var bv=Array.from({length:30},()=>({ai:vv,dist:0}));oa={firstframe:0,lastframe:29,frames:bv,endfunc:Ev};var Rv=Array.from({length:40},()=>({ai:yv,dist:2}));Ac={firstframe:30,lastframe:69,frames:Rv,endfunc:kv};var zv=Array.from({length:20},()=>({ai:Sv,dist:10}));Ec={firstframe:70,lastframe:89,frames:zv,endfunc:rr};var Lv=Array.from({length:10},(e,t)=>({ai:wc,dist:0,think:t>=2&&t<=8?Tv:null}));wv={firstframe:90,lastframe:99,frames:Lv,endfunc:rr};var Nv=Array.from({length:10},(e,t)=>({ai:wc,dist:0,think:t===5?Mv:null}));xv={firstframe:100,lastframe:109,frames:Nv,endfunc:rr};var Ov=Array.from({length:8},()=>({ai:xc,dist:0}));Av={firstframe:110,lastframe:117,frames:Ov,endfunc:rr};var Iv=Array.from({length:15},()=>({ai:xc,dist:0}));function Cv(e){e.monsterinfo.nextframe=kc.lastframe,e.nextthink=-1}kc={firstframe:118,lastframe:132,frames:Iv,endfunc:Cv};var ir=.1;function Pv(e,t,n){ne(e,ir,n)}function Dv(e,t,n){ce(e,t,ir,n)}function Fv(e,t,n){se(e,t,ir,n)}function Uv(e,t,n){re(e,t,ir,n)}function Tc(e,t,n){ae(e,t)}var ca,Mc,bc,Bv,Gv,Rc;function Hv(e){e.monsterinfo.current_move=ca}function Vv(e){e.monsterinfo.current_move=Mc}function ua(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=bc:e.monsterinfo.current_move=ca}function Wv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function Kv(e){e.monsterinfo.nextframe=Rc.lastframe,e.nextthink=-1}var Xv=Array.from({length:46},()=>({ai:Pv,dist:0}));ca={firstframe:0,lastframe:45,frames:Xv,endfunc:Hv};var $v=Array.from({length:46},()=>({ai:Dv,dist:5}));Mc={firstframe:0,lastframe:45,frames:$v,endfunc:Vv};var Yv=Array.from({length:46},()=>({ai:Fv,dist:10}));bc={firstframe:0,lastframe:45,frames:Yv,endfunc:ua};var jv=Array.from({length:20},(e,t)=>({ai:Uv,dist:0,think:t===10?Wv:null}));Bv={firstframe:46,lastframe:65,frames:jv,endfunc:ua};var qv=Array.from({length:6},()=>({ai:Tc,dist:0}));Gv={firstframe:66,lastframe:71,frames:qv,endfunc:ua};var Zv=Array.from({length:10},()=>({ai:Tc,dist:0}));Rc={firstframe:84,lastframe:93,frames:Zv,endfunc:Kv};var ar=.1;function Jv(e,t,n){ne(e,ar,n)}function Qv(e,t,n){ce(e,t,ar,n)}function ey(e,t,n){se(e,t,ar,n)}function ty(e,t,n){re(e,t,ar,n)}function zc(e,t,n){ae(e,t)}var da,Lc,Nc,ny,ry,Oc;function iy(e){e.monsterinfo.current_move=da}function ay(e){e.monsterinfo.current_move=Lc}function ma(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Nc:e.monsterinfo.current_move=da}function sy(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function oy(e){e.monsterinfo.nextframe=Oc.lastframe,e.nextthink=-1}var cy=Array.from({length:46},()=>({ai:Jv,dist:0}));da={firstframe:0,lastframe:45,frames:cy,endfunc:iy};var uy=Array.from({length:46},()=>({ai:Qv,dist:5}));Lc={firstframe:0,lastframe:45,frames:uy,endfunc:ay};var dy=Array.from({length:46},()=>({ai:ey,dist:10}));Nc={firstframe:0,lastframe:45,frames:dy,endfunc:ma};var my=Array.from({length:20},(e,t)=>({ai:ty,dist:0,think:t===10?sy:null}));ny={firstframe:46,lastframe:65,frames:my,endfunc:ma};var ly=Array.from({length:6},()=>({ai:zc,dist:0}));ry={firstframe:66,lastframe:71,frames:ly,endfunc:ma};var hy=Array.from({length:10},()=>({ai:zc,dist:0}));Oc={firstframe:84,lastframe:93,frames:hy,endfunc:oy};var sr=.1;function fy(e,t,n){ne(e,sr,n)}function gy(e,t,n){ce(e,t,sr,n)}function _y(e,t,n){se(e,t,sr,n)}function py(e,t,n){re(e,t,sr,n)}function la(e,t,n){ae(e,t)}var ha,Ic,Cc,vy,yy,Pc,Sy;function wy(e){e.monsterinfo.current_move=ha}function xy(e){e.monsterinfo.current_move=Ic}function or(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Cc:e.monsterinfo.current_move=ha}function Ay(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},i=P(O(r,n));tt(e,n,i,5,2,.05,.05,0,t,4)}var Ey=Array.from({length:22},()=>({ai:fy,dist:0}));ha={firstframe:0,lastframe:21,frames:Ey,endfunc:wy};var ky=Array.from({length:15},()=>({ai:gy,dist:4}));Ic={firstframe:22,lastframe:36,frames:ky,endfunc:xy};var Ty=Array.from({length:8},()=>({ai:_y,dist:12}));Cc={firstframe:37,lastframe:44,frames:Ty,endfunc:or};var My=Array.from({length:15},(e,t)=>({ai:py,dist:0,think:t>=5&&t<=7?Ay:null}));vy={firstframe:45,lastframe:59,frames:My,endfunc:or};var by=Array.from({length:10},()=>({ai:la,dist:0}));yy={firstframe:60,lastframe:69,frames:by,endfunc:or};var Ry=Array.from({length:20},()=>({ai:la,dist:0}));function zy(e){e.monsterinfo.nextframe=Pc.lastframe,e.nextthink=-1}Pc={firstframe:70,lastframe:89,frames:Ry,endfunc:zy};var Ly=Array.from({length:5},()=>({ai:la,dist:0}));Sy={firstframe:90,lastframe:94,frames:Ly,endfunc:or};var cr=.1,Ny={x:40,y:-20,z:20},Oy={x:40,y:20,z:20},Iy={x:30,y:0,z:40};function Cy(e,t,n){ne(e,cr,n)}function Py(e,t,n){ce(e,t,cr,n)}function Dy(e,t,n){se(e,t,cr,n)}function fa(e,t,n){re(e,t,cr,n)}function tn(e,t,n){ae(e,t)}var ga,Dc,Fc,_a,zi,Fy,Uy,By,Gy,Uc;function Hy(e){e.monsterinfo.current_move=ga}function Vy(e){e.monsterinfo.current_move=Dc}function bt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Fc:e.monsterinfo.current_move=ga}function Wy(e,t){let n=(r,i,a,s,o,c)=>{let u=t.trace(r,i,a,s,o,c);return{fraction:u.fraction,ent:u.ent}};e.enemy&&jt(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=_a:e.monsterinfo.current_move=zi}function Li(e,t){let{forward:n,right:r,up:i}=Q(e.angles),a={...e.origin},s=U(n,t.x),o=U(r,t.y),c=U(i,t.z);return F(F(F(a,s),o),c)}function Ky(e,t){if(!e.enemy)return;let n=Li(e,Oy),r=P(O(e.enemy.origin,n));Bn(e,n,r,6,4,.05,.05,0,t,4);let i=Li(e,Ny),a=P(O(e.enemy.origin,i));Bn(e,i,a,6,4,.05,.05,0,t,4)}function Xy(e,t){if(!e.enemy)return;let n=Li(e,Iy),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=P(O(r,n));Co(e,n,i,50,300,100,200,0,t)}function $y(e){e.monsterinfo.nextframe=Uc.lastframe,e.nextthink=-1}function Yy(e,t){let n=t.spawn();n.classname="monster_makron",n.origin={...e.origin},n.angles={...e.angles}}var jy=Array.from({length:51},()=>({ai:Cy,dist:0}));ga={firstframe:0,lastframe:50,frames:jy,endfunc:Hy};var qy=Array.from({length:14},()=>({ai:Py,dist:10}));Dc={firstframe:51,lastframe:64,frames:qy,endfunc:Vy};var Zy=Array.from({length:14},()=>({ai:Dy,dist:10}));Fc={firstframe:51,lastframe:64,frames:Zy,endfunc:bt};var Jy=Array.from({length:8},()=>({ai:fa,dist:0})),Qy={firstframe:65,lastframe:72,frames:Jy,endfunc:null},eS=Array.from({length:6},()=>({ai:fa,dist:0,think:Ky}));_a={firstframe:73,lastframe:78,frames:eS,endfunc:Wy};Qy.endfunc=e=>{e.monsterinfo.current_move=_a};var tS=Array.from({length:4},()=>({ai:tn,dist:0}));zi={firstframe:79,lastframe:82,frames:tS,endfunc:bt};var nS=Array.from({length:13},(e,t)=>({ai:fa,dist:0,think:t===6?Xy:null}));Fy={firstframe:83,lastframe:95,frames:nS,endfunc:bt};var rS=Array.from({length:3},()=>({ai:tn,dist:0}));Uy={firstframe:96,lastframe:98,frames:rS,endfunc:bt};var iS=Array.from({length:3},()=>({ai:tn,dist:0}));By={firstframe:99,lastframe:101,frames:iS,endfunc:bt};var aS=Array.from({length:25},()=>({ai:tn,dist:0}));Gy={firstframe:102,lastframe:126,frames:aS,endfunc:bt};var sS=Array.from({length:50},(e,t)=>({ai:tn,dist:0,think:t===49?((n,r)=>{}):t===48?Yy:null}));Uc={firstframe:127,lastframe:176,frames:sS,endfunc:$y};var ur=.1,oS={x:30,y:28,z:24},cS={x:26,y:16,z:24},uS={x:26,y:-14,z:24};function dS(e,t,n){ne(e,ur,n)}function mS(e,t,n){ce(e,t,ur,n)}function lS(e,t,n){se(e,t,ur,n)}function Bc(e,t,n){re(e,t,ur,n)}function Rt(e,t,n){ae(e,t)}var pa,Gc,Hc,hS,Vc,fS,gS,_S,pS,Wc,vS;function yS(e){e.monsterinfo.current_move=pa}function SS(e){e.monsterinfo.current_move=Gc}function Je(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hc:e.monsterinfo.current_move=pa}function va(e,t){let{forward:n,right:r,up:i}=Q(e.angles),a={...e.origin},s=U(n,t.x),o=U(r,t.y),c=U(i,t.z);return F(F(F(a,s),o),c)}function wS(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=va(e,oS),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=P(O(r,n));Co(e,n,i,50,300,100,300,0,t)}function xS(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=va(e,uS),r=P(O(e.pos1,n));Po(e,n,r,50,100,0,t)}function AS(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function ES(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=va(e,cS),r=(e.monsterinfo.nextframe||0)-Vc.firstframe,i=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=O(s,n),u={...$t(o)};r<=12?u.y-=5*(r-4):u.y-=40-5*(r-12),a=Q(u).forward}else{let{forward:s}=Q(e.angles);a=s}He(e,n,a,15,1e3,0,0,t,1)}function kS(e){e.monsterinfo.nextframe=Wc.lastframe,e.nextthink=-1}var TS=Array.from({length:60},()=>({ai:dS,dist:0}));pa={firstframe:0,lastframe:59,frames:TS,endfunc:yS};var MS=Array.from({length:10},()=>({ai:mS,dist:8}));Gc={firstframe:60,lastframe:69,frames:MS,endfunc:SS};var bS=Array.from({length:10},()=>({ai:lS,dist:8}));Hc={firstframe:60,lastframe:69,frames:bS,endfunc:Je};var RS=Array.from({length:8},(e,t)=>({ai:Bc,dist:0,think:t===3?wS:null}));hS={firstframe:70,lastframe:77,frames:RS,endfunc:Je};var zS=Array.from({length:26},(e,t)=>({ai:Rt,dist:0,think:t>=4&&t<=20?ES:null}));Vc={firstframe:78,lastframe:103,frames:zS,endfunc:Je};var LS=Array.from({length:16},(e,t)=>({ai:Bc,dist:0,think:t===7?AS:t===8?xS:null}));fS={firstframe:104,lastframe:119,frames:LS,endfunc:Je};var NS=Array.from({length:4},()=>({ai:Rt,dist:0}));gS={firstframe:120,lastframe:123,frames:NS,endfunc:Je};var OS=Array.from({length:4},()=>({ai:Rt,dist:0}));_S={firstframe:124,lastframe:127,frames:OS,endfunc:Je};var IS=Array.from({length:27},()=>({ai:Rt,dist:0}));pS={firstframe:128,lastframe:154,frames:IS,endfunc:Je};var CS=Array.from({length:95},()=>({ai:Rt,dist:0}));Wc={firstframe:155,lastframe:249,frames:CS,endfunc:kS};var PS=Array.from({length:13},()=>({ai:Rt,dist:0}));vS={firstframe:250,lastframe:262,frames:PS,endfunc:Je};var Xt=.1;function DS(e,t,n){if(e.classname==="monster_medic"&&Yc(e,n)){e.monsterinfo.current_move=nn;return}ne(e,Xt,n)}function FS(e,t,n){ce(e,t,Xt,n)}function US(e,t,n){e.classname==="monster_medic"&&Yc(e,n)?e.monsterinfo.current_move=nn:se(e,t,Xt,n)}function Pe(e,t,n){re(e,t,Xt,n)}function ya(e,t,n){ae(e,t)}var Sa,Kc,nn,BS,Xc,GS,HS,$c;function VS(e){e.monsterinfo.current_move=Sa}function WS(e){e.monsterinfo.current_move=Kc}function rn(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&qe(e,e.enemy)<80){e.monsterinfo.current_move=Xc;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=nn:e.monsterinfo.current_move=Sa}function KS(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,2,1e3,0,0,t,10)}function $e(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(qe(e,e.enemy)>400){e.monsterinfo.current_move=nn;return}let r=Q(e.angles),i=r.forward,a=r.right,s=r.up,o={x:24,y:0,z:6},c=F(e.origin,F(U(i,o.x),F(U(a,o.y),U(s,o.z)))),u=e.enemy.origin;t.multicast(e.origin,1,pe.temp_entity,{te:we.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:c,end:u})}function XS(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),$e(e,t)}function $S(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,r=t.getSpawnFunction(n.classname);if(qe(e,n)>400){e.enemy=null;return}if(!r)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let i={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};r(n,i),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function Yc(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,r=1024,i=(a,s,o,c,u,d)=>{let m=t.trace(a,s,o,c,u,d);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!jt(e,a,i))return;let s=qe(e,a);s<r&&(r=s,n=a)}),n?(e.enemy=n,!0):!1}function YS(e,t){let n=Math.random(),r="monster_soldier_light";n>.8?r="monster_soldier_ssg":n>.5&&(r="monster_soldier");let i=t.getSpawnFunction(r);if(i){let a=Q(e.angles),s=U(a.forward,64),o=F(e.origin,s),c={...o,z:o.z+8},u=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},c,e,_e|nt|Wn);if(u.fraction<1||u.startsolid||u.allsolid)return;let d=t.spawn();d.origin=c,d.angles={...e.angles},i(d,{entities:t,keyValues:{classname:r},warn:()=>{},free:l=>t.free(l)}),d.enemy=e.enemy,t.multicast(c,1,pe.muzzleflash,{entId:d.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function jS(e){e.monsterinfo.nextframe=$c.lastframe,e.nextthink=-1}var qS=Array.from({length:30},()=>({ai:DS,dist:0}));Sa={firstframe:0,lastframe:29,frames:qS,endfunc:VS};var ZS=Array.from({length:40},()=>({ai:FS,dist:3}));Kc={firstframe:30,lastframe:69,frames:ZS,endfunc:WS};var JS=Array.from({length:20},()=>({ai:US,dist:12}));nn={firstframe:70,lastframe:89,frames:JS,endfunc:rn};var QS=Array.from({length:16},(e,t)=>({ai:Pe,dist:0,think:t>=4&&t<=13?KS:null}));BS={firstframe:90,lastframe:105,frames:QS,endfunc:rn};var ew=[{ai:Pe,dist:0,think:XS},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$S}];Xc={firstframe:106,lastframe:114,frames:ew,endfunc:rn};var tw=Array.from({length:6},()=>({ai:ya,dist:0}));HS={firstframe:116,lastframe:121,frames:tw,endfunc:rn};var nw=Array.from({length:23},(e,t)=>({ai:ya,dist:0,think:t===11?YS:null}));GS={firstframe:122,lastframe:144,frames:nw,endfunc:rn};var rw=Array.from({length:30},()=>({ai:ya,dist:0}));$c={firstframe:161,lastframe:190,frames:rw,endfunc:jS};var an=.1;function b(e,t,n){ne(e,an,n)}function ve(e,t,n){ce(e,t,an,n)}function pt(e,t,n){se(e,t,an,n)}function Xe(e,t,n){re(e,t,an,n)}function X(e,t,n){ae(e,t)}function xi(e,t,n){g1(e,null,t,an)}var jc,qc,Gn,iw,aw,sw,ow,Zc,Jc;function cw(e){e.monsterinfo.current_move=qc}function uw(e){e.monsterinfo.current_move=jc}function zt(e){e.monsterinfo.current_move=Gn}function Qc(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let r=O(e.enemy.origin,e.origin);if(At(r)>100)return;let a=P(r);le(e.enemy,e,e,a,e.enemy.origin,W,t,0,0,0,n.timeSeconds)}function dw(e,t){Qc(e,30,t)}function ho(e,t){Qc(e,30,t)}function St(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Gn),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Gn)}function mw(e,t,n,r){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),le(t,e,e,P(e.velocity),e.origin,W,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function lw(e,t){let n=Q(e.angles).forward;e.movetype=7,e.touch=mw,e.velocity=F(U(n,300),{x:0,y:0,z:300}),e.velocity=F(U(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function hw(e){e.monsterinfo.nextframe=Zc.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var fw=[{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0}];jc={firstframe:0,lastframe:50,frames:fw,endfunc:uw};var gw=[{ai:ve,dist:3},{ai:ve,dist:1},{ai:ve,dist:5},{ai:ve,dist:10},{ai:ve,dist:13},{ai:ve,dist:12},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:5},{ai:ve,dist:6},{ai:ve,dist:16},{ai:ve,dist:15},{ai:ve,dist:6}];qc={firstframe:51,lastframe:63,frames:gw,endfunc:cw};var _w=[{ai:pt,dist:20},{ai:pt,dist:15},{ai:pt,dist:35},{ai:pt,dist:20},{ai:pt,dist:10},{ai:pt,dist:20}];Gn={firstframe:64,lastframe:69,frames:_w,endfunc:zt};var pw=[{ai:Xe,dist:0},{ai:Xe,dist:0},{ai:Xe,dist:0,think:ho},{ai:Xe,dist:0},{ai:Xe,dist:0,think:dw},{ai:Xe,dist:0},{ai:Xe,dist:0,think:ho},{ai:Xe,dist:0}];iw={firstframe:70,lastframe:77,frames:pw,endfunc:zt};var vw=[{ai:xi,dist:0},{ai:xi,dist:0},{ai:xi,dist:0,think:lw},{ai:X,dist:0,think:St},{ai:X,dist:0,think:St},{ai:X,dist:0,think:St},{ai:X,dist:0,think:St},{ai:X,dist:0,think:St}];Jc={firstframe:93,lastframe:100,frames:vw,endfunc:zt};Jc.frames[3].ai=(e,t,n)=>{St(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var yw=[{ai:X,dist:4},{ai:X,dist:-3},{ai:X,dist:-8},{ai:X,dist:2},{ai:X,dist:5}];aw={firstframe:78,lastframe:82,frames:yw,endfunc:zt};var Sw=[{ai:X,dist:-24},{ai:X,dist:11},{ai:X,dist:5},{ai:X,dist:-2}];sw={firstframe:83,lastframe:86,frames:Sw,endfunc:zt};var ww=[{ai:X,dist:11},{ai:X,dist:0},{ai:X,dist:-2},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0}];ow={firstframe:87,lastframe:92,frames:ww,endfunc:zt};var xw=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0}];Zc={firstframe:101,lastframe:109,frames:xw,endfunc:hw};var dr=.1,Aw=()=>Math.random();function B(e,t,n){ne(e,dr,n)}function Ue(e,t,n){ce(e,t,dr,n)}function Be(e,t,n){se(e,t,dr,n)}function de(e,t,n){re(e,t,dr,n)}function me(e,t,n){ae(e,t)}var wa,eu,tu,Ew,kw,nu,ru,Tw,Mw,xa,iu;function bw(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Rw(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function vt(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Ni(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function zw(e){e.monsterinfo.current_move=xa}function Lw(e){Aw()<=.8?e.monsterinfo.current_move=xa:e.monsterinfo.current_move=iu}function au(e){e.monsterinfo.current_move=wa}function Aa(e){e.monsterinfo.current_move=eu}function su(e){e.monsterinfo.current_move=ru}function ou(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=wa:e.monsterinfo.current_move=tu}function Ai(e,t){let n=O(t,e);if(At(n)>256)return!1;let a=$t(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function Re(e,t){if(!e.enemy)return;let n=Q(e.angles),r=n.forward,i=n.right,a=n.up,s={x:24,y:0,z:6},o=F(e.origin,F(U(r,s.x),F(U(i,s.y),U(a,s.z)))),c=Yh(e.enemy.origin);if(!Ai(o,c)&&(c={...c,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Ai(o,c)&&(c={...c,z:e.enemy.origin.z+e.enemy.mins.z+8},!Ai(o,c)))||t.trace(o,c,W,W,e,Yt).ent!==e.enemy)return;let d=2,m=e.frame;m===41?(d=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),d=2),t.multicast(e.origin,0,pe.temp_entity,{te:we.PARASITE_ATTACK,entId:e.index,start:o,end:c});let l=P(O(o,c));le(e.enemy,e,e,l,e.enemy.origin,W,d,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=d,e.health>e.max_health&&(e.health=e.max_health))}function Nw(e){e.monsterinfo.nextframe=nu.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Ow=[{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0,think:vt}];wa={firstframe:83,lastframe:99,frames:Ow,endfunc:au};var Iw=[{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0}];Mw={firstframe:100,lastframe:103,frames:Iw,endfunc:zw};var Cw=[{ai:B,dist:0,think:Ni},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:Ni},{ai:B,dist:0},{ai:B,dist:0}];xa={firstframe:104,lastframe:109,frames:Cw,endfunc:Lw};var Pw=[{ai:B,dist:0,think:Ni},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0}];iu={firstframe:110,lastframe:117,frames:Pw,endfunc:au};var Dw=[{ai:Be,dist:0},{ai:Be,dist:30}];ru={firstframe:68,lastframe:69,frames:Dw,endfunc:ou};var Fw=[{ai:Be,dist:30},{ai:Be,dist:30},{ai:Be,dist:22},{ai:Be,dist:19},{ai:Be,dist:24},{ai:Be,dist:28},{ai:Be,dist:25}];tu={firstframe:70,lastframe:76,frames:Fw,endfunc:ou};var Uw=[{ai:Ue,dist:0},{ai:Ue,dist:30,think:Aa}];Tw={firstframe:68,lastframe:69,frames:Uw,endfunc:Aa};var Bw=[{ai:Ue,dist:30},{ai:Ue,dist:30},{ai:Ue,dist:22},{ai:Ue,dist:19},{ai:Ue,dist:24},{ai:Ue,dist:28},{ai:Ue,dist:25}];eu={firstframe:70,lastframe:76,frames:Bw,endfunc:Aa};var Gw=[{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:6},{ai:me,dist:16},{ai:me,dist:-6},{ai:me,dist:-7},{ai:me,dist:0}];kw={firstframe:57,lastframe:67,frames:Gw,endfunc:su};var Hw=[{ai:de,dist:0,think:bw},{ai:de,dist:0},{ai:de,dist:15,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:-2,think:Re},{ai:de,dist:-2,think:Re},{ai:de,dist:-3,think:Re},{ai:de,dist:-2,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:-1,think:Re},{ai:de,dist:0,think:Rw},{ai:de,dist:-2},{ai:de,dist:-2},{ai:de,dist:-3},{ai:de,dist:0}];Ew={firstframe:39,lastframe:56,frames:Hw,endfunc:su};var Vw=[{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0}];nu={firstframe:32,lastframe:38,frames:Vw,endfunc:Nw};var mr=.1;var Ww=2;function Kw(e,t,n){ne(e,mr,n)}function Xw(e,t,n){ce(e,t,mr,n)}function $w(e,t,n){se(e,t,mr,n)}function cu(e,t,n){re(e,t,mr,n)}function uu(e,t,n){ae(e,t)}var Ea,du,mu,Yw,jw,qw,lu;function Zw(e){e.monsterinfo.current_move=Ea}function Jw(e){e.monsterinfo.current_move=du}function lr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mu:e.monsterinfo.current_move=Ea}function ka(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function Ta(e,t){if(!e.enemy){let{forward:r}=Q(e.angles);return r}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return P(O(n,t))}function Qw(e,t){if(!e.enemy)return;let n=ka(e),r=Ta(e,n);He(e,n,r,5,600,0,0,t,1)}function ex(e,t){if(!e.enemy)return;let n=ka(e),r=Ta(e,n),i=2,a=4,s=20,o=.15,c=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),ig(e,n,r,i,a,o,c,s,0,t,3)}function tx(e,t){if(!e.enemy)return;let n=ka(e),r=Ta(e,n),i=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),tt(e,n,r,i,a,s,o,0,t,4)}function nx(e,t){e.spawnflags&Ww?ex(e,t):Qw(e,t)}var rx=Array.from({length:30},()=>({ai:Kw,dist:0}));Ea={firstframe:0,lastframe:29,frames:rx,endfunc:Zw};var ix=Array.from({length:40},()=>({ai:Xw,dist:2}));du={firstframe:30,lastframe:69,frames:ix,endfunc:Jw};var ax=Array.from({length:20},()=>({ai:$w,dist:10}));mu={firstframe:70,lastframe:89,frames:ax,endfunc:lr};var sx=Array.from({length:10},(e,t)=>({ai:cu,dist:0,think:t===5?nx:null}));Yw={firstframe:90,lastframe:99,frames:sx,endfunc:lr};var ox=Array.from({length:10},(e,t)=>({ai:cu,dist:0,think:t>=4&&t<=8?tx:null}));jw={firstframe:90,lastframe:99,frames:ox,endfunc:lr};var cx=Array.from({length:6},()=>({ai:uu,dist:0}));qw={firstframe:100,lastframe:105,frames:cx,endfunc:lr};var ux=Array.from({length:10},()=>({ai:uu,dist:0}));function dx(e){e.monsterinfo.nextframe=lu.lastframe,e.nextthink=-1}lu={firstframe:106,lastframe:115,frames:ux,endfunc:dx};var hu=.1,mx={x:30,y:30,z:40},lx={x:30,y:-30,z:40},hx={x:20,y:0,z:70};function fx(e,t,n){ne(e,hu,n)}function gx(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ba:e.monsterinfo.current_move=hr}function Ma(e,t,n){re(e,t,hu,n)}function sn(e,t,n){ae(e,t)}var hr,ba,_x,px,fu,gu,vx,yx,Sx,_u;function wx(e){e.monsterinfo.current_move=hr}function it(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ba:e.monsterinfo.current_move=hr}function Ra(e,t){let{forward:n,right:r,up:i}=Q(e.angles),a={...e.origin},s=U(n,t.x),o=U(r,t.y),c=U(i,t.z);return F(F(F(a,s),o),c)}function xx(e,t){if(!e.enemy)return;let n=Ra(e,lx),r=P(O(e.enemy.origin,n));Jt(e,n,r,50,650,0,t)}function Ax(e,t){if(!e.enemy)return;let n=Ra(e,hx),r=P(O(e.enemy.origin,n));ag(e,n,r,50,600,0,t)}function Ex(e,t){if(!e.enemy)return;let n=Ra(e,mx),r=P(O(e.enemy.origin,n));Bn(e,n,r,6,4,.05,.05,0,t,4)}function kx(e,t){let n=(r,i,a,s,o,c)=>{let u=t.trace(r,i,a,s,o,c);return{fraction:u.fraction,ent:u.ent}};e.enemy&&jt(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=fu:e.monsterinfo.current_move=gu}function Tx(e){e.monsterinfo.nextframe=_u.lastframe,e.nextthink=-1}var Mx=Array.from({length:60},()=>({ai:fx,dist:0}));hr={firstframe:0,lastframe:59,frames:Mx,endfunc:wx};var bx=Array.from({length:18},()=>({ai:gx,dist:12}));ba={firstframe:60,lastframe:77,frames:bx,endfunc:it};var Rx=Array.from({length:4},()=>({ai:sn,dist:0}));Sx={firstframe:78,lastframe:81,frames:Rx,endfunc:it};var zx=Array.from({length:4},()=>({ai:sn,dist:0}));yx={firstframe:82,lastframe:85,frames:zx,endfunc:it};var Lx=Array.from({length:4},()=>({ai:sn,dist:0}));vx={firstframe:86,lastframe:89,frames:Lx,endfunc:it};var Nx=Array.from({length:24},()=>({ai:sn,dist:0}));_u={firstframe:90,lastframe:113,frames:Nx,endfunc:Tx};var Ox=Array.from({length:6},(e,t)=>({ai:Ma,dist:0,think:t===0||t===3?Ax:null}));px={firstframe:114,lastframe:119,frames:Ox,endfunc:it};var Ix=Array.from({length:27},(e,t)=>({ai:Ma,dist:0,think:t===7||t===10||t===13?xx:null}));_x={firstframe:120,lastframe:146,frames:Ix,endfunc:it};var Cx=Array.from({length:6},()=>({ai:Ma,dist:0,think:Ex}));fu={firstframe:147,lastframe:152,frames:Cx,endfunc:kx};var Px=Array.from({length:14},()=>({ai:sn,dist:0}));gu={firstframe:153,lastframe:166,frames:Px,endfunc:it};var za=.1;function Dx(e,t,n){ne(e,za,n)}function Fx(e,t,n){ce(e,t,za,n)}function Ux(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Na:e.monsterinfo.current_move=fr}function La(e,t,n){re(e,t,za,n)}function pu(e,t,n){ae(e,t)}var fr,vu,Na,Bx,Gx,Hx,Vx,yu;function Wx(e){e.monsterinfo.current_move=fr}function Kx(e){e.monsterinfo.current_move=vu}function on(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Na:e.monsterinfo.current_move=fr}function Xx(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(O(e.enemy.origin,n));He(e,n,r,30,1e3,0,0,t,1)}function $x(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(O(e.enemy.origin,n));tt(e,n,r,20,2,.05,.05,0,t,4)}function Ei(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(O(e.enemy.origin,n));Jt(e,n,r,50,650,0,t)}function Yx(e){e.monsterinfo.nextframe=yu.lastframe,e.nextthink=-1}var jx=Array.from({length:30},()=>({ai:Dx,dist:0}));fr={firstframe:0,lastframe:29,frames:jx,endfunc:Wx};var qx=Array.from({length:16},()=>({ai:Fx,dist:5}));vu={firstframe:30,lastframe:45,frames:qx,endfunc:Kx};var Zx=Array.from({length:16},()=>({ai:Ux,dist:10}));Na={firstframe:46,lastframe:61,frames:Zx,endfunc:on};var Jx=Array.from({length:16},(e,t)=>({ai:La,dist:0,think:t>5&&t<12?Xx:null}));Bx={firstframe:62,lastframe:77,frames:Jx,endfunc:on};var Qx=Array.from({length:20},(e,t)=>({ai:La,dist:0,think:t%2===0&&t>5?$x:null}));Gx={firstframe:78,lastframe:97,frames:Qx,endfunc:on};var eA=Array.from({length:18},(e,t)=>({ai:La,dist:0,think:t===8||t===12||t===16?Ei:null}));Hx={firstframe:98,lastframe:115,frames:eA,endfunc:on};var tA=Array.from({length:6},()=>({ai:pu,dist:0}));Vx={firstframe:116,lastframe:121,frames:tA,endfunc:on};var nA=Array.from({length:16},()=>({ai:pu,dist:0}));yu={firstframe:122,lastframe:137,frames:nA,endfunc:Yx};var Oa=.1;function rA(e,t,n){ne(e,Oa,n)}function Ia(e,t,n){se(e,t,Oa,n)}function iA(e,t,n){re(e,t,Oa,n)}var Ca,Su,aA,sA,wu;function oA(e){e.monsterinfo.current_move=Ca}function Pa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Su:e.monsterinfo.current_move=Ca}function cA(e,t){if(!e.enemy)return;let n=Q(e.angles).forward,r={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},i=P(O(e.enemy.origin,r));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),He(e,r,i,2,1e3,1,0,t)}var uA=Array.from({length:1},()=>({ai:rA,dist:0}));Ca={firstframe:0,lastframe:0,frames:uA,endfunc:oA};var dA=Array.from({length:1},()=>({ai:Ia,dist:0}));Su={firstframe:0,lastframe:0,frames:dA,endfunc:Pa};var mA=Array.from({length:8},(e,t)=>({ai:iA,dist:0,think:t===4?cA:void 0}));aA={firstframe:1,lastframe:8,frames:mA,endfunc:Pa};var lA=Array.from({length:2},()=>({ai:Ia,dist:0}));sA={firstframe:9,lastframe:10,frames:lA,endfunc:Pa};var hA=Array.from({length:4},()=>({ai:Ia,dist:0}));function fA(e){e.monsterinfo.nextframe=wu.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}wu={firstframe:11,lastframe:14,frames:hA,endfunc:fA};var tk=new Map(Bi.map(e=>[e.name,e]));var gA=2166136261,_A=16777619;function xu(e,t){let n=e>>>0;for(let r=0;r<t.length;r+=1)n^=t[r]&255,n=Math.imul(n,_A)>>>0;return n>>>0}function wt(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let i=new Uint8Array(n);return xu(e,i)}function Oi(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r)&255;return xu(e,n)}var ki=2,pA=1;function Se(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function J(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function In(e,t,n){return e===void 0?n:J(e,t)}function Hn(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Pn(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)J(n,`${t} element`);return e}function vA(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Se(e,"level");return{frameNumber:In(t.frameNumber,"level.frameNumber",0),timeSeconds:In(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:In(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:In(t.deltaSeconds,"level.deltaSeconds",0)}}function yA(e){if(e===void 0)return new vo().getState();let t=Se(e,"rng"),n=Se(t.mt,"rng.mt"),r=Pn(n.state,"rng.mt.state");return{mt:{index:J(n.index,"rng.mt.index"),state:r}}}function SA(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let r=Se(t,`thinks[${n}]`);return{time:J(r.time,`thinks[${n}].time`),entityIndex:J(r.entityIndex,`thinks[${n}].entityIndex`)}})}function wA(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Se(e,"awareness"),n=(r,i)=>r===null?null:J(r,i);return{frameNumber:J(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:J(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:J(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:J(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function xA(e){if(e===void 0)return{};let t=Se(e,"entity.fields"),n={};for(let[r,i]of Object.entries(t)){if(i===null){n[r]=null;continue}switch(typeof i){case"number":case"string":case"boolean":n[r]=i;break;default:{if(!Array.isArray(i)){let a=Se(i,r),s={};for(let[o,c]of Object.entries(a))s[o]=J(c,`${r}.${o}`);n[r]=s;break}if(Array.isArray(i)&&i.length===3){let[a,s,o]=i;n[r]=[J(a,`${r}[0]`),J(s,`${r}[1]`),J(o,`${r}[2]`)];break}throw new Error(`Unsupported entity field value for ${r}`)}}}return n}function AA(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let r=Se(t,`entities[${n}]`);return{index:J(r.index,`entities[${n}].index`),fields:xA(r.fields)}})}function EA(e){let t=Se(e,"pool");return{capacity:J(t.capacity,"pool.capacity"),activeOrder:Pn(t.activeOrder,"pool.activeOrder"),freeList:Pn(t.freeList,"pool.freeList"),pendingFree:Pn(t.pendingFree,"pool.pendingFree")}}function kA(e){let t=Se(e,"entities");return{timeSeconds:J(t.timeSeconds,"entities.timeSeconds"),pool:EA(t.pool),entities:AA(t.entities),thinks:SA(t.thinks),awareness:wA(t.awareness)}}function TA(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let r=Se(t,`cvars[${n}]`);return{name:Hn(r.name,`cvars[${n}].name`),value:Hn(r.value,`cvars[${n}].value`),flags:J(r.flags,`cvars[${n}].flags`)}})}function MA(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Hn(t,`configstrings[${n}]`))}function bA(e){return e===void 0?{}:Se(e,"gameState")}function Ge(e,t){if(t==null)return e;if(typeof t=="number")return wt(e,t);if(typeof t=="string")return Oi(e,t);if(typeof t=="boolean")return wt(e,t?1:0);if(Array.isArray(t)){let n=e;for(let r of t)n=Ge(n,r);return n}if(typeof t=="object"){let n=e,r=Object.keys(t).sort();for(let i of r)n=Oi(n,i),n=Ge(n,t[i]);return n}return e}function RA(e){let t=gA;return t=wt(t,e.version),t=wt(t,e.timestamp),t=Oi(t,e.map),t=wt(t,e.difficulty),t=wt(t,e.playtimeSeconds),t=Ge(t,e.gameState),t=Ge(t,e.level),t=Ge(t,e.rng),t=Ge(t,e.entities),t=Ge(t,e.cvars),t=Ge(t,e.configstrings),e.player&&(t=Ge(t,e.player)),t>>>0}function Au(e,t={}){let{allowNewerVersion:n=!0}=t,r=typeof e=="string"?JSON.parse(e):e,i=Se(r,"save"),a=i.version??ki,s=J(a,"version");if(s<pA)throw new Error(`Unsupported save version ${s}`);if(s>ki&&!n)throw new Error(`Save version ${s} is newer than supported ${ki}`);let o={version:s,timestamp:J(i.timestamp,"timestamp"),map:Hn(i.map,"map"),difficulty:J(i.difficulty,"difficulty"),playtimeSeconds:J(i.playtimeSeconds,"playtimeSeconds"),gameState:bA(i.gameState),level:vA(i.level),rng:yA(i.rng),entities:kA(i.entities),cvars:TA(i.cvars),configstrings:MA(i.configstrings),player:i.player?i.player:void 0,checksum:i.checksum!==void 0?J(i.checksum,"checksum"):void 0};if(o.checksum!==void 0){let c=RA(o);if(c!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${c}`)}return o}var nk=new Set(Bi.filter(e=>e.save).map(e=>e.name));var fo=globalThis.TextEncoder;function xt(e){return Au({...e},{allowNewerVersion:!0})}function zA(e){return fo?new fo().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var LA=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:xt(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:xt(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:xt(e.save)}))}},NA=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((r,i)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>r(o.result),o.onerror=()=>i(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:xt(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:xt(t.save)}))}},Da=class Gt{constructor(t={}){let{dbName:n=Gt.DEFAULT_DB_NAME,storeName:r=Gt.DEFAULT_STORE}=t,i=t.indexedDB??globalThis.indexedDB;i?this.adapter=new NA(i,n,r):this.adapter=new LA}async save(t,n,r={}){let i=xt(n),a={id:t,name:r.name??t,map:i.map,difficulty:i.difficulty,playtimeSeconds:i.playtimeSeconds,timestamp:i.timestamp,version:i.version,bytes:zA(i)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:i}),a}async load(t,n={}){await this.adapter.init();let r=await this.adapter.get(t);if(!r)throw new Error(`Save slot ${t} not found`);return Au(r.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,r)=>r.timestamp-n.timestamp||n.id.localeCompare(r.id))}async quickSave(t){return this.save(Gt.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Gt.QUICK_SLOT,t)}};Da.DEFAULT_DB_NAME="quake2ts-saves";Da.DEFAULT_STORE="saves";Da.QUICK_SLOT="quicksave";var rk=Di();var ik=[C.Blaster,C.Shotgun,C.SuperShotgun,C.Machinegun,C.Chaingun,C.GrenadeLauncher,C.RocketLauncher,C.HyperBlaster,C.Railgun,C.BFG10K],ak=[{id:$.QuadDamage,priority:1},{id:$.Invulnerability,priority:2},{id:$.EnviroSuit,priority:3},{id:$.Rebreather,priority:4},{id:$.Silencer,priority:5}];var OA=new Map,IA=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],Eu=async(e,t)=>{for(let n of IA)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);OA.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var CA=new Map,PA=["d_left","d_right","d_up","d_down"],ku=async(e,t)=>{for(let n of PA)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);CA.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Fa=[],DA=0,Tu=async(e,t)=>{for(let n=0;n<10;n++)try{let r=await t.loadTexture(`pics/hud/num_${n}.pcx`),i=e.registerTexture(`hud_num_${n}`,r);Fa.push(i)}catch(r){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,r)}Fa.length>0&&(DA=Fa[0].width),await to(e,t),await Eu(e,t),await ku(e,t)};var FA=3e3,gr=class{constructor(){this.subtitle=null}addSubtitle(t,n){this.subtitle={text:t,startTime:n,duration:FA}}drawSubtitles(t,n){if(!this.subtitle)return;if(n>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}let r=t.height-40;t.drawCenterString(r,this.subtitle.text)}};var Ua=[{type:"null"},{type:"armor",id:kt.BODY},{type:"armor",id:kt.COMBAT},{type:"armor",id:kt.JACKET},{type:"armor",id:kt.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:C.Grapple},{type:"weapon",id:C.Blaster},{type:"weapon",id:C.ChainFist},{type:"weapon",id:C.Shotgun},{type:"weapon",id:C.SuperShotgun},{type:"weapon",id:C.Machinegun},{type:"weapon",id:C.EtfRifle},{type:"weapon",id:C.Chaingun},{type:"ammo",id:V.Grenades},{type:"ammo",id:V.Trap},{type:"ammo",id:V.Tesla},{type:"weapon",id:C.GrenadeLauncher},{type:"weapon",id:C.ProxLauncher},{type:"weapon",id:C.RocketLauncher},{type:"weapon",id:C.HyperBlaster},{type:"weapon",id:C.IonRipper},{type:"weapon",id:C.PlasmaBeam},{type:"weapon",id:C.Railgun},{type:"weapon",id:C.Phalanx},{type:"weapon",id:C.BFG10K},{type:"weapon",id:C.Disruptor},{type:"ammo",id:V.Shells},{type:"ammo",id:V.Bullets},{type:"ammo",id:V.Cells},{type:"ammo",id:V.Rockets},{type:"ammo",id:V.Slugs},{type:"ammo",id:V.MagSlugs},{type:"ammo",id:V.Flechettes},{type:"ammo",id:V.Prox},{type:"ammo",id:V.Nuke},{type:"ammo",id:V.Rounds},{type:"powerup",id:$.QuadDamage},{type:"powerup",id:$.QuadFire},{type:"powerup",id:$.Invulnerability},{type:"powerup",id:$.Invisibility},{type:"powerup",id:$.Silencer},{type:"powerup",id:$.Rebreather},{type:"powerup",id:$.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:$.Bandolier},{type:"powerup",id:$.AmmoPack},{type:"powerup",id:$.IRGoggles},{type:"powerup",id:$.DoubleDamage},{type:"powerup",id:$.SphereVengeance},{type:"powerup",id:$.SphereHunter},{type:"powerup",id:$.SphereDefender},{type:"powerup",id:$.Doppelganger},{type:"powerup",id:$.TagToken},{type:"key",id:oe.DataCD},{type:"key",id:oe.PowerCube},{type:"key",id:oe.ExplosiveCharges},{type:"key",id:oe.Yellow},{type:"key",id:oe.PowerCore},{type:"key",id:oe.Pyramid},{type:"key",id:oe.DataSpinner},{type:"key",id:oe.Pass},{type:"key",id:oe.Blue},{type:"key",id:oe.Red},{type:"key",id:oe.Green},{type:"key",id:oe.CommanderHead},{type:"key",id:oe.Airstrike},{type:"key",id:oe.NukeContainer},{type:"key",id:oe.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:oe.RedFlag},{type:"key",id:oe.BlueFlag},{type:"powerup",id:$.TechResistance},{type:"powerup",id:$.TechStrength},{type:"powerup",id:$.TechHaste},{type:"powerup",id:$.TechRegeneration},{type:"powerup",id:$.Flashlight},{type:"powerup",id:$.Compass}];var UA=2048,_r=class{constructor(t,n){this.configstrings=new Array(UA).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}onServerData(t,n,r,i,a,s){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,r=new Map;if(n.delta)for(let[i,a]of this.entities)r.set(i,structuredClone(a));for(let i of n.entities){if(i.bits&fs){r.delete(i.number);continue}let a=i.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=ot();let o=structuredClone(s);this.applyDelta(o,i),r.set(a,o)}this.entities=r}applyDelta(t,n){let r=n.bits;t.number=n.number,r&Xr&&(t.modelindex=n.modelindex),r&Yr&&(t.modelindex2=n.modelindex2),r&jr&&(t.modelindex3=n.modelindex3),r&qr&&(t.modelindex4=n.modelindex4),r&Hr&&(t.frame=n.frame),r&$r&&(t.frame=n.frame),(r&pn||r&Sn)&&(t.skinnum=n.skinnum),(r&_n||r&yn)&&(t.effects=n.effects),(r&gn||r&vn)&&(t.renderfx=n.renderfx),r&Fr&&(t.origin.x=n.origin.x),r&Ur&&(t.origin.y=n.origin.y),r&Wr&&(t.origin.z=n.origin.z),r&Kr&&(t.angles.x=n.angles.x),r&Br&&(t.angles.y=n.angles.y),r&Gr&&(t.angles.z=n.angles.z),r&Zr&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),r&Jr&&(t.sound=n.sound),r&Vr&&(t.event=n.event),r&Qr&&(t.solid=n.solid)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,r,i,a,s,o){if(!this.imports?.engine.audio)return;let c=r??1,u=i??1,d=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,c,u,d):o&&this.imports.engine.audio.positioned_sound(o,n,c,u)}onTempEntity(t,n,r,i,a,s,o,c,u){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,r){}convertFrameToPredictionState(t){let n=t.playerState,r={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let c=0;c<this.inventory.length;c++){let u=this.inventory[c];if(u<=0)continue;if(c>=Ua.length)break;let d=Ua[c];switch(d.type){case"weapon":r.ownedWeapons.add(d.id);break;case"ammo":r.ammo.counts[d.id]||(r.ammo.counts[d.id]=0),r.ammo.counts[d.id]=u;break;case"armor":r.armor={armorType:d.id,armorCount:u};break;case"powerup":r.powerups.set(d.id,u);break;case"key":r.keys.add(d.id);break;case"health":break;case"item":r.items.add(d.id);break}}let i={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:i,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Qe.None,gravity:n.gravity,deltaAngles:o,client:{inventory:r,weaponStates:{states:new Map},buttons:0},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:ut,gunoffset:ut,gunangles:ut,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32}}}getPredictionState(t){if(!this.latestFrame)return et();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let r=this.latestFrame.serverFrame*100,i=this.previousFrame.serverFrame*100;if(t>=i&&t<=r){let a=(t-i)/(r-i),s=this.convertFrameToPredictionState(this.previousFrame);return ht(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Lt=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=te.Models&&t<te.Models+Pt){let r=t-te.Models;this.models[r]=n}else if(t>=te.Sounds&&t<te.Sounds+Dt){let r=t-te.Sounds;this.sounds[r]=n}else if(t>=te.Images&&t<te.Images+Ft){let r=t-te.Images;this.images[r]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var pr=class{constructor(t,n,r){this.menuSystem=t;this.saveLoadFactory=n;this.options=r}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var vr=class{constructor(t,n,r,i,a){this.menuSystem=t;this.storage=n;this.onSave=r;this.onLoad=i;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Mu(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(r))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Mu(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(r))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function Mu(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}var yr=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let r=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return r.action&&r.action(),!0;if(t==="back")return this.popMenu(),!0;if(r.type==="input"&&r.onUpdate&&r.getValue){let i=r.getValue();if(t==="char"&&n){let a=(i||"")+n;r.onUpdate(a)}else if(t==="left"){let a=String(i||"");a.length>0&&r.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var cn=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let r=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",r.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var Sr=class{constructor(t,n,r){this.menuSystem=t;this.vfs=n;this.onStartMap=r}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(r=>({label:r.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(r.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var wr=class{constructor(t,n,r){this.menuSystem=t;this.optionsFactory=n;this.host=r}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};function bu(e,t,n,r){if(!t.activeMenu)return;let i=t.activeMenu,a=n/2,s=r/2,o=20,c=i.items.length*o+40,u=s-c/2;e.drawfillRect(0,0,n,r,[0,0,0,.7]),e.drawCenterString(u,i.title),i.items.forEach((d,m)=>{let l=u+40+m*o,h=d.label;if(d.type==="input"&&d.getValue){if(h+=`: ${d.getValue()}`,m===t.selectedIndex){let f=Date.now();Math.floor(f/500)%2===0&&(h+="_")}}else d.type==="toggle"&&d.getValue&&(h+=`: ${d.getValue()}`);if(m===t.selectedIndex){let y=h.replace(/\^[0-9]/g,"").length*8,E=(n-y)/2;e.drawString(E-16,l,"\r")}e.drawCenterString(l,h)})}var un=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let r=JSON.parse(n);for(let[i,a]of Object.entries(r)){let s=t.get(i);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let r of t)r.flags&Ct.Archive&&(n[r.name]=r.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(r){console.warn("Failed to save settings",r)}}};var xr=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(r){console.warn("Failed to write to localStorage",r)}}};var Ar=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,r=t.height;t.drawfillRect(0,0,n,r,[.1,.1,.1,1]);let i=n*.6,a=20,s=(n-i)/2,o=r*.7;t.drawfillRect(s,o,i,a,[.3,.3,.3,1]);let c=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,i*c,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let u=Math.floor(c*100);t.drawCenterString(o+a+10,`${u}%`)}};var Er=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,r=t.height,i=n/2,a=r/2,s=400,o=200;t.drawfillRect(0,0,n,r,[0,0,0,.5]),t.drawfillRect(i-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var kr=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,r,i){if(!this.state.active)return;let a=n/2,s=r/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};var BA=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],at=class{constructor(t=BA){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function Ru(){return new at}function Ba(e){return e}function dn(e){return e.trim().toLowerCase()}var GA=250,Ga=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let r=this.msec;this.activeCodes.size>0&&(r+=n-this.downTime,this.downTime=n),this.msec=0;let i=Math.min(r/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:i}}},Tr=(y=>(y.Forward="+forward",y.Back="+back",y.MoveLeft="+moveleft",y.MoveRight="+moveright",y.MoveUp="+moveup",y.MoveDown="+movedown",y.Jump="+jump",y.Crouch="+crouch",y.Attack="+attack",y.Use="+use",y.Holster="+holster",y.TurnLeft="+left",y.TurnRight="+right",y.LookUp="+lookup",y.LookDown="+lookdown",y.SpeedModifier="+speed",y.Zoom="+zoom",y))(Tr||{}),HA={"+attack":Oe.Attack,"+use":Oe.Use,"+holster":Oe.Holster,"+jump":Oe.Jump,"+crouch":Oe.Crouch},VA=new Map(Object.values(Tr).map(e=>[dn(e),e]));function WA(e){return VA.get(dn(e))}function mn(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Nt=class{constructor(t={},n=new at){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??Ms,this.sideSpeed=t.sideSpeed??bs,this.upSpeed=t.upSpeed??Rs,this.yawSpeed=t.yawSpeed??zs,this.pitchSpeed=t.pitchSpeed??Ls,this.sensitivity=t.sensitivity??Ns,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=mn()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!0,r,n)}handleKeyUp(t,n=mn()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!1,r,n)}handleMouseButtonDown(t,n=mn()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!0,r,n)}handleMouseButtonUp(t,n=mn()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!1,r,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=mn(),r){this.pollGamepads(n),this.applyTouchState(n);let i=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),c=this.sample("+lookup",t,n),d={x:(this.sample("+lookdown",t,n).fraction-c.fraction)*a,y:(o.fraction-s.fraction)*i,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let T=this.gamepadLook.y*(this.invertGamepadY?-1:1);d={x:d.x+T*a*this.gamepadLookScale,y:d.y+this.gamepadLook.x*i*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let T=this.touchLook.y*(this.invertMouseY?-1:1);d={x:d.x+T*a,y:d.y+this.touchLook.x*i,z:0}}if(this.pointerLocked||!this.requirePointerLock){let T=this.sampleMouseDelta(),G=Is(T,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});d={x:d.x+G.x,y:d.y+G.y,z:0}}let m=Os(this.viewAngles,d);this.viewAngles=m;let l=this.sample("+forward",t,n),h=this.sample("+back",t,n),f=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),g=this.sample("+moveup",t,n),y=this.sample("+movedown",t,n),E=this.sample("+speed",t,n),v=this.sample("+jump",t,n),x=this.sample("+crouch",t,n),w=this.runByDefault?E.active?.5:1:E.active?1:.5,A=this.forwardSpeed*(l.fraction-h.fraction)*w,I=this.sideSpeed*(p.fraction-f.fraction)*w,D=this.upSpeed*(g.fraction-y.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(A+=this.forwardSpeed*this.gamepadMove.y*w,I+=this.sideSpeed*this.gamepadMove.x*w),(this.touchMove.x!==0||this.touchMove.y!==0)&&(A+=this.forwardSpeed*this.touchMove.y*w,I+=this.sideSpeed*this.touchMove.x*w),this.jumpAddsUpMove&&v.fraction>0&&(D+=this.upSpeed*v.fraction),this.crouchAddsDownMove&&x.fraction>0&&(D-=this.upSpeed*x.fraction),A=this.clampMove(A,this.forwardSpeed),I=this.clampMove(I,this.sideSpeed),D=this.clampMove(D,this.upSpeed);let _=this.collectButtonBits(t,n),S=Math.min(Math.max(Math.round(t),1),GA);return(this.anyPressed||_!==Oe.None)&&(_|=Oe.Any),this.anyPressed=!1,{msec:S,buttons:_,angles:{...this.viewAngles},forwardmove:A,sidemove:I,upmove:D,serverFrame:r}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let r=new Set;for(let i of n){if(!i||i.connected===!1)continue;let a=i.index??0,s=i.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=i.buttons??[];for(let c=0;c<o.length;c++){let u=o[c];if(!u)continue;let d=u.pressed||u.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,c);d&&r.add(m);let l=this.gamepadButtons.get(m)??!1;d!==l&&(this.applyCommand(this.bindings.getBinding(m),d,m,t),this.gamepadButtons.set(m,d))}}for(let[i,a]of this.gamepadButtons.entries())a&&!r.has(i)&&(this.applyCommand(this.bindings.getBinding(i),!1,i,t),this.gamepadButtons.set(i,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[r,i]of Object.entries(n.buttons)){if(i===void 0)continue;let a=this.touchButtons.get(r)??!1;i!==a&&(this.applyCommand(r,i,this.touchButtonCode(r),t),this.touchButtons.set(r,i))}}applyCommand(t,n,r,i){if(!t)return;let a=WA(t);if(a){let s=this.lookupButton(a);n?(s.press(r,i)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(r,i)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let r=Oe.None;for(let[i,a]of Object.entries(HA)){let s=this.sample(i,t,n);(s.fraction>0||s.active||s.wasPressed)&&(r|=a)}return r}lookupButton(t){let n=this.buttons.get(t);return n||(n=new Ga,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,r){return this.lookupButton(t).sample(n,r)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var Mr=class{constructor(t,n=new Nt(t)){this.queued=[];this.controller=n}captureFrame(t,n,r){let i=this.controller.buildCommand(t,n,r),a=this.controller.consumeConsoleCommands(),s={command:i,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var Ha={x:0,y:0,z:0};function br(e,t,n){return e+(t-e)*n}function Va(e,t,n){return br(e,t,n)}function KA(e,t,n,r,i){let a=[],s=i.engine.assets;if(!s)return a;let o=new Map(t.map(c=>[c.number,c]));for(let c of e){let u=o.get(c.number)??c,d=r.getModelName(c.modelIndex);if(!d)continue;let m=s.getMd2Model(d)||s.getMd3Model(d);if(!m)continue;let l={x:br(u.origin.x,c.origin.x,n),y:br(u.origin.y,c.origin.y,n),z:br(u.origin.z,c.origin.z,n)},h={x:Va(u.angles.x,c.angles.x,n),y:Va(u.angles.y,c.angles.y,n),z:Va(u.angles.z,c.angles.z,n)},f=c.frame,p=u.frame,g=j.create();j.translate(g,g,[l.x,l.y,l.z]),j.rotateZ(g,g,h.z*Math.PI/180),j.rotateY(g,g,h.y*Math.PI/180),j.rotateX(g,g,h.x*Math.PI/180),m.header.magic===844121161?a.push({type:"md2",model:m,blend:{frame0:p,frame1:f,lerp:n},transform:g,skin:c.skinNum>0?r.getImageName(c.skinNum):void 0}):m.header.magic===860898377&&a.push({type:"md3",model:m,blend:{frame0:p,frame1:f,lerp:n},transform:g})}return a}function XA(e){let t=new On(e.engine.trace),n=new Nn,r=new gr,i=new gs,a=new _r(e),s=new yr,o=new Ar,c=new Er,u=new kr,d=new un(new xr),m,l,h=new Lt,f,p=!1,y=eo(e,{get tickRate(){return 10},get frameTimeMs(){return f?.timeMs??0},get serverFrame(){return a.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return h},getClientName:_=>`Player ${_}`,getKeyBinding:_=>`[${_}]`,get inAutoDemo(){return p}}),E=Qs(y);a.setCallbacks({onCenterPrint:_=>E.ParseCenterPrint(_,0,!1),onPrint:(_,S)=>E.NotifyMessage(0,S,!1),onConfigString:(_,S)=>{h.set(_,S),E.ParseConfigString(_,S)}}),i.setHandler(a);let v,x,w,A=90,I=!1;if(e.host){l=new cn(s,e.host),m=new wr(s,l,e.host);let _=new Map;if(e.host.cvars){for(let S of e.host.cvars.list())_.set(S.name,{value:S.string,setValue:T=>e.host.cvars.setValue(S.name,T)});d.loadCvars(_)}}if(e.host?.commands&&(e.host.commands.register("playdemo",_=>{if(_.length<1){console.log("usage: playdemo <filename>");return}let S=_[0];console.log(`playdemo: ${S}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let _=no();console.log(`Crosshair changed to index ${_}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{I=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{I=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{s.isActive()?s.closeAll():m&&s.pushMenu(m.createPauseMenu())},"Toggle the main/pause menu"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Ct.Archive,onChange:S=>{let T=S.number;isNaN(T)||(A=Math.max(1,Math.min(179,T)))},description:"Field of view"});let _=e.host.cvars.get("fov");if(_){let S=_.number;isNaN(S)||(A=Math.max(1,Math.min(179,S)))}}return{loadingScreen:o,errorDialog:c,init(_){this.Init(_)},Init(_){f=_,_?.state&&t.setAuthoritative(_),E.Init(),e.engine.assets&&e.engine.renderer&&(o.start(100,"Loading assets..."),Tu(e.engine.renderer,e.engine.assets).then(()=>{o.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(s.isActive()||document.body.requestPointerLock?.())})},predict(_){return s.isActive(),t.enqueueCommand(_)},handleInput(_,S){if(!s.isActive())return!1;if(!S)return!0;let T=_.toLowerCase();return T==="arrowup"||T==="w"?s.handleInput("up"):T==="arrowdown"||T==="s"?s.handleInput("down"):T==="arrowleft"||T==="a"?s.handleInput("left"):T==="arrowright"||T==="d"?s.handleInput("right"):T==="enter"||T===" "?s.handleInput("select"):T==="escape"?s.getState().activeMenu?.parent?s.handleInput("back"):!1:_.length===1?s.handleInput("char",_):_==="Backspace"?s.handleInput("left"):!0},toggleMenu(){if(s.isActive()){if(s.closeAll(),e.host?.cvars){let _=e.host.cvars.list().map(S=>({name:S.name,value:S.string,flags:S.flags}));d.saveCvars(_)}}else m&&s.pushMenu(m.createPauseMenu())},createMainMenu(_,S,T,G,K){let N=new vr(s,S,T,G,K),q=l;if(!q){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");q=new cn(s,e.host)}let he=e.engine.assets,Ae={findByExtension:st=>he?he.listFiles(st):[]},ln=new Sr(s,Ae,st=>{console.log(`Starting map: ${st}`),e.host?.commands.execute(`map ${st}`)}),hn=new pr(s,N,{..._,optionsFactory:q,mapsFactory:ln,onSetDifficulty:st=>{e.host?.cvars&&e.host.cvars.setValue("skill",st.toString())}});return{menuSystem:s,factory:hn}},render(_){let S=i.getState(),T=[];S===ei.Playing?v=a.getPredictionState():(_.latest?.state&&(t.setAuthoritative(_.latest),f=_.latest),_.previous?.state&&_.latest?.state?(v=ht(_.previous.state,_.latest.state,_.alpha),_.latest.state.packetEntities&&_.previous.state.packetEntities&&(T=KA(_.latest.state.packetEntities,_.previous.state.packetEntities,_.alpha,h,e))):v=_.latest?.state??_.previous?.state??t.getPredictedState());let G=_.latest&&_.previous?Math.max(0,_.latest.timeMs-_.previous.timeMs):0;x=n.sample(v,G);let K={};if(v){let{origin:N,viewAngles:q}=v;w=new hs,w.position=Z.fromValues(N.x,N.y,N.z);let he=x?.offset??{x:0,y:0,z:0};Z.add(w.position,w.position,[he.x,he.y,he.z]);let Ae=x?.angles??{x:0,y:0,z:0};w.angles=Z.fromValues(q.x+Ae.x,q.y+Ae.y,q.z+Ae.z),w.fov=I?40:A,w.aspect=4/3,e.engine.renderer&&(w.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&w){let N;if(e.engine.assets){let q=h.getModelName(1);if(q){let he=e.engine.assets.getMap(q)}}e.engine.renderer.renderFrame({camera:w,world:N,dlights:[]},T)}if(e.engine.renderer&&v&&v.client){let N=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},q=_.latest?.timeMs??0;this.DrawHUD(N,q)}return K},DrawHUD(_,S){if(!e.engine.renderer)return;let T=e.engine.renderer,G=T.width,K=T.height;if(v&&v.client){let N={origin:v.origin,velocity:v.velocity,viewAngles:v.viewAngles,onGround:De(v.pmFlags,Ee.OnGround),waterLevel:v.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:v.damageAlpha??0,damageIndicators:v.damageIndicators??[],blend:v.blend??[0,0,0,0],pickupIcon:v.pickupIcon,centerPrint:void 0,notify:void 0,stats:v.stats?[...v.stats]:new Array(32).fill(0),kick_angles:Ha,gunoffset:Ha,gunangles:Ha,gunindex:0};N.stats[ke.STAT_HEALTH]=v.health??0,N.stats[ke.STAT_AMMO]=v.ammo??0,N.stats[ke.STAT_ARMOR]=v.armor??0,T.begin2D(),E.DrawHUD(0,null,{x:0,y:0,width:G,height:K},{x:0,y:0,width:G,height:K},1,0,N),r.drawSubtitles(T,S),T.end2D()}s.isActive()&&bu(e.engine.renderer,s.getState(),e.engine.renderer.width,e.engine.renderer.height),v&&v.client&&u.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,v.client),c.render(e.engine.renderer),o.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(E.Shutdown(),f=void 0,v=void 0,e.host?.cvars){let _=e.host.cvars.list().map(S=>({name:S.name,value:S.string,flags:S.flags}));d.saveCvars(_)}},get prediction(){return t},get lastRendered(){return v},get view(){return n},get lastView(){return x},get camera(){return w},demoPlayback:i,ParseCenterPrint(_){E.ParseCenterPrint(_,0,!1)},ParseNotify(_){E.NotifyMessage(0,_,!1)},showSubtitle(_,S){let T=f?.timeMs??0;r.addSubtitle(_,T)},ParseConfigString(_,S){h.set(_,S),E.ParseConfigString(_,S)},demoHandler:a,configStrings:h}}return Iu($A);})();
149
+ `),ge=null}function Lh(e,t,n,r,i,a,s){O0(e,t,n,r,i,a,s)}function Nh(){N0()}function Oh(e){return 0}function Ih(e){return 0}function Ch(e){return[]}function Ph(e,t){return 0}function Dh(e){return 0}function Fh(e){return 0}function Uh(e){}function Bh(e,t){ge&&I0(ge,e,t)}function Gh(e,t,n){if(!ge)return;Ln().setCenterPrint(e,ge.CL_ClientTime())}function Hh(e,t,n){if(!ge)return;Ln().addNotification(t,n,ge.CL_ClientTime())}function Vh(e){Ln().clearNotifications()}function Wh(e){Ln().clearCenterPrint()}function Kh(e){return{x:0,y:0,z:0}}function Xh(e){return null}function Qs(e){return ge=e,{Init:Rh,Shutdown:zh,DrawHUD:Lh,TouchPics:Nh,LayoutFlags:Oh,GetActiveWeaponWheelWeapon:Ih,GetOwnedWeaponWheelWeapons:Ch,GetWeaponWheelAmmoCount:Ph,GetPowerupWheelCount:Dh,GetHitMarkerDamage:Fh,Pmove:Uh,ParseConfigString:Bh,ParseCenterPrint:Gh,NotifyMessage:Hh,ClearNotify:Vh,ClearCenterprint:Wh,GetMonsterFlashOffset:Kh,GetExtension:Xh}}function eo(e,t){let n=new Map,r=new Set,i=()=>e.engine.renderer;return{get tick_rate(){return t.tickRate},get frame_time_s(){return t.frameTimeMs/1e3},get frame_time_ms(){return t.frameTimeMs},Com_Print:a=>{console.log(`[CGAME] ${a}`)},Com_Error:a=>{console.error(`[CGAME ERROR] ${a}`)},get_configstring:a=>t.configStrings.get(a)||"",TagMalloc:(a,s)=>({}),TagFree:a=>{},FreeTags:a=>{},cvar:(a,s,o)=>{let c=e.host?.cvars?.get(a);return c||null},cvar_set:(a,s)=>{e.host?.cvars?.setValue(a,s)},cvar_forceset:(a,s)=>{e.host?.cvars?.setValue(a,s)},CL_FrameValid:()=>!0,CL_FrameTime:()=>t.frameTimeMs,CL_ClientTime:()=>t.frameTimeMs,CL_ServerFrame:()=>t.serverFrame,CL_ServerProtocol:()=>t.serverProtocol,CL_GetClientName:a=>t.getClientName(a),CL_GetClientPic:a=>"",CL_GetClientDogtag:a=>"",CL_GetKeyBinding:a=>t.getKeyBinding(a),RegisterModel:a=>{if(!e.engine.assets)return;let s=a.split(".").pop()?.toLowerCase();s==="md2"?e.engine.assets.loadMd2Model(a).catch(o=>console.warn(`Failed to precache MD2 ${a}`,o)):s==="sp2"?e.engine.assets.loadSprite(a).catch(o=>console.warn(`Failed to precache Sprite ${a}`,o)):s==="md3"&&e.engine.assets.loadMd3Model(a).catch(o=>console.warn(`Failed to precache MD3 ${a}`,o))},RegisterSound:a=>{e.engine.assets&&e.engine.assets.loadSound(a).catch(s=>console.warn(`Failed to precache sound ${a}`,s))},Draw_RegisterPic:a=>(n.has(a)||r.has(a)||(r.add(a),e.engine.assets&&e.engine.assets.loadTexture(a).then(s=>{if(e.engine.renderer){let o=e.engine.renderer.registerTexture(a,s);n.set(a,o)}r.delete(a)}).catch(s=>{console.warn(`[CGameImport] Failed to load pic: ${a}`,s),r.delete(a)})),a),Draw_GetPicSize:a=>{let s=a,o=n.get(s);return o?{width:o.width,height:o.height}:{width:0,height:0}},SCR_DrawChar:(a,s,o)=>{i()?.drawString(a,s,String.fromCharCode(o))},SCR_DrawPic:(a,s,o)=>{let c=o,u=n.get(c);u&&i()?.drawPic(a,s,u)},SCR_DrawColorPic:(a,s,o,c,u)=>{let d=o,m=n.get(d);m&&i()?.drawPic(a,s,m,[c.x,c.y,c.z,u])},SCR_DrawFontString:(a,s,o)=>{i()?.drawString(a,s,o)},SCR_DrawCenterString:(a,s)=>{i()?.drawCenterString(a,s)},SCR_MeasureFontString:a=>a.replace(/\^[0-9]/g,"").length*8,SCR_FontLineHeight:()=>8,SCR_SetAltTypeface:a=>{},SCR_DrawBind:(a,s,o)=>{let c=t.getKeyBinding(o);i()?.drawString(a,s,`[${o}]`)},Localize:a=>a,CL_GetTextInput:()=>"",CL_GetWarnAmmoCount:()=>5,CL_InAutoDemoLoop:()=>t.inAutoDemo,PM_Trace:(a,s,o,c)=>e.engine.trace(a,s,o,c)}}var ft=null,Ke=0;var Ut=!0,Bt=["ch1","ch2","ch3"],gt=[null,null,null],to=async(e,t)=>{for(let n=0;n<Bt.length;n++){let r=Bt[n];try{let i=await t.loadTexture(`pics/${r}.pcx`);gt[n]=e.registerTexture(r,i)}catch{if(n===0)try{let a=await t.loadTexture("pics/crosshair.pcx");gt[n]=e.registerTexture("crosshair",a)}catch{console.error("Failed to load crosshair image")}}}ft=gt[0]};var no=()=>{if(Ut?(Ke++,Ke>=Bt.length&&(Ut=!1,Ke=0)):(Ut=!0,Ke=0),Ut){if(ft=gt[Ke],!ft){let e=!1;for(let t=0;t<Bt.length;t++){let n=(Ke+t)%Bt.length;if(gt[n]){Ke=n,ft=gt[n],e=!0;break}}e||(ft=null)}}else ft=null;return Ut?Ke:-1};var $h=Object.defineProperty,go=(e,t)=>{for(var n in t)$h(e,n,{get:t[n],enumerable:!0})},W={x:0,y:0,z:0};var E5=Math.PI/180;function Yh(e){return{x:e.x,y:e.y,z:e.z}}function F(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function O(e,t){return{x:e.x-t.x,y:e.y-t.y,z:e.z-t.z}}function U(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function _o(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function jh(e){return _o(e,e)}function At(e){return Math.sqrt(jh(e))}function P(e){let t=At(e);return t===0?e:U(e,1/t)}function qh(e,t,n){return{x:e.x<t.x?t.x:e.x>n.x?n.x:e.x,y:e.y<t.y?t.y:e.y>n.y?n.y:e.y,z:e.z<t.z?t.z:e.z>n.z?n.z:e.z}}function Zh(e,t,n,r){let i=0;if(t.x<n.x){let a=t.x-n.x;i+=a*a}else if(e.x>r.x){let a=e.x-r.x;i+=a*a}if(t.y<n.y){let a=t.y-n.y;i+=a*a}else if(e.y>r.y){let a=e.y-r.y;i+=a*a}if(t.z<n.z){let a=t.z-n.z;i+=a*a}else if(e.z>r.z){let a=e.z-r.z;i+=a*a}return i}var Ii=0,Ci=1,po=2,Jh=Math.PI/180,Qh=180/Math.PI;function Ht(e,t){switch(t){case Ii:return e.x;case Ci:return e.y;case po:default:return e.z}}function Cn(e){return e*Jh}function Ti(e){return e*Qh}function Mi(e){let t=e%360;return t<0?360+t:t}function Q(e){let t=Cn(Ht(e,Ci)),n=Cn(Ht(e,Ii)),r=Cn(Ht(e,po)),i=Math.sin(t),a=Math.cos(t),s=Math.sin(n),o=Math.cos(n),c=Math.sin(r),u=Math.cos(r),d={x:o*a,y:o*i,z:-s},m={x:-c*s*a-u*-i,y:-c*s*i-u*a,z:-c*o},l={x:u*s*a-c*-i,y:u*s*i-c*a,z:u*o};return{forward:d,right:m,up:l}}function Pi(e){let t=Ht(e,Ii),n=Ht(e,Ci);if(t===0)return n===0?0:n>0?90:270;let r=Ti(Math.atan2(n,t));return r<0?r+360:r}function $t(e){let t=e.x,n=e.y,r=e.z;if(n===0&&t===0)return{x:r>0?-90:-270,y:0,z:0};let i;t?i=Ti(Math.atan2(n,t)):n>0?i=90:i=270,i<0&&(i+=360);let a=Math.sqrt(t*t+n*n),s=Ti(Math.atan2(r,a));return s<0&&(s+=360),{x:-s,y:i,z:0}}var Ie=624,ef=397,tf=2567483615,nf=2147483648,rf=2147483647,yi=4294967296,af=class{constructor(e=5489){this.state=new Uint32Array(Ie),this.index=Ie,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Ie;t++){let n=this.state[t-1]^this.state[t-1]>>>30,r=Math.imul(n>>>0,1812433253)+t;this.state[t]=r>>>0}this.index=Ie}nextUint32(){this.index>=Ie&&this.twist();let e=this.state[this.index++];return e^=e>>>11,e^=e<<7&2636928640,e^=e<<15&4022730752,e^=e>>>18,e>>>0}twist(){for(let e=0;e<Ie;e++){let t=this.state[e]&nf|this.state[(e+1)%Ie]&rf,n=this.state[(e+ef)%Ie]^t>>>1;(t&1)!==0&&(n^=tf),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Ie)throw new Error(`Expected ${Ie} MT state values, received ${e.state.length}`);this.index=e.index,this.state=Uint32Array.from(e.state,t=>t>>>0)}},vo=class{constructor(e={}){this.mt=new af(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/yi}frandomRange(e,t){return e+(t-e)*this.frandom()}frandomMax(e){return this.frandomRange(0,e)}crandom(){return this.frandomRange(-1,1)}crandomOpen(){let e=Number.EPSILON;return this.frandomRange(-1+e,1)}irandomUint32(){return this.mt.nextUint32()}irandomRange(e,t){if(t-e<=1)return e;let n=t-e,r=yi-yi%n,i;do i=this.mt.nextUint32();while(i>=r);return e+i%n}irandom(e){return e<=0?0:this.irandomRange(0,e)}randomTimeRange(e,t){return t<=e?e:this.irandomRange(e,t)}randomTime(e){return this.irandom(e)}randomIndex(e){return this.irandom(e.length)}getState(){return{mt:this.mt.getState()}}setState(e){this.mt.setState(e.mt)}};function Di(e){return new vo(e)}var _e=1,je=2;var Fi=8,Ui=16,sf=32;var of=16384;var Vn=65536,yo=1<<17,cf=1<<18,uf=1<<19,df=1<<20,mf=1<<21,lf=1<<22,hf=1<<23,k5=1<<24,nt=1<<25,Wn=1<<26,T5=1<<27,M5=1<<28,b5=1<<29,Et=1<<30,R5=1<<31;var z5=1<<25,L5=1<<28,N5=1<<29,O5=1<<30,I5=1<<31,ff=_e|je,C5=_e|Vn|je|nt|Et,P5=_e|Vn|je,Dn=_e|yo|je|nt|Et,gf=sf|Fi|Ui,D5=_e|Ui|Fi,Yt=_e|nt|Et|je|Wn,F5=cf|uf|df|mf|lf|hf,U5=_e|Fi|Ui|nt|Et,B5=_e|Vn|je,G5=_e|je,H5=_e|Vn|je|yo,V5=Yt|of,W5=Number.MAX_SAFE_INTEGER-1;var So=256,_f=256,pf=8192,vf=2048,yf=512,Sf=256,wf=So*2,xf=256,Si=32,wo=(e=>(e[e.Name=0]="Name",e[e.CdTrack=1]="CdTrack",e[e.Sky=2]="Sky",e[e.SkyAxis=3]="SkyAxis",e[e.SkyRotate=4]="SkyRotate",e[e.StatusBar=5]="StatusBar",e[e.CONFIG_N64_PHYSICS=56]="CONFIG_N64_PHYSICS",e[e.CONFIG_CTF_TEAMS=57]="CONFIG_CTF_TEAMS",e[e.CONFIG_COOP_RESPAWN_STRING=58]="CONFIG_COOP_RESPAWN_STRING",e[e.AirAccel=59]="AirAccel",e[e.MaxClients=60]="MaxClients",e[e.MapChecksum=61]="MapChecksum",e[e.Models=62]="Models",e[e.Sounds=62+pf]="Sounds",e[e.Images=e.Sounds+vf]="Images",e[e.Lights=e.Images+yf]="Lights",e[e.ShadowLights=e.Lights+_f]="ShadowLights",e[e.Items=e.ShadowLights+xf]="Items",e[e.PlayerSkins=e.Items+Sf]="PlayerSkins",e[e.General=e.PlayerSkins+So]="General",e[e.WheelWeapons=e.General+wf]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Si]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Si]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Si]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(wo||{}),K5=wo.MaxConfigStrings,Af={};go(Af,{addReplayFrame:()=>Mf,createReplaySession:()=>Tf,deserializeReplay:()=>kf,serializeReplay:()=>Ef});function Ef(e){return JSON.stringify(e,null,2)}function kf(e){let t=JSON.parse(e);if(!t.metadata||!Array.isArray(t.frames))throw new Error("Invalid replay format: missing metadata or frames");return t}function Tf(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Mf(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var pe=(e=>(e[e.bad=0]="bad",e[e.muzzleflash=1]="muzzleflash",e[e.muzzleflash2=2]="muzzleflash2",e[e.temp_entity=3]="temp_entity",e[e.layout=4]="layout",e[e.inventory=5]="inventory",e[e.nop=6]="nop",e[e.disconnect=7]="disconnect",e[e.reconnect=8]="reconnect",e[e.sound=9]="sound",e[e.print=10]="print",e[e.stufftext=11]="stufftext",e[e.serverdata=12]="serverdata",e[e.configstring=13]="configstring",e[e.spawnbaseline=14]="spawnbaseline",e[e.centerprint=15]="centerprint",e[e.download=16]="download",e[e.playerinfo=17]="playerinfo",e[e.packetentities=18]="packetentities",e[e.deltapacketentities=19]="deltapacketentities",e[e.frame=20]="frame",e))(pe||{}),we=(e=>(e[e.GUNSHOT=0]="GUNSHOT",e[e.BLOOD=1]="BLOOD",e[e.BLASTER=2]="BLASTER",e[e.RAILTRAIL=3]="RAILTRAIL",e[e.SHOTGUN=4]="SHOTGUN",e[e.EXPLOSION1=5]="EXPLOSION1",e[e.EXPLOSION2=6]="EXPLOSION2",e[e.ROCKET_EXPLOSION=7]="ROCKET_EXPLOSION",e[e.GRENADE_EXPLOSION=8]="GRENADE_EXPLOSION",e[e.SPARKS=9]="SPARKS",e[e.SPLASH=10]="SPLASH",e[e.BUBBLETRAIL=11]="BUBBLETRAIL",e[e.SCREEN_SPARKS=12]="SCREEN_SPARKS",e[e.SHIELD_SPARKS=13]="SHIELD_SPARKS",e[e.BULLET_SPARKS=14]="BULLET_SPARKS",e[e.LASER_SPARKS=15]="LASER_SPARKS",e[e.PARASITE_ATTACK=16]="PARASITE_ATTACK",e[e.ROCKET_EXPLOSION_WATER=17]="ROCKET_EXPLOSION_WATER",e[e.GRENADE_EXPLOSION_WATER=18]="GRENADE_EXPLOSION_WATER",e[e.MEDIC_CABLE_ATTACK=19]="MEDIC_CABLE_ATTACK",e[e.BFG_EXPLOSION=20]="BFG_EXPLOSION",e[e.BFG_BIGEXPLOSION=21]="BFG_BIGEXPLOSION",e[e.BOSSTPORT=22]="BOSSTPORT",e[e.BFG_LASER=23]="BFG_LASER",e[e.GRAPPLE_CABLE=24]="GRAPPLE_CABLE",e[e.WELDING_SPARKS=25]="WELDING_SPARKS",e[e.GREENBLOOD=26]="GREENBLOOD",e[e.BLUEHYPERBLASTER=27]="BLUEHYPERBLASTER",e[e.PLASMA_EXPLOSION=28]="PLASMA_EXPLOSION",e[e.TUNNEL_SPARKS=29]="TUNNEL_SPARKS",e[e.BLASTER2=30]="BLASTER2",e[e.RAILTRAIL2=31]="RAILTRAIL2",e[e.FLAME=32]="FLAME",e[e.LIGHTNING=33]="LIGHTNING",e[e.DEBUGTRAIL=34]="DEBUGTRAIL",e[e.PLAIN_EXPLOSION=35]="PLAIN_EXPLOSION",e[e.FLASHLIGHT=36]="FLASHLIGHT",e[e.FORCEWALL=37]="FORCEWALL",e[e.HEATBEAM=38]="HEATBEAM",e[e.MONSTER_HEATBEAM=39]="MONSTER_HEATBEAM",e[e.STEAM=40]="STEAM",e[e.BUBBLETRAIL2=41]="BUBBLETRAIL2",e[e.MOREBLOOD=42]="MOREBLOOD",e[e.HEATBEAM_SPARKS=43]="HEATBEAM_SPARKS",e[e.HEATBEAM_STEAM=44]="HEATBEAM_STEAM",e[e.CHAINFIST_SMOKE=45]="CHAINFIST_SMOKE",e[e.ELECTRIC_SPARKS=46]="ELECTRIC_SPARKS",e[e.TRACKER_EXPLOSION=47]="TRACKER_EXPLOSION",e[e.TELEPORT_EFFECT=48]="TELEPORT_EFFECT",e[e.DBALL_GOAL=49]="DBALL_GOAL",e[e.WIDOWBEAMOUT=50]="WIDOWBEAMOUT",e[e.NUKEBLAST=51]="NUKEBLAST",e[e.WIDOWSPLASH=52]="WIDOWSPLASH",e[e.EXPLOSION1_BIG=53]="EXPLOSION1_BIG",e[e.EXPLOSION1_NP=54]="EXPLOSION1_NP",e[e.FLECHETTE=55]="FLECHETTE",e[e.BLUEHYPERBLASTER_KEX=56]="BLUEHYPERBLASTER_KEX",e[e.BFG_ZAP=57]="BFG_ZAP",e[e.BERSERK_SLAM=58]="BERSERK_SLAM",e[e.GRAPPLE_CABLE_2=59]="GRAPPLE_CABLE_2",e[e.POWER_SPLASH=60]="POWER_SPLASH",e[e.LIGHTNING_BEAM=61]="LIGHTNING_BEAM",e[e.EXPLOSION1_NL=62]="EXPLOSION1_NL",e[e.EXPLOSION2_NL=63]="EXPLOSION2_NL",e))(we||{});var $=(e=>(e.QuadDamage="quad",e.Invulnerability="invulnerability",e.EnviroSuit="enviro_suit",e.Rebreather="rebreather",e.Silencer="silencer",e.PowerScreen="power_screen",e.PowerShield="power_shield",e.QuadFire="quad_fire",e.Invisibility="invisibility",e.Bandolier="bandolier",e.AmmoPack="ammo_pack",e.IRGoggles="ir_goggles",e.DoubleDamage="double_damage",e.SphereVengeance="sphere_vengeance",e.SphereHunter="sphere_hunter",e.SphereDefender="sphere_defender",e.Doppelganger="doppelganger",e.TagToken="tag_token",e.TechResistance="tech_resistance",e.TechStrength="tech_strength",e.TechHaste="tech_haste",e.TechRegeneration="tech_regeneration",e.Flashlight="flashlight",e.Compass="compass",e))($||{});var bf=12,Rf=9,X5=Math.ceil(bf*Rf/16),zf=23,Lf=2,$5=Math.ceil(zf*Lf/16);var Nf={};go(Nf,{U_ANGLE1:()=>Uf,U_ANGLE2:()=>Bf,U_ANGLE3:()=>Gf,U_EFFECTS:()=>Wf,U_EVENT:()=>$f,U_FRAME:()=>Hf,U_MODEL:()=>If,U_MODEL2:()=>jf,U_MODEL3:()=>qf,U_MODEL4:()=>Zf,U_MOREBITS:()=>Yf,U_NUMBER:()=>Of,U_ORIGIN1:()=>Pf,U_ORIGIN2:()=>Df,U_ORIGIN3:()=>Ff,U_REMOVE:()=>Jf,U_RENDERFX:()=>Kf,U_SKIN:()=>Vf,U_SOLID:()=>Xf,U_SOUND:()=>Cf});var Of=1,If=2,Cf=4,Pf=8,Df=16,Ff=32,Uf=64,Bf=128,Gf=256,Hf=512,Vf=1024,Wf=2048,Kf=4096,Xf=8192,$f=16384,Yf=32768,jf=1,qf=2,Zf=4,Jf=32768;var C=(e=>(e.Blaster="blaster",e.Shotgun="shotgun",e.SuperShotgun="super_shotgun",e.Machinegun="machinegun",e.Chaingun="chaingun",e.GrenadeLauncher="grenade_launcher",e.RocketLauncher="rocket_launcher",e.HyperBlaster="hyperblaster",e.Railgun="railgun",e.BFG10K="bfg10k",e.Grapple="grapple",e.ChainFist="chainfist",e.EtfRifle="etf_rifle",e.ProxLauncher="prox_launcher",e.IonRipper="ionripper",e.PlasmaBeam="plasmabeam",e.Phalanx="phalanx",e.Disruptor="disruptor",e))(C||{}),V=(e=>(e[e.Bullets=0]="Bullets",e[e.Shells=1]="Shells",e[e.Rockets=2]="Rockets",e[e.Grenades=3]="Grenades",e[e.Cells=4]="Cells",e[e.Slugs=5]="Slugs",e[e.MagSlugs=6]="MagSlugs",e[e.Trap=7]="Trap",e[e.Flechettes=8]="Flechettes",e[e.Tesla=9]="Tesla",e[e.Disruptor=10]="Disruptor",e[e.Prox=11]="Prox",e[e.Nuke=12]="Nuke",e[e.Rounds=13]="Rounds",e))(V||{}),Y5=Object.keys(V).length/2,ye=(e=>(e.Shells="ammo_shells",e.Bullets="ammo_bullets",e.Rockets="ammo_rockets",e.Grenades="ammo_grenades",e.Cells="ammo_cells",e.Slugs="ammo_slugs",e))(ye||{});function Ye(e,t){return(e&t)!==0}var kt=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(kt||{}),Qf={jacket:{baseCount:25,maxCount:50,normalProtection:.3,energyProtection:0},combat:{baseCount:50,maxCount:100,normalProtection:.6,energyProtection:.3},body:{baseCount:100,maxCount:200,normalProtection:.8,energyProtection:.6}};function e1(e,t,n){if(e<=0||Ye(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let r=Qf[n.armorType],i=Ye(t,4)?r.energyProtection:r.normalProtection,a=Math.ceil(i*e);return a>=n.armorCount&&(a=n.armorCount),a<=0?{saved:0,remainingArmor:n.armorCount}:{saved:a,remainingArmor:n.armorCount-a}}function t1(e,t,n,r,i,a={}){if(i.health<=0||e<=0)return{saved:0,remainingCells:i.cellCount};if(Ye(t,258))return{saved:0,remainingCells:i.cellCount};if(!i.type||i.cellCount<=0)return{saved:0,remainingCells:i.cellCount};let{forward:s}=Q(i.angles),o={x:n.x-i.origin.x,y:n.y-i.origin.y,z:n.z-i.origin.z},c=Math.hypot(o.x,o.y,o.z);if(i.type==="screen"&&c>0){let g={x:o.x/c,y:o.y/c,z:o.z/c};if(g.x*s.x+g.y*s.y+g.z*s.z<=.3)return{saved:0,remainingCells:i.cellCount}}let u=a.ctfMode??!1,d=i.type==="screen"||u?1:2,m=i.type==="screen"?e/3:2*e/3;m=Math.max(1,m);let l=i.cellCount*d;Ye(t,4)&&(l=Math.max(1,Math.floor(l/2))),l>m&&(l=Math.floor(m));let h=l/d;Ye(t,4)&&(h*=2),h=Math.max(1,Math.floor(h));let f=Math.max(d,h),p=Math.max(0,i.cellCount-f);return{saved:l,remainingCells:p}}var j5={[ye.Shells]:{id:ye.Shells,ammoType:V.Shells,quantity:10,weaponAmmo:!1},[ye.Bullets]:{id:ye.Bullets,ammoType:V.Bullets,quantity:50,weaponAmmo:!1},[ye.Rockets]:{id:ye.Rockets,ammoType:V.Rockets,quantity:5,weaponAmmo:!1},[ye.Grenades]:{id:ye.Grenades,ammoType:V.Grenades,quantity:5,weaponAmmo:!0},[ye.Cells]:{id:ye.Cells,ammoType:V.Cells,quantity:50,weaponAmmo:!1},[ye.Slugs]:{id:ye.Slugs,ammoType:V.Slugs,quantity:10,weaponAmmo:!1}};var oe=(e=>(e.Blue="blue",e.Red="red",e.Green="green",e.Yellow="yellow",e.DataCD="data_cd",e.PowerCube="power_cube",e.ExplosiveCharges="explosive_charges",e.PowerCore="power_core",e.Pyramid="pyramid",e.DataSpinner="data_spinner",e.Pass="pass",e.CommanderHead="commander_head",e.Airstrike="airstrike",e.NukeContainer="nuke_container",e.Nuke="nuke",e.RedFlag="red_flag",e.BlueFlag="blue_flag",e))(oe||{});var n1={...W};var q5=Object.freeze({aiflags:0,last_sighting:n1,trail_time:0,pausetime:0});var Bi=[{name:"classname",type:"string",save:!0},{name:"spawnflags",type:"int",save:!0},{name:"target",type:"string",save:!0},{name:"targetname",type:"string",save:!0},{name:"killtarget",type:"string",save:!0},{name:"team",type:"string",save:!0},{name:"message",type:"string",save:!0},{name:"pathtarget",type:"string",save:!0},{name:"model",type:"string",save:!0},{name:"item",type:"string",save:!0},{name:"map",type:"string",save:!0},{name:"inventory",type:"inventory",save:!0},{name:"origin",type:"vec3",save:!0},{name:"old_origin",type:"vec3",save:!0},{name:"velocity",type:"vec3",save:!0},{name:"avelocity",type:"vec3",save:!0},{name:"angles",type:"vec3",save:!0},{name:"pos1",type:"vec3",save:!0},{name:"pos2",type:"vec3",save:!0},{name:"viewheight",type:"int",save:!0},{name:"mins",type:"vec3",save:!0},{name:"maxs",type:"vec3",save:!0},{name:"absmin",type:"vec3",save:!0},{name:"absmax",type:"vec3",save:!0},{name:"size",type:"vec3",save:!0},{name:"mass",type:"int",save:!0},{name:"gravity",type:"float",save:!0},{name:"movetype",type:"int",save:!0},{name:"movedir",type:"vec3",save:!0},{name:"modelindex",type:"int",save:!0},{name:"frame",type:"int",save:!0},{name:"skin",type:"int",save:!0},{name:"effects",type:"int",save:!0},{name:"renderfx",type:"int",save:!0},{name:"health",type:"int",save:!0},{name:"max_health",type:"int",save:!0},{name:"takedamage",type:"boolean",save:!0},{name:"dmg",type:"int",save:!0},{name:"speed",type:"float",save:!0},{name:"accel",type:"float",save:!0},{name:"decel",type:"float",save:!0},{name:"height",type:"float",save:!0},{name:"deadflag",type:"int",save:!0},{name:"count",type:"int",save:!0},{name:"wait",type:"float",save:!0},{name:"delay",type:"float",save:!0},{name:"timestamp",type:"float",save:!0},{name:"lip",type:"int",save:!0},{name:"state",type:"int",save:!0},{name:"style",type:"int",save:!0},{name:"sounds",type:"int",save:!0},{name:"noise_index",type:"int",save:!0},{name:"attenuation",type:"float",save:!0},{name:"volume",type:"float",save:!0},{name:"fly_sound_debounce_time",type:"float",save:!0},{name:"enemy",type:"entity",save:!0},{name:"movetarget",type:"entity",save:!0},{name:"target_ent",type:"entity",save:!0},{name:"goalentity",type:"entity",save:!0},{name:"ideal_yaw",type:"float",save:!0},{name:"yaw_speed",type:"float",save:!0},{name:"search_time",type:"float",save:!0},{name:"attack_finished_time",type:"float",save:!0},{name:"pain_finished_time",type:"float",save:!0},{name:"pain_debounce_time",type:"float",save:!0},{name:"trail_time",type:"float",save:!0},{name:"groundentity",type:"entity",save:!0},{name:"groundentity_linkcount",type:"int",save:!0},{name:"waterlevel",type:"int",save:!0},{name:"watertype",type:"int",save:!0},{name:"nextthink",type:"float",save:!0},{name:"solid",type:"int",save:!0},{name:"flags",type:"int",save:!0},{name:"svflags",type:"int",save:!0},{name:"think",type:"callback",save:!1},{name:"touch",type:"callback",save:!1},{name:"use",type:"callback",save:!1},{name:"blocked",type:"callback",save:!1},{name:"pain",type:"callback",save:!1},{name:"die",type:"callback",save:!1},{name:"postthink",type:"callback",save:!1},{name:"beam",type:"entity",save:!0},{name:"beam2",type:"entity",save:!0}],r1=20,i1=440,a1=940,wi=32,s1=1<<24,Fn=1;function ro(e){return{mins:{x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},maxs:{x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z}}}function qe(e,t){let n=ro(e),r=ro(t),i=Zh(n.mins,n.maxs,r.mins,r.maxs);return Math.sqrt(i)}function o1(e){return e<=r1?"melee":e<=i1?"near":e<=a1?"mid":"far"}function Wt(e,t){let{forward:n}=Q(e.angles),r=P(O(t.origin,e.origin)),i=_o(r,n);return(e.spawnflags&Fn)!==0&&e.trail_time===0&&e.enemy===null?i>.15:i>-.3}function jt(e,t,n,r){if((t.flags&s1)!==0)return!1;let i={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},a={x:t.origin.x,y:t.origin.y,z:t.origin.z+t.viewheight},s=r?.throughGlass?1:3,o=n(i,null,null,a,e,s);return o.fraction===1||o.ent===t}function c1(e,t){let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=Pi(n)}function xo(e){e.angles.y=Mi(e.ideal_yaw)}function u1(e,t,n){e.enemy&&(e.goalentity=e.enemy,c1(e,e.enemy),xo(e),(e.monsterinfo.aiflags&1)!==0?e.monsterinfo.stand?.(e,n):(e.monsterinfo.run?.(e,n),e.attack_finished_time=t.timeSeconds+1))}function d1(e,t,n,r){if(!e.enemy)return;(e.enemy.svflags&8)!==0&&(t.sightEntity=e,t.sightEntityFrame=t.frameNumber,e.light_level=128),e.show_hostile=t.timeSeconds+1;let i=e.monsterinfo.last_sighting;if(i.x=e.enemy.origin.x,i.y=e.enemy.origin.y,i.z=e.enemy.origin.z,e.trail_time=t.timeSeconds,e.monsterinfo.trail_time=t.timeSeconds,!e.combattarget){u1(e,t,n);return}let a=r?.pickTarget,s=a?.(e.combattarget)??e.enemy;e.goalentity=s,e.movetarget=s,e.combattarget=void 0,e.monsterinfo.aiflags|=4096,e.movetarget&&(e.movetarget.targetname=void 0),e.monsterinfo.pausetime=0,e.monsterinfo.run?.(e,n)}function m1(e,t,n,r){let i=qe(e,t),a=o1(i);return a==="far"||t.light_level<=5||!jt(e,t,r,{throughGlass:!1})?!1:a==="near"?n.timeSeconds<=t.show_hostile||Wt(e,t):a==="mid"?Wt(e,t):!0}function l1(e,t,n,r,i){if((e.spawnflags&Fn)!==0){if(!jt(e,t,i))return!1}else if(r.canHear&&!r.canHear(e,t))return!1;let a=O(t.origin,e.origin);return At(a)>1e3||r.areasConnected&&!r.areasConnected(e,t)?!1:(e.ideal_yaw=Pi(a),xo(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function h1(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Fn)===0?t.sightEntity.enemy!==e.enemy?{candidate:t.sightEntity,heardit:!1}:{candidate:null,heardit:!1}:t.soundEntity&&t.soundEntityFrame>=t.frameNumber-1?{candidate:t.soundEntity,heardit:!0}:!e.enemy&&t.sound2Entity&&t.sound2EntityFrame>=t.frameNumber-1&&(e.spawnflags&Fn)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function f1(e){return(e.flags&wi)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&wi)!==0:!!(e.enemy&&(e.enemy.flags&wi)!==0)}function Gi(e,t,n,r,i={}){if((e.monsterinfo.aiflags&256)!==0)return e.goalentity?.classname==="target_actor",!1;if((e.monsterinfo.aiflags&4096)!==0)return!1;let{candidate:a,heardit:s}=h1(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(f1(a))return!1;if(s){if(!l1(e,a,t,i,r))return!1}else{if(!m1(e,a,t,r))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return d1(e,t,n),(e.monsterinfo.aiflags&4)===0&&e.monsterinfo.sight?.(e,e.enemy),!0}function Ao(e,t){if(t===0)return{x:0,y:0,z:0};let n=Cn(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Hi(e,t,n){let r=Ao(t,n),i=e.origin;return i.x+=r.x,i.y+=r.y,i.z+=r.z,!0}function qt(e,t){let n=Mi(e.angles.y),r=e.ideal_yaw;if(n===r){e.angles.y=n;return}let i=e.yaw_speed*t*10,a=r-n;r>n?a>=180&&(a-=360):a<=-180&&(a+=360),a>i?a=i:a<-i&&(a=-i),e.angles.y=Mi(n+a)}function ae(e,t){Hi(e,e.angles.y,t)}function Kn(e,t){if(!t)return;let n={x:t.origin.x-e.origin.x,y:t.origin.y-e.origin.y,z:t.origin.z-e.origin.z};e.ideal_yaw=Pi(n)}function ne(e,t,n){Gi(e,n.targetAwareness,n,n.trace)||qt(e,t)}function ce(e,t,n,r){if(!Gi(e,r.targetAwareness,r,r.trace)&&(Kn(e,e.goalentity),qt(e,n),t!==0&&Hi(e,e.angles.y,t),e.goalentity&&e.goalentity.classname==="path_corner"&&qe(e,e.goalentity)<64&&e.goalentity.target)){let a=r.pickTarget(e.goalentity.target);a&&(e.goalentity=a,e.ideal_yaw=e.angles.y)}}function se(e,t,n,r){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,r);return}Gi(e,r.targetAwareness,r,r.trace),Kn(e,e.enemy??e.goalentity),qt(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Eo(e,e.angles.y,t,r)}function g1(e,t,n,r){t&&Kn(e,t),qt(e,r),n!==0&&Hi(e,e.angles.y,n)}function re(e,t,n,r){Kn(e,e.enemy),qt(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Eo(e,e.angles.y,t,r)}function _1(e,t){if(e.movetype===1)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.mins.z-1},r=t.trace(e.origin,e.mins,e.maxs,n,e,Dn);if(e.groundentity=r.ent,!e.groundentity&&!r.allsolid&&!r.startsolid&&r.fraction===1){let i=t.pointcontents(n);i&gf?(e.waterlevel=1,e.watertype=i):(e.waterlevel=0,e.watertype=0)}}function p1(e,t){let n={x:e.origin.x+e.mins.x,y:e.origin.y+e.mins.y,z:e.origin.z+e.mins.z},r={x:e.origin.x+e.maxs.x,y:e.origin.y+e.maxs.y,z:e.origin.z+e.maxs.z},i={x:0,y:0,z:0},a={x:0,y:0,z:0};for(let s=0;s<2;s++)if(s===1?i={x:n.x,y:n.y,z:0}:i={x:r.x,y:n.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,Dn).fraction<1)||(s===1?i={x:n.x,y:r.y,z:0}:i={x:r.x,y:r.y,z:0},i.z=n.z-1,t.pointcontents(i)!==0)||(a={...i},a.z=i.z-60,t.trace(i,null,null,a,e,Dn).fraction<1))return!0;return!1}function Eo(e,t,n,r){if((e.flags&3)===0&&e.movetype!==1&&!e.groundentity&&e.waterlevel===0)return!1;let i=Ao(t,n);(e.monsterinfo.aiflags&1024)!==0&&e.monsterinfo.aiflags&1073741824;let a={x:e.origin.x+i.x,y:e.origin.y+i.y,z:e.origin.z+i.z};if(r.trace(e.origin,e.mins,e.maxs,a,e,Dn).fraction<1)return!1;let o={...e.origin};return e.origin.x=a.x,e.origin.y=a.y,e.origin.z=a.z,(e.flags&3)===0&&e.movetype!==1&&!p1(e,r)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&_1(e,r),!0)}var v1=Bi.filter(e=>e.save||e.type==="callback"),Z5=new Map(v1.map(e=>[e.name,e]));var J5=1/40;function y1(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var S1=1;function w1(e,t){if(!e.client)return;let n=y1(e.client.weaponStates,C.Chaingun);!(e.client.buttons&S1)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var Q5={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:C.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:C.Shotgun,ammoType:V.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:C.SuperShotgun,ammoType:V.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:C.Machinegun,ammoType:V.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:w1},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:C.Chaingun,ammoType:V.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:C.GrenadeLauncher,ammoType:V.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:C.RocketLauncher,ammoType:V.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:C.HyperBlaster,ammoType:V.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:C.Railgun,ammoType:V.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:C.BFG10K,ammoType:V.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1}};function x1(e,t){if(!e)return 1;let n=e.client;if(!n)return 1;let r=1;return n.quad_time&&n.quad_time>t&&(r*=4),n.double_time&&n.double_time>t&&(r*=2),r}function A1(e,t,n,r,i){if(Ye(i,8)||((e.flags??0)&4)!==0||r===0)return{x:0,y:0,z:0};let s=Math.max(50,e.mass??200),o=P(n),u=U(o,(t===e?1600:500)*r/s);return e.velocity=F(e.velocity,u),u}function E1(e,t,n,r,i){let a=r,s=0,o=0,c,u;if(e.powerArmor){let d=t1(r,i,t,n,e.powerArmor);s=d.saved,c=d.remainingCells,a-=s}if(e.regularArmor){let d=e1(a,i,e.regularArmor);o=d.saved,u=d.remainingArmor,a-=o}return[Math.max(0,a),s,o,c,u]}function io(e){return e.mins&&e.maxs?{x:e.origin.x+(e.mins.x+e.maxs.x)*.5,y:e.origin.y+(e.mins.y+e.maxs.y)*.5,z:e.origin.z+(e.mins.z+e.maxs.z)*.5}:e.origin}function le(e,t,n,r,i,a,s,o,c,u,d,m){if(!e.takedamage)return null;let l=x1(n,d),h=s*l,f=o*l;if(!Ye(c,32)&&((e.flags??0)&1)!==0&&h>0)return{take:0,psave:0,asave:h,knocked:{x:0,y:0,z:0},killed:!1};let g=A1(e,n,r,f,c),[y,E,v,x,w]=E1(e,i,a,h,c);e.powerArmor&&x!==void 0&&(e.powerArmor.cellCount=x),e.regularArmor&&(e.regularArmor.armorCount=w??e.regularArmor.armorCount);let A=y;A>0&&(e.health-=A,m&&!Ye(c,1024)&&(e.classname==="player"||e.monsterinfo)&&m(i,1,pe.temp_entity,we.BLOOD,i,a));let I=e.health<=0;return I?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,A,i,u):A>0&&e.pain&&e.pain(e,n,o,A,u),{take:A,psave:E,asave:v,knocked:g,killed:I,remainingCells:x,remainingArmor:w}}function Vi(e,t,n,r,i,a,s,o,c,u={},d){let m=[],l=io(t),h=u.canDamage??(()=>!0);for(let f of e){if(f===i||!f.takedamage||!h(f,t))continue;let p=f.mins&&f.maxs?qh(l,F(f.origin,f.mins),F(f.origin,f.maxs)):io(f),g=O(l,p),y=At(g);if(a>0&&y>a)continue;let E=r-.5*y;if(E<=0)continue;let v=f===n?E*.5:E,x=P(O(f.origin,l)),w=le(f,t,n,x,p,x,v,v,s|1,o,c,d);m.push({target:f,result:w,appliedDamage:v})}return m}var ek=Di();var Xn=.1,Vt=80,ko=Di();function k1(){return ko.frandom()}function To(e,t){return Math.floor(ko.frandom()*(t-e+1)+e)}function yt(e,t,n){ne(e,Xn,n)}function Te(e,t,n){ce(e,t,Xn,n)}function _t(e,t,n){se(e,t,Xn,n)}function ee(e,t,n){re(e,t,Xn,n)}function L(e,t,n){ae(e,t)}var Kt={pain:"berserk/berpain2.wav",die:"berserk/berdeth2.wav",idle:"berserk/beridle1.wav",idle2:"berserk/idle.wav",punch:"berserk/attack.wav",search:"berserk/bersrch1.wav",sight:"berserk/sight.wav",thud:"mutant/thud1.wav",explod:"world/explod2.wav",jump:"berserk/jump.wav",footstep:"misc/step1.wav"};function ze(e,t){t.sound(e,2,Kt.footstep,1,1,0)}function Un(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function T1(e,t){}var Wi,Mo,M1,bo,b1,R1,z1,L1,N1,Ro,O1;function I1(e,t){Un(e,Wi)}function C1(e,t){e.monsterinfo.aiflags&1||e.enemy||k1()>.15||(Un(e,Mo),t.sound(e,1,Kt.idle,1,2,0))}var P1=[{ai:yt,dist:0,think:C1},{ai:yt,dist:0},{ai:yt,dist:0},{ai:yt,dist:0},{ai:yt,dist:0}];Wi={firstframe:0,lastframe:4,frames:P1,endfunc:null};var D1=Array.from({length:20},()=>({ai:yt,dist:0}));Mo={firstframe:5,lastframe:24,frames:D1,endfunc:I1};var F1=[{ai:Te,dist:9.1},{ai:Te,dist:6.3},{ai:Te,dist:4.9},{ai:Te,dist:6.7,think:ze},{ai:Te,dist:6},{ai:Te,dist:8.2},{ai:Te,dist:7.2},{ai:Te,dist:6.1},{ai:Te,dist:4.9},{ai:Te,dist:4.7,think:ze},{ai:Te,dist:4.7}];M1={firstframe:25,lastframe:35,frames:F1,endfunc:null};var U1=[{ai:_t,dist:21},{ai:_t,dist:11,think:ze},{ai:_t,dist:21},{ai:_t,dist:25,think:T1},{ai:_t,dist:18,think:ze},{ai:_t,dist:19}];bo={firstframe:36,lastframe:41,frames:U1,endfunc:null};function Zt(e,t){e.monsterinfo.aiflags&1?Un(e,Wi):Un(e,bo)}function zo(e,t,n,r,i){let a={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},s=Q(e.angles).forward,o={x:a.x+s.x+t.x,y:a.y+s.y+t.y,z:a.z+s.z+t.z},c={x:a.x+s.x*Vt,y:a.y+s.y*Vt,z:a.z+s.z*Vt},u=i.trace(a,null,null,c,e,536870913);return!u.ent||!u.ent.takedamage?!1:(le(u.ent,e,e,s,u.endpos,u.plane?.normal||W,n,r,0,0,i.timeSeconds,i.multicast.bind(i)),!0)}function B1(e,t){zo(e,{x:Vt,y:0,z:-24},To(5,11),80,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+1.2)}function Lo(e,t){t.sound(e,1,Kt.punch,1,1,0)}var G1=[{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0,think:Lo},{ai:ee,dist:0,think:B1},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0}];b1={firstframe:67,lastframe:74,frames:G1,endfunc:Zt};function H1(e,t){zo(e,{x:Vt,y:0,z:-4},To(15,21),400,t)||(e.monsterinfo.melee_debounce_time=t.timeSeconds+2.5)}var V1=[{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0,think:ze},{ai:ee,dist:0},{ai:ee,dist:0,think:Lo},{ai:ee,dist:0},{ai:ee,dist:0,think:H1},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0},{ai:ee,dist:0}];R1={firstframe:75,lastframe:86,frames:V1,endfunc:Zt};function No(e,t){t.sound(e,1,Kt.thud,1,1,0),t.sound(e,2,Kt.explod,.75,1,0);let{forward:n,right:r}=Q(e.angles),i={x:20,y:-14.3,z:-21},a={x:e.origin.x+n.x*i.x+r.x*i.y,y:e.origin.y+n.y*i.x+r.y*i.y,z:e.origin.z+n.z*i.x+r.z*i.y+i.z},s=t.trace(e.origin,null,null,a,e,1);t.multicast(s.endpos,2,pe.temp_entity,we.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0};let o=8,c=300,u=165,d=t.findByRadius(s.endpos,u*2);for(let m of d){if(m===e||!m.takedamage)continue;let l=Math.sqrt(Math.pow(m.origin.x-s.endpos.x,2)+Math.pow(m.origin.y-s.endpos.y,2)+Math.pow(m.origin.z-s.endpos.z,2)),h=Math.max(0,1-l/u);if(h<=0)continue;let f=Math.max(1,o*h*h),p=c*h*h,g=P(O(m.origin,s.endpos));if(le(m,e,e,g,m.origin,g,f,p,1,0,t.timeSeconds,t.multicast.bind(t)),m.client){let y={...m.velocity};y.z=Math.max(270,y.z),m.velocity=y}}}function W1(e,t,n,r,i){if(e.health<=0){e.touch=void 0;return}}function Ki(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function K1(e,t){if(!e.enemy)return;let n=O(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=P({x:n.x,y:n.y,z:0}),s=$t(a);e.angles={x:e.angles.x,y:s.y,z:e.angles.z};let o={...e.origin};o.z+=1,e.origin=o,e.velocity={x:a.x*i,y:a.y*i,z:450},e.groundentity=null,e.monsterinfo.aiflags|=2048,e.monsterinfo.attack_finished=t.timeSeconds+3,e.touch=(c,u,d,m)=>{W1(c,u,d,m,t),c.groundentity&&(c.frame=104,No(c,t),c.touch=void 0)},Ki(e,t)}function X1(e,t){if(Ki(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(No(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var $1=[{ai:ee,dist:0},{ai:ee,dist:0},{ai:L,dist:0,think:K1},{ai:L,dist:0,think:Ki},{ai:L,dist:0,think:X1},{ai:L,dist:0,think:ze},{ai:L,dist:0},{ai:L,dist:0,think:ze},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:ze}];z1={firstframe:87,lastframe:109,frames:$1,endfunc:Zt};var Y1=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];L1={firstframe:149,lastframe:152,frames:Y1,endfunc:Zt};var j1=Array.from({length:20},(e,t)=>({ai:L,dist:0,think:t%5===4?ze:void 0}));N1={firstframe:153,lastframe:172,frames:j1,endfunc:Zt};function Oo(e,t){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.monsterinfo.nextframe=Ro.lastframe,e.nextthink=-1,e.deadflag=2}var q1=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:ze},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];Ro={firstframe:173,lastframe:185,frames:q1,endfunc:Oo};var Z1=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:ze},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];O1={firstframe:186,lastframe:193,frames:Z1,endfunc:Oo};function J1(e,t,n,r,i,a,s,o=0){let c=e.spawn();c.classname="rocket",c.movetype=8,c.solid=2,c.owner=t,c.origin={...n},c.velocity={x:r.x*s,y:r.y*s,z:r.z*s},c.mins={x:-4,y:-4,z:-4},c.maxs={x:4,y:4,z:4},c.touch=(u,d,m,l)=>{if(d===u.owner)return;d&&d.takedamage&&le(d,u,u.owner,u.velocity,u.origin,m?m.normal:W,i,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(u.origin,120);Vi(h,u,u.owner,a,u.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,pe.temp_entity,we.ROCKET_EXPLOSION,u.origin),e.free(u)},e.finalizeSpawn(c)}function Io(e,t,n,r,i,a){let s=e.spawn();s.classname="grenade",s.owner=t,s.origin={...n},s.velocity={x:r.x*a,y:r.y*a,z:r.z*a},s.movetype=9,s.clipmask=268566530,s.solid=2,s.modelindex=e.modelIndex("models/objects/grenade/tris.md2"),s.mins={x:-4,y:-4,z:-4},s.maxs={x:4,y:4,z:4};let o=c=>{let u=e.findByRadius(c.origin,120);Vi(u,c,c.owner,i,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,pe.temp_entity,we.GRENADE_EXPLOSION,c.origin),e.free(c)};s.touch=(c,u,d,m)=>{if(u!==c.owner&&u&&u.takedamage){o(c);return}},s.think=c=>{o(c)},e.scheduleThink(s,e.timeSeconds+2.5),e.finalizeSpawn(s)}function Q1(e,t,n,r,i,a,s){let o=e.spawn();o.classname=s===10?"hyperblaster_bolt":"blaster_bolt",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.solid=2,o.mins={x:-2,y:-2,z:-2},o.maxs={x:2,y:2,z:2},o.touch=(c,u,d,m)=>{u!==c.owner&&(u&&u.takedamage?le(u,c,c.owner,c.velocity,c.origin,d?d.normal:W,i,1,0,s,e.timeSeconds,e.multicast.bind(e)):d&&e.multicast(c.origin,1,pe.temp_entity,we.BLASTER,c.origin,d.normal),e.free(c))},e.finalizeSpawn(o)}function eg(e,t,n,r){let i={...t.origin},a={x:(n.absmin.x+n.absmax.x)*.5,y:(n.absmin.y+n.absmax.y)*.5,z:(n.absmin.z+n.absmax.z)*.5},s=P(O(a,i)),o={x:i.x+s.x*2048,y:i.y+s.y*2048,z:i.z+s.z*2048},c=16,u=[],d=[],m={...i};try{for(let h=0;h<c;h++){let f=e.trace(m,null,null,o,t,_e|nt|Et|Wn);if(!f.ent||f.fraction>=1||(f.ent.takedamage&&f.ent!==t.owner&&le(f.ent,t,t.owner,s,f.endpos,W,r,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(f.ent.svflags&4)&&!f.ent.client&&f.ent.classname!=="misc_explobox"))break;u.push(f.ent),d.push(f.ent.solid),f.ent.solid=0,m={...f.endpos}}let l=e.trace(i,null,null,o,t,_e);e.multicast(t.origin,2,pe.temp_entity,we.BFG_LASER,i,l.endpos)}finally{for(let l=0;l<u.length;l++)u[l].solid=d[l]}}function tg(e,t){let n=t.deathmatch?5:10,r=t.findByRadius(e.origin,256);for(let i of r){if(i===e||i===e.owner||!i.takedamage||!(i.svflags&4)&&!i.client&&i.classname!=="misc_explobox")continue;let a={x:(i.absmin.x+i.absmax.x)*.5,y:(i.absmin.y+i.absmax.y)*.5,z:(i.absmin.z+i.absmax.z)*.5};t.trace(e.origin,null,null,a,null,ff).fraction<1||eg(t,e,i,n)}t.scheduleThink(e,t.timeSeconds+.1)}function ng(e,t){if((e.frame===void 0||e.frame<0)&&(e.frame=0),e.frame===0){let n=t.findByRadius(e.origin,e.dmg_radius||100);for(let r of n){if(!r.takedamage||r===e.owner||!(r.svflags&4)&&!r.client&&r.classname!=="misc_explobox")continue;let i={x:(r.absmin.x+r.absmax.x)*.5,y:(r.absmin.y+r.absmax.y)*.5,z:(r.absmin.z+r.absmax.z)*.5},a=O(e.origin,i),s=At(a),o=e.dmg_radius||100,c=(e.radius_dmg||200)*(1-Math.sqrt(s/o));c>0&&le(r,e,e.owner,e.velocity,i,W,Math.floor(c),0,4,14,t.timeSeconds,t.multicast.bind(t))}}if(e.frame++,e.frame>=5){t.free(e);return}t.scheduleThink(e,t.timeSeconds+.1)}function rg(e,t,n,r,i,a,s){let o=e.spawn();o.classname="bfg blast",o.owner=t,o.origin={...n},o.velocity={x:r.x*a,y:r.y*a,z:r.z*a},o.movetype=8,o.clipmask=268566530,o.solid=2,o.modelindex=e.modelIndex("sprites/s_bfg1.sp2"),o.svflags=128,o.radius_dmg=i,o.dmg_radius=s,o.mins={x:-10,y:-10,z:-10},o.maxs={x:10,y:10,z:10},o.touch=(c,u,d,m)=>{if(u===c.owner)return;u&&u.takedamage&&le(u,c,c.owner,c.velocity,c.origin,d?d.normal:W,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let l=e.findByRadius(c.origin,100);Vi(l,c,c.owner,200,u,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,pe.temp_entity,we.BFG_BIGEXPLOSION,c.origin),c.solid=0,c.touch=void 0,c.velocity=W,c.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),c.frame=0,c.enemy=u,c.think=(h,f)=>ng(h,f),e.scheduleThink(c,e.timeSeconds+.1)},o.think=(c,u)=>tg(c,u),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function ao(){return 2*Math.random()-1}function Bn(e,t,n,r,i,a,s,o,c,u=0){let d=n;if(a>0||s>0){let h=$t(n),{right:f,up:p}=Q(h),g=ao()*a,y=ao()*s;d={x:n.x+f.x*g+p.x*y,y:n.y+f.y*g+p.y*y,z:n.z+f.z*g+p.z*y},d=P(d)}let m=F(t,U(d,8192)),l=c.trace(t,m,W,W,e,Yt);!l.ent||l.fraction===1||le(l.ent,e,e,d,l.endpos,l.plane?.normal||W,r,i,18,u,c.timeSeconds)}var tt=Bn;function ig(e,t,n,r,i,a,s,o,c,u,d=2){for(let m=0;m<o;m++)tt(e,t,n,r,i,a,s,c,u,d)}function He(e,t,n,r,i,a,s,o,c=1){Q1(o,e,t,n,r,i,c)}function ag(e,t,n,r,i,a,s){Io(s,e,t,n,r,i)}function Jt(e,t,n,r,i,a,s){J1(s,e,t,n,r,120,i)}function Co(e,t,n,r,i,a,s,o,c){rg(c,e,t,n,r,i,s)}function Po(e,t,n,r,i,a,s){let o=F(t,U(n,8192)),c=s.trace(t,o,W,W,e,Yt);s.multicast(t,2,pe.temp_entity,we.RAILTRAIL,t,c.endpos),c.ent&&c.ent.takedamage&&le(c.ent,e,e,n,c.endpos,W,r,i,6,11,s.timeSeconds)}function Qt(e,t,n,r,i){if(!e.enemy)return!1;let{forward:a}=Q(e.angles),s={...e.origin};s.z+=e.viewheight||0;let o=t.x>0?t.x:80,c=F(s,U(a,o)),u=i.trace(s,c,W,W,e,Yt);if(u.ent===e.enemy||u.ent&&u.ent.takedamage){let d=P(O(u.endpos,s));return le(u.ent,e,e,d,u.endpos,u.plane?.normal||W,n,r,0,0,i.timeSeconds),!0}return!1}function sg(e,t,n,r,i,a,s,o){Jt(e,t,n,r,i,a,o)}function so(e,t){let n={...e.origin},r=F(n,U(e.movedir,2048)),i=t.trace(n,r,W,W,e,_e|nt|Et|Wn);e.dmg>0&&i.ent&&i.ent.takedamage&&i.ent!==e.owner&&le(i.ent,e,e.owner,e.movedir,i.endpos,W,e.dmg,0,4,31,t.timeSeconds),i.ent&&i.ent.solid===3&&t.multicast(i.endpos,1,pe.temp_entity,we.LASER_SPARKS,10,i.endpos,i.plane?.normal||W,e.skin),t.linkentity(e)}function og(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function oo(e,t,n,r,i){let a=n?e.beam2:e.beam;(!a||!a.inUse)&&(a=i.spawn(),a.classname="laser_beam",a.movetype=0,a.solid=0,a.renderfx|=8,a.modelindex=1,a.owner=e,a.dmg=t,a.frame=2,e.monsterinfo.aiflags&64?a.skin=4092850673:a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?og(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{r(s,o),so(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=i.timeSeconds+.2,a.nextthink=i.timeSeconds+.01,r(a,i),so(a,i)}var Xi=.1,cg={x:0,y:30,z:-15},ug={x:0,y:15,z:0},dg={x:0,y:-15,z:0},mg={x:0,y:-30,z:-15},lg={x:30,y:20,z:0},hg={x:30,y:-20,z:0};function fg(e,t,n){ne(e,Xi,n)}function gg(e,t,n){ce(e,t,Xi,n)}function $n(e,t,n){re(e,t,Xi,n)}function $i(e,t,n){ae(e,t)}var Yi,Do,Fo,_g,Uo,Bo,pg,vg,yg,Go;function Sg(e){e.monsterinfo.current_move=Yi}function wg(e){e.monsterinfo.current_move=Do}function en(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Fo:e.monsterinfo.current_move=Yi}function Ho(e){e.monsterinfo.current_move=Uo}function xg(e){e.enemy&&Wt(e,e.enemy)&&Math.random()<=.7?Ho(e):e.monsterinfo.current_move=Bo}function bi(e,t){let{forward:n,right:r,up:i}=Q(e.angles),a={...e.origin},s=U(n,t.x),o=U(r,t.y),c=U(i,t.z);return F(F(F(a,s),o),c)}function Ag(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=bi(e,lg),r=P(O(e.enemy.origin,n));tt(e,n,r,6,4,.1,.05,0,t,4);let i=bi(e,hg),a=P(O(e.enemy.origin,i));tt(e,i,a,6,4,.1,.05,0,t,4)}function Eg(e,t){if(!e.enemy)return;let n=[cg,ug,dg,mg],r=n[Math.floor(Math.random()*n.length)],i=bi(e,r),a=P(O(e.enemy.origin,i));Jt(e,i,a,50,500,0,t)}function kg(e){e.monsterinfo.nextframe=Go.lastframe,e.nextthink=-1}var Vo=Array.from({length:20},()=>({ai:gg,dist:10}));Do={firstframe:0,lastframe:19,frames:Vo,endfunc:wg};Fo={firstframe:0,lastframe:19,frames:Vo,endfunc:en};var Tg=Array.from({length:21},()=>({ai:fg,dist:0}));Yi={firstframe:29,lastframe:49,frames:Tg,endfunc:Sg};var Mg=Array.from({length:9},(e,t)=>({ai:$n,dist:2,think:t===8?Ho:null}));_g={firstframe:50,lastframe:58,frames:Mg,endfunc:null};var bg=Array.from({length:6},()=>({ai:$n,dist:2,think:Ag}));Uo={firstframe:59,lastframe:64,frames:bg,endfunc:xg};var Rg=Array.from({length:4},()=>({ai:$n,dist:2}));Bo={firstframe:65,lastframe:68,frames:Rg,endfunc:en};var zg=Array.from({length:21},(e,t)=>({ai:$n,dist:2,think:t===12?Eg:null}));pg={firstframe:69,lastframe:89,frames:zg,endfunc:en};var Lg=Array.from({length:18},()=>({ai:$i,dist:0}));vg={firstframe:90,lastframe:107,frames:Lg,endfunc:en};var Ng=Array.from({length:4},()=>({ai:$i,dist:0}));yg={firstframe:108,lastframe:111,frames:Ng,endfunc:en};var Og=Array.from({length:49},()=>({ai:$i,dist:0}));Go={firstframe:112,lastframe:160,frames:Og,endfunc:kg};var Yn=.1,ji=80,jn=Math.random;function Wo(e,t,n){ne(e,Yn,n)}function Me(e,t,n){ce(e,t,Yn,n)}function be(e,t,n){se(e,t,Yn,n)}function k(e,t,n){re(e,t,Yn,n)}function R(e,t,n){ae(e,t)}var qi,Ig,Cg,Ko,Xo,Pg,Dg,Fg,Ug,Bg,Gg,Hg,Vg,Wg;function $o(e){e.monsterinfo.current_move=qi}function Ze(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=qi:e.monsterinfo.current_move=Ko}function Kg(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function Xg(e,t){let n={x:ji,y:e.maxs.x,z:8};Qt(e,n,15+Math.floor(jn()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function $g(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function Yg(e,t){let n={x:ji,y:e.mins.x,z:8};Qt(e,n,15+Math.floor(jn()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Yo(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function jo(e,t){Qt(e,{x:ji,y:0,z:8},10+Math.floor(jn()*5),-600,t)?e.count=1:e.monsterinfo.melee_debounce_time=t.timeSeconds+3,t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0)}function qo(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Xo)}function co(e,t){if(!e.enemy)return;let n=Q(e.angles).forward,r={...e.origin};r.z+=24;let i={...e.enemy.origin};if(t.trace(r,i,W,W,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,pe.temp_entity,we.PARASITE_ATTACK,e,r,i);let s=O(r,i);le(e.enemy,e,e,s,e.enemy.origin,W,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=Q(e.angles).forward;e.enemy.velocity=U(o,-1200)}var uo=[{x:.7467,y:.23837,z:34.16769},{x:-1.07639,y:.23837,z:33.386372},{x:-1.3355,y:5.3343,z:32.17717},{x:-.17536,y:8.84637,z:30.635479},{x:-2.75759,y:7.80461,z:30.15086},{x:-5.57509,y:5.15284,z:30.05616},{x:-7.01755,y:3.26247,z:30.552521},{x:-7.91574,y:.6388,z:33.176189},{x:-3.91539,y:8.28573,z:33.976349},{x:-.91354,y:10.93303,z:34.141811},{x:-.3699,y:8.9239,z:34.189079}],mo=[{x:-3.36471,y:.32775,z:33.938381},{x:-5.14045,y:.49348,z:32.659851},{x:-5.34198,y:5.64698,z:31.277901},{x:-4.13448,y:9.27744,z:29.925621},{x:-6.59834,y:6.81509,z:29.32262},{x:-8.61084,y:2.52965,z:29.251591},{x:-9.23136,y:.09328,z:29.747959},{x:-11.00411,y:1.93693,z:32.39526},{x:-7.87831,y:7.64819,z:33.148151},{x:-4.94737,y:11.43005,z:33.31361},{x:-4.33282,y:9.44457,z:33.52634}];function jg(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=Q(n.angles),s=n.frame-0;(s<0||s>=uo.length)&&(s=0);let o=uo[s],c=F(n.origin,U(i,o.x));c=F(c,U(r,o.y)),c=F(c,U(a,o.z));let u=P(O(n.enemy.origin,c));e.origin=c,e.movedir=u,t.linkentity(e)}function qg(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=Q(n.angles),s=n.frame-0;(s<0||s>=mo.length)&&(s=0);let o=mo[s],c=F(n.origin,U(i,o.x));c=F(c,U(r,o.y)),c=F(c,U(a,o.z));let u=P(O(n.enemy.origin,c));e.origin=c,e.movedir=u,t.linkentity(e)}function Ce(e,t){oo(e,1,!1,jg,t),oo(e,1,!0,qg,t)}function Zg(e){jn()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function Jg(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function Qg(e){}function e_(e){e.monsterinfo.aiflags&=-17}var t_=Array.from({length:30},()=>({ai:Wo,dist:0}));qi={firstframe:162,lastframe:191,frames:t_,endfunc:$o};var n_=Array.from({length:30},()=>({ai:Wo,dist:0}));Ig={firstframe:192,lastframe:221,frames:n_,endfunc:$o};var r_=[{ai:Me,dist:7},{ai:Me,dist:2},{ai:Me,dist:3},{ai:Me,dist:3},{ai:Me,dist:1},{ai:Me,dist:0},{ai:Me,dist:0},{ai:Me,dist:9},{ai:Me,dist:-4},{ai:Me,dist:-1},{ai:Me,dist:2}];Cg={firstframe:0,lastframe:10,frames:r_,endfunc:null};var i_=[{ai:be,dist:9},{ai:be,dist:2},{ai:be,dist:3},{ai:be,dist:3},{ai:be,dist:1},{ai:be,dist:0},{ai:be,dist:0},{ai:be,dist:10},{ai:be,dist:-4},{ai:be,dist:-1},{ai:be,dist:2}];Ko={firstframe:0,lastframe:10,frames:i_,endfunc:null};var a_=[{ai:k,dist:8},{ai:k,dist:3},{ai:k,dist:5},{ai:k,dist:0},{ai:k,dist:-3,think:Kg},{ai:k,dist:0},{ai:k,dist:-5},{ai:k,dist:-7,think:Xg},{ai:k,dist:0},{ai:k,dist:6,think:$g},{ai:k,dist:1},{ai:k,dist:2,think:Yg},{ai:k,dist:-3},{ai:k,dist:6},{ai:k,dist:-1},{ai:k,dist:-3},{ai:k,dist:2},{ai:k,dist:-11}];Xo={firstframe:53,lastframe:70,frames:a_,endfunc:Ze};var s_=[{ai:k,dist:5},{ai:k,dist:-4},{ai:k,dist:-4},{ai:k,dist:-3},{ai:k,dist:0,think:Yo},{ai:k,dist:0},{ai:k,dist:13,think:jo},{ai:k,dist:0},{ai:k,dist:2},{ai:k,dist:0},{ai:k,dist:-9,think:qo},{ai:k,dist:0},{ai:k,dist:4},{ai:k,dist:3},{ai:k,dist:2},{ai:k,dist:-3},{ai:k,dist:-6}];Pg={firstframe:71,lastframe:87,frames:s_,endfunc:Ze};var o_=[{ai:k,dist:5},{ai:k,dist:-4},{ai:k,dist:-4},{ai:k,dist:-3},{ai:k,dist:0,think:Yo},{ai:k,dist:0,think:co},{ai:k,dist:13},{ai:k,dist:0,think:jo},{ai:k,dist:2},{ai:k,dist:0,think:co},{ai:k,dist:-9,think:qo},{ai:k,dist:0},{ai:k,dist:4},{ai:k,dist:3},{ai:k,dist:2},{ai:k,dist:-3},{ai:k,dist:-6}];Dg={firstframe:71,lastframe:87,frames:o_,endfunc:Ze};var c_=[{ai:k,dist:9,think:Ce},{ai:k,dist:2,think:Ce},{ai:k,dist:3,think:Ce},{ai:k,dist:3,think:Ce},{ai:k,dist:1,think:Ce},{ai:k,dist:0,think:Ce},{ai:k,dist:0,think:Ce},{ai:k,dist:10,think:Ce},{ai:k,dist:-4,think:Ce},{ai:k,dist:-1,think:Ce},{ai:k,dist:2,think:Zg}];Fg={firstframe:0,lastframe:10,frames:c_,endfunc:Ze};var u_=[{ai:R,dist:-6},{ai:R,dist:-2},{ai:R,dist:-6},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:2},{ai:R,dist:0},{ai:R,dist:2},{ai:R,dist:1},{ai:R,dist:7},{ai:R,dist:0},{ai:R,dist:3},{ai:R,dist:-1}];Ug={firstframe:88,lastframe:108,frames:u_,endfunc:Ze};var d_=[{ai:R,dist:-2},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:3},{ai:R,dist:1},{ai:R,dist:-2}];Bg={firstframe:109,lastframe:116,frames:d_,endfunc:Ze};var m_=[{ai:R,dist:-2},{ai:R,dist:2},{ai:R,dist:1},{ai:R,dist:3},{ai:R,dist:0},{ai:R,dist:-4}];Gg={firstframe:117,lastframe:122,frames:m_,endfunc:Ze};var l_=Array.from({length:18},()=>({ai:R,dist:0}));Hg={firstframe:123,lastframe:140,frames:l_,endfunc:Zo};var h_=[{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:9},{ai:R,dist:0}];Vg={firstframe:141,lastframe:145,frames:h_,endfunc:Zo};var f_=[{ai:R,dist:0},{ai:R,dist:-2,think:Jg},{ai:R,dist:17,think:Qg},{ai:R,dist:-3},{ai:R,dist:-1,think:e_},{ai:R,dist:-5},{ai:R,dist:-6},{ai:R,dist:-6}];Wg={firstframe:146,lastframe:153,frames:f_,endfunc:Ze};function Zo(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var qn=.1,g_=80,Tt=Math.random;function Jo(e,t,n){ne(e,qn,n)}function __(e,t,n){ce(e,t,qn,n)}function p_(e,t,n){se(e,t,qn,n)}function z(e,t,n){re(e,t,qn,n)}function Mt(e,t,n){ae(e,t)}var Zi,Qo,ec,v_,Ji,Ri,y_,Qi,tc,S_,w_,x_,A_,E_,k_,nc;function rc(e){e.monsterinfo.current_move=Zi}function T_(e){e.monsterinfo.current_move=Qo}function rt(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Zi;return}e.monsterinfo.current_move=ec}function M_(e){e.monsterinfo.aiflags&4||e.enemy||Tt()<=.3&&(e.monsterinfo.current_move=nc)}function b_(e,t){Tt()<.5?t.engine.sound?.(e,2,"chick/chkidle1.wav",1,0,0):t.engine.sound?.(e,2,"chick/chkidle2.wav",1,0,0)}function R_(e,t){let n={x:g_,y:e.mins.x,z:10};t.engine.sound?.(e,0,"chick/chkatck3.wav",1,1,0),Qt(e,n,10+Math.floor(Tt()*6),100,t)}function z_(e,t){let{forward:n,right:r}=Q(e.angles),i={x:0,y:20,z:40},a=F(e.origin,U(n,i.x)),s=U(r,i.y),o=F(a,s),c={...o,z:o.z+i.z},u=e.skin>1?500:650,d=!!e.monsterinfo.blindfire,m=W;if(d&&e.monsterinfo.blind_fire_target)m=e.monsterinfo.blind_fire_target;else if(e.enemy)m=e.enemy.origin;else return;let l=O(m,c);!d&&e.enemy&&(Tt()<.33||c.z<e.enemy.absmin.z?l={...l,z:l.z+e.enemy.viewheight}:l={...l,z:e.enemy.absmin.z+1-c.z});let h=P(l);e.skin>1?sg(e,c,h,50,u,0,.075,t):Jt(e,c,h,50,u,0,t)}function L_(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=O(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=$t(n).y}}function N_(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function O_(e){e.monsterinfo.current_move=Ji}function I_(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Ri;return}if(e.enemy&&e.enemy.health>0&&Tt()<=.6){e.monsterinfo.current_move=Ji;return}e.monsterinfo.current_move=Ri}function C_(e){if(e.enemy&&e.enemy.health>0&&Tt()<=.9){e.monsterinfo.current_move=Qi;return}e.monsterinfo.current_move=tc}function P_(e){e.monsterinfo.current_move=Qi}var D_=Array.from({length:30},(e,t)=>({ai:Jo,dist:0,think:t===8?(n,r)=>b_(n,r):null}));nc={firstframe:201,lastframe:230,frames:D_,endfunc:rc};var F_=Array.from({length:30},(e,t)=>({ai:Jo,dist:0,think:t===29?M_:null}));Zi={firstframe:101,lastframe:130,frames:F_,endfunc:rc};var U_=Array.from({length:10},()=>({ai:__,dist:6}));Qo={firstframe:171,lastframe:180,frames:U_,endfunc:T_};var B_=Array.from({length:10},()=>({ai:p_,dist:12}));ec={firstframe:171,lastframe:180,frames:B_,endfunc:rt};var G_=Array.from({length:5},()=>({ai:Mt,dist:0}));S_={firstframe:90,lastframe:94,frames:G_,endfunc:rt};var H_=Array.from({length:5},()=>({ai:Mt,dist:0}));w_={firstframe:95,lastframe:99,frames:H_,endfunc:rt};var V_=Array.from({length:21},()=>({ai:Mt,dist:0}));x_={firstframe:100,lastframe:120,frames:V_,endfunc:rt};var W_=Array.from({length:12},()=>({ai:Mt,dist:0}));A_={firstframe:48,lastframe:59,frames:W_,endfunc:ic};var K_=Array.from({length:23},()=>({ai:Mt,dist:0}));E_={firstframe:60,lastframe:82,frames:K_,endfunc:ic};function ic(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var X_=[{ai:z,dist:0,think:L_},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:4},{ai:z,dist:0},{ai:z,dist:-3},{ai:z,dist:3},{ai:z,dist:5},{ai:z,dist:7},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0},{ai:z,dist:0,think:O_}];v_={firstframe:0,lastframe:12,frames:X_,endfunc:null};var $_=[{ai:z,dist:19,think:z_},{ai:z,dist:-6},{ai:z,dist:-5},{ai:z,dist:-2},{ai:z,dist:-7},{ai:z,dist:0},{ai:z,dist:1},{ai:z,dist:10,think:N_},{ai:z,dist:4},{ai:z,dist:5},{ai:z,dist:6},{ai:z,dist:6},{ai:z,dist:4},{ai:z,dist:3,think:I_}];Ji={firstframe:13,lastframe:26,frames:$_,endfunc:null};var Y_=[{ai:z,dist:-3},{ai:z,dist:0},{ai:z,dist:-6},{ai:z,dist:-4},{ai:z,dist:-2}];Ri={firstframe:27,lastframe:31,frames:Y_,endfunc:rt};var j_=[{ai:z,dist:1},{ai:z,dist:8},{ai:z,dist:3}];y_={firstframe:32,lastframe:34,frames:j_,endfunc:P_};var q_=[{ai:z,dist:1},{ai:z,dist:7,think:R_},{ai:z,dist:-7},{ai:z,dist:1},{ai:z,dist:-1},{ai:z,dist:1},{ai:z,dist:0},{ai:z,dist:1},{ai:z,dist:-2,think:C_}];Qi={firstframe:35,lastframe:43,frames:q_,endfunc:null};var Z_=[{ai:z,dist:-6},{ai:z,dist:-1},{ai:z,dist:-6},{ai:z,dist:0}];tc={firstframe:44,lastframe:47,frames:Z_,endfunc:rt};var J_=Array.from({length:7},()=>({ai:Mt,dist:0}));k_={firstframe:83,lastframe:89,frames:J_,endfunc:rt};var Zn=.1,Q_=80,ep=24;function tp(e,t,n){ne(e,Zn,n)}function np(e,t,n){ce(e,t,Zn,n)}function ac(e,t,n){se(e,t,Zn,n)}function ie(e,t,n){re(e,t,Zn,n)}function ea(e,t,n){ae(e,t)}var rp,ip,sc,oc,ap,sp,op,cp;function up(e){e.monsterinfo.current_move=oc}function ta(e){e.monsterinfo.current_move=sc}function lo(e,t){Qt(e,{x:Q_,y:0,z:0},5,0,t)}function dp(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var mp=[{ai:tp,dist:0}];rp={firstframe:41,lastframe:41,frames:mp,endfunc:null};var lp=Array.from({length:24},()=>({ai:ac,dist:ep}));oc={firstframe:70,lastframe:93,frames:lp,endfunc:null};var hp=Array.from({length:6},()=>({ai:ac,dist:8}));sc={firstframe:65,lastframe:70,frames:hp,endfunc:up};var fp=Array.from({length:24},()=>({ai:np,dist:4}));ip={firstframe:41,lastframe:64,frames:fp,endfunc:null};var gp=Array.from({length:5},()=>({ai:ea,dist:0}));sp={firstframe:99,lastframe:103,frames:gp,endfunc:ta};var _p=Array.from({length:5},()=>({ai:ea,dist:0}));op={firstframe:94,lastframe:98,frames:_p,endfunc:ta};var pp=[{ai:ie,dist:0,think:dp},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0,think:lo},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0},{ai:ie,dist:0,think:lo},{ai:ie,dist:0}];ap={firstframe:0,lastframe:19,frames:pp,endfunc:ta};function vp(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var yp=Array.from({length:56},()=>({ai:ea,dist:0}));cp={firstframe:104,lastframe:159,frames:yp,endfunc:vp};var Jn=.1;function Sp(e,t,n){ne(e,Jn,n)}function wp(e,t,n){ce(e,t,Jn,n)}function xp(e,t,n){se(e,t,Jn,n)}function Ap(e,t,n){re(e,t,Jn,n)}function cc(e,t,n){ae(e,t)}var na,uc,dc,Ep,kp,mc;function Tp(e){e.monsterinfo.current_move=na}function Mp(e){e.monsterinfo.current_move=uc}function ra(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=dc:e.monsterinfo.current_move=na}function bp(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function Rp(e){e.monsterinfo.nextframe=mc.lastframe,e.nextthink=-1}var zp=Array.from({length:46},()=>({ai:Sp,dist:0}));na={firstframe:0,lastframe:45,frames:zp,endfunc:Tp};var Lp=Array.from({length:46},()=>({ai:wp,dist:5}));uc={firstframe:0,lastframe:45,frames:Lp,endfunc:Mp};var Np=Array.from({length:46},()=>({ai:xp,dist:10}));dc={firstframe:0,lastframe:45,frames:Np,endfunc:ra};var Op=Array.from({length:20},(e,t)=>({ai:Ap,dist:0,think:t===10?bp:null}));Ep={firstframe:46,lastframe:65,frames:Op,endfunc:ra};var Ip=Array.from({length:6},()=>({ai:cc,dist:0}));kp={firstframe:66,lastframe:71,frames:Ip,endfunc:ra};var Cp=Array.from({length:10},()=>({ai:cc,dist:0}));mc={firstframe:84,lastframe:93,frames:Cp,endfunc:Rp};var Qn=.1;function Pp(e,t,n){ne(e,Qn,n)}function Dp(e,t,n){ce(e,t,Qn,n)}function Fp(e,t,n){se(e,t,Qn,n)}function Up(e,t,n){re(e,t,Qn,n)}function lc(e,t,n){ae(e,t)}var ia,hc,fc,Bp,Gp,gc;function Hp(e){e.monsterinfo.current_move=ia}function Vp(e){e.monsterinfo.current_move=hc}function aa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=fc:e.monsterinfo.current_move=ia}function Wp(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function Kp(e,t){if(!e.enemy)return;let n=5+Math.random()*5;qe(e,e.enemy)<=80&&Wt(e,e.enemy)&&le(e.enemy,e,e,P(O(e.enemy.origin,e.origin)),e.enemy.origin,W,n,5,2,0,t.timeSeconds)}function Xp(e){e.monsterinfo.nextframe=gc.lastframe,e.nextthink=-1}var $p=Array.from({length:46},()=>({ai:Pp,dist:0}));ia={firstframe:0,lastframe:45,frames:$p,endfunc:Hp};var Yp=Array.from({length:46},()=>({ai:Dp,dist:5}));hc={firstframe:0,lastframe:45,frames:Yp,endfunc:Vp};var jp=Array.from({length:46},()=>({ai:Fp,dist:10}));fc={firstframe:0,lastframe:45,frames:jp,endfunc:aa};var qp=Array.from({length:20},(e,t)=>({ai:Up,dist:0,think:t===10?Wp:t===12?Kp:null}));Bp={firstframe:46,lastframe:65,frames:qp,endfunc:aa};var Zp=Array.from({length:6},()=>({ai:lc,dist:0}));Gp={firstframe:66,lastframe:71,frames:Zp,endfunc:aa};var Jp=Array.from({length:10},()=>({ai:lc,dist:0}));gc={firstframe:84,lastframe:93,frames:Jp,endfunc:Xp};var er=.1;function Qp(e,t,n){ne(e,er,n)}function ev(e,t,n){ce(e,t,er,n)}function tv(e,t,n){se(e,t,er,n)}function _c(e,t,n){re(e,t,er,n)}function pc(e,t,n){ae(e,t)}var sa,vc,yc,nv,rv,iv,Sc;function av(e){e.monsterinfo.current_move=sa}function sv(e){e.monsterinfo.current_move=vc}function tr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=yc:e.monsterinfo.current_move=sa}function ov(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function cv(e,t){if(!e.enemy||!Wt(e,e.enemy))return;let n=qe(e,e.enemy);if(ov(n)!=="melee")return;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=P(O(e.enemy.origin,r));le(e.enemy,e,e,i,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function uv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(O(e.enemy.origin,n));Po(e,n,r,50,100,0,t)}function dv(e){e.monsterinfo.nextframe=Sc.lastframe,e.nextthink=-1}var mv=Array.from({length:30},()=>({ai:Qp,dist:0}));sa={firstframe:0,lastframe:29,frames:mv,endfunc:av};var lv=Array.from({length:40},()=>({ai:ev,dist:3}));vc={firstframe:30,lastframe:69,frames:lv,endfunc:sv};var hv=Array.from({length:20},()=>({ai:tv,dist:12}));yc={firstframe:70,lastframe:89,frames:hv,endfunc:tr};var fv=Array.from({length:10},(e,t)=>({ai:_c,dist:0,think:t===5?cv:null}));nv={firstframe:90,lastframe:99,frames:fv,endfunc:tr};var gv=Array.from({length:12},(e,t)=>({ai:_c,dist:0,think:t===6?uv:null}));rv={firstframe:100,lastframe:111,frames:gv,endfunc:tr};var _v=Array.from({length:6},()=>({ai:pc,dist:0}));iv={firstframe:112,lastframe:117,frames:_v,endfunc:tr};var pv=Array.from({length:12},()=>({ai:pc,dist:0}));Sc={firstframe:118,lastframe:129,frames:pv,endfunc:dv};var nr=.1;function vv(e,t,n){ne(e,nr,n)}function yv(e,t,n){ce(e,t,nr,n)}function Sv(e,t,n){se(e,t,nr,n)}function wc(e,t,n){re(e,t,nr,n)}function xc(e,t,n){ae(e,t)}var oa,Ac,Ec,wv,xv,Av,kc;function Ev(e){e.monsterinfo.current_move=oa}function kv(e){e.monsterinfo.current_move=Ac}function rr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ec:e.monsterinfo.current_move=oa}function Tv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},r=P(O(e.enemy.origin,n)),i=10,a=2;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),tt(e,n,r,i,a,0,0,0,t,5)}function Mv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n)),i=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Io(t,e,n,r,i,a)}var bv=Array.from({length:30},()=>({ai:vv,dist:0}));oa={firstframe:0,lastframe:29,frames:bv,endfunc:Ev};var Rv=Array.from({length:40},()=>({ai:yv,dist:2}));Ac={firstframe:30,lastframe:69,frames:Rv,endfunc:kv};var zv=Array.from({length:20},()=>({ai:Sv,dist:10}));Ec={firstframe:70,lastframe:89,frames:zv,endfunc:rr};var Lv=Array.from({length:10},(e,t)=>({ai:wc,dist:0,think:t>=2&&t<=8?Tv:null}));wv={firstframe:90,lastframe:99,frames:Lv,endfunc:rr};var Nv=Array.from({length:10},(e,t)=>({ai:wc,dist:0,think:t===5?Mv:null}));xv={firstframe:100,lastframe:109,frames:Nv,endfunc:rr};var Ov=Array.from({length:8},()=>({ai:xc,dist:0}));Av={firstframe:110,lastframe:117,frames:Ov,endfunc:rr};var Iv=Array.from({length:15},()=>({ai:xc,dist:0}));function Cv(e){e.monsterinfo.nextframe=kc.lastframe,e.nextthink=-1}kc={firstframe:118,lastframe:132,frames:Iv,endfunc:Cv};var ir=.1;function Pv(e,t,n){ne(e,ir,n)}function Dv(e,t,n){ce(e,t,ir,n)}function Fv(e,t,n){se(e,t,ir,n)}function Uv(e,t,n){re(e,t,ir,n)}function Tc(e,t,n){ae(e,t)}var ca,Mc,bc,Bv,Gv,Rc;function Hv(e){e.monsterinfo.current_move=ca}function Vv(e){e.monsterinfo.current_move=Mc}function ua(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=bc:e.monsterinfo.current_move=ca}function Wv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function Kv(e){e.monsterinfo.nextframe=Rc.lastframe,e.nextthink=-1}var Xv=Array.from({length:46},()=>({ai:Pv,dist:0}));ca={firstframe:0,lastframe:45,frames:Xv,endfunc:Hv};var $v=Array.from({length:46},()=>({ai:Dv,dist:5}));Mc={firstframe:0,lastframe:45,frames:$v,endfunc:Vv};var Yv=Array.from({length:46},()=>({ai:Fv,dist:10}));bc={firstframe:0,lastframe:45,frames:Yv,endfunc:ua};var jv=Array.from({length:20},(e,t)=>({ai:Uv,dist:0,think:t===10?Wv:null}));Bv={firstframe:46,lastframe:65,frames:jv,endfunc:ua};var qv=Array.from({length:6},()=>({ai:Tc,dist:0}));Gv={firstframe:66,lastframe:71,frames:qv,endfunc:ua};var Zv=Array.from({length:10},()=>({ai:Tc,dist:0}));Rc={firstframe:84,lastframe:93,frames:Zv,endfunc:Kv};var ar=.1;function Jv(e,t,n){ne(e,ar,n)}function Qv(e,t,n){ce(e,t,ar,n)}function ey(e,t,n){se(e,t,ar,n)}function ty(e,t,n){re(e,t,ar,n)}function zc(e,t,n){ae(e,t)}var da,Lc,Nc,ny,ry,Oc;function iy(e){e.monsterinfo.current_move=da}function ay(e){e.monsterinfo.current_move=Lc}function ma(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Nc:e.monsterinfo.current_move=da}function sy(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function oy(e){e.monsterinfo.nextframe=Oc.lastframe,e.nextthink=-1}var cy=Array.from({length:46},()=>({ai:Jv,dist:0}));da={firstframe:0,lastframe:45,frames:cy,endfunc:iy};var uy=Array.from({length:46},()=>({ai:Qv,dist:5}));Lc={firstframe:0,lastframe:45,frames:uy,endfunc:ay};var dy=Array.from({length:46},()=>({ai:ey,dist:10}));Nc={firstframe:0,lastframe:45,frames:dy,endfunc:ma};var my=Array.from({length:20},(e,t)=>({ai:ty,dist:0,think:t===10?sy:null}));ny={firstframe:46,lastframe:65,frames:my,endfunc:ma};var ly=Array.from({length:6},()=>({ai:zc,dist:0}));ry={firstframe:66,lastframe:71,frames:ly,endfunc:ma};var hy=Array.from({length:10},()=>({ai:zc,dist:0}));Oc={firstframe:84,lastframe:93,frames:hy,endfunc:oy};var sr=.1;function fy(e,t,n){ne(e,sr,n)}function gy(e,t,n){ce(e,t,sr,n)}function _y(e,t,n){se(e,t,sr,n)}function py(e,t,n){re(e,t,sr,n)}function la(e,t,n){ae(e,t)}var ha,Ic,Cc,vy,yy,Pc,Sy;function wy(e){e.monsterinfo.current_move=ha}function xy(e){e.monsterinfo.current_move=Ic}function or(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Cc:e.monsterinfo.current_move=ha}function Ay(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)},i=P(O(r,n));tt(e,n,i,5,2,.05,.05,0,t,4)}var Ey=Array.from({length:22},()=>({ai:fy,dist:0}));ha={firstframe:0,lastframe:21,frames:Ey,endfunc:wy};var ky=Array.from({length:15},()=>({ai:gy,dist:4}));Ic={firstframe:22,lastframe:36,frames:ky,endfunc:xy};var Ty=Array.from({length:8},()=>({ai:_y,dist:12}));Cc={firstframe:37,lastframe:44,frames:Ty,endfunc:or};var My=Array.from({length:15},(e,t)=>({ai:py,dist:0,think:t>=5&&t<=7?Ay:null}));vy={firstframe:45,lastframe:59,frames:My,endfunc:or};var by=Array.from({length:10},()=>({ai:la,dist:0}));yy={firstframe:60,lastframe:69,frames:by,endfunc:or};var Ry=Array.from({length:20},()=>({ai:la,dist:0}));function zy(e){e.monsterinfo.nextframe=Pc.lastframe,e.nextthink=-1}Pc={firstframe:70,lastframe:89,frames:Ry,endfunc:zy};var Ly=Array.from({length:5},()=>({ai:la,dist:0}));Sy={firstframe:90,lastframe:94,frames:Ly,endfunc:or};var cr=.1,Ny={x:40,y:-20,z:20},Oy={x:40,y:20,z:20},Iy={x:30,y:0,z:40};function Cy(e,t,n){ne(e,cr,n)}function Py(e,t,n){ce(e,t,cr,n)}function Dy(e,t,n){se(e,t,cr,n)}function fa(e,t,n){re(e,t,cr,n)}function tn(e,t,n){ae(e,t)}var ga,Dc,Fc,_a,zi,Fy,Uy,By,Gy,Uc;function Hy(e){e.monsterinfo.current_move=ga}function Vy(e){e.monsterinfo.current_move=Dc}function bt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Fc:e.monsterinfo.current_move=ga}function Wy(e,t){let n=(r,i,a,s,o,c)=>{let u=t.trace(r,i,a,s,o,c);return{fraction:u.fraction,ent:u.ent}};e.enemy&&jt(e,e.enemy,n)&&Math.random()<.9?e.monsterinfo.current_move=_a:e.monsterinfo.current_move=zi}function Li(e,t){let{forward:n,right:r,up:i}=Q(e.angles),a={...e.origin},s=U(n,t.x),o=U(r,t.y),c=U(i,t.z);return F(F(F(a,s),o),c)}function Ky(e,t){if(!e.enemy)return;let n=Li(e,Oy),r=P(O(e.enemy.origin,n));Bn(e,n,r,6,4,.05,.05,0,t,4);let i=Li(e,Ny),a=P(O(e.enemy.origin,i));Bn(e,i,a,6,4,.05,.05,0,t,4)}function Xy(e,t){if(!e.enemy)return;let n=Li(e,Iy),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=P(O(r,n));Co(e,n,i,50,300,100,200,0,t)}function $y(e){e.monsterinfo.nextframe=Uc.lastframe,e.nextthink=-1}function Yy(e,t){let n=t.spawn();n.classname="monster_makron",n.origin={...e.origin},n.angles={...e.angles}}var jy=Array.from({length:51},()=>({ai:Cy,dist:0}));ga={firstframe:0,lastframe:50,frames:jy,endfunc:Hy};var qy=Array.from({length:14},()=>({ai:Py,dist:10}));Dc={firstframe:51,lastframe:64,frames:qy,endfunc:Vy};var Zy=Array.from({length:14},()=>({ai:Dy,dist:10}));Fc={firstframe:51,lastframe:64,frames:Zy,endfunc:bt};var Jy=Array.from({length:8},()=>({ai:fa,dist:0})),Qy={firstframe:65,lastframe:72,frames:Jy,endfunc:null},eS=Array.from({length:6},()=>({ai:fa,dist:0,think:Ky}));_a={firstframe:73,lastframe:78,frames:eS,endfunc:Wy};Qy.endfunc=e=>{e.monsterinfo.current_move=_a};var tS=Array.from({length:4},()=>({ai:tn,dist:0}));zi={firstframe:79,lastframe:82,frames:tS,endfunc:bt};var nS=Array.from({length:13},(e,t)=>({ai:fa,dist:0,think:t===6?Xy:null}));Fy={firstframe:83,lastframe:95,frames:nS,endfunc:bt};var rS=Array.from({length:3},()=>({ai:tn,dist:0}));Uy={firstframe:96,lastframe:98,frames:rS,endfunc:bt};var iS=Array.from({length:3},()=>({ai:tn,dist:0}));By={firstframe:99,lastframe:101,frames:iS,endfunc:bt};var aS=Array.from({length:25},()=>({ai:tn,dist:0}));Gy={firstframe:102,lastframe:126,frames:aS,endfunc:bt};var sS=Array.from({length:50},(e,t)=>({ai:tn,dist:0,think:t===49?((n,r)=>{}):t===48?Yy:null}));Uc={firstframe:127,lastframe:176,frames:sS,endfunc:$y};var ur=.1,oS={x:30,y:28,z:24},cS={x:26,y:16,z:24},uS={x:26,y:-14,z:24};function dS(e,t,n){ne(e,ur,n)}function mS(e,t,n){ce(e,t,ur,n)}function lS(e,t,n){se(e,t,ur,n)}function Bc(e,t,n){re(e,t,ur,n)}function Rt(e,t,n){ae(e,t)}var pa,Gc,Hc,hS,Vc,fS,gS,_S,pS,Wc,vS;function yS(e){e.monsterinfo.current_move=pa}function SS(e){e.monsterinfo.current_move=Gc}function Je(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hc:e.monsterinfo.current_move=pa}function va(e,t){let{forward:n,right:r,up:i}=Q(e.angles),a={...e.origin},s=U(n,t.x),o=U(r,t.y),c=U(i,t.z);return F(F(F(a,s),o),c)}function wS(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=va(e,oS),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=P(O(r,n));Co(e,n,i,50,300,100,300,0,t)}function xS(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=va(e,uS),r=P(O(e.pos1,n));Po(e,n,r,50,100,0,t)}function AS(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function ES(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=va(e,cS),r=(e.monsterinfo.nextframe||0)-Vc.firstframe,i=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=O(s,n),u={...$t(o)};r<=12?u.y-=5*(r-4):u.y-=40-5*(r-12),a=Q(u).forward}else{let{forward:s}=Q(e.angles);a=s}He(e,n,a,15,1e3,0,0,t,1)}function kS(e){e.monsterinfo.nextframe=Wc.lastframe,e.nextthink=-1}var TS=Array.from({length:60},()=>({ai:dS,dist:0}));pa={firstframe:0,lastframe:59,frames:TS,endfunc:yS};var MS=Array.from({length:10},()=>({ai:mS,dist:8}));Gc={firstframe:60,lastframe:69,frames:MS,endfunc:SS};var bS=Array.from({length:10},()=>({ai:lS,dist:8}));Hc={firstframe:60,lastframe:69,frames:bS,endfunc:Je};var RS=Array.from({length:8},(e,t)=>({ai:Bc,dist:0,think:t===3?wS:null}));hS={firstframe:70,lastframe:77,frames:RS,endfunc:Je};var zS=Array.from({length:26},(e,t)=>({ai:Rt,dist:0,think:t>=4&&t<=20?ES:null}));Vc={firstframe:78,lastframe:103,frames:zS,endfunc:Je};var LS=Array.from({length:16},(e,t)=>({ai:Bc,dist:0,think:t===7?AS:t===8?xS:null}));fS={firstframe:104,lastframe:119,frames:LS,endfunc:Je};var NS=Array.from({length:4},()=>({ai:Rt,dist:0}));gS={firstframe:120,lastframe:123,frames:NS,endfunc:Je};var OS=Array.from({length:4},()=>({ai:Rt,dist:0}));_S={firstframe:124,lastframe:127,frames:OS,endfunc:Je};var IS=Array.from({length:27},()=>({ai:Rt,dist:0}));pS={firstframe:128,lastframe:154,frames:IS,endfunc:Je};var CS=Array.from({length:95},()=>({ai:Rt,dist:0}));Wc={firstframe:155,lastframe:249,frames:CS,endfunc:kS};var PS=Array.from({length:13},()=>({ai:Rt,dist:0}));vS={firstframe:250,lastframe:262,frames:PS,endfunc:Je};var Xt=.1;function DS(e,t,n){if(e.classname==="monster_medic"&&Yc(e,n)){e.monsterinfo.current_move=nn;return}ne(e,Xt,n)}function FS(e,t,n){ce(e,t,Xt,n)}function US(e,t,n){e.classname==="monster_medic"&&Yc(e,n)?e.monsterinfo.current_move=nn:se(e,t,Xt,n)}function Pe(e,t,n){re(e,t,Xt,n)}function ya(e,t,n){ae(e,t)}var Sa,Kc,nn,BS,Xc,GS,HS,$c;function VS(e){e.monsterinfo.current_move=Sa}function WS(e){e.monsterinfo.current_move=Kc}function rn(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&qe(e,e.enemy)<80){e.monsterinfo.current_move=Xc;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=nn:e.monsterinfo.current_move=Sa}function KS(e,t){if(!e.enemy||e.enemy.health<=0)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=P(O(e.enemy.origin,n));He(e,n,r,2,1e3,0,0,t,10)}function $e(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;if(qe(e,e.enemy)>400){e.monsterinfo.current_move=nn;return}let r=Q(e.angles),i=r.forward,a=r.right,s=r.up,o={x:24,y:0,z:6},c=F(e.origin,F(U(i,o.x),F(U(a,o.y),U(s,o.z)))),u=e.enemy.origin;t.multicast(e.origin,1,pe.temp_entity,{te:we.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:c,end:u})}function XS(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),$e(e,t)}function $S(e,t){if(!e.enemy||e.enemy.deadflag!==2)return;let n=e.enemy,r=t.getSpawnFunction(n.classname);if(qe(e,n)>400){e.enemy=null;return}if(!r)n.deadflag=0,n.health=n.max_health,n.takedamage=!0,n.solid=2,n.nextthink=t.timeSeconds+.1,n.monsterinfo&&n.monsterinfo.stand&&n.monsterinfo.stand(n,t),n.bad_medic=e;else{let i={entities:t,keyValues:{classname:n.classname},warn:o=>{},free:o=>t.free(o)},a={...n.origin},s={...n.angles};r(n,i),n.origin=a,n.angles=s,t.linkentity(n),n.deadflag=0,n.takedamage=!0,t.finalizeSpawn(n)}e.enemy=null}function Yc(e,t){if(e.enemy&&e.enemy.deadflag===2)return!0;if(Math.random()>.2)return!1;let n=null,r=1024,i=(a,s,o,c,u,d)=>{let m=t.trace(a,s,o,c,u,d);return{fraction:m.fraction,ent:m.ent}};return t.forEachEntity(a=>{if(a===e||a.deadflag!==2||!a.monsterinfo||a.classname==="monster_medic"||a.bad_medic===e||!jt(e,a,i))return;let s=qe(e,a);s<r&&(r=s,n=a)}),n?(e.enemy=n,!0):!1}function YS(e,t){let n=Math.random(),r="monster_soldier_light";n>.8?r="monster_soldier_ssg":n>.5&&(r="monster_soldier");let i=t.getSpawnFunction(r);if(i){let a=Q(e.angles),s=U(a.forward,64),o=F(e.origin,s),c={...o,z:o.z+8},u=t.trace(e.origin,{x:-16,y:-16,z:-24},{x:16,y:16,z:32},c,e,_e|nt|Wn);if(u.fraction<1||u.startsolid||u.allsolid)return;let d=t.spawn();d.origin=c,d.angles={...e.angles},i(d,{entities:t,keyValues:{classname:r},warn:()=>{},free:l=>t.free(l)}),d.enemy=e.enemy,t.multicast(c,1,pe.muzzleflash,{entId:d.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function jS(e){e.monsterinfo.nextframe=$c.lastframe,e.nextthink=-1}var qS=Array.from({length:30},()=>({ai:DS,dist:0}));Sa={firstframe:0,lastframe:29,frames:qS,endfunc:VS};var ZS=Array.from({length:40},()=>({ai:FS,dist:3}));Kc={firstframe:30,lastframe:69,frames:ZS,endfunc:WS};var JS=Array.from({length:20},()=>({ai:US,dist:12}));nn={firstframe:70,lastframe:89,frames:JS,endfunc:rn};var QS=Array.from({length:16},(e,t)=>({ai:Pe,dist:0,think:t>=4&&t<=13?KS:null}));BS={firstframe:90,lastframe:105,frames:QS,endfunc:rn};var ew=[{ai:Pe,dist:0,think:XS},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$e},{ai:Pe,dist:0,think:$S}];Xc={firstframe:106,lastframe:114,frames:ew,endfunc:rn};var tw=Array.from({length:6},()=>({ai:ya,dist:0}));HS={firstframe:116,lastframe:121,frames:tw,endfunc:rn};var nw=Array.from({length:23},(e,t)=>({ai:ya,dist:0,think:t===11?YS:null}));GS={firstframe:122,lastframe:144,frames:nw,endfunc:rn};var rw=Array.from({length:30},()=>({ai:ya,dist:0}));$c={firstframe:161,lastframe:190,frames:rw,endfunc:jS};var an=.1;function b(e,t,n){ne(e,an,n)}function ve(e,t,n){ce(e,t,an,n)}function pt(e,t,n){se(e,t,an,n)}function Xe(e,t,n){re(e,t,an,n)}function X(e,t,n){ae(e,t)}function xi(e,t,n){g1(e,null,t,an)}var jc,qc,Gn,iw,aw,sw,ow,Zc,Jc;function cw(e){e.monsterinfo.current_move=qc}function uw(e){e.monsterinfo.current_move=jc}function zt(e){e.monsterinfo.current_move=Gn}function Qc(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let r=O(e.enemy.origin,e.origin);if(At(r)>100)return;let a=P(r);le(e.enemy,e,e,a,e.enemy.origin,W,t,0,0,0,n.timeSeconds)}function dw(e,t){Qc(e,30,t)}function ho(e,t){Qc(e,30,t)}function St(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Gn),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Gn)}function mw(e,t,n,r){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),le(t,e,e,P(e.velocity),e.origin,W,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function lw(e,t){let n=Q(e.angles).forward;e.movetype=7,e.touch=mw,e.velocity=F(U(n,300),{x:0,y:0,z:300}),e.velocity=F(U(n,600),{x:0,y:0,z:250}),e.groundentity=null,t.engine.sound?.(e,0,"mutant/mutatck2.wav",1,1,0)}function hw(e){e.monsterinfo.nextframe=Zc.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var fw=[{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0},{ai:b,dist:0}];jc={firstframe:0,lastframe:50,frames:fw,endfunc:uw};var gw=[{ai:ve,dist:3},{ai:ve,dist:1},{ai:ve,dist:5},{ai:ve,dist:10},{ai:ve,dist:13},{ai:ve,dist:12},{ai:ve,dist:0},{ai:ve,dist:0},{ai:ve,dist:5},{ai:ve,dist:6},{ai:ve,dist:16},{ai:ve,dist:15},{ai:ve,dist:6}];qc={firstframe:51,lastframe:63,frames:gw,endfunc:cw};var _w=[{ai:pt,dist:20},{ai:pt,dist:15},{ai:pt,dist:35},{ai:pt,dist:20},{ai:pt,dist:10},{ai:pt,dist:20}];Gn={firstframe:64,lastframe:69,frames:_w,endfunc:zt};var pw=[{ai:Xe,dist:0},{ai:Xe,dist:0},{ai:Xe,dist:0,think:ho},{ai:Xe,dist:0},{ai:Xe,dist:0,think:dw},{ai:Xe,dist:0},{ai:Xe,dist:0,think:ho},{ai:Xe,dist:0}];iw={firstframe:70,lastframe:77,frames:pw,endfunc:zt};var vw=[{ai:xi,dist:0},{ai:xi,dist:0},{ai:xi,dist:0,think:lw},{ai:X,dist:0,think:St},{ai:X,dist:0,think:St},{ai:X,dist:0,think:St},{ai:X,dist:0,think:St},{ai:X,dist:0,think:St}];Jc={firstframe:93,lastframe:100,frames:vw,endfunc:zt};Jc.frames[3].ai=(e,t,n)=>{St(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var yw=[{ai:X,dist:4},{ai:X,dist:-3},{ai:X,dist:-8},{ai:X,dist:2},{ai:X,dist:5}];aw={firstframe:78,lastframe:82,frames:yw,endfunc:zt};var Sw=[{ai:X,dist:-24},{ai:X,dist:11},{ai:X,dist:5},{ai:X,dist:-2}];sw={firstframe:83,lastframe:86,frames:Sw,endfunc:zt};var ww=[{ai:X,dist:11},{ai:X,dist:0},{ai:X,dist:-2},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0}];ow={firstframe:87,lastframe:92,frames:ww,endfunc:zt};var xw=[{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0}];Zc={firstframe:101,lastframe:109,frames:xw,endfunc:hw};var dr=.1,Aw=()=>Math.random();function B(e,t,n){ne(e,dr,n)}function Ue(e,t,n){ce(e,t,dr,n)}function Be(e,t,n){se(e,t,dr,n)}function de(e,t,n){re(e,t,dr,n)}function me(e,t,n){ae(e,t)}var wa,eu,tu,Ew,kw,nu,ru,Tw,Mw,xa,iu;function bw(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Rw(e,t){t.engine.sound?.(e,0,"parasite/paratck4.wav",1,1,0)}function vt(e,t){t.engine.sound?.(e,0,"parasite/paridle1.wav",1,2,0)}function Ni(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function zw(e){e.monsterinfo.current_move=xa}function Lw(e){Aw()<=.8?e.monsterinfo.current_move=xa:e.monsterinfo.current_move=iu}function au(e){e.monsterinfo.current_move=wa}function Aa(e){e.monsterinfo.current_move=eu}function su(e){e.monsterinfo.current_move=ru}function ou(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=wa:e.monsterinfo.current_move=tu}function Ai(e,t){let n=O(t,e);if(At(n)>256)return!1;let a=$t(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function Re(e,t){if(!e.enemy)return;let n=Q(e.angles),r=n.forward,i=n.right,a=n.up,s={x:24,y:0,z:6},o=F(e.origin,F(U(r,s.x),F(U(i,s.y),U(a,s.z)))),c=Yh(e.enemy.origin);if(!Ai(o,c)&&(c={...c,z:e.enemy.origin.z+e.enemy.maxs.z-8},!Ai(o,c)&&(c={...c,z:e.enemy.origin.z+e.enemy.mins.z+8},!Ai(o,c)))||t.trace(o,c,W,W,e,Yt).ent!==e.enemy)return;let d=2,m=e.frame;m===41?(d=5,t.engine.sound?.(e.enemy,0,"parasite/paratck2.wav",1,1,0)):(m===42&&t.engine.sound?.(e,0,"parasite/paratck3.wav",1,1,0),d=2),t.multicast(e.origin,0,pe.temp_entity,{te:we.PARASITE_ATTACK,entId:e.index,start:o,end:c});let l=P(O(o,c));le(e.enemy,e,e,l,e.enemy.origin,W,d,0,8,0,t.timeSeconds),e.health<e.max_health&&(e.health+=d,e.health>e.max_health&&(e.health=e.max_health))}function Nw(e){e.monsterinfo.nextframe=nu.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Ow=[{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:vt},{ai:B,dist:0},{ai:B,dist:0,think:vt}];wa={firstframe:83,lastframe:99,frames:Ow,endfunc:au};var Iw=[{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0}];Mw={firstframe:100,lastframe:103,frames:Iw,endfunc:zw};var Cw=[{ai:B,dist:0,think:Ni},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0,think:Ni},{ai:B,dist:0},{ai:B,dist:0}];xa={firstframe:104,lastframe:109,frames:Cw,endfunc:Lw};var Pw=[{ai:B,dist:0,think:Ni},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0},{ai:B,dist:0}];iu={firstframe:110,lastframe:117,frames:Pw,endfunc:au};var Dw=[{ai:Be,dist:0},{ai:Be,dist:30}];ru={firstframe:68,lastframe:69,frames:Dw,endfunc:ou};var Fw=[{ai:Be,dist:30},{ai:Be,dist:30},{ai:Be,dist:22},{ai:Be,dist:19},{ai:Be,dist:24},{ai:Be,dist:28},{ai:Be,dist:25}];tu={firstframe:70,lastframe:76,frames:Fw,endfunc:ou};var Uw=[{ai:Ue,dist:0},{ai:Ue,dist:30,think:Aa}];Tw={firstframe:68,lastframe:69,frames:Uw,endfunc:Aa};var Bw=[{ai:Ue,dist:30},{ai:Ue,dist:30},{ai:Ue,dist:22},{ai:Ue,dist:19},{ai:Ue,dist:24},{ai:Ue,dist:28},{ai:Ue,dist:25}];eu={firstframe:70,lastframe:76,frames:Bw,endfunc:Aa};var Gw=[{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:6},{ai:me,dist:16},{ai:me,dist:-6},{ai:me,dist:-7},{ai:me,dist:0}];kw={firstframe:57,lastframe:67,frames:Gw,endfunc:su};var Hw=[{ai:de,dist:0,think:bw},{ai:de,dist:0},{ai:de,dist:15,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:-2,think:Re},{ai:de,dist:-2,think:Re},{ai:de,dist:-3,think:Re},{ai:de,dist:-2,think:Re},{ai:de,dist:0,think:Re},{ai:de,dist:-1,think:Re},{ai:de,dist:0,think:Rw},{ai:de,dist:-2},{ai:de,dist:-2},{ai:de,dist:-3},{ai:de,dist:0}];Ew={firstframe:39,lastframe:56,frames:Hw,endfunc:su};var Vw=[{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0},{ai:me,dist:0}];nu={firstframe:32,lastframe:38,frames:Vw,endfunc:Nw};var mr=.1;var Ww=2;function Kw(e,t,n){ne(e,mr,n)}function Xw(e,t,n){ce(e,t,mr,n)}function $w(e,t,n){se(e,t,mr,n)}function cu(e,t,n){re(e,t,mr,n)}function uu(e,t,n){ae(e,t)}var Ea,du,mu,Yw,jw,qw,lu;function Zw(e){e.monsterinfo.current_move=Ea}function Jw(e){e.monsterinfo.current_move=du}function lr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mu:e.monsterinfo.current_move=Ea}function ka(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function Ta(e,t){if(!e.enemy){let{forward:r}=Q(e.angles);return r}let n={x:e.enemy.origin.x,y:e.enemy.origin.y,z:e.enemy.origin.z+(e.enemy.viewheight||0)};return P(O(n,t))}function Qw(e,t){if(!e.enemy)return;let n=ka(e),r=Ta(e,n);He(e,n,r,5,600,0,0,t,1)}function ex(e,t){if(!e.enemy)return;let n=ka(e),r=Ta(e,n),i=2,a=4,s=20,o=.15,c=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),ig(e,n,r,i,a,o,c,s,0,t,3)}function tx(e,t){if(!e.enemy)return;let n=ka(e),r=Ta(e,n),i=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),tt(e,n,r,i,a,s,o,0,t,4)}function nx(e,t){e.spawnflags&Ww?ex(e,t):Qw(e,t)}var rx=Array.from({length:30},()=>({ai:Kw,dist:0}));Ea={firstframe:0,lastframe:29,frames:rx,endfunc:Zw};var ix=Array.from({length:40},()=>({ai:Xw,dist:2}));du={firstframe:30,lastframe:69,frames:ix,endfunc:Jw};var ax=Array.from({length:20},()=>({ai:$w,dist:10}));mu={firstframe:70,lastframe:89,frames:ax,endfunc:lr};var sx=Array.from({length:10},(e,t)=>({ai:cu,dist:0,think:t===5?nx:null}));Yw={firstframe:90,lastframe:99,frames:sx,endfunc:lr};var ox=Array.from({length:10},(e,t)=>({ai:cu,dist:0,think:t>=4&&t<=8?tx:null}));jw={firstframe:90,lastframe:99,frames:ox,endfunc:lr};var cx=Array.from({length:6},()=>({ai:uu,dist:0}));qw={firstframe:100,lastframe:105,frames:cx,endfunc:lr};var ux=Array.from({length:10},()=>({ai:uu,dist:0}));function dx(e){e.monsterinfo.nextframe=lu.lastframe,e.nextthink=-1}lu={firstframe:106,lastframe:115,frames:ux,endfunc:dx};var hu=.1,mx={x:30,y:30,z:40},lx={x:30,y:-30,z:40},hx={x:20,y:0,z:70};function fx(e,t,n){ne(e,hu,n)}function gx(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ba:e.monsterinfo.current_move=hr}function Ma(e,t,n){re(e,t,hu,n)}function sn(e,t,n){ae(e,t)}var hr,ba,_x,px,fu,gu,vx,yx,Sx,_u;function wx(e){e.monsterinfo.current_move=hr}function it(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ba:e.monsterinfo.current_move=hr}function Ra(e,t){let{forward:n,right:r,up:i}=Q(e.angles),a={...e.origin},s=U(n,t.x),o=U(r,t.y),c=U(i,t.z);return F(F(F(a,s),o),c)}function xx(e,t){if(!e.enemy)return;let n=Ra(e,lx),r=P(O(e.enemy.origin,n));Jt(e,n,r,50,650,0,t)}function Ax(e,t){if(!e.enemy)return;let n=Ra(e,hx),r=P(O(e.enemy.origin,n));ag(e,n,r,50,600,0,t)}function Ex(e,t){if(!e.enemy)return;let n=Ra(e,mx),r=P(O(e.enemy.origin,n));Bn(e,n,r,6,4,.05,.05,0,t,4)}function kx(e,t){let n=(r,i,a,s,o,c)=>{let u=t.trace(r,i,a,s,o,c);return{fraction:u.fraction,ent:u.ent}};e.enemy&&jt(e,e.enemy,n)&&(Math.random()<.3||e.timestamp&&e.timestamp>=Date.now()/1e3)?e.monsterinfo.current_move=fu:e.monsterinfo.current_move=gu}function Tx(e){e.monsterinfo.nextframe=_u.lastframe,e.nextthink=-1}var Mx=Array.from({length:60},()=>({ai:fx,dist:0}));hr={firstframe:0,lastframe:59,frames:Mx,endfunc:wx};var bx=Array.from({length:18},()=>({ai:gx,dist:12}));ba={firstframe:60,lastframe:77,frames:bx,endfunc:it};var Rx=Array.from({length:4},()=>({ai:sn,dist:0}));Sx={firstframe:78,lastframe:81,frames:Rx,endfunc:it};var zx=Array.from({length:4},()=>({ai:sn,dist:0}));yx={firstframe:82,lastframe:85,frames:zx,endfunc:it};var Lx=Array.from({length:4},()=>({ai:sn,dist:0}));vx={firstframe:86,lastframe:89,frames:Lx,endfunc:it};var Nx=Array.from({length:24},()=>({ai:sn,dist:0}));_u={firstframe:90,lastframe:113,frames:Nx,endfunc:Tx};var Ox=Array.from({length:6},(e,t)=>({ai:Ma,dist:0,think:t===0||t===3?Ax:null}));px={firstframe:114,lastframe:119,frames:Ox,endfunc:it};var Ix=Array.from({length:27},(e,t)=>({ai:Ma,dist:0,think:t===7||t===10||t===13?xx:null}));_x={firstframe:120,lastframe:146,frames:Ix,endfunc:it};var Cx=Array.from({length:6},()=>({ai:Ma,dist:0,think:Ex}));fu={firstframe:147,lastframe:152,frames:Cx,endfunc:kx};var Px=Array.from({length:14},()=>({ai:sn,dist:0}));gu={firstframe:153,lastframe:166,frames:Px,endfunc:it};var za=.1;function Dx(e,t,n){ne(e,za,n)}function Fx(e,t,n){ce(e,t,za,n)}function Ux(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Na:e.monsterinfo.current_move=fr}function La(e,t,n){re(e,t,za,n)}function pu(e,t,n){ae(e,t)}var fr,vu,Na,Bx,Gx,Hx,Vx,yu;function Wx(e){e.monsterinfo.current_move=fr}function Kx(e){e.monsterinfo.current_move=vu}function on(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Na:e.monsterinfo.current_move=fr}function Xx(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(O(e.enemy.origin,n));He(e,n,r,30,1e3,0,0,t,1)}function $x(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(O(e.enemy.origin,n));tt(e,n,r,20,2,.05,.05,0,t,4)}function Ei(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=P(O(e.enemy.origin,n));Jt(e,n,r,50,650,0,t)}function Yx(e){e.monsterinfo.nextframe=yu.lastframe,e.nextthink=-1}var jx=Array.from({length:30},()=>({ai:Dx,dist:0}));fr={firstframe:0,lastframe:29,frames:jx,endfunc:Wx};var qx=Array.from({length:16},()=>({ai:Fx,dist:5}));vu={firstframe:30,lastframe:45,frames:qx,endfunc:Kx};var Zx=Array.from({length:16},()=>({ai:Ux,dist:10}));Na={firstframe:46,lastframe:61,frames:Zx,endfunc:on};var Jx=Array.from({length:16},(e,t)=>({ai:La,dist:0,think:t>5&&t<12?Xx:null}));Bx={firstframe:62,lastframe:77,frames:Jx,endfunc:on};var Qx=Array.from({length:20},(e,t)=>({ai:La,dist:0,think:t%2===0&&t>5?$x:null}));Gx={firstframe:78,lastframe:97,frames:Qx,endfunc:on};var eA=Array.from({length:18},(e,t)=>({ai:La,dist:0,think:t===8||t===12||t===16?Ei:null}));Hx={firstframe:98,lastframe:115,frames:eA,endfunc:on};var tA=Array.from({length:6},()=>({ai:pu,dist:0}));Vx={firstframe:116,lastframe:121,frames:tA,endfunc:on};var nA=Array.from({length:16},()=>({ai:pu,dist:0}));yu={firstframe:122,lastframe:137,frames:nA,endfunc:Yx};var Oa=.1;function rA(e,t,n){ne(e,Oa,n)}function Ia(e,t,n){se(e,t,Oa,n)}function iA(e,t,n){re(e,t,Oa,n)}var Ca,Su,aA,sA,wu;function oA(e){e.monsterinfo.current_move=Ca}function Pa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Su:e.monsterinfo.current_move=Ca}function cA(e,t){if(!e.enemy)return;let n=Q(e.angles).forward,r={x:e.origin.x+n.x*8,y:e.origin.y+n.y*8,z:e.origin.z+e.viewheight},i=P(O(e.enemy.origin,r));t.engine.sound?.(e,0,"turret/fire.wav",1,1,0),He(e,r,i,2,1e3,1,0,t)}var uA=Array.from({length:1},()=>({ai:rA,dist:0}));Ca={firstframe:0,lastframe:0,frames:uA,endfunc:oA};var dA=Array.from({length:1},()=>({ai:Ia,dist:0}));Su={firstframe:0,lastframe:0,frames:dA,endfunc:Pa};var mA=Array.from({length:8},(e,t)=>({ai:iA,dist:0,think:t===4?cA:void 0}));aA={firstframe:1,lastframe:8,frames:mA,endfunc:Pa};var lA=Array.from({length:2},()=>({ai:Ia,dist:0}));sA={firstframe:9,lastframe:10,frames:lA,endfunc:Pa};var hA=Array.from({length:4},()=>({ai:Ia,dist:0}));function fA(e){e.monsterinfo.nextframe=wu.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}wu={firstframe:11,lastframe:14,frames:hA,endfunc:fA};var tk=new Map(Bi.map(e=>[e.name,e]));var gA=2166136261,_A=16777619;function xu(e,t){let n=e>>>0;for(let r=0;r<t.length;r+=1)n^=t[r]&255,n=Math.imul(n,_A)>>>0;return n>>>0}function wt(e,t){let n=new ArrayBuffer(8);new DataView(n).setFloat64(0,t,!0);let i=new Uint8Array(n);return xu(e,i)}function Oi(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r)&255;return xu(e,n)}var ki=2,pA=1;function Se(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function J(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function In(e,t,n){return e===void 0?n:J(e,t)}function Hn(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Pn(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)J(n,`${t} element`);return e}function vA(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Se(e,"level");return{frameNumber:In(t.frameNumber,"level.frameNumber",0),timeSeconds:In(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:In(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:In(t.deltaSeconds,"level.deltaSeconds",0)}}function yA(e){if(e===void 0)return new vo().getState();let t=Se(e,"rng"),n=Se(t.mt,"rng.mt"),r=Pn(n.state,"rng.mt.state");return{mt:{index:J(n.index,"rng.mt.index"),state:r}}}function SA(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("thinks must be an array");return e.map((t,n)=>{let r=Se(t,`thinks[${n}]`);return{time:J(r.time,`thinks[${n}].time`),entityIndex:J(r.entityIndex,`thinks[${n}].entityIndex`)}})}function wA(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=Se(e,"awareness"),n=(r,i)=>r===null?null:J(r,i);return{frameNumber:J(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:J(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:J(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:J(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function xA(e){if(e===void 0)return{};let t=Se(e,"entity.fields"),n={};for(let[r,i]of Object.entries(t)){if(i===null){n[r]=null;continue}switch(typeof i){case"number":case"string":case"boolean":n[r]=i;break;default:{if(!Array.isArray(i)){let a=Se(i,r),s={};for(let[o,c]of Object.entries(a))s[o]=J(c,`${r}.${o}`);n[r]=s;break}if(Array.isArray(i)&&i.length===3){let[a,s,o]=i;n[r]=[J(a,`${r}[0]`),J(s,`${r}[1]`),J(o,`${r}[2]`)];break}throw new Error(`Unsupported entity field value for ${r}`)}}}return n}function AA(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let r=Se(t,`entities[${n}]`);return{index:J(r.index,`entities[${n}].index`),fields:xA(r.fields)}})}function EA(e){let t=Se(e,"pool");return{capacity:J(t.capacity,"pool.capacity"),activeOrder:Pn(t.activeOrder,"pool.activeOrder"),freeList:Pn(t.freeList,"pool.freeList"),pendingFree:Pn(t.pendingFree,"pool.pendingFree")}}function kA(e){let t=Se(e,"entities");return{timeSeconds:J(t.timeSeconds,"entities.timeSeconds"),pool:EA(t.pool),entities:AA(t.entities),thinks:SA(t.thinks),awareness:wA(t.awareness)}}function TA(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("cvars must be an array");return e.map((t,n)=>{let r=Se(t,`cvars[${n}]`);return{name:Hn(r.name,`cvars[${n}].name`),value:Hn(r.value,`cvars[${n}].value`),flags:J(r.flags,`cvars[${n}].flags`)}})}function MA(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Hn(t,`configstrings[${n}]`))}function bA(e){return e===void 0?{}:Se(e,"gameState")}function Ge(e,t){if(t==null)return e;if(typeof t=="number")return wt(e,t);if(typeof t=="string")return Oi(e,t);if(typeof t=="boolean")return wt(e,t?1:0);if(Array.isArray(t)){let n=e;for(let r of t)n=Ge(n,r);return n}if(typeof t=="object"){let n=e,r=Object.keys(t).sort();for(let i of r)n=Oi(n,i),n=Ge(n,t[i]);return n}return e}function RA(e){let t=gA;return t=wt(t,e.version),t=wt(t,e.timestamp),t=Oi(t,e.map),t=wt(t,e.difficulty),t=wt(t,e.playtimeSeconds),t=Ge(t,e.gameState),t=Ge(t,e.level),t=Ge(t,e.rng),t=Ge(t,e.entities),t=Ge(t,e.cvars),t=Ge(t,e.configstrings),e.player&&(t=Ge(t,e.player)),t>>>0}function Au(e,t={}){let{allowNewerVersion:n=!0}=t,r=typeof e=="string"?JSON.parse(e):e,i=Se(r,"save"),a=i.version??ki,s=J(a,"version");if(s<pA)throw new Error(`Unsupported save version ${s}`);if(s>ki&&!n)throw new Error(`Save version ${s} is newer than supported ${ki}`);let o={version:s,timestamp:J(i.timestamp,"timestamp"),map:Hn(i.map,"map"),difficulty:J(i.difficulty,"difficulty"),playtimeSeconds:J(i.playtimeSeconds,"playtimeSeconds"),gameState:bA(i.gameState),level:vA(i.level),rng:yA(i.rng),entities:kA(i.entities),cvars:TA(i.cvars),configstrings:MA(i.configstrings),player:i.player?i.player:void 0,checksum:i.checksum!==void 0?J(i.checksum,"checksum"):void 0};if(o.checksum!==void 0){let c=RA(o);if(c!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${c}`)}return o}var nk=new Set(Bi.filter(e=>e.save).map(e=>e.name));var fo=globalThis.TextEncoder;function xt(e){return Au({...e},{allowNewerVersion:!0})}function zA(e){return fo?new fo().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var LA=class{constructor(){this.records=new Map}async init(){return Promise.resolve()}async put(e){let t={id:e.id,metadata:{...e.metadata},save:xt(e.save)};this.records.set(e.id,t)}async get(e){let t=this.records.get(e);return t?{id:t.id,metadata:{...t.metadata},save:xt(t.save)}:null}async delete(e){return this.records.delete(e)}async list(){return Array.from(this.records.values()).map(e=>({id:e.id,metadata:{...e.metadata},save:xt(e.save)}))}},NA=class{constructor(e,t,n){this.indexedDB=e,this.dbName=t,this.storeName=n,this.db=null}async init(){this.db||(this.db=await new Promise((e,t)=>{let n=this.indexedDB.open(this.dbName,1);n.onupgradeneeded=()=>{n.result.createObjectStore(this.storeName,{keyPath:"id"})},n.onerror=()=>t(n.error??new Error("Failed to open IndexedDB")),n.onsuccess=()=>e(n.result)}))}async runTransaction(e,t){await this.init();let n=this.db;return new Promise((r,i)=>{let s=n.transaction(this.storeName,e).objectStore(this.storeName),o=t(s);o.onsuccess=()=>r(o.result),o.onerror=()=>i(o.error??new Error("IndexedDB request failed"))})}async put(e){await this.runTransaction("readwrite",t=>t.put(e))}async get(e){let t=await this.runTransaction("readonly",n=>n.get(e));return t?{id:t.id,metadata:{...t.metadata},save:xt(t.save)}:null}async delete(e){return await this.get(e)?(await this.runTransaction("readwrite",n=>n.delete(e)),!0):!1}async list(){return(await this.runTransaction("readonly",t=>t.getAll())).map(t=>({id:t.id,metadata:{...t.metadata},save:xt(t.save)}))}},Da=class Gt{constructor(t={}){let{dbName:n=Gt.DEFAULT_DB_NAME,storeName:r=Gt.DEFAULT_STORE}=t,i=t.indexedDB??globalThis.indexedDB;i?this.adapter=new NA(i,n,r):this.adapter=new LA}async save(t,n,r={}){let i=xt(n),a={id:t,name:r.name??t,map:i.map,difficulty:i.difficulty,playtimeSeconds:i.playtimeSeconds,timestamp:i.timestamp,version:i.version,bytes:zA(i)};return await this.adapter.init(),await this.adapter.put({id:t,metadata:a,save:i}),a}async load(t,n={}){await this.adapter.init();let r=await this.adapter.get(t);if(!r)throw new Error(`Save slot ${t} not found`);return Au(r.save,n)}async delete(t){return await this.adapter.init(),this.adapter.delete(t)}async list(){return await this.adapter.init(),(await this.adapter.list()).map(n=>({...n.metadata})).sort((n,r)=>r.timestamp-n.timestamp||n.id.localeCompare(r.id))}async quickSave(t){return this.save(Gt.QUICK_SLOT,t,{name:"Quick Save"})}async quickLoad(t={}){return this.load(Gt.QUICK_SLOT,t)}};Da.DEFAULT_DB_NAME="quake2ts-saves";Da.DEFAULT_STORE="saves";Da.QUICK_SLOT="quicksave";var rk=Di();var ik=[C.Blaster,C.Shotgun,C.SuperShotgun,C.Machinegun,C.Chaingun,C.GrenadeLauncher,C.RocketLauncher,C.HyperBlaster,C.Railgun,C.BFG10K],ak=[{id:$.QuadDamage,priority:1},{id:$.Invulnerability,priority:2},{id:$.EnviroSuit,priority:3},{id:$.Rebreather,priority:4},{id:$.Silencer,priority:5}];var OA=new Map,IA=["w_blaster","w_shotgun","w_sshotgun","w_machinegun","w_chaingun","w_glauncher","w_rlauncher","w_hyperblaster","w_railgun","w_bfg","w_grapple","a_grenades","a_bullets","a_cells","a_rockets","a_shells","a_slugs","p_quad","p_invulnerability","p_silencer","p_rebreather","p_envirosuit","p_adrenaline","p_megahealth","i_jacketarmor","i_combatarmor","i_bodyarmor","i_powerscreen","i_powershield","k_datacd","k_powercube","k_pyramid","k_dataspin","k_security","k_bluekey","k_redkey"],Eu=async(e,t)=>{for(let n of IA)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);OA.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var CA=new Map,PA=["d_left","d_right","d_up","d_down"],ku=async(e,t)=>{for(let n of PA)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);CA.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Fa=[],DA=0,Tu=async(e,t)=>{for(let n=0;n<10;n++)try{let r=await t.loadTexture(`pics/hud/num_${n}.pcx`),i=e.registerTexture(`hud_num_${n}`,r);Fa.push(i)}catch(r){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,r)}Fa.length>0&&(DA=Fa[0].width),await to(e,t),await Eu(e,t),await ku(e,t)};var FA=3e3,gr=class{constructor(){this.subtitle=null}addSubtitle(t,n){this.subtitle={text:t,startTime:n,duration:FA}}drawSubtitles(t,n){if(!this.subtitle)return;if(n>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}let r=t.height-40;t.drawCenterString(r,this.subtitle.text)}};var Ua=[{type:"null"},{type:"armor",id:kt.BODY},{type:"armor",id:kt.COMBAT},{type:"armor",id:kt.JACKET},{type:"armor",id:kt.JACKET},{type:"item",id:"item_power_screen"},{type:"item",id:"item_power_shield"},{type:"weapon",id:C.Grapple},{type:"weapon",id:C.Blaster},{type:"weapon",id:C.ChainFist},{type:"weapon",id:C.Shotgun},{type:"weapon",id:C.SuperShotgun},{type:"weapon",id:C.Machinegun},{type:"weapon",id:C.EtfRifle},{type:"weapon",id:C.Chaingun},{type:"ammo",id:V.Grenades},{type:"ammo",id:V.Trap},{type:"ammo",id:V.Tesla},{type:"weapon",id:C.GrenadeLauncher},{type:"weapon",id:C.ProxLauncher},{type:"weapon",id:C.RocketLauncher},{type:"weapon",id:C.HyperBlaster},{type:"weapon",id:C.IonRipper},{type:"weapon",id:C.PlasmaBeam},{type:"weapon",id:C.Railgun},{type:"weapon",id:C.Phalanx},{type:"weapon",id:C.BFG10K},{type:"weapon",id:C.Disruptor},{type:"ammo",id:V.Shells},{type:"ammo",id:V.Bullets},{type:"ammo",id:V.Cells},{type:"ammo",id:V.Rockets},{type:"ammo",id:V.Slugs},{type:"ammo",id:V.MagSlugs},{type:"ammo",id:V.Flechettes},{type:"ammo",id:V.Prox},{type:"ammo",id:V.Nuke},{type:"ammo",id:V.Rounds},{type:"powerup",id:$.QuadDamage},{type:"powerup",id:$.QuadFire},{type:"powerup",id:$.Invulnerability},{type:"powerup",id:$.Invisibility},{type:"powerup",id:$.Silencer},{type:"powerup",id:$.Rebreather},{type:"powerup",id:$.EnviroSuit},{type:"health",id:"ancient_head"},{type:"health",id:"legacy_head"},{type:"health",id:"adrenaline"},{type:"powerup",id:$.Bandolier},{type:"powerup",id:$.AmmoPack},{type:"powerup",id:$.IRGoggles},{type:"powerup",id:$.DoubleDamage},{type:"powerup",id:$.SphereVengeance},{type:"powerup",id:$.SphereHunter},{type:"powerup",id:$.SphereDefender},{type:"powerup",id:$.Doppelganger},{type:"powerup",id:$.TagToken},{type:"key",id:oe.DataCD},{type:"key",id:oe.PowerCube},{type:"key",id:oe.ExplosiveCharges},{type:"key",id:oe.Yellow},{type:"key",id:oe.PowerCore},{type:"key",id:oe.Pyramid},{type:"key",id:oe.DataSpinner},{type:"key",id:oe.Pass},{type:"key",id:oe.Blue},{type:"key",id:oe.Red},{type:"key",id:oe.Green},{type:"key",id:oe.CommanderHead},{type:"key",id:oe.Airstrike},{type:"key",id:oe.NukeContainer},{type:"key",id:oe.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:oe.RedFlag},{type:"key",id:oe.BlueFlag},{type:"powerup",id:$.TechResistance},{type:"powerup",id:$.TechStrength},{type:"powerup",id:$.TechHaste},{type:"powerup",id:$.TechRegeneration},{type:"powerup",id:$.Flashlight},{type:"powerup",id:$.Compass}];var UA=2048,_r=class{constructor(t,n){this.configstrings=new Array(UA).fill("");this.entities=new Map;this.baselines=new Map;this.previousFrame=null;this.latestFrame=null;this.stats=new Array(32).fill(0);this.inventory=new Array(256).fill(0);this.imports=t,this.callbacks=n}setImports(t){this.imports=t}setCallbacks(t){this.callbacks=t}onServerData(t,n,r,i,a,s){console.log(`Demo: Server Data - Protocol: ${t}, Level: ${s}`),this.configstrings.fill(""),this.entities.clear(),this.baselines.clear(),this.latestFrame=null}onConfigString(t,n){this.configstrings[t]=n,this.callbacks?.onConfigString&&this.callbacks.onConfigString(t,n)}onSpawnBaseline(t){this.baselines.set(t.number,structuredClone(t))}onFrame(t){this.latestFrame&&(this.previousFrame=this.latestFrame),this.latestFrame=t,this.stats=[...t.playerState.stats];let n=t.packetEntities,r=new Map;if(n.delta)for(let[i,a]of this.entities)r.set(i,structuredClone(a));for(let i of n.entities){if(i.bits&fs){r.delete(i.number);continue}let a=i.number,s;n.delta&&this.entities.has(a)?s=this.entities.get(a):this.baselines.has(a)?s=this.baselines.get(a):s=ot();let o=structuredClone(s);this.applyDelta(o,i),r.set(a,o)}this.entities=r}applyDelta(t,n){let r=n.bits;t.number=n.number,r&Xr&&(t.modelindex=n.modelindex),r&Yr&&(t.modelindex2=n.modelindex2),r&jr&&(t.modelindex3=n.modelindex3),r&qr&&(t.modelindex4=n.modelindex4),r&Hr&&(t.frame=n.frame),r&$r&&(t.frame=n.frame),(r&pn||r&Sn)&&(t.skinnum=n.skinnum),(r&_n||r&yn)&&(t.effects=n.effects),(r&gn||r&vn)&&(t.renderfx=n.renderfx),r&Fr&&(t.origin.x=n.origin.x),r&Ur&&(t.origin.y=n.origin.y),r&Wr&&(t.origin.z=n.origin.z),r&Kr&&(t.angles.x=n.angles.x),r&Br&&(t.angles.y=n.angles.y),r&Gr&&(t.angles.z=n.angles.z),r&Zr&&(t.old_origin.x=n.old_origin.x,t.old_origin.y=n.old_origin.y,t.old_origin.z=n.old_origin.z),r&Jr&&(t.sound=n.sound),r&Vr&&(t.event=n.event),r&Qr&&(t.solid=n.solid)}onCenterPrint(t){this.callbacks?.onCenterPrint?this.callbacks.onCenterPrint(t):console.log(`[Center]: ${t}`)}onStuffText(t){this.imports?.engine.cmd&&this.imports.engine.cmd.executeText(t)}onPrint(t,n){this.callbacks?.onPrint?this.callbacks.onPrint(t,n):console.log(`[Print ${t}]: ${n}`)}onSound(t,n,r,i,a,s,o){if(!this.imports?.engine.audio)return;let c=r??1,u=i??1,d=a??0;s&&s>0?this.imports.engine.audio.sound(s,0,n,c,u,d):o&&this.imports.engine.audio.positioned_sound(o,n,c,u)}onTempEntity(t,n,r,i,a,s,o,c,u){}onLayout(t){}onInventory(t){this.inventory=[...t]}onMuzzleFlash(t,n){}onMuzzleFlash2(t,n){}onDisconnect(){console.log("Demo disconnected")}onReconnect(){console.log("Demo reconnect")}onDownload(t,n,r){}convertFrameToPredictionState(t){let n=t.playerState,r={ammo:{caps:[],counts:[]},ownedWeapons:new Set,armor:null,powerups:new Map,keys:new Set,items:new Set};for(let c=0;c<this.inventory.length;c++){let u=this.inventory[c];if(u<=0)continue;if(c>=Ua.length)break;let d=Ua[c];switch(d.type){case"weapon":r.ownedWeapons.add(d.id);break;case"ammo":r.ammo.counts[d.id]||(r.ammo.counts[d.id]=0),r.ammo.counts[d.id]=u;break;case"armor":r.armor={armorType:d.id,armorCount:u};break;case"powerup":r.powerups.set(d.id,u);break;case"key":r.keys.add(d.id);break;case"health":break;case"item":r.items.add(d.id);break}}let i={...n.origin},a={...n.velocity},s={...n.viewangles},o={...n.delta_angles};return{origin:i,velocity:a,viewAngles:s,pmFlags:n.pm_flags,pmType:n.pm_type,waterLevel:Qe.None,gravity:n.gravity,deltaAngles:o,client:{inventory:r,weaponStates:{states:new Map},buttons:0},health:n.stats[1],armor:n.stats[4],ammo:n.stats[2],blend:[0,0,0,0],damageAlpha:0,damageIndicators:[],stats:[...n.stats],kick_angles:ut,gunoffset:ut,gunangles:ut,gunindex:0,onGround:!1,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32}}}getPredictionState(t){if(!this.latestFrame)return et();let n=this.convertFrameToPredictionState(this.latestFrame);if(this.previousFrame&&t!==void 0){let r=this.latestFrame.serverFrame*100,i=this.previousFrame.serverFrame*100;if(t>=i&&t<=r){let a=(t-i)/(r-i),s=this.convertFrameToPredictionState(this.previousFrame);return ht(s,n,Math.max(0,Math.min(1,a)))}}return n}get latestServerFrame(){return this.latestFrame?.serverFrame??0}};var Lt=class{constructor(){this.strings=new Map;this.models=[];this.sounds=[];this.images=[]}set(t,n){if(this.strings.set(t,n),t>=te.Models&&t<te.Models+Pt){let r=t-te.Models;this.models[r]=n}else if(t>=te.Sounds&&t<te.Sounds+Dt){let r=t-te.Sounds;this.sounds[r]=n}else if(t>=te.Images&&t<te.Images+Ft){let r=t-te.Images;this.images[r]=n}}get(t){return this.strings.get(t)}getModelName(t){return this.models[t]}getSoundName(t){return this.sounds[t]}getImageName(t){return this.images[t]}clear(){this.strings.clear(),this.models.length=0,this.sounds.length=0,this.images.length=0}};var pr=class{constructor(t,n,r){this.menuSystem=t;this.saveLoadFactory=n;this.options=r}createMainMenu(){let t=[{label:"New Game",action:()=>{this.menuSystem.pushMenu(this.createDifficultyMenu())}},{label:"Load Game",action:()=>{this.saveLoadFactory.createLoadMenu().then(n=>{this.menuSystem.pushMenu(n)})}}];return this.options.showSaveOption!==!1&&t.push({label:"Save Game",action:()=>{this.saveLoadFactory.createSaveMenu().then(n=>{this.menuSystem.pushMenu(n)})}}),t.push({label:"Options",action:()=>{this.menuSystem.pushMenu(this.options.optionsFactory.createOptionsMenu())}},{label:"Quit",action:()=>{this.options.onQuit()}}),{title:"Main Menu",items:t}}createDifficultyMenu(){return{title:"Select Difficulty",items:[{label:"Easy",action:()=>this.startNewGame(0)},{label:"Medium",action:()=>this.startNewGame(1)},{label:"Hard",action:()=>this.startNewGame(2)},{label:"Map Select...",action:()=>{this.menuSystem.pushMenu(this.options.mapsFactory.createMapsMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}startNewGame(t){this.options.onSetDifficulty&&this.options.onSetDifficulty(t),this.options.onNewGame()}};var vr=class{constructor(t,n,r,i,a){this.menuSystem=t;this.storage=n;this.onSave=r;this.onLoad=i;this.onDelete=a}async createSaveMenu(){let t=await this.storage.list(),n=[];return n.push({label:"New Save...",action:()=>{this.menuSystem.pushMenu(this.createNewSaveInputMenu())}}),t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Mu(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createConfirmOverwriteMenu(r))}})}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Save Game",items:n}}async createLoadMenu(){let t=await this.storage.list(),n=[];return t.forEach(r=>{n.push({label:`${r.name} - ${r.map} (${Mu(r.playtimeSeconds)})`,action:()=>{this.menuSystem.pushMenu(this.createLoadActionMenu(r))}})}),t.length===0&&n.push({label:"No saves found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Load Game",items:n}}createLoadActionMenu(t){return{title:`Slot: ${t.name}`,items:[{label:"Load Game",action:()=>{this.onLoad(t.id).then(()=>{this.menuSystem.closeAll()})}},{label:"Delete Save",action:()=>{this.menuSystem.pushMenu(this.createConfirmDeleteMenu(t))}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createConfirmDeleteMenu(t){return{title:`Delete ${t.name}?`,items:[{label:"Yes, Delete",action:()=>{this.onDelete(t.id).then(()=>{this.menuSystem.popMenu(),this.menuSystem.popMenu(),this.menuSystem.popMenu()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}createNewSaveInputMenu(){let t={name:`Save ${new Date().toLocaleString()}`};return{title:"Enter Save Name",items:[{label:"Name",type:"input",getValue:()=>t.name,onUpdate:n=>{t.name=n}},{label:"Save",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"Cancel",action:()=>this.menuSystem.popMenu()}]}}createConfirmOverwriteMenu(t){return{title:`Overwrite ${t.name}?`,items:[{label:"Yes, Overwrite",action:()=>{this.onSave(t.name).then(()=>{this.menuSystem.closeAll()})}},{label:"No, Cancel",action:()=>this.menuSystem.popMenu()}]}}};function Mu(e){let t=Math.floor(e/3600),n=Math.floor(e%3600/60),r=Math.floor(e%60);return`${t}:${n.toString().padStart(2,"0")}:${r.toString().padStart(2,"0")}`}var yr=class{constructor(){this.activeMenu=null;this.selectedIndex=0;this.menuStack=[]}pushMenu(t){this.activeMenu&&(this.menuStack.push(this.activeMenu),t.parent||(t.parent=this.activeMenu)),this.activeMenu=t,this.selectedIndex=0}popMenu(){this.menuStack.length>0?(this.activeMenu=this.menuStack.pop(),this.selectedIndex=0):this.activeMenu=null}closeAll(){this.activeMenu=null,this.menuStack=[],this.selectedIndex=0}handleInput(t,n){if(!this.activeMenu)return!1;let r=this.activeMenu.items[this.selectedIndex];if(t==="up")return this.selectedIndex=(this.selectedIndex-1+this.activeMenu.items.length)%this.activeMenu.items.length,!0;if(t==="down")return this.selectedIndex=(this.selectedIndex+1)%this.activeMenu.items.length,!0;if(t==="select")return r.action&&r.action(),!0;if(t==="back")return this.popMenu(),!0;if(r.type==="input"&&r.onUpdate&&r.getValue){let i=r.getValue();if(t==="char"&&n){let a=(i||"")+n;r.onUpdate(a)}else if(t==="left"){let a=String(i||"");a.length>0&&r.onUpdate(a.slice(0,-1))}}return!0}isActive(){return this.activeMenu!==null}getState(){return{activeMenu:this.activeMenu,selectedIndex:this.selectedIndex}}};var cn=class{constructor(t,n){this.menuSystem=t;this.host=n}createOptionsMenu(){return{title:"Options",items:[{label:"Video Options",action:()=>{this.menuSystem.pushMenu(this.createVideoMenu())}},{label:"Audio Options",action:()=>{this.menuSystem.pushMenu(this.createAudioMenu())}},{label:"Controls",action:()=>{this.menuSystem.pushMenu(this.createControlsMenu())}},{label:"Gameplay",action:()=>{this.menuSystem.pushMenu(this.createGameplayMenu())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createVideoMenu(){let t=this.host.cvars;return{title:"Video Options",items:[{label:"Field of View",type:"input",getValue:()=>t?.get("fov")?.string??"90",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("fov",n)}},{label:"Fullscreen",type:"toggle",getValue:()=>document.fullscreenElement?"On":"Off",onUpdate:()=>{document.fullscreenElement?document.exitFullscreen():document.documentElement.requestFullscreen().catch(n=>{console.error(`Error attempting to enable fullscreen: ${n.message}`)})}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createAudioMenu(){let t=this.host.cvars;return{title:"Audio Options",items:[{label:"Master Volume",type:"input",getValue:()=>t?.get("s_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("s_volume",n)}},{label:"Music Volume",type:"input",getValue:()=>t?.get("ogg_volume")?.string??"0.7",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("ogg_volume",n)}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createControlsMenu(){let t=this.host.cvars;return{title:"Controls",items:[{label:"Sensitivity",type:"input",getValue:()=>t?.get("sensitivity")?.string??"3",onUpdate:n=>{let r=parseFloat(n);isNaN(r)||t?.setValue("sensitivity",n)}},{label:"Invert Mouse",type:"toggle",getValue:()=>t?.get("m_pitch")?.string.startsWith("-")?"Yes":"No",onUpdate:()=>{let n=parseFloat(t?.get("m_pitch")?.string??"0.022");t?.setValue("m_pitch",(-n).toString())}},{label:"Always Run",type:"toggle",getValue:()=>t?.get("cl_run")?.integer?"Yes":"No",onUpdate:()=>{let n=t?.get("cl_run")?.integer??1;t?.setValue("cl_run",n?"0":"1")}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}createGameplayMenu(){let t=this.host.cvars;return{title:"Gameplay Options",items:[{label:"Crosshair",type:"toggle",getValue:()=>t?.get("crosshair")?.integer?"On":"Off",onUpdate:()=>{let n=t?.get("crosshair")?.integer??1;t?.setValue("crosshair",n?"0":"1")}},{label:"Handedness",type:"toggle",getValue:()=>t?.get("hand")?.integer===1?"Left":t?.get("hand")?.integer===2?"Center":"Right",onUpdate:()=>{let r=((t?.get("hand")?.integer??0)+1)%3;t?.setValue("hand",r.toString())}},{label:"Back",action:()=>this.menuSystem.popMenu()}]}}};var Sr=class{constructor(t,n,r){this.menuSystem=t;this.vfs=n;this.onStartMap=r}createMapsMenu(){let n=this.vfs.findByExtension(".bsp").map(r=>({label:r.path.replace(/^maps\//,"").replace(/\.bsp$/,""),action:()=>{this.onStartMap(r.path.replace(/^maps\//,"").replace(/\.bsp$/,"")),this.menuSystem.closeAll()}}));return n.length===0&&n.push({label:"No maps found",action:()=>{}}),n.push({label:"Back",action:()=>this.menuSystem.popMenu()}),{title:"Select Map",items:n}}};var wr=class{constructor(t,n,r){this.menuSystem=t;this.optionsFactory=n;this.host=r}createPauseMenu(){return{title:"Game Paused",items:[{label:"Resume Game",action:()=>{this.menuSystem.closeAll()}},{label:"Options",action:()=>{this.menuSystem.pushMenu(this.optionsFactory.createOptionsMenu())}},{label:"Restart Level",action:()=>{this.host?.commands.execute("restart"),this.menuSystem.closeAll()}},{label:"Quit to Main Menu",action:()=>{this.host?.commands.execute("disconnect"),this.menuSystem.closeAll()}}]}}};function bu(e,t,n,r){if(!t.activeMenu)return;let i=t.activeMenu,a=n/2,s=r/2,o=20,c=i.items.length*o+40,u=s-c/2;e.drawfillRect(0,0,n,r,[0,0,0,.7]),e.drawCenterString(u,i.title),i.items.forEach((d,m)=>{let l=u+40+m*o,h=d.label;if(d.type==="input"&&d.getValue){if(h+=`: ${d.getValue()}`,m===t.selectedIndex){let f=Date.now();Math.floor(f/500)%2===0&&(h+="_")}}else d.type==="toggle"&&d.getValue&&(h+=`: ${d.getValue()}`);if(m===t.selectedIndex){let y=h.replace(/\^[0-9]/g,"").length*8,E=(n-y)/2;e.drawString(E-16,l,"\r")}e.drawCenterString(l,h)})}var un=class{constructor(t){this.storage=t}loadCvars(t){try{let n=this.storage.getItem("quake2ts_cvars");if(n){let r=JSON.parse(n);for(let[i,a]of Object.entries(r)){let s=t.get(i);s&&s.setValue(a)}}}catch(n){console.warn("Failed to load settings",n)}}saveCvars(t){let n={};for(let r of t)r.flags&Ct.Archive&&(n[r.name]=r.value);try{this.storage.setItem("quake2ts_cvars",JSON.stringify(n))}catch(r){console.warn("Failed to save settings",r)}}};var xr=class{getItem(t){try{return localStorage.getItem(t)}catch(n){return console.warn("localStorage not available",n),null}}setItem(t,n){try{localStorage.setItem(t,n)}catch(r){console.warn("Failed to write to localStorage",r)}}};var Ar=class{constructor(){this.total=0;this.current=0;this.message="";this.active=!1}start(t,n="Loading..."){this.total=t,this.current=0,this.message=n,this.active=!0}update(t,n){this.current=t,n&&(this.message=n)}finish(){this.active=!1,this.current=this.total}render(t){if(!this.active)return;let n=t.width,r=t.height;t.drawfillRect(0,0,n,r,[.1,.1,.1,1]);let i=n*.6,a=20,s=(n-i)/2,o=r*.7;t.drawfillRect(s,o,i,a,[.3,.3,.3,1]);let c=this.total>0?this.current/this.total:0;t.drawfillRect(s,o,i*c,a,[.8,.5,.1,1]),t.drawCenterString(o-30,this.message);let u=Math.floor(c*100);t.drawCenterString(o+a+10,`${u}%`)}};var Er=class{constructor(){this.state={active:!1,title:"",message:""}}show(t,n){this.state={active:!0,title:t,message:n}}hide(){this.state.active=!1}render(t){if(!this.state.active)return;let n=t.width,r=t.height,i=n/2,a=r/2,s=400,o=200;t.drawfillRect(0,0,n,r,[0,0,0,.5]),t.drawfillRect(i-s/2,a-o/2,s,o,[.2,0,0,1]),t.drawCenterString(a-40,`^1${this.state.title}`),t.drawCenterString(a,this.state.message),t.drawCenterString(a+60,"Press ESC to close")}};var kr=class{constructor(){this.state={active:!1,type:"weapon",selectedIndex:-1}}open(t){this.state.active=!0,this.state.type=t}close(){this.state.active=!1}isOpen(){return this.state.active}handleInput(t,n){this.state.active}render(t,n,r,i){if(!this.state.active)return;let a=n/2,s=r/2;t.drawfillRect(a-100,s-100,200,200,[0,0,0,.5]),t.drawCenterString(s,`Select ${this.state.type}`)}};var BA=[{code:"KeyW",command:"+forward"},{code:"ArrowUp",command:"+forward"},{code:"KeyS",command:"+back"},{code:"ArrowDown",command:"+back"},{code:"KeyA",command:"+moveleft"},{code:"KeyD",command:"+moveright"},{code:"Space",command:"+jump"},{code:"ControlLeft",command:"+crouch"},{code:"ShiftLeft",command:"+speed"},{code:"Mouse1",command:"+attack"},{code:"Mouse2",command:"+use"},{code:"Mouse3",command:"+zoom"},{code:"ArrowLeft",command:"+left"},{code:"ArrowRight",command:"+right"},{code:"PageUp",command:"+lookup"},{code:"PageDown",command:"+lookdown"},{code:"Gamepad0-Button7",command:"+attack"},{code:"Gamepad0-Button6",command:"+zoom"},{code:"Gamepad0-Button0",command:"+jump"},{code:"Gamepad0-Button1",command:"+crouch"},{code:"Gamepad0-Button2",command:"+use"},{code:"Gamepad0-Button4",command:"prevweapon"},{code:"Gamepad0-Button5",command:"nextweapon"},{code:"Digit1",command:"weapon 1"},{code:"Digit2",command:"weapon 2"},{code:"Digit3",command:"weapon 3"},{code:"Digit4",command:"weapon 4"},{code:"Digit5",command:"weapon 5"},{code:"Digit6",command:"weapon 6"},{code:"Digit7",command:"weapon 7"},{code:"Digit8",command:"weapon 8"},{code:"Digit9",command:"weapon 9"},{code:"Digit0",command:"weapon 10"}],at=class{constructor(t=BA){this.bindings=new Map;for(let n of t)this.bind(n.code,n.command)}bind(t,n){this.bindings.set(t,n)}unbind(t){this.bindings.delete(t)}getBinding(t){return this.bindings.get(t)}entries(){return new Map(this.bindings.entries())}};function Ru(){return new at}function Ba(e){return e}function dn(e){return e.trim().toLowerCase()}var GA=250,Ga=class{constructor(){this.activeCodes=new Set;this.downTime=0;this.msec=0;this.pressed=!1}press(t,n){return this.activeCodes.has(t)?!1:(this.activeCodes.add(t),this.pressed=!0,this.activeCodes.size===1?(this.downTime=n,!0):!1)}release(t,n){return this.activeCodes.delete(t)&&this.activeCodes.size===0?(this.msec+=n-this.downTime,this.downTime=0,!0):!1}sample(t,n){if(t<=0)return{active:this.activeCodes.size>0,wasPressed:this.pressed,fraction:0};let r=this.msec;this.activeCodes.size>0&&(r+=n-this.downTime,this.downTime=n),this.msec=0;let i=Math.min(r/t,1),a=this.pressed;return this.pressed=!1,{active:this.activeCodes.size>0,wasPressed:a,fraction:i}}},Tr=(y=>(y.Forward="+forward",y.Back="+back",y.MoveLeft="+moveleft",y.MoveRight="+moveright",y.MoveUp="+moveup",y.MoveDown="+movedown",y.Jump="+jump",y.Crouch="+crouch",y.Attack="+attack",y.Use="+use",y.Holster="+holster",y.TurnLeft="+left",y.TurnRight="+right",y.LookUp="+lookup",y.LookDown="+lookdown",y.SpeedModifier="+speed",y.Zoom="+zoom",y))(Tr||{}),HA={"+attack":Oe.Attack,"+use":Oe.Use,"+holster":Oe.Holster,"+jump":Oe.Jump,"+crouch":Oe.Crouch},VA=new Map(Object.values(Tr).map(e=>[dn(e),e]));function WA(e){return VA.get(dn(e))}function mn(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Nt=class{constructor(t={},n=new at){this.buttons=new Map;this.viewAngles={x:0,y:0,z:0};this.pointerLocked=!1;this.mouseDelta={deltaX:0,deltaY:0};this.previousMouseDelta={deltaX:0,deltaY:0};this.anyPressed=!1;this.commandQueue=[];this.gamepadButtons=new Map;this.gamepadMove={x:0,y:0};this.gamepadLook={x:0,y:0};this.touchButtons=new Map;this.touchMove={x:0,y:0};this.touchLook={x:0,y:0};this.bindings=n,this.forwardSpeed=t.forwardSpeed??Ms,this.sideSpeed=t.sideSpeed??bs,this.upSpeed=t.upSpeed??Rs,this.yawSpeed=t.yawSpeed??zs,this.pitchSpeed=t.pitchSpeed??Ls,this.sensitivity=t.sensitivity??Ns,this.sensitivityX=t.sensitivityX,this.sensitivityY=t.sensitivityY,this.invertMouseY=t.invertMouseY??!1,this.runByDefault=t.runByDefault??!0,this.requirePointerLock=t.requirePointerLock??!0,this.jumpAddsUpMove=t.jumpAddsUpMove??!0,this.crouchAddsDownMove=t.crouchAddsDownMove??!0,this.mouseFilter=t.mouseFilter??!1,this.getGamepads=t.getGamepads,this.gamepadDeadZone=t.gamepadDeadZone??.15,this.gamepadLookScale=t.gamepadLookScale??1,this.invertGamepadY=t.invertGamepadY??this.invertMouseY}handleKeyDown(t,n=mn()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!0,r,n)}handleKeyUp(t,n=mn()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!1,r,n)}handleMouseButtonDown(t,n=mn()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!0,r,n)}handleMouseButtonUp(t,n=mn()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!1,r,n)}handleMouseMove(t,n){this.requirePointerLock&&!this.pointerLocked||(this.mouseDelta={deltaX:this.mouseDelta.deltaX+t,deltaY:this.mouseDelta.deltaY+n})}setPointerLocked(t){this.pointerLocked=t}setGamepadState(t){this.pendingGamepads=t}setTouchState(t){this.pendingTouchState=t}buildCommand(t,n=mn(),r){this.pollGamepads(n),this.applyTouchState(n);let i=this.yawSpeed*t/1e3,a=this.pitchSpeed*t/1e3,s=this.sample("+left",t,n),o=this.sample("+right",t,n),c=this.sample("+lookup",t,n),d={x:(this.sample("+lookdown",t,n).fraction-c.fraction)*a,y:(o.fraction-s.fraction)*i,z:0};if(this.gamepadLook.x!==0||this.gamepadLook.y!==0){let T=this.gamepadLook.y*(this.invertGamepadY?-1:1);d={x:d.x+T*a*this.gamepadLookScale,y:d.y+this.gamepadLook.x*i*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let T=this.touchLook.y*(this.invertMouseY?-1:1);d={x:d.x+T*a,y:d.y+this.touchLook.x*i,z:0}}if(this.pointerLocked||!this.requirePointerLock){let T=this.sampleMouseDelta(),G=Is(T,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});d={x:d.x+G.x,y:d.y+G.y,z:0}}let m=Os(this.viewAngles,d);this.viewAngles=m;let l=this.sample("+forward",t,n),h=this.sample("+back",t,n),f=this.sample("+moveleft",t,n),p=this.sample("+moveright",t,n),g=this.sample("+moveup",t,n),y=this.sample("+movedown",t,n),E=this.sample("+speed",t,n),v=this.sample("+jump",t,n),x=this.sample("+crouch",t,n),w=this.runByDefault?E.active?.5:1:E.active?1:.5,A=this.forwardSpeed*(l.fraction-h.fraction)*w,I=this.sideSpeed*(p.fraction-f.fraction)*w,D=this.upSpeed*(g.fraction-y.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(A+=this.forwardSpeed*this.gamepadMove.y*w,I+=this.sideSpeed*this.gamepadMove.x*w),(this.touchMove.x!==0||this.touchMove.y!==0)&&(A+=this.forwardSpeed*this.touchMove.y*w,I+=this.sideSpeed*this.touchMove.x*w),this.jumpAddsUpMove&&v.fraction>0&&(D+=this.upSpeed*v.fraction),this.crouchAddsDownMove&&x.fraction>0&&(D-=this.upSpeed*x.fraction),A=this.clampMove(A,this.forwardSpeed),I=this.clampMove(I,this.sideSpeed),D=this.clampMove(D,this.upSpeed);let _=this.collectButtonBits(t,n),S=Math.min(Math.max(Math.round(t),1),GA);return(this.anyPressed||_!==Oe.None)&&(_|=Oe.Any),this.anyPressed=!1,{msec:S,buttons:_,angles:{...this.viewAngles},forwardmove:A,sidemove:I,upmove:D,serverFrame:r}}consumeConsoleCommands(){let t=this.commandQueue;return this.commandQueue=[],t}pollGamepads(t){let n=this.getGamepads?.()??this.pendingGamepads??[];this.pendingGamepads=void 0,this.gamepadMove={x:0,y:0},this.gamepadLook={x:0,y:0};let r=new Set;for(let i of n){if(!i||i.connected===!1)continue;let a=i.index??0,s=i.axes??[];this.gamepadMove={x:this.mergeAnalog(this.gamepadMove.x,this.applyDeadZone(s[0]??0)),y:this.mergeAnalog(this.gamepadMove.y,-this.applyDeadZone(s[1]??0))},this.gamepadLook={x:this.mergeAnalog(this.gamepadLook.x,this.applyDeadZone(s[2]??0)),y:this.mergeAnalog(this.gamepadLook.y,this.applyDeadZone(s[3]??0))};let o=i.buttons??[];for(let c=0;c<o.length;c++){let u=o[c];if(!u)continue;let d=u.pressed||u.value>this.gamepadDeadZone,m=this.gamepadButtonCode(a,c);d&&r.add(m);let l=this.gamepadButtons.get(m)??!1;d!==l&&(this.applyCommand(this.bindings.getBinding(m),d,m,t),this.gamepadButtons.set(m,d))}}for(let[i,a]of this.gamepadButtons.entries())a&&!r.has(i)&&(this.applyCommand(this.bindings.getBinding(i),!1,i,t),this.gamepadButtons.set(i,!1))}applyTouchState(t){let n=this.pendingTouchState;if(n&&(this.pendingTouchState=void 0,n.move&&(this.touchMove={x:this.clampAnalog(n.move.x),y:this.clampAnalog(n.move.y)}),n.look&&(this.touchLook={x:this.clampAnalog(n.look.x),y:this.clampAnalog(n.look.y)}),n.buttons))for(let[r,i]of Object.entries(n.buttons)){if(i===void 0)continue;let a=this.touchButtons.get(r)??!1;i!==a&&(this.applyCommand(r,i,this.touchButtonCode(r),t),this.touchButtons.set(r,i))}}applyCommand(t,n,r,i){if(!t)return;let a=WA(t);if(a){let s=this.lookupButton(a);n?(s.press(r,i)&&this.commandQueue.push(a),this.anyPressed=!0):s.release(r,i)&&this.commandQueue.push(a.replace("+","-"))}else n&&this.commandQueue.push(t)}sampleMouseDelta(){let t=this.mouseDelta;if(this.mouseDelta={deltaX:0,deltaY:0},!this.mouseFilter)return this.previousMouseDelta=t,t;let n={deltaX:(t.deltaX+this.previousMouseDelta.deltaX)*.5,deltaY:(t.deltaY+this.previousMouseDelta.deltaY)*.5};return this.previousMouseDelta=t,n}collectButtonBits(t,n){let r=Oe.None;for(let[i,a]of Object.entries(HA)){let s=this.sample(i,t,n);(s.fraction>0||s.active||s.wasPressed)&&(r|=a)}return r}lookupButton(t){let n=this.buttons.get(t);return n||(n=new Ga,this.buttons.set(t,n)),n}mouseButtonToCode(t){return t===0?"Mouse1":t===1?"Mouse3":t===2?"Mouse2":`Mouse${t+1}`}mouseButtonToCommand(t){return this.bindings.getBinding(t)}sample(t,n,r){return this.lookupButton(t).sample(n,r)}gamepadButtonCode(t,n){return`Gamepad${t}-Button${n}`}touchButtonCode(t){return`Touch-${t}`}clampAnalog(t){return Math.max(-1,Math.min(1,t))}applyDeadZone(t){return Math.abs(t)<this.gamepadDeadZone?0:t}mergeAnalog(t,n){return Math.abs(n)>Math.abs(t)?n:t}clampMove(t,n){return Math.max(-n,Math.min(n,t))}};var Mr=class{constructor(t,n=new Nt(t)){this.queued=[];this.controller=n}captureFrame(t,n,r){let i=this.controller.buildCommand(t,n,r),a=this.controller.consumeConsoleCommands(),s={command:i,console:a};return this.queued.push(s),s}consumeQueued(){let t=[...this.queued];return this.queued.length=0,t}getController(){return this.controller}};var Ha={x:0,y:0,z:0};function br(e,t,n){return e+(t-e)*n}function Va(e,t,n){return br(e,t,n)}function KA(e,t,n,r,i){let a=[],s=i.engine.assets;if(!s)return a;let o=new Map(t.map(c=>[c.number,c]));for(let c of e){let u=o.get(c.number)??c,d=r.getModelName(c.modelIndex);if(!d)continue;let m=s.getMd2Model(d)||s.getMd3Model(d);if(!m)continue;let l={x:br(u.origin.x,c.origin.x,n),y:br(u.origin.y,c.origin.y,n),z:br(u.origin.z,c.origin.z,n)},h={x:Va(u.angles.x,c.angles.x,n),y:Va(u.angles.y,c.angles.y,n),z:Va(u.angles.z,c.angles.z,n)},f=c.frame,p=u.frame,g=j.create();j.translate(g,g,[l.x,l.y,l.z]),j.rotateZ(g,g,h.z*Math.PI/180),j.rotateY(g,g,h.y*Math.PI/180),j.rotateX(g,g,h.x*Math.PI/180),m.header.magic===844121161?a.push({type:"md2",model:m,blend:{frame0:p,frame1:f,lerp:n},transform:g,skin:c.skinNum>0?r.getImageName(c.skinNum):void 0}):m.header.magic===860898377&&a.push({type:"md3",model:m,blend:{frame0:p,frame1:f,lerp:n},transform:g})}return a}function XA(e){let t=new On(e.engine.trace),n=new Nn,r=new gr,i=new gs,a=new _r(e),s=new yr,o=new Ar,c=new Er,u=new kr,d=new un(new xr),m,l,h=new Lt,f,p=!1,y=eo(e,{get tickRate(){return 10},get frameTimeMs(){return f?.timeMs??0},get serverFrame(){return a.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return h},getClientName:_=>`Player ${_}`,getKeyBinding:_=>`[${_}]`,get inAutoDemo(){return p}}),E=Qs(y);a.setCallbacks({onCenterPrint:_=>E.ParseCenterPrint(_,0,!1),onPrint:(_,S)=>E.NotifyMessage(0,S,!1),onConfigString:(_,S)=>{h.set(_,S),E.ParseConfigString(_,S)}}),i.setHandler(a);let v,x,w,A=90,I=!1;if(e.host){l=new cn(s,e.host),m=new wr(s,l,e.host);let _=new Map;if(e.host.cvars){for(let S of e.host.cvars.list())_.set(S.name,{value:S.string,setValue:T=>e.host.cvars.setValue(S.name,T)});d.loadCvars(_)}}if(e.host?.commands&&(e.host.commands.register("playdemo",_=>{if(_.length<1){console.log("usage: playdemo <filename>");return}let S=_[0];console.log(`playdemo: ${S}`),console.log("Note: Demo loading requires VFS access which is not yet fully integrated into this console command.")},"Play a recorded demo"),e.host.commands.register("crosshair",()=>{let _=no();console.log(`Crosshair changed to index ${_}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{I=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{I=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{s.isActive()?s.closeAll():m&&s.pushMenu(m.createPauseMenu())},"Toggle the main/pause menu"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Ct.Archive,onChange:S=>{let T=S.number;isNaN(T)||(A=Math.max(1,Math.min(179,T)))},description:"Field of view"});let _=e.host.cvars.get("fov");if(_){let S=_.number;isNaN(S)||(A=Math.max(1,Math.min(179,S)))}}return{loadingScreen:o,errorDialog:c,init(_){this.Init(_)},Init(_){f=_,_?.state&&t.setAuthoritative(_),E.Init(),e.engine.assets&&e.engine.renderer&&(o.start(100,"Loading assets..."),Tu(e.engine.renderer,e.engine.assets).then(()=>{o.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(s.isActive()||document.body.requestPointerLock?.())})},predict(_){return s.isActive(),t.enqueueCommand(_)},handleInput(_,S){if(!s.isActive())return!1;if(!S)return!0;let T=_.toLowerCase();return T==="arrowup"||T==="w"?s.handleInput("up"):T==="arrowdown"||T==="s"?s.handleInput("down"):T==="arrowleft"||T==="a"?s.handleInput("left"):T==="arrowright"||T==="d"?s.handleInput("right"):T==="enter"||T===" "?s.handleInput("select"):T==="escape"?s.getState().activeMenu?.parent?s.handleInput("back"):!1:_.length===1?s.handleInput("char",_):_==="Backspace"?s.handleInput("left"):!0},toggleMenu(){if(s.isActive()){if(s.closeAll(),e.host?.cvars){let _=e.host.cvars.list().map(S=>({name:S.name,value:S.string,flags:S.flags}));d.saveCvars(_)}}else m&&s.pushMenu(m.createPauseMenu())},createMainMenu(_,S,T,G,K){let N=new vr(s,S,T,G,K),q=l;if(!q){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");q=new cn(s,e.host)}let he=e.engine.assets,Ae={findByExtension:st=>he?he.listFiles(st):[]},ln=new Sr(s,Ae,st=>{console.log(`Starting map: ${st}`),e.host?.commands.execute(`map ${st}`)}),hn=new pr(s,N,{..._,optionsFactory:q,mapsFactory:ln,onSetDifficulty:st=>{e.host?.cvars&&e.host.cvars.setValue("skill",st.toString())}});return{menuSystem:s,factory:hn}},render(_){let S=i.getState(),T=[];S===ei.Playing?v=a.getPredictionState():(_.latest?.state&&(t.setAuthoritative(_.latest),f=_.latest),_.previous?.state&&_.latest?.state?(v=ht(_.previous.state,_.latest.state,_.alpha),_.latest.state.packetEntities&&_.previous.state.packetEntities&&(T=KA(_.latest.state.packetEntities,_.previous.state.packetEntities,_.alpha,h,e))):v=_.latest?.state??_.previous?.state??t.getPredictedState());let G=_.latest&&_.previous?Math.max(0,_.latest.timeMs-_.previous.timeMs):0;x=n.sample(v,G);let K={};if(v){let{origin:N,viewAngles:q}=v;w=new hs,w.position=Z.fromValues(N.x,N.y,N.z);let he=x?.offset??{x:0,y:0,z:0};Z.add(w.position,w.position,[he.x,he.y,he.z]);let Ae=x?.angles??{x:0,y:0,z:0};w.angles=Z.fromValues(q.x+Ae.x,q.y+Ae.y,q.z+Ae.z),w.fov=I?40:A,w.aspect=4/3,e.engine.renderer&&(w.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&w){let N;if(e.engine.assets){let q=h.getModelName(1);if(q){let he=e.engine.assets.getMap(q)}}e.engine.renderer.renderFrame({camera:w,world:N,dlights:[]},T)}if(e.engine.renderer&&v&&v.client){let N=e.engine.renderer.stats?{...e.engine.renderer.stats,batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0}:{batches:0,facesDrawn:0,drawCalls:0,skyDrawn:!1,viewModelDrawn:!1,fps:0,vertexCount:0},q=_.latest?.timeMs??0;this.DrawHUD(N,q)}return K},DrawHUD(_,S){if(!e.engine.renderer)return;let T=e.engine.renderer,G=T.width,K=T.height;if(v&&v.client){let N={origin:v.origin,velocity:v.velocity,viewAngles:v.viewAngles,onGround:De(v.pmFlags,Ee.OnGround),waterLevel:v.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:v.damageAlpha??0,damageIndicators:v.damageIndicators??[],blend:v.blend??[0,0,0,0],pickupIcon:v.pickupIcon,centerPrint:void 0,notify:void 0,stats:v.stats?[...v.stats]:new Array(32).fill(0),kick_angles:Ha,gunoffset:Ha,gunangles:Ha,gunindex:0};N.stats[ke.STAT_HEALTH]=v.health??0,N.stats[ke.STAT_AMMO]=v.ammo??0,N.stats[ke.STAT_ARMOR]=v.armor??0,T.begin2D(),E.DrawHUD(0,null,{x:0,y:0,width:G,height:K},{x:0,y:0,width:G,height:K},1,0,N),r.drawSubtitles(T,S),T.end2D()}s.isActive()&&bu(e.engine.renderer,s.getState(),e.engine.renderer.width,e.engine.renderer.height),v&&v.client&&u.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,v.client),c.render(e.engine.renderer),o.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(E.Shutdown(),f=void 0,v=void 0,e.host?.cvars){let _=e.host.cvars.list().map(S=>({name:S.name,value:S.string,flags:S.flags}));d.saveCvars(_)}},get prediction(){return t},get lastRendered(){return v},get view(){return n},get lastView(){return x},get camera(){return w},demoPlayback:i,ParseCenterPrint(_){E.ParseCenterPrint(_,0,!1)},ParseNotify(_){E.NotifyMessage(0,_,!1)},showSubtitle(_,S){let T=f?.timeMs??0;r.addSubtitle(_,T)},ParseConfigString(_,S){h.set(_,S),E.ParseConfigString(_,S)},demoHandler:a,configStrings:h}}return Iu($A);})();
150
150
  //# sourceMappingURL=index.global.js.map