quake2ts 0.0.240 → 0.0.242
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 +11 -11
- package/packages/client/dist/browser/index.global.js.map +1 -1
- package/packages/client/dist/cjs/index.cjs +50 -13
- package/packages/client/dist/cjs/index.cjs.map +1 -1
- package/packages/client/dist/esm/index.js +50 -13
- package/packages/client/dist/esm/index.js.map +1 -1
- package/packages/client/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/client/dist/types/demo/handler.d.ts +2 -1
- package/packages/client/dist/types/demo/handler.d.ts.map +1 -1
- package/packages/client/dist/types/index.d.ts.map +1 -1
- package/packages/engine/dist/browser/index.global.js +8 -8
- package/packages/engine/dist/browser/index.global.js.map +1 -1
- package/packages/engine/dist/cjs/index.cjs +37 -10
- package/packages/engine/dist/cjs/index.cjs.map +1 -1
- package/packages/engine/dist/esm/index.js +37 -10
- package/packages/engine/dist/esm/index.js.map +1 -1
- package/packages/engine/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/engine/dist/types/demo/parser.d.ts +1 -1
- package/packages/engine/dist/types/demo/parser.d.ts.map +1 -1
- package/packages/engine/dist/types/demo/playback.d.ts +1 -0
- package/packages/engine/dist/types/demo/playback.d.ts.map +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 +150 -48
- package/packages/game/dist/cjs/index.cjs.map +1 -1
- package/packages/game/dist/esm/index.js +150 -48
- package/packages/game/dist/esm/index.js.map +1 -1
- package/packages/game/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/game/dist/types/combat/weapons/firing.d.ts.map +1 -1
- package/packages/game/dist/types/combat/weapons/rogue.d.ts +9 -0
- package/packages/game/dist/types/combat/weapons/rogue.d.ts.map +1 -0
- package/packages/game/dist/types/entities/funcs.d.ts.map +1 -1
- package/packages/game/dist/types/entities/projectiles.d.ts +1 -0
- package/packages/game/dist/types/entities/projectiles.d.ts.map +1 -1
- package/packages/game/dist/types/index.d.ts +4 -0
- package/packages/game/dist/types/index.d.ts.map +1 -1
- package/packages/game/dist/types/inventory/ammo.d.ts.map +1 -1
- package/packages/game/dist/types/inventory/items.d.ts.map +1 -1
- package/packages/game/dist/types/physics/movement.d.ts +1 -1
- package/packages/game/dist/types/physics/movement.d.ts.map +1 -1
- package/packages/shared/dist/browser/index.global.js +1 -1
- package/packages/shared/dist/browser/index.global.js.map +1 -1
- package/packages/shared/dist/cjs/index.cjs +5 -0
- package/packages/shared/dist/cjs/index.cjs.map +1 -1
- package/packages/shared/dist/esm/index.js +5 -0
- package/packages/shared/dist/esm/index.js.map +1 -1
- package/packages/shared/dist/tsconfig.tsbuildinfo +1 -1
- package/packages/shared/dist/types/items/ammo.d.ts +6 -1
- package/packages/shared/dist/types/items/ammo.d.ts.map +1 -1
- package/packages/tools/dist/tsconfig.tsbuildinfo +1 -1
|
@@ -1277,6 +1277,11 @@ var AmmoItemId = /* @__PURE__ */ ((AmmoItemId22) => {
|
|
|
1277
1277
|
AmmoItemId22["Grenades"] = "ammo_grenades";
|
|
1278
1278
|
AmmoItemId22["Cells"] = "ammo_cells";
|
|
1279
1279
|
AmmoItemId22["Slugs"] = "ammo_slugs";
|
|
1280
|
+
AmmoItemId22["MagSlugs"] = "ammo_magslug";
|
|
1281
|
+
AmmoItemId22["Flechettes"] = "ammo_flechettes";
|
|
1282
|
+
AmmoItemId22["Disruptor"] = "ammo_disruptor";
|
|
1283
|
+
AmmoItemId22["Tesla"] = "ammo_tesla";
|
|
1284
|
+
AmmoItemId22["Trap"] = "ammo_trap";
|
|
1280
1285
|
return AmmoItemId22;
|
|
1281
1286
|
})(AmmoItemId || {});
|
|
1282
1287
|
|
|
@@ -1398,7 +1403,12 @@ var AMMO_ITEM_DEFINITIONS = {
|
|
|
1398
1403
|
[AmmoItemId.Rockets]: { id: AmmoItemId.Rockets, ammoType: AmmoType.Rockets, quantity: 5, weaponAmmo: false },
|
|
1399
1404
|
[AmmoItemId.Grenades]: { id: AmmoItemId.Grenades, ammoType: AmmoType.Grenades, quantity: 5, weaponAmmo: true },
|
|
1400
1405
|
[AmmoItemId.Cells]: { id: AmmoItemId.Cells, ammoType: AmmoType.Cells, quantity: 50, weaponAmmo: false },
|
|
1401
|
-
[AmmoItemId.Slugs]: { id: AmmoItemId.Slugs, ammoType: AmmoType.Slugs, quantity: 10, weaponAmmo: false }
|
|
1406
|
+
[AmmoItemId.Slugs]: { id: AmmoItemId.Slugs, ammoType: AmmoType.Slugs, quantity: 10, weaponAmmo: false },
|
|
1407
|
+
[AmmoItemId.MagSlugs]: { id: AmmoItemId.MagSlugs, ammoType: AmmoType.MagSlugs, quantity: 10, weaponAmmo: false },
|
|
1408
|
+
[AmmoItemId.Flechettes]: { id: AmmoItemId.Flechettes, ammoType: AmmoType.Flechettes, quantity: 50, weaponAmmo: false },
|
|
1409
|
+
[AmmoItemId.Disruptor]: { id: AmmoItemId.Disruptor, ammoType: AmmoType.Disruptor, quantity: 15, weaponAmmo: false },
|
|
1410
|
+
[AmmoItemId.Tesla]: { id: AmmoItemId.Tesla, ammoType: AmmoType.Tesla, quantity: 5, weaponAmmo: false },
|
|
1411
|
+
[AmmoItemId.Trap]: { id: AmmoItemId.Trap, ammoType: AmmoType.Trap, quantity: 5, weaponAmmo: false }
|
|
1402
1412
|
};
|
|
1403
1413
|
function getAmmoItemDefinition(id) {
|
|
1404
1414
|
return AMMO_ITEM_DEFINITIONS[id];
|
|
@@ -1417,6 +1427,11 @@ function createBaseAmmoCaps() {
|
|
|
1417
1427
|
caps[AmmoType.Bullets] = 200;
|
|
1418
1428
|
caps[AmmoType.Shells] = 100;
|
|
1419
1429
|
caps[AmmoType.Cells] = 200;
|
|
1430
|
+
caps[AmmoType.MagSlugs] = 50;
|
|
1431
|
+
caps[AmmoType.Flechettes] = 200;
|
|
1432
|
+
caps[AmmoType.Disruptor] = 200;
|
|
1433
|
+
caps[AmmoType.Tesla] = 50;
|
|
1434
|
+
caps[AmmoType.Trap] = 50;
|
|
1420
1435
|
return caps;
|
|
1421
1436
|
}
|
|
1422
1437
|
function clampAmmoCounts(counts, caps) {
|
|
@@ -2664,7 +2679,7 @@ function runGravity(ent, gravity, frametime) {
|
|
|
2664
2679
|
}
|
|
2665
2680
|
}
|
|
2666
2681
|
}
|
|
2667
|
-
function runBouncing(ent, imports, frametime) {
|
|
2682
|
+
function runBouncing(ent, system, imports, frametime) {
|
|
2668
2683
|
if (ent.movetype !== 9 /* Bounce */ && ent.movetype !== 10 /* WallBounce */) {
|
|
2669
2684
|
return;
|
|
2670
2685
|
}
|
|
@@ -2674,6 +2689,13 @@ function runBouncing(ent, imports, frametime) {
|
|
|
2674
2689
|
const traceResult = imports.trace(ent.origin, ent.mins, ent.maxs, end, ent, ent.clipmask);
|
|
2675
2690
|
if (traceResult.fraction < 1) {
|
|
2676
2691
|
ent.origin = traceResult.endpos;
|
|
2692
|
+
if (traceResult.ent) {
|
|
2693
|
+
resolveImpact(ent, traceResult, system);
|
|
2694
|
+
} else {
|
|
2695
|
+
if (ent.touch) {
|
|
2696
|
+
ent.touch(ent, system.world, traceResult.plane, void 0);
|
|
2697
|
+
}
|
|
2698
|
+
}
|
|
2677
2699
|
}
|
|
2678
2700
|
if (traceResult.fraction > 0 && traceResult.fraction < 1 && traceResult.plane) {
|
|
2679
2701
|
let overbounce = 1.01;
|
|
@@ -3479,11 +3501,11 @@ var EntitySystem = class {
|
|
|
3479
3501
|
switch (ent.movetype) {
|
|
3480
3502
|
case 7 /* Toss */:
|
|
3481
3503
|
runGravity(ent, this.gravity, frametime);
|
|
3482
|
-
runBouncing(ent, this.imports, frametime);
|
|
3504
|
+
runBouncing(ent, this, this.imports, frametime);
|
|
3483
3505
|
ent.timestamp = this.currentTimeSeconds;
|
|
3484
3506
|
break;
|
|
3485
3507
|
case 9 /* Bounce */:
|
|
3486
|
-
runBouncing(ent, this.imports, frametime);
|
|
3508
|
+
runBouncing(ent, this, this.imports, frametime);
|
|
3487
3509
|
ent.timestamp = this.currentTimeSeconds;
|
|
3488
3510
|
break;
|
|
3489
3511
|
case 8 /* FlyMissile */:
|
|
@@ -4541,7 +4563,40 @@ var WEAPON_ITEMS = {
|
|
|
4541
4563
|
initialAmmo: 50,
|
|
4542
4564
|
pickupAmmo: 50,
|
|
4543
4565
|
fireRate: 1
|
|
4566
|
+
},
|
|
4567
|
+
// Rogue Weapons
|
|
4568
|
+
"weapon_boomer": {
|
|
4569
|
+
type: "weapon",
|
|
4570
|
+
id: "weapon_boomer",
|
|
4571
|
+
// Ion Ripper
|
|
4572
|
+
name: "Ion Ripper",
|
|
4573
|
+
weaponId: WeaponId.IonRipper,
|
|
4574
|
+
ammoType: AmmoType.Cells,
|
|
4575
|
+
initialAmmo: 50,
|
|
4576
|
+
pickupAmmo: 50,
|
|
4577
|
+
fireRate: 0.1
|
|
4578
|
+
},
|
|
4579
|
+
"weapon_phalanx": {
|
|
4580
|
+
type: "weapon",
|
|
4581
|
+
id: "weapon_phalanx",
|
|
4582
|
+
name: "Phalanx",
|
|
4583
|
+
weaponId: WeaponId.Phalanx,
|
|
4584
|
+
ammoType: AmmoType.MagSlugs,
|
|
4585
|
+
initialAmmo: 50,
|
|
4586
|
+
pickupAmmo: 50,
|
|
4587
|
+
fireRate: 1
|
|
4588
|
+
},
|
|
4589
|
+
"weapon_beam": {
|
|
4590
|
+
type: "weapon",
|
|
4591
|
+
id: "weapon_beam",
|
|
4592
|
+
name: "Plasma Beam",
|
|
4593
|
+
weaponId: WeaponId.PlasmaBeam,
|
|
4594
|
+
ammoType: AmmoType.Cells,
|
|
4595
|
+
initialAmmo: 50,
|
|
4596
|
+
pickupAmmo: 50,
|
|
4597
|
+
fireRate: 0.1
|
|
4544
4598
|
}
|
|
4599
|
+
// ... add others as we implement them
|
|
4545
4600
|
};
|
|
4546
4601
|
var HEALTH_ITEMS = {
|
|
4547
4602
|
"item_health_small": {
|
|
@@ -4929,37 +4984,53 @@ function move_calc(ent, dest, context, done) {
|
|
|
4929
4984
|
context.scheduleThink(ent, context.timeSeconds + dt);
|
|
4930
4985
|
}
|
|
4931
4986
|
}
|
|
4932
|
-
|
|
4933
|
-
|
|
4934
|
-
|
|
4935
|
-
|
|
4936
|
-
|
|
4937
|
-
|
|
4938
|
-
|
|
4939
|
-
|
|
4940
|
-
|
|
4941
|
-
|
|
4942
|
-
self.think = door_go_up;
|
|
4943
|
-
}
|
|
4987
|
+
var SPAWNFLAG_DOOR_START_OPEN = 1;
|
|
4988
|
+
var SPAWNFLAG_DOOR_CRUSHER = 4;
|
|
4989
|
+
var SPAWNFLAG_DOOR_NOMONSTER = 8;
|
|
4990
|
+
var SPAWNFLAG_DOOR_ANIMATED = 16;
|
|
4991
|
+
var SPAWNFLAG_DOOR_TOGGLE = 32;
|
|
4992
|
+
var SPAWNFLAG_DOOR_ANIMATED_FAST = 64;
|
|
4993
|
+
var EF_ANIM_ALL = 4;
|
|
4994
|
+
var EF_ANIM_ALLFAST = 8;
|
|
4995
|
+
function getMoveInfo(ent) {
|
|
4996
|
+
return ent.moveinfo;
|
|
4944
4997
|
}
|
|
4945
4998
|
function door_hit_top(ent, context) {
|
|
4999
|
+
const moveinfo = getMoveInfo(ent);
|
|
5000
|
+
if (moveinfo && moveinfo.sound_end) {
|
|
5001
|
+
context.sound(ent, 0, moveinfo.sound_end, 1, 1, 0);
|
|
5002
|
+
}
|
|
4946
5003
|
ent.state = 0 /* Open */;
|
|
4947
|
-
if (ent.spawnflags &
|
|
5004
|
+
if (ent.spawnflags & SPAWNFLAG_DOOR_TOGGLE) {
|
|
4948
5005
|
return;
|
|
4949
5006
|
}
|
|
4950
5007
|
if (ent.wait === -1) {
|
|
4951
5008
|
return;
|
|
4952
5009
|
}
|
|
4953
|
-
ent.think = door_go_down;
|
|
5010
|
+
ent.think = (e) => door_go_down(e, context);
|
|
4954
5011
|
context.scheduleThink(ent, context.timeSeconds + ent.wait);
|
|
4955
5012
|
}
|
|
4956
5013
|
function door_hit_bottom(ent, context) {
|
|
5014
|
+
const moveinfo = getMoveInfo(ent);
|
|
5015
|
+
if (moveinfo && moveinfo.sound_end) {
|
|
5016
|
+
context.sound(ent, 0, moveinfo.sound_end, 1, 1, 0);
|
|
5017
|
+
}
|
|
4957
5018
|
ent.state = 2 /* Closed */;
|
|
4958
5019
|
}
|
|
4959
5020
|
function door_go_down(door, context) {
|
|
5021
|
+
door.think = (e) => door_go_down(e, context);
|
|
5022
|
+
const moveinfo = getMoveInfo(door);
|
|
5023
|
+
if (moveinfo && moveinfo.sound_start) {
|
|
5024
|
+
context.sound(door, 0, moveinfo.sound_start, 1, 1, 0);
|
|
5025
|
+
}
|
|
4960
5026
|
move_calc(door, door.pos1, context, door_hit_bottom);
|
|
4961
5027
|
}
|
|
4962
5028
|
function door_go_up(door, context) {
|
|
5029
|
+
door.think = (e) => door_go_up(e, context);
|
|
5030
|
+
const moveinfo = getMoveInfo(door);
|
|
5031
|
+
if (moveinfo && moveinfo.sound_start) {
|
|
5032
|
+
context.sound(door, 0, moveinfo.sound_start, 1, 1, 0);
|
|
5033
|
+
}
|
|
4963
5034
|
move_calc(door, door.pos2, context, door_hit_top);
|
|
4964
5035
|
}
|
|
4965
5036
|
var func_door = (entity, context) => {
|
|
@@ -4971,15 +5042,51 @@ var func_door = (entity, context) => {
|
|
|
4971
5042
|
if (!entity.health) entity.health = 0;
|
|
4972
5043
|
entity.solid = 3 /* Bsp */;
|
|
4973
5044
|
entity.movetype = 2 /* Push */;
|
|
4974
|
-
entity.blocked =
|
|
5045
|
+
entity.blocked = (self, other) => {
|
|
5046
|
+
if (other && other.takedamage) {
|
|
5047
|
+
const damage = self.dmg || 2;
|
|
5048
|
+
if (self.spawnflags & SPAWNFLAG_DOOR_CRUSHER) {
|
|
5049
|
+
other.health -= damage;
|
|
5050
|
+
} else {
|
|
5051
|
+
other.health -= damage;
|
|
5052
|
+
}
|
|
5053
|
+
}
|
|
5054
|
+
if (self.spawnflags & SPAWNFLAG_DOOR_CRUSHER) {
|
|
5055
|
+
return;
|
|
5056
|
+
}
|
|
5057
|
+
if (self.state === 1 /* Opening */) {
|
|
5058
|
+
self.state = 3 /* Closing */;
|
|
5059
|
+
door_go_down(self, context.entities);
|
|
5060
|
+
} else if (self.state === 3 /* Closing */) {
|
|
5061
|
+
self.state = 1 /* Opening */;
|
|
5062
|
+
door_go_up(self, context.entities);
|
|
5063
|
+
}
|
|
5064
|
+
};
|
|
4975
5065
|
entity.state = 2 /* Closed */;
|
|
4976
5066
|
entity.pos1 = { ...entity.origin };
|
|
4977
5067
|
const move = entity.movedir.x * (Math.abs(entity.maxs.x - entity.mins.x) - entity.lip) + entity.movedir.y * (Math.abs(entity.maxs.y - entity.mins.y) - entity.lip) + entity.movedir.z * (Math.abs(entity.maxs.z - entity.mins.z) - entity.lip);
|
|
4978
5068
|
entity.pos2 = addVec3(entity.pos1, scaleVec3(entity.movedir, move));
|
|
4979
|
-
|
|
5069
|
+
const moveinfo = {
|
|
5070
|
+
sound_start: null,
|
|
5071
|
+
sound_middle: null,
|
|
5072
|
+
sound_end: null
|
|
5073
|
+
};
|
|
5074
|
+
if (entity.sounds !== 1) {
|
|
5075
|
+
moveinfo.sound_start = "doors/dr1_strt.wav";
|
|
5076
|
+
moveinfo.sound_middle = "doors/dr1_mid.wav";
|
|
5077
|
+
moveinfo.sound_end = "doors/dr1_end.wav";
|
|
5078
|
+
}
|
|
5079
|
+
entity.moveinfo = moveinfo;
|
|
5080
|
+
if (entity.spawnflags & SPAWNFLAG_DOOR_START_OPEN) {
|
|
4980
5081
|
entity.origin = { ...entity.pos2 };
|
|
4981
5082
|
entity.state = 0 /* Open */;
|
|
4982
5083
|
}
|
|
5084
|
+
if (entity.spawnflags & SPAWNFLAG_DOOR_ANIMATED) {
|
|
5085
|
+
entity.effects |= EF_ANIM_ALL;
|
|
5086
|
+
}
|
|
5087
|
+
if (entity.spawnflags & SPAWNFLAG_DOOR_ANIMATED_FAST) {
|
|
5088
|
+
entity.effects |= EF_ANIM_ALLFAST;
|
|
5089
|
+
}
|
|
4983
5090
|
if (entity.health > 0) {
|
|
4984
5091
|
entity.takedamage = true;
|
|
4985
5092
|
entity.max_health = entity.health;
|
|
@@ -4990,46 +5097,27 @@ var func_door = (entity, context) => {
|
|
|
4990
5097
|
};
|
|
4991
5098
|
}
|
|
4992
5099
|
entity.use = (self, other, activator) => {
|
|
4993
|
-
if (entity.spawnflags &
|
|
5100
|
+
if (entity.spawnflags & SPAWNFLAG_DOOR_TOGGLE) {
|
|
4994
5101
|
if (self.state === 2 /* Closed */) {
|
|
4995
5102
|
self.state = 1 /* Opening */;
|
|
4996
|
-
self.
|
|
4997
|
-
context.entities.scheduleThink(self, context.entities.timeSeconds + 0.1);
|
|
5103
|
+
door_go_up(self, context.entities);
|
|
4998
5104
|
} else if (self.state === 0 /* Open */) {
|
|
4999
5105
|
self.state = 3 /* Closing */;
|
|
5000
|
-
self.
|
|
5001
|
-
context.entities.scheduleThink(self, context.entities.timeSeconds + 0.1);
|
|
5106
|
+
door_go_down(self, context.entities);
|
|
5002
5107
|
}
|
|
5003
5108
|
return;
|
|
5004
5109
|
}
|
|
5005
5110
|
if (self.state !== 2 /* Closed */) return;
|
|
5006
5111
|
self.state = 1 /* Opening */;
|
|
5007
|
-
self.
|
|
5008
|
-
context.entities.scheduleThink(self, context.entities.timeSeconds + 0.1);
|
|
5009
|
-
let soundName = "doors/dr1_strt.wav";
|
|
5010
|
-
if (entity.sounds) {
|
|
5011
|
-
switch (entity.sounds) {
|
|
5012
|
-
case 1:
|
|
5013
|
-
soundName = "doors/dr1_strt.wav";
|
|
5014
|
-
break;
|
|
5015
|
-
case 2:
|
|
5016
|
-
soundName = "doors/dr2_strt.wav";
|
|
5017
|
-
break;
|
|
5018
|
-
case 3:
|
|
5019
|
-
soundName = "doors/dr3_strt.wav";
|
|
5020
|
-
break;
|
|
5021
|
-
case 4:
|
|
5022
|
-
soundName = "doors/dr4_strt.wav";
|
|
5023
|
-
break;
|
|
5024
|
-
default:
|
|
5025
|
-
soundName = "doors/dr1_strt.wav";
|
|
5026
|
-
}
|
|
5027
|
-
}
|
|
5028
|
-
context.entities.sound(self, 0, soundName, 1, 1, 0);
|
|
5112
|
+
door_go_up(self, context.entities);
|
|
5029
5113
|
};
|
|
5030
5114
|
if (entity.health <= 0 && !entity.targetname) {
|
|
5031
5115
|
entity.touch = (self, other) => {
|
|
5032
|
-
if (!other
|
|
5116
|
+
if (!other) return;
|
|
5117
|
+
if (self.spawnflags & SPAWNFLAG_DOOR_NOMONSTER) {
|
|
5118
|
+
if (other.svflags & 4 /* Monster */) return;
|
|
5119
|
+
}
|
|
5120
|
+
if (other.classname !== "player" && !(other.svflags & 4 /* Monster */)) return;
|
|
5033
5121
|
self.use?.(self, other, other);
|
|
5034
5122
|
};
|
|
5035
5123
|
}
|
|
@@ -6289,6 +6377,16 @@ function createIonRipper(sys, owner, start, dir, damage, speed) {
|
|
|
6289
6377
|
sys.free(self);
|
|
6290
6378
|
return;
|
|
6291
6379
|
}
|
|
6380
|
+
self.count = (self.count || 0) + 1;
|
|
6381
|
+
if (self.count > 5) {
|
|
6382
|
+
sys.multicast(self.origin, 1 /* Pvs */, ServerCommand.temp_entity, TempEntity.WELDING_SPARKS, self.origin, ZERO_VEC3, 228);
|
|
6383
|
+
sys.free(self);
|
|
6384
|
+
return;
|
|
6385
|
+
}
|
|
6386
|
+
sys.sound(self, 0, "weapons/ripphit.wav", 1, 1, 0);
|
|
6387
|
+
if (plane) {
|
|
6388
|
+
sys.multicast(self.origin, 1 /* Pvs */, ServerCommand.temp_entity, TempEntity.WELDING_SPARKS, self.origin, plane.normal, 228);
|
|
6389
|
+
}
|
|
6292
6390
|
};
|
|
6293
6391
|
ion.think = (self) => {
|
|
6294
6392
|
sys.multicast(self.origin, 1 /* Pvs */, ServerCommand.temp_entity, TempEntity.WELDING_SPARKS, self.origin, ZERO_VEC3, 228);
|
|
@@ -14001,6 +14099,8 @@ var ZERO_VEC37 = { x: 0, y: 0, z: 0 };
|
|
|
14001
14099
|
function createGame(imports, engine, options) {
|
|
14002
14100
|
const gravity = options.gravity;
|
|
14003
14101
|
const deathmatch = options.deathmatch ?? false;
|
|
14102
|
+
const rogue = options.rogue ?? false;
|
|
14103
|
+
const xatrix = options.xatrix ?? false;
|
|
14004
14104
|
const levelClock = new LevelClock();
|
|
14005
14105
|
const frameLoop = new GameFrameLoop();
|
|
14006
14106
|
const rng = options.random ?? new RandomGenerator();
|
|
@@ -14288,6 +14388,8 @@ function createGame(imports, engine, options) {
|
|
|
14288
14388
|
},
|
|
14289
14389
|
trace,
|
|
14290
14390
|
deathmatch,
|
|
14391
|
+
rogue,
|
|
14392
|
+
xatrix,
|
|
14291
14393
|
multicast(origin2, type, event, ...args) {
|
|
14292
14394
|
multicast(origin2, type, event, ...args);
|
|
14293
14395
|
},
|