quake2ts 0.0.485 → 0.0.486
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 +14 -14
- 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 +4 -4
- package/packages/game/dist/browser/index.global.js.map +1 -1
- package/packages/game/dist/cjs/index.cjs +243 -109
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +242 -109
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/combat/damage.d.ts +2 -6
- package/packages/game/dist/types/combat/damage.d.ts.map +1 -1
- package/packages/game/dist/types/combat/damageFlags.d.ts +6 -0
- package/packages/game/dist/types/combat/damageFlags.d.ts.map +1 -1
- package/packages/game/dist/types/entities/player.d.ts.map +1 -1
- package/packages/game/dist/types/entities/system.d.ts +3 -1
- package/packages/game/dist/types/entities/system.d.ts.map +1 -1
- package/packages/game/dist/types/index.d.ts +6 -0
- package/packages/game/dist/types/index.d.ts.map +1 -1
- package/packages/game/dist/types/inventory/give.d.ts +3 -0
- package/packages/game/dist/types/inventory/give.d.ts.map +1 -0
- package/packages/game/dist/types/inventory/index.d.ts +1 -0
- package/packages/game/dist/types/inventory/index.d.ts.map +1 -1
|
@@ -1878,6 +1878,13 @@ var DamageFlags = /* @__PURE__ */ ((DamageFlags2) => {
|
|
|
1878
1878
|
DamageFlags2[DamageFlags2["NO_DAMAGE_EFFECTS"] = 1024] = "NO_DAMAGE_EFFECTS";
|
|
1879
1879
|
return DamageFlags2;
|
|
1880
1880
|
})(DamageFlags || {});
|
|
1881
|
+
var EntityDamageFlags = /* @__PURE__ */ ((EntityDamageFlags2) => {
|
|
1882
|
+
EntityDamageFlags2[EntityDamageFlags2["GODMODE"] = 1] = "GODMODE";
|
|
1883
|
+
EntityDamageFlags2[EntityDamageFlags2["IMMORTAL"] = 2] = "IMMORTAL";
|
|
1884
|
+
EntityDamageFlags2[EntityDamageFlags2["NO_KNOCKBACK"] = 4] = "NO_KNOCKBACK";
|
|
1885
|
+
EntityDamageFlags2[EntityDamageFlags2["NO_DAMAGE_EFFECTS"] = 8] = "NO_DAMAGE_EFFECTS";
|
|
1886
|
+
return EntityDamageFlags2;
|
|
1887
|
+
})(EntityDamageFlags || {});
|
|
1881
1888
|
function hasAnyDamageFlag(flags, mask) {
|
|
1882
1889
|
return (flags & mask) !== 0;
|
|
1883
1890
|
}
|
|
@@ -3864,13 +3871,6 @@ var MulticastType = /* @__PURE__ */ ((MulticastType2) => {
|
|
|
3864
3871
|
})(MulticastType || {});
|
|
3865
3872
|
|
|
3866
3873
|
// src/combat/damage.ts
|
|
3867
|
-
var EntityDamageFlags = /* @__PURE__ */ ((EntityDamageFlags2) => {
|
|
3868
|
-
EntityDamageFlags2[EntityDamageFlags2["GODMODE"] = 1] = "GODMODE";
|
|
3869
|
-
EntityDamageFlags2[EntityDamageFlags2["IMMORTAL"] = 2] = "IMMORTAL";
|
|
3870
|
-
EntityDamageFlags2[EntityDamageFlags2["NO_KNOCKBACK"] = 4] = "NO_KNOCKBACK";
|
|
3871
|
-
EntityDamageFlags2[EntityDamageFlags2["NO_DAMAGE_EFFECTS"] = 8] = "NO_DAMAGE_EFFECTS";
|
|
3872
|
-
return EntityDamageFlags2;
|
|
3873
|
-
})(EntityDamageFlags || {});
|
|
3874
3874
|
function getDamageModifier(attacker, time) {
|
|
3875
3875
|
if (!attacker) {
|
|
3876
3876
|
return 1;
|
|
@@ -3934,6 +3934,18 @@ function T_Damage(targ, inflictor, attacker, dir, point, normal, damage, knockba
|
|
|
3934
3934
|
if (!targ.takedamage) {
|
|
3935
3935
|
return null;
|
|
3936
3936
|
}
|
|
3937
|
+
const client = targ.client;
|
|
3938
|
+
if (client && client.enviro_time && client.enviro_time > time) {
|
|
3939
|
+
if (mod === 18 /* SLIME */ || mod === 19 /* LAVA */) {
|
|
3940
|
+
return {
|
|
3941
|
+
take: 0,
|
|
3942
|
+
psave: 0,
|
|
3943
|
+
asave: 0,
|
|
3944
|
+
knocked: { x: 0, y: 0, z: 0 },
|
|
3945
|
+
killed: false
|
|
3946
|
+
};
|
|
3947
|
+
}
|
|
3948
|
+
}
|
|
3937
3949
|
const modifier = getDamageModifier(attacker, time);
|
|
3938
3950
|
const modifiedDamage = damage * modifier;
|
|
3939
3951
|
const modifiedKnockback = knockback * modifier;
|
|
@@ -5115,8 +5127,14 @@ var EntitySystem = class {
|
|
|
5115
5127
|
linkentity(ent) {
|
|
5116
5128
|
this.imports.linkentity(ent);
|
|
5117
5129
|
}
|
|
5118
|
-
|
|
5119
|
-
this.
|
|
5130
|
+
link(ent) {
|
|
5131
|
+
this.linkentity(ent);
|
|
5132
|
+
}
|
|
5133
|
+
unlink(ent) {
|
|
5134
|
+
this.spatialGrid.remove(ent);
|
|
5135
|
+
}
|
|
5136
|
+
multicast(origin, type, ServerCommand6, ...args) {
|
|
5137
|
+
this.imports.multicast(origin, type, ServerCommand6, ...args);
|
|
5120
5138
|
}
|
|
5121
5139
|
unicast(ent, reliable, event, ...args) {
|
|
5122
5140
|
this.imports.unicast(ent, reliable, event, ...args);
|
|
@@ -10092,6 +10110,64 @@ var FLAG_ITEMS = {
|
|
|
10092
10110
|
}
|
|
10093
10111
|
};
|
|
10094
10112
|
|
|
10113
|
+
// src/inventory/give.ts
|
|
10114
|
+
function giveItem(entity, classname) {
|
|
10115
|
+
if (!entity.client) return false;
|
|
10116
|
+
const client = entity.client;
|
|
10117
|
+
const inventory = client.inventory;
|
|
10118
|
+
const time = 0;
|
|
10119
|
+
const weapon = WEAPON_ITEMS[classname];
|
|
10120
|
+
if (weapon) {
|
|
10121
|
+
return pickupWeapon(inventory, weapon, time);
|
|
10122
|
+
}
|
|
10123
|
+
const isAmmo = Object.values(AmmoItemId).includes(classname);
|
|
10124
|
+
if (isAmmo) {
|
|
10125
|
+
const res = giveAmmoItem(inventory, classname);
|
|
10126
|
+
return res.pickedUp;
|
|
10127
|
+
}
|
|
10128
|
+
const healthItem = HEALTH_ITEMS[classname];
|
|
10129
|
+
if (healthItem) {
|
|
10130
|
+
if (canPickupHealth(inventory, entity.health, healthItem)) {
|
|
10131
|
+
const count = healthItem.amount;
|
|
10132
|
+
const max = healthItem.max;
|
|
10133
|
+
if (entity.health < max) {
|
|
10134
|
+
entity.health += count;
|
|
10135
|
+
if (entity.health > max) entity.health = max;
|
|
10136
|
+
return true;
|
|
10137
|
+
}
|
|
10138
|
+
if (classname === "item_health_mega") {
|
|
10139
|
+
if (entity.health < max) {
|
|
10140
|
+
entity.health += count;
|
|
10141
|
+
return true;
|
|
10142
|
+
}
|
|
10143
|
+
return false;
|
|
10144
|
+
}
|
|
10145
|
+
}
|
|
10146
|
+
return false;
|
|
10147
|
+
}
|
|
10148
|
+
const armorItem = ARMOR_ITEMS[classname];
|
|
10149
|
+
if (armorItem) {
|
|
10150
|
+
return pickupArmor(inventory, armorItem, time);
|
|
10151
|
+
}
|
|
10152
|
+
const powerupItem = POWERUP_ITEMS[classname];
|
|
10153
|
+
if (powerupItem) {
|
|
10154
|
+
return pickupPowerup(client, powerupItem, time);
|
|
10155
|
+
}
|
|
10156
|
+
const powerArmorItem = POWER_ARMOR_ITEMS[classname];
|
|
10157
|
+
if (powerArmorItem) {
|
|
10158
|
+
return pickupPowerArmor(inventory, powerArmorItem, time);
|
|
10159
|
+
}
|
|
10160
|
+
const keyItem = KEY_ITEMS[classname];
|
|
10161
|
+
if (keyItem) {
|
|
10162
|
+
return pickupKey(inventory, keyItem, time);
|
|
10163
|
+
}
|
|
10164
|
+
const flagItem = FLAG_ITEMS[classname];
|
|
10165
|
+
if (flagItem) {
|
|
10166
|
+
return pickupFlag(client, flagItem, time);
|
|
10167
|
+
}
|
|
10168
|
+
return false;
|
|
10169
|
+
}
|
|
10170
|
+
|
|
10095
10171
|
// src/entities/items/common.ts
|
|
10096
10172
|
function handleItemPickup(game, self, other, respawnTime = 30) {
|
|
10097
10173
|
if (!game.deathmatch) {
|
|
@@ -25848,6 +25924,11 @@ function player_think(self, sys) {
|
|
|
25848
25924
|
return;
|
|
25849
25925
|
}
|
|
25850
25926
|
const nowMs = sys.timeSeconds * 1e3;
|
|
25927
|
+
if (self.client.invincible_time && self.client.invincible_time > sys.timeSeconds) {
|
|
25928
|
+
self.flags = (self.flags || 0) | 1 /* GODMODE */;
|
|
25929
|
+
} else {
|
|
25930
|
+
self.flags = (self.flags || 0) & ~1 /* GODMODE */;
|
|
25931
|
+
}
|
|
25851
25932
|
const quadTime = self.client.quad_time || 0;
|
|
25852
25933
|
const doubleTime = self.client.double_time || 0;
|
|
25853
25934
|
const soundTime = self.client.quadsound_time || 0;
|
|
@@ -25952,106 +26033,6 @@ function populatePlayerStats(player, timeSeconds) {
|
|
|
25952
26033
|
return statArray;
|
|
25953
26034
|
}
|
|
25954
26035
|
|
|
25955
|
-
// src/save/adapter.ts
|
|
25956
|
-
function createSerializedGameState(context) {
|
|
25957
|
-
const { entitySystem, levelClock, random: random5 } = context;
|
|
25958
|
-
const player = entitySystem.find((e) => e.classname === "player");
|
|
25959
|
-
const sysSnapshot = entitySystem.createSnapshot();
|
|
25960
|
-
const playerState = {
|
|
25961
|
-
origin: player ? { ...player.origin } : { x: 0, y: 0, z: 0 },
|
|
25962
|
-
velocity: player ? { ...player.velocity } : { x: 0, y: 0, z: 0 },
|
|
25963
|
-
viewAngles: player ? { ...player.angles } : { x: 0, y: 0, z: 0 },
|
|
25964
|
-
onGround: player ? player.groundentity !== null : false,
|
|
25965
|
-
waterLevel: player ? player.waterlevel : 0,
|
|
25966
|
-
mins: player ? { ...player.mins } : { x: -16, y: -16, z: -24 },
|
|
25967
|
-
maxs: player ? { ...player.maxs } : { x: 16, y: 16, z: 32 },
|
|
25968
|
-
damageAlpha: player?.client?.damage_alpha ?? 0,
|
|
25969
|
-
damageIndicators: [],
|
|
25970
|
-
// Transient
|
|
25971
|
-
blend: [0, 0, 0, 0],
|
|
25972
|
-
// Transient
|
|
25973
|
-
stats: player ? populatePlayerStats(player, levelClock.current.timeSeconds) : [],
|
|
25974
|
-
kick_angles: player?.client?.kick_angles ?? { x: 0, y: 0, z: 0 },
|
|
25975
|
-
kick_origin: player?.client?.kick_origin ?? { x: 0, y: 0, z: 0 },
|
|
25976
|
-
gunoffset: { x: 0, y: 0, z: 0 },
|
|
25977
|
-
gunangles: { x: 0, y: 0, z: 0 },
|
|
25978
|
-
gunindex: 0,
|
|
25979
|
-
// Q2 Network Compatibility
|
|
25980
|
-
pm_type: player?.client?.pm_type ?? 0,
|
|
25981
|
-
pm_time: player?.client?.pm_time ?? 0,
|
|
25982
|
-
pm_flags: player?.client?.pm_flags ?? 0,
|
|
25983
|
-
gun_frame: player?.client?.gun_frame ?? 0,
|
|
25984
|
-
rdflags: player?.client?.rdflags ?? 0,
|
|
25985
|
-
fov: player?.client?.fov ?? 90,
|
|
25986
|
-
renderfx: player?.renderfx ?? 0
|
|
25987
|
-
};
|
|
25988
|
-
return {
|
|
25989
|
-
mapName: entitySystem.level.mapname || "unknown",
|
|
25990
|
-
playerState,
|
|
25991
|
-
entities: sysSnapshot.entities,
|
|
25992
|
-
levelState: sysSnapshot.level,
|
|
25993
|
-
time: levelClock.current.timeSeconds,
|
|
25994
|
-
playerInventory: player?.client?.inventory ? serializePlayerInventory(player.client.inventory) : void 0,
|
|
25995
|
-
rngState: random5?.getState(),
|
|
25996
|
-
_internalSnapshot: sysSnapshot
|
|
25997
|
-
};
|
|
25998
|
-
}
|
|
25999
|
-
function applySerializedGameState(state, context) {
|
|
26000
|
-
const { entitySystem, levelClock, random: random5 } = context;
|
|
26001
|
-
levelClock.restore({
|
|
26002
|
-
frameNumber: 0,
|
|
26003
|
-
// Unknown in this format, reset to 0
|
|
26004
|
-
timeSeconds: state.time,
|
|
26005
|
-
previousTimeSeconds: state.time,
|
|
26006
|
-
deltaSeconds: 0
|
|
26007
|
-
});
|
|
26008
|
-
if (random5 && state.rngState) {
|
|
26009
|
-
random5.setState(state.rngState);
|
|
26010
|
-
}
|
|
26011
|
-
if (state._internalSnapshot) {
|
|
26012
|
-
entitySystem.restore(state._internalSnapshot);
|
|
26013
|
-
} else {
|
|
26014
|
-
console.warn("Restoring from partial SerializedGameState. Thinks and Pool state may be lost.");
|
|
26015
|
-
const partialSnapshot = {
|
|
26016
|
-
timeSeconds: state.time,
|
|
26017
|
-
pool: {
|
|
26018
|
-
capacity: state.entities.length + 32,
|
|
26019
|
-
// Estimate
|
|
26020
|
-
activeOrder: state.entities.map((e) => e.index),
|
|
26021
|
-
// Naive
|
|
26022
|
-
freeList: [],
|
|
26023
|
-
// Assume none
|
|
26024
|
-
pendingFree: []
|
|
26025
|
-
},
|
|
26026
|
-
entities: state.entities,
|
|
26027
|
-
thinks: [],
|
|
26028
|
-
// LOST
|
|
26029
|
-
awareness: {
|
|
26030
|
-
frameNumber: 0,
|
|
26031
|
-
sightEntityIndex: null,
|
|
26032
|
-
sightEntityFrame: 0,
|
|
26033
|
-
soundEntityIndex: null,
|
|
26034
|
-
soundEntityFrame: 0,
|
|
26035
|
-
sound2EntityIndex: null,
|
|
26036
|
-
sound2EntityFrame: 0,
|
|
26037
|
-
sightClientIndex: null
|
|
26038
|
-
},
|
|
26039
|
-
crossLevelFlags: 0,
|
|
26040
|
-
crossUnitFlags: 0,
|
|
26041
|
-
level: state.levelState
|
|
26042
|
-
};
|
|
26043
|
-
entitySystem.restore(partialSnapshot);
|
|
26044
|
-
}
|
|
26045
|
-
const player = entitySystem.find((e) => e.classname === "player");
|
|
26046
|
-
if (player && state.playerInventory) {
|
|
26047
|
-
const inventory = deserializePlayerInventory(state.playerInventory);
|
|
26048
|
-
player.client = player.client || {};
|
|
26049
|
-
if (player.client) {
|
|
26050
|
-
player.client.inventory = inventory;
|
|
26051
|
-
}
|
|
26052
|
-
}
|
|
26053
|
-
}
|
|
26054
|
-
|
|
26055
26036
|
// src/combat/weapon.ts
|
|
26056
26037
|
var WeaponType = /* @__PURE__ */ ((WeaponType2) => {
|
|
26057
26038
|
WeaponType2[WeaponType2["BLASTER"] = 0] = "BLASTER";
|
|
@@ -26159,6 +26140,106 @@ var WEAPONS = {
|
|
|
26159
26140
|
}
|
|
26160
26141
|
};
|
|
26161
26142
|
|
|
26143
|
+
// src/save/adapter.ts
|
|
26144
|
+
function createSerializedGameState(context) {
|
|
26145
|
+
const { entitySystem, levelClock, random: random5 } = context;
|
|
26146
|
+
const player = entitySystem.find((e) => e.classname === "player");
|
|
26147
|
+
const sysSnapshot = entitySystem.createSnapshot();
|
|
26148
|
+
const playerState = {
|
|
26149
|
+
origin: player ? { ...player.origin } : { x: 0, y: 0, z: 0 },
|
|
26150
|
+
velocity: player ? { ...player.velocity } : { x: 0, y: 0, z: 0 },
|
|
26151
|
+
viewAngles: player ? { ...player.angles } : { x: 0, y: 0, z: 0 },
|
|
26152
|
+
onGround: player ? player.groundentity !== null : false,
|
|
26153
|
+
waterLevel: player ? player.waterlevel : 0,
|
|
26154
|
+
mins: player ? { ...player.mins } : { x: -16, y: -16, z: -24 },
|
|
26155
|
+
maxs: player ? { ...player.maxs } : { x: 16, y: 16, z: 32 },
|
|
26156
|
+
damageAlpha: player?.client?.damage_alpha ?? 0,
|
|
26157
|
+
damageIndicators: [],
|
|
26158
|
+
// Transient
|
|
26159
|
+
blend: [0, 0, 0, 0],
|
|
26160
|
+
// Transient
|
|
26161
|
+
stats: player ? populatePlayerStats(player, levelClock.current.timeSeconds) : [],
|
|
26162
|
+
kick_angles: player?.client?.kick_angles ?? { x: 0, y: 0, z: 0 },
|
|
26163
|
+
kick_origin: player?.client?.kick_origin ?? { x: 0, y: 0, z: 0 },
|
|
26164
|
+
gunoffset: { x: 0, y: 0, z: 0 },
|
|
26165
|
+
gunangles: { x: 0, y: 0, z: 0 },
|
|
26166
|
+
gunindex: 0,
|
|
26167
|
+
// Q2 Network Compatibility
|
|
26168
|
+
pm_type: player?.client?.pm_type ?? 0,
|
|
26169
|
+
pm_time: player?.client?.pm_time ?? 0,
|
|
26170
|
+
pm_flags: player?.client?.pm_flags ?? 0,
|
|
26171
|
+
gun_frame: player?.client?.gun_frame ?? 0,
|
|
26172
|
+
rdflags: player?.client?.rdflags ?? 0,
|
|
26173
|
+
fov: player?.client?.fov ?? 90,
|
|
26174
|
+
renderfx: player?.renderfx ?? 0
|
|
26175
|
+
};
|
|
26176
|
+
return {
|
|
26177
|
+
mapName: entitySystem.level.mapname || "unknown",
|
|
26178
|
+
playerState,
|
|
26179
|
+
entities: sysSnapshot.entities,
|
|
26180
|
+
levelState: sysSnapshot.level,
|
|
26181
|
+
time: levelClock.current.timeSeconds,
|
|
26182
|
+
playerInventory: player?.client?.inventory ? serializePlayerInventory(player.client.inventory) : void 0,
|
|
26183
|
+
rngState: random5?.getState(),
|
|
26184
|
+
_internalSnapshot: sysSnapshot
|
|
26185
|
+
};
|
|
26186
|
+
}
|
|
26187
|
+
function applySerializedGameState(state, context) {
|
|
26188
|
+
const { entitySystem, levelClock, random: random5 } = context;
|
|
26189
|
+
levelClock.restore({
|
|
26190
|
+
frameNumber: 0,
|
|
26191
|
+
// Unknown in this format, reset to 0
|
|
26192
|
+
timeSeconds: state.time,
|
|
26193
|
+
previousTimeSeconds: state.time,
|
|
26194
|
+
deltaSeconds: 0
|
|
26195
|
+
});
|
|
26196
|
+
if (random5 && state.rngState) {
|
|
26197
|
+
random5.setState(state.rngState);
|
|
26198
|
+
}
|
|
26199
|
+
if (state._internalSnapshot) {
|
|
26200
|
+
entitySystem.restore(state._internalSnapshot);
|
|
26201
|
+
} else {
|
|
26202
|
+
console.warn("Restoring from partial SerializedGameState. Thinks and Pool state may be lost.");
|
|
26203
|
+
const partialSnapshot = {
|
|
26204
|
+
timeSeconds: state.time,
|
|
26205
|
+
pool: {
|
|
26206
|
+
capacity: state.entities.length + 32,
|
|
26207
|
+
// Estimate
|
|
26208
|
+
activeOrder: state.entities.map((e) => e.index),
|
|
26209
|
+
// Naive
|
|
26210
|
+
freeList: [],
|
|
26211
|
+
// Assume none
|
|
26212
|
+
pendingFree: []
|
|
26213
|
+
},
|
|
26214
|
+
entities: state.entities,
|
|
26215
|
+
thinks: [],
|
|
26216
|
+
// LOST
|
|
26217
|
+
awareness: {
|
|
26218
|
+
frameNumber: 0,
|
|
26219
|
+
sightEntityIndex: null,
|
|
26220
|
+
sightEntityFrame: 0,
|
|
26221
|
+
soundEntityIndex: null,
|
|
26222
|
+
soundEntityFrame: 0,
|
|
26223
|
+
sound2EntityIndex: null,
|
|
26224
|
+
sound2EntityFrame: 0,
|
|
26225
|
+
sightClientIndex: null
|
|
26226
|
+
},
|
|
26227
|
+
crossLevelFlags: 0,
|
|
26228
|
+
crossUnitFlags: 0,
|
|
26229
|
+
level: state.levelState
|
|
26230
|
+
};
|
|
26231
|
+
entitySystem.restore(partialSnapshot);
|
|
26232
|
+
}
|
|
26233
|
+
const player = entitySystem.find((e) => e.classname === "player");
|
|
26234
|
+
if (player && state.playerInventory) {
|
|
26235
|
+
const inventory = deserializePlayerInventory(state.playerInventory);
|
|
26236
|
+
player.client = player.client || {};
|
|
26237
|
+
if (player.client) {
|
|
26238
|
+
player.client.inventory = inventory;
|
|
26239
|
+
}
|
|
26240
|
+
}
|
|
26241
|
+
}
|
|
26242
|
+
|
|
26162
26243
|
// src/index.ts
|
|
26163
26244
|
var ZERO_VEC312 = { x: 0, y: 0, z: 0 };
|
|
26164
26245
|
function createGame(imports, engine, options) {
|
|
@@ -26619,6 +26700,57 @@ function createGame(imports, engine, options) {
|
|
|
26619
26700
|
velocity = { ...ZERO_VEC312 };
|
|
26620
26701
|
}
|
|
26621
26702
|
frameLoop.reset(state.time * 1e3);
|
|
26703
|
+
},
|
|
26704
|
+
setGodMode(enabled) {
|
|
26705
|
+
const player = entities.find((e) => e.classname === "player");
|
|
26706
|
+
if (player) {
|
|
26707
|
+
if (enabled) {
|
|
26708
|
+
player.flags |= 16 /* GodMode */;
|
|
26709
|
+
} else {
|
|
26710
|
+
player.flags &= ~16 /* GodMode */;
|
|
26711
|
+
}
|
|
26712
|
+
}
|
|
26713
|
+
},
|
|
26714
|
+
setNoclip(enabled) {
|
|
26715
|
+
const player = entities.find((e) => e.classname === "player");
|
|
26716
|
+
if (player) {
|
|
26717
|
+
if (enabled) {
|
|
26718
|
+
player.movetype = 1 /* Noclip */;
|
|
26719
|
+
} else {
|
|
26720
|
+
player.movetype = 4 /* Walk */;
|
|
26721
|
+
}
|
|
26722
|
+
}
|
|
26723
|
+
},
|
|
26724
|
+
setNotarget(enabled) {
|
|
26725
|
+
const player = entities.find((e) => e.classname === "player");
|
|
26726
|
+
if (player) {
|
|
26727
|
+
if (enabled) {
|
|
26728
|
+
player.flags |= 32 /* NoTarget */;
|
|
26729
|
+
} else {
|
|
26730
|
+
player.flags &= ~32 /* NoTarget */;
|
|
26731
|
+
}
|
|
26732
|
+
}
|
|
26733
|
+
},
|
|
26734
|
+
giveItem(itemClassname) {
|
|
26735
|
+
const player = entities.find((e) => e.classname === "player");
|
|
26736
|
+
if (player) {
|
|
26737
|
+
giveItem(player, itemClassname);
|
|
26738
|
+
}
|
|
26739
|
+
},
|
|
26740
|
+
damage(amount) {
|
|
26741
|
+
const player = entities.find((e) => e.classname === "player");
|
|
26742
|
+
if (player) {
|
|
26743
|
+
T_Damage(player, null, null, ZERO_VEC312, player.origin, ZERO_VEC312, amount, 0, 0 /* NONE */, 0 /* UNKNOWN */, levelClock.current.timeSeconds);
|
|
26744
|
+
}
|
|
26745
|
+
},
|
|
26746
|
+
teleport(origin2) {
|
|
26747
|
+
const player = entities.find((e) => e.classname === "player");
|
|
26748
|
+
if (player) {
|
|
26749
|
+
entities.unlink(player);
|
|
26750
|
+
player.origin = { ...origin2 };
|
|
26751
|
+
player.velocity = { ...ZERO_VEC312 };
|
|
26752
|
+
entities.link(player);
|
|
26753
|
+
}
|
|
26622
26754
|
}
|
|
26623
26755
|
};
|
|
26624
26756
|
registerDefaultSpawns(spawnRegistry, gameExports);
|
|
@@ -26760,6 +26892,7 @@ export {
|
|
|
26760
26892
|
getAmmoItemDefinition,
|
|
26761
26893
|
getWeaponState,
|
|
26762
26894
|
giveAmmoItem,
|
|
26895
|
+
giveItem,
|
|
26763
26896
|
giveWeapon,
|
|
26764
26897
|
hasAnyDamageFlag,
|
|
26765
26898
|
hasItem,
|