Enemy Territory

Project: Bug Fix

The objective

The goal of this project is to provide modders in the ET community with a SDK code base that contains fixes for various bugs which are present in the stock etmain game (version 2.60).

26th september 2006: Sadly bugfix 088 had a bug :-( There were 3 lines that should have been deleted for the fix to work correctly.

Show index
Previous bug: Self headshot when proned
Next bug: Referee commands doesn't work in server console

Bugfix 004 - Rifle grenade through door exploit

Problem:

On Battery if you stand against the door as if you were shooting someone behind it. You can launch a rifle grenade through the door.

Solution:

Problem was that the code took the origin and ignored the first 32 gameunits of trajectory. This meant that the origin would go through the door if it was thin enough, and therefore not blocked by the door. The fix is to do two traces. One with our viewpoint as origin and to the origin of the second trace, and then the usual trace.

References:

Original fix

Notes:

The bug was fixed in version 2.60

2.56 Code

g_weapon.c @ 3231 vec3_t tosspos;
vec3_t orig_viewpos; // CHRUKER: b004 - Added bani's fix for shooting grenades through doors
AngleVectors(ent->client->ps.viewangles, forward, NULL, NULL); VectorCopy(muzzleEffect, tosspos); // check for valid start spot (so you don't throw through or get stuck in a wall) VectorCopy( ent->s.pos.trBase, viewpos ); viewpos[2] += ent->client->ps.viewheight;
VectorCopy( viewpos, orig_viewpos ); // CHRUKER: b004 - Added bani's fix for shooting grenades through doors
VectorMA( viewpos, 32, forward, viewpos); VectorScale(forward, 2000, forward);
// CHRUKER: b004 - Added bani's fix for shooting grenades through doors trap_Trace( &tr, orig_viewpos, tv( -4.f, -4.f, 0.f ), tv( 4.f, 4.f, 6.f ), viewpos, ent->s.number, MASK_MISSILESHOT ); if( tr.fraction < 1 ) { // oops, bad launch spot VectorCopy( tr.endpos, tosspos ); SnapVectorTowards( tosspos, orig_viewpos ); } else { // b004
trap_Trace( &tr, viewpos, tv(-4.f, -4.f, 0.f), tv(4.f, 4.f, 6.f), tosspos, ent->s.number, MASK_MISSILESHOT ); if( tr.fraction < 1 ) { // oops, bad launch spot VectorCopy(tr.endpos, tosspos); SnapVectorTowards( tosspos, viewpos ); }
} // b004
m = fire_grenade (ent, tosspos, forward, grenType);

Show index
Previous bug: Self headshot when proned
Next bug: Referee commands doesn't work in server console

Color coding

Sample = New code
Sample = Changed code (the new version is what is displayed)
Sample = Deleted code

©2017 Chruker