Hi, I am posting this in the mod forum by request,
I got into a bit of an argument during a game with a player who said he goes by the name of “Emortal” here at SD, and is supposedly making a rather popular mod, of which he did not disclose the name. Anyway, he claims to be an expert C++ programmer as well. The argument was over the fact that, while in RtCW the MP40 and Thompson were indeed different, in ET they are utterly identical apart from sounds/skins/animations. Emortal requested that I post here, so while I don’t relish the idea of making anyone look stupid ;), I’ll comply with his request. Him being a C++ programmer, I trust a simple code paste will suffice to illustrate the truth:
Weapon damage data (as dictated by the server) from ET g_weapon.c lines 2777-2834. As you can see, the MP40 and Thompson are the same in this regard:
// JPW
// mechanism allows different weapon damage for single/multiplayer; we want "balanced" weapons
// in multiplayer but don't want to alter the existing single-player damage items that have already
// been changed
//
// KLUDGE/FIXME: also modded #defines below to become macros that call this fn for minimal impact elsewhere
//
int G_GetWeaponDamage( int weapon ) {
switch (weapon) {
default:
return 1;
case WP_KNIFE:
return 10;
case WP_STEN:
return 14;
case WP_CARBINE:
case WP_GARAND:
case WP_KAR98:
case WP_K43:
return 34;
case WP_FG42:
return 15;
case WP_LUGER:
case WP_SILENCER:
case WP_AKIMBO_LUGER:
case WP_AKIMBO_SILENCEDLUGER:
case WP_COLT:
case WP_SILENCED_COLT:
case WP_AKIMBO_COLT:
case WP_AKIMBO_SILENCEDCOLT:
case WP_THOMPSON:
case WP_MP40:
case WP_MOBILE_MG42:
case WP_MOBILE_MG42_SET:
return 18;
case WP_FG42SCOPE:
return 30;
case WP_GARAND_SCOPE:
case WP_K43_SCOPE:
return 50;
case WP_SMOKE_MARKER:
return 140; // just enough to kill somebody standing on it
case WP_MAPMORTAR:
case WP_GRENADE_LAUNCHER:
case WP_GRENADE_PINEAPPLE:
case WP_GPG40:
case WP_M7:
case WP_LANDMINE:
case WP_SATCHEL:
return 250;
case WP_TRIPMINE:
return 300;
case WP_PANZERFAUST:
case WP_MORTAR_SET:
case WP_DYNAMITE:
return 400;
}
}
Weapon spread data (as dictated by the server) from ET g_weapon.c lines 2837-2874. As you can see, the MP40 and Thompson are the same in this regard:
float G_GetWeaponSpread( int weapon ) {
switch (weapon) {
case WP_LUGER:
case WP_SILENCER:
case WP_AKIMBO_LUGER:
case WP_AKIMBO_SILENCEDLUGER:
return 600;
case WP_COLT:
case WP_SILENCED_COLT:
case WP_AKIMBO_COLT:
case WP_AKIMBO_SILENCEDCOLT:
return 600;
case WP_MP40:
case WP_THOMPSON:
return 400;
case WP_STEN:
return 200;
case WP_FG42SCOPE:
return 200;
case WP_FG42:
return 500;
case WP_GARAND:
case WP_CARBINE:
case WP_KAR98:
case WP_K43:
return 250;
case WP_GARAND_SCOPE:
case WP_K43_SCOPE:
return 700;
case WP_MOBILE_MG42:
case WP_MOBILE_MG42_SET:
return 2500;
}
G_Printf( "shouldn't ever get here (weapon %d)
", weapon );
// jpw
return 0; // shouldn't get here
}
Emortal told me several times to read the ET manual, which of course I have read every word of long ago and many times. There is an online copy of the manual at http://www.enemyterritory.org/Manual/Default.htm - show me the weapon data in there and I will sell you a bridge…
I did a board search (why Emortal did not find this, I don’t know) and found this nice chart made by Hydra: http://niels.nu/files/et-damage.html - this lays out the above data (and more) in a nice simple way.
Also, in ET there is of course the XP system which decreases weapon spread at higher levels. These improvements are also equal between the MP40 and Thompson, and can be easily found and verified. Another thing is the difference between head/body damage, as well as the effect of a helmet. Again, the MP40 and Thompson are the same.
In the RtCW source code, one can just as easily find that there are in fact differences between these two weapons in that game, however ET != RtCW.
Regards,
ouroboro
