Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Binary file modified engine/argus/progs.dat
Binary file not shown.
Binary file modified game/argus/progs.dat
Binary file not shown.
2,114 changes: 2,114 additions & 0 deletions runs/ab_dm2_allyguard.log

Large diffs are not rendered by default.

2,277 changes: 2,277 additions & 0 deletions runs/ab_dm4_allyguard.log

Large diffs are not rendered by default.

220 changes: 220 additions & 0 deletions runs/shane_e1m2_2026-09-05_v253.log
Original file line number Diff line number Diff line change
@@ -0,0 +1,220 @@
LOG started on: 09/05/2026 11:03:31
Playing registered version.
Console initialized.
UDP Initialized
WIPX_OpenSocket: Address family not supported by protocol family
WIPX_Init: Unable to open control socket, IPX disabled
Exe: 20:02:47 Jul 31 2024
256.0 megabyte heap
Video mode 800x600x24 60Hz (24-bit z-buffer, 0x FSAA) initialized
GL_VENDOR: NVIDIA Corporation
GL_RENDERER: NVIDIA GeForce RTX 3070 Ti/PCIe/SSE2
GL_VERSION: 4.6.0 NVIDIA 610.74
FOUND: ARB_vertex_buffer_object
FOUND: ARB_multitexture
GL_MAX_TEXTURE_UNITS: 4
FOUND: ARB_texture_env_combine
FOUND: ARB_texture_env_add
FOUND: SDL_GL_SetSwapInterval
FOUND: EXT_texture_filter_anisotropic
FOUND: ARB_texture_non_power_of_two
FOUND: GLSL
Enabled: GLSL gamma
Enabled: GLSL alias model rendering
Enabled: EXT_packed_pixels
FOUND: glGenerateMipmap

Sound Initialization
SDL audio spec : 44100 Hz, 1024 samples, 2 channels
SDL audio driver: wasapi - C32F391 (NVIDIA High Definition Audio), 65536 bytes buffer
Audio: 16 bit, stereo, 44100 Hz
CDAudio disabled at compile time

Language initialization
Couldn't load 'localization/loc_english.txt'
from 'C:\argus\engine'

========= Quake Initialized =========

execing quake.rc
execing default.cfg
execing config.cfg
execing autoexec.cfg
SpawnServer: e1m2
Clearing memory
Programs occupy 857K.
Mod_LoadTexinfo: 1 texture(s) missing from BSP file
trying to open external vis file
maps/e1m2.vis not found, trying argus.vis
external vis not found
Loaded external entity file maps/e1m2@0caa.ent
ARGUS slots 8
ARGUS worldspawn reached
ARGNAV 198 nodes, 535 links
52 entities inhibited
ARGUS init on e1m2
ARGEVT Carmack spawned
Server spawned.
CL_EstablishConnection: connected to local
recording to C:\argus\engine/argus/session.dem.
3 demo(s) in loop
Client LOCAL connected
ARGEVT Carmack goal_push 3
ARGLOG Carmack t 1.2 pos '1608.0 1664.0 264.0' spd 0 yaw 244.8 mode 0 st 0 gl 0 hp 100 frg 0

FITZQUAKE 0.85 SERVER (35301 CRC)
Serverinfo packet received.



Castle of the Damned
Using protocol 15
FindFile: can't find music/track08.ogg
FindFile: can't find music/track08.opus
FindFile: can't find music/track08.mp3
FindFile: can't find music/track08.flac
FindFile: can't find music/track08.wav
Couldn't find a cdrip for track 8
CL_SignonReply: 1
CL_SignonReply: 2
ARGEVT Carmack coop_stats break 0 steal 0 block 0
ARGLOG player t 1.4 pos '1608.0 1664.0 265.0' spd 0 yaw 270 mode 0 st 0 gl 0 hp 100 frg 0
CL_SignonReply: 3
242.4 megabyte data cache
CL_SignonReply: 4
ARGLOG Carmack t 1.7 pos '1587.1 1504.5 264.0' spd 321.0 yaw 272.3 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG player t 1.9 pos '1608.0 1664.0 264.0' spd 0 yaw -85.8 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 2.2 pos '1586.4 1426.8 265.4' spd 320.0 yaw 271.5 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG player t 2.4 pos '1608.1 1662.4 264.0' spd 84.3 yaw -90 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 2.7 pos '1570.7 1334.4 225.7' spd 320.0 yaw 254.5 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG player t 2.9 pos '1538.9 1560.9 264.0' spd 321.4 yaw -90 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 3.2 pos '1555.4 1291.2 200.0' spd 14.1 yaw 260.6 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG player t 3.4 pos '1464.3 1501.7 264.0' spd 48.6 yaw -81.6 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 3.7 pos '1564.0 1325.2 200.0' spd 70.1 yaw 255.7 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG player t 3.9 pos '1461.7 1499.5 264.0' spd 0 yaw -75.9 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 4.2 pos '1588.3 1334.9 200.0' spd 75.3 yaw 227.7 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG player t 4.4 pos '1461.7 1499.5 264.0' spd 0 yaw -85.8 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 4.7 pos '1630.4 1351.5 200.0' spd 128.1 yaw 216.3 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG player t 4.9 pos '1461.7 1499.5 264.0' spd 0 yaw -77.3 mode 0 st 0 gl 0 hp 100 frg 0
Carmack: Compiling level geometry. Latency target: 0 ms.
ARGLOG Carmack t 5.2 pos '1669.8 1376.2 200.0' spd 252.8 yaw 215.1 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack coop_stats break 0 steal 0 block 0
ARGLOG player t 5.4 pos '1461.7 1499.5 264.0' spd 0 yaw -64.7 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack goal_pop
ARGEVT Carmack goal_push 5
ARGEVT Carmack goal key
ARGLOG Carmack t 5.7 pos '1664.2 1376.1 200.0' spd 268.6 yaw 171.1 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack route 21 start '1649.0 1377.0 200.0' goal '945.0 -639.0 440.0'
ARGLOG player t 6.0 pos '1461.7 1499.5 264.0' spd 0 yaw -60.5 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack hazard
ARGLOG Carmack t 6.2 pos '1619.8 1446.8 200.0' spd 217.1 yaw 165 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 6.5 pos '1487.7 1453.5 263.0' spd 52.2 yaw -61.9 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 6.8 pos '1616.0 1403.1 200.0' spd 41.3 yaw 150 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 7.0 pos '1493.2 1443.8 248.0' spd 0 yaw -50.6 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack hazard
ARGLOG Carmack t 7.3 pos '1616.0 1396.4 200.0' spd 7.4 yaw 148 mode 2 st 0 gl 0 hp 100 frg 0
You got 2 rockets
ARGLOG player t 7.5 pos '1522.4 1406.4 242.2' spd 197.6 yaw -45 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 7.8 pos '1616.0 1380.6 200.0' spd 225.1 yaw 266 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 8.0 pos '1574.8 1339.2 219.9' spd 147.5 yaw 8.4 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 8.3 pos '1557.5 1222.9 208.0' spd 442.2 yaw 156.9 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 8.5 pos '1578.1 1344.0 200.0' spd 263.3 yaw -92.8 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack route 21 start '1393.0 1313.0 200.0' goal '945.0 -639.0 440.0'
ARGLOG Carmack t 8.8 pos '1453.6 1363.1 216.0' spd 481.8 yaw 359 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 9.0 pos '1516.7 1396.7 232.0' spd 324.2 yaw -146.3 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 9.3 pos '1491.1 1292.5 200.0' spd 328.9 yaw 259.8 mode 2 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack coop_stats break 0 steal 0 block 0
ARGLOG player t 9.5 pos '1487.1 1524.0 264.0' spd 199.5 yaw -83.0 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 9.8 pos '1600.6 1164.1 179.5' spd 471.2 yaw 60.1 mode 2 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack hazard
ARGEVT Carmack swim
ARGLOG player t 10.0 pos '1478.7 1573.1 264.0' spd 0 yaw -83.0 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack route 21 start '1649.0 1121.0 80.0' goal '945.0 -639.0 440.0'
ARGLOG Carmack t 10.3 pos '1756.9 1201.0 118.2' spd 98.6 yaw 198 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 10.5 pos '1489.5 1506.5 264.0' spd 199.5 yaw -80.2 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 10.8 pos '1739.0 1174.4 121.4' spd 155.2 yaw 174.2 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 11.0 pos '1496.8 1463.1 264.0' spd 38.8 yaw -80.2 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 11.3 pos '1659.3 1188.8 120.7' spd 180.8 yaw 201 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 11.5 pos '1511.1 1379.3 230.3' spd 198.9 yaw -80.2 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 11.8 pos '1668.0 1188.1 119.9' spd 124.1 yaw 200 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 12.0 pos '1582.2 1280.9 200.0' spd 278.1 yaw -71.7 mode 0 st 0 gl 0 hp 100 frg 0
ARGLOG Carmack t 12.3 pos '1635.2 1126.4 137.3' spd 134.0 yaw 109 mode 2 st 0 gl 0 hp 100 frg 0
ARGLOG player t 12.5 pos '1633.4 1253.7 200.0' spd 0 yaw -83.0 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack swim
ARGLOG Carmack t 12.8 pos '1624.0 1136.0 147.4' spd 0 yaw 108 mode 2 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG player t 13.0 pos '1633.4 1253.7 200.0' spd 0 yaw -91.4 mode 0 st 0 gl 0 hp 100 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG Carmack t 13.3 pos '1629.3 1135.9 148.9' spd 40.5 yaw 85.3 mode 2 st 0 gl 0 hp 76 frg 0
ARGEVT Carmack swim
ARGEVT Carmack coop_stats break 0 steal 0 block 0
ARGEVT Carmack swim
ARGLOG player t 13.5 pos '1635.3 1300.1 200.0' spd 104.4 yaw -91.4 mode 0 st 0 gl 0 hp 76 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG Carmack t 13.8 pos '1640.5 1152.3 148.6' spd 57.5 yaw 87.6 mode 2 st 0 gl 0 hp 76 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG player t 14.0 pos '1635.6 1334.2 200.0' spd 27.6 yaw -90 mode 0 st 0 gl 0 hp 64 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG Carmack t 14.3 pos '1651.5 1181.1 149.1' spd 51.7 yaw 107.7 mode 2 st 0 gl 0 hp 76 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG player t 14.5 pos '1496.5 1349.2 200.0' spd 281.2 yaw -81.6 mode 0 st 0 gl 0 hp 64 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG Carmack t 14.8 pos '1672.8 1191.4 148.1' spd 62.0 yaw 131.0 mode 2 st 0 gl 0 hp 76 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG player t 15.1 pos '1496.1 1453.7 248.0' spd 199.6 yaw -77.3 mode 0 st 0 gl 0 hp 48 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG Carmack t 15.3 pos '1706.4 1184.6 149.1' spd 54.7 yaw 124.4 mode 2 st 0 gl 0 hp 76 frg 0
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGLOG player t 15.6 pos '1475.2 1602.2 272.0' spd 346.5 yaw -73.1 mode 0 st 0 gl 0 hp 24 frg 0
ARGEVT Carmack swim
ARGUS routecache adopt
ARGEVT Carmack route 21 start '1649.0 1121.0 80.0' goal '945.0 -639.0 440.0'
ARGEVT Carmack swim
ARGLOG Carmack t 15.8 pos '1734.9 1181.3 132.3' spd 38.3 yaw 118.8 mode 2 st 0 gl 0 hp 76 frg 0
ARGLOG player t 16.1 pos '1495.7 1673.6 288.0' spd 15.5 yaw -66.1 mode 0 st 0 gl 0 hp 24 frg 0
ARGEVT Carmack pursue
ARGUS Carmack hunch item_health
ARGUS routecache adopt
ARGEVT Carmack route 21 start '1649.0 1121.0 80.0' goal '945.0 -639.0 440.0'
ARGEVT Carmack pursue
ARGLOG Carmack t 16.3 pos '1749.3 1181.8 119.3' spd 47.6 yaw 283.7 mode 2 st 0 gl 0 hp 76 frg 0
ARGLOG player t 16.6 pos '1495.8 1674.0 288.0' spd 0 yaw -66.1 mode 0 st 0 gl 0 hp 24 frg 0
ARGLOG Carmack t 16.8 pos '1740.2 1124.1 118.5' spd 166.1 yaw 177.6 mode 2 st 0 gl 0 hp 76 frg 0
ARGLOG player t 17.1 pos '1495.8 1674.0 288.0' spd 0 yaw -66.1 mode 0 st 0 gl 0 hp 24 frg 0
ARGLOG Carmack t 17.4 pos '1663.5 1118.6 132.0' spd 174.1 yaw 108.2 mode 2 st 0 gl 0 hp 76 frg 0
ARGEVT Carmack coop_stats break 1.8 steal 0 block 0
ARGLOG player t 17.6 pos '1495.8 1674.0 288.0' spd 0 yaw -67.5 mode 0 st 0 gl 0 hp 24 frg 0
ARGEVT Carmack jump
ARGLOG Carmack t 17.9 pos '1613.0 1208.0 191.1' spd 71.3 yaw 103.8 mode 2 st 0 gl 0 hp 76 frg 0
ARGLOG player t 18.1 pos '1523.3 1720.0 278.4' spd 196.9 yaw -67.5 mode 0 st 0 gl 0 hp 4 frg 0
ARGEVT player death Carmack pos '1534.7 1720.0 272.0'
player chewed on Carmack's boomstick
Carmack: Fast inverse square root: calculated directly.
ARGEVT Carmack goal_push 6
ARGLOG Carmack t 18.4 pos '1573.4 1226.1 208.0' spd 171.2 yaw 73.7 mode 0 st 0 gl 0 hp 76 frg 1
ARGLOG Carmack t 18.9 pos '1608.0 1344.0 200.0' spd 130.1 yaw 73.7 mode 0 st 0 gl 0 hp 76 frg 1
ARGLOG Carmack t 19.4 pos '1651.1 1447.6 200.0' spd 257.2 yaw 199.0 mode 0 st 0 gl 0 hp 76 frg 1
ARGLOG Carmack t 19.9 pos '1704.9 1415.8 200.0' spd 259.7 yaw 214.5 mode 0 st 0 gl 0 hp 76 frg 1
ARGLOG Carmack t 20.4 pos '1587.7 1303.1 200.0' spd 320.4 yaw 214.5 mode 0 st 0 gl 0 hp 76 frg 1
ARGLOG Carmack t 20.9 pos '1457.9 1208.3 204.0' spd 320.0 yaw 214.5 mode 0 st 0 gl 0 hp 76 frg 1
ARGEVT Carmack swim
ARGLOG Carmack t 21.4 pos '1321.9 1113.4 147.5' spd 316.3 yaw 214.5 mode 0 st 0 gl 0 hp 76 frg 1
ARGEVT Carmack swim
ARGEVT Carmack swim
ARGEVT Carmack swim
Completed demo
Sending clc_disconnect
Shutting down SDL sound
45 changes: 40 additions & 5 deletions src/argus.qc
Original file line number Diff line number Diff line change
Expand Up @@ -2290,6 +2290,20 @@ void() Argus_Die =
self.takedamage = DAMAGE_NO;
};

// IN CO-OP EVERY PLAYER IS ON THE SAME SIDE. Monsters do not carry
// classname "player", so anything this returns TRUE for is a
// teammate, human or bot. The masquerade cuts both ways: it is what
// lets bots use the stock item and door code, and it is also why
// every "find a player" scan in here has to be told about allies.
float(entity e) Argus_IsAlly =
{
if (coop <= 0)
return FALSE;
if (e == world || e == self)
return FALSE;
return (e.classname == "player");
};

void(entity attacker, float dmg) Argus_Pain =
{
// flinch: tracking restarts, aim error widens for a moment
Expand All @@ -2301,8 +2315,15 @@ void(entity attacker, float dmg) Argus_Pain =
self.flags = self.flags - (self.flags & FL_ONGROUND);
// fight back if hit from behind by someone new: any live player,
// human or bot (world excluded: lava damage is not an attacker)
// ...but never against a team mate. Shane shot Carmack on e1m2,
// this branch made him the enemy, and Carmack shot him dead
// eighteen seconds into the session. Both took exactly 24 damage
// within a second of each other, which is what an exchange looks
// like. In co-op the only attacker that can reach this test IS a
// team mate, because monsters are not classname "player".
if (attacker.classname == "player" && attacker.health > 0
&& attacker != self && self.ar_enemy == world)
&& attacker != self && self.ar_enemy == world
&& !Argus_IsAlly (attacker))
{
self.ar_enemy = attacker;
self.ar_seen = time;
Expand Down Expand Up @@ -4144,11 +4165,25 @@ float() Argus_Combat =
self.v_angle = vectoangles (aimpt - (self.origin + '0 0 22'));
self.v_angle_x = 0 - self.v_angle_x; // QC pitch convention
self.v_angle_y = self.angles_y;
self.button0 = 1;
if (time > self.attack_finished)
// HOLD FIRE THROUGH A TEAM MATE. Not targeting them is not
// enough: the first e1m2 death was a bot with a monster for an
// enemy, firing at its last known position during the
// sight-loss hold while Shane crossed the line. Two shotgun
// hits, and the kill credited to Carmack. One trace along the
// shot we are about to take, and if a team mate is what it
// reaches, wait. Splash is not covered here: a rocket landing
// beside a team mate still hurts them.
traceline (self.origin + '0 0 22', aimpt, FALSE, self);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Trace the direction the weapon will actually fire

Trace along self.v_angle rather than directly toward aimpt. The preceding code overwrites self.v_angle_y with self.angles_y, and the trigger permits that yaw to differ from the desired aim by up to 12 degrees, while bot weapons such as W_FireShotgun fire using self.v_angle. During normal aim convergence, a teammate can therefore be directly in the actual firing line while this trace follows a different line and allows the shot, leaving the co-op team-kill regression unfixed.

Useful? React with 👍 / 👎.

if (Argus_IsAlly (trace_ent))
Comment on lines +4176 to +4177

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Badge Check the full shotgun spread before firing

Account for the weapon's firing envelope instead of checking only one center ray. FireBullets sends six or fourteen randomized traces with nonzero horizontal and vertical spread, extending 2048 units, so a teammate who is within the shotgun or super-shotgun pellet cone but not intersecting this exact ray—including one behind the intended target—can still be hit repeatedly and killed. This is especially relevant because the reported co-op death was caused by the bot's boomstick.

Useful? React with 👍 / 👎.

self.button0 = 0;
else
{
SuperDamageSound ();
W_Attack ();
self.button0 = 1;
if (time > self.attack_finished)
{
SuperDamageSound ();
W_Attack ();
}
}
}
else
Expand Down