diff options
Diffstat (limited to 'src/game')
| -rw-r--r-- | src/game/g_admin.c | 2 | ||||
| -rw-r--r-- | src/game/g_combat.c | 39 | ||||
| -rw-r--r-- | src/game/g_csw.h | 54 | ||||
| -rw-r--r-- | src/game/g_local.h | 3 | ||||
| -rw-r--r-- | src/game/g_main.c | 9 | ||||
| -rw-r--r-- | src/game/g_weapon.c | 11 | ||||
| -rw-r--r-- | src/game/tremulous.h | 3 | 
7 files changed, 80 insertions, 41 deletions
diff --git a/src/game/g_admin.c b/src/game/g_admin.c index c407788..a6f5f78 100644 --- a/src/game/g_admin.c +++ b/src/game/g_admin.c @@ -4387,7 +4387,7 @@ qboolean G_admin_stats( gentity_t *ent )  	qboolean header = qfalse;  	const static char *cswNames[ ] =  	{ -#define CSW(a,b) b +#define CSW(a,b,c) b  #include "g_csw.h"  #undef CSW  	}; diff --git a/src/game/g_combat.c b/src/game/g_combat.c index 7713d2a..337ebf1 100644 --- a/src/game/g_combat.c +++ b/src/game/g_combat.c @@ -1138,6 +1138,7 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker,           vec3_t dir, vec3_t point, int damage, int dflags, int mod )  {    gclient_t *client; +  int     damage_orig = damage;    int     take;    int     asave = 0;    int     knockback; @@ -1432,7 +1433,14 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker,  	targ->credits[ attacker->client->ps.clientNum ] += take;    } -  G_CombatStats_HitMOD( attacker, targ, mod, take ); +  // special cases... +  if( mod == MOD_LEVEL2_CLAW && damage_orig == LEVEL2_CLAW_UPG_DMG ) +    G_CombatStats_Hit( attacker, targ, CSW_LEVEL2_UPG, take ); +  else if( ( mod == MOD_LCANNON || mod == MOD_LCANNON_SPLASH ) && +           inflictor->s.generic1 == WPM_SECONDARY ) +    G_CombatStats_Hit( attacker, targ, CSW_LCANNON_ALT, take ); +  else +  	G_CombatStats_HitMOD( attacker, targ, mod, take );    if( targ->health <= 0 )    { @@ -1782,7 +1790,7 @@ const static combatStatsWeapon_t modToCsw[ ] =  const static char *cswStrings[ ] =  { -#define CSW(a,b) #a +#define CSW(a,b,c) #a  #include "g_csw.h"  #undef CSW  }; @@ -1970,6 +1978,33 @@ void G_CalculateCombatRanks( void )  /*  ================ +G_LogCombatSettings + +Log settings of all combat stats weapons +================ +*/ +void G_LogCombatSettings( void ) +{ +	int i; +	char buffer[ 4096 ], *p = buffer; +	static const int cswDamages[ ] = +	{ +#define CSW(a,b,c) (c) +#include "g_csw.h" +#undef CSW +	}; + +	for( i = 0; i < CSW_MAX; i++ ) +	{ +		Com_sprintf( p, 4096 - ( p - buffer ), " %s %i", cswStrings[ i ], cswDamages[ i ] ); +		while( *p ) p++; +	} + +	G_LogPrintf( "CombatSettings:%s\n", buffer ); +} + +/* +================  G_LogCombatStats  Write combat stats of a player to the game log diff --git a/src/game/g_csw.h b/src/game/g_csw.h index 4f3cdf2..e37313b 100644 --- a/src/game/g_csw.h +++ b/src/game/g_csw.h @@ -1,30 +1,32 @@ -CSW( CSW_UNKNOWN, NULL ), +CSW( CSW_UNKNOWN, NULL, 0 ), -CSW( CSW_BLASTER,       "Blaster" ), -CSW( CSW_MACHINEGUN,    "Rifle" ), -CSW( CSW_PAINSAW,       "Pain Saw" ), -CSW( CSW_PAINSAW_ALT,   "Pain Saw Blade" ), -CSW( CSW_SHOTGUN,       "Shotgun" ), -CSW( CSW_LASGUN,        "Las Gun" ), -CSW( CSW_MDRIVER,       "Mass Driver" ), -CSW( CSW_CHAINGUN,      "Chaingun" ), -CSW( CSW_PRIFLE,        "Pulse Rifle" ), -CSW( CSW_FLAMER,        "Flame Thrower" ), -CSW( CSW_LIGHTNING,     "Lightning Gun" ), -CSW( CSW_LCANNON,       "Lucifer Cannon" ), -CSW( CSW_ROCKETL,       "Rocket Launcher" ), -CSW( CSW_GRENADE,       "Grenade" ), +CSW( CSW_BLASTER,       "Blaster",         BLASTER_DMG ), +CSW( CSW_MACHINEGUN,    "Rifle",           RIFLE_DMG ), +CSW( CSW_PAINSAW,       "Pain Saw",        PAINSAW_DAMAGE ), +CSW( CSW_PAINSAW_ALT,   "Pain Saw Blade",  PAINSAW_DAMAGE2 ), +CSW( CSW_SHOTGUN,       "Shotgun",         SHOTGUN_DMG * SHOTGUN_PELLETS ), +CSW( CSW_LASGUN,        "Las Gun",         LASGUN_DAMAGE ), +CSW( CSW_MDRIVER,       "Mass Driver",     MDRIVER_DMG ), +CSW( CSW_CHAINGUN,      "Chaingun",        CHAINGUN_DMG ), +CSW( CSW_PRIFLE,        "Pulse Rifle",     PRIFLE_DMG ), +CSW( CSW_FLAMER,        "Flame Thrower",   FLAMER_DMG ), +CSW( CSW_LIGHTNING,     "Lightning Gun",   LIGHTNING_DAMAGE ), +CSW( CSW_LCANNON,       "Lucifer Cannon",  LCANNON_DAMAGE ), +CSW( CSW_LCANNON_ALT,   "Lucifer Alt.",    LCANNON_SECONDARY_DAMAGE ), +CSW( CSW_ROCKETL,       "Rocket Launcher", ROCKETL_DAMAGE ), +CSW( CSW_GRENADE,       "Grenade",         GRENADE_DAMAGE ), -CSW( CSW_ABUILDER,      "Granger" ), -CSW( CSW_ABUILDER_ALT,  "Granger Spit" ), -CSW( CSW_LEVEL1,        "Basilisk" ), -CSW( CSW_LEVEL2,        "Marauder" ), -CSW( CSW_LEVEL2_ALT,    "Marauder Zap" ), -CSW( CSW_LEVEL3,        "Dragoon" ), -CSW( CSW_LEVEL3_ALT,    "Dragoon Barb" ), -CSW( CSW_LEVEL4,        "Tyrant" ), -CSW( CSW_LEVEL4_ALT,    "Tyrant Flames" ), -CSW( CSW_LEVEL5,        "Hummel" ), -CSW( CSW_LEVEL5_ALT,    "Hummel Prickles" ) +CSW( CSW_ABUILDER,      "Granger",         ABUILDER_CLAW_DMG ), +CSW( CSW_ABUILDER_ALT,  "Granger Spit",    ABUILDER_BLOB_DMG ), +CSW( CSW_LEVEL1,        "Basilisk",        LEVEL1_CLAW_DMG ), +CSW( CSW_LEVEL2,        "Marauder",        LEVEL2_CLAW_DMG ), +CSW( CSW_LEVEL2_UPG,    "Adv. Marauder",   LEVEL2_CLAW_UPG_DMG ), +CSW( CSW_LEVEL2_ALT,    "Marauder Zap",    LEVEL2_AREAZAP_DMG ), +CSW( CSW_LEVEL3,        "Dragoon",         LEVEL3_CLAW_DMG ), +CSW( CSW_LEVEL3_ALT,    "Dragoon Barb",    LEVEL3_BOUNCEBALL_DMG ), +CSW( CSW_LEVEL4,        "Tyrant",          LEVEL4_CLAW_DMG ), +CSW( CSW_LEVEL4_ALT,    "Tyrant Flames",   50 ), +CSW( CSW_LEVEL5,        "Hummel",          LEVEL5_CLAW_DMG ), +CSW( CSW_LEVEL5_ALT,    "Hummel Prickles", LEVEL5_PRICKLES_DMG )  #define CSW_MAX_NAME_LEN 15 diff --git a/src/game/g_local.h b/src/game/g_local.h index a98d818..18ff14b 100644 --- a/src/game/g_local.h +++ b/src/game/g_local.h @@ -320,7 +320,7 @@ typedef enum  typedef enum  { -#define CSW(a,b) a +#define CSW(a,b,c) a  #include "g_csw.h"  #undef CSW    , @@ -984,6 +984,7 @@ void      G_InitDamageLocations( void );  #define DAMAGE_NO_PROTECTION  0x00000008  // armor, shields, invulnerability, and godmode have no effect  #define DAMAGE_NO_LOCDAMAGE   0x00000010  // do not apply locational damage +void G_LogCombatSettings( void );  void G_CombatStats_Fire( gentity_t *ent, combatStatsWeapon_t weapon, int damage );  void G_CombatStats_FireMOD( gentity_t *ent, meansOfDeath_t mod, int damage );  void G_CombatStats_Hit( gentity_t *ent, gentity_t *hit, combatStatsWeapon_t weapon, int damage ); diff --git a/src/game/g_main.c b/src/game/g_main.c index f31e7ec..28dfb33 100644 --- a/src/game/g_main.c +++ b/src/game/g_main.c @@ -206,9 +206,6 @@ vmCvar_t  g_DretchBuildingDamage;  vmCvar_t  g_OwnTeamBPFactor;  vmCvar_t  g_EnemyTeamBPFactor; -vmCvar_t  g_lightningDamage; -vmCvar_t  g_lightningDifficulty; -  // copy cvars that can be set in worldspawn so they can be restored later  static char cv_gravity[ MAX_CVAR_VALUE_STRING ];  static char cv_humanMaxStage[ MAX_CVAR_VALUE_STRING ]; @@ -379,10 +376,7 @@ static cvarTable_t   gameCvarTable[ ] =    { &g_DretchTurretDamage, "g_DretchTurretDamage", "1", CVAR_ARCHIVE, 0, qfalse },    { &g_DretchBuildingDamage, "g_DretchBuildingDamage", "0.5", CVAR_ARCHIVE, 0, qfalse },    { &g_OwnTeamBPFactor, "g_OwnTeamBPFactor", "1.0", CVAR_ARCHIVE, 0, qfalse }, -  { &g_EnemyTeamBPFactor, "g_EnemyTeamBPFactor", "0.0", CVAR_ARCHIVE, 0, qfalse }, - -  { &g_lightningDamage, "g_lightningDamage", "140", 0, 0, qfalse }, -  { &g_lightningDifficulty, "g_lightningDifficulty", "1", 0, 0, qfalse } +  { &g_EnemyTeamBPFactor, "g_EnemyTeamBPFactor", "0.0", CVAR_ARCHIVE, 0, qfalse }  };  static int gameCvarTableSize = sizeof( gameCvarTable ) / sizeof( gameCvarTable[ 0 ] );  void G_InitGame( int levelTime, int randomSeed, int restart ); @@ -749,6 +743,7 @@ void G_InitGame( int levelTime, int randomSeed, int restart )    level.weakSuddenDeathBeginTime = g_weakSuddenDeathTime.integer * 60000;    level.nextArmageddonKillTime = (g_suddenDeathTime.integer+g_armageddonInitialTimeStep.integer) * 60000;    level.nextCommandTime = g_TimerPeriod.integer; +  G_LogCombatSettings( );    G_Printf( "-----------------------------------\n" );    G_Printf( "EDGE LOADED SUCCESSFULLY\n" );    // So the server counts the spawns without a client attached diff --git a/src/game/g_weapon.c b/src/game/g_weapon.c index 2a87754..357847a 100644 --- a/src/game/g_weapon.c +++ b/src/game/g_weapon.c @@ -300,7 +300,10 @@ void meleeAttack( gentity_t *ent, float range, float width, float height,    trace_t   tr;    gentity_t *traceEnt; -  G_CombatStats_FireMOD( ent, mod, damage ); +  if( mod == MOD_LEVEL2_CLAW && damage == LEVEL2_CLAW_UPG_DMG ) +    G_CombatStats_Fire( ent, CSW_LEVEL2_UPG, damage ); +  else +    G_CombatStats_FireMOD( ent, mod, damage );    G_WideTrace( &tr, ent, range, width, height, &traceEnt );    if( traceEnt == NULL || !traceEnt->takedamage ) @@ -817,7 +820,7 @@ void LCChargeFire( gentity_t *ent, qboolean secondary )  {    if( secondary && ent->client->ps.stats[ STAT_MISC ] <= 0 )    { -    G_CombatStats_Fire( ent, CSW_LCANNON, LCANNON_SECONDARY_DAMAGE ); +    G_CombatStats_Fire( ent, CSW_LCANNON_ALT, LCANNON_SECONDARY_DAMAGE );      fire_luciferCannon( ent, muzzle, forward, LCANNON_SECONDARY_DAMAGE,                              LCANNON_SECONDARY_RADIUS, LCANNON_SECONDARY_SPEED );    } @@ -887,7 +890,7 @@ float G_LightningAccuracy( const vec3_t ws_origin, const vec3_t ws_dir,  	if( chord <= 0.0f )  		return 0.0f; -	chord = pow( chord, g_lightningDifficulty.value * 0.5f ); +	chord = pow( chord, LIGHTNING_DIFFICULTY * 0.5f );  	return chord;  } @@ -900,7 +903,7 @@ void lightningGunFire( gentity_t *ent )  	gentity_t *target;  	int damage; -	damage = g_lightningDamage.value / ( 1000.0f / LIGHTNING_REPEAT ); +	damage = LIGHTNING_DAMAGE;  	G_CombatStats_Fire( ent, CSW_LIGHTNING, damage );  	VectorMA( muzzle, LIGHTNING_RANGE, forward, end ); diff --git a/src/game/tremulous.h b/src/game/tremulous.h index b3b9b92..9e925c3 100644 --- a/src/game/tremulous.h +++ b/src/game/tremulous.h @@ -517,7 +517,10 @@ TREMULOUS EDGE MOD SRC FILE  #define LIGHTNING_PRICE             500  #define LIGHTNING_AMMO              300  #define LIGHTNING_K_SCALE           1 +#define LIGHTNING_DPS               140 +#define LIGHTNING_DIFFICULTY        2  #define LIGHTNING_REPEAT            50 // keep it as low as possible +#define LIGHTNING_DAMAGE            ( LIGHTNING_DPS * LIGHTNING_REPEAT / 1000 )  #define LIGHTNING_RANGE             450  #define LCANNON_PRICE               600  | 
