quake2ts 0.0.216 → 0.0.217
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.
- package/package.json +1 -1
- package/packages/client/dist/browser/index.global.js +13 -13
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/browser/index.global.js +2 -2
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +188 -18
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +188 -18
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/entities/entity.d.ts +2 -1
- package/packages/game/dist/types/entities/entity.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/attack.d.ts +2 -0
- package/packages/game/dist/types/entities/monsters/attack.d.ts.map +1 -1
- package/packages/game/dist/types/entities/monsters/soldier.d.ts +3 -0
- package/packages/game/dist/types/entities/monsters/soldier.d.ts.map +1 -1
- package/packages/game/dist/types/entities/projectiles.d.ts +2 -0
- package/packages/game/dist/types/entities/projectiles.d.ts.map +1 -1
- package/packages/game/dist/types/physics/movement.d.ts.map +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var Quake2Client=(()=>{var Mr=Object.defineProperty;var Ru=Object.getOwnPropertyDescriptor;var zu=Object.getOwnPropertyNames;var Lu=Object.prototype.hasOwnProperty;var br=(e,t)=>{for(var n in t)Mr(e,n,{get:t[n],enumerable:!0})},Nu=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of zu(t))!Lu.call(e,i)&&i!==n&&Mr(e,i,{get:()=>t[i],enumerable:!(r=Ru(t,i))||r.enumerable});return e};var Ou=e=>Nu(Mr({},"__esModule",{value:!0}),e);var qA={};br(qA,{ClientConfigStrings:()=>Lt,ClientPrediction:()=>Nn,InputAction:()=>Er,InputBindings:()=>st,InputCommandBuffer:()=>kr,InputController:()=>Nt,ViewEffects:()=>Ln,createClient:()=>jA,createDefaultBindings:()=>bu,interpolatePredictionState:()=>ht,normalizeCommand:()=>dn,normalizeInputCode:()=>Ua});var Y=1e-6,we=typeof Float32Array<"u"?Float32Array:Array,Rr=Math.random;function hn(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var JA=Math.PI/180,QA=180/Math.PI;var j={};br(j,{add:()=>vd,adjoint:()=>Gu,clone:()=>Cu,copy:()=>Pu,create:()=>Iu,decompose:()=>id,determinant:()=>Hu,equals:()=>xd,exactEquals:()=>wd,frob:()=>pd,fromQuat:()=>od,fromQuat2:()=>td,fromRotation:()=>Zu,fromRotationTranslation:()=>Xa,fromRotationTranslationScale:()=>ad,fromRotationTranslationScaleOrigin:()=>sd,fromScaling:()=>qu,fromTranslation:()=>ju,fromValues:()=>Du,fromXRotation:()=>Ju,fromYRotation:()=>Qu,fromZRotation:()=>ed,frustum:()=>cd,getRotation:()=>rd,getScaling:()=>$a,getTranslation:()=>nd,identity:()=>Wa,invert:()=>Bu,lookAt:()=>fd,mul:()=>Ad,multiply:()=>Ka,multiplyScalar:()=>yd,multiplyScalarAndAdd:()=>Sd,ortho:()=>ld,orthoNO:()=>ja,orthoZO:()=>hd,perspective:()=>ud,perspectiveFromFieldOfView:()=>md,perspectiveNO:()=>Ya,perspectiveZO:()=>dd,rotate:()=>Ku,rotateX:()=>Xu,rotateY:()=>$u,rotateZ:()=>Yu,scale:()=>Wu,set:()=>Fu,str:()=>_d,sub:()=>Ed,subtract:()=>qa,targetTo:()=>gd,translate:()=>Vu,transpose:()=>Uu});function Iu(){var e=new we(16);return we!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Cu(e){var t=new we(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Pu(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Du(e,t,n,r,i,a,s,o,c,u,d,m,l,h,g,v){var f=new we(16);return f[0]=e,f[1]=t,f[2]=n,f[3]=r,f[4]=i,f[5]=a,f[6]=s,f[7]=o,f[8]=c,f[9]=u,f[10]=d,f[11]=m,f[12]=l,f[13]=h,f[14]=g,f[15]=v,f}function Fu(e,t,n,r,i,a,s,o,c,u,d,m,l,h,g,v,f){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e[4]=a,e[5]=s,e[6]=o,e[7]=c,e[8]=u,e[9]=d,e[10]=m,e[11]=l,e[12]=h,e[13]=g,e[14]=v,e[15]=f,e}function Wa(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Uu(e,t){if(e===t){var n=t[1],r=t[2],i=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[11]=t[14],e[12]=i,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Bu(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],c=t[6],u=t[7],d=t[8],m=t[9],l=t[10],h=t[11],g=t[12],v=t[13],f=t[14],p=t[15],y=n*o-r*s,E=n*c-i*s,S=n*u-a*s,A=r*c-i*o,x=r*u-a*o,P=i*u-a*c,_=d*v-m*g,k=d*f-l*g,w=d*p-h*g,B=m*f-l*v,H=m*p-h*v,D=l*p-h*f,O=y*D-E*H+S*B+A*w-x*k+P*_;return O?(O=1/O,e[0]=(o*D-c*H+u*B)*O,e[1]=(i*H-r*D-a*B)*O,e[2]=(v*P-f*x+p*A)*O,e[3]=(l*x-m*P-h*A)*O,e[4]=(c*w-s*D-u*k)*O,e[5]=(n*D-i*w+a*k)*O,e[6]=(f*S-g*P-p*E)*O,e[7]=(d*P-l*S+h*E)*O,e[8]=(s*H-o*w+u*_)*O,e[9]=(r*w-n*H-a*_)*O,e[10]=(g*x-v*S+p*y)*O,e[11]=(m*S-d*x-h*y)*O,e[12]=(o*k-s*B-c*_)*O,e[13]=(n*B-r*k+i*_)*O,e[14]=(v*E-g*A-f*y)*O,e[15]=(d*A-m*E+l*y)*O,e):null}function Gu(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],c=t[6],u=t[7],d=t[8],m=t[9],l=t[10],h=t[11],g=t[12],v=t[13],f=t[14],p=t[15],y=n*o-r*s,E=n*c-i*s,S=n*u-a*s,A=r*c-i*o,x=r*u-a*o,P=i*u-a*c,_=d*v-m*g,k=d*f-l*g,w=d*p-h*g,B=m*f-l*v,H=m*p-h*v,D=l*p-h*f;return e[0]=o*D-c*H+u*B,e[1]=i*H-r*D-a*B,e[2]=v*P-f*x+p*A,e[3]=l*x-m*P-h*A,e[4]=c*w-s*D-u*k,e[5]=n*D-i*w+a*k,e[6]=f*S-g*P-p*E,e[7]=d*P-l*S+h*E,e[8]=s*H-o*w+u*_,e[9]=r*w-n*H-a*_,e[10]=g*x-v*S+p*y,e[11]=m*S-d*x-h*y,e[12]=o*k-s*B-c*_,e[13]=n*B-r*k+i*_,e[14]=v*E-g*A-f*y,e[15]=d*A-m*E+l*y,e}function Hu(e){var t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],s=e[5],o=e[6],c=e[7],u=e[8],d=e[9],m=e[10],l=e[11],h=e[12],g=e[13],v=e[14],f=e[15],p=t*s-n*a,y=t*o-r*a,E=n*o-r*s,S=u*g-d*h,A=u*v-m*h,x=d*v-m*g,P=t*x-n*A+r*S,_=a*x-s*A+o*S,k=u*E-d*y+m*p,w=h*E-g*y+v*p;return c*P-i*_+f*k-l*w}function Ka(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=t[4],c=t[5],u=t[6],d=t[7],m=t[8],l=t[9],h=t[10],g=t[11],v=t[12],f=t[13],p=t[14],y=t[15],E=n[0],S=n[1],A=n[2],x=n[3];return e[0]=E*r+S*o+A*m+x*v,e[1]=E*i+S*c+A*l+x*f,e[2]=E*a+S*u+A*h+x*p,e[3]=E*s+S*d+A*g+x*y,E=n[4],S=n[5],A=n[6],x=n[7],e[4]=E*r+S*o+A*m+x*v,e[5]=E*i+S*c+A*l+x*f,e[6]=E*a+S*u+A*h+x*p,e[7]=E*s+S*d+A*g+x*y,E=n[8],S=n[9],A=n[10],x=n[11],e[8]=E*r+S*o+A*m+x*v,e[9]=E*i+S*c+A*l+x*f,e[10]=E*a+S*u+A*h+x*p,e[11]=E*s+S*d+A*g+x*y,E=n[12],S=n[13],A=n[14],x=n[15],e[12]=E*r+S*o+A*m+x*v,e[13]=E*i+S*c+A*l+x*f,e[14]=E*a+S*u+A*h+x*p,e[15]=E*s+S*d+A*g+x*y,e}function Vu(e,t,n){var r=n[0],i=n[1],a=n[2],s,o,c,u,d,m,l,h,g,v,f,p;return t===e?(e[12]=t[0]*r+t[4]*i+t[8]*a+t[12],e[13]=t[1]*r+t[5]*i+t[9]*a+t[13],e[14]=t[2]*r+t[6]*i+t[10]*a+t[14],e[15]=t[3]*r+t[7]*i+t[11]*a+t[15]):(s=t[0],o=t[1],c=t[2],u=t[3],d=t[4],m=t[5],l=t[6],h=t[7],g=t[8],v=t[9],f=t[10],p=t[11],e[0]=s,e[1]=o,e[2]=c,e[3]=u,e[4]=d,e[5]=m,e[6]=l,e[7]=h,e[8]=g,e[9]=v,e[10]=f,e[11]=p,e[12]=s*r+d*i+g*a+t[12],e[13]=o*r+m*i+v*a+t[13],e[14]=c*r+l*i+f*a+t[14],e[15]=u*r+h*i+p*a+t[15]),e}function Wu(e,t,n){var r=n[0],i=n[1],a=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Ku(e,t,n,r){var i=r[0],a=r[1],s=r[2],o=Math.sqrt(i*i+a*a+s*s),c,u,d,m,l,h,g,v,f,p,y,E,S,A,x,P,_,k,w,B,H,D,O,re;return o<Y?null:(o=1/o,i*=o,a*=o,s*=o,c=Math.sin(n),u=Math.cos(n),d=1-u,m=t[0],l=t[1],h=t[2],g=t[3],v=t[4],f=t[5],p=t[6],y=t[7],E=t[8],S=t[9],A=t[10],x=t[11],P=i*i*d+u,_=a*i*d+s*c,k=s*i*d-a*c,w=i*a*d-s*c,B=a*a*d+u,H=s*a*d+i*c,D=i*s*d+a*c,O=a*s*d-i*c,re=s*s*d+u,e[0]=m*P+v*_+E*k,e[1]=l*P+f*_+S*k,e[2]=h*P+p*_+A*k,e[3]=g*P+y*_+x*k,e[4]=m*w+v*B+E*H,e[5]=l*w+f*B+S*H,e[6]=h*w+p*B+A*H,e[7]=g*w+y*B+x*H,e[8]=m*D+v*O+E*re,e[9]=l*D+f*O+S*re,e[10]=h*D+p*O+A*re,e[11]=g*D+y*O+x*re,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Xu(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[4],s=t[5],o=t[6],c=t[7],u=t[8],d=t[9],m=t[10],l=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+u*r,e[5]=s*i+d*r,e[6]=o*i+m*r,e[7]=c*i+l*r,e[8]=u*i-a*r,e[9]=d*i-s*r,e[10]=m*i-o*r,e[11]=l*i-c*r,e}function $u(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],c=t[3],u=t[8],d=t[9],m=t[10],l=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-u*r,e[1]=s*i-d*r,e[2]=o*i-m*r,e[3]=c*i-l*r,e[8]=a*r+u*i,e[9]=s*r+d*i,e[10]=o*r+m*i,e[11]=c*r+l*i,e}function Yu(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],c=t[3],u=t[4],d=t[5],m=t[6],l=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+u*r,e[1]=s*i+d*r,e[2]=o*i+m*r,e[3]=c*i+l*r,e[4]=u*i-a*r,e[5]=d*i-s*r,e[6]=m*i-o*r,e[7]=l*i-c*r,e}function ju(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function qu(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Zu(e,t,n){var r=n[0],i=n[1],a=n[2],s=Math.sqrt(r*r+i*i+a*a),o,c,u;return s<Y?null:(s=1/s,r*=s,i*=s,a*=s,o=Math.sin(t),c=Math.cos(t),u=1-c,e[0]=r*r*u+c,e[1]=i*r*u+a*o,e[2]=a*r*u-i*o,e[3]=0,e[4]=r*i*u-a*o,e[5]=i*i*u+c,e[6]=a*i*u+r*o,e[7]=0,e[8]=r*a*u+i*o,e[9]=i*a*u-r*o,e[10]=a*a*u+c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function Ju(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Qu(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function ed(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=r,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Xa(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=r+r,c=i+i,u=a+a,d=r*o,m=r*c,l=r*u,h=i*c,g=i*u,v=a*u,f=s*o,p=s*c,y=s*u;return e[0]=1-(h+v),e[1]=m+y,e[2]=l-p,e[3]=0,e[4]=m-y,e[5]=1-(d+v),e[6]=g+f,e[7]=0,e[8]=l+p,e[9]=g-f,e[10]=1-(d+h),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function td(e,t){var n=new we(3),r=-t[0],i=-t[1],a=-t[2],s=t[3],o=t[4],c=t[5],u=t[6],d=t[7],m=r*r+i*i+a*a+s*s;return m>0?(n[0]=(o*s+d*r+c*a-u*i)*2/m,n[1]=(c*s+d*i+u*r-o*a)*2/m,n[2]=(u*s+d*a+o*i-c*r)*2/m):(n[0]=(o*s+d*r+c*a-u*i)*2,n[1]=(c*s+d*i+u*r-o*a)*2,n[2]=(u*s+d*a+o*i-c*r)*2),Xa(e,t,n),e}function nd(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function $a(e,t){var n=t[0],r=t[1],i=t[2],a=t[4],s=t[5],o=t[6],c=t[8],u=t[9],d=t[10];return e[0]=Math.sqrt(n*n+r*r+i*i),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(c*c+u*u+d*d),e}function rd(e,t){var n=new we(3);$a(n,t);var r=1/n[0],i=1/n[1],a=1/n[2],s=t[0]*r,o=t[1]*i,c=t[2]*a,u=t[4]*r,d=t[5]*i,m=t[6]*a,l=t[8]*r,h=t[9]*i,g=t[10]*a,v=s+d+g,f=0;return v>0?(f=Math.sqrt(v+1)*2,e[3]=.25*f,e[0]=(m-h)/f,e[1]=(l-c)/f,e[2]=(o-u)/f):s>d&&s>g?(f=Math.sqrt(1+s-d-g)*2,e[3]=(m-h)/f,e[0]=.25*f,e[1]=(o+u)/f,e[2]=(l+c)/f):d>g?(f=Math.sqrt(1+d-s-g)*2,e[3]=(l-c)/f,e[0]=(o+u)/f,e[1]=.25*f,e[2]=(m+h)/f):(f=Math.sqrt(1+g-s-d)*2,e[3]=(o-u)/f,e[0]=(l+c)/f,e[1]=(m+h)/f,e[2]=.25*f),e}function id(e,t,n,r){t[0]=r[12],t[1]=r[13],t[2]=r[14];var i=r[0],a=r[1],s=r[2],o=r[4],c=r[5],u=r[6],d=r[8],m=r[9],l=r[10];n[0]=Math.sqrt(i*i+a*a+s*s),n[1]=Math.sqrt(o*o+c*c+u*u),n[2]=Math.sqrt(d*d+m*m+l*l);var h=1/n[0],g=1/n[1],v=1/n[2],f=i*h,p=a*g,y=s*v,E=o*h,S=c*g,A=u*v,x=d*h,P=m*g,_=l*v,k=f+S+_,w=0;return k>0?(w=Math.sqrt(k+1)*2,e[3]=.25*w,e[0]=(A-P)/w,e[1]=(x-y)/w,e[2]=(p-E)/w):f>S&&f>_?(w=Math.sqrt(1+f-S-_)*2,e[3]=(A-P)/w,e[0]=.25*w,e[1]=(p+E)/w,e[2]=(x+y)/w):S>_?(w=Math.sqrt(1+S-f-_)*2,e[3]=(x-y)/w,e[0]=(p+E)/w,e[1]=.25*w,e[2]=(A+P)/w):(w=Math.sqrt(1+_-f-S)*2,e[3]=(p-E)/w,e[0]=(x+y)/w,e[1]=(A+P)/w,e[2]=.25*w),e}function ad(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=t[3],c=i+i,u=a+a,d=s+s,m=i*c,l=i*u,h=i*d,g=a*u,v=a*d,f=s*d,p=o*c,y=o*u,E=o*d,S=r[0],A=r[1],x=r[2];return e[0]=(1-(g+f))*S,e[1]=(l+E)*S,e[2]=(h-y)*S,e[3]=0,e[4]=(l-E)*A,e[5]=(1-(m+f))*A,e[6]=(v+p)*A,e[7]=0,e[8]=(h+y)*x,e[9]=(v-p)*x,e[10]=(1-(m+g))*x,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function sd(e,t,n,r,i){var a=t[0],s=t[1],o=t[2],c=t[3],u=a+a,d=s+s,m=o+o,l=a*u,h=a*d,g=a*m,v=s*d,f=s*m,p=o*m,y=c*u,E=c*d,S=c*m,A=r[0],x=r[1],P=r[2],_=i[0],k=i[1],w=i[2],B=(1-(v+p))*A,H=(h+S)*A,D=(g-E)*A,O=(h-S)*x,re=(1-(l+p))*x,xe=(f+y)*x,Qe=(g+E)*P,ln=(f-y)*P,Pe=(1-(l+v))*P;return e[0]=B,e[1]=H,e[2]=D,e[3]=0,e[4]=O,e[5]=re,e[6]=xe,e[7]=0,e[8]=Qe,e[9]=ln,e[10]=Pe,e[11]=0,e[12]=n[0]+_-(B*_+O*k+Qe*w),e[13]=n[1]+k-(H*_+re*k+ln*w),e[14]=n[2]+w-(D*_+xe*k+Pe*w),e[15]=1,e}function od(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=n+n,o=r+r,c=i+i,u=n*s,d=r*s,m=r*o,l=i*s,h=i*o,g=i*c,v=a*s,f=a*o,p=a*c;return e[0]=1-m-g,e[1]=d+p,e[2]=l-f,e[3]=0,e[4]=d-p,e[5]=1-u-g,e[6]=h+v,e[7]=0,e[8]=l+f,e[9]=h-v,e[10]=1-u-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function cd(e,t,n,r,i,a,s){var o=1/(n-t),c=1/(i-r),u=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*c,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(i+r)*c,e[10]=(s+a)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*u,e[15]=0,e}function Ya(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=(i+r)*s,e[14]=2*i*r*s}else e[10]=-1,e[14]=-2*r;return e}var ud=Ya;function dd(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=i*s,e[14]=i*r*s}else e[10]=-1,e[14]=-r;return e}function md(e,t,n,r){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),c=2/(s+o),u=2/(i+a);return e[0]=c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=u,e[6]=0,e[7]=0,e[8]=-((s-o)*c*.5),e[9]=(i-a)*u*.5,e[10]=r/(n-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*n/(n-r),e[15]=0,e}function ja(e,t,n,r,i,a,s){var o=1/(t-n),c=1/(r-i),u=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*c,e[14]=(s+a)*u,e[15]=1,e}var ld=ja;function hd(e,t,n,r,i,a,s){var o=1/(t-n),c=1/(r-i),u=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=u,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*c,e[14]=a*u,e[15]=1,e}function fd(e,t,n,r){var i,a,s,o,c,u,d,m,l,h,g=t[0],v=t[1],f=t[2],p=r[0],y=r[1],E=r[2],S=n[0],A=n[1],x=n[2];return Math.abs(g-S)<Y&&Math.abs(v-A)<Y&&Math.abs(f-x)<Y?Wa(e):(d=g-S,m=v-A,l=f-x,h=1/Math.sqrt(d*d+m*m+l*l),d*=h,m*=h,l*=h,i=y*l-E*m,a=E*d-p*l,s=p*m-y*d,h=Math.sqrt(i*i+a*a+s*s),h?(h=1/h,i*=h,a*=h,s*=h):(i=0,a=0,s=0),o=m*s-l*a,c=l*i-d*s,u=d*a-m*i,h=Math.sqrt(o*o+c*c+u*u),h?(h=1/h,o*=h,c*=h,u*=h):(o=0,c=0,u=0),e[0]=i,e[1]=o,e[2]=d,e[3]=0,e[4]=a,e[5]=c,e[6]=m,e[7]=0,e[8]=s,e[9]=u,e[10]=l,e[11]=0,e[12]=-(i*g+a*v+s*f),e[13]=-(o*g+c*v+u*f),e[14]=-(d*g+m*v+l*f),e[15]=1,e)}function gd(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=r[0],c=r[1],u=r[2],d=i-n[0],m=a-n[1],l=s-n[2],h=d*d+m*m+l*l;h>0&&(h=1/Math.sqrt(h),d*=h,m*=h,l*=h);var g=c*l-u*m,v=u*d-o*l,f=o*m-c*d;return h=g*g+v*v+f*f,h>0&&(h=1/Math.sqrt(h),g*=h,v*=h,f*=h),e[0]=g,e[1]=v,e[2]=f,e[3]=0,e[4]=m*f-l*v,e[5]=l*g-d*f,e[6]=d*v-m*g,e[7]=0,e[8]=d,e[9]=m,e[10]=l,e[11]=0,e[12]=i,e[13]=a,e[14]=s,e[15]=1,e}function _d(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function pd(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function vd(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function qa(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function yd(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function Sd(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[3]=t[3]+n[3]*r,e[4]=t[4]+n[4]*r,e[5]=t[5]+n[5]*r,e[6]=t[6]+n[6]*r,e[7]=t[7]+n[7]*r,e[8]=t[8]+n[8]*r,e[9]=t[9]+n[9]*r,e[10]=t[10]+n[10]*r,e[11]=t[11]+n[11]*r,e[12]=t[12]+n[12]*r,e[13]=t[13]+n[13]*r,e[14]=t[14]+n[14]*r,e[15]=t[15]+n[15]*r,e}function wd(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function xd(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],s=e[4],o=e[5],c=e[6],u=e[7],d=e[8],m=e[9],l=e[10],h=e[11],g=e[12],v=e[13],f=e[14],p=e[15],y=t[0],E=t[1],S=t[2],A=t[3],x=t[4],P=t[5],_=t[6],k=t[7],w=t[8],B=t[9],H=t[10],D=t[11],O=t[12],re=t[13],xe=t[14],Qe=t[15];return Math.abs(n-y)<=Y*Math.max(1,Math.abs(n),Math.abs(y))&&Math.abs(r-E)<=Y*Math.max(1,Math.abs(r),Math.abs(E))&&Math.abs(i-S)<=Y*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(a-A)<=Y*Math.max(1,Math.abs(a),Math.abs(A))&&Math.abs(s-x)<=Y*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(o-P)<=Y*Math.max(1,Math.abs(o),Math.abs(P))&&Math.abs(c-_)<=Y*Math.max(1,Math.abs(c),Math.abs(_))&&Math.abs(u-k)<=Y*Math.max(1,Math.abs(u),Math.abs(k))&&Math.abs(d-w)<=Y*Math.max(1,Math.abs(d),Math.abs(w))&&Math.abs(m-B)<=Y*Math.max(1,Math.abs(m),Math.abs(B))&&Math.abs(l-H)<=Y*Math.max(1,Math.abs(l),Math.abs(H))&&Math.abs(h-D)<=Y*Math.max(1,Math.abs(h),Math.abs(D))&&Math.abs(g-O)<=Y*Math.max(1,Math.abs(g),Math.abs(O))&&Math.abs(v-re)<=Y*Math.max(1,Math.abs(v),Math.abs(re))&&Math.abs(f-xe)<=Y*Math.max(1,Math.abs(f),Math.abs(xe))&&Math.abs(p-Qe)<=Y*Math.max(1,Math.abs(p),Math.abs(Qe))}var Ad=Ka,Ed=qa;var q={};br(q,{add:()=>Rd,angle:()=>Jd,bezier:()=>Wd,ceil:()=>zd,clone:()=>kd,copy:()=>Md,create:()=>Za,cross:()=>Bd,dist:()=>sm,distance:()=>ns,div:()=>am,divide:()=>ts,dot:()=>zr,equals:()=>nm,exactEquals:()=>tm,floor:()=>Ld,forEach:()=>dm,fromValues:()=>Td,hermite:()=>Vd,inverse:()=>Fd,len:()=>cm,length:()=>Ja,lerp:()=>Gd,max:()=>Od,min:()=>Nd,mul:()=>im,multiply:()=>es,negate:()=>Dd,normalize:()=>Ud,random:()=>Kd,rotateX:()=>jd,rotateY:()=>qd,rotateZ:()=>Zd,round:()=>Id,scale:()=>Cd,scaleAndAdd:()=>Pd,set:()=>bd,slerp:()=>Hd,sqrDist:()=>om,sqrLen:()=>um,squaredDistance:()=>rs,squaredLength:()=>is,str:()=>em,sub:()=>rm,subtract:()=>Qa,transformMat3:()=>$d,transformMat4:()=>Xd,transformQuat:()=>Yd,zero:()=>Qd});function Za(){var e=new we(3);return we!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function kd(e){var t=new we(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Ja(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function Td(e,t,n){var r=new we(3);return r[0]=e,r[1]=t,r[2]=n,r}function Md(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function bd(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function Rd(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function Qa(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function es(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function ts(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function zd(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Ld(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Nd(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 Od(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 Id(e,t){return e[0]=hn(t[0]),e[1]=hn(t[1]),e[2]=hn(t[2]),e}function Cd(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Pd(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 ns(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 rs(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 is(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function Dd(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Fd(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Ud(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 zr(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Bd(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 Gd(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 Hd(e,t,n,r){var i=Math.acos(Math.min(Math.max(zr(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 Vd(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 Wd(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 Kd(e,t){t=t===void 0?1:t;var n=Rr()*2*Math.PI,r=Rr()*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 Xd(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 $d(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 Yd(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 jd(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 qd(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 Zd(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 Jd(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&&zr(e,t)/c;return Math.acos(Math.min(Math.max(u,-1),1))}function Qd(e){return e[0]=0,e[1]=0,e[2]=0,e}function em(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function tm(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function nm(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)<=Y*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=Y*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=Y*Math.max(1,Math.abs(i),Math.abs(o))}var rm=Qa,im=es,am=ts,sm=ns,om=rs,cm=Ja,um=is,dm=(function(){var e=Za();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 mm=Object.defineProperty,ss=(e,t)=>{for(var n in t)mm(e,n,{get:t[n],enumerable:!0})};var tE=Math.PI/180;var lm=Math.PI/180,nE=180/Math.PI,Ot=lm,hm=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var ze=1,Ve=2;var Ir=8,Cr=16,fm=32;var gm=16384;var Sn=65536,os=1<<17,_m=1<<18,pm=1<<19,vm=1<<20,ym=1<<21,Sm=1<<22,wm=1<<23,rE=1<<24,wn=1<<25,xm=1<<26,iE=1<<27,aE=1<<28,sE=1<<29,xn=1<<30,oE=1<<31;var cE=1<<25,uE=1<<28,dE=1<<29,mE=1<<30,lE=1<<31,hE=ze|Ve,fE=ze|Sn|Ve|wn|xn,gE=ze|Sn|Ve,_E=ze|os|Ve|wn|xn,pE=fm|Ir|Cr,vE=ze|Cr|Ir,Am=ze|wn|xn|Ve|xm,yE=_m|pm|vm|ym|Sm|wm,SE=ze|Ir|Cr|wn|xn,wE=ze|Sn|Ve,xE=ze|Ve,AE=ze|Sn|Ve|os,EE=Am|gm,kE=Number.MAX_SAFE_INTEGER-1;var cs=256,Em=256,km=8192,Tm=2048,Mm=512,bm=256,Rm=cs*2,zm=256,Lr=32;var us=(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+km]="Sounds",e[e.Images=e.Sounds+Tm]="Images",e[e.Lights=e.Images+Mm]="Lights",e[e.ShadowLights=e.Lights+Em]="ShadowLights",e[e.Items=e.ShadowLights+zm]="Items",e[e.PlayerSkins=e.Items+bm]="PlayerSkins",e[e.General=e.PlayerSkins+cs]="General",e[e.WheelWeapons=e.General+Rm]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Lr]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Lr]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Lr]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(us||{}),TE=us.MaxConfigStrings;var Lm={};ss(Lm,{addReplayFrame:()=>Cm,createReplaySession:()=>Im,deserializeReplay:()=>Om,serializeReplay:()=>Nm});function Nm(e){return JSON.stringify(e,null,2)}function Om(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 Im(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Cm(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var V=(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))(V||{}),M=(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))(M||{}),Pm=12,Dm=9,ME=Math.ceil(Pm*Dm/16),Fm=23,Um=2,bE=Math.ceil(Fm*Um/16),Bm={};ss(Bm,{U_ANGLE1:()=>$m,U_ANGLE2:()=>Ym,U_ANGLE3:()=>jm,U_EFFECTS:()=>Jm,U_EVENT:()=>tl,U_FRAME:()=>qm,U_MODEL:()=>Hm,U_MODEL2:()=>rl,U_MODEL3:()=>il,U_MODEL4:()=>al,U_MOREBITS:()=>nl,U_NUMBER:()=>Gm,U_ORIGIN1:()=>Wm,U_ORIGIN2:()=>Km,U_ORIGIN3:()=>Xm,U_REMOVE:()=>sl,U_RENDERFX:()=>Qm,U_SKIN:()=>Zm,U_SOLID:()=>el,U_SOUND:()=>Vm});var Gm=1,Hm=2,Vm=4,Wm=8,Km=16,Xm=32,$m=64,Ym=128,jm=256,qm=512,Zm=1024,Jm=2048,Qm=4096,el=8192,tl=16384,nl=32768,rl=1,il=2,al=4,sl=32768,ol=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=hm[t];e.x=n[0],e.y=n[1],e.z=n[2]}},ds=(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))(ds||{}),RE=Object.keys(ds).length/2;function cl(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let r=0;r<8;r+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var zE=cl();var LE=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var ul=19,NE=8+ul*8;var Or=4,Nr=7*Or,OE=[{index:0,size:3,type:5126,stride:Nr,offset:0},{index:1,size:2,type:5126,stride:Nr,offset:3*Or},{index:2,size:2,type:5126,stride:Nr,offset:5*Or}];var ms=32;var IE=`#version 300 es
|
|
1
|
+
"use strict";var Quake2Client=(()=>{var Rr=Object.defineProperty;var Lu=Object.getOwnPropertyDescriptor;var Nu=Object.getOwnPropertyNames;var Ou=Object.prototype.hasOwnProperty;var zr=(e,t)=>{for(var n in t)Rr(e,n,{get:t[n],enumerable:!0})},Iu=(e,t,n,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let i of Nu(t))!Ou.call(e,i)&&i!==n&&Rr(e,i,{get:()=>t[i],enumerable:!(r=Lu(t,i))||r.enumerable});return e};var Cu=e=>Iu(Rr({},"__esModule",{value:!0}),e);var sE={};zr(sE,{ClientConfigStrings:()=>Lt,ClientPrediction:()=>In,InputAction:()=>Tr,InputBindings:()=>st,InputCommandBuffer:()=>Mr,InputController:()=>Nt,ViewEffects:()=>On,createClient:()=>aE,createDefaultBindings:()=>zu,interpolatePredictionState:()=>ht,normalizeCommand:()=>ln,normalizeInputCode:()=>Ba});var Y=1e-6,we=typeof Float32Array<"u"?Float32Array:Array,Lr=Math.random;function gn(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var cE=Math.PI/180,uE=180/Math.PI;var j={};zr(j,{add:()=>Sd,adjoint:()=>Vu,clone:()=>Du,copy:()=>Fu,create:()=>Pu,decompose:()=>sd,determinant:()=>Wu,equals:()=>Ed,exactEquals:()=>Ad,frob:()=>yd,fromQuat:()=>ud,fromQuat2:()=>rd,fromRotation:()=>Qu,fromRotationTranslation:()=>$a,fromRotationTranslationScale:()=>od,fromRotationTranslationScaleOrigin:()=>cd,fromScaling:()=>Ju,fromTranslation:()=>Zu,fromValues:()=>Uu,fromXRotation:()=>ed,fromYRotation:()=>td,fromZRotation:()=>nd,frustum:()=>dd,getRotation:()=>ad,getScaling:()=>Ya,getTranslation:()=>id,identity:()=>Ka,invert:()=>Hu,lookAt:()=>_d,mul:()=>kd,multiply:()=>Xa,multiplyScalar:()=>wd,multiplyScalarAndAdd:()=>xd,ortho:()=>fd,orthoNO:()=>qa,orthoZO:()=>gd,perspective:()=>md,perspectiveFromFieldOfView:()=>hd,perspectiveNO:()=>ja,perspectiveZO:()=>ld,rotate:()=>$u,rotateX:()=>Yu,rotateY:()=>ju,rotateZ:()=>qu,scale:()=>Xu,set:()=>Bu,str:()=>vd,sub:()=>Td,subtract:()=>Za,targetTo:()=>pd,translate:()=>Ku,transpose:()=>Gu});function Pu(){var e=new we(16);return we!=Float32Array&&(e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=0,e[12]=0,e[13]=0,e[14]=0),e[0]=1,e[5]=1,e[10]=1,e[15]=1,e}function Du(e){var t=new we(16);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t[3]=e[3],t[4]=e[4],t[5]=e[5],t[6]=e[6],t[7]=e[7],t[8]=e[8],t[9]=e[9],t[10]=e[10],t[11]=e[11],t[12]=e[12],t[13]=e[13],t[14]=e[14],t[15]=e[15],t}function Fu(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function Uu(e,t,n,r,i,a,s,o,c,u,d,m,l,h,g,v){var f=new we(16);return f[0]=e,f[1]=t,f[2]=n,f[3]=r,f[4]=i,f[5]=a,f[6]=s,f[7]=o,f[8]=c,f[9]=u,f[10]=d,f[11]=m,f[12]=l,f[13]=h,f[14]=g,f[15]=v,f}function Bu(e,t,n,r,i,a,s,o,c,u,d,m,l,h,g,v,f){return e[0]=t,e[1]=n,e[2]=r,e[3]=i,e[4]=a,e[5]=s,e[6]=o,e[7]=c,e[8]=u,e[9]=d,e[10]=m,e[11]=l,e[12]=h,e[13]=g,e[14]=v,e[15]=f,e}function Ka(e){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Gu(e,t){if(e===t){var n=t[1],r=t[2],i=t[3],a=t[6],s=t[7],o=t[11];e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=n,e[6]=t[9],e[7]=t[13],e[8]=r,e[9]=a,e[11]=t[14],e[12]=i,e[13]=s,e[14]=o}else e[0]=t[0],e[1]=t[4],e[2]=t[8],e[3]=t[12],e[4]=t[1],e[5]=t[5],e[6]=t[9],e[7]=t[13],e[8]=t[2],e[9]=t[6],e[10]=t[10],e[11]=t[14],e[12]=t[3],e[13]=t[7],e[14]=t[11],e[15]=t[15];return e}function Hu(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],c=t[6],u=t[7],d=t[8],m=t[9],l=t[10],h=t[11],g=t[12],v=t[13],f=t[14],p=t[15],y=n*o-r*s,E=n*c-i*s,S=n*u-a*s,A=r*c-i*o,x=r*u-a*o,P=i*u-a*c,_=d*v-m*g,k=d*f-l*g,w=d*p-h*g,B=m*f-l*v,V=m*p-h*v,D=l*p-h*f,O=y*D-E*V+S*B+A*w-x*k+P*_;return O?(O=1/O,e[0]=(o*D-c*V+u*B)*O,e[1]=(i*V-r*D-a*B)*O,e[2]=(v*P-f*x+p*A)*O,e[3]=(l*x-m*P-h*A)*O,e[4]=(c*w-s*D-u*k)*O,e[5]=(n*D-i*w+a*k)*O,e[6]=(f*S-g*P-p*E)*O,e[7]=(d*P-l*S+h*E)*O,e[8]=(s*V-o*w+u*_)*O,e[9]=(r*w-n*V-a*_)*O,e[10]=(g*x-v*S+p*y)*O,e[11]=(m*S-d*x-h*y)*O,e[12]=(o*k-s*B-c*_)*O,e[13]=(n*B-r*k+i*_)*O,e[14]=(v*E-g*A-f*y)*O,e[15]=(d*A-m*E+l*y)*O,e):null}function Vu(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=t[4],o=t[5],c=t[6],u=t[7],d=t[8],m=t[9],l=t[10],h=t[11],g=t[12],v=t[13],f=t[14],p=t[15],y=n*o-r*s,E=n*c-i*s,S=n*u-a*s,A=r*c-i*o,x=r*u-a*o,P=i*u-a*c,_=d*v-m*g,k=d*f-l*g,w=d*p-h*g,B=m*f-l*v,V=m*p-h*v,D=l*p-h*f;return e[0]=o*D-c*V+u*B,e[1]=i*V-r*D-a*B,e[2]=v*P-f*x+p*A,e[3]=l*x-m*P-h*A,e[4]=c*w-s*D-u*k,e[5]=n*D-i*w+a*k,e[6]=f*S-g*P-p*E,e[7]=d*P-l*S+h*E,e[8]=s*V-o*w+u*_,e[9]=r*w-n*V-a*_,e[10]=g*x-v*S+p*y,e[11]=m*S-d*x-h*y,e[12]=o*k-s*B-c*_,e[13]=n*B-r*k+i*_,e[14]=v*E-g*A-f*y,e[15]=d*A-m*E+l*y,e}function Wu(e){var t=e[0],n=e[1],r=e[2],i=e[3],a=e[4],s=e[5],o=e[6],c=e[7],u=e[8],d=e[9],m=e[10],l=e[11],h=e[12],g=e[13],v=e[14],f=e[15],p=t*s-n*a,y=t*o-r*a,E=n*o-r*s,S=u*g-d*h,A=u*v-m*h,x=d*v-m*g,P=t*x-n*A+r*S,_=a*x-s*A+o*S,k=u*E-d*y+m*p,w=h*E-g*y+v*p;return c*P-i*_+f*k-l*w}function Xa(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=t[4],c=t[5],u=t[6],d=t[7],m=t[8],l=t[9],h=t[10],g=t[11],v=t[12],f=t[13],p=t[14],y=t[15],E=n[0],S=n[1],A=n[2],x=n[3];return e[0]=E*r+S*o+A*m+x*v,e[1]=E*i+S*c+A*l+x*f,e[2]=E*a+S*u+A*h+x*p,e[3]=E*s+S*d+A*g+x*y,E=n[4],S=n[5],A=n[6],x=n[7],e[4]=E*r+S*o+A*m+x*v,e[5]=E*i+S*c+A*l+x*f,e[6]=E*a+S*u+A*h+x*p,e[7]=E*s+S*d+A*g+x*y,E=n[8],S=n[9],A=n[10],x=n[11],e[8]=E*r+S*o+A*m+x*v,e[9]=E*i+S*c+A*l+x*f,e[10]=E*a+S*u+A*h+x*p,e[11]=E*s+S*d+A*g+x*y,E=n[12],S=n[13],A=n[14],x=n[15],e[12]=E*r+S*o+A*m+x*v,e[13]=E*i+S*c+A*l+x*f,e[14]=E*a+S*u+A*h+x*p,e[15]=E*s+S*d+A*g+x*y,e}function Ku(e,t,n){var r=n[0],i=n[1],a=n[2],s,o,c,u,d,m,l,h,g,v,f,p;return t===e?(e[12]=t[0]*r+t[4]*i+t[8]*a+t[12],e[13]=t[1]*r+t[5]*i+t[9]*a+t[13],e[14]=t[2]*r+t[6]*i+t[10]*a+t[14],e[15]=t[3]*r+t[7]*i+t[11]*a+t[15]):(s=t[0],o=t[1],c=t[2],u=t[3],d=t[4],m=t[5],l=t[6],h=t[7],g=t[8],v=t[9],f=t[10],p=t[11],e[0]=s,e[1]=o,e[2]=c,e[3]=u,e[4]=d,e[5]=m,e[6]=l,e[7]=h,e[8]=g,e[9]=v,e[10]=f,e[11]=p,e[12]=s*r+d*i+g*a+t[12],e[13]=o*r+m*i+v*a+t[13],e[14]=c*r+l*i+f*a+t[14],e[15]=u*r+h*i+p*a+t[15]),e}function Xu(e,t,n){var r=n[0],i=n[1],a=n[2];return e[0]=t[0]*r,e[1]=t[1]*r,e[2]=t[2]*r,e[3]=t[3]*r,e[4]=t[4]*i,e[5]=t[5]*i,e[6]=t[6]*i,e[7]=t[7]*i,e[8]=t[8]*a,e[9]=t[9]*a,e[10]=t[10]*a,e[11]=t[11]*a,e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15],e}function $u(e,t,n,r){var i=r[0],a=r[1],s=r[2],o=Math.sqrt(i*i+a*a+s*s),c,u,d,m,l,h,g,v,f,p,y,E,S,A,x,P,_,k,w,B,V,D,O,re;return o<Y?null:(o=1/o,i*=o,a*=o,s*=o,c=Math.sin(n),u=Math.cos(n),d=1-u,m=t[0],l=t[1],h=t[2],g=t[3],v=t[4],f=t[5],p=t[6],y=t[7],E=t[8],S=t[9],A=t[10],x=t[11],P=i*i*d+u,_=a*i*d+s*c,k=s*i*d-a*c,w=i*a*d-s*c,B=a*a*d+u,V=s*a*d+i*c,D=i*s*d+a*c,O=a*s*d-i*c,re=s*s*d+u,e[0]=m*P+v*_+E*k,e[1]=l*P+f*_+S*k,e[2]=h*P+p*_+A*k,e[3]=g*P+y*_+x*k,e[4]=m*w+v*B+E*V,e[5]=l*w+f*B+S*V,e[6]=h*w+p*B+A*V,e[7]=g*w+y*B+x*V,e[8]=m*D+v*O+E*re,e[9]=l*D+f*O+S*re,e[10]=h*D+p*O+A*re,e[11]=g*D+y*O+x*re,t!==e&&(e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e)}function Yu(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[4],s=t[5],o=t[6],c=t[7],u=t[8],d=t[9],m=t[10],l=t[11];return t!==e&&(e[0]=t[0],e[1]=t[1],e[2]=t[2],e[3]=t[3],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[4]=a*i+u*r,e[5]=s*i+d*r,e[6]=o*i+m*r,e[7]=c*i+l*r,e[8]=u*i-a*r,e[9]=d*i-s*r,e[10]=m*i-o*r,e[11]=l*i-c*r,e}function ju(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],c=t[3],u=t[8],d=t[9],m=t[10],l=t[11];return t!==e&&(e[4]=t[4],e[5]=t[5],e[6]=t[6],e[7]=t[7],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i-u*r,e[1]=s*i-d*r,e[2]=o*i-m*r,e[3]=c*i-l*r,e[8]=a*r+u*i,e[9]=s*r+d*i,e[10]=o*r+m*i,e[11]=c*r+l*i,e}function qu(e,t,n){var r=Math.sin(n),i=Math.cos(n),a=t[0],s=t[1],o=t[2],c=t[3],u=t[4],d=t[5],m=t[6],l=t[7];return t!==e&&(e[8]=t[8],e[9]=t[9],e[10]=t[10],e[11]=t[11],e[12]=t[12],e[13]=t[13],e[14]=t[14],e[15]=t[15]),e[0]=a*i+u*r,e[1]=s*i+d*r,e[2]=o*i+m*r,e[3]=c*i+l*r,e[4]=u*i-a*r,e[5]=d*i-s*r,e[6]=m*i-o*r,e[7]=l*i-c*r,e}function Zu(e,t){return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=t[0],e[13]=t[1],e[14]=t[2],e[15]=1,e}function Ju(e,t){return e[0]=t[0],e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=t[1],e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=t[2],e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function Qu(e,t,n){var r=n[0],i=n[1],a=n[2],s=Math.sqrt(r*r+i*i+a*a),o,c,u;return s<Y?null:(s=1/s,r*=s,i*=s,a*=s,o=Math.sin(t),c=Math.cos(t),u=1-c,e[0]=r*r*u+c,e[1]=i*r*u+a*o,e[2]=a*r*u-i*o,e[3]=0,e[4]=r*i*u-a*o,e[5]=i*i*u+c,e[6]=a*i*u+r*o,e[7]=0,e[8]=r*a*u+i*o,e[9]=i*a*u-r*o,e[10]=a*a*u+c,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e)}function ed(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=1,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=r,e[6]=n,e[7]=0,e[8]=0,e[9]=-n,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function td(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=0,e[2]=-n,e[3]=0,e[4]=0,e[5]=1,e[6]=0,e[7]=0,e[8]=n,e[9]=0,e[10]=r,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function nd(e,t){var n=Math.sin(t),r=Math.cos(t);return e[0]=r,e[1]=n,e[2]=0,e[3]=0,e[4]=-n,e[5]=r,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=1,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function $a(e,t,n){var r=t[0],i=t[1],a=t[2],s=t[3],o=r+r,c=i+i,u=a+a,d=r*o,m=r*c,l=r*u,h=i*c,g=i*u,v=a*u,f=s*o,p=s*c,y=s*u;return e[0]=1-(h+v),e[1]=m+y,e[2]=l-p,e[3]=0,e[4]=m-y,e[5]=1-(d+v),e[6]=g+f,e[7]=0,e[8]=l+p,e[9]=g-f,e[10]=1-(d+h),e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function rd(e,t){var n=new we(3),r=-t[0],i=-t[1],a=-t[2],s=t[3],o=t[4],c=t[5],u=t[6],d=t[7],m=r*r+i*i+a*a+s*s;return m>0?(n[0]=(o*s+d*r+c*a-u*i)*2/m,n[1]=(c*s+d*i+u*r-o*a)*2/m,n[2]=(u*s+d*a+o*i-c*r)*2/m):(n[0]=(o*s+d*r+c*a-u*i)*2,n[1]=(c*s+d*i+u*r-o*a)*2,n[2]=(u*s+d*a+o*i-c*r)*2),$a(e,t,n),e}function id(e,t){return e[0]=t[12],e[1]=t[13],e[2]=t[14],e}function Ya(e,t){var n=t[0],r=t[1],i=t[2],a=t[4],s=t[5],o=t[6],c=t[8],u=t[9],d=t[10];return e[0]=Math.sqrt(n*n+r*r+i*i),e[1]=Math.sqrt(a*a+s*s+o*o),e[2]=Math.sqrt(c*c+u*u+d*d),e}function ad(e,t){var n=new we(3);Ya(n,t);var r=1/n[0],i=1/n[1],a=1/n[2],s=t[0]*r,o=t[1]*i,c=t[2]*a,u=t[4]*r,d=t[5]*i,m=t[6]*a,l=t[8]*r,h=t[9]*i,g=t[10]*a,v=s+d+g,f=0;return v>0?(f=Math.sqrt(v+1)*2,e[3]=.25*f,e[0]=(m-h)/f,e[1]=(l-c)/f,e[2]=(o-u)/f):s>d&&s>g?(f=Math.sqrt(1+s-d-g)*2,e[3]=(m-h)/f,e[0]=.25*f,e[1]=(o+u)/f,e[2]=(l+c)/f):d>g?(f=Math.sqrt(1+d-s-g)*2,e[3]=(l-c)/f,e[0]=(o+u)/f,e[1]=.25*f,e[2]=(m+h)/f):(f=Math.sqrt(1+g-s-d)*2,e[3]=(o-u)/f,e[0]=(l+c)/f,e[1]=(m+h)/f,e[2]=.25*f),e}function sd(e,t,n,r){t[0]=r[12],t[1]=r[13],t[2]=r[14];var i=r[0],a=r[1],s=r[2],o=r[4],c=r[5],u=r[6],d=r[8],m=r[9],l=r[10];n[0]=Math.sqrt(i*i+a*a+s*s),n[1]=Math.sqrt(o*o+c*c+u*u),n[2]=Math.sqrt(d*d+m*m+l*l);var h=1/n[0],g=1/n[1],v=1/n[2],f=i*h,p=a*g,y=s*v,E=o*h,S=c*g,A=u*v,x=d*h,P=m*g,_=l*v,k=f+S+_,w=0;return k>0?(w=Math.sqrt(k+1)*2,e[3]=.25*w,e[0]=(A-P)/w,e[1]=(x-y)/w,e[2]=(p-E)/w):f>S&&f>_?(w=Math.sqrt(1+f-S-_)*2,e[3]=(A-P)/w,e[0]=.25*w,e[1]=(p+E)/w,e[2]=(x+y)/w):S>_?(w=Math.sqrt(1+S-f-_)*2,e[3]=(x-y)/w,e[0]=(p+E)/w,e[1]=.25*w,e[2]=(A+P)/w):(w=Math.sqrt(1+_-f-S)*2,e[3]=(p-E)/w,e[0]=(x+y)/w,e[1]=(A+P)/w,e[2]=.25*w),e}function od(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=t[3],c=i+i,u=a+a,d=s+s,m=i*c,l=i*u,h=i*d,g=a*u,v=a*d,f=s*d,p=o*c,y=o*u,E=o*d,S=r[0],A=r[1],x=r[2];return e[0]=(1-(g+f))*S,e[1]=(l+E)*S,e[2]=(h-y)*S,e[3]=0,e[4]=(l-E)*A,e[5]=(1-(m+f))*A,e[6]=(v+p)*A,e[7]=0,e[8]=(h+y)*x,e[9]=(v-p)*x,e[10]=(1-(m+g))*x,e[11]=0,e[12]=n[0],e[13]=n[1],e[14]=n[2],e[15]=1,e}function cd(e,t,n,r,i){var a=t[0],s=t[1],o=t[2],c=t[3],u=a+a,d=s+s,m=o+o,l=a*u,h=a*d,g=a*m,v=s*d,f=s*m,p=o*m,y=c*u,E=c*d,S=c*m,A=r[0],x=r[1],P=r[2],_=i[0],k=i[1],w=i[2],B=(1-(v+p))*A,V=(h+S)*A,D=(g-E)*A,O=(h-S)*x,re=(1-(l+p))*x,xe=(f+y)*x,Qe=(g+E)*P,fn=(f-y)*P,Pe=(1-(l+v))*P;return e[0]=B,e[1]=V,e[2]=D,e[3]=0,e[4]=O,e[5]=re,e[6]=xe,e[7]=0,e[8]=Qe,e[9]=fn,e[10]=Pe,e[11]=0,e[12]=n[0]+_-(B*_+O*k+Qe*w),e[13]=n[1]+k-(V*_+re*k+fn*w),e[14]=n[2]+w-(D*_+xe*k+Pe*w),e[15]=1,e}function ud(e,t){var n=t[0],r=t[1],i=t[2],a=t[3],s=n+n,o=r+r,c=i+i,u=n*s,d=r*s,m=r*o,l=i*s,h=i*o,g=i*c,v=a*s,f=a*o,p=a*c;return e[0]=1-m-g,e[1]=d+p,e[2]=l-f,e[3]=0,e[4]=d-p,e[5]=1-u-g,e[6]=h+v,e[7]=0,e[8]=l+f,e[9]=h-v,e[10]=1-u-m,e[11]=0,e[12]=0,e[13]=0,e[14]=0,e[15]=1,e}function dd(e,t,n,r,i,a,s){var o=1/(n-t),c=1/(i-r),u=1/(a-s);return e[0]=a*2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a*2*c,e[6]=0,e[7]=0,e[8]=(n+t)*o,e[9]=(i+r)*c,e[10]=(s+a)*u,e[11]=-1,e[12]=0,e[13]=0,e[14]=s*a*2*u,e[15]=0,e}function ja(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=(i+r)*s,e[14]=2*i*r*s}else e[10]=-1,e[14]=-2*r;return e}var md=ja;function ld(e,t,n,r,i){var a=1/Math.tan(t/2);if(e[0]=a/n,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=a,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[11]=-1,e[12]=0,e[13]=0,e[15]=0,i!=null&&i!==1/0){var s=1/(r-i);e[10]=i*s,e[14]=i*r*s}else e[10]=-1,e[14]=-r;return e}function hd(e,t,n,r){var i=Math.tan(t.upDegrees*Math.PI/180),a=Math.tan(t.downDegrees*Math.PI/180),s=Math.tan(t.leftDegrees*Math.PI/180),o=Math.tan(t.rightDegrees*Math.PI/180),c=2/(s+o),u=2/(i+a);return e[0]=c,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=u,e[6]=0,e[7]=0,e[8]=-((s-o)*c*.5),e[9]=(i-a)*u*.5,e[10]=r/(n-r),e[11]=-1,e[12]=0,e[13]=0,e[14]=r*n/(n-r),e[15]=0,e}function qa(e,t,n,r,i,a,s){var o=1/(t-n),c=1/(r-i),u=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=2*u,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*c,e[14]=(s+a)*u,e[15]=1,e}var fd=qa;function gd(e,t,n,r,i,a,s){var o=1/(t-n),c=1/(r-i),u=1/(a-s);return e[0]=-2*o,e[1]=0,e[2]=0,e[3]=0,e[4]=0,e[5]=-2*c,e[6]=0,e[7]=0,e[8]=0,e[9]=0,e[10]=u,e[11]=0,e[12]=(t+n)*o,e[13]=(i+r)*c,e[14]=a*u,e[15]=1,e}function _d(e,t,n,r){var i,a,s,o,c,u,d,m,l,h,g=t[0],v=t[1],f=t[2],p=r[0],y=r[1],E=r[2],S=n[0],A=n[1],x=n[2];return Math.abs(g-S)<Y&&Math.abs(v-A)<Y&&Math.abs(f-x)<Y?Ka(e):(d=g-S,m=v-A,l=f-x,h=1/Math.sqrt(d*d+m*m+l*l),d*=h,m*=h,l*=h,i=y*l-E*m,a=E*d-p*l,s=p*m-y*d,h=Math.sqrt(i*i+a*a+s*s),h?(h=1/h,i*=h,a*=h,s*=h):(i=0,a=0,s=0),o=m*s-l*a,c=l*i-d*s,u=d*a-m*i,h=Math.sqrt(o*o+c*c+u*u),h?(h=1/h,o*=h,c*=h,u*=h):(o=0,c=0,u=0),e[0]=i,e[1]=o,e[2]=d,e[3]=0,e[4]=a,e[5]=c,e[6]=m,e[7]=0,e[8]=s,e[9]=u,e[10]=l,e[11]=0,e[12]=-(i*g+a*v+s*f),e[13]=-(o*g+c*v+u*f),e[14]=-(d*g+m*v+l*f),e[15]=1,e)}function pd(e,t,n,r){var i=t[0],a=t[1],s=t[2],o=r[0],c=r[1],u=r[2],d=i-n[0],m=a-n[1],l=s-n[2],h=d*d+m*m+l*l;h>0&&(h=1/Math.sqrt(h),d*=h,m*=h,l*=h);var g=c*l-u*m,v=u*d-o*l,f=o*m-c*d;return h=g*g+v*v+f*f,h>0&&(h=1/Math.sqrt(h),g*=h,v*=h,f*=h),e[0]=g,e[1]=v,e[2]=f,e[3]=0,e[4]=m*f-l*v,e[5]=l*g-d*f,e[6]=d*v-m*g,e[7]=0,e[8]=d,e[9]=m,e[10]=l,e[11]=0,e[12]=i,e[13]=a,e[14]=s,e[15]=1,e}function vd(e){return"mat4("+e[0]+", "+e[1]+", "+e[2]+", "+e[3]+", "+e[4]+", "+e[5]+", "+e[6]+", "+e[7]+", "+e[8]+", "+e[9]+", "+e[10]+", "+e[11]+", "+e[12]+", "+e[13]+", "+e[14]+", "+e[15]+")"}function yd(e){return Math.sqrt(e[0]*e[0]+e[1]*e[1]+e[2]*e[2]+e[3]*e[3]+e[4]*e[4]+e[5]*e[5]+e[6]*e[6]+e[7]*e[7]+e[8]*e[8]+e[9]*e[9]+e[10]*e[10]+e[11]*e[11]+e[12]*e[12]+e[13]*e[13]+e[14]*e[14]+e[15]*e[15])}function Sd(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e[3]=t[3]+n[3],e[4]=t[4]+n[4],e[5]=t[5]+n[5],e[6]=t[6]+n[6],e[7]=t[7]+n[7],e[8]=t[8]+n[8],e[9]=t[9]+n[9],e[10]=t[10]+n[10],e[11]=t[11]+n[11],e[12]=t[12]+n[12],e[13]=t[13]+n[13],e[14]=t[14]+n[14],e[15]=t[15]+n[15],e}function Za(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e[3]=t[3]-n[3],e[4]=t[4]-n[4],e[5]=t[5]-n[5],e[6]=t[6]-n[6],e[7]=t[7]-n[7],e[8]=t[8]-n[8],e[9]=t[9]-n[9],e[10]=t[10]-n[10],e[11]=t[11]-n[11],e[12]=t[12]-n[12],e[13]=t[13]-n[13],e[14]=t[14]-n[14],e[15]=t[15]-n[15],e}function wd(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e[3]=t[3]*n,e[4]=t[4]*n,e[5]=t[5]*n,e[6]=t[6]*n,e[7]=t[7]*n,e[8]=t[8]*n,e[9]=t[9]*n,e[10]=t[10]*n,e[11]=t[11]*n,e[12]=t[12]*n,e[13]=t[13]*n,e[14]=t[14]*n,e[15]=t[15]*n,e}function xd(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[3]=t[3]+n[3]*r,e[4]=t[4]+n[4]*r,e[5]=t[5]+n[5]*r,e[6]=t[6]+n[6]*r,e[7]=t[7]+n[7]*r,e[8]=t[8]+n[8]*r,e[9]=t[9]+n[9]*r,e[10]=t[10]+n[10]*r,e[11]=t[11]+n[11]*r,e[12]=t[12]+n[12]*r,e[13]=t[13]+n[13]*r,e[14]=t[14]+n[14]*r,e[15]=t[15]+n[15]*r,e}function Ad(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]&&e[3]===t[3]&&e[4]===t[4]&&e[5]===t[5]&&e[6]===t[6]&&e[7]===t[7]&&e[8]===t[8]&&e[9]===t[9]&&e[10]===t[10]&&e[11]===t[11]&&e[12]===t[12]&&e[13]===t[13]&&e[14]===t[14]&&e[15]===t[15]}function Ed(e,t){var n=e[0],r=e[1],i=e[2],a=e[3],s=e[4],o=e[5],c=e[6],u=e[7],d=e[8],m=e[9],l=e[10],h=e[11],g=e[12],v=e[13],f=e[14],p=e[15],y=t[0],E=t[1],S=t[2],A=t[3],x=t[4],P=t[5],_=t[6],k=t[7],w=t[8],B=t[9],V=t[10],D=t[11],O=t[12],re=t[13],xe=t[14],Qe=t[15];return Math.abs(n-y)<=Y*Math.max(1,Math.abs(n),Math.abs(y))&&Math.abs(r-E)<=Y*Math.max(1,Math.abs(r),Math.abs(E))&&Math.abs(i-S)<=Y*Math.max(1,Math.abs(i),Math.abs(S))&&Math.abs(a-A)<=Y*Math.max(1,Math.abs(a),Math.abs(A))&&Math.abs(s-x)<=Y*Math.max(1,Math.abs(s),Math.abs(x))&&Math.abs(o-P)<=Y*Math.max(1,Math.abs(o),Math.abs(P))&&Math.abs(c-_)<=Y*Math.max(1,Math.abs(c),Math.abs(_))&&Math.abs(u-k)<=Y*Math.max(1,Math.abs(u),Math.abs(k))&&Math.abs(d-w)<=Y*Math.max(1,Math.abs(d),Math.abs(w))&&Math.abs(m-B)<=Y*Math.max(1,Math.abs(m),Math.abs(B))&&Math.abs(l-V)<=Y*Math.max(1,Math.abs(l),Math.abs(V))&&Math.abs(h-D)<=Y*Math.max(1,Math.abs(h),Math.abs(D))&&Math.abs(g-O)<=Y*Math.max(1,Math.abs(g),Math.abs(O))&&Math.abs(v-re)<=Y*Math.max(1,Math.abs(v),Math.abs(re))&&Math.abs(f-xe)<=Y*Math.max(1,Math.abs(f),Math.abs(xe))&&Math.abs(p-Qe)<=Y*Math.max(1,Math.abs(p),Math.abs(Qe))}var kd=Xa,Td=Za;var q={};zr(q,{add:()=>Ld,angle:()=>em,bezier:()=>Xd,ceil:()=>Nd,clone:()=>Md,copy:()=>Rd,create:()=>Ja,cross:()=>Hd,dist:()=>cm,distance:()=>rs,div:()=>om,divide:()=>ns,dot:()=>Nr,equals:()=>im,exactEquals:()=>rm,floor:()=>Od,forEach:()=>lm,fromValues:()=>bd,hermite:()=>Kd,inverse:()=>Bd,len:()=>dm,length:()=>Qa,lerp:()=>Vd,max:()=>Cd,min:()=>Id,mul:()=>sm,multiply:()=>ts,negate:()=>Ud,normalize:()=>Gd,random:()=>$d,rotateX:()=>Zd,rotateY:()=>Jd,rotateZ:()=>Qd,round:()=>Pd,scale:()=>Dd,scaleAndAdd:()=>Fd,set:()=>zd,slerp:()=>Wd,sqrDist:()=>um,sqrLen:()=>mm,squaredDistance:()=>is,squaredLength:()=>as,str:()=>nm,sub:()=>am,subtract:()=>es,transformMat3:()=>jd,transformMat4:()=>Yd,transformQuat:()=>qd,zero:()=>tm});function Ja(){var e=new we(3);return we!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function Md(e){var t=new we(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Qa(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function bd(e,t,n){var r=new we(3);return r[0]=e,r[1]=t,r[2]=n,r}function Rd(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function zd(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function Ld(e,t,n){return e[0]=t[0]+n[0],e[1]=t[1]+n[1],e[2]=t[2]+n[2],e}function es(e,t,n){return e[0]=t[0]-n[0],e[1]=t[1]-n[1],e[2]=t[2]-n[2],e}function ts(e,t,n){return e[0]=t[0]*n[0],e[1]=t[1]*n[1],e[2]=t[2]*n[2],e}function ns(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function Nd(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function Od(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function Id(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 Cd(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 Pd(e,t){return e[0]=gn(t[0]),e[1]=gn(t[1]),e[2]=gn(t[2]),e}function Dd(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Fd(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 rs(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 is(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 as(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function Ud(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Bd(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function Gd(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 Nr(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Hd(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 Vd(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 Wd(e,t,n,r){var i=Math.acos(Math.min(Math.max(Nr(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 Kd(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 Xd(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 $d(e,t){t=t===void 0?1:t;var n=Lr()*2*Math.PI,r=Lr()*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 Yd(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 jd(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 qd(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 Zd(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 Jd(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 Qd(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 em(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&&Nr(e,t)/c;return Math.acos(Math.min(Math.max(u,-1),1))}function tm(e){return e[0]=0,e[1]=0,e[2]=0,e}function nm(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function rm(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function im(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)<=Y*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=Y*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=Y*Math.max(1,Math.abs(i),Math.abs(o))}var am=es,sm=ts,om=ns,cm=rs,um=is,dm=Qa,mm=as,lm=(function(){var e=Ja();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 hm=Object.defineProperty,os=(e,t)=>{for(var n in t)hm(e,n,{get:t[n],enumerable:!0})};var mE=Math.PI/180;var fm=Math.PI/180,lE=180/Math.PI,Ot=fm,gm=[[-.525731,0,.850651],[-.442863,.238856,.864188],[-.295242,0,.955423],[-.309017,.5,.809017],[-.16246,.262866,.951056],[0,0,1],[0,.850651,.525731],[-.147621,.716567,.681718],[.147621,.716567,.681718],[0,.525731,.850651],[.309017,.5,.809017],[.525731,0,.850651],[.295242,0,.955423],[.442863,.238856,.864188],[.16246,.262866,.951056],[-.681718,.147621,.716567],[-.809017,.309017,.5],[-.587785,.425325,.688191],[-.850651,.525731,0],[-.864188,.442863,.238856],[-.716567,.681718,.147621],[-.688191,.587785,.425325],[-.5,.809017,.309017],[-.238856,.864188,.442863],[-.425325,.688191,.587785],[-.716567,.681718,-.147621],[-.5,.809017,-.309017],[-.525731,.850651,0],[0,.850651,-.525731],[-.238856,.864188,-.442863],[0,.955423,-.295242],[-.262866,.951056,-.16246],[0,1,0],[0,.955423,.295242],[-.262866,.951056,.16246],[.238856,.864188,.442863],[.262866,.951056,.16246],[.5,.809017,.309017],[.238856,.864188,-.442863],[.262866,.951056,-.16246],[.5,.809017,-.309017],[.850651,.525731,0],[.716567,.681718,.147621],[.716567,.681718,-.147621],[.525731,.850651,0],[.425325,.688191,.587785],[.864188,.442863,.238856],[.688191,.587785,.425325],[.809017,.309017,.5],[.681718,.147621,.716567],[.587785,.425325,.688191],[.955423,.295242,0],[1,0,0],[.951056,.16246,.262866],[.850651,-.525731,0],[.955423,-.295242,0],[.864188,-.442863,.238856],[.951056,-.16246,.262866],[.809017,-.309017,.5],[.681718,-.147621,.716567],[.850651,0,.525731],[.864188,.442863,-.238856],[.809017,.309017,-.5],[.951056,.16246,-.262866],[.525731,0,-.850651],[.681718,.147621,-.716567],[.681718,-.147621,-.716567],[.850651,0,-.525731],[.809017,-.309017,-.5],[.864188,-.442863,-.238856],[.951056,-.16246,-.262866],[.147621,.716567,-.681718],[.309017,.5,-.809017],[.425325,.688191,-.587785],[.442863,.238856,-.864188],[.587785,.425325,-.688191],[.688191,.587785,-.425325],[-.147621,.716567,-.681718],[-.309017,.5,-.809017],[0,.525731,-.850651],[-.525731,0,-.850651],[-.442863,.238856,-.864188],[-.295242,0,-.955423],[-.16246,.262866,-.951056],[0,0,-1],[.295242,0,-.955423],[.16246,.262866,-.951056],[-.442863,-.238856,-.864188],[-.309017,-.5,-.809017],[-.16246,-.262866,-.951056],[0,-.850651,-.525731],[-.147621,-.716567,-.681718],[.147621,-.716567,-.681718],[0,-.525731,-.850651],[.309017,-.5,-.809017],[.442863,-.238856,-.864188],[.16246,-.262866,-.951056],[.238856,-.864188,-.442863],[.5,-.809017,-.309017],[.425325,-.688191,-.587785],[.716567,-.681718,-.147621],[.688191,-.587785,-.425325],[.587785,-.425325,-.688191],[0,-.955423,-.295242],[0,-1,0],[.262866,-.951056,-.16246],[0,-.850651,.525731],[0,-.955423,.295242],[.238856,-.864188,.442863],[.262866,-.951056,.16246],[.5,-.809017,.309017],[.716567,-.681718,.147621],[.525731,-.850651,0],[-.238856,-.864188,-.442863],[-.5,-.809017,-.309017],[-.262866,-.951056,-.16246],[-.850651,-.525731,0],[-.716567,-.681718,-.147621],[-.716567,-.681718,.147621],[-.525731,-.850651,0],[-.5,-.809017,.309017],[-.238856,-.864188,.442863],[-.262866,-.951056,.16246],[-.864188,-.442863,.238856],[-.809017,-.309017,.5],[-.688191,-.587785,.425325],[-.681718,-.147621,.716567],[-.442863,-.238856,.864188],[-.587785,-.425325,.688191],[-.309017,-.5,.809017],[-.147621,-.716567,.681718],[-.425325,-.688191,.587785],[-.16246,-.262866,.951056],[.442863,-.238856,.864188],[.16246,-.262866,.951056],[.309017,-.5,.809017],[.147621,-.716567,.681718],[0,-.525731,.850651],[.425325,-.688191,.587785],[.587785,-.425325,.688191],[.688191,-.587785,.425325],[-.955423,.295242,0],[-.951056,.16246,.262866],[-1,0,0],[-.850651,0,.525731],[-.955423,-.295242,0],[-.951056,-.16246,.262866],[-.864188,.442863,-.238856],[-.951056,.16246,-.262866],[-.809017,.309017,-.5],[-.864188,-.442863,-.238856],[-.951056,-.16246,-.262866],[-.809017,-.309017,-.5],[-.681718,.147621,-.716567],[-.681718,-.147621,-.716567],[-.850651,0,-.525731],[-.688191,.587785,-.425325],[-.587785,.425325,-.688191],[-.425325,.688191,-.587785],[-.425325,-.688191,-.587785],[-.587785,-.425325,-.688191],[-.688191,-.587785,-.425325]];var ze=1,Ve=2;var Pr=8,Dr=16,_m=32;var pm=16384;var xn=65536,cs=1<<17,vm=1<<18,ym=1<<19,Sm=1<<20,wm=1<<21,xm=1<<22,Am=1<<23,hE=1<<24,An=1<<25,Em=1<<26,fE=1<<27,gE=1<<28,_E=1<<29,En=1<<30,pE=1<<31;var vE=1<<25,yE=1<<28,SE=1<<29,wE=1<<30,xE=1<<31,AE=ze|Ve,EE=ze|xn|Ve|An|En,kE=ze|xn|Ve,TE=ze|cs|Ve|An|En,ME=_m|Pr|Dr,bE=ze|Dr|Pr,km=ze|An|En|Ve|Em,RE=vm|ym|Sm|wm|xm|Am,zE=ze|Pr|Dr|An|En,LE=ze|xn|Ve,NE=ze|Ve,OE=ze|xn|Ve|cs,IE=km|pm,CE=Number.MAX_SAFE_INTEGER-1;var us=256,Tm=256,Mm=8192,bm=2048,Rm=512,zm=256,Lm=us*2,Nm=256,Or=32;var ds=(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+Mm]="Sounds",e[e.Images=e.Sounds+bm]="Images",e[e.Lights=e.Images+Rm]="Lights",e[e.ShadowLights=e.Lights+Tm]="ShadowLights",e[e.Items=e.ShadowLights+Nm]="Items",e[e.PlayerSkins=e.Items+zm]="PlayerSkins",e[e.General=e.PlayerSkins+us]="General",e[e.WheelWeapons=e.General+Lm]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+Or]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+Or]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+Or]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ds||{}),PE=ds.MaxConfigStrings;var Om={};os(Om,{addReplayFrame:()=>Dm,createReplaySession:()=>Pm,deserializeReplay:()=>Cm,serializeReplay:()=>Im});function Im(e){return JSON.stringify(e,null,2)}function Cm(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 Pm(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Dm(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var W=(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))(W||{}),M=(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))(M||{}),Fm=12,Um=9,DE=Math.ceil(Fm*Um/16),Bm=23,Gm=2,FE=Math.ceil(Bm*Gm/16),Hm={};os(Hm,{U_ANGLE1:()=>jm,U_ANGLE2:()=>qm,U_ANGLE3:()=>Zm,U_EFFECTS:()=>el,U_EVENT:()=>rl,U_FRAME:()=>Jm,U_MODEL:()=>Wm,U_MODEL2:()=>al,U_MODEL3:()=>sl,U_MODEL4:()=>ol,U_MOREBITS:()=>il,U_NUMBER:()=>Vm,U_ORIGIN1:()=>Xm,U_ORIGIN2:()=>$m,U_ORIGIN3:()=>Ym,U_REMOVE:()=>cl,U_RENDERFX:()=>tl,U_SKIN:()=>Qm,U_SOLID:()=>nl,U_SOUND:()=>Km});var Vm=1,Wm=2,Km=4,Xm=8,$m=16,Ym=32,jm=64,qm=128,Zm=256,Jm=512,Qm=1024,el=2048,tl=4096,nl=8192,rl=16384,il=32768,al=1,sl=2,ol=4,cl=32768,ul=class{constructor(e){e instanceof Uint8Array?this.view=new DataView(e.buffer,e.byteOffset,e.byteLength):this.view=new DataView(e),this.offset=0,this.length=this.view.byteLength}getPosition(){return this.offset}seek(e){if(e<0||e>this.length)throw new Error(`Seek out of bounds: ${e} (length: ${this.length})`);this.offset=e}hasMore(){return this.offset<this.length}readChar(){let e=this.view.getInt8(this.offset);return this.offset+=1,e}readByte(){let e=this.view.getUint8(this.offset);return this.offset+=1,e}readShort(){let e=this.view.getInt16(this.offset,!0);return this.offset+=2,e}readLong(){let e=this.view.getInt32(this.offset,!0);return this.offset+=4,e}readFloat(){let e=this.view.getFloat32(this.offset,!0);return this.offset+=4,e}readString(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0)break;e+=String.fromCharCode(t)}return e}readStringLine(){let e="";for(;this.offset<this.length;){let t=this.readChar();if(t===-1||t===0||t===10)break;e+=String.fromCharCode(t)}return e}readCoord(){return this.readShort()*(1/8)}readAngle(){return this.readChar()*(360/256)}readAngle16(){return this.readShort()*360/65536}readData(e){if(this.offset+e>this.length)throw new Error(`Read out of bounds: ${this.offset+e} (length: ${this.length})`);let t=new Uint8Array(this.view.buffer,this.view.byteOffset+this.offset,e);return this.offset+=e,new Uint8Array(t)}readPos(e){e.x=this.readCoord(),e.y=this.readCoord(),e.z=this.readCoord()}readDir(e){let t=this.readByte();if(t>=162){e.x=0,e.y=0,e.z=0;return}let n=gm[t];e.x=n[0],e.y=n[1],e.z=n[2]}},ms=(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))(ms||{}),UE=Object.keys(ms).length/2;function dl(){let e=new Uint32Array(256);for(let t=0;t<256;t+=1){let n=t;for(let r=0;r<8;r+=1)n=(n&1)!==0?3988292384^n>>>1:n>>>1;e[t]=n>>>0}return e}var BE=dl();var GE=Object.freeze([{name:"pak0.pak",checksum:2378051181,description:"Base game assets"},{name:"pak0.pak@baseq2",checksum:2378051181,description:"Base game assets (baseq2)"},{name:"pak0.pak@rogue",checksum:3373211245,description:"Ground Zero (rogue) mission pack"},{name:"pak0.pak@xatrix",checksum:1358269824,description:"The Reckoning (xatrix) mission pack"}]);var ml=19,HE=8+ml*8;var Cr=4,Ir=7*Cr,VE=[{index:0,size:3,type:5126,stride:Ir,offset:0},{index:1,size:2,type:5126,stride:Ir,offset:3*Cr},{index:2,size:2,type:5126,stride:Ir,offset:5*Cr}];var ls=32;var WE=`#version 300 es
|
|
2
2
|
precision highp float;
|
|
3
3
|
|
|
4
4
|
struct DLight {
|
|
@@ -7,7 +7,7 @@ struct DLight {
|
|
|
7
7
|
float intensity;
|
|
8
8
|
};
|
|
9
9
|
|
|
10
|
-
const int MAX_DLIGHTS = ${
|
|
10
|
+
const int MAX_DLIGHTS = ${ls};
|
|
11
11
|
|
|
12
12
|
in vec2 v_texCoord;
|
|
13
13
|
in vec2 v_lightmapCoord;
|
|
@@ -86,7 +86,7 @@ void main() {
|
|
|
86
86
|
}
|
|
87
87
|
|
|
88
88
|
o_color = finalColor;
|
|
89
|
-
}`;var
|
|
89
|
+
}`;var KE=new Float32Array([-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,-1,-1,-1,-1,-1,-1,1,-1,1,1,-1,-1,-1,-1,1,1,-1,1,-1,1,-1,-1,1,1,-1,1,1,1,1,-1,-1,1,1,1,1,-1,1,-1,1,-1,-1,1,1,1,1,1,-1,1,-1,1,1,1,1,1,-1,-1,-1,-1,1,-1,-1,1,-1,1,-1,-1,-1,1,-1,1,-1,-1,1]);var XE=`#version 300 es
|
|
90
90
|
precision highp float;
|
|
91
91
|
|
|
92
92
|
layout(location = 0) in vec3 a_position;
|
|
@@ -99,7 +99,7 @@ struct DLight {
|
|
|
99
99
|
float intensity;
|
|
100
100
|
};
|
|
101
101
|
|
|
102
|
-
const int MAX_DLIGHTS = ${
|
|
102
|
+
const int MAX_DLIGHTS = ${ls};
|
|
103
103
|
|
|
104
104
|
uniform mat4 u_modelViewProjection;
|
|
105
105
|
uniform mat4 u_modelMatrix;
|
|
@@ -138,13 +138,13 @@ void main() {
|
|
|
138
138
|
v_texCoord = a_texCoord;
|
|
139
139
|
v_position = worldPos.xyz;
|
|
140
140
|
gl_Position = u_modelViewProjection * vec4(a_position, 1.0);
|
|
141
|
-
}`;var ls=class{constructor(){this._position=q.create(),this._angles=q.create(),this._bobAngles=q.create(),this._bobOffset=q.create(),this._kickAngles=q.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=j.create(),this._projectionMatrix=j.create(),this._viewProjectionMatrix=j.create(),this._dirty=!0}get position(){return this._position}set position(e){q.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){q.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){q.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){q.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){q.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=j.create();return j.perspective(t,e*Ot,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;j.perspective(this._projectionMatrix,this._fov*Ot,this._aspect,this._near,this._far);let e=j.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],r=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,i=t*Ot,a=n*Ot,s=r*Ot,o=j.create();j.identity(o),j.rotateZ(o,o,-a),j.rotateY(o,o,-i),j.rotateX(o,o,-s);let c=j.create();j.multiply(c,e,o);let u=q.add(q.create(),this._position,this._bobOffset),d=q.negate(q.create(),u),m=q.create();q.transformMat4(m,d,o);let l=q.fromValues(m[1]||0,m[2]||0,m[0]||0);j.copy(this._viewMatrix,c),this._viewMatrix[12]=l[0],this._viewMatrix[13]=l[1],this._viewMatrix[14]=l[2],j.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var dl=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>262144)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new ol(t)}}reset(){this.offset=0}getOffset(){return this.offset}},Pr=1,Dr=2,Fr=4,Ur=8,Br=16,Gr=32,hs=64,ml=128,ll=256,Hr=512,Vr=1024,Wr=2048,fn=4096,gn=16384,hl=32768,_n=65536,Kr=1<<17,pn=1<<18,vn=1<<19,Xr=1<<20,$r=1<<21,Yr=1<<22,fl=1<<23,jr=1<<24,yn=1<<25,qr=1<<26,Zr=1<<27,gl=1,_l=2,pl=128,ot=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0}),as=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0)}),vl=class{constructor(e,t){this.protocolVersion=0,this.isDemo=gl,this.stream=e,this.handler=t}translateCommand(e){if(this.protocolVersion===0&&(e===7||e===12))return V.serverdata;if(this.protocolVersion===25){if(e>=7&&e<=15)return e+5;if(e===1)return V.print;if(e===2)return V.stufftext;if(e===3)return V.sound;if(e===4)return V.nop;if(e===5)return V.disconnect;if(e===6)return V.reconnect;if(e===16)return V.temp_entity}return e}parseMessage(){for(;this.stream.hasMore();){let e=this.stream.readByte();if(e===-1)break;let t=e;e=this.translateCommand(e);try{switch(e){case V.nop:break;case V.disconnect:break;case V.reconnect:break;case V.print:this.parsePrint();break;case V.serverdata:this.parseServerData();break;case V.configstring:this.parseConfigString();break;case V.spawnbaseline:this.parseSpawnBaseline();break;case V.centerprint:this.parseCenterPrint();break;case V.download:this.parseDownload();break;case V.frame:this.parseFrame();break;case V.packetentities:this.parsePacketEntities(!1);break;case V.deltapacketentities:this.parsePacketEntities(!0);break;case V.playerinfo:this.parsePlayerState();break;case V.stufftext:this.parseStuffText();break;case V.layout:this.parseLayout();break;case V.inventory:this.parseInventory();break;case V.sound:this.parseSound();break;case V.muzzleflash:this.parseMuzzleFlash();break;case V.muzzleflash2:this.parseMuzzleFlash2();break;case V.temp_entity:this.parseTempEntity();break;default:console.warn(`Unknown server command: ${t} (translated: ${e}) at offset ${this.stream.getPosition()-1}`);return}}catch(n){console.warn(`Error parsing command ${e}: ${n.message}`);return}}}parsePrint(){let e=this.stream.readByte(),t=this.stream.readString()}parseStuffText(){let e=this.stream.readString()}parseLayout(){let e=this.stream.readString()}parseCenterPrint(){let e=this.stream.readString()}parseServerData(){this.protocolVersion=this.stream.readLong();let e=this.stream.readLong();this.isDemo=this.stream.readByte();let t=0,n=this.stream.readString(),r=this.stream.readShort(),i=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,e,t,n,r,i):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${i}, GameDir ${n}`)}parseConfigString(){let e=this.stream.readShort(),t=this.stream.readString();this.handler&&this.handler.onConfigString(e,t)}parseDownload(){let e=this.stream.readShort(),t=this.stream.readByte(),n;e>0&&(n=this.stream.readData(e)),this.handler&&this.handler.onDownload(e,t,n)}parseInventory(){let t=new Array(256);for(let n=0;n<256;n++)t[n]=this.stream.readShort();this.handler&&this.handler.onInventory(t)}parseSound(){let e=this.stream.readByte(),t=this.stream.readByte(),n,r,i,a,s;if(e&1&&(n=this.stream.readByte()),e&2&&(r=this.stream.readByte()),e&16&&(i=this.stream.readByte()),e&8&&(a=this.stream.readShort()),e&4){let o={x:0,y:0,z:0};this.stream.readPos(o),s=o}this.handler&&this.handler.onSound(e,t,n,r,i,a,s)}parseMuzzleFlash(){let e=this.stream.readShort(),t=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(e,t)}parseMuzzleFlash2(){let e=this.stream.readShort(),t=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(e,t)}parseTempEntity(){let e=this.stream.readByte(),t={x:0,y:0,z:0},n={x:0,y:0,z:0},r={x:0,y:0,z:0},i,a,s,o,c;switch(e){case M.EXPLOSION1:case M.EXPLOSION2:case M.ROCKET_EXPLOSION:case M.GRENADE_EXPLOSION:case M.ROCKET_EXPLOSION_WATER:case M.GRENADE_EXPLOSION_WATER:case M.BFG_EXPLOSION:case M.BFG_BIGEXPLOSION:case M.BOSSTPORT:case M.PLASMA_EXPLOSION:case M.PLAIN_EXPLOSION:case M.CHAINFIST_SMOKE:case M.TRACKER_EXPLOSION:case M.TELEPORT_EFFECT:case M.DBALL_GOAL:case M.NUKEBLAST:case M.WIDOWSPLASH:case M.EXPLOSION1_BIG:case M.EXPLOSION1_NP:this.stream.readPos(t);break;case M.GUNSHOT:case M.BLOOD:case M.BLASTER:case M.SHOTGUN:case M.SPARKS:case M.BULLET_SPARKS:case M.SCREEN_SPARKS:case M.SHIELD_SPARKS:case M.BLASTER2:case M.FLECHETTE:case M.MOREBLOOD:case M.ELECTRIC_SPARKS:case M.HEATBEAM_SPARKS:case M.HEATBEAM_STEAM:this.stream.readPos(t),this.stream.readDir(r);break;case M.SPLASH:case M.LASER_SPARKS:case M.WELDING_SPARKS:case M.TUNNEL_SPARKS:i=this.stream.readByte(),this.stream.readPos(t),this.stream.readDir(r),a=this.stream.readByte();break;case M.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(t),this.stream.readPos(n)):(this.stream.readPos(t),this.stream.readDir(r));break;case M.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(t),this.stream.readDir(r)):(this.stream.readPos(t),this.stream.readPos(n));break;case M.RAILTRAIL:case M.BUBBLETRAIL:case M.BFG_LASER:case M.DEBUGTRAIL:case M.BUBBLETRAIL2:this.stream.readPos(t),this.stream.readPos(n);break;case M.PARASITE_ATTACK:case M.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(t),this.stream.readPos(n);break;case M.GRAPPLE_CABLE:s=this.stream.readShort(),this.stream.readPos(t),this.stream.readPos(n),this.stream.readPos(r);break;case M.LIGHTNING:o=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(t),this.stream.readPos(n);break;case M.FLASHLIGHT:this.stream.readPos(t),s=this.stream.readShort();break;case M.FORCEWALL:this.stream.readPos(t),this.stream.readPos(n),a=this.stream.readByte();break;case M.STEAM:let u=this.stream.readShort();i=this.stream.readByte(),this.stream.readPos(t),this.stream.readDir(r),a=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case M.WIDOWBEAMOUT:this.stream.readShort();case M.HEATBEAM:case M.MONSTER_HEATBEAM:s=this.stream.readShort(),this.stream.readPos(t),this.stream.readPos(n),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(e,t,n,r,i,a,s,o,c)}parseSpawnBaseline(){let e=this.parseEntityBits(),t=ot();this.parseDelta(ot(),t,e.number,e.bits),this.handler&&this.handler.onSpawnBaseline(t)}parseFrame(){let e=this.stream.readLong(),t=this.stream.readLong(),n=this.stream.readByte(),r=this.stream.readByte(),i=this.stream.readData(r),a=this.stream.readByte();if(a!==V.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${a}`);let s=this.parsePlayerState();if(this.isDemo===pl){let o=this.stream.readByte();for(let c=0;c<o;c++)this.stream.readByte()}this.isDemo===_l&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:e,deltaFrame:t,surpressCount:n,areaBytes:r,areaBits:i,playerState:s,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let e=as(),t=this.stream.readShort();t&1&&(e.pm_type=this.stream.readByte()),t&2&&(e.origin.x=this.stream.readShort()*.125,e.origin.y=this.stream.readShort()*.125,e.origin.z=this.stream.readShort()*.125),t&4&&(e.velocity.x=this.stream.readShort()*.125,e.velocity.y=this.stream.readShort()*.125,e.velocity.z=this.stream.readShort()*.125),t&8&&(e.pm_time=this.stream.readByte()),t&16&&(e.pm_flags=this.stream.readByte()),t&32&&(e.gravity=this.stream.readShort()),t&64&&(e.delta_angles.x=this.stream.readShort()*(180/32768),e.delta_angles.y=this.stream.readShort()*(180/32768),e.delta_angles.z=this.stream.readShort()*(180/32768)),t&128&&(e.viewoffset.x=this.stream.readChar()*.25,e.viewoffset.y=this.stream.readChar()*.25,e.viewoffset.z=this.stream.readChar()*.25),t&256&&(e.viewangles.x=this.stream.readAngle16(),e.viewangles.y=this.stream.readAngle16(),e.viewangles.z=this.stream.readAngle16()),t&512&&(e.kick_angles.x=this.stream.readChar()*.25,e.kick_angles.y=this.stream.readChar()*.25,e.kick_angles.z=this.stream.readChar()*.25),t&4096&&(e.gun_index=this.stream.readByte()),t&8192&&(e.gun_frame=this.stream.readByte(),e.gun_offset.x=this.stream.readChar()*.25,e.gun_offset.y=this.stream.readChar()*.25,e.gun_offset.z=this.stream.readChar()*.25,e.gun_angles.x=this.stream.readChar()*.25,e.gun_angles.y=this.stream.readChar()*.25,e.gun_angles.z=this.stream.readChar()*.25),t&1024&&(e.blend[0]=this.stream.readByte(),e.blend[1]=this.stream.readByte(),e.blend[2]=this.stream.readByte(),e.blend[3]=this.stream.readByte()),t&2048&&(e.fov=this.stream.readByte()),t&16384&&(e.rdflags=this.stream.readByte());let n=this.stream.readLong();for(let r=0;r<32;r++)n&1<<r&&(e.stats[r]=this.stream.readShort());return e}parsePacketEntities(e){let t=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:as(),packetEntities:{delta:e,entities:t}})}collectPacketEntities(){let e=[];for(;;){let t=this.parseEntityBits();if(t.number===0)break;let n=ot();this.parseDelta(ot(),n,t.number,t.bits),e.push(n)}return e}parseEntityBits(){let e=this.stream.readByte();e&ml&&(e|=this.stream.readByte()<<8),e&hl&&(e|=this.stream.readByte()<<16),e&fl&&(e|=this.stream.readByte()<<24);let t;return e&ll?t=this.stream.readShort():t=this.stream.readByte(),{number:t,bits:e}}parseDelta(e,t,n,r){t.number=e.number,t.modelindex=e.modelindex,t.modelindex2=e.modelindex2,t.modelindex3=e.modelindex3,t.modelindex4=e.modelindex4,t.frame=e.frame,t.skinnum=e.skinnum,t.effects=e.effects,t.renderfx=e.renderfx,t.origin.x=e.origin.x,t.origin.y=e.origin.y,t.origin.z=e.origin.z,t.old_origin.x=e.origin.x,t.old_origin.y=e.origin.y,t.old_origin.z=e.origin.z,t.angles.x=e.angles.x,t.angles.y=e.angles.y,t.angles.z=e.angles.z,t.sound=e.sound,t.event=e.event,t.solid=e.solid,t.number=n,t.bits=r,r&Wr&&(t.modelindex=this.stream.readByte()),r&Xr&&(t.modelindex2=this.stream.readByte()),r&$r&&(t.modelindex3=this.stream.readByte()),r&Yr&&(t.modelindex4=this.stream.readByte()),r&Br&&(t.frame=this.stream.readByte()),r&Kr&&(t.frame=this.stream.readShort()),r&_n&&r&yn?t.skinnum=this.stream.readLong():r&_n?t.skinnum=this.stream.readByte():r&yn&&(t.skinnum=this.stream.readShort()),r&gn&&r&vn?t.effects=this.stream.readLong():r&gn?t.effects=this.stream.readByte():r&vn&&(t.effects=this.stream.readShort()),r&fn&&r&pn?t.renderfx=this.stream.readLong():r&fn?t.renderfx=this.stream.readByte():r&pn&&(t.renderfx=this.stream.readShort()),r&Pr&&(t.origin.x=this.stream.readCoord()),r&Dr&&(t.origin.y=this.stream.readCoord()),r&Hr&&(t.origin.z=this.stream.readCoord()),r&Vr&&(t.angles.x=this.stream.readAngle()),r&Fr&&(t.angles.y=this.stream.readAngle()),r&Ur&&(t.angles.z=this.stream.readAngle()),r&jr&&this.stream.readPos(t.old_origin),r&qr&&(t.sound=this.stream.readByte()),r&Gr?t.event=this.stream.readByte():t.event=0,r&Zr&&(t.solid=this.stream.readShort())}},Jr=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(Jr||{}),fs=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new dl(e),this.state=0,this.accumulatedTime=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}new vl(t.data,this.handler).parseMessage(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var yl=Object.defineProperty,gs=(e,t)=>{for(var n in t)yl(e,n,{get:t[n],enumerable:!0})},ut={x:0,y:0,z:0};var WE=Math.PI/180;function It(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function dt(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function mt(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function Sl(e){return mt(e,e)}function An(e){return Math.sqrt(Sl(e))}function _s(e){let t=An(e);return t===0?e:dt(e,1/t)}var ps=0,vs=1,ys=2,wl=Math.PI/180,KE=180/Math.PI;function Qr(e,t){switch(t){case ps:return e.x;case vs:return e.y;case ys:default:return e.z}}function ei(e){return e*wl}function ct(e){let t=e%360;return t<0?360+t:t}function ni(e){let t=ei(Qr(e,vs)),n=ei(Qr(e,ps)),r=ei(Qr(e,ys)),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}}var Le=1,We=2;var ri=8,ii=16,xl=32;var Al=16384;var En=65536,Ss=1<<17,El=1<<18,kl=1<<19,Tl=1<<20,Ml=1<<21,bl=1<<22,Rl=1<<23,XE=1<<24,kn=1<<25,zl=1<<26,$E=1<<27,YE=1<<28,jE=1<<29,Tn=1<<30,qE=1<<31;var ZE=1<<25,JE=1<<28,QE=1<<29,e5=1<<30,t5=1<<31;var n5=Le|We,r5=Le|En|We|kn|Tn,i5=Le|En|We,a5=Le|Ss|We|kn|Tn,s5=xl|ri|ii,o5=Le|ii|ri,Ll=Le|kn|Tn|We|zl,c5=El|kl|Tl|Ml|bl|Rl,u5=Le|ri|ii|kn|Tn,d5=Le|En|We,m5=Le|We,l5=Le|En|We|Ss,h5=Ll|Al;var f5=Number.MAX_SAFE_INTEGER-1;var Ct=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(Ct||{});var ws=256;var Nl=256,Pt=8192,Dt=2048,Ft=512,Ol=256,Il=ws*2,Cl=256,ti=32;var ee=(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+Pt]="Sounds",e[e.Images=e.Sounds+Dt]="Images",e[e.Lights=e.Images+Ft]="Lights",e[e.ShadowLights=e.Lights+Nl]="ShadowLights",e[e.Items=e.ShadowLights+Cl]="Items",e[e.PlayerSkins=e.Items+Ol]="PlayerSkins",e[e.General=e.PlayerSkins+ws]="General",e[e.WheelWeapons=e.General+Il]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ti]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ti]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ti]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ee||{}),g5=ee.MaxConfigStrings;var Pl={};gs(Pl,{addReplayFrame:()=>Bl,createReplaySession:()=>Ul,deserializeReplay:()=>Fl,serializeReplay:()=>Dl});function Dl(e){return JSON.stringify(e,null,2)}function Fl(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 Ul(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Bl(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var et=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(et||{});var Ae=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(Ae||{});function De(e,t){return(e&t)!==0}var ai=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(ai||{}),Ne=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(Ne||{});function xs(e){let{velocity:t,frametime:n,onGround:r,groundIsSlick:i,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:c,pmWaterFriction:u}=e,d=An(t);if(d<1)return{x:0,y:0,z:t.z};let m=0;if(r&&!i||a){let g=d<c?c:d;m+=g*o*n}s>0&&!a&&(m+=d*u*s*n);let l=d-m;if(l<0&&(l=0),l===d)return t;let h=l/d;return dt(t,h)}function si(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=mt(t,n),o=r-s;if(o<=0)return t;let c=i*a*r;return c>o&&(c=o),{x:t.x+n.x*c,y:t.y+n.y*c,z:t.z+n.z*c}}function As(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=Math.min(r,30),o=mt(t,n),c=s-o;if(c<=0)return t;let u=i*r*a;return u>c&&(u=c),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function Es(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:0},s=An(a);if(s>i){let o=i/s;a=dt(a,o),s=i}return{wishdir:s===0?a:_s(a),wishspeed:s}}function ks(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:0};r.upmove>10?a=It(a,{x:0,y:0,z:r.upmove}):r.upmove<-10?a=It(a,{x:0,y:0,z:r.upmove}):a=It(a,{x:0,y:0,z:10});let s=An(a);if(s>i){let o=i/s;a=dt(a,o),s=i}return s*=.5,{wishdir:s===0?a:_s(a),wishspeed:s}}function Gl(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Hl(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function oi(e){let{pmFlags:t,cmdAngles:n,deltaAngles:r}=e,i;(t&32)!==0?i={x:0,y:n.y+r.y,z:0}:(i=Gl(n,r),i={...i,x:Hl(i.x)});let a=ni(i);return{viewangles:i,...a}}var Ts=200,Ms=200,bs=200,Rs=140,zs=150,Ls=3;function Vl(e){let t=ct(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function Ns(e,t){return{x:Vl(e.x+t.x),y:ct(e.y+t.y),z:ct(e.z+t.z)}}function Os(e,t){let n=t.sensitivityX??t.sensitivity,r=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*r,y:e.deltaX*n,z:0}}var Ee=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Ee||{}),Wl=12,Kl=9,_5=Math.ceil(Wl*Kl/16),Xl=23,$l=2,p5=Math.ceil(Xl*$l/16);var Yl={};gs(Yl,{U_ANGLE1:()=>t0,U_ANGLE2:()=>n0,U_ANGLE3:()=>r0,U_EFFECTS:()=>s0,U_EVENT:()=>u0,U_FRAME:()=>i0,U_MODEL:()=>ql,U_MODEL2:()=>m0,U_MODEL3:()=>l0,U_MODEL4:()=>h0,U_MOREBITS:()=>d0,U_NUMBER:()=>jl,U_ORIGIN1:()=>Jl,U_ORIGIN2:()=>Ql,U_ORIGIN3:()=>e0,U_REMOVE:()=>f0,U_RENDERFX:()=>o0,U_SKIN:()=>a0,U_SOLID:()=>c0,U_SOUND:()=>Zl});var jl=1,ql=2,Zl=4,Jl=8,Ql=16,e0=32,t0=64,n0=128,r0=256,i0=512,a0=1024,s0=2048,o0=4096,c0=8192,u0=16384,d0=32768,m0=1,l0=2,h0=4,f0=32768;var Is=(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))(Is||{}),v5=Object.keys(Is).length/2;var g0=Object.defineProperty,_0=(e,t)=>{for(var n in t)g0(e,n,{get:t[n],enumerable:!0})},bn=null,Mn=[1,1,1,1],Cs=["ch1","ch2","ch3"],ci=[null,null,null],p0=e=>{for(let t=0;t<Cs.length;t++){let n=Cs[t];try{ci[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{ci[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
142
|
-
`)}}}
|
|
143
|
-
`)}},
|
|
144
|
-
`)}},
|
|
145
|
-
`)}
|
|
146
|
-
`),d=n.height/2-u.length*10;for(let m of u)se.SCR_DrawCenterString(d,m),d+=16}gi.drawCenterPrint(se,o,c),gi.drawNotifications(se,o),Vs.drawSubtitles(se,o),v0(se,n.width,n.height)}function zn(){return gi}function C0(){return Vs}function P0(e,t,n){t>=ee.Models&&t<ee.Models+Pt?e.RegisterModel(n):t>=ee.Sounds&&t<ee.Sounds+Dt?e.RegisterSound(n):t>=ee.Images&&t<ee.Images+Ft&&e.Draw_RegisterPic(n)}var mi=1e-6,Rn=typeof Float32Array<"u"?Float32Array:Array,Us=Math.random;function li(e){return e>=0?Math.round(e):e%.5===0?Math.floor(e):Math.round(e)}var D0={};_0(D0,{add:()=>H0,angle:()=>mh,bezier:()=>rh,ceil:()=>V0,clone:()=>F0,copy:()=>B0,create:()=>Ws,cross:()=>Q0,dist:()=>yh,distance:()=>js,div:()=>vh,divide:()=>Ys,dot:()=>_i,equals:()=>gh,exactEquals:()=>fh,floor:()=>W0,forEach:()=>Ah,fromValues:()=>U0,hermite:()=>nh,inverse:()=>Z0,len:()=>wh,length:()=>Ks,lerp:()=>eh,max:()=>X0,min:()=>K0,mul:()=>ph,multiply:()=>$s,negate:()=>q0,normalize:()=>J0,random:()=>ih,rotateX:()=>ch,rotateY:()=>uh,rotateZ:()=>dh,round:()=>$0,scale:()=>Y0,scaleAndAdd:()=>j0,set:()=>G0,slerp:()=>th,sqrDist:()=>Sh,sqrLen:()=>xh,squaredDistance:()=>qs,squaredLength:()=>Zs,str:()=>hh,sub:()=>_h,subtract:()=>Xs,transformMat3:()=>sh,transformMat4:()=>ah,transformQuat:()=>oh,zero:()=>lh});function Ws(){var e=new Rn(3);return Rn!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function F0(e){var t=new Rn(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 U0(e,t,n){var r=new Rn(3);return r[0]=e,r[1]=t,r[2]=n,r}function B0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function G0(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function H0(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 V0(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function W0(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function K0(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 X0(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 $0(e,t){return e[0]=li(t[0]),e[1]=li(t[1]),e[2]=li(t[2]),e}function Y0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function j0(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 q0(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Z0(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function J0(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 _i(e,t){return e[0]*t[0]+e[1]*t[1]+e[2]*t[2]}function Q0(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 eh(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 th(e,t,n,r){var i=Math.acos(Math.min(Math.max(_i(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 nh(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 rh(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 ih(e,t){t=t===void 0?1:t;var n=Us()*2*Math.PI,r=Us()*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 ah(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 sh(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 oh(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 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],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 uh(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 dh(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 mh(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&&_i(e,t)/c;return Math.acos(Math.min(Math.max(u,-1),1))}function lh(e){return e[0]=0,e[1]=0,e[2]=0,e}function hh(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function fh(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function gh(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)<=mi*Math.max(1,Math.abs(n),Math.abs(a))&&Math.abs(r-s)<=mi*Math.max(1,Math.abs(r),Math.abs(s))&&Math.abs(i-o)<=mi*Math.max(1,Math.abs(i),Math.abs(o))}var _h=Xs,ph=$s,vh=Ys,yh=js,Sh=qs,wh=Ks,xh=Zs,Ah=(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 Eh={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function kh(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 Th(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function Mh(e,t,n,r,i){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=Th(t,r,i),s=e+a,c=De(n,Ae.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 Ln=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...Eh,...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}=ni(oi({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,Ae.OnGround),s=Mh(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,Ae.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 g=Math.min(this.bobFracSin*i*this.settings.bobUp,this.settings.maxBobHeight),v=0,f=0;if(this.kick&&this.kick.remainingMs>0){let S=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));v+=S*this.kick.pitch,f+=S*this.kick.roll,this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let E={angles:{x:o+v,y:0,z:m+f},offset:kh({x:0,y:0,z:g}),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:i};return this.lastSample=E,E}},bh={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},Rh=250;function tt(){return{origin:Fe,velocity:Fe,viewAngles:Fe,onGround:!1,pmFlags:Ae.OnGround,pmType:ai.Normal,waterLevel:et.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 Bs(e){return e?{...tt(),...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]:[]}:tt()}function fe(e,t,n){return e+(t-e)*n}function hi(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:hi(e.viewAngles.x,t.viewAngles.x,r),y:hi(e.viewAngles.y,t.viewAngles.y,r),z:hi(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 zh(e,t,n,r){let i=Math.min(Math.max(t.msec,0),Rh)/1e3,a=De(e.pmFlags,Ae.OnGround),s=De(e.pmFlags,Ae.OnLadder),o=xs({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}=oi({pmFlags:e.pmFlags,cmdAngles:t.angles,deltaAngles:e.deltaAngles??Fe}),m=e.waterLevel>et.None?ks({forward:u,right:d,cmd:t,maxSpeed:n.pmWaterSpeed}):Es({forward:u,right:d,cmd:t,maxSpeed:n.pmMaxSpeed});if(e.waterLevel>et.None)o=si({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmWaterAccelerate,frametime:i});else if(a||s){let g=De(e.pmFlags,Ae.Ducked)?n.pmDuckSpeed:n.pmMaxSpeed,v=m.wishspeed>g?{wishdir:m.wishdir,wishspeed:g}:m;o=si({velocity:o,wishdir:v.wishdir,wishspeed:v.wishspeed,accel:n.pmAccelerate,frametime:i})}else o=As({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 Nn=class{constructor(e,t={}){this.baseFrame={frame:0,timeMs:0,state:tt()},this.commands=[],this.predicted=tt(),this.settings={...bh,...t},this.trace=e,this.predicted=this.baseFrame.state??tt()}setAuthoritative(e){let t=Bs(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=Bs(this.baseFrame.state);for(let t of this.commands)e=zh(e,t,this.settings,this.trace);return this.predicted=e,e}},he=null;function Lh(){if(!he){console.error("CGame Init: cgame imports not set");return}he.Com_Print(`===== CGame Initialization =====
|
|
147
|
-
`),
|
|
148
|
-
`)}function
|
|
149
|
-
`),he=null}function Oh(e,t,n,r,i,a,s){I0(e,t,n,r,i,a,s)}function Ih(){O0()}function Ch(e){return 0}function Ph(e){return 0}function Dh(e){return[]}function Fh(e,t){return 0}function Uh(e){return 0}function Bh(e){return 0}function Gh(e){}function Hh(e,t){he&&P0(he,e,t)}function Vh(e,t,n){if(!he)return;zn().setCenterPrint(e,he.CL_ClientTime())}function Wh(e,t,n){if(!he)return;zn().addNotification(t,n,he.CL_ClientTime())}function Kh(e){zn().clearNotifications()}function Xh(e){zn().clearCenterPrint()}function $h(e,t){if(!he)return;C0().addSubtitle(e,he.CL_ClientTime())}function Yh(e){return{x:0,y:0,z:0}}function jh(e){return null}function Qs(e){return he=e,{Init:Lh,Shutdown:Nh,DrawHUD:Oh,TouchPics:Ih,LayoutFlags:Ch,GetActiveWeaponWheelWeapon:Ph,GetOwnedWeaponWheelWeapons:Dh,GetWeaponWheelAmmoCount:Fh,GetPowerupWheelCount:Uh,GetHitMarkerDamage:Bh,Pmove:Gh,ParseConfigString:Hh,ParseCenterPrint:Vh,NotifyMessage:Wh,ShowSubtitle:$h,ClearNotify:Kh,ClearCenterprint:Xh,GetMonsterFlashOffset:Yh,GetExtension:jh}}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)=>{if(!e.host||!e.host.cvars)return null;let c=e.host.cvars.get(a);return c||e.host.cvars.register({name:a,defaultValue:s,flags:o})},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 qh=Object.defineProperty,go=(e,t)=>{for(var n in t)qh(e,n,{get:t[n],enumerable:!0})},K={x:0,y:0,z:0};var b5=Math.PI/180;function Zh(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 N(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 C(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 ef(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 Ni=0,Oi=1,po=2,tf=Math.PI/180,nf=180/Math.PI;function Ht(e,t){switch(t){case Ni:return e.x;case Oi:return e.y;case po:default:return e.z}}function In(e){return e*tf}function Ei(e){return e*nf}function ki(e){let t=e%360;return t<0?360+t:t}function J(e){let t=In(Ht(e,Oi)),n=In(Ht(e,Ni)),r=In(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 Ii(e){let t=Ht(e,Ni),n=Ht(e,Oi);if(t===0)return n===0?0:n>0?90:270;let r=Ei(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=Ei(Math.atan2(n,t)):n>0?i=90:i=270,i<0&&(i+=360);let a=Math.sqrt(t*t+n*n),s=Ei(Math.atan2(r,a));return s<0&&(s+=360),{x:-s,y:i,z:0}}var Oe=624,rf=397,af=2567483615,sf=2147483648,of=2147483647,pi=4294967296,cf=class{constructor(e=5489){this.state=new Uint32Array(Oe),this.index=Oe,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Oe;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=Oe}nextUint32(){this.index>=Oe&&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<Oe;e++){let t=this.state[e]&sf|this.state[(e+1)%Oe]&of,n=this.state[(e+rf)%Oe]^t>>>1;(t&1)!==0&&(n^=af),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Oe)throw new Error(`Expected ${Oe} 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 cf(e.seed)}seed(e){this.mt.seed(e)}frandom(){return this.mt.nextUint32()/pi}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=pi-pi%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 Ci(e){return new vo(e)}var ge=1,je=2;var Pi=8,Di=16,uf=32;var df=16384;var Hn=65536,yo=1<<17,mf=1<<18,lf=1<<19,hf=1<<20,ff=1<<21,gf=1<<22,_f=1<<23,R5=1<<24,rt=1<<25,Vn=1<<26,z5=1<<27,L5=1<<28,N5=1<<29,Et=1<<30,O5=1<<31;var I5=1<<25,C5=1<<28,P5=1<<29,D5=1<<30,F5=1<<31,pf=ge|je,U5=ge|Hn|je|rt|Et,B5=ge|Hn|je,Pn=ge|yo|je|rt|Et,vf=uf|Pi|Di,G5=ge|Di|Pi,Yt=ge|rt|Et|je|Vn,H5=mf|lf|hf|ff|gf|_f,V5=ge|Pi|Di|rt|Et,W5=ge|Hn|je,K5=ge|je,X5=ge|Hn|je|yo,$5=Yt|df,Y5=Number.MAX_SAFE_INTEGER-1;var So=256,yf=256,Sf=8192,wf=2048,xf=512,Af=256,Ef=So*2,kf=256,vi=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+Sf]="Sounds",e[e.Images=e.Sounds+wf]="Images",e[e.Lights=e.Images+xf]="Lights",e[e.ShadowLights=e.Lights+yf]="ShadowLights",e[e.Items=e.ShadowLights+kf]="Items",e[e.PlayerSkins=e.Items+Af]="PlayerSkins",e[e.General=e.PlayerSkins+So]="General",e[e.WheelWeapons=e.General+Ef]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+vi]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+vi]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+vi]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(wo||{}),j5=wo.MaxConfigStrings,Tf={};go(Tf,{addReplayFrame:()=>zf,createReplaySession:()=>Rf,deserializeReplay:()=>bf,serializeReplay:()=>Mf});function Mf(e){return JSON.stringify(e,null,2)}function bf(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 Rf(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function zf(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var _e=(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))(_e||{}),Se=(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))(Se||{});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 Lf=12,Nf=9,q5=Math.ceil(Lf*Nf/16),Of=23,If=2,Z5=Math.ceil(Of*If/16);var Cf={};go(Cf,{U_ANGLE1:()=>Hf,U_ANGLE2:()=>Vf,U_ANGLE3:()=>Wf,U_EFFECTS:()=>$f,U_EVENT:()=>qf,U_FRAME:()=>Kf,U_MODEL:()=>Df,U_MODEL2:()=>Jf,U_MODEL3:()=>Qf,U_MODEL4:()=>e1,U_MOREBITS:()=>Zf,U_NUMBER:()=>Pf,U_ORIGIN1:()=>Uf,U_ORIGIN2:()=>Bf,U_ORIGIN3:()=>Gf,U_REMOVE:()=>t1,U_RENDERFX:()=>Yf,U_SKIN:()=>Xf,U_SOLID:()=>jf,U_SOUND:()=>Ff});var Pf=1,Df=2,Ff=4,Uf=8,Bf=16,Gf=32,Hf=64,Vf=128,Wf=256,Kf=512,Xf=1024,$f=2048,Yf=4096,jf=8192,qf=16384,Zf=32768,Jf=1,Qf=2,e1=4,t1=32768;var I=(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))(I||{}),W=(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))(W||{}),J5=Object.keys(W).length/2,ve=(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))(ve||{});function Ye(e,t){return(e&t)!==0}var kt=(e=>(e.BODY="body",e.COMBAT="combat",e.JACKET="jacket",e))(kt||{}),n1={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 r1(e,t,n){if(e<=0||Ye(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let r=n1[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 i1(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}=J(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 f={x:o.x/c,y:o.y/c,z:o.z/c};if(f.x*s.x+f.y*s.y+f.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 g=Math.max(d,h),v=Math.max(0,i.cellCount-g);return{saved:l,remainingCells:v}}var Q5={[ve.Shells]:{id:ve.Shells,ammoType:W.Shells,quantity:10,weaponAmmo:!1},[ve.Bullets]:{id:ve.Bullets,ammoType:W.Bullets,quantity:50,weaponAmmo:!1},[ve.Rockets]:{id:ve.Rockets,ammoType:W.Rockets,quantity:5,weaponAmmo:!1},[ve.Grenades]:{id:ve.Grenades,ammoType:W.Grenades,quantity:5,weaponAmmo:!0},[ve.Cells]:{id:ve.Cells,ammoType:W.Cells,quantity:50,weaponAmmo:!1},[ve.Slugs]:{id:ve.Slugs,ammoType:W.Slugs,quantity:10,weaponAmmo:!1}};var ce=(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))(ce||{});var a1={...K};var ek=Object.freeze({aiflags:0,last_sighting:a1,trail_time:0,pausetime:0});var Fi=[{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}],s1=20,o1=440,c1=940,yi=32,u1=1<<24,Dn=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=ef(n.mins,n.maxs,r.mins,r.maxs);return Math.sqrt(i)}function d1(e){return e<=s1?"melee":e<=o1?"near":e<=c1?"mid":"far"}function Wt(e,t){let{forward:n}=J(e.angles),r=C(N(t.origin,e.origin)),i=_o(r,n);return(e.spawnflags&Dn)!==0&&e.trail_time===0&&e.enemy===null?i>.15:i>-.3}function jt(e,t,n,r){if((t.flags&u1)!==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 m1(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=Ii(n)}function xo(e){e.angles.y=ki(e.ideal_yaw)}function l1(e,t,n){e.enemy&&(e.goalentity=e.enemy,m1(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 h1(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){l1(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 f1(e,t,n,r){let i=qe(e,t),a=d1(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 g1(e,t,n,r,i){if((e.spawnflags&Dn)!==0){if(!jt(e,t,i))return!1}else if(r.canHear&&!r.canHear(e,t))return!1;let a=N(t.origin,e.origin);return At(a)>1e3||r.areasConnected&&!r.areasConnected(e,t)?!1:(e.ideal_yaw=Ii(a),xo(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function _1(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Dn)===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&Dn)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function p1(e){return(e.flags&yi)!==0?!0:(e.svflags&4)!==0&&e.enemy?(e.enemy.flags&yi)!==0:!!(e.enemy&&(e.enemy.flags&yi)!==0)}function Ui(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}=_1(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(p1(a))return!1;if(s){if(!g1(e,a,t,i,r))return!1}else{if(!f1(e,a,t,r))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return h1(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=In(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Bi(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=ki(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=ki(n+a)}function ae(e,t){Bi(e,e.angles.y,t)}function Wn(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=Ii(n)}function te(e,t,n){Ui(e,n.targetAwareness,n,n.trace)||qt(e,t)}function ue(e,t,n,r){if(!Ui(e,r.targetAwareness,r,r.trace)&&(Wn(e,e.goalentity),qt(e,n),t!==0&&Bi(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 oe(e,t,n,r){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,r);return}Ui(e,r.targetAwareness,r,r.trace),Wn(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 v1(e,t,n,r){t&&Wn(e,t),qt(e,r),n!==0&&Bi(e,e.angles.y,n)}function ne(e,t,n,r){Wn(e,e.enemy),qt(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Eo(e,e.angles.y,t,r)}function y1(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,Pn);if(e.groundentity=r.ent,!e.groundentity&&!r.allsolid&&!r.startsolid&&r.fraction===1){let i=t.pointcontents(n);i&vf?(e.waterlevel=1,e.watertype=i):(e.waterlevel=0,e.watertype=0)}}function S1(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,Pn).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,Pn).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,Pn).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&&!S1(e,r)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&y1(e,r),!0)}var w1=Fi.filter(e=>e.save||e.type==="callback"),tk=new Map(w1.map(e=>[e.name,e]));var nk=1/40;function x1(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var A1=1;function E1(e,t){if(!e.client)return;let n=x1(e.client.weaponStates,I.Chaingun);!(e.client.buttons&A1)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var rk={weapon_blaster:{type:"weapon",id:"weapon_blaster",name:"Blaster",weaponId:I.Blaster,ammoType:null,initialAmmo:0,pickupAmmo:0,fireRate:.5},weapon_shotgun:{type:"weapon",id:"weapon_shotgun",name:"Shotgun",weaponId:I.Shotgun,ammoType:W.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:I.SuperShotgun,ammoType:W.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:I.Machinegun,ammoType:W.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:E1},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:I.Chaingun,ammoType:W.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:I.GrenadeLauncher,ammoType:W.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:I.RocketLauncher,ammoType:W.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:I.HyperBlaster,ammoType:W.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:I.Railgun,ammoType:W.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:I.BFG10K,ammoType:W.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1}};function k1(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 T1(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=C(n),u=U(o,(t===e?1600:500)*r/s);return e.velocity=F(e.velocity,u),u}function M1(e,t,n,r,i){let a=r,s=0,o=0,c,u;if(e.powerArmor){let d=i1(r,i,t,n,e.powerArmor);s=d.saved,c=d.remainingCells,a-=s}if(e.regularArmor){let d=r1(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=k1(n,d),h=s*l,g=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 f=T1(e,n,r,g,c),[p,y,E,S,A]=M1(e,i,a,h,c);e.powerArmor&&S!==void 0&&(e.powerArmor.cellCount=S),e.regularArmor&&(e.regularArmor.armorCount=A??e.regularArmor.armorCount);let x=p;x>0&&(e.health-=x,m&&!Ye(c,1024)&&(e.classname==="player"||e.monsterinfo)&&m(i,1,_e.temp_entity,Se.BLOOD,i,a));let P=e.health<=0;return P?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,x,i,u):x>0&&e.pain&&e.pain(e,n,o,x,u),{take:x,psave:y,asave:E,knocked:f,killed:P,remainingCells:S,remainingArmor:A}}function Gi(e,t,n,r,i,a,s,o,c,u={},d){let m=[],l=io(t),h=u.canDamage??(()=>!0);for(let g of e){if(g===i||!g.takedamage||!h(g,t))continue;let v=g.mins&&g.maxs?Qh(l,F(g.origin,g.mins),F(g.origin,g.maxs)):io(g),f=N(l,v),p=At(f);if(a>0&&p>a)continue;let y=r-.5*p;if(y<=0)continue;let E=g===n?y*.5:y,S=C(N(g.origin,l)),A=le(g,t,n,S,v,S,E,E,s|1,o,c,d);m.push({target:g,result:A,appliedDamage:E})}return m}var ik=Ci();var Kn=.1,Vt=80;var ko=Ci();function b1(){return ko.frandom()}function To(e,t){return Math.floor(ko.frandom()*(t-e+1)+e)}function yt(e,t,n){te(e,Kn,n)}function ke(e,t,n){ue(e,t,Kn,n)}function _t(e,t,n){oe(e,t,Kn,n)}function Q(e,t,n){ne(e,t,Kn,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 Re(e,t){t.sound(e,2,Kt.footstep,1,1,0)}function Fn(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function R1(e,t){}var Hi,Mo,z1,bo,L1,N1,O1,I1,C1,Ro,P1;function D1(e,t){Fn(e,Hi)}function F1(e,t){e.monsterinfo.aiflags&1||e.enemy||b1()>.15||(Fn(e,Mo),t.sound(e,1,Kt.idle,1,2,0))}var U1=[{ai:yt,dist:0,think:F1},{ai:yt,dist:0},{ai:yt,dist:0},{ai:yt,dist:0},{ai:yt,dist:0}];Hi={firstframe:0,lastframe:4,frames:U1,endfunc:null};var B1=Array.from({length:20},()=>({ai:yt,dist:0}));Mo={firstframe:5,lastframe:24,frames:B1,endfunc:D1};var G1=[{ai:ke,dist:9.1},{ai:ke,dist:6.3},{ai:ke,dist:4.9},{ai:ke,dist:6.7,think:Re},{ai:ke,dist:6},{ai:ke,dist:8.2},{ai:ke,dist:7.2},{ai:ke,dist:6.1},{ai:ke,dist:4.9},{ai:ke,dist:4.7,think:Re},{ai:ke,dist:4.7}];z1={firstframe:25,lastframe:35,frames:G1,endfunc:null};var H1=[{ai:_t,dist:21},{ai:_t,dist:11,think:Re},{ai:_t,dist:21},{ai:_t,dist:25,think:R1},{ai:_t,dist:18,think:Re},{ai:_t,dist:19}];bo={firstframe:36,lastframe:41,frames:H1,endfunc:null};function Zt(e,t){e.monsterinfo.aiflags&1?Fn(e,Hi):Fn(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=J(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||K,n,r,0,0,i.timeSeconds,i.multicast.bind(i)),!0)}function V1(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 W1=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0,think:Lo},{ai:Q,dist:0,think:V1},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];L1={firstframe:67,lastframe:74,frames:W1,endfunc:Zt};function K1(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 X1=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0,think:Re},{ai:Q,dist:0},{ai:Q,dist:0,think:Lo},{ai:Q,dist:0},{ai:Q,dist:0,think:K1},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];N1={firstframe:75,lastframe:86,frames:X1,endfunc:Zt};function $1(e,t,n,r,i,a){let s=a.findByRadius(e.origin,r);for(let o of s){if(o===e||!o.takedamage)continue;let c=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),u=Math.max(0,1-c/r);if(u<=0)continue;let d=Math.max(1,n*u*u),m=i*u*u,l=C(N(o.origin,e.origin));le(o,e,t,l,o.origin,l,d,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Vi(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}=J(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,_e.temp_entity,Se.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},$1(e,e,8,165,300,t)}function Y1(e,t,n,r,i){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Vi(e,i))}function Wi(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function j1(e,t){if(!e.enemy)return;let n=N(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=C({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)=>{Y1(c,u,d,m,t),c.groundentity&&(c.frame=104,Vi(c,t),c.touch=void 0)},Wi(e,t)}function q1(e,t){if(Wi(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Vi(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Z1=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:L,dist:0,think:j1},{ai:L,dist:0,think:Wi},{ai:L,dist:0,think:q1},{ai:L,dist:0,think:Re},{ai:L,dist:0},{ai:L,dist:0,think:Re},{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:Re}];O1={firstframe:87,lastframe:109,frames:Z1,endfunc:Zt};var J1=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];I1={firstframe:149,lastframe:152,frames:J1,endfunc:Zt};var Q1=Array.from({length:20},(e,t)=>({ai:L,dist:0,think:t%5===4?Re:void 0}));C1={firstframe:153,lastframe:172,frames:Q1,endfunc:Zt};function No(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 eg=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:Re},{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:eg,endfunc:No};var tg=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:Re},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];P1={firstframe:186,lastframe:193,frames:tg,endfunc:No};function ng(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:K,i,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(u.origin,120);Gi(h,u,u.owner,a,u.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,_e.temp_entity,Se.ROCKET_EXPLOSION,u.origin),e.free(u)},e.finalizeSpawn(c)}function Oo(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);Gi(u,c,c.owner,i,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,_e.temp_entity,Se.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 rg(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:K,i,1,0,s,e.timeSeconds,e.multicast.bind(e)):d&&e.multicast(c.origin,1,_e.temp_entity,Se.BLASTER,c.origin,d.normal),e.free(c))},e.finalizeSpawn(o)}function ig(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=C(N(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 g=e.trace(m,null,null,o,t,ge|rt|Et|Vn);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&le(g.ent,t,t.owner,s,g.endpos,K,r,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;u.push(g.ent),d.push(g.ent.solid),g.ent.solid=0,m={...g.endpos}}let l=e.trace(i,null,null,o,t,ge);e.multicast(t.origin,2,_e.temp_entity,Se.BFG_LASER,i,l.endpos)}finally{for(let l=0;l<u.length;l++)u[l].solid=d[l]}}function ag(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,pf).fraction<1||ig(t,e,i,n)}t.scheduleThink(e,t.timeSeconds+.1)}function sg(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=N(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,K,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 og(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:K,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let l=e.findByRadius(c.origin,100);Gi(l,c,c.owner,200,u,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,_e.temp_entity,Se.BFG_BIGEXPLOSION,c.origin),c.solid=0,c.touch=void 0,c.velocity=K,c.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),c.frame=0,c.enemy=u,c.think=(h,g)=>sg(h,g),e.scheduleThink(c,e.timeSeconds+.1)},o.think=(c,u)=>ag(c,u),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function ao(){return 2*Math.random()-1}function Un(e,t,n,r,i,a,s,o,c,u=0){let d=n;if(a>0||s>0){let h=$t(n),{right:g,up:v}=J(h),f=ao()*a,p=ao()*s;d={x:n.x+g.x*f+v.x*p,y:n.y+g.y*f+v.y*p,z:n.z+g.z*f+v.z*p},d=C(d)}let m=F(t,U(d,8192)),l=c.trace(t,m,K,K,e,Yt);!l.ent||l.fraction===1||le(l.ent,e,e,d,l.endpos,l.plane?.normal||K,r,i,18,u,c.timeSeconds)}var nt=Un;function cg(e,t,n,r,i,a,s,o,c,u,d=2){for(let m=0;m<o;m++)nt(e,t,n,r,i,a,s,c,u,d)}function He(e,t,n,r,i,a,s,o,c=1){rg(o,e,t,n,r,i,c)}function ug(e,t,n,r,i,a,s){Oo(s,e,t,n,r,i)}function Jt(e,t,n,r,i,a,s){ng(s,e,t,n,r,120,i)}function Io(e,t,n,r,i,a,s,o,c){og(c,e,t,n,r,i,s)}function Co(e,t,n,r,i,a,s){let o=F(t,U(n,8192)),c=s.trace(t,o,K,K,e,Yt);s.multicast(t,2,_e.temp_entity,Se.RAILTRAIL,t,c.endpos),c.ent&&c.ent.takedamage&&le(c.ent,e,e,n,c.endpos,K,r,i,6,11,s.timeSeconds)}function Qt(e,t,n,r,i){if(!e.enemy)return!1;let{forward:a}=J(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,K,K,e,Yt);if(u.ent===e.enemy||u.ent&&u.ent.takedamage){let d=C(N(u.endpos,s));return le(u.ent,e,e,d,u.endpos,u.plane?.normal||K,n,r,0,0,i.timeSeconds),!0}return!1}function dg(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,K,K,e,ge|rt|Et|Vn);e.dmg>0&&i.ent&&i.ent.takedamage&&i.ent!==e.owner&&le(i.ent,e,e.owner,e.movedir,i.endpos,K,e.dmg,0,4,31,t.timeSeconds),i.ent&&i.ent.solid===3&&t.multicast(i.endpos,1,_e.temp_entity,Se.LASER_SPARKS,10,i.endpos,i.plane?.normal||K,e.skin),t.linkentity(e)}function mg(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?mg(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 Ki=.1,lg={x:0,y:30,z:-15},hg={x:0,y:15,z:0},fg={x:0,y:-15,z:0},gg={x:0,y:-30,z:-15},_g={x:30,y:20,z:0},pg={x:30,y:-20,z:0};function vg(e,t,n){te(e,Ki,n)}function yg(e,t,n){ue(e,t,Ki,n)}function Xn(e,t,n){ne(e,t,Ki,n)}function Xi(e,t,n){ae(e,t)}var $i,Po,Do,Sg,Fo,Uo,wg,xg,Ag,Bo;function Eg(e){e.monsterinfo.current_move=$i}function kg(e){e.monsterinfo.current_move=Po}function en(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Do:e.monsterinfo.current_move=$i}function Go(e){e.monsterinfo.current_move=Fo}function Tg(e){e.enemy&&Wt(e,e.enemy)&&Math.random()<=.7?Go(e):e.monsterinfo.current_move=Uo}function Ti(e,t){let{forward:n,right:r,up:i}=J(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 Mg(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=Ti(e,_g),r=C(N(e.enemy.origin,n));nt(e,n,r,6,4,.1,.05,0,t,4);let i=Ti(e,pg),a=C(N(e.enemy.origin,i));nt(e,i,a,6,4,.1,.05,0,t,4)}function bg(e,t){if(!e.enemy)return;let n=[lg,hg,fg,gg],r=n[Math.floor(Math.random()*n.length)],i=Ti(e,r),a=C(N(e.enemy.origin,i));Jt(e,i,a,50,500,0,t)}function Rg(e){e.monsterinfo.nextframe=Bo.lastframe,e.nextthink=-1}var Ho=Array.from({length:20},()=>({ai:yg,dist:10}));Po={firstframe:0,lastframe:19,frames:Ho,endfunc:kg};Do={firstframe:0,lastframe:19,frames:Ho,endfunc:en};var zg=Array.from({length:21},()=>({ai:vg,dist:0}));$i={firstframe:29,lastframe:49,frames:zg,endfunc:Eg};var Lg=Array.from({length:9},(e,t)=>({ai:Xn,dist:2,think:t===8?Go:null}));Sg={firstframe:50,lastframe:58,frames:Lg,endfunc:null};var Ng=Array.from({length:6},()=>({ai:Xn,dist:2,think:Mg}));Fo={firstframe:59,lastframe:64,frames:Ng,endfunc:Tg};var Og=Array.from({length:4},()=>({ai:Xn,dist:2}));Uo={firstframe:65,lastframe:68,frames:Og,endfunc:en};var Ig=Array.from({length:21},(e,t)=>({ai:Xn,dist:2,think:t===12?bg:null}));wg={firstframe:69,lastframe:89,frames:Ig,endfunc:en};var Cg=Array.from({length:18},()=>({ai:Xi,dist:0}));xg={firstframe:90,lastframe:107,frames:Cg,endfunc:en};var Pg=Array.from({length:4},()=>({ai:Xi,dist:0}));Ag={firstframe:108,lastframe:111,frames:Pg,endfunc:en};var Dg=Array.from({length:49},()=>({ai:Xi,dist:0}));Bo={firstframe:112,lastframe:160,frames:Dg,endfunc:Rg};var $n=.1,Yi=80,Yn=Math.random;function Vo(e,t,n){te(e,$n,n)}function Te(e,t,n){ue(e,t,$n,n)}function Me(e,t,n){oe(e,t,$n,n)}function T(e,t,n){ne(e,t,$n,n)}function R(e,t,n){ae(e,t)}var ji,Fg,Ug,Wo,Ko,Bg,Gg,Hg,Vg,Wg,Kg,Xg,$g,Yg;function Xo(e){e.monsterinfo.current_move=ji}function Ze(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=ji:e.monsterinfo.current_move=Wo}function jg(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function qg(e,t){let n={x:Yi,y:e.maxs.x,z:8};Qt(e,n,15+Math.floor(Yn()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function Zg(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function Jg(e,t){let n={x:Yi,y:e.mins.x,z:8};Qt(e,n,15+Math.floor(Yn()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function $o(e,t){e.count=0,e.monsterinfo.power_armor_type=0,t.engine.sound?.(e,0,"brain/brnatck1.wav",1,1,0)}function Yo(e,t){Qt(e,{x:Yi,y:0,z:8},10+Math.floor(Yn()*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 jo(e){e.monsterinfo.power_armor_type=1,e.count&&(e.count=0,e.monsterinfo.current_move=Ko)}function co(e,t){if(!e.enemy)return;let n=J(e.angles).forward,r={...e.origin};r.z+=24;let i={...e.enemy.origin};if(t.trace(r,i,K,K,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,_e.temp_entity,Se.PARASITE_ATTACK,e,r,i);let s=N(r,i);le(e.enemy,e,e,s,e.enemy.origin,K,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=J(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 Qg(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=J(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=C(N(n.enemy.origin,c));e.origin=c,e.movedir=u,t.linkentity(e)}function e_(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=J(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=C(N(n.enemy.origin,c));e.origin=c,e.movedir=u,t.linkentity(e)}function Ie(e,t){oo(e,1,!1,Qg,t),oo(e,1,!0,e_,t)}function t_(e){Yn()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function n_(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function r_(e){}function i_(e){e.monsterinfo.aiflags&=-17}var a_=Array.from({length:30},()=>({ai:Vo,dist:0}));ji={firstframe:162,lastframe:191,frames:a_,endfunc:Xo};var s_=Array.from({length:30},()=>({ai:Vo,dist:0}));Fg={firstframe:192,lastframe:221,frames:s_,endfunc:Xo};var o_=[{ai:Te,dist:7},{ai:Te,dist:2},{ai:Te,dist:3},{ai:Te,dist:3},{ai:Te,dist:1},{ai:Te,dist:0},{ai:Te,dist:0},{ai:Te,dist:9},{ai:Te,dist:-4},{ai:Te,dist:-1},{ai:Te,dist:2}];Ug={firstframe:0,lastframe:10,frames:o_,endfunc:null};var c_=[{ai:Me,dist:9},{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:10},{ai:Me,dist:-4},{ai:Me,dist:-1},{ai:Me,dist:2}];Wo={firstframe:0,lastframe:10,frames:c_,endfunc:null};var u_=[{ai:T,dist:8},{ai:T,dist:3},{ai:T,dist:5},{ai:T,dist:0},{ai:T,dist:-3,think:jg},{ai:T,dist:0},{ai:T,dist:-5},{ai:T,dist:-7,think:qg},{ai:T,dist:0},{ai:T,dist:6,think:Zg},{ai:T,dist:1},{ai:T,dist:2,think:Jg},{ai:T,dist:-3},{ai:T,dist:6},{ai:T,dist:-1},{ai:T,dist:-3},{ai:T,dist:2},{ai:T,dist:-11}];Ko={firstframe:53,lastframe:70,frames:u_,endfunc:Ze};var d_=[{ai:T,dist:5},{ai:T,dist:-4},{ai:T,dist:-4},{ai:T,dist:-3},{ai:T,dist:0,think:$o},{ai:T,dist:0},{ai:T,dist:13,think:Yo},{ai:T,dist:0},{ai:T,dist:2},{ai:T,dist:0},{ai:T,dist:-9,think:jo},{ai:T,dist:0},{ai:T,dist:4},{ai:T,dist:3},{ai:T,dist:2},{ai:T,dist:-3},{ai:T,dist:-6}];Bg={firstframe:71,lastframe:87,frames:d_,endfunc:Ze};var m_=[{ai:T,dist:5},{ai:T,dist:-4},{ai:T,dist:-4},{ai:T,dist:-3},{ai:T,dist:0,think:$o},{ai:T,dist:0,think:co},{ai:T,dist:13},{ai:T,dist:0,think:Yo},{ai:T,dist:2},{ai:T,dist:0,think:co},{ai:T,dist:-9,think:jo},{ai:T,dist:0},{ai:T,dist:4},{ai:T,dist:3},{ai:T,dist:2},{ai:T,dist:-3},{ai:T,dist:-6}];Gg={firstframe:71,lastframe:87,frames:m_,endfunc:Ze};var l_=[{ai:T,dist:9,think:Ie},{ai:T,dist:2,think:Ie},{ai:T,dist:3,think:Ie},{ai:T,dist:3,think:Ie},{ai:T,dist:1,think:Ie},{ai:T,dist:0,think:Ie},{ai:T,dist:0,think:Ie},{ai:T,dist:10,think:Ie},{ai:T,dist:-4,think:Ie},{ai:T,dist:-1,think:Ie},{ai:T,dist:2,think:t_}];Hg={firstframe:0,lastframe:10,frames:l_,endfunc:Ze};var h_=[{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}];Vg={firstframe:88,lastframe:108,frames:h_,endfunc:Ze};var f_=[{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}];Wg={firstframe:109,lastframe:116,frames:f_,endfunc:Ze};var g_=[{ai:R,dist:-2},{ai:R,dist:2},{ai:R,dist:1},{ai:R,dist:3},{ai:R,dist:0},{ai:R,dist:-4}];Kg={firstframe:117,lastframe:122,frames:g_,endfunc:Ze};var __=Array.from({length:18},()=>({ai:R,dist:0}));Xg={firstframe:123,lastframe:140,frames:__,endfunc:qo};var p_=[{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:9},{ai:R,dist:0}];$g={firstframe:141,lastframe:145,frames:p_,endfunc:qo};var v_=[{ai:R,dist:0},{ai:R,dist:-2,think:n_},{ai:R,dist:17,think:r_},{ai:R,dist:-3},{ai:R,dist:-1,think:i_},{ai:R,dist:-5},{ai:R,dist:-6},{ai:R,dist:-6}];Yg={firstframe:146,lastframe:153,frames:v_,endfunc:Ze};function qo(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var jn=.1,y_=80,Tt=Math.random;function Zo(e,t,n){te(e,jn,n)}function S_(e,t,n){ue(e,t,jn,n)}function w_(e,t,n){oe(e,t,jn,n)}function z(e,t,n){ne(e,t,jn,n)}function Mt(e,t,n){ae(e,t)}var qi,Jo,Qo,x_,Zi,Mi,A_,Ji,ec,E_,k_,T_,M_,b_,R_,tc;function nc(e){e.monsterinfo.current_move=qi}function z_(e){e.monsterinfo.current_move=Jo}function it(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=qi;return}e.monsterinfo.current_move=Qo}function L_(e){e.monsterinfo.aiflags&4||e.enemy||Tt()<=.3&&(e.monsterinfo.current_move=tc)}function N_(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 O_(e,t){let n={x:y_,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 I_(e,t){let{forward:n,right:r}=J(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=K;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=N(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=C(l);e.skin>1?dg(e,c,h,50,u,0,.075,t):Jt(e,c,h,50,u,0,t)}function C_(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=N(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=$t(n).y}}function P_(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function D_(e){e.monsterinfo.current_move=Zi}function F_(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=Mi;return}if(e.enemy&&e.enemy.health>0&&Tt()<=.6){e.monsterinfo.current_move=Zi;return}e.monsterinfo.current_move=Mi}function U_(e){if(e.enemy&&e.enemy.health>0&&Tt()<=.9){e.monsterinfo.current_move=Ji;return}e.monsterinfo.current_move=ec}function B_(e){e.monsterinfo.current_move=Ji}var G_=Array.from({length:30},(e,t)=>({ai:Zo,dist:0,think:t===8?(n,r)=>N_(n,r):null}));tc={firstframe:201,lastframe:230,frames:G_,endfunc:nc};var H_=Array.from({length:30},(e,t)=>({ai:Zo,dist:0,think:t===29?L_:null}));qi={firstframe:101,lastframe:130,frames:H_,endfunc:nc};var V_=Array.from({length:10},()=>({ai:S_,dist:6}));Jo={firstframe:171,lastframe:180,frames:V_,endfunc:z_};var W_=Array.from({length:10},()=>({ai:w_,dist:12}));Qo={firstframe:171,lastframe:180,frames:W_,endfunc:it};var K_=Array.from({length:5},()=>({ai:Mt,dist:0}));E_={firstframe:90,lastframe:94,frames:K_,endfunc:it};var X_=Array.from({length:5},()=>({ai:Mt,dist:0}));k_={firstframe:95,lastframe:99,frames:X_,endfunc:it};var $_=Array.from({length:21},()=>({ai:Mt,dist:0}));T_={firstframe:100,lastframe:120,frames:$_,endfunc:it};var Y_=Array.from({length:12},()=>({ai:Mt,dist:0}));M_={firstframe:48,lastframe:59,frames:Y_,endfunc:rc};var j_=Array.from({length:23},()=>({ai:Mt,dist:0}));b_={firstframe:60,lastframe:82,frames:j_,endfunc:rc};function rc(e){e.mins={x:-16,y:-16,z:0},e.maxs={x:16,y:16,z:16},e.movetype=7,e.nextthink=-1}var q_=[{ai:z,dist:0,think:C_},{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:D_}];x_={firstframe:0,lastframe:12,frames:q_,endfunc:null};var Z_=[{ai:z,dist:19,think:I_},{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:P_},{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:F_}];Zi={firstframe:13,lastframe:26,frames:Z_,endfunc:null};var J_=[{ai:z,dist:-3},{ai:z,dist:0},{ai:z,dist:-6},{ai:z,dist:-4},{ai:z,dist:-2}];Mi={firstframe:27,lastframe:31,frames:J_,endfunc:it};var Q_=[{ai:z,dist:1},{ai:z,dist:8},{ai:z,dist:3}];A_={firstframe:32,lastframe:34,frames:Q_,endfunc:B_};var ep=[{ai:z,dist:1},{ai:z,dist:7,think:O_},{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:U_}];Ji={firstframe:35,lastframe:43,frames:ep,endfunc:null};var tp=[{ai:z,dist:-6},{ai:z,dist:-1},{ai:z,dist:-6},{ai:z,dist:0}];ec={firstframe:44,lastframe:47,frames:tp,endfunc:it};var np=Array.from({length:7},()=>({ai:Mt,dist:0}));R_={firstframe:83,lastframe:89,frames:np,endfunc:it};var qn=.1,rp=80,ip=24;function ap(e,t,n){te(e,qn,n)}function sp(e,t,n){ue(e,t,qn,n)}function ic(e,t,n){oe(e,t,qn,n)}function ie(e,t,n){ne(e,t,qn,n)}function Qi(e,t,n){ae(e,t)}var op,cp,ac,sc,up,dp,mp,lp;function hp(e){e.monsterinfo.current_move=sc}function ea(e){e.monsterinfo.current_move=ac}function lo(e,t){Qt(e,{x:rp,y:0,z:0},5,0,t)}function fp(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var gp=[{ai:ap,dist:0}];op={firstframe:41,lastframe:41,frames:gp,endfunc:null};var _p=Array.from({length:24},()=>({ai:ic,dist:ip}));sc={firstframe:70,lastframe:93,frames:_p,endfunc:null};var pp=Array.from({length:6},()=>({ai:ic,dist:8}));ac={firstframe:65,lastframe:70,frames:pp,endfunc:hp};var vp=Array.from({length:24},()=>({ai:sp,dist:4}));cp={firstframe:41,lastframe:64,frames:vp,endfunc:null};var yp=Array.from({length:5},()=>({ai:Qi,dist:0}));dp={firstframe:99,lastframe:103,frames:yp,endfunc:ea};var Sp=Array.from({length:5},()=>({ai:Qi,dist:0}));mp={firstframe:94,lastframe:98,frames:Sp,endfunc:ea};var wp=[{ai:ie,dist:0,think:fp},{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}];up={firstframe:0,lastframe:19,frames:wp,endfunc:ea};function xp(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var Ap=Array.from({length:56},()=>({ai:Qi,dist:0}));lp={firstframe:104,lastframe:159,frames:Ap,endfunc:xp};var Zn=.1;function Ep(e,t,n){te(e,Zn,n)}function kp(e,t,n){ue(e,t,Zn,n)}function Tp(e,t,n){oe(e,t,Zn,n)}function Mp(e,t,n){ne(e,t,Zn,n)}function oc(e,t,n){ae(e,t)}var ta,cc,uc,bp,Rp,dc;function zp(e){e.monsterinfo.current_move=ta}function Lp(e){e.monsterinfo.current_move=cc}function na(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=uc:e.monsterinfo.current_move=ta}function Np(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=C(N(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function Op(e){e.monsterinfo.nextframe=dc.lastframe,e.nextthink=-1}var Ip=Array.from({length:46},()=>({ai:Ep,dist:0}));ta={firstframe:0,lastframe:45,frames:Ip,endfunc:zp};var Cp=Array.from({length:46},()=>({ai:kp,dist:5}));cc={firstframe:0,lastframe:45,frames:Cp,endfunc:Lp};var Pp=Array.from({length:46},()=>({ai:Tp,dist:10}));uc={firstframe:0,lastframe:45,frames:Pp,endfunc:na};var Dp=Array.from({length:20},(e,t)=>({ai:Mp,dist:0,think:t===10?Np:null}));bp={firstframe:46,lastframe:65,frames:Dp,endfunc:na};var Fp=Array.from({length:6},()=>({ai:oc,dist:0}));Rp={firstframe:66,lastframe:71,frames:Fp,endfunc:na};var Up=Array.from({length:10},()=>({ai:oc,dist:0}));dc={firstframe:84,lastframe:93,frames:Up,endfunc:Op};var Jn=.1;function Bp(e,t,n){te(e,Jn,n)}function Gp(e,t,n){ue(e,t,Jn,n)}function Hp(e,t,n){oe(e,t,Jn,n)}function Vp(e,t,n){ne(e,t,Jn,n)}function mc(e,t,n){ae(e,t)}var ra,lc,hc,Wp,Kp,fc;function Xp(e){e.monsterinfo.current_move=ra}function $p(e){e.monsterinfo.current_move=lc}function ia(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=hc:e.monsterinfo.current_move=ra}function Yp(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=C(N(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function jp(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,C(N(e.enemy.origin,e.origin)),e.enemy.origin,K,n,5,2,0,t.timeSeconds)}function qp(e){e.monsterinfo.nextframe=fc.lastframe,e.nextthink=-1}var Zp=Array.from({length:46},()=>({ai:Bp,dist:0}));ra={firstframe:0,lastframe:45,frames:Zp,endfunc:Xp};var Jp=Array.from({length:46},()=>({ai:Gp,dist:5}));lc={firstframe:0,lastframe:45,frames:Jp,endfunc:$p};var Qp=Array.from({length:46},()=>({ai:Hp,dist:10}));hc={firstframe:0,lastframe:45,frames:Qp,endfunc:ia};var ev=Array.from({length:20},(e,t)=>({ai:Vp,dist:0,think:t===10?Yp:t===12?jp:null}));Wp={firstframe:46,lastframe:65,frames:ev,endfunc:ia};var tv=Array.from({length:6},()=>({ai:mc,dist:0}));Kp={firstframe:66,lastframe:71,frames:tv,endfunc:ia};var nv=Array.from({length:10},()=>({ai:mc,dist:0}));fc={firstframe:84,lastframe:93,frames:nv,endfunc:qp};var Qn=.1;function rv(e,t,n){te(e,Qn,n)}function iv(e,t,n){ue(e,t,Qn,n)}function av(e,t,n){oe(e,t,Qn,n)}function gc(e,t,n){ne(e,t,Qn,n)}function _c(e,t,n){ae(e,t)}var aa,pc,vc,sv,ov,cv,yc;function uv(e){e.monsterinfo.current_move=aa}function dv(e){e.monsterinfo.current_move=pc}function er(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=vc:e.monsterinfo.current_move=aa}function mv(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function lv(e,t){if(!e.enemy||!Wt(e,e.enemy))return;let n=qe(e,e.enemy);if(mv(n)!=="melee")return;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=C(N(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 hv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=C(N(e.enemy.origin,n));Co(e,n,r,50,100,0,t)}function fv(e){e.monsterinfo.nextframe=yc.lastframe,e.nextthink=-1}var gv=Array.from({length:30},()=>({ai:rv,dist:0}));aa={firstframe:0,lastframe:29,frames:gv,endfunc:uv};var _v=Array.from({length:40},()=>({ai:iv,dist:3}));pc={firstframe:30,lastframe:69,frames:_v,endfunc:dv};var pv=Array.from({length:20},()=>({ai:av,dist:12}));vc={firstframe:70,lastframe:89,frames:pv,endfunc:er};var vv=Array.from({length:10},(e,t)=>({ai:gc,dist:0,think:t===5?lv:null}));sv={firstframe:90,lastframe:99,frames:vv,endfunc:er};var yv=Array.from({length:12},(e,t)=>({ai:gc,dist:0,think:t===6?hv:null}));ov={firstframe:100,lastframe:111,frames:yv,endfunc:er};var Sv=Array.from({length:6},()=>({ai:_c,dist:0}));cv={firstframe:112,lastframe:117,frames:Sv,endfunc:er};var wv=Array.from({length:12},()=>({ai:_c,dist:0}));yc={firstframe:118,lastframe:129,frames:wv,endfunc:fv};var tr=.1;function xv(e,t,n){te(e,tr,n)}function Av(e,t,n){ue(e,t,tr,n)}function Ev(e,t,n){oe(e,t,tr,n)}function Sc(e,t,n){ne(e,t,tr,n)}function wc(e,t,n){ae(e,t)}var sa,xc,Ac,kv,Tv,Mv,Ec;function bv(e){e.monsterinfo.current_move=sa}function Rv(e){e.monsterinfo.current_move=xc}function nr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ac:e.monsterinfo.current_move=sa}function zv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},r=C(N(e.enemy.origin,n)),i=10,a=2;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),nt(e,n,r,i,a,0,0,0,t,5)}function Lv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=C(N(e.enemy.origin,n)),i=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Oo(t,e,n,r,i,a)}var Nv=Array.from({length:30},()=>({ai:xv,dist:0}));sa={firstframe:0,lastframe:29,frames:Nv,endfunc:bv};var Ov=Array.from({length:40},()=>({ai:Av,dist:2}));xc={firstframe:30,lastframe:69,frames:Ov,endfunc:Rv};var Iv=Array.from({length:20},()=>({ai:Ev,dist:10}));Ac={firstframe:70,lastframe:89,frames:Iv,endfunc:nr};var Cv=Array.from({length:10},(e,t)=>({ai:Sc,dist:0,think:t>=2&&t<=8?zv:null}));kv={firstframe:90,lastframe:99,frames:Cv,endfunc:nr};var Pv=Array.from({length:10},(e,t)=>({ai:Sc,dist:0,think:t===5?Lv:null}));Tv={firstframe:100,lastframe:109,frames:Pv,endfunc:nr};var Dv=Array.from({length:8},()=>({ai:wc,dist:0}));Mv={firstframe:110,lastframe:117,frames:Dv,endfunc:nr};var Fv=Array.from({length:15},()=>({ai:wc,dist:0}));function Uv(e){e.monsterinfo.nextframe=Ec.lastframe,e.nextthink=-1}Ec={firstframe:118,lastframe:132,frames:Fv,endfunc:Uv};var rr=.1;function Bv(e,t,n){te(e,rr,n)}function Gv(e,t,n){ue(e,t,rr,n)}function Hv(e,t,n){oe(e,t,rr,n)}function Vv(e,t,n){ne(e,t,rr,n)}function kc(e,t,n){ae(e,t)}var oa,Tc,Mc,Wv,Kv,bc;function Xv(e){e.monsterinfo.current_move=oa}function $v(e){e.monsterinfo.current_move=Tc}function ca(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Mc:e.monsterinfo.current_move=oa}function Yv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=C(N(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function jv(e){e.monsterinfo.nextframe=bc.lastframe,e.nextthink=-1}var qv=Array.from({length:46},()=>({ai:Bv,dist:0}));oa={firstframe:0,lastframe:45,frames:qv,endfunc:Xv};var Zv=Array.from({length:46},()=>({ai:Gv,dist:5}));Tc={firstframe:0,lastframe:45,frames:Zv,endfunc:$v};var Jv=Array.from({length:46},()=>({ai:Hv,dist:10}));Mc={firstframe:0,lastframe:45,frames:Jv,endfunc:ca};var Qv=Array.from({length:20},(e,t)=>({ai:Vv,dist:0,think:t===10?Yv:null}));Wv={firstframe:46,lastframe:65,frames:Qv,endfunc:ca};var ey=Array.from({length:6},()=>({ai:kc,dist:0}));Kv={firstframe:66,lastframe:71,frames:ey,endfunc:ca};var ty=Array.from({length:10},()=>({ai:kc,dist:0}));bc={firstframe:84,lastframe:93,frames:ty,endfunc:jv};var ir=.1;function ny(e,t,n){te(e,ir,n)}function ry(e,t,n){ue(e,t,ir,n)}function iy(e,t,n){oe(e,t,ir,n)}function ay(e,t,n){ne(e,t,ir,n)}function Rc(e,t,n){ae(e,t)}var ua,zc,Lc,sy,oy,Nc;function cy(e){e.monsterinfo.current_move=ua}function uy(e){e.monsterinfo.current_move=zc}function da(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Lc:e.monsterinfo.current_move=ua}function dy(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=C(N(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function my(e){e.monsterinfo.nextframe=Nc.lastframe,e.nextthink=-1}var ly=Array.from({length:46},()=>({ai:ny,dist:0}));ua={firstframe:0,lastframe:45,frames:ly,endfunc:cy};var hy=Array.from({length:46},()=>({ai:ry,dist:5}));zc={firstframe:0,lastframe:45,frames:hy,endfunc:uy};var fy=Array.from({length:46},()=>({ai:iy,dist:10}));Lc={firstframe:0,lastframe:45,frames:fy,endfunc:da};var gy=Array.from({length:20},(e,t)=>({ai:ay,dist:0,think:t===10?dy:null}));sy={firstframe:46,lastframe:65,frames:gy,endfunc:da};var _y=Array.from({length:6},()=>({ai:Rc,dist:0}));oy={firstframe:66,lastframe:71,frames:_y,endfunc:da};var py=Array.from({length:10},()=>({ai:Rc,dist:0}));Nc={firstframe:84,lastframe:93,frames:py,endfunc:my};var ar=.1;function vy(e,t,n){te(e,ar,n)}function yy(e,t,n){ue(e,t,ar,n)}function Sy(e,t,n){oe(e,t,ar,n)}function wy(e,t,n){ne(e,t,ar,n)}function ma(e,t,n){ae(e,t)}var la,Oc,Ic,xy,Ay,Cc,Ey;function ky(e){e.monsterinfo.current_move=la}function Ty(e){e.monsterinfo.current_move=Oc}function sr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ic:e.monsterinfo.current_move=la}function My(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=C(N(r,n));nt(e,n,i,5,2,.05,.05,0,t,4)}var by=Array.from({length:22},()=>({ai:vy,dist:0}));la={firstframe:0,lastframe:21,frames:by,endfunc:ky};var Ry=Array.from({length:15},()=>({ai:yy,dist:4}));Oc={firstframe:22,lastframe:36,frames:Ry,endfunc:Ty};var zy=Array.from({length:8},()=>({ai:Sy,dist:12}));Ic={firstframe:37,lastframe:44,frames:zy,endfunc:sr};var Ly=Array.from({length:15},(e,t)=>({ai:wy,dist:0,think:t>=5&&t<=7?My:null}));xy={firstframe:45,lastframe:59,frames:Ly,endfunc:sr};var Ny=Array.from({length:10},()=>({ai:ma,dist:0}));Ay={firstframe:60,lastframe:69,frames:Ny,endfunc:sr};var Oy=Array.from({length:20},()=>({ai:ma,dist:0}));function Iy(e){e.monsterinfo.nextframe=Cc.lastframe,e.nextthink=-1}Cc={firstframe:70,lastframe:89,frames:Oy,endfunc:Iy};var Cy=Array.from({length:5},()=>({ai:ma,dist:0}));Ey={firstframe:90,lastframe:94,frames:Cy,endfunc:sr};var or=.1,Py={x:40,y:-20,z:20},Dy={x:40,y:20,z:20},Fy={x:30,y:0,z:40};function Uy(e,t,n){te(e,or,n)}function By(e,t,n){ue(e,t,or,n)}function Gy(e,t,n){oe(e,t,or,n)}function ha(e,t,n){ne(e,t,or,n)}function tn(e,t,n){ae(e,t)}var fa,Pc,Dc,ga,bi,Hy,Vy,Wy,Ky,Fc;function Xy(e){e.monsterinfo.current_move=fa}function $y(e){e.monsterinfo.current_move=Pc}function bt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Dc:e.monsterinfo.current_move=fa}function Yy(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=ga:e.monsterinfo.current_move=bi}function Ri(e,t){let{forward:n,right:r,up:i}=J(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 jy(e,t){if(!e.enemy)return;let n=Ri(e,Dy),r=C(N(e.enemy.origin,n));Un(e,n,r,6,4,.05,.05,0,t,4);let i=Ri(e,Py),a=C(N(e.enemy.origin,i));Un(e,i,a,6,4,.05,.05,0,t,4)}function qy(e,t){if(!e.enemy)return;let n=Ri(e,Fy),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=C(N(r,n));Io(e,n,i,50,300,100,200,0,t)}function Zy(e){e.monsterinfo.nextframe=Fc.lastframe,e.nextthink=-1}function Jy(e,t){let n=t.spawn();n.classname="monster_makron",n.origin={...e.origin},n.angles={...e.angles}}var Qy=Array.from({length:51},()=>({ai:Uy,dist:0}));fa={firstframe:0,lastframe:50,frames:Qy,endfunc:Xy};var eS=Array.from({length:14},()=>({ai:By,dist:10}));Pc={firstframe:51,lastframe:64,frames:eS,endfunc:$y};var tS=Array.from({length:14},()=>({ai:Gy,dist:10}));Dc={firstframe:51,lastframe:64,frames:tS,endfunc:bt};var nS=Array.from({length:8},()=>({ai:ha,dist:0})),rS={firstframe:65,lastframe:72,frames:nS,endfunc:null},iS=Array.from({length:6},()=>({ai:ha,dist:0,think:jy}));ga={firstframe:73,lastframe:78,frames:iS,endfunc:Yy};rS.endfunc=e=>{e.monsterinfo.current_move=ga};var aS=Array.from({length:4},()=>({ai:tn,dist:0}));bi={firstframe:79,lastframe:82,frames:aS,endfunc:bt};var sS=Array.from({length:13},(e,t)=>({ai:ha,dist:0,think:t===6?qy:null}));Hy={firstframe:83,lastframe:95,frames:sS,endfunc:bt};var oS=Array.from({length:3},()=>({ai:tn,dist:0}));Vy={firstframe:96,lastframe:98,frames:oS,endfunc:bt};var cS=Array.from({length:3},()=>({ai:tn,dist:0}));Wy={firstframe:99,lastframe:101,frames:cS,endfunc:bt};var uS=Array.from({length:25},()=>({ai:tn,dist:0}));Ky={firstframe:102,lastframe:126,frames:uS,endfunc:bt};var dS=Array.from({length:50},(e,t)=>({ai:tn,dist:0,think:t===49?((n,r)=>{}):t===48?Jy:null}));Fc={firstframe:127,lastframe:176,frames:dS,endfunc:Zy};var cr=.1,mS={x:30,y:28,z:24},lS={x:26,y:16,z:24},hS={x:26,y:-14,z:24};function fS(e,t,n){te(e,cr,n)}function gS(e,t,n){ue(e,t,cr,n)}function _S(e,t,n){oe(e,t,cr,n)}function Uc(e,t,n){ne(e,t,cr,n)}function Rt(e,t,n){ae(e,t)}var _a,Bc,Gc,pS,Hc,vS,yS,SS,wS,Vc,xS;function AS(e){e.monsterinfo.current_move=_a}function ES(e){e.monsterinfo.current_move=Bc}function Je(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Gc:e.monsterinfo.current_move=_a}function pa(e,t){let{forward:n,right:r,up:i}=J(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 kS(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=pa(e,mS),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=C(N(r,n));Io(e,n,i,50,300,100,300,0,t)}function TS(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=pa(e,hS),r=C(N(e.pos1,n));Co(e,n,r,50,100,0,t)}function MS(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function bS(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=pa(e,lS),r=(e.monsterinfo.nextframe||0)-Hc.firstframe,i=0,a;if(e.enemy){let s={...e.enemy.origin};s.z+=e.enemy.viewheight||0;let o=N(s,n),u={...$t(o)};r<=12?u.y-=5*(r-4):u.y-=40-5*(r-12),a=J(u).forward}else{let{forward:s}=J(e.angles);a=s}He(e,n,a,15,1e3,0,0,t,1)}function RS(e){e.monsterinfo.nextframe=Vc.lastframe,e.nextthink=-1}var zS=Array.from({length:60},()=>({ai:fS,dist:0}));_a={firstframe:0,lastframe:59,frames:zS,endfunc:AS};var LS=Array.from({length:10},()=>({ai:gS,dist:8}));Bc={firstframe:60,lastframe:69,frames:LS,endfunc:ES};var NS=Array.from({length:10},()=>({ai:_S,dist:8}));Gc={firstframe:60,lastframe:69,frames:NS,endfunc:Je};var OS=Array.from({length:8},(e,t)=>({ai:Uc,dist:0,think:t===3?kS:null}));pS={firstframe:70,lastframe:77,frames:OS,endfunc:Je};var IS=Array.from({length:26},(e,t)=>({ai:Rt,dist:0,think:t>=4&&t<=20?bS:null}));Hc={firstframe:78,lastframe:103,frames:IS,endfunc:Je};var CS=Array.from({length:16},(e,t)=>({ai:Uc,dist:0,think:t===7?MS:t===8?TS:null}));vS={firstframe:104,lastframe:119,frames:CS,endfunc:Je};var PS=Array.from({length:4},()=>({ai:Rt,dist:0}));yS={firstframe:120,lastframe:123,frames:PS,endfunc:Je};var DS=Array.from({length:4},()=>({ai:Rt,dist:0}));SS={firstframe:124,lastframe:127,frames:DS,endfunc:Je};var FS=Array.from({length:27},()=>({ai:Rt,dist:0}));wS={firstframe:128,lastframe:154,frames:FS,endfunc:Je};var US=Array.from({length:95},()=>({ai:Rt,dist:0}));Vc={firstframe:155,lastframe:249,frames:US,endfunc:RS};var BS=Array.from({length:13},()=>({ai:Rt,dist:0}));xS={firstframe:250,lastframe:262,frames:BS,endfunc:Je};var Xt=.1;function GS(e,t,n){if(e.classname==="monster_medic"&&$c(e,n)){e.monsterinfo.current_move=nn;return}te(e,Xt,n)}function HS(e,t,n){ue(e,t,Xt,n)}function VS(e,t,n){e.classname==="monster_medic"&&$c(e,n)?e.monsterinfo.current_move=nn:oe(e,t,Xt,n)}function Ce(e,t,n){ne(e,t,Xt,n)}function va(e,t,n){ae(e,t)}var ya,Wc,nn,WS,Kc,KS,XS,Xc;function $S(e){e.monsterinfo.current_move=ya}function YS(e){e.monsterinfo.current_move=Wc}function rn(e){if(e.classname==="monster_medic"&&e.enemy&&e.enemy.deadflag===2&&qe(e,e.enemy)<80){e.monsterinfo.current_move=Kc;return}e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=nn:e.monsterinfo.current_move=ya}function jS(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=C(N(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=J(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,_e.temp_entity,{te:Se.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:c,end:u})}function qS(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),$e(e,t)}function ZS(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 $c(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 JS(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=J(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,ge|rt|Vn);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,_e.muzzleflash,{entId:d.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function QS(e){e.monsterinfo.nextframe=Xc.lastframe,e.nextthink=-1}var ew=Array.from({length:30},()=>({ai:GS,dist:0}));ya={firstframe:0,lastframe:29,frames:ew,endfunc:$S};var tw=Array.from({length:40},()=>({ai:HS,dist:3}));Wc={firstframe:30,lastframe:69,frames:tw,endfunc:YS};var nw=Array.from({length:20},()=>({ai:VS,dist:12}));nn={firstframe:70,lastframe:89,frames:nw,endfunc:rn};var rw=Array.from({length:16},(e,t)=>({ai:Ce,dist:0,think:t>=4&&t<=13?jS:null}));WS={firstframe:90,lastframe:105,frames:rw,endfunc:rn};var iw=[{ai:Ce,dist:0,think:qS},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:ZS}];Kc={firstframe:106,lastframe:114,frames:iw,endfunc:rn};var aw=Array.from({length:6},()=>({ai:va,dist:0}));XS={firstframe:116,lastframe:121,frames:aw,endfunc:rn};var sw=Array.from({length:23},(e,t)=>({ai:va,dist:0,think:t===11?JS:null}));KS={firstframe:122,lastframe:144,frames:sw,endfunc:rn};var ow=Array.from({length:30},()=>({ai:va,dist:0}));Xc={firstframe:161,lastframe:190,frames:ow,endfunc:QS};var an=.1;function b(e,t,n){te(e,an,n)}function pe(e,t,n){ue(e,t,an,n)}function pt(e,t,n){oe(e,t,an,n)}function Xe(e,t,n){ne(e,t,an,n)}function X(e,t,n){ae(e,t)}function Si(e,t,n){v1(e,null,t,an)}var Yc,jc,Bn,cw,uw,dw,mw,qc,Zc;function lw(e){e.monsterinfo.current_move=jc}function hw(e){e.monsterinfo.current_move=Yc}function zt(e){e.monsterinfo.current_move=Bn}function Jc(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let r=N(e.enemy.origin,e.origin);if(At(r)>100)return;let a=C(r);le(e.enemy,e,e,a,e.enemy.origin,K,t,0,0,0,n.timeSeconds)}function fw(e,t){Jc(e,30,t)}function ho(e,t){Jc(e,30,t)}function St(e,t){e.flags&1&&e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Bn),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Bn)}function gw(e,t,n,r){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),le(t,e,e,C(e.velocity),e.origin,K,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function _w(e,t){let n=J(e.angles).forward;e.movetype=7,e.touch=gw,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 pw(e){e.monsterinfo.nextframe=qc.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var vw=[{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}];Yc={firstframe:0,lastframe:50,frames:vw,endfunc:hw};var yw=[{ai:pe,dist:3},{ai:pe,dist:1},{ai:pe,dist:5},{ai:pe,dist:10},{ai:pe,dist:13},{ai:pe,dist:12},{ai:pe,dist:0},{ai:pe,dist:0},{ai:pe,dist:5},{ai:pe,dist:6},{ai:pe,dist:16},{ai:pe,dist:15},{ai:pe,dist:6}];jc={firstframe:51,lastframe:63,frames:yw,endfunc:lw};var Sw=[{ai:pt,dist:20},{ai:pt,dist:15},{ai:pt,dist:35},{ai:pt,dist:20},{ai:pt,dist:10},{ai:pt,dist:20}];Bn={firstframe:64,lastframe:69,frames:Sw,endfunc:zt};var ww=[{ai:Xe,dist:0},{ai:Xe,dist:0},{ai:Xe,dist:0,think:ho},{ai:Xe,dist:0},{ai:Xe,dist:0,think:fw},{ai:Xe,dist:0},{ai:Xe,dist:0,think:ho},{ai:Xe,dist:0}];cw={firstframe:70,lastframe:77,frames:ww,endfunc:zt};var xw=[{ai:Si,dist:0},{ai:Si,dist:0},{ai:Si,dist:0,think:_w},{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}];Zc={firstframe:93,lastframe:100,frames:xw,endfunc:zt};Zc.frames[3].ai=(e,t,n)=>{St(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var Aw=[{ai:X,dist:4},{ai:X,dist:-3},{ai:X,dist:-8},{ai:X,dist:2},{ai:X,dist:5}];uw={firstframe:78,lastframe:82,frames:Aw,endfunc:zt};var Ew=[{ai:X,dist:-24},{ai:X,dist:11},{ai:X,dist:5},{ai:X,dist:-2}];dw={firstframe:83,lastframe:86,frames:Ew,endfunc:zt};var kw=[{ai:X,dist:11},{ai:X,dist:0},{ai:X,dist:-2},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0}];mw={firstframe:87,lastframe:92,frames:kw,endfunc:zt};var Tw=[{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}];qc={firstframe:101,lastframe:109,frames:Tw,endfunc:pw};var ur=.1,Mw=()=>Math.random();function G(e,t,n){te(e,ur,n)}function Ue(e,t,n){ue(e,t,ur,n)}function Be(e,t,n){oe(e,t,ur,n)}function de(e,t,n){ne(e,t,ur,n)}function me(e,t,n){ae(e,t)}var Sa,Qc,eu,bw,Rw,tu,nu,zw,Lw,wa,ru;function Nw(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Ow(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 zi(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function Iw(e){e.monsterinfo.current_move=wa}function Cw(e){Mw()<=.8?e.monsterinfo.current_move=wa:e.monsterinfo.current_move=ru}function iu(e){e.monsterinfo.current_move=Sa}function xa(e){e.monsterinfo.current_move=Qc}function au(e){e.monsterinfo.current_move=nu}function su(e){e.monsterinfo.aiflags&&e.monsterinfo.aiflags&1?e.monsterinfo.current_move=Sa:e.monsterinfo.current_move=eu}function wi(e,t){let n=N(t,e);if(At(n)>256)return!1;let a=$t(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function be(e,t){if(!e.enemy)return;let n=J(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=Zh(e.enemy.origin);if(!wi(o,c)&&(c={...c,z:e.enemy.origin.z+e.enemy.maxs.z-8},!wi(o,c)&&(c={...c,z:e.enemy.origin.z+e.enemy.mins.z+8},!wi(o,c)))||t.trace(o,c,K,K,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,_e.temp_entity,{te:Se.PARASITE_ATTACK,entId:e.index,start:o,end:c});let l=C(N(o,c));le(e.enemy,e,e,l,e.enemy.origin,K,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 Pw(e){e.monsterinfo.nextframe=tu.lastframe,e.nextthink=-1,e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8}}var Dw=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0,think:vt}];Sa={firstframe:83,lastframe:99,frames:Dw,endfunc:iu};var Fw=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0}];Lw={firstframe:100,lastframe:103,frames:Fw,endfunc:Iw};var Uw=[{ai:G,dist:0,think:zi},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:zi},{ai:G,dist:0},{ai:G,dist:0}];wa={firstframe:104,lastframe:109,frames:Uw,endfunc:Cw};var Bw=[{ai:G,dist:0,think:zi},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0}];ru={firstframe:110,lastframe:117,frames:Bw,endfunc:iu};var Gw=[{ai:Be,dist:0},{ai:Be,dist:30}];nu={firstframe:68,lastframe:69,frames:Gw,endfunc:su};var Hw=[{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}];eu={firstframe:70,lastframe:76,frames:Hw,endfunc:su};var Vw=[{ai:Ue,dist:0},{ai:Ue,dist:30,think:xa}];zw={firstframe:68,lastframe:69,frames:Vw,endfunc:xa};var Ww=[{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}];Qc={firstframe:70,lastframe:76,frames:Ww,endfunc:xa};var Kw=[{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}];Rw={firstframe:57,lastframe:67,frames:Kw,endfunc:au};var Xw=[{ai:de,dist:0,think:Nw},{ai:de,dist:0},{ai:de,dist:15,think:be},{ai:de,dist:0,think:be},{ai:de,dist:0,think:be},{ai:de,dist:0,think:be},{ai:de,dist:0,think:be},{ai:de,dist:-2,think:be},{ai:de,dist:-2,think:be},{ai:de,dist:-3,think:be},{ai:de,dist:-2,think:be},{ai:de,dist:0,think:be},{ai:de,dist:-1,think:be},{ai:de,dist:0,think:Ow},{ai:de,dist:-2},{ai:de,dist:-2},{ai:de,dist:-3},{ai:de,dist:0}];bw={firstframe:39,lastframe:56,frames:Xw,endfunc:au};var $w=[{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}];tu={firstframe:32,lastframe:38,frames:$w,endfunc:Pw};var dr=.1;var Yw=2;function jw(e,t,n){te(e,dr,n)}function qw(e,t,n){ue(e,t,dr,n)}function Zw(e,t,n){oe(e,t,dr,n)}function ou(e,t,n){ne(e,t,dr,n)}function cu(e,t,n){ae(e,t)}var Aa,uu,du,Jw,Qw,ex,mu;function tx(e){e.monsterinfo.current_move=Aa}function nx(e){e.monsterinfo.current_move=uu}function mr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=du:e.monsterinfo.current_move=Aa}function Ea(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function ka(e,t){if(!e.enemy){let{forward:r}=J(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 C(N(n,t))}function rx(e,t){if(!e.enemy)return;let n=Ea(e),r=ka(e,n);He(e,n,r,5,600,0,0,t,1)}function ix(e,t){if(!e.enemy)return;let n=Ea(e),r=ka(e,n),i=2,a=4,s=20,o=.15,c=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),cg(e,n,r,i,a,o,c,s,0,t,3)}function ax(e,t){if(!e.enemy)return;let n=Ea(e),r=ka(e,n),i=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),nt(e,n,r,i,a,s,o,0,t,4)}function sx(e,t){e.spawnflags&Yw?ix(e,t):rx(e,t)}var ox=Array.from({length:30},()=>({ai:jw,dist:0}));Aa={firstframe:0,lastframe:29,frames:ox,endfunc:tx};var cx=Array.from({length:40},()=>({ai:qw,dist:2}));uu={firstframe:30,lastframe:69,frames:cx,endfunc:nx};var ux=Array.from({length:20},()=>({ai:Zw,dist:10}));du={firstframe:70,lastframe:89,frames:ux,endfunc:mr};var dx=Array.from({length:10},(e,t)=>({ai:ou,dist:0,think:t===5?sx:null}));Jw={firstframe:90,lastframe:99,frames:dx,endfunc:mr};var mx=Array.from({length:10},(e,t)=>({ai:ou,dist:0,think:t>=4&&t<=8?ax:null}));Qw={firstframe:90,lastframe:99,frames:mx,endfunc:mr};var lx=Array.from({length:6},()=>({ai:cu,dist:0}));ex={firstframe:100,lastframe:105,frames:lx,endfunc:mr};var hx=Array.from({length:10},()=>({ai:cu,dist:0}));function fx(e){e.monsterinfo.nextframe=mu.lastframe,e.nextthink=-1}mu={firstframe:106,lastframe:115,frames:hx,endfunc:fx};var lu=.1,gx={x:30,y:30,z:40},_x={x:30,y:-30,z:40},px={x:20,y:0,z:70};function vx(e,t,n){te(e,lu,n)}function yx(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ma:e.monsterinfo.current_move=lr}function Ta(e,t,n){ne(e,t,lu,n)}function sn(e,t,n){ae(e,t)}var lr,Ma,Sx,wx,hu,fu,xx,Ax,Ex,gu;function kx(e){e.monsterinfo.current_move=lr}function at(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ma:e.monsterinfo.current_move=lr}function ba(e,t){let{forward:n,right:r,up:i}=J(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 Tx(e,t){if(!e.enemy)return;let n=ba(e,_x),r=C(N(e.enemy.origin,n));Jt(e,n,r,50,650,0,t)}function Mx(e,t){if(!e.enemy)return;let n=ba(e,px),r=C(N(e.enemy.origin,n));ug(e,n,r,50,600,0,t)}function bx(e,t){if(!e.enemy)return;let n=ba(e,gx),r=C(N(e.enemy.origin,n));Un(e,n,r,6,4,.05,.05,0,t,4)}function Rx(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=hu:e.monsterinfo.current_move=fu}function zx(e){e.monsterinfo.nextframe=gu.lastframe,e.nextthink=-1}var Lx=Array.from({length:60},()=>({ai:vx,dist:0}));lr={firstframe:0,lastframe:59,frames:Lx,endfunc:kx};var Nx=Array.from({length:18},()=>({ai:yx,dist:12}));Ma={firstframe:60,lastframe:77,frames:Nx,endfunc:at};var Ox=Array.from({length:4},()=>({ai:sn,dist:0}));Ex={firstframe:78,lastframe:81,frames:Ox,endfunc:at};var Ix=Array.from({length:4},()=>({ai:sn,dist:0}));Ax={firstframe:82,lastframe:85,frames:Ix,endfunc:at};var Cx=Array.from({length:4},()=>({ai:sn,dist:0}));xx={firstframe:86,lastframe:89,frames:Cx,endfunc:at};var Px=Array.from({length:24},()=>({ai:sn,dist:0}));gu={firstframe:90,lastframe:113,frames:Px,endfunc:zx};var Dx=Array.from({length:6},(e,t)=>({ai:Ta,dist:0,think:t===0||t===3?Mx:null}));wx={firstframe:114,lastframe:119,frames:Dx,endfunc:at};var Fx=Array.from({length:27},(e,t)=>({ai:Ta,dist:0,think:t===7||t===10||t===13?Tx:null}));Sx={firstframe:120,lastframe:146,frames:Fx,endfunc:at};var Ux=Array.from({length:6},()=>({ai:Ta,dist:0,think:bx}));hu={firstframe:147,lastframe:152,frames:Ux,endfunc:Rx};var Bx=Array.from({length:14},()=>({ai:sn,dist:0}));fu={firstframe:153,lastframe:166,frames:Bx,endfunc:at};var Ra=.1;function Gx(e,t,n){te(e,Ra,n)}function Hx(e,t,n){ue(e,t,Ra,n)}function Vx(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=La:e.monsterinfo.current_move=hr}function za(e,t,n){ne(e,t,Ra,n)}function _u(e,t,n){ae(e,t)}var hr,pu,La,Wx,Kx,Xx,$x,vu;function Yx(e){e.monsterinfo.current_move=hr}function jx(e){e.monsterinfo.current_move=pu}function on(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=La:e.monsterinfo.current_move=hr}function qx(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=C(N(e.enemy.origin,n));He(e,n,r,30,1e3,0,0,t,1)}function Zx(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=C(N(e.enemy.origin,n));nt(e,n,r,20,2,.05,.05,0,t,4)}function xi(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=C(N(e.enemy.origin,n));Jt(e,n,r,50,650,0,t)}function Jx(e){e.monsterinfo.nextframe=vu.lastframe,e.nextthink=-1}var Qx=Array.from({length:30},()=>({ai:Gx,dist:0}));hr={firstframe:0,lastframe:29,frames:Qx,endfunc:Yx};var eA=Array.from({length:16},()=>({ai:Hx,dist:5}));pu={firstframe:30,lastframe:45,frames:eA,endfunc:jx};var tA=Array.from({length:16},()=>({ai:Vx,dist:10}));La={firstframe:46,lastframe:61,frames:tA,endfunc:on};var nA=Array.from({length:16},(e,t)=>({ai:za,dist:0,think:t>5&&t<12?qx:null}));Wx={firstframe:62,lastframe:77,frames:nA,endfunc:on};var rA=Array.from({length:20},(e,t)=>({ai:za,dist:0,think:t%2===0&&t>5?Zx:null}));Kx={firstframe:78,lastframe:97,frames:rA,endfunc:on};var iA=Array.from({length:18},(e,t)=>({ai:za,dist:0,think:t===8||t===12||t===16?xi:null}));Xx={firstframe:98,lastframe:115,frames:iA,endfunc:on};var aA=Array.from({length:6},()=>({ai:_u,dist:0}));$x={firstframe:116,lastframe:121,frames:aA,endfunc:on};var sA=Array.from({length:16},()=>({ai:_u,dist:0}));vu={firstframe:122,lastframe:137,frames:sA,endfunc:Jx};var Na=.1;function oA(e,t,n){te(e,Na,n)}function Oa(e,t,n){oe(e,t,Na,n)}function cA(e,t,n){ne(e,t,Na,n)}var Ia,yu,uA,dA,Su;function mA(e){e.monsterinfo.current_move=Ia}function Ca(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=yu:e.monsterinfo.current_move=Ia}function lA(e,t){if(!e.enemy)return;let n=J(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=C(N(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 hA=Array.from({length:1},()=>({ai:oA,dist:0}));Ia={firstframe:0,lastframe:0,frames:hA,endfunc:mA};var fA=Array.from({length:1},()=>({ai:Oa,dist:0}));yu={firstframe:0,lastframe:0,frames:fA,endfunc:Ca};var gA=Array.from({length:8},(e,t)=>({ai:cA,dist:0,think:t===4?lA:void 0}));uA={firstframe:1,lastframe:8,frames:gA,endfunc:Ca};var _A=Array.from({length:2},()=>({ai:Oa,dist:0}));dA={firstframe:9,lastframe:10,frames:_A,endfunc:Ca};var pA=Array.from({length:4},()=>({ai:Oa,dist:0}));function vA(e){e.monsterinfo.nextframe=Su.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}Su={firstframe:11,lastframe:14,frames:pA,endfunc:vA};var ak=new Map(Fi.map(e=>[e.name,e]));var yA=2166136261,SA=16777619;function wu(e,t){let n=e>>>0;for(let r=0;r<t.length;r+=1)n^=t[r]&255,n=Math.imul(n,SA)>>>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 wu(e,i)}function Li(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r)&255;return wu(e,n)}var Ai=2,wA=1;function ye(e,t){if(!e||typeof e!="object"||Array.isArray(e))throw new Error(`${t} must be an object`);return e}function Z(e,t){if(typeof e!="number"||!Number.isFinite(e))throw new Error(`${t} must be a finite number`);return e}function On(e,t,n){return e===void 0?n:Z(e,t)}function Gn(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Cn(e,t){if(!Array.isArray(e))throw new Error(`${t} must be an array`);for(let n of e)Z(n,`${t} element`);return e}function xA(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=ye(e,"level");return{frameNumber:On(t.frameNumber,"level.frameNumber",0),timeSeconds:On(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:On(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:On(t.deltaSeconds,"level.deltaSeconds",0)}}function AA(e){if(e===void 0)return new vo().getState();let t=ye(e,"rng"),n=ye(t.mt,"rng.mt"),r=Cn(n.state,"rng.mt.state");return{mt:{index:Z(n.index,"rng.mt.index"),state:r}}}function EA(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=ye(t,`thinks[${n}]`);return{time:Z(r.time,`thinks[${n}].time`),entityIndex:Z(r.entityIndex,`thinks[${n}].entityIndex`)}})}function kA(e){if(e===void 0)return{frameNumber:0,sightEntityIndex:null,sightEntityFrame:0,soundEntityIndex:null,soundEntityFrame:0,sound2EntityIndex:null,sound2EntityFrame:0,sightClientIndex:null};let t=ye(e,"awareness"),n=(r,i)=>r===null?null:Z(r,i);return{frameNumber:Z(t.frameNumber,"awareness.frameNumber"),sightEntityIndex:n(t.sightEntityIndex,"awareness.sightEntityIndex"),sightEntityFrame:Z(t.sightEntityFrame,"awareness.sightEntityFrame"),soundEntityIndex:n(t.soundEntityIndex,"awareness.soundEntityIndex"),soundEntityFrame:Z(t.soundEntityFrame,"awareness.soundEntityFrame"),sound2EntityIndex:n(t.sound2EntityIndex,"awareness.sound2EntityIndex"),sound2EntityFrame:Z(t.sound2EntityFrame,"awareness.sound2EntityFrame"),sightClientIndex:n(t.sightClientIndex,"awareness.sightClientIndex")}}function TA(e){if(e===void 0)return{};let t=ye(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=ye(i,r),s={};for(let[o,c]of Object.entries(a))s[o]=Z(c,`${r}.${o}`);n[r]=s;break}if(Array.isArray(i)&&i.length===3){let[a,s,o]=i;n[r]=[Z(a,`${r}[0]`),Z(s,`${r}[1]`),Z(o,`${r}[2]`)];break}throw new Error(`Unsupported entity field value for ${r}`)}}}return n}function MA(e){if(!Array.isArray(e))throw new Error("entities must be an array");return e.map((t,n)=>{let r=ye(t,`entities[${n}]`);return{index:Z(r.index,`entities[${n}].index`),fields:TA(r.fields)}})}function bA(e){let t=ye(e,"pool");return{capacity:Z(t.capacity,"pool.capacity"),activeOrder:Cn(t.activeOrder,"pool.activeOrder"),freeList:Cn(t.freeList,"pool.freeList"),pendingFree:Cn(t.pendingFree,"pool.pendingFree")}}function RA(e){let t=ye(e,"entities");return{timeSeconds:Z(t.timeSeconds,"entities.timeSeconds"),pool:bA(t.pool),entities:MA(t.entities),thinks:EA(t.thinks),awareness:kA(t.awareness)}}function zA(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=ye(t,`cvars[${n}]`);return{name:Gn(r.name,`cvars[${n}].name`),value:Gn(r.value,`cvars[${n}].value`),flags:Z(r.flags,`cvars[${n}].flags`)}})}function LA(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Gn(t,`configstrings[${n}]`))}function NA(e){return e===void 0?{}:ye(e,"gameState")}function Ge(e,t){if(t==null)return e;if(typeof t=="number")return wt(e,t);if(typeof t=="string")return Li(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=Li(n,i),n=Ge(n,t[i]);return n}return e}function OA(e){let t=yA;return t=wt(t,e.version),t=wt(t,e.timestamp),t=Li(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 xu(e,t={}){let{allowNewerVersion:n=!0}=t,r=typeof e=="string"?JSON.parse(e):e,i=ye(r,"save"),a=i.version??Ai,s=Z(a,"version");if(s<wA)throw new Error(`Unsupported save version ${s}`);if(s>Ai&&!n)throw new Error(`Save version ${s} is newer than supported ${Ai}`);let o={version:s,timestamp:Z(i.timestamp,"timestamp"),map:Gn(i.map,"map"),difficulty:Z(i.difficulty,"difficulty"),playtimeSeconds:Z(i.playtimeSeconds,"playtimeSeconds"),gameState:NA(i.gameState),level:xA(i.level),rng:AA(i.rng),entities:RA(i.entities),cvars:zA(i.cvars),configstrings:LA(i.configstrings),player:i.player?i.player:void 0,checksum:i.checksum!==void 0?Z(i.checksum,"checksum"):void 0};if(o.checksum!==void 0){let c=OA(o);if(c!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${c}`)}return o}var sk=new Set(Fi.filter(e=>e.save).map(e=>e.name));var fo=globalThis.TextEncoder;function xt(e){return xu({...e},{allowNewerVersion:!0})}function IA(e){return fo?new fo().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var CA=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)}))}},PA=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)}))}},Pa=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 PA(i,n,r):this.adapter=new CA}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:IA(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 xu(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)}};Pa.DEFAULT_DB_NAME="quake2ts-saves";Pa.DEFAULT_STORE="saves";Pa.QUICK_SLOT="quicksave";var ok=Ci();var ck=[I.Blaster,I.Shotgun,I.SuperShotgun,I.Machinegun,I.Chaingun,I.GrenadeLauncher,I.RocketLauncher,I.HyperBlaster,I.Railgun,I.BFG10K],uk=[{id:$.QuadDamage,priority:1},{id:$.Invulnerability,priority:2},{id:$.EnviroSuit,priority:3},{id:$.Rebreather,priority:4},{id:$.Silencer,priority:5}];var DA=new Map,FA=["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"],Au=async(e,t)=>{for(let n of FA)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);DA.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var UA=new Map,BA=["d_left","d_right","d_up","d_down"],Eu=async(e,t)=>{for(let n of BA)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);UA.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Da=[],GA=0,ku=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);Da.push(i)}catch(r){console.error(`Failed to load HUD image: pics/hud/num_${n}.pcx`,r)}Da.length>0&&(GA=Da[0].width),await to(e,t),await Au(e,t),await Eu(e,t)};var Fa=[{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:I.Grapple},{type:"weapon",id:I.Blaster},{type:"weapon",id:I.ChainFist},{type:"weapon",id:I.Shotgun},{type:"weapon",id:I.SuperShotgun},{type:"weapon",id:I.Machinegun},{type:"weapon",id:I.EtfRifle},{type:"weapon",id:I.Chaingun},{type:"ammo",id:W.Grenades},{type:"ammo",id:W.Trap},{type:"ammo",id:W.Tesla},{type:"weapon",id:I.GrenadeLauncher},{type:"weapon",id:I.ProxLauncher},{type:"weapon",id:I.RocketLauncher},{type:"weapon",id:I.HyperBlaster},{type:"weapon",id:I.IonRipper},{type:"weapon",id:I.PlasmaBeam},{type:"weapon",id:I.Railgun},{type:"weapon",id:I.Phalanx},{type:"weapon",id:I.BFG10K},{type:"weapon",id:I.Disruptor},{type:"ammo",id:W.Shells},{type:"ammo",id:W.Bullets},{type:"ammo",id:W.Cells},{type:"ammo",id:W.Rockets},{type:"ammo",id:W.Slugs},{type:"ammo",id:W.MagSlugs},{type:"ammo",id:W.Flechettes},{type:"ammo",id:W.Prox},{type:"ammo",id:W.Nuke},{type:"ammo",id:W.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:ce.DataCD},{type:"key",id:ce.PowerCube},{type:"key",id:ce.ExplosiveCharges},{type:"key",id:ce.Yellow},{type:"key",id:ce.PowerCore},{type:"key",id:ce.Pyramid},{type:"key",id:ce.DataSpinner},{type:"key",id:ce.Pass},{type:"key",id:ce.Blue},{type:"key",id:ce.Red},{type:"key",id:ce.Green},{type:"key",id:ce.CommanderHead},{type:"key",id:ce.Airstrike},{type:"key",id:ce.NukeContainer},{type:"key",id:ce.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:ce.RedFlag},{type:"key",id:ce.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 HA=2048,fr=class{constructor(t,n){this.configstrings=new Array(HA).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&hs){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&Wr&&(t.modelindex=n.modelindex),r&Xr&&(t.modelindex2=n.modelindex2),r&$r&&(t.modelindex3=n.modelindex3),r&Yr&&(t.modelindex4=n.modelindex4),r&Br&&(t.frame=n.frame),r&Kr&&(t.frame=n.frame),(r&_n||r&yn)&&(t.skinnum=n.skinnum),(r&gn||r&vn)&&(t.effects=n.effects),(r&fn||r&pn)&&(t.renderfx=n.renderfx),r&Pr&&(t.origin.x=n.origin.x),r&Dr&&(t.origin.y=n.origin.y),r&Hr&&(t.origin.z=n.origin.z),r&Vr&&(t.angles.x=n.angles.x),r&Fr&&(t.angles.y=n.angles.y),r&Ur&&(t.angles.z=n.angles.z),r&jr&&(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&qr&&(t.sound=n.sound),r&Gr&&(t.event=n.event),r&Zr&&(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>=Fa.length)break;let d=Fa[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:et.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 tt();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>=ee.Models&&t<ee.Models+Pt){let r=t-ee.Models;this.models[r]=n}else if(t>=ee.Sounds&&t<ee.Sounds+Dt){let r=t-ee.Sounds;this.sounds[r]=n}else if(t>=ee.Images&&t<ee.Images+Ft){let r=t-ee.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 gr=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 _r=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} (${Tu(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} (${Tu(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 Tu(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 pr=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 vr=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 yr=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 Mu(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 g=Date.now();Math.floor(g/500)%2===0&&(h+="_")}}else d.type==="toggle"&&d.getValue&&(h+=`: ${d.getValue()}`);if(m===t.selectedIndex){let p=h.replace(/\^[0-9]/g,"").length*8,y=(n-p)/2;e.drawString(y-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 Sr=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 wr=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 xr=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 Ar=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 VA=[{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"}],st=class{constructor(t=VA){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 bu(){return new st}function Ua(e){return e}function dn(e){return e.trim().toLowerCase()}var WA=250,Ba=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}}},Er=(p=>(p.Forward="+forward",p.Back="+back",p.MoveLeft="+moveleft",p.MoveRight="+moveright",p.MoveUp="+moveup",p.MoveDown="+movedown",p.Jump="+jump",p.Crouch="+crouch",p.Attack="+attack",p.Use="+use",p.Holster="+holster",p.TurnLeft="+left",p.TurnRight="+right",p.LookUp="+lookup",p.LookDown="+lookdown",p.SpeedModifier="+speed",p.Zoom="+zoom",p))(Er||{}),KA={"+attack":Ne.Attack,"+use":Ne.Use,"+holster":Ne.Holster,"+jump":Ne.Jump,"+crouch":Ne.Crouch},XA=new Map(Object.values(Er).map(e=>[dn(e),e]));function $A(e){return XA.get(dn(e))}function mn(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Nt=class{constructor(t={},n=new st){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??Ts,this.sideSpeed=t.sideSpeed??Ms,this.upSpeed=t.upSpeed??bs,this.yawSpeed=t.yawSpeed??Rs,this.pitchSpeed=t.pitchSpeed??zs,this.sensitivity=t.sensitivity??Ls,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 B=this.gamepadLook.y*(this.invertGamepadY?-1:1);d={x:d.x+B*a*this.gamepadLookScale,y:d.y+this.gamepadLook.x*i*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let B=this.touchLook.y*(this.invertMouseY?-1:1);d={x:d.x+B*a,y:d.y+this.touchLook.x*i,z:0}}if(this.pointerLocked||!this.requirePointerLock){let B=this.sampleMouseDelta(),H=Os(B,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});d={x:d.x+H.x,y:d.y+H.y,z:0}}let m=Ns(this.viewAngles,d);this.viewAngles=m;let l=this.sample("+forward",t,n),h=this.sample("+back",t,n),g=this.sample("+moveleft",t,n),v=this.sample("+moveright",t,n),f=this.sample("+moveup",t,n),p=this.sample("+movedown",t,n),y=this.sample("+speed",t,n),E=this.sample("+jump",t,n),S=this.sample("+crouch",t,n),A=this.runByDefault?y.active?.5:1:y.active?1:.5,x=this.forwardSpeed*(l.fraction-h.fraction)*A,P=this.sideSpeed*(v.fraction-g.fraction)*A,_=this.upSpeed*(f.fraction-p.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(x+=this.forwardSpeed*this.gamepadMove.y*A,P+=this.sideSpeed*this.gamepadMove.x*A),(this.touchMove.x!==0||this.touchMove.y!==0)&&(x+=this.forwardSpeed*this.touchMove.y*A,P+=this.sideSpeed*this.touchMove.x*A),this.jumpAddsUpMove&&E.fraction>0&&(_+=this.upSpeed*E.fraction),this.crouchAddsDownMove&&S.fraction>0&&(_-=this.upSpeed*S.fraction),x=this.clampMove(x,this.forwardSpeed),P=this.clampMove(P,this.sideSpeed),_=this.clampMove(_,this.upSpeed);let k=this.collectButtonBits(t,n),w=Math.min(Math.max(Math.round(t),1),WA);return(this.anyPressed||k!==Ne.None)&&(k|=Ne.Any),this.anyPressed=!1,{msec:w,buttons:k,angles:{...this.viewAngles},forwardmove:x,sidemove:P,upmove:_,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=$A(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=Ne.None;for(let[i,a]of Object.entries(KA)){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 Ba,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 kr=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 Ga={x:0,y:0,z:0};function Tr(e,t,n){return e+(t-e)*n}function Ha(e,t,n){return Tr(e,t,n)}function YA(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:Tr(u.origin.x,c.origin.x,n),y:Tr(u.origin.y,c.origin.y,n),z:Tr(u.origin.z,c.origin.z,n)},h={x:Ha(u.angles.x,c.angles.x,n),y:Ha(u.angles.y,c.angles.y,n),z:Ha(u.angles.z,c.angles.z,n)},g=c.frame,v=u.frame,f=j.create();j.translate(f,f,[l.x,l.y,l.z]),j.rotateZ(f,f,h.z*Math.PI/180),j.rotateY(f,f,h.y*Math.PI/180),j.rotateX(f,f,h.x*Math.PI/180),m.header.magic===844121161?a.push({type:"md2",model:m,blend:{frame0:v,frame1:g,lerp:n},transform:f,skin:c.skinNum>0?r.getImageName(c.skinNum):void 0}):m.header.magic===860898377&&a.push({type:"md3",model:m,blend:{frame0:v,frame1:g,lerp:n},transform:f})}return a}function jA(e){let t=new Nn(e.engine.trace),n=new Ln,r=new fs,i=new fr(e),a=new pr,s=new wr,o=new xr,c=new Ar,u=new un(new Sr),d,m,l=new Lt,h,g=!1,f=eo(e,{get tickRate(){return 10},get frameTimeMs(){return h?.timeMs??0},get serverFrame(){return i.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return l},getClientName:_=>`Player ${_}`,getKeyBinding:_=>`[${_}]`,get inAutoDemo(){return g}}),p=Qs(f);i.setCallbacks({onCenterPrint:_=>p.ParseCenterPrint(_,0,!1),onPrint:(_,k)=>p.NotifyMessage(0,k,!1),onConfigString:(_,k)=>{l.set(_,k),p.ParseConfigString(_,k)}}),r.setHandler(i);let y,E,S,A=90,x=!1;if(e.host){m=new cn(a,e.host),d=new yr(a,m,e.host);let _=new Map;if(e.host.cvars){for(let k of e.host.cvars.list())_.set(k.name,{value:k.string,setValue:w=>e.host.cvars.setValue(k.name,w)});u.loadCvars(_)}}if(e.host?.commands&&(e.host.commands.register("playdemo",_=>{if(_.length<1){console.log("usage: playdemo <filename>");return}let k=_[0];console.log(`playdemo: ${k}`),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",()=>{x=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{x=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{a.isActive()?a.closeAll():d&&a.pushMenu(d.createPauseMenu())},"Toggle the main/pause menu"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Ct.Archive,onChange:k=>{let w=k.number;isNaN(w)||(A=Math.max(1,Math.min(179,w)))},description:"Field of view"});let _=e.host.cvars.get("fov");if(_){let k=_.number;isNaN(k)||(A=Math.max(1,Math.min(179,k)))}}return{loadingScreen:s,errorDialog:o,init(_){this.Init(_)},Init(_){h=_,_?.state&&t.setAuthoritative(_),p.Init(),e.engine.assets&&e.engine.renderer&&(s.start(100,"Loading assets..."),ku(e.engine.renderer,e.engine.assets).then(()=>{s.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(a.isActive()||document.body.requestPointerLock?.())})},predict(_){return a.isActive(),t.enqueueCommand(_)},handleInput(_,k){if(!a.isActive())return!1;if(!k)return!0;let w=_.toLowerCase();return w==="arrowup"||w==="w"?a.handleInput("up"):w==="arrowdown"||w==="s"?a.handleInput("down"):w==="arrowleft"||w==="a"?a.handleInput("left"):w==="arrowright"||w==="d"?a.handleInput("right"):w==="enter"||w===" "?a.handleInput("select"):w==="escape"?a.getState().activeMenu?.parent?a.handleInput("back"):!1:_.length===1?a.handleInput("char",_):_==="Backspace"?a.handleInput("left"):!0},toggleMenu(){if(a.isActive()){if(a.closeAll(),e.host?.cvars){let _=e.host.cvars.list().map(k=>({name:k.name,value:k.string,flags:k.flags}));u.saveCvars(_)}}else d&&a.pushMenu(d.createPauseMenu())},createMainMenu(_,k,w,B,H){let D=new _r(a,k,w,B,H),O=m;if(!O){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");O=new cn(a,e.host)}let re=e.engine.assets,xe={findByExtension:Pe=>re?re.listFiles(Pe):[]},Qe=new vr(a,xe,Pe=>{console.log(`Starting map: ${Pe}`),e.host?.commands.execute(`map ${Pe}`)}),ln=new gr(a,D,{..._,optionsFactory:O,mapsFactory:Qe,onSetDifficulty:Pe=>{e.host?.cvars&&e.host.cvars.setValue("skill",Pe.toString())}});return{menuSystem:a,factory:ln}},render(_){let k=r.getState(),w=[];k===Jr.Playing?y=i.getPredictionState():(_.latest?.state&&(t.setAuthoritative(_.latest),h=_.latest),_.previous?.state&&_.latest?.state?(y=ht(_.previous.state,_.latest.state,_.alpha),_.latest.state.packetEntities&&_.previous.state.packetEntities&&(w=YA(_.latest.state.packetEntities,_.previous.state.packetEntities,_.alpha,l,e))):y=_.latest?.state??_.previous?.state??t.getPredictedState());let B=_.latest&&_.previous?Math.max(0,_.latest.timeMs-_.previous.timeMs):0;E=n.sample(y,B);let H={};if(y){let{origin:D,viewAngles:O}=y;S=new ls,S.position=q.fromValues(D.x,D.y,D.z);let re=E?.offset??{x:0,y:0,z:0};q.add(S.position,S.position,[re.x,re.y,re.z]);let xe=E?.angles??{x:0,y:0,z:0};S.angles=q.fromValues(O.x+xe.x,O.y+xe.y,O.z+xe.z),S.fov=x?40:A,S.aspect=4/3,e.engine.renderer&&(S.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&S){let D;if(e.engine.assets){let O=l.getModelName(1);if(O){let re=e.engine.assets.getMap(O)}}e.engine.renderer.renderFrame({camera:S,world:D,dlights:[]},w)}if(e.engine.renderer&&y&&y.client){let D=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},O=_.latest?.timeMs??0;this.DrawHUD(D,O)}return H},DrawHUD(_,k){if(!e.engine.renderer)return;let w=e.engine.renderer,B=w.width,H=w.height;if(y&&y.client){let D={origin:y.origin,velocity:y.velocity,viewAngles:y.viewAngles,onGround:De(y.pmFlags,Ae.OnGround),waterLevel:y.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:y.damageAlpha??0,damageIndicators:y.damageIndicators??[],blend:y.blend??[0,0,0,0],pickupIcon:y.pickupIcon,centerPrint:void 0,notify:void 0,stats:y.stats?[...y.stats]:new Array(32).fill(0),kick_angles:Ga,gunoffset:Ga,gunangles:Ga,gunindex:0};D.stats[Ee.STAT_HEALTH]=y.health??0,D.stats[Ee.STAT_AMMO]=y.ammo??0,D.stats[Ee.STAT_ARMOR]=y.armor??0,w.begin2D(),p.DrawHUD(0,null,{x:0,y:0,width:B,height:H},{x:0,y:0,width:B,height:H},1,0,D),w.end2D()}a.isActive()&&Mu(e.engine.renderer,a.getState(),e.engine.renderer.width,e.engine.renderer.height),y&&y.client&&c.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,y.client),o.render(e.engine.renderer),s.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(p.Shutdown(),h=void 0,y=void 0,e.host?.cvars){let _=e.host.cvars.list().map(k=>({name:k.name,value:k.string,flags:k.flags}));u.saveCvars(_)}},get prediction(){return t},get lastRendered(){return y},get view(){return n},get lastView(){return E},get camera(){return S},demoPlayback:r,ParseCenterPrint(_){p.ParseCenterPrint(_,0,!1)},ParseNotify(_){p.NotifyMessage(0,_,!1)},showSubtitle(_,k){p.ShowSubtitle(_,k)},ParseConfigString(_,k){l.set(_,k),p.ParseConfigString(_,k)},demoHandler:i,configStrings:l}}return Ou(qA);})();
|
|
141
|
+
}`;var hs=class{constructor(){this._position=q.create(),this._angles=q.create(),this._bobAngles=q.create(),this._bobOffset=q.create(),this._kickAngles=q.create(),this._rollAngle=0,this._fov=90,this._aspect=1,this._near=.1,this._far=1e3,this._viewMatrix=j.create(),this._projectionMatrix=j.create(),this._viewProjectionMatrix=j.create(),this._dirty=!0}get position(){return this._position}set position(e){q.copy(this._position,e),this._dirty=!0}get angles(){return this._angles}set angles(e){q.copy(this._angles,e),this._dirty=!0}get bobAngles(){return this._bobAngles}set bobAngles(e){q.copy(this._bobAngles,e),this._dirty=!0}get kickAngles(){return this._kickAngles}set kickAngles(e){q.copy(this._kickAngles,e),this._dirty=!0}get bobOffset(){return this._bobOffset}set bobOffset(e){q.copy(this._bobOffset,e),this._dirty=!0}get rollAngle(){return this._rollAngle}set rollAngle(e){this._rollAngle=e,this._dirty=!0}get fov(){return this._fov}set fov(e){this._fov=e,this._dirty=!0}get aspect(){return this._aspect}set aspect(e){this._aspect=e,this._dirty=!0}get viewMatrix(){return this.updateMatrices(),this._viewMatrix}get projectionMatrix(){return this.updateMatrices(),this._projectionMatrix}get viewProjectionMatrix(){return this.updateMatrices(),this._viewProjectionMatrix}getViewmodelProjectionMatrix(e){let t=j.create();return j.perspective(t,e*Ot,this._aspect,this._near,this._far),t}updateMatrices(){if(!this._dirty)return;j.perspective(this._projectionMatrix,this._fov*Ot,this._aspect,this._near,this._far);let e=j.fromValues(0,-1,0,0,0,0,1,0,-1,0,0,0,0,0,0,1),t=this._angles[0]+this._bobAngles[0]+this._kickAngles[0],n=this._angles[1]+this._bobAngles[1]+this._kickAngles[1],r=this._angles[2]+this._bobAngles[2]+this._kickAngles[2]+this._rollAngle,i=t*Ot,a=n*Ot,s=r*Ot,o=j.create();j.identity(o),j.rotateZ(o,o,-a),j.rotateY(o,o,-i),j.rotateX(o,o,-s);let c=j.create();j.multiply(c,e,o);let u=q.add(q.create(),this._position,this._bobOffset),d=q.negate(q.create(),u),m=q.create();q.transformMat4(m,d,o);let l=q.fromValues(m[1]||0,m[2]||0,m[0]||0);j.copy(this._viewMatrix,c),this._viewMatrix[12]=l[0],this._viewMatrix[13]=l[1],this._viewMatrix[14]=l[2],j.multiply(this._viewProjectionMatrix,this._projectionMatrix,this._viewMatrix),this._dirty=!1}};var ll=class{constructor(e){this.buffer=e,this.view=new DataView(e),this.offset=0}hasMore(){return this.offset<this.buffer.byteLength}readNextBlock(){if(this.offset+4>this.buffer.byteLength)return null;let e=this.view.getInt32(this.offset,!0);if(this.offset+=4,e<0||e>262144)return console.warn(`DemoReader: Invalid block length ${e} at offset ${this.offset-4}`),null;if(this.offset+e>this.buffer.byteLength)return console.warn(`DemoReader: Incomplete block. Expected ${e} bytes, but only ${this.buffer.byteLength-this.offset} remain.`),null;let t=this.buffer.slice(this.offset,this.offset+e);return this.offset+=e,{length:e,data:new ul(t)}}reset(){this.offset=0}getOffset(){return this.offset}},Fr=1,Ur=2,Br=4,Gr=8,Hr=16,Vr=32,fs=64,hl=128,fl=256,Wr=512,Kr=1024,Xr=2048,_n=4096,pn=16384,gl=32768,vn=65536,$r=1<<17,yn=1<<18,Sn=1<<19,Yr=1<<20,jr=1<<21,qr=1<<22,_l=1<<23,Zr=1<<24,wn=1<<25,Jr=1<<26,Qr=1<<27,pl=1,vl=2,yl=128,ot=()=>({number:0,modelindex:0,modelindex2:0,modelindex3:0,modelindex4:0,frame:0,skinnum:0,effects:0,renderfx:0,origin:{x:0,y:0,z:0},old_origin:{x:0,y:0,z:0},angles:{x:0,y:0,z:0},sound:0,event:0,solid:0,bits:0}),ss=()=>({pm_type:0,origin:{x:0,y:0,z:0},velocity:{x:0,y:0,z:0},pm_time:0,pm_flags:0,gravity:0,delta_angles:{x:0,y:0,z:0},viewoffset:{x:0,y:0,z:0},viewangles:{x:0,y:0,z:0},kick_angles:{x:0,y:0,z:0},gun_index:0,gun_frame:0,gun_offset:{x:0,y:0,z:0},gun_angles:{x:0,y:0,z:0},blend:[0,0,0,0],fov:0,rdflags:0,stats:new Array(32).fill(0)}),Sl=class{constructor(e,t){this.protocolVersion=0,this.isDemo=pl,this.stream=e,this.handler=t}translateCommand(e){if(this.protocolVersion===0&&(e===7||e===12))return W.serverdata;if(this.protocolVersion===25){if(e>=7&&e<=15)return e+5;if(e===1)return W.print;if(e===2)return W.stufftext;if(e===3)return W.sound;if(e===4)return W.nop;if(e===5)return W.disconnect;if(e===6)return W.reconnect;if(e===16)return W.temp_entity}return e}parseMessage(){for(;this.stream.hasMore();){let e=this.stream.readByte();if(e===-1)break;let t=e;e=this.translateCommand(e);try{switch(e){case W.nop:break;case W.disconnect:break;case W.reconnect:break;case W.print:this.parsePrint();break;case W.serverdata:this.parseServerData();break;case W.configstring:this.parseConfigString();break;case W.spawnbaseline:this.parseSpawnBaseline();break;case W.centerprint:this.parseCenterPrint();break;case W.download:this.parseDownload();break;case W.frame:this.parseFrame();break;case W.packetentities:this.parsePacketEntities(!1);break;case W.deltapacketentities:this.parsePacketEntities(!0);break;case W.playerinfo:this.parsePlayerState();break;case W.stufftext:this.parseStuffText();break;case W.layout:this.parseLayout();break;case W.inventory:this.parseInventory();break;case W.sound:this.parseSound();break;case W.muzzleflash:this.parseMuzzleFlash();break;case W.muzzleflash2:this.parseMuzzleFlash2();break;case W.temp_entity:this.parseTempEntity();break;default:console.warn(`Unknown server command: ${t} (translated: ${e}) at offset ${this.stream.getPosition()-1}`);return}}catch(n){console.warn(`Error parsing command ${e}: ${n.message}`);return}}}parsePrint(){let e=this.stream.readByte(),t=this.stream.readString()}parseStuffText(){let e=this.stream.readString()}parseLayout(){let e=this.stream.readString()}parseCenterPrint(){let e=this.stream.readString()}parseServerData(){this.protocolVersion=this.stream.readLong();let e=this.stream.readLong();this.isDemo=this.stream.readByte();let t=0,n=this.stream.readString(),r=this.stream.readShort(),i=this.stream.readString();this.handler?this.handler.onServerData(this.protocolVersion,e,t,n,r,i):console.log(`Server Data: Protocol ${this.protocolVersion}, Level ${i}, GameDir ${n}`)}parseConfigString(){let e=this.stream.readShort(),t=this.stream.readString();this.handler&&this.handler.onConfigString(e,t)}parseDownload(){let e=this.stream.readShort(),t=this.stream.readByte(),n;e>0&&(n=this.stream.readData(e)),this.handler&&this.handler.onDownload(e,t,n)}parseInventory(){let t=new Array(256);for(let n=0;n<256;n++)t[n]=this.stream.readShort();this.handler&&this.handler.onInventory(t)}parseSound(){let e=this.stream.readByte(),t=this.stream.readByte(),n,r,i,a,s;if(e&1&&(n=this.stream.readByte()),e&2&&(r=this.stream.readByte()),e&16&&(i=this.stream.readByte()),e&8&&(a=this.stream.readShort()),e&4){let o={x:0,y:0,z:0};this.stream.readPos(o),s=o}this.handler&&this.handler.onSound(e,t,n,r,i,a,s)}parseMuzzleFlash(){let e=this.stream.readShort(),t=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash(e,t)}parseMuzzleFlash2(){let e=this.stream.readShort(),t=this.stream.readByte();this.handler&&this.handler.onMuzzleFlash2(e,t)}parseTempEntity(){let e=this.stream.readByte(),t={x:0,y:0,z:0},n={x:0,y:0,z:0},r={x:0,y:0,z:0},i,a,s,o,c;switch(e){case M.EXPLOSION1:case M.EXPLOSION2:case M.ROCKET_EXPLOSION:case M.GRENADE_EXPLOSION:case M.ROCKET_EXPLOSION_WATER:case M.GRENADE_EXPLOSION_WATER:case M.BFG_EXPLOSION:case M.BFG_BIGEXPLOSION:case M.BOSSTPORT:case M.PLASMA_EXPLOSION:case M.PLAIN_EXPLOSION:case M.CHAINFIST_SMOKE:case M.TRACKER_EXPLOSION:case M.TELEPORT_EFFECT:case M.DBALL_GOAL:case M.NUKEBLAST:case M.WIDOWSPLASH:case M.EXPLOSION1_BIG:case M.EXPLOSION1_NP:this.stream.readPos(t);break;case M.GUNSHOT:case M.BLOOD:case M.BLASTER:case M.SHOTGUN:case M.SPARKS:case M.BULLET_SPARKS:case M.SCREEN_SPARKS:case M.SHIELD_SPARKS:case M.BLASTER2:case M.FLECHETTE:case M.MOREBLOOD:case M.ELECTRIC_SPARKS:case M.HEATBEAM_SPARKS:case M.HEATBEAM_STEAM:this.stream.readPos(t),this.stream.readDir(r);break;case M.SPLASH:case M.LASER_SPARKS:case M.WELDING_SPARKS:case M.TUNNEL_SPARKS:i=this.stream.readByte(),this.stream.readPos(t),this.stream.readDir(r),a=this.stream.readByte();break;case M.BLUEHYPERBLASTER:this.protocolVersion>=32?(this.stream.readPos(t),this.stream.readPos(n)):(this.stream.readPos(t),this.stream.readDir(r));break;case M.GREENBLOOD:this.protocolVersion>=32?(this.stream.readPos(t),this.stream.readDir(r)):(this.stream.readPos(t),this.stream.readPos(n));break;case M.RAILTRAIL:case M.BUBBLETRAIL:case M.BFG_LASER:case M.DEBUGTRAIL:case M.BUBBLETRAIL2:this.stream.readPos(t),this.stream.readPos(n);break;case M.PARASITE_ATTACK:case M.MEDIC_CABLE_ATTACK:this.stream.readShort(),this.stream.readPos(t),this.stream.readPos(n);break;case M.GRAPPLE_CABLE:s=this.stream.readShort(),this.stream.readPos(t),this.stream.readPos(n),this.stream.readPos(r);break;case M.LIGHTNING:o=this.stream.readShort(),c=this.stream.readShort(),this.stream.readPos(t),this.stream.readPos(n);break;case M.FLASHLIGHT:this.stream.readPos(t),s=this.stream.readShort();break;case M.FORCEWALL:this.stream.readPos(t),this.stream.readPos(n),a=this.stream.readByte();break;case M.STEAM:let u=this.stream.readShort();i=this.stream.readByte(),this.stream.readPos(t),this.stream.readDir(r),a=this.stream.readByte(),this.stream.readShort(),u!==-1&&this.stream.readLong();break;case M.WIDOWBEAMOUT:this.stream.readShort();case M.HEATBEAM:case M.MONSTER_HEATBEAM:s=this.stream.readShort(),this.stream.readPos(t),this.stream.readPos(n),this.stream.readPos(r);break;default:break}this.handler&&this.handler.onTempEntity(e,t,n,r,i,a,s,o,c)}parseSpawnBaseline(){let e=this.parseEntityBits(),t=ot();this.parseDelta(ot(),t,e.number,e.bits),this.handler&&this.handler.onSpawnBaseline(t)}parseFrame(){let e=this.stream.readLong(),t=this.stream.readLong(),n=this.stream.readByte(),r=this.stream.readByte(),i=this.stream.readData(r),a=this.stream.readByte();if(a!==W.playerinfo)throw new Error(`Expected svc_playerinfo after svc_frame, got ${a}`);let s=this.parsePlayerState();if(this.isDemo===yl){let o=this.stream.readByte();for(let c=0;c<o;c++)this.stream.readByte()}this.isDemo===vl&&this.stream.readLong(),this.handler&&this.handler.onFrame({serverFrame:e,deltaFrame:t,surpressCount:n,areaBytes:r,areaBits:i,playerState:s,packetEntities:{delta:!1,entities:[]}})}parsePlayerState(){let e=ss(),t=this.stream.readShort();t&1&&(e.pm_type=this.stream.readByte()),t&2&&(e.origin.x=this.stream.readShort()*.125,e.origin.y=this.stream.readShort()*.125,e.origin.z=this.stream.readShort()*.125),t&4&&(e.velocity.x=this.stream.readShort()*.125,e.velocity.y=this.stream.readShort()*.125,e.velocity.z=this.stream.readShort()*.125),t&8&&(e.pm_time=this.stream.readByte()),t&16&&(e.pm_flags=this.stream.readByte()),t&32&&(e.gravity=this.stream.readShort()),t&64&&(e.delta_angles.x=this.stream.readShort()*(180/32768),e.delta_angles.y=this.stream.readShort()*(180/32768),e.delta_angles.z=this.stream.readShort()*(180/32768)),t&128&&(e.viewoffset.x=this.stream.readChar()*.25,e.viewoffset.y=this.stream.readChar()*.25,e.viewoffset.z=this.stream.readChar()*.25),t&256&&(e.viewangles.x=this.stream.readAngle16(),e.viewangles.y=this.stream.readAngle16(),e.viewangles.z=this.stream.readAngle16()),t&512&&(e.kick_angles.x=this.stream.readChar()*.25,e.kick_angles.y=this.stream.readChar()*.25,e.kick_angles.z=this.stream.readChar()*.25),t&4096&&(e.gun_index=this.stream.readByte()),t&8192&&(e.gun_frame=this.stream.readByte(),e.gun_offset.x=this.stream.readChar()*.25,e.gun_offset.y=this.stream.readChar()*.25,e.gun_offset.z=this.stream.readChar()*.25,e.gun_angles.x=this.stream.readChar()*.25,e.gun_angles.y=this.stream.readChar()*.25,e.gun_angles.z=this.stream.readChar()*.25),t&1024&&(e.blend[0]=this.stream.readByte(),e.blend[1]=this.stream.readByte(),e.blend[2]=this.stream.readByte(),e.blend[3]=this.stream.readByte()),t&2048&&(e.fov=this.stream.readByte()),t&16384&&(e.rdflags=this.stream.readByte());let n=this.stream.readLong();for(let r=0;r<32;r++)n&1<<r&&(e.stats[r]=this.stream.readShort());return e}parsePacketEntities(e){let t=this.collectPacketEntities();this.handler&&this.handler.onFrame({serverFrame:0,deltaFrame:0,surpressCount:0,areaBytes:0,areaBits:new Uint8Array,playerState:ss(),packetEntities:{delta:e,entities:t}})}collectPacketEntities(){let e=[];for(;;){let t=this.parseEntityBits();if(t.number===0)break;let n=ot();this.parseDelta(ot(),n,t.number,t.bits),e.push(n)}return e}parseEntityBits(){let e=this.stream.readByte();e&hl&&(e|=this.stream.readByte()<<8),e&gl&&(e|=this.stream.readByte()<<16),e&_l&&(e|=this.stream.readByte()<<24);let t;return e&fl?t=this.stream.readShort():t=this.stream.readByte(),{number:t,bits:e}}parseDelta(e,t,n,r){t.number=e.number,t.modelindex=e.modelindex,t.modelindex2=e.modelindex2,t.modelindex3=e.modelindex3,t.modelindex4=e.modelindex4,t.frame=e.frame,t.skinnum=e.skinnum,t.effects=e.effects,t.renderfx=e.renderfx,t.origin.x=e.origin.x,t.origin.y=e.origin.y,t.origin.z=e.origin.z,t.old_origin.x=e.origin.x,t.old_origin.y=e.origin.y,t.old_origin.z=e.origin.z,t.angles.x=e.angles.x,t.angles.y=e.angles.y,t.angles.z=e.angles.z,t.sound=e.sound,t.event=e.event,t.solid=e.solid,t.number=n,t.bits=r,r&Xr&&(t.modelindex=this.stream.readByte()),r&Yr&&(t.modelindex2=this.stream.readByte()),r&jr&&(t.modelindex3=this.stream.readByte()),r&qr&&(t.modelindex4=this.stream.readByte()),r&Hr&&(t.frame=this.stream.readByte()),r&$r&&(t.frame=this.stream.readShort()),r&vn&&r&wn?t.skinnum=this.stream.readLong():r&vn?t.skinnum=this.stream.readByte():r&wn&&(t.skinnum=this.stream.readShort()),r&pn&&r&Sn?t.effects=this.stream.readLong():r&pn?t.effects=this.stream.readByte():r&Sn&&(t.effects=this.stream.readShort()),r&_n&&r&yn?t.renderfx=this.stream.readLong():r&_n?t.renderfx=this.stream.readByte():r&yn&&(t.renderfx=this.stream.readShort()),r&Fr&&(t.origin.x=this.stream.readCoord()),r&Ur&&(t.origin.y=this.stream.readCoord()),r&Wr&&(t.origin.z=this.stream.readCoord()),r&Kr&&(t.angles.x=this.stream.readAngle()),r&Br&&(t.angles.y=this.stream.readAngle()),r&Gr&&(t.angles.z=this.stream.readAngle()),r&Zr&&this.stream.readPos(t.old_origin),r&Jr&&(t.sound=this.stream.readByte()),r&Vr?t.event=this.stream.readByte():t.event=0,r&Qr&&(t.solid=this.stream.readShort())}},ei=(e=>(e[e.Stopped=0]="Stopped",e[e.Playing=1]="Playing",e[e.Paused=2]="Paused",e[e.Finished=3]="Finished",e))(ei||{}),gs=class{constructor(){this.reader=null,this.state=0,this.playbackSpeed=1,this.accumulatedTime=0,this.frameDuration=100}setHandler(e){this.handler=e}loadDemo(e){this.reader=new ll(e),this.state=0,this.accumulatedTime=0}play(){this.reader&&(this.state=1)}pause(){this.state===1&&(this.state=2)}stop(){this.state=0,this.reader&&this.reader.reset(),this.accumulatedTime=0}update(e){if(!(this.state!==1||!this.reader))for(this.accumulatedTime+=e*1e3*this.playbackSpeed;this.accumulatedTime>=this.frameDuration;){if(!this.reader.hasMore()){this.state=3;return}let t=this.reader.readNextBlock();if(!t){this.state=3;return}new Sl(t.data,this.handler).parseMessage(),this.accumulatedTime-=this.frameDuration}}getState(){return this.state}};var wl=Object.defineProperty,_s=(e,t)=>{for(var n in t)wl(e,n,{get:t[n],enumerable:!0})},ut={x:0,y:0,z:0};var e5=Math.PI/180;function It(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function dt(e,t){return{x:e.x*t,y:e.y*t,z:e.z*t}}function mt(e,t){return e.x*t.x+e.y*t.y+e.z*t.z}function xl(e){return mt(e,e)}function kn(e){return Math.sqrt(xl(e))}function ps(e){let t=kn(e);return t===0?e:dt(e,1/t)}var vs=0,ys=1,Ss=2,Al=Math.PI/180,t5=180/Math.PI;function ti(e,t){switch(t){case vs:return e.x;case ys:return e.y;case Ss:default:return e.z}}function ni(e){return e*Al}function ct(e){let t=e%360;return t<0?360+t:t}function ii(e){let t=ni(ti(e,ys)),n=ni(ti(e,vs)),r=ni(ti(e,Ss)),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}}var Le=1,We=2;var ai=8,si=16,El=32;var kl=16384;var Tn=65536,ws=1<<17,Tl=1<<18,Ml=1<<19,bl=1<<20,Rl=1<<21,zl=1<<22,Ll=1<<23,n5=1<<24,Mn=1<<25,Nl=1<<26,r5=1<<27,i5=1<<28,a5=1<<29,bn=1<<30,s5=1<<31;var o5=1<<25,c5=1<<28,u5=1<<29,d5=1<<30,m5=1<<31;var l5=Le|We,h5=Le|Tn|We|Mn|bn,f5=Le|Tn|We,g5=Le|ws|We|Mn|bn,_5=El|ai|si,p5=Le|si|ai,Ol=Le|Mn|bn|We|Nl,v5=Tl|Ml|bl|Rl|zl|Ll,y5=Le|ai|si|Mn|bn,S5=Le|Tn|We,w5=Le|We,x5=Le|Tn|We|ws,A5=Ol|kl;var E5=Number.MAX_SAFE_INTEGER-1;var Ct=(e=>(e[e.None=0]="None",e[e.Archive=1]="Archive",e[e.UserInfo=2]="UserInfo",e[e.ServerInfo=4]="ServerInfo",e[e.Latch=8]="Latch",e[e.Cheat=16]="Cheat",e))(Ct||{});var xs=256;var Il=256,Pt=8192,Dt=2048,Ft=512,Cl=256,Pl=xs*2,Dl=256,ri=32;var ee=(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+Pt]="Sounds",e[e.Images=e.Sounds+Dt]="Images",e[e.Lights=e.Images+Ft]="Lights",e[e.ShadowLights=e.Lights+Il]="ShadowLights",e[e.Items=e.ShadowLights+Dl]="Items",e[e.PlayerSkins=e.Items+Cl]="PlayerSkins",e[e.General=e.PlayerSkins+xs]="General",e[e.WheelWeapons=e.General+Pl]="WheelWeapons",e[e.WheelAmmo=e.WheelWeapons+ri]="WheelAmmo",e[e.WheelPowerups=e.WheelAmmo+ri]="WheelPowerups",e[e.CdLoopCount=e.WheelPowerups+ri]="CdLoopCount",e[e.GameStyle=e.CdLoopCount+1]="GameStyle",e[e.MaxConfigStrings=e.GameStyle+1]="MaxConfigStrings",e))(ee||{}),k5=ee.MaxConfigStrings;var Fl={};_s(Fl,{addReplayFrame:()=>Hl,createReplaySession:()=>Gl,deserializeReplay:()=>Bl,serializeReplay:()=>Ul});function Ul(e){return JSON.stringify(e,null,2)}function Bl(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 Gl(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Hl(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var et=(e=>(e[e.None=0]="None",e[e.Feet=1]="Feet",e[e.Waist=2]="Waist",e[e.Under=3]="Under",e))(et||{});var Ae=(e=>(e[e.Ducked=1]="Ducked",e[e.JumpHeld=2]="JumpHeld",e[e.OnGround=4]="OnGround",e[e.TimeWaterJump=8]="TimeWaterJump",e[e.TimeLand=16]="TimeLand",e[e.TimeTeleport=32]="TimeTeleport",e[e.NoPositionalPrediction=64]="NoPositionalPrediction",e[e.OnLadder=128]="OnLadder",e[e.NoAngularPrediction=256]="NoAngularPrediction",e[e.IgnorePlayerCollision=512]="IgnorePlayerCollision",e[e.TimeTrick=1024]="TimeTrick",e))(Ae||{});function De(e,t){return(e&t)!==0}var oi=(e=>(e[e.Normal=0]="Normal",e[e.Grapple=1]="Grapple",e[e.NoClip=2]="NoClip",e[e.Spectator=3]="Spectator",e[e.Dead=4]="Dead",e[e.Gib=5]="Gib",e[e.Freeze=6]="Freeze",e))(oi||{}),Ne=(e=>(e[e.None=0]="None",e[e.Attack=1]="Attack",e[e.Use=2]="Use",e[e.Holster=4]="Holster",e[e.Jump=8]="Jump",e[e.Crouch=16]="Crouch",e[e.Any=128]="Any",e))(Ne||{});function As(e){let{velocity:t,frametime:n,onGround:r,groundIsSlick:i,onLadder:a,waterlevel:s,pmFriction:o,pmStopSpeed:c,pmWaterFriction:u}=e,d=kn(t);if(d<1)return{x:0,y:0,z:t.z};let m=0;if(r&&!i||a){let g=d<c?c:d;m+=g*o*n}s>0&&!a&&(m+=d*u*s*n);let l=d-m;if(l<0&&(l=0),l===d)return t;let h=l/d;return dt(t,h)}function ci(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=mt(t,n),o=r-s;if(o<=0)return t;let c=i*a*r;return c>o&&(c=o),{x:t.x+n.x*c,y:t.y+n.y*c,z:t.z+n.z*c}}function Es(e){let{velocity:t,wishdir:n,wishspeed:r,accel:i,frametime:a}=e,s=Math.min(r,30),o=mt(t,n),c=s-o;if(c<=0)return t;let u=i*r*a;return u>c&&(u=c),{x:t.x+n.x*u,y:t.y+n.y*u,z:t.z+n.z*u}}function ks(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:0},s=kn(a);if(s>i){let o=i/s;a=dt(a,o),s=i}return{wishdir:s===0?a:ps(a),wishspeed:s}}function Ts(e){let{forward:t,right:n,cmd:r,maxSpeed:i}=e,a={x:t.x*r.forwardmove+n.x*r.sidemove,y:t.y*r.forwardmove+n.y*r.sidemove,z:0};r.upmove>10?a=It(a,{x:0,y:0,z:r.upmove}):r.upmove<-10?a=It(a,{x:0,y:0,z:r.upmove}):a=It(a,{x:0,y:0,z:10});let s=kn(a);if(s>i){let o=i/s;a=dt(a,o),s=i}return s*=.5,{wishdir:s===0?a:ps(a),wishspeed:s}}function Vl(e,t){return{x:e.x+t.x,y:e.y+t.y,z:e.z+t.z}}function Wl(e){return e>89&&e<180?89:e<271&&e>=180?271:e}function ui(e){let{pmFlags:t,cmdAngles:n,deltaAngles:r}=e,i;(t&32)!==0?i={x:0,y:n.y+r.y,z:0}:(i=Vl(n,r),i={...i,x:Wl(i.x)});let a=ii(i);return{viewangles:i,...a}}var Ms=200,bs=200,Rs=200,zs=140,Ls=150,Ns=3;function Kl(e){let t=ct(e);return t>89&&t<180?89:t<271&&t>=180?271:t}function Os(e,t){return{x:Kl(e.x+t.x),y:ct(e.y+t.y),z:ct(e.z+t.z)}}function Is(e,t){let n=t.sensitivityX??t.sensitivity,r=(t.sensitivityY??t.sensitivity)*(t.invertY?-1:1);return{x:e.deltaY*r,y:e.deltaX*n,z:0}}var Ee=(e=>(e[e.STAT_HEALTH_ICON=0]="STAT_HEALTH_ICON",e[e.STAT_HEALTH=1]="STAT_HEALTH",e[e.STAT_AMMO_ICON=2]="STAT_AMMO_ICON",e[e.STAT_AMMO=3]="STAT_AMMO",e[e.STAT_ARMOR_ICON=4]="STAT_ARMOR_ICON",e[e.STAT_ARMOR=5]="STAT_ARMOR",e[e.STAT_SELECTED_ICON=6]="STAT_SELECTED_ICON",e[e.STAT_PICKUP_ICON=7]="STAT_PICKUP_ICON",e[e.STAT_PICKUP_STRING=8]="STAT_PICKUP_STRING",e[e.STAT_TIMER_ICON=9]="STAT_TIMER_ICON",e[e.STAT_TIMER=10]="STAT_TIMER",e[e.STAT_HELPICON=11]="STAT_HELPICON",e[e.STAT_SELECTED_ITEM=12]="STAT_SELECTED_ITEM",e[e.STAT_LAYOUTS=13]="STAT_LAYOUTS",e[e.STAT_FRAGS=14]="STAT_FRAGS",e[e.STAT_FLASHES=15]="STAT_FLASHES",e[e.STAT_CHASE=16]="STAT_CHASE",e[e.STAT_SPECTATOR=17]="STAT_SPECTATOR",e[e.STAT_CTF_TEAM1_PIC=18]="STAT_CTF_TEAM1_PIC",e[e.STAT_CTF_TEAM1_CAPS=19]="STAT_CTF_TEAM1_CAPS",e[e.STAT_CTF_TEAM2_PIC=20]="STAT_CTF_TEAM2_PIC",e[e.STAT_CTF_TEAM2_CAPS=21]="STAT_CTF_TEAM2_CAPS",e[e.STAT_CTF_FLAG_PIC=22]="STAT_CTF_FLAG_PIC",e[e.STAT_CTF_JOINED_TEAM1_PIC=23]="STAT_CTF_JOINED_TEAM1_PIC",e[e.STAT_CTF_JOINED_TEAM2_PIC=24]="STAT_CTF_JOINED_TEAM2_PIC",e[e.STAT_CTF_TEAM1_HEADER=25]="STAT_CTF_TEAM1_HEADER",e[e.STAT_CTF_TEAM2_HEADER=26]="STAT_CTF_TEAM2_HEADER",e[e.STAT_CTF_TECH=27]="STAT_CTF_TECH",e[e.STAT_CTF_ID_VIEW=28]="STAT_CTF_ID_VIEW",e[e.STAT_CTF_MATCH=29]="STAT_CTF_MATCH",e[e.STAT_CTF_ID_VIEW_COLOR=30]="STAT_CTF_ID_VIEW_COLOR",e[e.STAT_CTF_TEAMINFO=31]="STAT_CTF_TEAMINFO",e[e.STAT_WEAPONS_OWNED_1=32]="STAT_WEAPONS_OWNED_1",e[e.STAT_WEAPONS_OWNED_2=33]="STAT_WEAPONS_OWNED_2",e[e.STAT_AMMO_INFO_START=34]="STAT_AMMO_INFO_START",e[e.STAT_POWERUP_INFO_START=41]="STAT_POWERUP_INFO_START",e[e.STAT_KEY_A=44]="STAT_KEY_A",e[e.STAT_KEY_B=45]="STAT_KEY_B",e[e.STAT_KEY_C=46]="STAT_KEY_C",e[e.STAT_ACTIVE_WHEEL_WEAPON=47]="STAT_ACTIVE_WHEEL_WEAPON",e[e.STAT_COOP_RESPAWN=48]="STAT_COOP_RESPAWN",e[e.STAT_LIVES=49]="STAT_LIVES",e[e.STAT_HIT_MARKER=50]="STAT_HIT_MARKER",e[e.STAT_SELECTED_ITEM_NAME=51]="STAT_SELECTED_ITEM_NAME",e[e.STAT_HEALTH_BARS=52]="STAT_HEALTH_BARS",e[e.STAT_ACTIVE_WEAPON=53]="STAT_ACTIVE_WEAPON",e[e.STAT_LAST=54]="STAT_LAST",e))(Ee||{}),Xl=12,$l=9,T5=Math.ceil(Xl*$l/16),Yl=23,jl=2,M5=Math.ceil(Yl*jl/16);var ql={};_s(ql,{U_ANGLE1:()=>r0,U_ANGLE2:()=>i0,U_ANGLE3:()=>a0,U_EFFECTS:()=>c0,U_EVENT:()=>m0,U_FRAME:()=>s0,U_MODEL:()=>Jl,U_MODEL2:()=>h0,U_MODEL3:()=>f0,U_MODEL4:()=>g0,U_MOREBITS:()=>l0,U_NUMBER:()=>Zl,U_ORIGIN1:()=>e0,U_ORIGIN2:()=>t0,U_ORIGIN3:()=>n0,U_REMOVE:()=>_0,U_RENDERFX:()=>u0,U_SKIN:()=>o0,U_SOLID:()=>d0,U_SOUND:()=>Ql});var Zl=1,Jl=2,Ql=4,e0=8,t0=16,n0=32,r0=64,i0=128,a0=256,s0=512,o0=1024,c0=2048,u0=4096,d0=8192,m0=16384,l0=32768,h0=1,f0=2,g0=4,_0=32768;var Cs=(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))(Cs||{}),b5=Object.keys(Cs).length/2;var p0=Object.defineProperty,v0=(e,t)=>{for(var n in t)p0(e,n,{get:t[n],enumerable:!0})},zn=null,Rn=[1,1,1,1],Ps=["ch1","ch2","ch3"],di=[null,null,null],y0=e=>{for(let t=0;t<Ps.length;t++){let n=Ps[t];try{di[t]=e.Draw_RegisterPic(`pics/${n}.pcx`)}catch{if(t===0)try{di[t]=e.Draw_RegisterPic("pics/crosshair.pcx")}catch{e.Com_Print(`Failed to load crosshair image
|
|
142
|
+
`)}}}zn=di[0]},S0=(e,t,n)=>{if(zn){let r=e.Draw_GetPicSize(zn),i=(t-r.width)/2,a=(n-r.height)/2;e.SCR_DrawColorPic(i,a,zn,{x:Rn[0],y:Rn[1],z:Rn[2]},Rn[3])}},Hs=new Map,w0=["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"],x0=e=>{for(let t of w0)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);Hs.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
143
|
+
`)}},A0=new Map,E0=["d_left","d_right","d_up","d_down"],k0=e=>{for(let t of E0)try{let n=e.Draw_RegisterPic(`pics/${t}.pcx`);A0.set(t,n)}catch{e.Com_Print(`Failed to load HUD image: pics/${t}.pcx
|
|
144
|
+
`)}},T0=(e,t,n,r)=>{(!t.damageAlpha||t.damageAlpha<=0)&&(!t.damageIndicators||t.damageIndicators.length)},Ds=3e3,Fs=5e3,Us=4,M0=class{constructor(){this.centerPrintMsg=null,this.notifyMessages=[]}addCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Ds}}addNotify(e,t){this.notifyMessages.push({text:e,startTime:t,duration:Fs}),this.notifyMessages.length>Us&&this.notifyMessages.shift()}setCenterPrint(e,t){this.centerPrintMsg={text:e,startTime:t,duration:Ds}}addNotification(e,t,n){this.notifyMessages.push({text:e,startTime:n,duration:Fs}),this.notifyMessages.length>Us&&this.notifyMessages.shift()}clearNotifications(){this.notifyMessages=[]}clearCenterPrint(){this.centerPrintMsg=null}drawCenterPrint(e,t,n){if(!this.centerPrintMsg)return;if(t>this.centerPrintMsg.startTime+this.centerPrintMsg.duration){this.centerPrintMsg=null;return}let r=n.CENTER_PRINT_Y;e.SCR_DrawCenterString(r,this.centerPrintMsg.text)}drawNotifications(e,t){for(;this.notifyMessages.length>0&&t>this.notifyMessages[0].startTime+this.notifyMessages[0].duration;)this.notifyMessages.shift();let n=10;for(let r of this.notifyMessages)e.SCR_DrawFontString(10,n,r.text),n+=10}},b0=3e3,R0=class{constructor(){this.subtitle=null}addSubtitle(e,t){this.subtitle={text:e,startTime:t,duration:b0}}drawSubtitles(e,t){if(!this.subtitle)return;if(t>this.subtitle.startTime+this.subtitle.duration){this.subtitle=null;return}e.SCR_DrawCenterString(200,this.subtitle.text)}},z0=(e,t,n,r)=>{if(!t.blend)return;let[i,a,s,o]=t.blend},L0=(e,t,n,r)=>{if(!t.pickupIcon)return;let i=Hs.get(t.pickupIcon);if(i){let a=e.Draw_GetPicSize(i),s=n-a.width-10,o=r-a.height-10;e.SCR_DrawPic(s,o,i)}},mi=(e,t,n,r,i,a,s)=>{let o=Math.abs(r).toString();for(let c=0;c<o.length;c++){let u=parseInt(o[c]),d=i[u];d&&(s?e.SCR_DrawColorPic(t+c*a,n,d,{x:s[0],y:s[1],z:s[2]},s[3]):e.SCR_DrawPic(t+c*a,n,d))}},N0=(e,t,n,r,i,a)=>{let s=t.stats[Ee.STAT_HEALTH]||0,o=t.stats[Ee.STAT_ARMOR]||0,c=t.stats[Ee.STAT_AMMO]||0,u=t.stats[Ee.STAT_ARMOR_ICON]||0,d;if(s<=25&&(d=[1,0,0,1]),n.length>0&&(mi(e,a.HEALTH_X,a.HEALTH_Y,s,n,r,d),mi(e,a.ARMOR_X,a.ARMOR_Y,o,n,r),mi(e,a.AMMO_X,a.AMMO_Y,c,n,r)),u>0){let m=e.get_configstring(ee.Images+u);if(m){let l=e.Draw_RegisterPic(m);l&&e.SCR_DrawPic(a.ARMOR_X-24,a.ARMOR_Y-2,l)}}if(t.pickupIcon){let m=e.Draw_RegisterPic(t.pickupIcon);m&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,m)}else{let m=t.stats[Ee.STAT_SELECTED_ICON]||0;if(m>0){let l=e.get_configstring(ee.Images+m);if(l){let h=e.Draw_RegisterPic(l);h&&e.SCR_DrawPic(a.WEAPON_ICON_X,a.WEAPON_ICON_Y,h)}}}},li=640,lt=480,O0=(e,t)=>{let n=e/li,r=t/lt,i=Math.min(n,r);return{HEALTH_X:100*i,HEALTH_Y:t-(lt-450)*i,ARMOR_X:200*i,ARMOR_Y:t-(lt-450)*i,AMMO_X:e-(li-540)*i,AMMO_Y:t-(lt-450)*i,CENTER_PRINT_X:e/2,CENTER_PRINT_Y:100*i,WEAPON_ICON_X:10*i,WEAPON_ICON_Y:t-(lt-450)*i,POWERUP_X:e-(li-610)*i,POWERUP_Y:t-(lt-450)*i,scale:i}},se=null,_i=[],Vs=0,pi=new M0,Ws=new R0;function I0(e){se=e}function C0(){if(se){_i.length=0;for(let e=0;e<10;e++)try{let t=se.Draw_RegisterPic(`pics/hud/num_${e}.pcx`);_i.push(t),e===0&&(Vs=se.Draw_GetPicSize(t).width)}catch{se.Com_Print(`Warning: Failed to load HUD image: pics/hud/num_${e}.pcx
|
|
145
|
+
`)}y0(se),x0(se),k0(se)}}function P0(e,t,n,r,i,a,s){if(!se){console.error("CG_DrawHUD: cgame imports not initialized");return}let o=se.CL_ClientTime(),c=O0(n.width,n.height);if(z0(se,s,n.width,n.height),N0(se,s,_i,Vs,o,c),L0(se,s,n.width,n.height),T0(se,s,n.width,n.height),s.centerPrint){let u=s.centerPrint.split(`
|
|
146
|
+
`),d=n.height/2-u.length*10;for(let m of u)se.SCR_DrawCenterString(d,m),d+=16}pi.drawCenterPrint(se,o,c),pi.drawNotifications(se,o),Ws.drawSubtitles(se,o),S0(se,n.width,n.height)}function Nn(){return pi}function D0(){return Ws}function F0(e,t,n){t>=ee.Models&&t<ee.Models+Pt?e.RegisterModel(n):t>=ee.Sounds&&t<ee.Sounds+Dt?e.RegisterSound(n):t>=ee.Images&&t<ee.Images+Ft&&e.Draw_RegisterPic(n)}var hi=1e-6,Ln=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 U0={};v0(U0,{add:()=>W0,angle:()=>hh,bezier:()=>ah,ceil:()=>K0,clone:()=>B0,copy:()=>H0,create:()=>Ks,cross:()=>th,dist:()=>wh,distance:()=>qs,div:()=>Sh,divide:()=>js,dot:()=>vi,equals:()=>ph,exactEquals:()=>_h,floor:()=>X0,forEach:()=>kh,fromValues:()=>G0,hermite:()=>ih,inverse:()=>Q0,len:()=>Ah,length:()=>Xs,lerp:()=>nh,max:()=>Y0,min:()=>$0,mul:()=>yh,multiply:()=>Ys,negate:()=>J0,normalize:()=>eh,random:()=>sh,rotateX:()=>dh,rotateY:()=>mh,rotateZ:()=>lh,round:()=>j0,scale:()=>q0,scaleAndAdd:()=>Z0,set:()=>V0,slerp:()=>rh,sqrDist:()=>xh,sqrLen:()=>Eh,squaredDistance:()=>Zs,squaredLength:()=>Js,str:()=>gh,sub:()=>vh,subtract:()=>$s,transformMat3:()=>ch,transformMat4:()=>oh,transformQuat:()=>uh,zero:()=>fh});function Ks(){var e=new Ln(3);return Ln!=Float32Array&&(e[0]=0,e[1]=0,e[2]=0),e}function B0(e){var t=new Ln(3);return t[0]=e[0],t[1]=e[1],t[2]=e[2],t}function Xs(e){var t=e[0],n=e[1],r=e[2];return Math.sqrt(t*t+n*n+r*r)}function G0(e,t,n){var r=new Ln(3);return r[0]=e,r[1]=t,r[2]=n,r}function H0(e,t){return e[0]=t[0],e[1]=t[1],e[2]=t[2],e}function V0(e,t,n,r){return e[0]=t,e[1]=n,e[2]=r,e}function W0(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 js(e,t,n){return e[0]=t[0]/n[0],e[1]=t[1]/n[1],e[2]=t[2]/n[2],e}function K0(e,t){return e[0]=Math.ceil(t[0]),e[1]=Math.ceil(t[1]),e[2]=Math.ceil(t[2]),e}function X0(e,t){return e[0]=Math.floor(t[0]),e[1]=Math.floor(t[1]),e[2]=Math.floor(t[2]),e}function $0(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 Y0(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 j0(e,t){return e[0]=fi(t[0]),e[1]=fi(t[1]),e[2]=fi(t[2]),e}function q0(e,t,n){return e[0]=t[0]*n,e[1]=t[1]*n,e[2]=t[2]*n,e}function Z0(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 qs(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 Zs(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 Js(e){var t=e[0],n=e[1],r=e[2];return t*t+n*n+r*r}function J0(e,t){return e[0]=-t[0],e[1]=-t[1],e[2]=-t[2],e}function Q0(e,t){return e[0]=1/t[0],e[1]=1/t[1],e[2]=1/t[2],e}function eh(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 th(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 nh(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 rh(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 ih(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 ah(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 sh(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 oh(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 ch(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 uh(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 dh(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 mh(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 lh(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 hh(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 fh(e){return e[0]=0,e[1]=0,e[2]=0,e}function gh(e){return"vec3("+e[0]+", "+e[1]+", "+e[2]+")"}function _h(e,t){return e[0]===t[0]&&e[1]===t[1]&&e[2]===t[2]}function ph(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 vh=$s,yh=Ys,Sh=js,wh=qs,xh=Zs,Ah=Xs,Eh=Js,kh=(function(){var e=Ks();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 Th={runPitch:.002,runRoll:.01,bobUp:.005,bobPitch:.002,bobRoll:.002,maxBobHeight:6,maxBobAngle:1.2};function Mh(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 bh(e,t,n){return t?e>210?n/400:e>100?n/800:n/1600:0}function Rh(e,t,n,r,i){if(t<5)return{bobTime:0,bobCycle:0,bobCycleRun:0,bobFracSin:0};let a=bh(t,r,i),s=e+a,c=De(n,Ae.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 On=class{constructor(e={}){this.bobTime=0,this.bobCycle=0,this.bobCycleRun=0,this.bobFracSin=0,this.settings={...Th,...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,Ae.OnGround),s=Rh(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,Ae.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 g=Math.min(this.bobFracSin*i*this.settings.bobUp,this.settings.maxBobHeight),v=0,f=0;if(this.kick&&this.kick.remainingMs>0){let S=Math.max(0,Math.min(1,this.kick.remainingMs/this.kick.durationMs));v+=S*this.kick.pitch,f+=S*this.kick.roll,this.kick.remainingMs=Math.max(0,this.kick.remainingMs-t),this.kick.remainingMs===0&&(this.kick=void 0)}let E={angles:{x:o+v,y:0,z:m+f},offset:Mh({x:0,y:0,z:g}),bobCycle:this.bobCycle,bobCycleRun:this.bobCycleRun,bobFracSin:this.bobFracSin,xyspeed:i};return this.lastSample=E,E}},zh={pmFriction:6,pmStopSpeed:100,pmAccelerate:10,pmAirAccelerate:1,pmWaterAccelerate:4,pmWaterFriction:1,pmMaxSpeed:300,pmDuckSpeed:100,pmWaterSpeed:400,groundIsSlick:!1},Qs=800,Fe={x:0,y:0,z:0},Lh=250;function tt(){return{origin:Fe,velocity:Fe,viewAngles:Fe,onGround:!1,pmFlags:Ae.OnGround,pmType:oi.Normal,waterLevel:et.None,gravity:Qs,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?{...tt(),...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]:[]}:tt()}function _e(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:_e(e.origin.x,t.origin.x,r),y:_e(e.origin.y,t.origin.y,r),z:_e(e.origin.z,t.origin.z,r)},velocity:{x:_e(e.velocity.x,t.velocity.x,r),y:_e(e.velocity.y,t.velocity.y,r),z:_e(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:_e(e.damageAlpha,t.damageAlpha,r),blend:[_e(e.blend[0],t.blend[0],r),_e(e.blend[1],t.blend[1],r),_e(e.blend[2],t.blend[2],r),_e(e.blend[3],t.blend[3],r)],health:_e(e.health||0,t.health||0,r),armor:_e(e.armor||0,t.armor||0,r),ammo:_e(e.ammo||0,t.ammo||0,r)}}function Nh(e,t,n,r){let i=Math.min(Math.max(t.msec,0),Lh)/1e3,a=De(e.pmFlags,Ae.OnGround),s=De(e.pmFlags,Ae.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>et.None?Ts({forward:u,right:d,cmd:t,maxSpeed:n.pmWaterSpeed}):ks({forward:u,right:d,cmd:t,maxSpeed:n.pmMaxSpeed});if(e.waterLevel>et.None)o=ci({velocity:o,wishdir:m.wishdir,wishspeed:m.wishspeed,accel:n.pmWaterAccelerate,frametime:i});else if(a||s){let g=De(e.pmFlags,Ae.Ducked)?n.pmDuckSpeed:n.pmMaxSpeed,v=m.wishspeed>g?{wishdir:m.wishdir,wishspeed:g}:m;o=ci({velocity:o,wishdir:v.wishdir,wishspeed:v.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??Qs)*i};let h=r(e.origin,It(e.origin,dt(o,i))).endpos;return{...e,origin:h,velocity:o,viewAngles:c}}var In=class{constructor(e,t={}){this.baseFrame={frame:0,timeMs:0,state:tt()},this.commands=[],this.predicted=tt(),this.settings={...zh,...t},this.trace=e,this.predicted=this.baseFrame.state??tt()}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=Nh(e,t,this.settings,this.trace);return this.predicted=e,e}},he=null;function Oh(){if(!he){console.error("CGame Init: cgame imports not set");return}he.Com_Print(`===== CGame Initialization =====
|
|
147
|
+
`),I0(he),he.Com_Print(`CGame initialized
|
|
148
|
+
`)}function Ih(){he&&he.Com_Print(`CGame shutdown
|
|
149
|
+
`),he=null}function Ch(e,t,n,r,i,a,s){P0(e,t,n,r,i,a,s)}function Ph(){C0()}function Dh(e){return 0}function Fh(e){return 0}function Uh(e){return[]}function Bh(e,t){return 0}function Gh(e){return 0}function Hh(e){return 0}function Vh(e){}function Wh(e,t){he&&F0(he,e,t)}function Kh(e,t,n){if(!he)return;Nn().setCenterPrint(e,he.CL_ClientTime())}function Xh(e,t,n){if(!he)return;Nn().addNotification(t,n,he.CL_ClientTime())}function $h(e){Nn().clearNotifications()}function Yh(e){Nn().clearCenterPrint()}function jh(e,t){if(!he)return;D0().addSubtitle(e,he.CL_ClientTime())}function qh(e){return{x:0,y:0,z:0}}function Zh(e){return null}function eo(e){return he=e,{Init:Oh,Shutdown:Ih,DrawHUD:Ch,TouchPics:Ph,LayoutFlags:Dh,GetActiveWeaponWheelWeapon:Fh,GetOwnedWeaponWheelWeapons:Uh,GetWeaponWheelAmmoCount:Bh,GetPowerupWheelCount:Gh,GetHitMarkerDamage:Hh,Pmove:Vh,ParseConfigString:Wh,ParseCenterPrint:Kh,NotifyMessage:Xh,ShowSubtitle:jh,ClearNotify:$h,ClearCenterprint:Yh,GetMonsterFlashOffset:qh,GetExtension:Zh}}function to(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)=>{if(!e.host||!e.host.cvars)return null;let c=e.host.cvars.get(a);return c||e.host.cvars.register({name:a,defaultValue:s,flags:o})},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],no=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 ro=()=>{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 Jh=Object.defineProperty,go=(e,t)=>{for(var n in t)Jh(e,n,{get:t[n],enumerable:!0})},H={x:0,y:0,z:0};var F5=Math.PI/180;function Qh(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 N(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 ef(e){return _o(e,e)}function At(e){return Math.sqrt(ef(e))}function I(e){let t=At(e);return t===0?e:U(e,1/t)}function tf(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 nf(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 Ci=0,Pi=1,po=2,rf=Math.PI/180,af=180/Math.PI;function Ht(e,t){switch(t){case Ci:return e.x;case Pi:return e.y;case po:default:return e.z}}function Pn(e){return e*rf}function Ti(e){return e*af}function Mi(e){let t=e%360;return t<0?360+t:t}function Z(e){let t=Pn(Ht(e,Pi)),n=Pn(Ht(e,Ci)),r=Pn(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 Di(e){let t=Ht(e,Ci),n=Ht(e,Pi);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 Oe=624,sf=397,of=2567483615,cf=2147483648,uf=2147483647,yi=4294967296,df=class{constructor(e=5489){this.state=new Uint32Array(Oe),this.index=Oe,this.seed(e)}seed(e){this.state[0]=e>>>0;for(let t=1;t<Oe;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=Oe}nextUint32(){this.index>=Oe&&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<Oe;e++){let t=this.state[e]&cf|this.state[(e+1)%Oe]&uf,n=this.state[(e+sf)%Oe]^t>>>1;(t&1)!==0&&(n^=of),this.state[e]=n>>>0}this.index=0}getState(){return{index:this.index,state:Array.from(this.state)}}setState(e){if(e.state.length!==Oe)throw new Error(`Expected ${Oe} 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 df(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 Fi(e){return new vo(e)}var pe=1,je=2;var Ui=8,Bi=16,mf=32;var lf=16384;var Wn=65536,yo=1<<17,hf=1<<18,ff=1<<19,gf=1<<20,_f=1<<21,pf=1<<22,vf=1<<23,U5=1<<24,rt=1<<25,Kn=1<<26,B5=1<<27,G5=1<<28,H5=1<<29,Et=1<<30,V5=1<<31;var W5=1<<25,K5=1<<28,X5=1<<29,$5=1<<30,Y5=1<<31,yf=pe|je,j5=pe|Wn|je|rt|Et,q5=pe|Wn|je,Fn=pe|yo|je|rt|Et,Sf=mf|Ui|Bi,Z5=pe|Bi|Ui,Yt=pe|rt|Et|je|Kn,J5=hf|ff|gf|_f|pf|vf,Q5=pe|Ui|Bi|rt|Et,ek=pe|Wn|je,tk=pe|je,nk=pe|Wn|je|yo,rk=Yt|lf,ik=Number.MAX_SAFE_INTEGER-1;var So=256,wf=256,xf=8192,Af=2048,Ef=512,kf=256,Tf=So*2,Mf=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+xf]="Sounds",e[e.Images=e.Sounds+Af]="Images",e[e.Lights=e.Images+Ef]="Lights",e[e.ShadowLights=e.Lights+wf]="ShadowLights",e[e.Items=e.ShadowLights+Mf]="Items",e[e.PlayerSkins=e.Items+kf]="PlayerSkins",e[e.General=e.PlayerSkins+So]="General",e[e.WheelWeapons=e.General+Tf]="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||{}),ak=wo.MaxConfigStrings,bf={};go(bf,{addReplayFrame:()=>Nf,createReplaySession:()=>Lf,deserializeReplay:()=>zf,serializeReplay:()=>Rf});function Rf(e){return JSON.stringify(e,null,2)}function zf(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 Lf(e,t){return{metadata:{map:e,date:new Date().toISOString(),version:"1.0",seed:t},frames:[]}}function Nf(e,t,n,r){e.frames.push({serverFrame:n,cmd:t,timestamp:Date.now()-r})}var ge=(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))(ge||{}),fe=(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))(fe||{});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 Of=12,If=9,sk=Math.ceil(Of*If/16),Cf=23,Pf=2,ok=Math.ceil(Cf*Pf/16);var Df={};go(Df,{U_ANGLE1:()=>Wf,U_ANGLE2:()=>Kf,U_ANGLE3:()=>Xf,U_EFFECTS:()=>jf,U_EVENT:()=>Jf,U_FRAME:()=>$f,U_MODEL:()=>Uf,U_MODEL2:()=>e1,U_MODEL3:()=>t1,U_MODEL4:()=>n1,U_MOREBITS:()=>Qf,U_NUMBER:()=>Ff,U_ORIGIN1:()=>Gf,U_ORIGIN2:()=>Hf,U_ORIGIN3:()=>Vf,U_REMOVE:()=>r1,U_RENDERFX:()=>qf,U_SKIN:()=>Yf,U_SOLID:()=>Zf,U_SOUND:()=>Bf});var Ff=1,Uf=2,Bf=4,Gf=8,Hf=16,Vf=32,Wf=64,Kf=128,Xf=256,$f=512,Yf=1024,jf=2048,qf=4096,Zf=8192,Jf=16384,Qf=32768,e1=1,t1=2,n1=4,r1=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||{}),K=(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))(K||{}),ck=Object.keys(K).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||{}),i1={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 a1(e,t,n){if(e<=0||Ye(t,130)||!n.armorType||n.armorCount<=0)return{saved:0,remainingArmor:n.armorCount};let r=i1[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 s1(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}=Z(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 f={x:o.x/c,y:o.y/c,z:o.z/c};if(f.x*s.x+f.y*s.y+f.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 g=Math.max(d,h),v=Math.max(0,i.cellCount-g);return{saved:l,remainingCells:v}}var uk={[ye.Shells]:{id:ye.Shells,ammoType:K.Shells,quantity:10,weaponAmmo:!1},[ye.Bullets]:{id:ye.Bullets,ammoType:K.Bullets,quantity:50,weaponAmmo:!1},[ye.Rockets]:{id:ye.Rockets,ammoType:K.Rockets,quantity:5,weaponAmmo:!1},[ye.Grenades]:{id:ye.Grenades,ammoType:K.Grenades,quantity:5,weaponAmmo:!0},[ye.Cells]:{id:ye.Cells,ammoType:K.Cells,quantity:50,weaponAmmo:!1},[ye.Slugs]:{id:ye.Slugs,ammoType:K.Slugs,quantity:10,weaponAmmo:!1}};var ce=(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))(ce||{});var o1={...H};var dk=Object.freeze({aiflags:0,last_sighting:o1,trail_time:0,pausetime:0});var Gi=[{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}],c1=20,u1=440,d1=940,wi=32,m1=1<<24,Un=1;function io(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=io(e),r=io(t),i=nf(n.mins,n.maxs,r.mins,r.maxs);return Math.sqrt(i)}function l1(e){return e<=c1?"melee":e<=u1?"near":e<=d1?"mid":"far"}function Wt(e,t){let{forward:n}=Z(e.angles),r=I(N(t.origin,e.origin)),i=_o(r,n);return(e.spawnflags&Un)!==0&&e.trail_time===0&&e.enemy===null?i>.15:i>-.3}function jt(e,t,n,r){if((t.flags&m1)!==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 h1(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=Di(n)}function xo(e){e.angles.y=Mi(e.ideal_yaw)}function f1(e,t,n){e.enemy&&(e.goalentity=e.enemy,h1(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 g1(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){f1(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 _1(e,t,n,r){let i=qe(e,t),a=l1(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 p1(e,t,n,r,i){if((e.spawnflags&Un)!==0){if(!jt(e,t,i))return!1}else if(r.canHear&&!r.canHear(e,t))return!1;let a=N(t.origin,e.origin);return At(a)>1e3||r.areasConnected&&!r.areasConnected(e,t)?!1:(e.ideal_yaw=Di(a),xo(e),e.monsterinfo.aiflags|=4,e.enemy=t,!0)}function v1(e,t){return t.sightEntity&&t.sightEntityFrame>=t.frameNumber-1&&(e.spawnflags&Un)===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&Un)===0?{candidate:t.sound2Entity,heardit:!0}:t.sightClient?{candidate:t.sightClient,heardit:!1}:{candidate:null,heardit:!1}}function y1(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 Hi(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}=v1(e,t);if(!a||!a.inUse)return!1;if(a===e.enemy)return!0;if(y1(a))return!1;if(s){if(!p1(e,a,t,i,r))return!1}else{if(!_1(e,a,t,r))return!1;e.monsterinfo.aiflags&=-5,e.enemy=a}return g1(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=Pn(e);return{x:Math.cos(n)*t,y:Math.sin(n)*t,z:0}}function Vi(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){Vi(e,e.angles.y,t)}function Xn(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=Di(n)}function te(e,t,n){Hi(e,n.targetAwareness,n,n.trace)||qt(e,t)}function ue(e,t,n,r){if(!Hi(e,r.targetAwareness,r,r.trace)&&(Xn(e,e.goalentity),qt(e,n),t!==0&&Vi(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 oe(e,t,n,r){if((e.monsterinfo.aiflags&1)!==0){e.monsterinfo.stand?.(e,r);return}Hi(e,r.targetAwareness,r,r.trace),Xn(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 S1(e,t,n,r){t&&Xn(e,t),qt(e,r),n!==0&&Vi(e,e.angles.y,n)}function ne(e,t,n,r){Xn(e,e.enemy),qt(e,n),!(e.monsterinfo.checkattack&&e.monsterinfo.checkattack(e,r))&&t!==0&&Eo(e,e.angles.y,t,r)}function w1(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,Fn);if(e.groundentity=r.ent,!e.groundentity&&!r.allsolid&&!r.startsolid&&r.fraction===1){let i=t.pointcontents(n);i&Sf?(e.waterlevel=1,e.watertype=i):(e.waterlevel=0,e.watertype=0)}}function x1(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,Fn).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,Fn).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,Fn).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&&!x1(e,r)?(e.origin.x=o.x,e.origin.y=o.y,e.origin.z=o.z,!1):((e.flags&3)===0&&w1(e,r),!0)}var A1=Gi.filter(e=>e.save||e.type==="callback"),mk=new Map(A1.map(e=>[e.name,e]));var lk=1/40;function E1(e,t){let n=e.states.get(t);return n||(n={lastFireTime:0},e.states.set(t,n)),n}var k1=1;function T1(e,t){if(!e.client)return;let n=E1(e.client.weaponStates,C.Chaingun);!(e.client.buttons&k1)&&n.spinupCount&&n.spinupCount>0&&(t.sound(e,0,"weapons/chngnd1a.wav",1,0,0),n.spinupCount=0)}var hk={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:K.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_supershotgun:{type:"weapon",id:"weapon_supershotgun",name:"Super Shotgun",weaponId:C.SuperShotgun,ammoType:K.Shells,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_machinegun:{type:"weapon",id:"weapon_machinegun",name:"Machinegun",weaponId:C.Machinegun,ammoType:K.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1,think:T1},weapon_chaingun:{type:"weapon",id:"weapon_chaingun",name:"Chaingun",weaponId:C.Chaingun,ammoType:K.Bullets,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_grenadelauncher:{type:"weapon",id:"weapon_grenadelauncher",name:"Grenade Launcher",weaponId:C.GrenadeLauncher,ammoType:K.Grenades,initialAmmo:10,pickupAmmo:10,fireRate:1},weapon_rocketlauncher:{type:"weapon",id:"weapon_rocketlauncher",name:"Rocket Launcher",weaponId:C.RocketLauncher,ammoType:K.Rockets,initialAmmo:5,pickupAmmo:5,fireRate:1},weapon_hyperblaster:{type:"weapon",id:"weapon_hyperblaster",name:"HyperBlaster",weaponId:C.HyperBlaster,ammoType:K.Cells,initialAmmo:50,pickupAmmo:50,fireRate:.1},weapon_railgun:{type:"weapon",id:"weapon_railgun",name:"Railgun",weaponId:C.Railgun,ammoType:K.Slugs,initialAmmo:10,pickupAmmo:10,fireRate:1.5},weapon_bfg:{type:"weapon",id:"weapon_bfg",name:"BFG10K",weaponId:C.BFG10K,ammoType:K.Cells,initialAmmo:50,pickupAmmo:50,fireRate:1}};function M1(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 b1(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=I(n),u=U(o,(t===e?1600:500)*r/s);return e.velocity=F(e.velocity,u),u}function R1(e,t,n,r,i){let a=r,s=0,o=0,c,u;if(e.powerArmor){let d=s1(r,i,t,n,e.powerArmor);s=d.saved,c=d.remainingCells,a-=s}if(e.regularArmor){let d=a1(a,i,e.regularArmor);o=d.saved,u=d.remainingArmor,a-=o}return[Math.max(0,a),s,o,c,u]}function ao(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 de(e,t,n,r,i,a,s,o,c,u,d,m){if(!e.takedamage)return null;let l=M1(n,d),h=s*l,g=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 f=b1(e,n,r,g,c),[p,y,E,S,A]=R1(e,i,a,h,c);e.powerArmor&&S!==void 0&&(e.powerArmor.cellCount=S),e.regularArmor&&(e.regularArmor.armorCount=A??e.regularArmor.armorCount);let x=p;x>0&&(e.health-=x,m&&!Ye(c,1024)&&(e.classname==="player"||e.monsterinfo)&&m(i,1,ge.temp_entity,fe.BLOOD,i,a));let P=e.health<=0;return P?e.flags&&e.flags&2?e.health=Math.max(1,e.health):e.die&&e.die(e,t,n,x,i,u):x>0&&e.pain&&e.pain(e,n,o,x,u),{take:x,psave:y,asave:E,knocked:f,killed:P,remainingCells:S,remainingArmor:A}}function Wi(e,t,n,r,i,a,s,o,c,u={},d){let m=[],l=ao(t),h=u.canDamage??(()=>!0);for(let g of e){if(g===i||!g.takedamage||!h(g,t))continue;let v=g.mins&&g.maxs?tf(l,F(g.origin,g.mins),F(g.origin,g.maxs)):ao(g),f=N(l,v),p=At(f);if(a>0&&p>a)continue;let y=r-.5*p;if(y<=0)continue;let E=g===n?y*.5:y,S=I(N(g.origin,l)),A=de(g,t,n,S,v,S,E,E,s|1,o,c,d);m.push({target:g,result:A,appliedDamage:E})}return m}var fk=Fi();var $n=.1,Vt=80;var ko=Fi();function z1(){return ko.frandom()}function To(e,t){return Math.floor(ko.frandom()*(t-e+1)+e)}function yt(e,t,n){te(e,$n,n)}function ke(e,t,n){ue(e,t,$n,n)}function _t(e,t,n){oe(e,t,$n,n)}function Q(e,t,n){ne(e,t,$n,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 Re(e,t){t.sound(e,2,Kt.footstep,1,1,0)}function Bn(e,t){e.monsterinfo.current_move=t,e.monsterinfo.nextframe=t.firstframe,e.frame=t.firstframe,e.monsterinfo.aiflags&=-129}function L1(e,t){}var Ki,Mo,N1,bo,O1,I1,C1,P1,D1,Ro,F1;function U1(e,t){Bn(e,Ki)}function B1(e,t){e.monsterinfo.aiflags&1||e.enemy||z1()>.15||(Bn(e,Mo),t.sound(e,1,Kt.idle,1,2,0))}var G1=[{ai:yt,dist:0,think:B1},{ai:yt,dist:0},{ai:yt,dist:0},{ai:yt,dist:0},{ai:yt,dist:0}];Ki={firstframe:0,lastframe:4,frames:G1,endfunc:null};var H1=Array.from({length:20},()=>({ai:yt,dist:0}));Mo={firstframe:5,lastframe:24,frames:H1,endfunc:U1};var V1=[{ai:ke,dist:9.1},{ai:ke,dist:6.3},{ai:ke,dist:4.9},{ai:ke,dist:6.7,think:Re},{ai:ke,dist:6},{ai:ke,dist:8.2},{ai:ke,dist:7.2},{ai:ke,dist:6.1},{ai:ke,dist:4.9},{ai:ke,dist:4.7,think:Re},{ai:ke,dist:4.7}];N1={firstframe:25,lastframe:35,frames:V1,endfunc:null};var W1=[{ai:_t,dist:21},{ai:_t,dist:11,think:Re},{ai:_t,dist:21},{ai:_t,dist:25,think:L1},{ai:_t,dist:18,think:Re},{ai:_t,dist:19}];bo={firstframe:36,lastframe:41,frames:W1,endfunc:null};function Zt(e,t){e.monsterinfo.aiflags&1?Bn(e,Ki):Bn(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=Z(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:(de(u.ent,e,e,s,u.endpos,u.plane?.normal||H,n,r,0,0,i.timeSeconds,i.multicast.bind(i)),!0)}function K1(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 X1=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0,think:Lo},{ai:Q,dist:0,think:K1},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];O1={firstframe:67,lastframe:74,frames:X1,endfunc:Zt};function $1(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 Y1=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0,think:Re},{ai:Q,dist:0},{ai:Q,dist:0,think:Lo},{ai:Q,dist:0},{ai:Q,dist:0,think:$1},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0},{ai:Q,dist:0}];I1={firstframe:75,lastframe:86,frames:Y1,endfunc:Zt};function j1(e,t,n,r,i,a){let s=a.findByRadius(e.origin,r);for(let o of s){if(o===e||!o.takedamage)continue;let c=Math.sqrt(Math.pow(o.origin.x-e.origin.x,2)+Math.pow(o.origin.y-e.origin.y,2)+Math.pow(o.origin.z-e.origin.z,2)),u=Math.max(0,1-c/r);if(u<=0)continue;let d=Math.max(1,n*u*u),m=i*u*u,l=I(N(o.origin,e.origin));de(o,e,t,l,o.origin,l,d,m,1,0,a.timeSeconds,a.multicast.bind(a)),o.client&&(o.velocity={...o.velocity,z:Math.max(270,o.velocity.z)})}}function Xi(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}=Z(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,ge.temp_entity,fe.BERSERK_SLAM,s.endpos),e.gravity=1,e.velocity={x:0,y:0,z:0},j1(e,e,8,165,300,t)}function q1(e,t,n,r,i){if(e.health<=0){e.touch=void 0;return}t&&t.takedamage&&(e.touch=void 0,Xi(e,i))}function $i(e,t){e.velocity.z<0?e.gravity=2.25*(800/800):e.gravity=5.25*(800/800)}function Z1(e,t){if(!e.enemy)return;let n=N(e.enemy.origin,e.origin),i=Math.sqrt(n.x*n.x+n.y*n.y+n.z*n.z)*1.95,a=I({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)=>{q1(c,u,d,m,t),c.groundentity&&(c.frame=104,Xi(c,t),c.touch=void 0)},$i(e,t)}function J1(e,t){if($i(e,t),e.groundentity){e.monsterinfo.attack_finished=0,e.monsterinfo.aiflags&=-2049,e.frame=104,e.touch&&(Xi(e,t),e.touch=void 0);return}t.timeSeconds>(e.monsterinfo.attack_finished||0)?e.monsterinfo.nextframe=89:e.monsterinfo.nextframe=91}var Q1=[{ai:Q,dist:0},{ai:Q,dist:0},{ai:L,dist:0,think:Z1},{ai:L,dist:0,think:$i},{ai:L,dist:0,think:J1},{ai:L,dist:0,think:Re},{ai:L,dist:0},{ai:L,dist:0,think:Re},{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:Re}];C1={firstframe:87,lastframe:109,frames:Q1,endfunc:Zt};var eg=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];P1={firstframe:149,lastframe:152,frames:eg,endfunc:Zt};var tg=Array.from({length:20},(e,t)=>({ai:L,dist:0,think:t%5===4?Re:void 0}));D1={firstframe:153,lastframe:172,frames:tg,endfunc:Zt};function No(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 ng=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:Re},{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:ng,endfunc:No};var rg=[{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0,think:Re},{ai:L,dist:0},{ai:L,dist:0},{ai:L,dist:0}];F1={firstframe:186,lastframe:193,frames:rg,endfunc:No};function ig(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&&de(d,u,u.owner,u.velocity,u.origin,m?m.normal:H,i,0,0,8,e.timeSeconds,e.multicast.bind(e));let h=e.findByRadius(u.origin,120);Wi(h,u,u.owner,a,u.owner,120,0,9,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(u.origin,2,ge.temp_entity,fe.ROCKET_EXPLOSION,u.origin),e.free(u)},e.finalizeSpawn(c)}function Oo(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);Wi(u,c,c.owner,i,c.owner,120,0,6,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,ge.temp_entity,fe.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 Io(e,t,n,r,i,a,s){let o=e.spawn();s===10?o.classname="hyperblaster_bolt":s===58?(o.classname="blueblaster_bolt",o.modelindex=e.modelIndex("models/objects/laser/tris.md2"),o.skin=1):o.classname="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)=>{if(u!==c.owner){if(u&&u.takedamage)de(u,c,c.owner,c.velocity,c.origin,d?d.normal:H,i,1,0,s,e.timeSeconds,e.multicast.bind(e));else if(d){let l=fe.BLASTER;s===58&&(l=fe.BLUEHYPERBLASTER),e.multicast(c.origin,1,ge.temp_entity,l,c.origin,d.normal)}e.free(c)}},e.finalizeSpawn(o)}function ag(e,t,n,r,i,a){let s=e.spawn();s.classname="ionripper",s.owner=t,s.origin={...n},s.velocity={x:r.x*a,y:r.y*a,z:r.z*a},s.movetype=10,s.solid=2,s.modelindex=e.modelIndex("models/objects/boomrang/tris.md2"),s.mins={x:-2,y:-2,z:-2},s.maxs={x:2,y:2,z:2},s.touch=(o,c,u,d)=>{if(c!==o.owner&&c&&c.takedamage){de(c,o,o.owner,o.velocity,o.origin,u?u.normal:H,i,1,4,35,e.timeSeconds,e.multicast.bind(e)),e.free(o);return}},s.think=o=>{e.multicast(o.origin,1,ge.temp_entity,fe.WELDING_SPARKS,o.origin,H,228),e.free(o)},e.scheduleThink(s,e.timeSeconds+3),e.finalizeSpawn(s)}function sg(e,t,n,r,i,a){Io(e,t,n,r,i,a,58)}function og(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=I(N(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 g=e.trace(m,null,null,o,t,pe|rt|Et|Kn);if(!g.ent||g.fraction>=1||(g.ent.takedamage&&g.ent!==t.owner&&de(g.ent,t,t.owner,s,g.endpos,H,r,1,4,12,e.timeSeconds,e.multicast.bind(e)),!(g.ent.svflags&4)&&!g.ent.client&&g.ent.classname!=="misc_explobox"))break;u.push(g.ent),d.push(g.ent.solid),g.ent.solid=0,m={...g.endpos}}let l=e.trace(i,null,null,o,t,pe);e.multicast(t.origin,2,ge.temp_entity,fe.BFG_LASER,i,l.endpos)}finally{for(let l=0;l<u.length;l++)u[l].solid=d[l]}}function cg(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,yf).fraction<1||og(t,e,i,n)}t.scheduleThink(e,t.timeSeconds+.1)}function ug(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=N(e.origin,i),s=At(a),o=e.dmg_radius||100,c=(e.radius_dmg||200)*(1-Math.sqrt(s/o));c>0&&de(r,e,e.owner,e.velocity,i,H,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 dg(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&&de(u,c,c.owner,c.velocity,c.origin,d?d.normal:H,200,0,4,13,e.timeSeconds,e.multicast.bind(e));let l=e.findByRadius(c.origin,100);Wi(l,c,c.owner,200,u,100,4,13,e.timeSeconds,{},e.multicast.bind(e)),e.multicast(c.origin,2,ge.temp_entity,fe.BFG_BIGEXPLOSION,c.origin),c.solid=0,c.touch=void 0,c.velocity=H,c.modelindex=e.modelIndex("sprites/s_bfg3.sp2"),c.frame=0,c.enemy=u,c.think=(h,g)=>ug(h,g),e.scheduleThink(c,e.timeSeconds+.1)},o.think=(c,u)=>cg(c,u),e.scheduleThink(o,e.timeSeconds+.016),e.finalizeSpawn(o)}function so(){return 2*Math.random()-1}function Gn(e,t,n,r,i,a,s,o,c,u=0){let d=n;if(a>0||s>0){let h=$t(n),{right:g,up:v}=Z(h),f=so()*a,p=so()*s;d={x:n.x+g.x*f+v.x*p,y:n.y+g.y*f+v.y*p,z:n.z+g.z*f+v.z*p},d=I(d)}let m=F(t,U(d,8192)),l=c.trace(t,m,H,H,e,Yt);!l.ent||l.fraction===1||de(l.ent,e,e,d,l.endpos,l.plane?.normal||H,r,i,18,u,c.timeSeconds)}var nt=Gn;function mg(e,t,n,r,i,a,s,o,c,u,d=2){for(let m=0;m<o;m++)nt(e,t,n,r,i,a,s,c,u,d)}function He(e,t,n,r,i,a,s,o,c=1){Io(o,e,t,n,r,i,c)}function lg(e,t,n,r,i,a,s,o){sg(o,e,t,n,r,i)}function hg(e,t,n,r,i,a,s,o){ag(o,e,t,n,r,i)}function fg(e,t,n,r,i,a,s){Oo(s,e,t,n,r,i)}function Jt(e,t,n,r,i,a,s){ig(s,e,t,n,r,120,i)}function Co(e,t,n,r,i,a,s,o,c){dg(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,H,H,e,Yt);s.multicast(t,2,ge.temp_entity,fe.RAILTRAIL,t,c.endpos),c.ent&&c.ent.takedamage&&de(c.ent,e,e,n,c.endpos,H,r,i,6,11,s.timeSeconds)}function Qt(e,t,n,r,i){if(!e.enemy)return!1;let{forward:a}=Z(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,H,H,e,Yt);if(u.ent===e.enemy||u.ent&&u.ent.takedamage){let d=I(N(u.endpos,s));return de(u.ent,e,e,d,u.endpos,u.plane?.normal||H,n,r,0,0,i.timeSeconds),!0}return!1}function gg(e,t,n,r,i,a,s,o){Jt(e,t,n,r,i,a,o)}function oo(e,t){let n={...e.origin},r=F(n,U(e.movedir,2048)),i={...n},a=16,s=[],o=[];try{for(let c=0;c<a;c++){let u=t.trace(i,r,H,H,e,pe|rt|Et|Kn);if(!u.ent||u.fraction>=1)break;if(e.dmg>0&&u.ent.takedamage&&u.ent!==e.owner&&de(u.ent,e,e.owner,e.movedir,u.endpos,H,e.dmg,0,4,31,t.timeSeconds),u.ent&&u.ent.solid===3){t.multicast(u.endpos,1,ge.temp_entity,fe.LASER_SPARKS,10,u.endpos,u.plane?.normal||H,e.skin);break}if(u.ent&&(u.ent.takedamage||u.ent.client)){s.push(u.ent),o.push(u.ent.solid),u.ent.solid=0,i={...u.endpos};continue}break}}finally{for(let c=0;c<s.length;c++)s[c].solid=o[c]}t.linkentity(e)}function _g(e,t){e.owner&&(e.owner.beam===e&&(e.owner.beam=null),e.owner.beam2===e&&(e.owner.beam2=null)),t.free(e)}function bi(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,a.skin=4076007664,a.think=(s,o)=>{s.postthink&&s.postthink(s,o),o.timeSeconds>=s.timestamp?_g(s,o):s.nextthink=o.timeSeconds+.1},a.postthink=(s,o)=>{r(s,o),oo(s,o)},n?e.beam2=a:e.beam=a),a.timestamp=i.timeSeconds+.2,a.nextthink=i.timeSeconds+.01,r(a,i),oo(a,i)}var Yi=.1,pg={x:0,y:30,z:-15},vg={x:0,y:15,z:0},yg={x:0,y:-15,z:0},Sg={x:0,y:-30,z:-15},wg={x:30,y:20,z:0},xg={x:30,y:-20,z:0};function Ag(e,t,n){te(e,Yi,n)}function Eg(e,t,n){ue(e,t,Yi,n)}function Yn(e,t,n){ne(e,t,Yi,n)}function ji(e,t,n){ae(e,t)}var qi,Do,Fo,kg,Uo,Bo,Tg,Mg,bg,Go;function Rg(e){e.monsterinfo.current_move=qi}function zg(e){e.monsterinfo.current_move=Do}function en(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Fo:e.monsterinfo.current_move=qi}function Ho(e){e.monsterinfo.current_move=Uo}function Lg(e){e.enemy&&Wt(e,e.enemy)&&Math.random()<=.7?Ho(e):e.monsterinfo.current_move=Bo}function Ri(e,t){let{forward:n,right:r,up:i}=Z(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 Ng(e,t){if(!e.enemy)return;t.engine.sound?.(e,1,"boss2/machgun.wav",1,1,0);let n=Ri(e,wg),r=I(N(e.enemy.origin,n));nt(e,n,r,6,4,.1,.05,0,t,4);let i=Ri(e,xg),a=I(N(e.enemy.origin,i));nt(e,i,a,6,4,.1,.05,0,t,4)}function Og(e,t){if(!e.enemy)return;let n=[pg,vg,yg,Sg],r=n[Math.floor(Math.random()*n.length)],i=Ri(e,r),a=I(N(e.enemy.origin,i));Jt(e,i,a,50,500,0,t)}function Ig(e){e.monsterinfo.nextframe=Go.lastframe,e.nextthink=-1}var Vo=Array.from({length:20},()=>({ai:Eg,dist:10}));Do={firstframe:0,lastframe:19,frames:Vo,endfunc:zg};Fo={firstframe:0,lastframe:19,frames:Vo,endfunc:en};var Cg=Array.from({length:21},()=>({ai:Ag,dist:0}));qi={firstframe:29,lastframe:49,frames:Cg,endfunc:Rg};var Pg=Array.from({length:9},(e,t)=>({ai:Yn,dist:2,think:t===8?Ho:null}));kg={firstframe:50,lastframe:58,frames:Pg,endfunc:null};var Dg=Array.from({length:6},()=>({ai:Yn,dist:2,think:Ng}));Uo={firstframe:59,lastframe:64,frames:Dg,endfunc:Lg};var Fg=Array.from({length:4},()=>({ai:Yn,dist:2}));Bo={firstframe:65,lastframe:68,frames:Fg,endfunc:en};var Ug=Array.from({length:21},(e,t)=>({ai:Yn,dist:2,think:t===12?Og:null}));Tg={firstframe:69,lastframe:89,frames:Ug,endfunc:en};var Bg=Array.from({length:18},()=>({ai:ji,dist:0}));Mg={firstframe:90,lastframe:107,frames:Bg,endfunc:en};var Gg=Array.from({length:4},()=>({ai:ji,dist:0}));bg={firstframe:108,lastframe:111,frames:Gg,endfunc:en};var Hg=Array.from({length:49},()=>({ai:ji,dist:0}));Go={firstframe:112,lastframe:160,frames:Hg,endfunc:Ig};var jn=.1,Zi=80,qn=Math.random;function Wo(e,t,n){te(e,jn,n)}function Te(e,t,n){ue(e,t,jn,n)}function Me(e,t,n){oe(e,t,jn,n)}function T(e,t,n){ne(e,t,jn,n)}function R(e,t,n){ae(e,t)}var Ji,Vg,Wg,Ko,Xo,Kg,Xg,$g,Yg,jg,qg,Zg,Jg,Qg;function $o(e){e.monsterinfo.current_move=Ji}function Ze(e){e.monsterinfo.power_armor_type=1,e.monsterinfo.aiflags&4?e.monsterinfo.current_move=Ji:e.monsterinfo.current_move=Ko}function e_(e,t){t.engine.sound?.(e,0,"brain/melee1.wav",1,1,0)}function t_(e,t){let n={x:Zi,y:e.maxs.x,z:8};Qt(e,n,15+Math.floor(qn()*5),40,t)?t.engine.sound?.(e,0,"brain/melee3.wav",1,1,0):e.monsterinfo.melee_debounce_time=t.timeSeconds+3}function n_(e,t){t.engine.sound?.(e,0,"brain/melee2.wav",1,1,0)}function r_(e,t){let n={x:Zi,y:e.mins.x,z:8};Qt(e,n,15+Math.floor(qn()*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:Zi,y:0,z:8},10+Math.floor(qn()*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=Z(e.angles).forward,r={...e.origin};r.z+=24;let i={...e.enemy.origin};if(t.trace(r,i,H,H,e,1610612739).ent!==e.enemy)return;t.engine.sound?.(e,0,"brain/brnatck3.wav",1,1,0),t.multicast(e.origin,1,ge.temp_entity,fe.PARASITE_ATTACK,e,r,i);let s=N(r,i);de(e.enemy,e,e,s,e.enemy.origin,H,5,0,0,37,t.timeSeconds),e.origin={...e.origin,z:e.origin.z+1};let o=Z(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 i_(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=Z(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=I(N(n.enemy.origin,c));e.origin=c,e.movedir=u,t.linkentity(e)}function a_(e,t){let n=e.owner;if(!n||!n.inUse||!n.enemy)return;let{forward:r,right:i,up:a}=Z(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=I(N(n.enemy.origin,c));e.origin=c,e.movedir=u,t.linkentity(e)}function Ie(e,t){bi(e,1,!1,i_,t),bi(e,1,!0,a_,t)}function s_(e){qn()<.5&&e.enemy&&e.enemy.health>0&&(e.frame=0)}function o_(e){return e.monsterinfo.aiflags&16||(e.monsterinfo.aiflags|=16),!0}function c_(e){}function u_(e){e.monsterinfo.aiflags&=-17}var d_=Array.from({length:30},()=>({ai:Wo,dist:0}));Ji={firstframe:162,lastframe:191,frames:d_,endfunc:$o};var m_=Array.from({length:30},()=>({ai:Wo,dist:0}));Vg={firstframe:192,lastframe:221,frames:m_,endfunc:$o};var l_=[{ai:Te,dist:7},{ai:Te,dist:2},{ai:Te,dist:3},{ai:Te,dist:3},{ai:Te,dist:1},{ai:Te,dist:0},{ai:Te,dist:0},{ai:Te,dist:9},{ai:Te,dist:-4},{ai:Te,dist:-1},{ai:Te,dist:2}];Wg={firstframe:0,lastframe:10,frames:l_,endfunc:null};var h_=[{ai:Me,dist:9},{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:10},{ai:Me,dist:-4},{ai:Me,dist:-1},{ai:Me,dist:2}];Ko={firstframe:0,lastframe:10,frames:h_,endfunc:null};var f_=[{ai:T,dist:8},{ai:T,dist:3},{ai:T,dist:5},{ai:T,dist:0},{ai:T,dist:-3,think:e_},{ai:T,dist:0},{ai:T,dist:-5},{ai:T,dist:-7,think:t_},{ai:T,dist:0},{ai:T,dist:6,think:n_},{ai:T,dist:1},{ai:T,dist:2,think:r_},{ai:T,dist:-3},{ai:T,dist:6},{ai:T,dist:-1},{ai:T,dist:-3},{ai:T,dist:2},{ai:T,dist:-11}];Xo={firstframe:53,lastframe:70,frames:f_,endfunc:Ze};var g_=[{ai:T,dist:5},{ai:T,dist:-4},{ai:T,dist:-4},{ai:T,dist:-3},{ai:T,dist:0,think:Yo},{ai:T,dist:0},{ai:T,dist:13,think:jo},{ai:T,dist:0},{ai:T,dist:2},{ai:T,dist:0},{ai:T,dist:-9,think:qo},{ai:T,dist:0},{ai:T,dist:4},{ai:T,dist:3},{ai:T,dist:2},{ai:T,dist:-3},{ai:T,dist:-6}];Kg={firstframe:71,lastframe:87,frames:g_,endfunc:Ze};var __=[{ai:T,dist:5},{ai:T,dist:-4},{ai:T,dist:-4},{ai:T,dist:-3},{ai:T,dist:0,think:Yo},{ai:T,dist:0,think:co},{ai:T,dist:13},{ai:T,dist:0,think:jo},{ai:T,dist:2},{ai:T,dist:0,think:co},{ai:T,dist:-9,think:qo},{ai:T,dist:0},{ai:T,dist:4},{ai:T,dist:3},{ai:T,dist:2},{ai:T,dist:-3},{ai:T,dist:-6}];Xg={firstframe:71,lastframe:87,frames:__,endfunc:Ze};var p_=[{ai:T,dist:9,think:Ie},{ai:T,dist:2,think:Ie},{ai:T,dist:3,think:Ie},{ai:T,dist:3,think:Ie},{ai:T,dist:1,think:Ie},{ai:T,dist:0,think:Ie},{ai:T,dist:0,think:Ie},{ai:T,dist:10,think:Ie},{ai:T,dist:-4,think:Ie},{ai:T,dist:-1,think:Ie},{ai:T,dist:2,think:s_}];$g={firstframe:0,lastframe:10,frames:p_,endfunc:Ze};var v_=[{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}];Yg={firstframe:88,lastframe:108,frames:v_,endfunc:Ze};var y_=[{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}];jg={firstframe:109,lastframe:116,frames:y_,endfunc:Ze};var S_=[{ai:R,dist:-2},{ai:R,dist:2},{ai:R,dist:1},{ai:R,dist:3},{ai:R,dist:0},{ai:R,dist:-4}];qg={firstframe:117,lastframe:122,frames:S_,endfunc:Ze};var w_=Array.from({length:18},()=>({ai:R,dist:0}));Zg={firstframe:123,lastframe:140,frames:w_,endfunc:Zo};var x_=[{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:0},{ai:R,dist:9},{ai:R,dist:0}];Jg={firstframe:141,lastframe:145,frames:x_,endfunc:Zo};var A_=[{ai:R,dist:0},{ai:R,dist:-2,think:o_},{ai:R,dist:17,think:c_},{ai:R,dist:-3},{ai:R,dist:-1,think:u_},{ai:R,dist:-5},{ai:R,dist:-6},{ai:R,dist:-6}];Qg={firstframe:146,lastframe:153,frames:A_,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 Zn=.1,E_=80,Tt=Math.random;function Jo(e,t,n){te(e,Zn,n)}function k_(e,t,n){ue(e,t,Zn,n)}function T_(e,t,n){oe(e,t,Zn,n)}function z(e,t,n){ne(e,t,Zn,n)}function Mt(e,t,n){ae(e,t)}var Qi,Qo,ec,M_,ea,zi,b_,ta,tc,R_,z_,L_,N_,O_,I_,nc;function rc(e){e.monsterinfo.current_move=Qi}function C_(e){e.monsterinfo.current_move=Qo}function it(e){if(e.monsterinfo.aiflags&4){e.monsterinfo.current_move=Qi;return}e.monsterinfo.current_move=ec}function P_(e){e.monsterinfo.aiflags&4||e.enemy||Tt()<=.3&&(e.monsterinfo.current_move=nc)}function D_(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 F_(e,t){let n={x:E_,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 U_(e,t){let{forward:n,right:r}=Z(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=H;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=N(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=I(l);e.skin>1?gg(e,c,h,50,u,0,.075,t):Jt(e,c,h,50,u,0,t)}function B_(e,t){if(t.engine.sound?.(e,0,"chick/chkatck1.wav",1,1,0),e.monsterinfo.blindfire&&e.monsterinfo.blind_fire_target){let n=N(e.monsterinfo.blind_fire_target,e.origin);e.ideal_yaw=$t(n).y}}function G_(e,t){t.engine.sound?.(e,0,"chick/chkatck5.wav",1,1,0)}function H_(e){e.monsterinfo.current_move=ea}function V_(e){if(e.monsterinfo.blindfire){e.monsterinfo.blindfire=!1,e.monsterinfo.current_move=zi;return}if(e.enemy&&e.enemy.health>0&&Tt()<=.6){e.monsterinfo.current_move=ea;return}e.monsterinfo.current_move=zi}function W_(e){if(e.enemy&&e.enemy.health>0&&Tt()<=.9){e.monsterinfo.current_move=ta;return}e.monsterinfo.current_move=tc}function K_(e){e.monsterinfo.current_move=ta}var X_=Array.from({length:30},(e,t)=>({ai:Jo,dist:0,think:t===8?(n,r)=>D_(n,r):null}));nc={firstframe:201,lastframe:230,frames:X_,endfunc:rc};var $_=Array.from({length:30},(e,t)=>({ai:Jo,dist:0,think:t===29?P_:null}));Qi={firstframe:101,lastframe:130,frames:$_,endfunc:rc};var Y_=Array.from({length:10},()=>({ai:k_,dist:6}));Qo={firstframe:171,lastframe:180,frames:Y_,endfunc:C_};var j_=Array.from({length:10},()=>({ai:T_,dist:12}));ec={firstframe:171,lastframe:180,frames:j_,endfunc:it};var q_=Array.from({length:5},()=>({ai:Mt,dist:0}));R_={firstframe:90,lastframe:94,frames:q_,endfunc:it};var Z_=Array.from({length:5},()=>({ai:Mt,dist:0}));z_={firstframe:95,lastframe:99,frames:Z_,endfunc:it};var J_=Array.from({length:21},()=>({ai:Mt,dist:0}));L_={firstframe:100,lastframe:120,frames:J_,endfunc:it};var Q_=Array.from({length:12},()=>({ai:Mt,dist:0}));N_={firstframe:48,lastframe:59,frames:Q_,endfunc:ic};var ep=Array.from({length:23},()=>({ai:Mt,dist:0}));O_={firstframe:60,lastframe:82,frames:ep,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 tp=[{ai:z,dist:0,think:B_},{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:H_}];M_={firstframe:0,lastframe:12,frames:tp,endfunc:null};var np=[{ai:z,dist:19,think:U_},{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:G_},{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:V_}];ea={firstframe:13,lastframe:26,frames:np,endfunc:null};var rp=[{ai:z,dist:-3},{ai:z,dist:0},{ai:z,dist:-6},{ai:z,dist:-4},{ai:z,dist:-2}];zi={firstframe:27,lastframe:31,frames:rp,endfunc:it};var ip=[{ai:z,dist:1},{ai:z,dist:8},{ai:z,dist:3}];b_={firstframe:32,lastframe:34,frames:ip,endfunc:K_};var ap=[{ai:z,dist:1},{ai:z,dist:7,think:F_},{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:W_}];ta={firstframe:35,lastframe:43,frames:ap,endfunc:null};var sp=[{ai:z,dist:-6},{ai:z,dist:-1},{ai:z,dist:-6},{ai:z,dist:0}];tc={firstframe:44,lastframe:47,frames:sp,endfunc:it};var op=Array.from({length:7},()=>({ai:Mt,dist:0}));I_={firstframe:83,lastframe:89,frames:op,endfunc:it};var Jn=.1,cp=80,up=24;function dp(e,t,n){te(e,Jn,n)}function mp(e,t,n){ue(e,t,Jn,n)}function ac(e,t,n){oe(e,t,Jn,n)}function ie(e,t,n){ne(e,t,Jn,n)}function na(e,t,n){ae(e,t)}var lp,hp,sc,oc,fp,gp,_p,pp;function vp(e){e.monsterinfo.current_move=oc}function ra(e){e.monsterinfo.current_move=sc}function lo(e,t){Qt(e,{x:cp,y:0,z:0},5,0,t)}function yp(e,t){t.engine.sound?.(e,0,"flipper/flpatck1.wav",1,1,0)}var Sp=[{ai:dp,dist:0}];lp={firstframe:41,lastframe:41,frames:Sp,endfunc:null};var wp=Array.from({length:24},()=>({ai:ac,dist:up}));oc={firstframe:70,lastframe:93,frames:wp,endfunc:null};var xp=Array.from({length:6},()=>({ai:ac,dist:8}));sc={firstframe:65,lastframe:70,frames:xp,endfunc:vp};var Ap=Array.from({length:24},()=>({ai:mp,dist:4}));hp={firstframe:41,lastframe:64,frames:Ap,endfunc:null};var Ep=Array.from({length:5},()=>({ai:na,dist:0}));gp={firstframe:99,lastframe:103,frames:Ep,endfunc:ra};var kp=Array.from({length:5},()=>({ai:na,dist:0}));_p={firstframe:94,lastframe:98,frames:kp,endfunc:ra};var Tp=[{ai:ie,dist:0,think:yp},{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}];fp={firstframe:0,lastframe:19,frames:Tp,endfunc:ra};function Mp(e){e.mins={x:-16,y:-16,z:-24},e.maxs={x:16,y:16,z:-8},e.movetype=7,e.nextthink=-1}var bp=Array.from({length:56},()=>({ai:na,dist:0}));pp={firstframe:104,lastframe:159,frames:bp,endfunc:Mp};var Qn=.1;function Rp(e,t,n){te(e,Qn,n)}function zp(e,t,n){ue(e,t,Qn,n)}function Lp(e,t,n){oe(e,t,Qn,n)}function Np(e,t,n){ne(e,t,Qn,n)}function cc(e,t,n){ae(e,t)}var ia,uc,dc,Op,Ip,mc;function Cp(e){e.monsterinfo.current_move=ia}function Pp(e){e.monsterinfo.current_move=uc}function aa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=dc:e.monsterinfo.current_move=ia}function Dp(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=I(N(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function Fp(e){e.monsterinfo.nextframe=mc.lastframe,e.nextthink=-1}var Up=Array.from({length:46},()=>({ai:Rp,dist:0}));ia={firstframe:0,lastframe:45,frames:Up,endfunc:Cp};var Bp=Array.from({length:46},()=>({ai:zp,dist:5}));uc={firstframe:0,lastframe:45,frames:Bp,endfunc:Pp};var Gp=Array.from({length:46},()=>({ai:Lp,dist:10}));dc={firstframe:0,lastframe:45,frames:Gp,endfunc:aa};var Hp=Array.from({length:20},(e,t)=>({ai:Np,dist:0,think:t===10?Dp:null}));Op={firstframe:46,lastframe:65,frames:Hp,endfunc:aa};var Vp=Array.from({length:6},()=>({ai:cc,dist:0}));Ip={firstframe:66,lastframe:71,frames:Vp,endfunc:aa};var Wp=Array.from({length:10},()=>({ai:cc,dist:0}));mc={firstframe:84,lastframe:93,frames:Wp,endfunc:Fp};var er=.1;function Kp(e,t,n){te(e,er,n)}function Xp(e,t,n){ue(e,t,er,n)}function $p(e,t,n){oe(e,t,er,n)}function Yp(e,t,n){ne(e,t,er,n)}function lc(e,t,n){ae(e,t)}var sa,hc,fc,jp,qp,gc;function Zp(e){e.monsterinfo.current_move=sa}function Jp(e){e.monsterinfo.current_move=hc}function oa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=fc:e.monsterinfo.current_move=sa}function Qp(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=I(N(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function ev(e,t){if(!e.enemy)return;let n=5+Math.random()*5;qe(e,e.enemy)<=80&&Wt(e,e.enemy)&&de(e.enemy,e,e,I(N(e.enemy.origin,e.origin)),e.enemy.origin,H,n,5,2,0,t.timeSeconds)}function tv(e){e.monsterinfo.nextframe=gc.lastframe,e.nextthink=-1}var nv=Array.from({length:46},()=>({ai:Kp,dist:0}));sa={firstframe:0,lastframe:45,frames:nv,endfunc:Zp};var rv=Array.from({length:46},()=>({ai:Xp,dist:5}));hc={firstframe:0,lastframe:45,frames:rv,endfunc:Jp};var iv=Array.from({length:46},()=>({ai:$p,dist:10}));fc={firstframe:0,lastframe:45,frames:iv,endfunc:oa};var av=Array.from({length:20},(e,t)=>({ai:Yp,dist:0,think:t===10?Qp:t===12?ev:null}));jp={firstframe:46,lastframe:65,frames:av,endfunc:oa};var sv=Array.from({length:6},()=>({ai:lc,dist:0}));qp={firstframe:66,lastframe:71,frames:sv,endfunc:oa};var ov=Array.from({length:10},()=>({ai:lc,dist:0}));gc={firstframe:84,lastframe:93,frames:ov,endfunc:tv};var tr=.1;function cv(e,t,n){te(e,tr,n)}function uv(e,t,n){ue(e,t,tr,n)}function dv(e,t,n){oe(e,t,tr,n)}function _c(e,t,n){ne(e,t,tr,n)}function pc(e,t,n){ae(e,t)}var ca,vc,yc,mv,lv,hv,Sc;function fv(e){e.monsterinfo.current_move=ca}function gv(e){e.monsterinfo.current_move=vc}function nr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=yc:e.monsterinfo.current_move=ca}function _v(e){return e<=80?"melee":e<=500?"near":e<=1e3?"mid":"far"}function pv(e,t){if(!e.enemy||!Wt(e,e.enemy))return;let n=qe(e,e.enemy);if(_v(n)!=="melee")return;let r={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},i=I(N(e.enemy.origin,r));de(e.enemy,e,e,i,e.origin,{x:0,y:0,z:0},20,10,0,0,t.timeSeconds)}function vv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=I(N(e.enemy.origin,n));Po(e,n,r,50,100,0,t)}function yv(e){e.monsterinfo.nextframe=Sc.lastframe,e.nextthink=-1}var Sv=Array.from({length:30},()=>({ai:cv,dist:0}));ca={firstframe:0,lastframe:29,frames:Sv,endfunc:fv};var wv=Array.from({length:40},()=>({ai:uv,dist:3}));vc={firstframe:30,lastframe:69,frames:wv,endfunc:gv};var xv=Array.from({length:20},()=>({ai:dv,dist:12}));yc={firstframe:70,lastframe:89,frames:xv,endfunc:nr};var Av=Array.from({length:10},(e,t)=>({ai:_c,dist:0,think:t===5?pv:null}));mv={firstframe:90,lastframe:99,frames:Av,endfunc:nr};var Ev=Array.from({length:12},(e,t)=>({ai:_c,dist:0,think:t===6?vv:null}));lv={firstframe:100,lastframe:111,frames:Ev,endfunc:nr};var kv=Array.from({length:6},()=>({ai:pc,dist:0}));hv={firstframe:112,lastframe:117,frames:kv,endfunc:nr};var Tv=Array.from({length:12},()=>({ai:pc,dist:0}));Sc={firstframe:118,lastframe:129,frames:Tv,endfunc:yv};var rr=.1;function Mv(e,t,n){te(e,rr,n)}function bv(e,t,n){ue(e,t,rr,n)}function Rv(e,t,n){oe(e,t,rr,n)}function wc(e,t,n){ne(e,t,rr,n)}function xc(e,t,n){ae(e,t)}var ua,Ac,Ec,zv,Lv,Nv,kc;function Ov(e){e.monsterinfo.current_move=ua}function Iv(e){e.monsterinfo.current_move=Ac}function ir(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Ec:e.monsterinfo.current_move=ua}function Cv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight-8},r=I(N(e.enemy.origin,n)),i=10,a=2;t.engine.sound?.(e,0,"gunner/gunatck2.wav",1,1,0),nt(e,n,r,i,a,0,0,0,t,5)}function Pv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=I(N(e.enemy.origin,n)),i=50,a=600;t.engine.sound?.(e,0,"gunner/gunatck3.wav",1,1,0),Oo(t,e,n,r,i,a)}var Dv=Array.from({length:30},()=>({ai:Mv,dist:0}));ua={firstframe:0,lastframe:29,frames:Dv,endfunc:Ov};var Fv=Array.from({length:40},()=>({ai:bv,dist:2}));Ac={firstframe:30,lastframe:69,frames:Fv,endfunc:Iv};var Uv=Array.from({length:20},()=>({ai:Rv,dist:10}));Ec={firstframe:70,lastframe:89,frames:Uv,endfunc:ir};var Bv=Array.from({length:10},(e,t)=>({ai:wc,dist:0,think:t>=2&&t<=8?Cv:null}));zv={firstframe:90,lastframe:99,frames:Bv,endfunc:ir};var Gv=Array.from({length:10},(e,t)=>({ai:wc,dist:0,think:t===5?Pv:null}));Lv={firstframe:100,lastframe:109,frames:Gv,endfunc:ir};var Hv=Array.from({length:8},()=>({ai:xc,dist:0}));Nv={firstframe:110,lastframe:117,frames:Hv,endfunc:ir};var Vv=Array.from({length:15},()=>({ai:xc,dist:0}));function Wv(e){e.monsterinfo.nextframe=kc.lastframe,e.nextthink=-1}kc={firstframe:118,lastframe:132,frames:Vv,endfunc:Wv};var ar=.1;function Kv(e,t,n){te(e,ar,n)}function Xv(e,t,n){ue(e,t,ar,n)}function $v(e,t,n){oe(e,t,ar,n)}function Yv(e,t,n){ne(e,t,ar,n)}function Tc(e,t,n){ae(e,t)}var da,Mc,bc,jv,qv,Rc;function Zv(e){e.monsterinfo.current_move=da}function Jv(e){e.monsterinfo.current_move=Mc}function ma(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=bc:e.monsterinfo.current_move=da}function Qv(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=I(N(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function ey(e){e.monsterinfo.nextframe=Rc.lastframe,e.nextthink=-1}var ty=Array.from({length:46},()=>({ai:Kv,dist:0}));da={firstframe:0,lastframe:45,frames:ty,endfunc:Zv};var ny=Array.from({length:46},()=>({ai:Xv,dist:5}));Mc={firstframe:0,lastframe:45,frames:ny,endfunc:Jv};var ry=Array.from({length:46},()=>({ai:$v,dist:10}));bc={firstframe:0,lastframe:45,frames:ry,endfunc:ma};var iy=Array.from({length:20},(e,t)=>({ai:Yv,dist:0,think:t===10?Qv:null}));jv={firstframe:46,lastframe:65,frames:iy,endfunc:ma};var ay=Array.from({length:6},()=>({ai:Tc,dist:0}));qv={firstframe:66,lastframe:71,frames:ay,endfunc:ma};var sy=Array.from({length:10},()=>({ai:Tc,dist:0}));Rc={firstframe:84,lastframe:93,frames:sy,endfunc:ey};var sr=.1;function oy(e,t,n){te(e,sr,n)}function cy(e,t,n){ue(e,t,sr,n)}function uy(e,t,n){oe(e,t,sr,n)}function dy(e,t,n){ne(e,t,sr,n)}function zc(e,t,n){ae(e,t)}var la,Lc,Nc,my,ly,Oc;function hy(e){e.monsterinfo.current_move=la}function fy(e){e.monsterinfo.current_move=Lc}function ha(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Nc:e.monsterinfo.current_move=la}function gy(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight},r=I(N(e.enemy.origin,n));He(e,n,r,5,1e3,0,0,t,1)}function _y(e){e.monsterinfo.nextframe=Oc.lastframe,e.nextthink=-1}var py=Array.from({length:46},()=>({ai:oy,dist:0}));la={firstframe:0,lastframe:45,frames:py,endfunc:hy};var vy=Array.from({length:46},()=>({ai:cy,dist:5}));Lc={firstframe:0,lastframe:45,frames:vy,endfunc:fy};var yy=Array.from({length:46},()=>({ai:uy,dist:10}));Nc={firstframe:0,lastframe:45,frames:yy,endfunc:ha};var Sy=Array.from({length:20},(e,t)=>({ai:dy,dist:0,think:t===10?gy:null}));my={firstframe:46,lastframe:65,frames:Sy,endfunc:ha};var wy=Array.from({length:6},()=>({ai:zc,dist:0}));ly={firstframe:66,lastframe:71,frames:wy,endfunc:ha};var xy=Array.from({length:10},()=>({ai:zc,dist:0}));Oc={firstframe:84,lastframe:93,frames:xy,endfunc:_y};var or=.1;function Ay(e,t,n){te(e,or,n)}function Ey(e,t,n){ue(e,t,or,n)}function ky(e,t,n){oe(e,t,or,n)}function Ty(e,t,n){ne(e,t,or,n)}function fa(e,t,n){ae(e,t)}var ga,Ic,Cc,My,by,Pc,Ry;function zy(e){e.monsterinfo.current_move=ga}function Ly(e){e.monsterinfo.current_move=Ic}function cr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Cc:e.monsterinfo.current_move=ga}function Ny(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=I(N(r,n));nt(e,n,i,5,2,.05,.05,0,t,4)}var Oy=Array.from({length:22},()=>({ai:Ay,dist:0}));ga={firstframe:0,lastframe:21,frames:Oy,endfunc:zy};var Iy=Array.from({length:15},()=>({ai:Ey,dist:4}));Ic={firstframe:22,lastframe:36,frames:Iy,endfunc:Ly};var Cy=Array.from({length:8},()=>({ai:ky,dist:12}));Cc={firstframe:37,lastframe:44,frames:Cy,endfunc:cr};var Py=Array.from({length:15},(e,t)=>({ai:Ty,dist:0,think:t>=5&&t<=7?Ny:null}));My={firstframe:45,lastframe:59,frames:Py,endfunc:cr};var Dy=Array.from({length:10},()=>({ai:fa,dist:0}));by={firstframe:60,lastframe:69,frames:Dy,endfunc:cr};var Fy=Array.from({length:20},()=>({ai:fa,dist:0}));function Uy(e){e.monsterinfo.nextframe=Pc.lastframe,e.nextthink=-1}Pc={firstframe:70,lastframe:89,frames:Fy,endfunc:Uy};var By=Array.from({length:5},()=>({ai:fa,dist:0}));Ry={firstframe:90,lastframe:94,frames:By,endfunc:cr};var ur=.1,Gy={x:40,y:-20,z:20},Hy={x:40,y:20,z:20},Vy={x:30,y:0,z:40};function Wy(e,t,n){te(e,ur,n)}function Ky(e,t,n){ue(e,t,ur,n)}function Xy(e,t,n){oe(e,t,ur,n)}function _a(e,t,n){ne(e,t,ur,n)}function tn(e,t,n){ae(e,t)}var pa,Dc,Fc,va,Li,$y,Yy,jy,qy,Uc;function Zy(e){e.monsterinfo.current_move=pa}function Jy(e){e.monsterinfo.current_move=Dc}function bt(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Fc:e.monsterinfo.current_move=pa}function Qy(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=va:e.monsterinfo.current_move=Li}function Ni(e,t){let{forward:n,right:r,up:i}=Z(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 eS(e,t){if(!e.enemy)return;let n=Ni(e,Hy),r=I(N(e.enemy.origin,n));Gn(e,n,r,6,4,.05,.05,0,t,4);let i=Ni(e,Gy),a=I(N(e.enemy.origin,i));Gn(e,i,a,6,4,.05,.05,0,t,4)}function tS(e,t){if(!e.enemy)return;let n=Ni(e,Vy),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=I(N(r,n));Co(e,n,i,50,300,100,200,0,t)}function nS(e){e.monsterinfo.nextframe=Uc.lastframe,e.nextthink=-1}function rS(e,t){let n=t.spawn();n.classname="monster_makron",n.origin={...e.origin},n.angles={...e.angles}}var iS=Array.from({length:51},()=>({ai:Wy,dist:0}));pa={firstframe:0,lastframe:50,frames:iS,endfunc:Zy};var aS=Array.from({length:14},()=>({ai:Ky,dist:10}));Dc={firstframe:51,lastframe:64,frames:aS,endfunc:Jy};var sS=Array.from({length:14},()=>({ai:Xy,dist:10}));Fc={firstframe:51,lastframe:64,frames:sS,endfunc:bt};var oS=Array.from({length:8},()=>({ai:_a,dist:0})),cS={firstframe:65,lastframe:72,frames:oS,endfunc:null},uS=Array.from({length:6},()=>({ai:_a,dist:0,think:eS}));va={firstframe:73,lastframe:78,frames:uS,endfunc:Qy};cS.endfunc=e=>{e.monsterinfo.current_move=va};var dS=Array.from({length:4},()=>({ai:tn,dist:0}));Li={firstframe:79,lastframe:82,frames:dS,endfunc:bt};var mS=Array.from({length:13},(e,t)=>({ai:_a,dist:0,think:t===6?tS:null}));$y={firstframe:83,lastframe:95,frames:mS,endfunc:bt};var lS=Array.from({length:3},()=>({ai:tn,dist:0}));Yy={firstframe:96,lastframe:98,frames:lS,endfunc:bt};var hS=Array.from({length:3},()=>({ai:tn,dist:0}));jy={firstframe:99,lastframe:101,frames:hS,endfunc:bt};var fS=Array.from({length:25},()=>({ai:tn,dist:0}));qy={firstframe:102,lastframe:126,frames:fS,endfunc:bt};var gS=Array.from({length:50},(e,t)=>({ai:tn,dist:0,think:t===49?((n,r)=>{}):t===48?rS:null}));Uc={firstframe:127,lastframe:176,frames:gS,endfunc:nS};var dr=.1,_S={x:30,y:28,z:24},pS={x:26,y:16,z:24},vS={x:26,y:-14,z:24};function yS(e,t,n){te(e,dr,n)}function SS(e,t,n){ue(e,t,dr,n)}function wS(e,t,n){oe(e,t,dr,n)}function Bc(e,t,n){ne(e,t,dr,n)}function Rt(e,t,n){ae(e,t)}var ya,Gc,Hc,xS,Vc,AS,ES,kS,TS,Wc,MS;function bS(e){e.monsterinfo.current_move=ya}function RS(e){e.monsterinfo.current_move=Gc}function Je(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Hc:e.monsterinfo.current_move=ya}function Sa(e,t){let{forward:n,right:r,up:i}=Z(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 zS(e,t){if(!e.enemy)return;t.engine.sound?.(e,0,"makron/bfg_fire.wav",1,1,0);let n=Sa(e,_S),r={...e.enemy.origin};r.z+=e.enemy.viewheight||0;let i=I(N(r,n));Co(e,n,i,50,300,100,300,0,t)}function LS(e,t){if(!e.pos1)return;t.engine.sound?.(e,0,"makron/rail_fire.wav",1,1,0);let n=Sa(e,vS),r=I(N(e.pos1,n));Po(e,n,r,50,100,0,t)}function NS(e){e.enemy&&(e.pos1={...e.enemy.origin},e.pos1={...e.pos1,z:e.pos1.z+(e.enemy.viewheight||0)})}function OS(e,t){t.engine.sound?.(e,0,"makron/blaster.wav",1,1,0);let n=Sa(e,pS),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=N(s,n),u={...$t(o)};r<=12?u.y-=5*(r-4):u.y-=40-5*(r-12),a=Z(u).forward}else{let{forward:s}=Z(e.angles);a=s}He(e,n,a,15,1e3,0,0,t,1)}function IS(e){e.monsterinfo.nextframe=Wc.lastframe,e.nextthink=-1}var CS=Array.from({length:60},()=>({ai:yS,dist:0}));ya={firstframe:0,lastframe:59,frames:CS,endfunc:bS};var PS=Array.from({length:10},()=>({ai:SS,dist:8}));Gc={firstframe:60,lastframe:69,frames:PS,endfunc:RS};var DS=Array.from({length:10},()=>({ai:wS,dist:8}));Hc={firstframe:60,lastframe:69,frames:DS,endfunc:Je};var FS=Array.from({length:8},(e,t)=>({ai:Bc,dist:0,think:t===3?zS:null}));xS={firstframe:70,lastframe:77,frames:FS,endfunc:Je};var US=Array.from({length:26},(e,t)=>({ai:Rt,dist:0,think:t>=4&&t<=20?OS:null}));Vc={firstframe:78,lastframe:103,frames:US,endfunc:Je};var BS=Array.from({length:16},(e,t)=>({ai:Bc,dist:0,think:t===7?NS:t===8?LS:null}));AS={firstframe:104,lastframe:119,frames:BS,endfunc:Je};var GS=Array.from({length:4},()=>({ai:Rt,dist:0}));ES={firstframe:120,lastframe:123,frames:GS,endfunc:Je};var HS=Array.from({length:4},()=>({ai:Rt,dist:0}));kS={firstframe:124,lastframe:127,frames:HS,endfunc:Je};var VS=Array.from({length:27},()=>({ai:Rt,dist:0}));TS={firstframe:128,lastframe:154,frames:VS,endfunc:Je};var WS=Array.from({length:95},()=>({ai:Rt,dist:0}));Wc={firstframe:155,lastframe:249,frames:WS,endfunc:IS};var KS=Array.from({length:13},()=>({ai:Rt,dist:0}));MS={firstframe:250,lastframe:262,frames:KS,endfunc:Je};var Xt=.1;function XS(e,t,n){if(e.classname==="monster_medic"&&Yc(e,n)){e.monsterinfo.current_move=nn;return}te(e,Xt,n)}function $S(e,t,n){ue(e,t,Xt,n)}function YS(e,t,n){e.classname==="monster_medic"&&Yc(e,n)?e.monsterinfo.current_move=nn:oe(e,t,Xt,n)}function Ce(e,t,n){ne(e,t,Xt,n)}function wa(e,t,n){ae(e,t)}var xa,Kc,nn,jS,Xc,qS,ZS,$c;function JS(e){e.monsterinfo.current_move=xa}function QS(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=xa}function ew(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=I(N(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=Z(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,ge.temp_entity,{te:fe.MEDIC_CABLE_ATTACK,entId:e.index,targetId:e.enemy.index,start:c,end:u})}function tw(e,t){t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0),$e(e,t)}function nw(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 rw(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=Z(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,pe|rt|Kn);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,ge.muzzleflash,{entId:d.index,flash_number:0}),t.engine.sound?.(e,0,"medic/medatck2.wav",1,1,0)}}function iw(e){e.monsterinfo.nextframe=$c.lastframe,e.nextthink=-1}var aw=Array.from({length:30},()=>({ai:XS,dist:0}));xa={firstframe:0,lastframe:29,frames:aw,endfunc:JS};var sw=Array.from({length:40},()=>({ai:$S,dist:3}));Kc={firstframe:30,lastframe:69,frames:sw,endfunc:QS};var ow=Array.from({length:20},()=>({ai:YS,dist:12}));nn={firstframe:70,lastframe:89,frames:ow,endfunc:rn};var cw=Array.from({length:16},(e,t)=>({ai:Ce,dist:0,think:t>=4&&t<=13?ew:null}));jS={firstframe:90,lastframe:105,frames:cw,endfunc:rn};var uw=[{ai:Ce,dist:0,think:tw},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:$e},{ai:Ce,dist:0,think:nw}];Xc={firstframe:106,lastframe:114,frames:uw,endfunc:rn};var dw=Array.from({length:6},()=>({ai:wa,dist:0}));ZS={firstframe:116,lastframe:121,frames:dw,endfunc:rn};var mw=Array.from({length:23},(e,t)=>({ai:wa,dist:0,think:t===11?rw:null}));qS={firstframe:122,lastframe:144,frames:mw,endfunc:rn};var lw=Array.from({length:30},()=>({ai:wa,dist:0}));$c={firstframe:161,lastframe:190,frames:lw,endfunc:iw};var an=.1;function b(e,t,n){te(e,an,n)}function ve(e,t,n){ue(e,t,an,n)}function pt(e,t,n){oe(e,t,an,n)}function Xe(e,t,n){ne(e,t,an,n)}function X(e,t,n){ae(e,t)}function xi(e,t,n){S1(e,null,t,an)}var jc,qc,Hn,hw,fw,gw,_w,Zc,Jc;function pw(e){e.monsterinfo.current_move=qc}function vw(e){e.monsterinfo.current_move=jc}function zt(e){e.monsterinfo.current_move=Hn}function Qc(e,t,n){if(n.engine.sound?.(e,0,"mutant/mutatck1.wav",1,1,0),!e.enemy)return;let r=N(e.enemy.origin,e.origin);if(At(r)>100)return;let a=I(r);de(e.enemy,e,e,a,e.enemy.origin,H,t,0,0,0,n.timeSeconds)}function yw(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=Hn),e.groundentity&&(e.movetype=5,e.monsterinfo.current_move=Hn)}function Sw(e,t,n,r){e.health<=0||(t&&t.takedamage&&(e.velocity.z>0&&(e.velocity={...e.velocity,z:0}),de(t,e,e,I(e.velocity),e.origin,H,50,0,0,0,0)),(!t||!t.takedamage&&t.solid!==0)&&(e.touch=void 0))}function ww(e,t){let n=Z(e.angles).forward;e.movetype=7,e.touch=Sw,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 xw(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 Aw=[{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:Aw,endfunc:vw};var Ew=[{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:Ew,endfunc:pw};var kw=[{ai:pt,dist:20},{ai:pt,dist:15},{ai:pt,dist:35},{ai:pt,dist:20},{ai:pt,dist:10},{ai:pt,dist:20}];Hn={firstframe:64,lastframe:69,frames:kw,endfunc:zt};var Tw=[{ai:Xe,dist:0},{ai:Xe,dist:0},{ai:Xe,dist:0,think:ho},{ai:Xe,dist:0},{ai:Xe,dist:0,think:yw},{ai:Xe,dist:0},{ai:Xe,dist:0,think:ho},{ai:Xe,dist:0}];hw={firstframe:70,lastframe:77,frames:Tw,endfunc:zt};var Mw=[{ai:xi,dist:0},{ai:xi,dist:0},{ai:xi,dist:0,think:ww},{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:Mw,endfunc:zt};Jc.frames[3].ai=(e,t,n)=>{St(e,n),!e.groundentity&&e.frame===99&&(e.groundentity||(e.monsterinfo.nextframe=96))};var bw=[{ai:X,dist:4},{ai:X,dist:-3},{ai:X,dist:-8},{ai:X,dist:2},{ai:X,dist:5}];fw={firstframe:78,lastframe:82,frames:bw,endfunc:zt};var Rw=[{ai:X,dist:-24},{ai:X,dist:11},{ai:X,dist:5},{ai:X,dist:-2}];gw={firstframe:83,lastframe:86,frames:Rw,endfunc:zt};var zw=[{ai:X,dist:11},{ai:X,dist:0},{ai:X,dist:-2},{ai:X,dist:0},{ai:X,dist:0},{ai:X,dist:0}];_w={firstframe:87,lastframe:92,frames:zw,endfunc:zt};var Lw=[{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:Lw,endfunc:xw};var mr=.1,Nw=()=>Math.random();function G(e,t,n){te(e,mr,n)}function Ue(e,t,n){ue(e,t,mr,n)}function Be(e,t,n){oe(e,t,mr,n)}function me(e,t,n){ne(e,t,mr,n)}function le(e,t,n){ae(e,t)}var Aa,eu,tu,Ow,Iw,nu,ru,Cw,Pw,Ea,iu;function Dw(e,t){t.engine.sound?.(e,0,"parasite/paratck1.wav",1,1,0)}function Fw(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 Oi(e,t){t.engine.sound?.(e,0,"parasite/paridle2.wav",1,2,0)}function Uw(e){e.monsterinfo.current_move=Ea}function Bw(e){Nw()<=.8?e.monsterinfo.current_move=Ea:e.monsterinfo.current_move=iu}function au(e){e.monsterinfo.current_move=Aa}function ka(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=Aa:e.monsterinfo.current_move=tu}function Ai(e,t){let n=N(t,e);if(At(n)>256)return!1;let a=$t(n).x;return a<-180&&(a+=360),!(Math.abs(a)>30)}function be(e,t){if(!e.enemy)return;let n=Z(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=Qh(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,H,H,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,ge.temp_entity,{te:fe.PARASITE_ATTACK,entId:e.index,start:o,end:c});let l=I(N(o,c));de(e.enemy,e,e,l,e.enemy.origin,H,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 Gw(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 Hw=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:vt},{ai:G,dist:0},{ai:G,dist:0,think:vt}];Aa={firstframe:83,lastframe:99,frames:Hw,endfunc:au};var Vw=[{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0}];Pw={firstframe:100,lastframe:103,frames:Vw,endfunc:Uw};var Ww=[{ai:G,dist:0,think:Oi},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0,think:Oi},{ai:G,dist:0},{ai:G,dist:0}];Ea={firstframe:104,lastframe:109,frames:Ww,endfunc:Bw};var Kw=[{ai:G,dist:0,think:Oi},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0},{ai:G,dist:0}];iu={firstframe:110,lastframe:117,frames:Kw,endfunc:au};var Xw=[{ai:Be,dist:0},{ai:Be,dist:30}];ru={firstframe:68,lastframe:69,frames:Xw,endfunc:ou};var $w=[{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:$w,endfunc:ou};var Yw=[{ai:Ue,dist:0},{ai:Ue,dist:30,think:ka}];Cw={firstframe:68,lastframe:69,frames:Yw,endfunc:ka};var jw=[{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:jw,endfunc:ka};var qw=[{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:6},{ai:le,dist:16},{ai:le,dist:-6},{ai:le,dist:-7},{ai:le,dist:0}];Iw={firstframe:57,lastframe:67,frames:qw,endfunc:su};var Zw=[{ai:me,dist:0,think:Dw},{ai:me,dist:0},{ai:me,dist:15,think:be},{ai:me,dist:0,think:be},{ai:me,dist:0,think:be},{ai:me,dist:0,think:be},{ai:me,dist:0,think:be},{ai:me,dist:-2,think:be},{ai:me,dist:-2,think:be},{ai:me,dist:-3,think:be},{ai:me,dist:-2,think:be},{ai:me,dist:0,think:be},{ai:me,dist:-1,think:be},{ai:me,dist:0,think:Fw},{ai:me,dist:-2},{ai:me,dist:-2},{ai:me,dist:-3},{ai:me,dist:0}];Ow={firstframe:39,lastframe:56,frames:Zw,endfunc:su};var Jw=[{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0},{ai:le,dist:0}];nu={firstframe:32,lastframe:38,frames:Jw,endfunc:Gw};var lr=.1;var Qw=2,ex=4;function tx(e,t,n){te(e,lr,n)}function nx(e,t,n){ue(e,t,lr,n)}function rx(e,t,n){oe(e,t,lr,n)}function cu(e,t,n){ne(e,t,lr,n)}function uu(e,t,n){ae(e,t)}var Ta,du,mu,ix,ax,sx,lu;function ox(e){e.monsterinfo.current_move=Ta}function cx(e){e.monsterinfo.current_move=du}function hr(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=mu:e.monsterinfo.current_move=Ta}function sn(e){return{x:e.origin.x,y:e.origin.y,z:e.origin.z+e.viewheight}}function on(e,t){if(!e.enemy){let{forward:r}=Z(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 I(N(n,t))}function ux(e,t){if(!e.enemy)return;let n=sn(e),r=on(e,n);He(e,n,r,5,600,0,0,t,1)}function dx(e,t){if(!e.enemy)return;let n=sn(e),r=on(e,n),i=2,a=4,s=20,o=.15,c=.15;t.engine.sound?.(e,0,"soldier/solatck2.wav",1,1,0),mg(e,n,r,i,a,o,c,s,0,t,3)}function mx(e,t){if(!e.enemy)return;let n=sn(e),r=on(e,n),i=4,a=4,s=.05,o=.05;t.engine.sound?.(e,0,"soldier/solatck3.wav",1,1,0),nt(e,n,r,i,a,s,o,0,t,4)}function lx(e,t){let n=e.owner;if(!n||!n.enemy)return;let{forward:r,right:i,up:a}=Z(n.angles),s={...n.origin};s=F(s,U(r,16)),s.z+=n.viewheight;let o={...n.enemy.origin};o.z+=n.enemy.viewheight||0;let c=I(N(o,s));e.origin=s,e.movedir=c,t.linkentity(e)}function hx(e,t){if(!e.enemy)return;let n=sn(e),r=on(e,n);hg(e,n,r,5,600,0,0,t)}function fx(e,t){if(!e.enemy)return;let n=sn(e),r=on(e,n),i=1,a=600;t.engine.sound?.(e,0,"weapons/hyprbl1a.wav",1,1,0),lg(e,n,r,i,a,0,0,t)}function gx(e,t){e.enemy&&bi(e,1,!1,lx,t)}function _x(e,t){e.count<2?hx(e,t):e.count<4?fx(e,t):gx(e,t)}function hu(e,t){if(e.style===1){_x(e,t);return}e.spawnflags&Qw?dx(e,t):e.spawnflags&ex?mx(e,t):ux(e,t)}var px=Array.from({length:30},()=>({ai:tx,dist:0}));Ta={firstframe:0,lastframe:29,frames:px,endfunc:ox};var vx=Array.from({length:40},()=>({ai:nx,dist:2}));du={firstframe:30,lastframe:69,frames:vx,endfunc:cx};var yx=Array.from({length:20},()=>({ai:rx,dist:10}));mu={firstframe:70,lastframe:89,frames:yx,endfunc:hr};var Sx=Array.from({length:10},(e,t)=>({ai:cu,dist:0,think:t===5?hu:null}));ix={firstframe:90,lastframe:99,frames:Sx,endfunc:hr};var wx=Array.from({length:10},(e,t)=>({ai:cu,dist:0,think:t>=4&&t<=8?hu:null}));ax={firstframe:90,lastframe:99,frames:wx,endfunc:hr};var xx=Array.from({length:6},()=>({ai:uu,dist:0}));sx={firstframe:100,lastframe:105,frames:xx,endfunc:hr};var Ax=Array.from({length:10},()=>({ai:uu,dist:0}));function Ex(e){e.monsterinfo.nextframe=lu.lastframe,e.nextthink=-1}lu={firstframe:106,lastframe:115,frames:Ax,endfunc:Ex};var fu=.1,kx={x:30,y:30,z:40},Tx={x:30,y:-30,z:40},Mx={x:20,y:0,z:70};function bx(e,t,n){te(e,fu,n)}function Rx(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ba:e.monsterinfo.current_move=fr}function Ma(e,t,n){ne(e,t,fu,n)}function cn(e,t,n){ae(e,t)}var fr,ba,zx,Lx,gu,_u,Nx,Ox,Ix,pu;function Cx(e){e.monsterinfo.current_move=fr}function at(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=ba:e.monsterinfo.current_move=fr}function Ra(e,t){let{forward:n,right:r,up:i}=Z(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 Px(e,t){if(!e.enemy)return;let n=Ra(e,Tx),r=I(N(e.enemy.origin,n));Jt(e,n,r,50,650,0,t)}function Dx(e,t){if(!e.enemy)return;let n=Ra(e,Mx),r=I(N(e.enemy.origin,n));fg(e,n,r,50,600,0,t)}function Fx(e,t){if(!e.enemy)return;let n=Ra(e,kx),r=I(N(e.enemy.origin,n));Gn(e,n,r,6,4,.05,.05,0,t,4)}function Ux(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=gu:e.monsterinfo.current_move=_u}function Bx(e){e.monsterinfo.nextframe=pu.lastframe,e.nextthink=-1}var Gx=Array.from({length:60},()=>({ai:bx,dist:0}));fr={firstframe:0,lastframe:59,frames:Gx,endfunc:Cx};var Hx=Array.from({length:18},()=>({ai:Rx,dist:12}));ba={firstframe:60,lastframe:77,frames:Hx,endfunc:at};var Vx=Array.from({length:4},()=>({ai:cn,dist:0}));Ix={firstframe:78,lastframe:81,frames:Vx,endfunc:at};var Wx=Array.from({length:4},()=>({ai:cn,dist:0}));Ox={firstframe:82,lastframe:85,frames:Wx,endfunc:at};var Kx=Array.from({length:4},()=>({ai:cn,dist:0}));Nx={firstframe:86,lastframe:89,frames:Kx,endfunc:at};var Xx=Array.from({length:24},()=>({ai:cn,dist:0}));pu={firstframe:90,lastframe:113,frames:Xx,endfunc:Bx};var $x=Array.from({length:6},(e,t)=>({ai:Ma,dist:0,think:t===0||t===3?Dx:null}));Lx={firstframe:114,lastframe:119,frames:$x,endfunc:at};var Yx=Array.from({length:27},(e,t)=>({ai:Ma,dist:0,think:t===7||t===10||t===13?Px:null}));zx={firstframe:120,lastframe:146,frames:Yx,endfunc:at};var jx=Array.from({length:6},()=>({ai:Ma,dist:0,think:Fx}));gu={firstframe:147,lastframe:152,frames:jx,endfunc:Ux};var qx=Array.from({length:14},()=>({ai:cn,dist:0}));_u={firstframe:153,lastframe:166,frames:qx,endfunc:at};var za=.1;function Zx(e,t,n){te(e,za,n)}function Jx(e,t,n){ue(e,t,za,n)}function Qx(e,t,n){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Na:e.monsterinfo.current_move=gr}function La(e,t,n){ne(e,t,za,n)}function vu(e,t,n){ae(e,t)}var gr,yu,Na,eA,tA,nA,rA,Su;function iA(e){e.monsterinfo.current_move=gr}function aA(e){e.monsterinfo.current_move=yu}function un(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=Na:e.monsterinfo.current_move=gr}function sA(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=I(N(e.enemy.origin,n));He(e,n,r,30,1e3,0,0,t,1)}function oA(e,t){if(!e.enemy)return;let n={x:e.origin.x,y:e.origin.y,z:e.origin.z+(e.viewheight||0)},r=I(N(e.enemy.origin,n));nt(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=I(N(e.enemy.origin,n));Jt(e,n,r,50,650,0,t)}function cA(e){e.monsterinfo.nextframe=Su.lastframe,e.nextthink=-1}var uA=Array.from({length:30},()=>({ai:Zx,dist:0}));gr={firstframe:0,lastframe:29,frames:uA,endfunc:iA};var dA=Array.from({length:16},()=>({ai:Jx,dist:5}));yu={firstframe:30,lastframe:45,frames:dA,endfunc:aA};var mA=Array.from({length:16},()=>({ai:Qx,dist:10}));Na={firstframe:46,lastframe:61,frames:mA,endfunc:un};var lA=Array.from({length:16},(e,t)=>({ai:La,dist:0,think:t>5&&t<12?sA:null}));eA={firstframe:62,lastframe:77,frames:lA,endfunc:un};var hA=Array.from({length:20},(e,t)=>({ai:La,dist:0,think:t%2===0&&t>5?oA:null}));tA={firstframe:78,lastframe:97,frames:hA,endfunc:un};var fA=Array.from({length:18},(e,t)=>({ai:La,dist:0,think:t===8||t===12||t===16?Ei:null}));nA={firstframe:98,lastframe:115,frames:fA,endfunc:un};var gA=Array.from({length:6},()=>({ai:vu,dist:0}));rA={firstframe:116,lastframe:121,frames:gA,endfunc:un};var _A=Array.from({length:16},()=>({ai:vu,dist:0}));Su={firstframe:122,lastframe:137,frames:_A,endfunc:cA};var Oa=.1;function pA(e,t,n){te(e,Oa,n)}function Ia(e,t,n){oe(e,t,Oa,n)}function vA(e,t,n){ne(e,t,Oa,n)}var Ca,wu,yA,SA,xu;function wA(e){e.monsterinfo.current_move=Ca}function Pa(e){e.enemy&&e.enemy.health>0?e.monsterinfo.current_move=wu:e.monsterinfo.current_move=Ca}function xA(e,t){if(!e.enemy)return;let n=Z(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=I(N(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 AA=Array.from({length:1},()=>({ai:pA,dist:0}));Ca={firstframe:0,lastframe:0,frames:AA,endfunc:wA};var EA=Array.from({length:1},()=>({ai:Ia,dist:0}));wu={firstframe:0,lastframe:0,frames:EA,endfunc:Pa};var kA=Array.from({length:8},(e,t)=>({ai:vA,dist:0,think:t===4?xA:void 0}));yA={firstframe:1,lastframe:8,frames:kA,endfunc:Pa};var TA=Array.from({length:2},()=>({ai:Ia,dist:0}));SA={firstframe:9,lastframe:10,frames:TA,endfunc:Pa};var MA=Array.from({length:4},()=>({ai:Ia,dist:0}));function bA(e){e.monsterinfo.nextframe=xu.lastframe,e.nextthink=-1,e.deadflag=2,e.solid=0}xu={firstframe:11,lastframe:14,frames:MA,endfunc:bA};var gk=new Map(Gi.map(e=>[e.name,e]));var RA=2166136261,zA=16777619;function Au(e,t){let n=e>>>0;for(let r=0;r<t.length;r+=1)n^=t[r]&255,n=Math.imul(n,zA)>>>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 Au(e,i)}function Ii(e,t){let n=new Uint8Array(t.length);for(let r=0;r<t.length;r+=1)n[r]=t.charCodeAt(r)&255;return Au(e,n)}var ki=2,LA=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 Cn(e,t,n){return e===void 0?n:J(e,t)}function Vn(e,t){if(typeof e!="string")throw new Error(`${t} must be a string`);return e}function Dn(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 NA(e){if(e===void 0)return{frameNumber:0,timeSeconds:0,previousTimeSeconds:0,deltaSeconds:0};let t=Se(e,"level");return{frameNumber:Cn(t.frameNumber,"level.frameNumber",0),timeSeconds:Cn(t.timeSeconds,"level.timeSeconds",0),previousTimeSeconds:Cn(t.previousTimeSeconds,"level.previousTimeSeconds",0),deltaSeconds:Cn(t.deltaSeconds,"level.deltaSeconds",0)}}function OA(e){if(e===void 0)return new vo().getState();let t=Se(e,"rng"),n=Se(t.mt,"rng.mt"),r=Dn(n.state,"rng.mt.state");return{mt:{index:J(n.index,"rng.mt.index"),state:r}}}function IA(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 CA(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 PA(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 DA(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:PA(r.fields)}})}function FA(e){let t=Se(e,"pool");return{capacity:J(t.capacity,"pool.capacity"),activeOrder:Dn(t.activeOrder,"pool.activeOrder"),freeList:Dn(t.freeList,"pool.freeList"),pendingFree:Dn(t.pendingFree,"pool.pendingFree")}}function UA(e){let t=Se(e,"entities");return{timeSeconds:J(t.timeSeconds,"entities.timeSeconds"),pool:FA(t.pool),entities:DA(t.entities),thinks:IA(t.thinks),awareness:CA(t.awareness)}}function BA(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:Vn(r.name,`cvars[${n}].name`),value:Vn(r.value,`cvars[${n}].value`),flags:J(r.flags,`cvars[${n}].flags`)}})}function GA(e){if(e===void 0)return[];if(!Array.isArray(e))throw new Error("configstrings must be an array");return e.map((t,n)=>Vn(t,`configstrings[${n}]`))}function HA(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 Ii(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=Ii(n,i),n=Ge(n,t[i]);return n}return e}function VA(e){let t=RA;return t=wt(t,e.version),t=wt(t,e.timestamp),t=Ii(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 Eu(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<LA)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:Vn(i.map,"map"),difficulty:J(i.difficulty,"difficulty"),playtimeSeconds:J(i.playtimeSeconds,"playtimeSeconds"),gameState:HA(i.gameState),level:NA(i.level),rng:OA(i.rng),entities:UA(i.entities),cvars:BA(i.cvars),configstrings:GA(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=VA(o);if(c!==o.checksum)throw new Error(`Save file checksum mismatch: expected ${o.checksum}, calculated ${c}`)}return o}var _k=new Set(Gi.filter(e=>e.save).map(e=>e.name));var fo=globalThis.TextEncoder;function xt(e){return Eu({...e},{allowNewerVersion:!0})}function WA(e){return fo?new fo().encode(JSON.stringify(e)).length:JSON.stringify(e).length}var KA=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)}))}},XA=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 XA(i,n,r):this.adapter=new KA}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:WA(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 Eu(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 pk=Fi();var vk=[C.Blaster,C.Shotgun,C.SuperShotgun,C.Machinegun,C.Chaingun,C.GrenadeLauncher,C.RocketLauncher,C.HyperBlaster,C.Railgun,C.BFG10K],yk=[{id:$.QuadDamage,priority:1},{id:$.Invulnerability,priority:2},{id:$.EnviroSuit,priority:3},{id:$.Rebreather,priority:4},{id:$.Silencer,priority:5}];var $A=new Map,YA=["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"],ku=async(e,t)=>{for(let n of YA)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);$A.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var jA=new Map,qA=["d_left","d_right","d_up","d_down"],Tu=async(e,t)=>{for(let n of qA)try{let r=await t.loadTexture(`pics/${n}.pcx`),i=e.registerTexture(n,r);jA.set(n,i)}catch{console.error(`Failed to load HUD image: pics/${n}.pcx`)}};var Fa=[],ZA=0,Mu=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&&(ZA=Fa[0].width),await no(e,t),await ku(e,t),await Tu(e,t)};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:K.Grenades},{type:"ammo",id:K.Trap},{type:"ammo",id:K.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:K.Shells},{type:"ammo",id:K.Bullets},{type:"ammo",id:K.Cells},{type:"ammo",id:K.Rockets},{type:"ammo",id:K.Slugs},{type:"ammo",id:K.MagSlugs},{type:"ammo",id:K.Flechettes},{type:"ammo",id:K.Prox},{type:"ammo",id:K.Nuke},{type:"ammo",id:K.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:ce.DataCD},{type:"key",id:ce.PowerCube},{type:"key",id:ce.ExplosiveCharges},{type:"key",id:ce.Yellow},{type:"key",id:ce.PowerCore},{type:"key",id:ce.Pyramid},{type:"key",id:ce.DataSpinner},{type:"key",id:ce.Pass},{type:"key",id:ce.Blue},{type:"key",id:ce.Red},{type:"key",id:ce.Green},{type:"key",id:ce.CommanderHead},{type:"key",id:ce.Airstrike},{type:"key",id:ce.NukeContainer},{type:"key",id:ce.Nuke},{type:"health",id:"health_small"},{type:"health",id:"health_medium"},{type:"health",id:"health_large"},{type:"health",id:"health_mega"},{type:"key",id:ce.RedFlag},{type:"key",id:ce.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 JA=2048,_r=class{constructor(t,n){this.configstrings=new Array(JA).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&vn||r&wn)&&(t.skinnum=n.skinnum),(r&pn||r&Sn)&&(t.effects=n.effects),(r&_n||r&yn)&&(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:et.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 tt();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>=ee.Models&&t<ee.Models+Pt){let r=t-ee.Models;this.models[r]=n}else if(t>=ee.Sounds&&t<ee.Sounds+Dt){let r=t-ee.Sounds;this.sounds[r]=n}else if(t>=ee.Images&&t<ee.Images+Ft){let r=t-ee.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} (${bu(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} (${bu(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 bu(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 dn=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 Ru(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 g=Date.now();Math.floor(g/500)%2===0&&(h+="_")}}else d.type==="toggle"&&d.getValue&&(h+=`: ${d.getValue()}`);if(m===t.selectedIndex){let p=h.replace(/\^[0-9]/g,"").length*8,y=(n-p)/2;e.drawString(y-16,l,"\r")}e.drawCenterString(l,h)})}var mn=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 QA=[{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"}],st=class{constructor(t=QA){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 zu(){return new st}function Ba(e){return e}function ln(e){return e.trim().toLowerCase()}var eE=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=(p=>(p.Forward="+forward",p.Back="+back",p.MoveLeft="+moveleft",p.MoveRight="+moveright",p.MoveUp="+moveup",p.MoveDown="+movedown",p.Jump="+jump",p.Crouch="+crouch",p.Attack="+attack",p.Use="+use",p.Holster="+holster",p.TurnLeft="+left",p.TurnRight="+right",p.LookUp="+lookup",p.LookDown="+lookdown",p.SpeedModifier="+speed",p.Zoom="+zoom",p))(Tr||{}),tE={"+attack":Ne.Attack,"+use":Ne.Use,"+holster":Ne.Holster,"+jump":Ne.Jump,"+crouch":Ne.Crouch},nE=new Map(Object.values(Tr).map(e=>[ln(e),e]));function rE(e){return nE.get(ln(e))}function hn(){return typeof performance<"u"&&typeof performance.now=="function"?performance.now():Date.now()}var Nt=class{constructor(t={},n=new st){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=hn()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!0,r,n)}handleKeyUp(t,n=hn()){let r=t,i=this.bindings.getBinding(r);i&&this.applyCommand(i,!1,r,n)}handleMouseButtonDown(t,n=hn()){let r=this.mouseButtonToCode(t);this.applyCommand(this.mouseButtonToCommand(r),!0,r,n)}handleMouseButtonUp(t,n=hn()){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=hn(),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 B=this.gamepadLook.y*(this.invertGamepadY?-1:1);d={x:d.x+B*a*this.gamepadLookScale,y:d.y+this.gamepadLook.x*i*this.gamepadLookScale,z:0}}if(this.touchLook.x!==0||this.touchLook.y!==0){let B=this.touchLook.y*(this.invertMouseY?-1:1);d={x:d.x+B*a,y:d.y+this.touchLook.x*i,z:0}}if(this.pointerLocked||!this.requirePointerLock){let B=this.sampleMouseDelta(),V=Is(B,{sensitivity:this.sensitivity,sensitivityX:this.sensitivityX,sensitivityY:this.sensitivityY,invertY:this.invertMouseY});d={x:d.x+V.x,y:d.y+V.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),g=this.sample("+moveleft",t,n),v=this.sample("+moveright",t,n),f=this.sample("+moveup",t,n),p=this.sample("+movedown",t,n),y=this.sample("+speed",t,n),E=this.sample("+jump",t,n),S=this.sample("+crouch",t,n),A=this.runByDefault?y.active?.5:1:y.active?1:.5,x=this.forwardSpeed*(l.fraction-h.fraction)*A,P=this.sideSpeed*(v.fraction-g.fraction)*A,_=this.upSpeed*(f.fraction-p.fraction);(this.gamepadMove.x!==0||this.gamepadMove.y!==0)&&(x+=this.forwardSpeed*this.gamepadMove.y*A,P+=this.sideSpeed*this.gamepadMove.x*A),(this.touchMove.x!==0||this.touchMove.y!==0)&&(x+=this.forwardSpeed*this.touchMove.y*A,P+=this.sideSpeed*this.touchMove.x*A),this.jumpAddsUpMove&&E.fraction>0&&(_+=this.upSpeed*E.fraction),this.crouchAddsDownMove&&S.fraction>0&&(_-=this.upSpeed*S.fraction),x=this.clampMove(x,this.forwardSpeed),P=this.clampMove(P,this.sideSpeed),_=this.clampMove(_,this.upSpeed);let k=this.collectButtonBits(t,n),w=Math.min(Math.max(Math.round(t),1),eE);return(this.anyPressed||k!==Ne.None)&&(k|=Ne.Any),this.anyPressed=!1,{msec:w,buttons:k,angles:{...this.viewAngles},forwardmove:x,sidemove:P,upmove:_,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=rE(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=Ne.None;for(let[i,a]of Object.entries(tE)){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 iE(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)},g=c.frame,v=u.frame,f=j.create();j.translate(f,f,[l.x,l.y,l.z]),j.rotateZ(f,f,h.z*Math.PI/180),j.rotateY(f,f,h.y*Math.PI/180),j.rotateX(f,f,h.x*Math.PI/180),m.header.magic===844121161?a.push({type:"md2",model:m,blend:{frame0:v,frame1:g,lerp:n},transform:f,skin:c.skinNum>0?r.getImageName(c.skinNum):void 0}):m.header.magic===860898377&&a.push({type:"md3",model:m,blend:{frame0:v,frame1:g,lerp:n},transform:f})}return a}function aE(e){let t=new In(e.engine.trace),n=new On,r=new gs,i=new _r(e),a=new yr,s=new Ar,o=new Er,c=new kr,u=new mn(new xr),d,m,l=new Lt,h,g=!1,f=to(e,{get tickRate(){return 10},get frameTimeMs(){return h?.timeMs??0},get serverFrame(){return i.latestServerFrame},get serverProtocol(){return 34},get configStrings(){return l},getClientName:_=>`Player ${_}`,getKeyBinding:_=>`[${_}]`,get inAutoDemo(){return g}}),p=eo(f);i.setCallbacks({onCenterPrint:_=>p.ParseCenterPrint(_,0,!1),onPrint:(_,k)=>p.NotifyMessage(0,k,!1),onConfigString:(_,k)=>{l.set(_,k),p.ParseConfigString(_,k)}}),r.setHandler(i);let y,E,S,A=90,x=!1;if(e.host){m=new dn(a,e.host),d=new wr(a,m,e.host);let _=new Map;if(e.host.cvars){for(let k of e.host.cvars.list())_.set(k.name,{value:k.string,setValue:w=>e.host.cvars.setValue(k.name,w)});u.loadCvars(_)}}if(e.host?.commands&&(e.host.commands.register("playdemo",_=>{if(_.length<1){console.log("usage: playdemo <filename>");return}let k=_[0];console.log(`playdemo: ${k}`),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 _=ro();console.log(`Crosshair changed to index ${_}`)},"Cycle through available crosshairs"),e.host.commands.register("+zoom",()=>{x=!0},"Zoom in view"),e.host.commands.register("-zoom",()=>{x=!1},"Reset zoom"),e.host.commands.register("togglemenu",()=>{a.isActive()?a.closeAll():d&&a.pushMenu(d.createPauseMenu())},"Toggle the main/pause menu"),e.host.cvars)){e.host.cvars.register({name:"fov",defaultValue:"90",flags:Ct.Archive,onChange:k=>{let w=k.number;isNaN(w)||(A=Math.max(1,Math.min(179,w)))},description:"Field of view"});let _=e.host.cvars.get("fov");if(_){let k=_.number;isNaN(k)||(A=Math.max(1,Math.min(179,k)))}}return{loadingScreen:s,errorDialog:o,init(_){this.Init(_)},Init(_){h=_,_?.state&&t.setAuthoritative(_),p.Init(),e.engine.assets&&e.engine.renderer&&(s.start(100,"Loading assets..."),Mu(e.engine.renderer,e.engine.assets).then(()=>{s.finish()})),e.engine.trace({x:0,y:0,z:0},{x:1,y:0,z:0}),typeof document<"u"&&document.addEventListener("fullscreenchange",()=>{document.fullscreenElement&&(a.isActive()||document.body.requestPointerLock?.())})},predict(_){return a.isActive(),t.enqueueCommand(_)},handleInput(_,k){if(!a.isActive())return!1;if(!k)return!0;let w=_.toLowerCase();return w==="arrowup"||w==="w"?a.handleInput("up"):w==="arrowdown"||w==="s"?a.handleInput("down"):w==="arrowleft"||w==="a"?a.handleInput("left"):w==="arrowright"||w==="d"?a.handleInput("right"):w==="enter"||w===" "?a.handleInput("select"):w==="escape"?a.getState().activeMenu?.parent?a.handleInput("back"):!1:_.length===1?a.handleInput("char",_):_==="Backspace"?a.handleInput("left"):!0},toggleMenu(){if(a.isActive()){if(a.closeAll(),e.host?.cvars){let _=e.host.cvars.list().map(k=>({name:k.name,value:k.string,flags:k.flags}));u.saveCvars(_)}}else d&&a.pushMenu(d.createPauseMenu())},createMainMenu(_,k,w,B,V){let D=new vr(a,k,w,B,V),O=m;if(!O){if(!e.host)throw new Error("Cannot create Main Menu: EngineHost is missing");O=new dn(a,e.host)}let re=e.engine.assets,xe={findByExtension:Pe=>re?re.listFiles(Pe):[]},Qe=new Sr(a,xe,Pe=>{console.log(`Starting map: ${Pe}`),e.host?.commands.execute(`map ${Pe}`)}),fn=new pr(a,D,{..._,optionsFactory:O,mapsFactory:Qe,onSetDifficulty:Pe=>{e.host?.cvars&&e.host.cvars.setValue("skill",Pe.toString())}});return{menuSystem:a,factory:fn}},render(_){let k=r.getState(),w=[];k===ei.Playing?y=i.getPredictionState():(_.latest?.state&&(t.setAuthoritative(_.latest),h=_.latest),_.previous?.state&&_.latest?.state?(y=ht(_.previous.state,_.latest.state,_.alpha),_.latest.state.packetEntities&&_.previous.state.packetEntities&&(w=iE(_.latest.state.packetEntities,_.previous.state.packetEntities,_.alpha,l,e))):y=_.latest?.state??_.previous?.state??t.getPredictedState());let B=_.latest&&_.previous?Math.max(0,_.latest.timeMs-_.previous.timeMs):0;E=n.sample(y,B);let V={};if(y){let{origin:D,viewAngles:O}=y;S=new hs,S.position=q.fromValues(D.x,D.y,D.z);let re=E?.offset??{x:0,y:0,z:0};q.add(S.position,S.position,[re.x,re.y,re.z]);let xe=E?.angles??{x:0,y:0,z:0};S.angles=q.fromValues(O.x+xe.x,O.y+xe.y,O.z+xe.z),S.fov=x?40:A,S.aspect=4/3,e.engine.renderer&&(S.aspect=e.engine.renderer.width/e.engine.renderer.height)}if(e.engine.renderer&&S){let D;if(e.engine.assets){let O=l.getModelName(1);if(O){let re=e.engine.assets.getMap(O)}}e.engine.renderer.renderFrame({camera:S,world:D,dlights:[]},w)}if(e.engine.renderer&&y&&y.client){let D=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},O=_.latest?.timeMs??0;this.DrawHUD(D,O)}return V},DrawHUD(_,k){if(!e.engine.renderer)return;let w=e.engine.renderer,B=w.width,V=w.height;if(y&&y.client){let D={origin:y.origin,velocity:y.velocity,viewAngles:y.viewAngles,onGround:De(y.pmFlags,Ae.OnGround),waterLevel:y.waterLevel,mins:{x:-16,y:-16,z:-24},maxs:{x:16,y:16,z:32},damageAlpha:y.damageAlpha??0,damageIndicators:y.damageIndicators??[],blend:y.blend??[0,0,0,0],pickupIcon:y.pickupIcon,centerPrint:void 0,notify:void 0,stats:y.stats?[...y.stats]:new Array(32).fill(0),kick_angles:Ha,gunoffset:Ha,gunangles:Ha,gunindex:0};D.stats[Ee.STAT_HEALTH]=y.health??0,D.stats[Ee.STAT_AMMO]=y.ammo??0,D.stats[Ee.STAT_ARMOR]=y.armor??0,w.begin2D(),p.DrawHUD(0,null,{x:0,y:0,width:B,height:V},{x:0,y:0,width:B,height:V},1,0,D),w.end2D()}a.isActive()&&Ru(e.engine.renderer,a.getState(),e.engine.renderer.width,e.engine.renderer.height),y&&y.client&&c.render(e.engine.renderer,e.engine.renderer.width,e.engine.renderer.height,y.client),o.render(e.engine.renderer),s.render(e.engine.renderer)},shutdown(){this.Shutdown()},Shutdown(){if(p.Shutdown(),h=void 0,y=void 0,e.host?.cvars){let _=e.host.cvars.list().map(k=>({name:k.name,value:k.string,flags:k.flags}));u.saveCvars(_)}},get prediction(){return t},get lastRendered(){return y},get view(){return n},get lastView(){return E},get camera(){return S},demoPlayback:r,ParseCenterPrint(_){p.ParseCenterPrint(_,0,!1)},ParseNotify(_){p.NotifyMessage(0,_,!1)},showSubtitle(_,k){p.ShowSubtitle(_,k)},ParseConfigString(_,k){l.set(_,k),p.ParseConfigString(_,k)},demoHandler:i,configStrings:l}}return Cu(sE);})();
|
|
150
150
|
//# sourceMappingURL=index.global.js.map
|