quake2ts 0.0.292 → 0.0.293
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/game/dist/browser/index.global.js +4 -4
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +113 -28
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +113 -28
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/entities/gibs.d.ts +2 -0
- package/packages/game/dist/types/entities/gibs.d.ts.map +1 -1
|
@@ -7643,40 +7643,80 @@ init_esm();
|
|
|
7643
7643
|
// src/entities/gibs.ts
|
|
7644
7644
|
init_esm();
|
|
7645
7645
|
var random3 = createRandomGenerator();
|
|
7646
|
+
var GIB_ORGANIC = 0;
|
|
7646
7647
|
var GIB_METALLIC = 1;
|
|
7647
7648
|
var GIB_DEBRIS = 2;
|
|
7648
|
-
function
|
|
7649
|
+
function velocityForDamage(damage) {
|
|
7650
|
+
let x = 100 * random3.crandom();
|
|
7651
|
+
let y = 100 * random3.crandom();
|
|
7652
|
+
let z = 200 + 100 * random3.frandom();
|
|
7653
|
+
if (damage < 50) {
|
|
7654
|
+
x *= 0.7;
|
|
7655
|
+
y *= 0.7;
|
|
7656
|
+
z *= 0.7;
|
|
7657
|
+
} else {
|
|
7658
|
+
x *= 1.2;
|
|
7659
|
+
y *= 1.2;
|
|
7660
|
+
z *= 1.2;
|
|
7661
|
+
}
|
|
7662
|
+
return { x, y, z };
|
|
7663
|
+
}
|
|
7664
|
+
function clipGibVelocity(ent) {
|
|
7665
|
+
let { x, y, z } = ent.velocity;
|
|
7666
|
+
if (x < -300) x = -300;
|
|
7667
|
+
else if (x > 300) x = 300;
|
|
7668
|
+
if (y < -300) y = -300;
|
|
7669
|
+
else if (y > 300) y = 300;
|
|
7670
|
+
if (z < 200) z = 200;
|
|
7671
|
+
else if (z > 500) z = 500;
|
|
7672
|
+
ent.velocity = { x, y, z };
|
|
7673
|
+
}
|
|
7674
|
+
function gib_touch(self, other, plane, surf, sys) {
|
|
7675
|
+
if (!self.groundentity) return;
|
|
7676
|
+
self.touch = void 0;
|
|
7677
|
+
if (plane) {
|
|
7678
|
+
sys.sound(self, 0, "misc/fhit3.wav", 1, 1, 0);
|
|
7679
|
+
}
|
|
7680
|
+
}
|
|
7681
|
+
function spawnGib(sys, origin, damage, model, type = GIB_ORGANIC) {
|
|
7649
7682
|
const gib = sys.spawn();
|
|
7650
7683
|
gib.classname = "gib";
|
|
7651
7684
|
gib.origin = {
|
|
7652
|
-
x: origin.x +
|
|
7653
|
-
y: origin.y +
|
|
7654
|
-
z: origin.z +
|
|
7685
|
+
x: origin.x + random3.crandom() * 20,
|
|
7686
|
+
y: origin.y + random3.crandom() * 20,
|
|
7687
|
+
z: origin.z + random3.crandom() * 20
|
|
7655
7688
|
};
|
|
7656
|
-
|
|
7657
|
-
x: (random3.frandom() - 0.5) * 300,
|
|
7658
|
-
y: (random3.frandom() - 0.5) * 300,
|
|
7659
|
-
z: 200 + random3.frandom() * 100
|
|
7660
|
-
};
|
|
7661
|
-
gib.movetype = 9 /* Bounce */;
|
|
7662
|
-
gib.solid = 0 /* Not */;
|
|
7663
|
-
gib.clipmask = 1;
|
|
7664
|
-
gib.avelocity = {
|
|
7665
|
-
x: random3.crandom() * 600,
|
|
7666
|
-
y: random3.crandom() * 600,
|
|
7667
|
-
z: random3.crandom() * 600
|
|
7668
|
-
};
|
|
7669
|
-
const defaultModels = [
|
|
7670
|
-
"models/objects/gibs/bone/tris.md2",
|
|
7671
|
-
"models/objects/gibs/meat/tris.md2",
|
|
7672
|
-
"models/objects/gibs/sm_meat/tris.md2"
|
|
7673
|
-
];
|
|
7674
|
-
const modelName = model || defaultModels[Math.floor(random3.frandom() * defaultModels.length)];
|
|
7689
|
+
const modelName = model || "models/objects/gibs/sm_meat/tris.md2";
|
|
7675
7690
|
gib.modelindex = sys.modelIndex(modelName);
|
|
7676
7691
|
gib.mins = { x: -2, y: -2, z: -2 };
|
|
7677
7692
|
gib.maxs = { x: 2, y: 2, z: 2 };
|
|
7678
|
-
|
|
7693
|
+
gib.solid = 0 /* Not */;
|
|
7694
|
+
gib.takedamage = true;
|
|
7695
|
+
gib.die = (self, inflictor, attacker, dmg, point, mod) => {
|
|
7696
|
+
sys.free(self);
|
|
7697
|
+
};
|
|
7698
|
+
gib.clipmask = 1;
|
|
7699
|
+
let vscale = 1;
|
|
7700
|
+
if (type === GIB_ORGANIC) {
|
|
7701
|
+
gib.movetype = 7 /* Toss */;
|
|
7702
|
+
gib.touch = (self, other, plane, surf) => gib_touch(self, other, plane, surf, sys);
|
|
7703
|
+
vscale = 0.5;
|
|
7704
|
+
} else {
|
|
7705
|
+
gib.movetype = 9 /* Bounce */;
|
|
7706
|
+
vscale = 1;
|
|
7679
7707
|
}
|
|
7708
|
+
const vd = velocityForDamage(damage);
|
|
7709
|
+
gib.velocity = {
|
|
7710
|
+
x: vd.x * vscale,
|
|
7711
|
+
y: vd.y * vscale,
|
|
7712
|
+
z: vd.z * vscale
|
|
7713
|
+
};
|
|
7714
|
+
clipGibVelocity(gib);
|
|
7715
|
+
gib.avelocity = {
|
|
7716
|
+
x: random3.frandom() * 600,
|
|
7717
|
+
y: random3.frandom() * 600,
|
|
7718
|
+
z: random3.frandom() * 600
|
|
7719
|
+
};
|
|
7680
7720
|
gib.think = (self) => {
|
|
7681
7721
|
sys.free(self);
|
|
7682
7722
|
};
|
|
@@ -7684,13 +7724,58 @@ function spawnGib(sys, origin, damage, model, type) {
|
|
|
7684
7724
|
sys.finalizeSpawn(gib);
|
|
7685
7725
|
return gib;
|
|
7686
7726
|
}
|
|
7727
|
+
function spawnHead(sys, origin, damage) {
|
|
7728
|
+
const head = sys.spawn();
|
|
7729
|
+
let gibname;
|
|
7730
|
+
if (random3.irandom(2) === 1) {
|
|
7731
|
+
gibname = "models/objects/gibs/head2/tris.md2";
|
|
7732
|
+
head.skin = 1;
|
|
7733
|
+
} else {
|
|
7734
|
+
gibname = "models/objects/gibs/skull/tris.md2";
|
|
7735
|
+
head.skin = 0;
|
|
7736
|
+
}
|
|
7737
|
+
head.frame = 0;
|
|
7738
|
+
head.modelindex = sys.modelIndex(gibname);
|
|
7739
|
+
head.mins = { x: -16, y: -16, z: 0 };
|
|
7740
|
+
head.maxs = { x: 16, y: 16, z: 16 };
|
|
7741
|
+
head.origin = {
|
|
7742
|
+
x: origin.x,
|
|
7743
|
+
y: origin.y,
|
|
7744
|
+
z: origin.z + 32
|
|
7745
|
+
};
|
|
7746
|
+
head.solid = 0 /* Not */;
|
|
7747
|
+
head.takedamage = true;
|
|
7748
|
+
head.die = (self, inflictor, attacker, dmg, point, mod) => {
|
|
7749
|
+
sys.free(self);
|
|
7750
|
+
};
|
|
7751
|
+
let vscale = 0.5;
|
|
7752
|
+
head.movetype = 7 /* Toss */;
|
|
7753
|
+
head.touch = (self, other, plane, surf) => gib_touch(self, other, plane, surf, sys);
|
|
7754
|
+
const vd = velocityForDamage(damage);
|
|
7755
|
+
head.velocity = {
|
|
7756
|
+
x: vd.x * vscale,
|
|
7757
|
+
y: vd.y * vscale,
|
|
7758
|
+
z: vd.z * vscale
|
|
7759
|
+
};
|
|
7760
|
+
clipGibVelocity(head);
|
|
7761
|
+
head.avelocity = { x: 0, y: random3.crandom() * 600, z: 0 };
|
|
7762
|
+
head.think = (self) => {
|
|
7763
|
+
sys.free(self);
|
|
7764
|
+
};
|
|
7765
|
+
sys.scheduleThink(head, sys.timeSeconds + 10 + random3.frandom() * 10);
|
|
7766
|
+
sys.finalizeSpawn(head);
|
|
7767
|
+
return head;
|
|
7768
|
+
}
|
|
7687
7769
|
function throwGibs(sys, origin, damageOrDefs) {
|
|
7688
7770
|
if (typeof damageOrDefs === "number") {
|
|
7689
7771
|
const damage = damageOrDefs;
|
|
7690
|
-
|
|
7691
|
-
|
|
7692
|
-
|
|
7693
|
-
|
|
7772
|
+
spawnGib(sys, origin, damage, "models/objects/gibs/sm_meat/tris.md2", GIB_ORGANIC);
|
|
7773
|
+
spawnGib(sys, origin, damage, "models/objects/gibs/sm_meat/tris.md2", GIB_ORGANIC);
|
|
7774
|
+
spawnGib(sys, origin, damage, "models/objects/gibs/sm_meat/tris.md2", GIB_ORGANIC);
|
|
7775
|
+
spawnGib(sys, origin, damage, "models/objects/gibs/sm_meat/tris.md2", GIB_ORGANIC);
|
|
7776
|
+
spawnGib(sys, origin, damage, "models/objects/gibs/meat/tris.md2", GIB_ORGANIC);
|
|
7777
|
+
spawnGib(sys, origin, damage, "models/objects/gibs/bone/tris.md2", GIB_ORGANIC);
|
|
7778
|
+
spawnHead(sys, origin, damage);
|
|
7694
7779
|
} else {
|
|
7695
7780
|
const defs = damageOrDefs;
|
|
7696
7781
|
for (const def of defs) {
|