Skip to content

Commit

Permalink
Japro update (#204)
Browse files Browse the repository at this point in the history
* Update Defrag Mapping Guide.md

(cherry picked from commit 19f2be1)

* print fix, dash restrict fix

(cherry picked from commit b49be2a)

* tribes weapon tweaks

(cherry picked from commit 9eca1f8)

* forcepush teammate tribes = bubble

(cherry picked from commit b9ea477)

* not for flag holdrz

(cherry picked from commit 35623dd)

---------

Co-authored-by: videoP <videoprofess@gmail.com>
  • Loading branch information
taysta and videoP authored May 24, 2024
1 parent 7bf6b93 commit 8188f06
Show file tree
Hide file tree
Showing 7 changed files with 323 additions and 227 deletions.
18 changes: 14 additions & 4 deletions codemp/game/g_combat.c
Original file line number Diff line number Diff line change
Expand Up @@ -4700,6 +4700,8 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, vec3_
}
else if (attacker && targ->client->ps.duelInProgress && (attacker->s.number == targ->client->ps.duelIndex)) {
}
else if (g_tweakWeapons.integer & WT_TRIBES) {
}
else {
if (targ->client->ps.electrifyTime < level.time)
{//electrocution effect
Expand Down Expand Up @@ -4966,7 +4968,7 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, vec3_
}
}

if ((mod == MOD_DISRUPTOR || mod == MOD_DISRUPTOR_SNIPER) && targ && targ->client && !(targ->client->ps.fd.forcePowersActive & (1 << FP_PROTECT)) && !(g_tweakWeapons.integer & WT_PROJ_SNIPER) && (g_tweakWeapons.integer & WT_TRIBES))
if ((mod == MOD_DISRUPTOR || mod == MOD_DISRUPTOR_SNIPER) && targ && targ->client && /*!(targ->client->ps.fd.forcePowersActive & (1 << FP_PROTECT)) &&*/ !(g_tweakWeapons.integer & WT_PROJ_SNIPER) && (g_tweakWeapons.integer & WT_TRIBES))
{
float cut;
if (g_tribesMode.integer)
Expand All @@ -4978,12 +4980,20 @@ void G_Damage( gentity_t *targ, gentity_t *inflictor, gentity_t *attacker, vec3_
cut = 1;
else if (cut < 0)
cut = 0;
targ->client->ps.fd.forcePower -= damage * 1.25f;;
if (targ->client->ps.fd.forcePower < 0)
targ->client->ps.fd.forcePower = 0;
targ->client->ps.fd.forcePower += damage * 0.5f;
if (targ->client->ps.fd.forcePower > 100)
targ->client->ps.fd.forcePower = 100;
VectorScale(targ->client->ps.velocity, cut, targ->client->ps.velocity);
}

if (targ->client->ps.electrifyTime > level.time && (g_tweakWeapons.integer & WT_TRIBES)) {
damage *= 1.5f;
}

if ((mod == MOD_DISRUPTOR || mod == MOD_DISRUPTOR_SNIPER) && (g_tweakWeapons.integer & WT_TRIBES)) { //Zenyatta expose shit
targ->client->ps.electrifyTime = level.time + 4000;
}

//JAPRO - check for same frame dmg fix here?
//Melee, or saber, or hitscan. If attackers health is below 0, and attackers attacker is our target.. (:S), and attackers health is lower than targets, forget the dmg.
//just ignore who the attackers attacker was i guess. dont think ive ever seen a same-frame kill involving 3 people
Expand Down
1 change: 1 addition & 0 deletions codemp/game/g_local.h
Original file line number Diff line number Diff line change
Expand Up @@ -1085,6 +1085,7 @@ struct gclient_s {
int jetPackDebRecharge;
int jetPackDebReduce;
int overheatDebReduce;
int overheatRechargeDebReduce;
int passiveHealthDebReduce;

int cloakToggleTime;
Expand Down
63 changes: 41 additions & 22 deletions codemp/game/g_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -2071,8 +2071,8 @@ const char *int_to_string(int i, char *buf, size_t bufSize) {
void PrintStats(int client) {
int i, j = 0;
char msg[1024-128] = {0}, numbuf[16] = {0};
char lKills[32], lDeaths[32], lNet[32], lDmgGiven[32], lDmgTaken[32], lDmgNet[32], lDmgPerDeath[32], lTK[32], lCaptures[32], lReturns[32], lFragCarrier[32], lAccuracy[32], lTE[32], lTH[32], lDrain[32], lName[MAX_NETNAME], whitespace[32];
qboolean showAccuracy = qtrue, showTeamPowers = qtrue, showDrain = qtrue;
char lScore[32], lTime[32], lKills[32], lDeaths[32], lNet[32], lDmgGiven[32], lDmgTaken[32], lDmgNet[32], lDmgPerDeath[32], lTK[32], lCaptures[32], lReturns[32], lFragCarrier[32], lAccuracy[32], lTE[32], lTH[32], lDrain[32], lName[MAX_NETNAME], whitespace[32];
qboolean showAccuracy = qtrue, showTeamPowers = qtrue, showDrain = qtrue, showNet = qtrue;
gclient_t *cl;

//if (gametype != GT_CTF && gametype != GT_TEAM && !g_gunGame.integer)
Expand All @@ -2083,17 +2083,23 @@ void PrintStats(int client) {
showTeamPowers = qfalse;
if ((((g_forcePowerDisable.integer & (1<<FP_DRAIN)) || !g_friendlyFire.value)) || g_gunGame.integer) //Team Drain is disabled
showDrain = qfalse;
if (level.gametype == GT_CTF || level.gametype == GT_CTF) //Don't show unneeded frag stats in objective gametype
showNet = qfalse;

Q_strncpyz(msg, "\n"S_COLOR_CYAN, sizeof(msg));

Q_strncpyz(whitespace, " ", sizeof(whitespace));
Q_strncpyz(lScore, va("Score%s", whitespace), sizeof(lScore));
Q_strncpyz(lKills, va("Kills%s", whitespace), sizeof(lKills));
Q_strncpyz(lDeaths, va("Deaths%s", whitespace), sizeof(lDeaths));
Q_strncpyz(lNet, va("Net%s", whitespace), sizeof(lNet));
if (showNet)
Q_strncpyz(lNet, va("Net%s", whitespace), sizeof(lNet));
Q_strncpyz(lDmgGiven, va("Dmg Given%s", whitespace), sizeof(lDmgGiven));
Q_strncpyz(lDmgTaken, va("Dmg Taken%s", whitespace), sizeof(lDmgTaken));
Q_strncpyz(lDmgNet, va("Net Dmg%s", whitespace), sizeof(lDmgNet));
Q_strncpyz(lDmgPerDeath, va("Dmg/Death%s", whitespace), sizeof(lDmgPerDeath));
if (showNet) {
Q_strncpyz(lDmgNet, va("Net Dmg%s", whitespace), sizeof(lDmgNet));
Q_strncpyz(lDmgPerDeath, va("Dmg/Death%s", whitespace), sizeof(lDmgPerDeath));
}
if (level.gametype == GT_TEAM && g_friendlyFire.value)
Q_strncpyz(lTK, va("Team Dmg%s", whitespace), sizeof(lTK)); //Should be just "Team Dmg"
if (level.gametype == GT_CTF || level.gametype == GT_CTY) {
Expand All @@ -2110,15 +2116,20 @@ void PrintStats(int client) {
if (showDrain) {
Q_strncpyz(lDrain, va("Drain Acc%s", whitespace), sizeof(lDrain));
}
Q_strncpyz(lTime, va("Time%s", whitespace), sizeof(lTime));
Q_strncpyz(lName, va("Name%s\n", whitespace), sizeof(lName));

Q_strcat(msg, sizeof(msg), lScore);
Q_strcat(msg, sizeof(msg), lKills);
Q_strcat(msg, sizeof(msg), lDeaths);
Q_strcat(msg, sizeof(msg), lNet);
if (showNet)
Q_strcat(msg, sizeof(msg), lNet);
Q_strcat(msg, sizeof(msg), lDmgGiven);
Q_strcat(msg, sizeof(msg), lDmgTaken);
Q_strcat(msg, sizeof(msg), lDmgNet);
Q_strcat(msg, sizeof(msg), lDmgPerDeath);
if (showNet) {
Q_strcat(msg, sizeof(msg), lDmgNet);
Q_strcat(msg, sizeof(msg), lDmgPerDeath);
}
if (level.gametype == GT_TEAM && g_friendlyFire.value)
Q_strcat (msg, sizeof(msg), lTK);
if (level.gametype == GT_CTF || level.gametype == GT_CTY) {
Expand All @@ -2135,6 +2146,7 @@ void PrintStats(int client) {
if (showDrain) {
Q_strcat(msg, sizeof(msg), lDrain);
}
Q_strcat(msg, sizeof(msg), lTime);
Q_strcat(msg, sizeof(msg), lName);

//Conditional label shit here:
Expand All @@ -2157,32 +2169,38 @@ void PrintStats(int client) {
float accuracy = 0, dmgPerDeath = cl->pers.stats.damageGiven, drainRatio = 0;

j++;
if (j%2)
if (j % 2)
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), S_COLOR_YELLOW);
else
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), S_COLOR_GREEN);

if(showAccuracy && cl->accuracy_shots)
if (showAccuracy && cl->accuracy_shots)
accuracy = 100.0f * (float)cl->accuracy_hits / (float)cl->accuracy_shots;
if (cl->ps.persistant[PERS_KILLED])
dmgPerDeath = cl->pers.stats.damageGiven / cl->ps.persistant[PERS_KILLED];
if (cl->pers.stats.enemyDrainDamage + cl->pers.stats.teamDrainDamage)
drainRatio = 100.0f * (float)cl->pers.stats.enemyDrainDamage / (float)(cl->pers.stats.enemyDrainDamage + cl->pers.stats.teamDrainDamage);

Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lKills), int_to_string((level.gametype == GT_CTF) ? cl->pers.stats.kills : cl->ps.persistant[PERS_SCORE] + cl->pers.stats.teamKills + cl->ps.fd.suicides, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDeaths), int_to_string((level.gametype == GT_CTF) ? cl->ps.persistant[PERS_KILLED] - cl->ps.fd.suicides : cl->ps.persistant[PERS_KILLED], numbuf, sizeof(numbuf)));
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lScore), int_to_string(cl->ps.persistant[PERS_SCORE], numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lNet), int_to_string((level.gametype == GT_CTF) ? cl->pers.stats.kills - cl->ps.persistant[PERS_KILLED] + cl->ps.fd.suicides :cl->ps.persistant[PERS_SCORE] + cl->pers.stats.teamKills + cl->ps.fd.suicides - cl->ps.persistant[PERS_KILLED], numbuf, sizeof(numbuf)));
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lKills), int_to_string((level.gametype == GT_CTF) ? cl->pers.stats.kills : cl->ps.persistant[PERS_SCORE] + cl->pers.stats.teamKills + cl->ps.fd.suicides, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDmgGiven), int_to_string(cl->pers.stats.damageGiven, numbuf, sizeof(numbuf)));
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDeaths), int_to_string((level.gametype == GT_CTF) ? cl->ps.persistant[PERS_KILLED] - cl->ps.fd.suicides : cl->ps.persistant[PERS_KILLED], numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDmgTaken), int_to_string(cl->pers.stats.damageTaken, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDmgNet), int_to_string(cl->pers.stats.damageGiven - cl->pers.stats.damageTaken - cl->pers.stats.teamDamageGiven, numbuf, sizeof(numbuf)));
if (showNet) {
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lNet), int_to_string((level.gametype == GT_CTF) ? cl->pers.stats.kills - cl->ps.persistant[PERS_KILLED] + cl->ps.fd.suicides : cl->ps.persistant[PERS_SCORE] + cl->pers.stats.teamKills + cl->ps.fd.suicides - cl->ps.persistant[PERS_KILLED], numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
}
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDmgGiven), int_to_string(cl->pers.stats.damageGiven, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDmgPerDeath), int_to_string(dmgPerDeath, numbuf, sizeof(numbuf)));
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDmgTaken), int_to_string(cl->pers.stats.damageTaken, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
if (showNet) {
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDmgNet), int_to_string(cl->pers.stats.damageGiven - cl->pers.stats.damageTaken - cl->pers.stats.teamDamageGiven, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDmgPerDeath), int_to_string(dmgPerDeath, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
}
if (level.gametype == GT_TEAM && g_friendlyFire.value) {
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lTK), int_to_string(cl->pers.stats.teamDamageGiven, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Expand All @@ -2194,7 +2212,6 @@ void PrintStats(int client) {
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lFragCarrier), int_to_string(cl->pers.teamState.fragcarrier, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);

}
if (showAccuracy) {
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lAccuracy), int_to_string(accuracy, numbuf, sizeof(numbuf)));
Expand All @@ -2210,6 +2227,8 @@ void PrintStats(int client) {
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lDrain), int_to_string(drainRatio, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
}
Com_sprintf(partialTmpMsg2, sizeof(partialTmpMsg2), "%-*s", strlen(lTime), int_to_string((level.time - cl->pers.enterTime)/60000, numbuf, sizeof(numbuf)));
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Com_sprintf (partialTmpMsg2, sizeof(partialTmpMsg2), "^7%-*s", strlen(lName), cl->pers.netname);
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), partialTmpMsg2);
Q_strcat(partialTmpMsg, sizeof(partialTmpMsg), "\n");
Expand Down Expand Up @@ -4079,7 +4098,7 @@ void G_RunFrame( int levelTime ) {
}
}

if (ent->client->overheatDebReduce < level.time) //Always refill overheat
if (ent->client->overheatRechargeDebReduce < level.time) //Always refill overheat
{
if (ent->client->ps.jetpackFuel < 100) {
float recharge = VectorLength(ent->client->ps.velocity) / (ent->client->ps.speed);
Expand All @@ -4090,7 +4109,7 @@ void G_RunFrame( int levelTime ) {
if (ent->client->ps.jetpackFuel > 100)
ent->client->ps.jetpackFuel = 100;

ent->client->overheatDebReduce = level.time + 200;
ent->client->overheatRechargeDebReduce = level.time + 200;
}
}
else if (ent->client->sess.raceMode || g_tweakJetpack.integer) {//Tweaked jetpack
Expand Down
2 changes: 1 addition & 1 deletion codemp/game/g_trigger.c
Original file line number Diff line number Diff line change
Expand Up @@ -2207,7 +2207,7 @@ void NewPush(gentity_t *trigger, gentity_t *player, trace_t *trace) {//JAPRO Tim
}
return;
}
if ((trigger->spawnflags & 64) && (player->client->ps.velocity[0] || player->client->ps.velocity[1])) { //block dash redirects
if ((trigger->spawnflags & 64) && sqrt(player->client->ps.velocity[0]*player->client->ps.velocity[0] + player->client->ps.velocity[1]*player->client->ps.velocity[1]) > player->client->ps.basespeed * (1.9f/1.28f)) { //block dash redirects
player->client->ps.stats[STAT_WJTIME] = 500;
player->client->ps.stats[STAT_DASHTIME] = 500;
}
Expand Down
79 changes: 66 additions & 13 deletions codemp/game/g_weapon.c
Original file line number Diff line number Diff line change
Expand Up @@ -271,7 +271,7 @@ static void WP_FireBryarPistol( gentity_t *ent, qboolean altFire, int seed )
charge = 400;
vel = 10440 * g_projectileVelocityScale.value;
if (ent->client->ps.jetpackFuel > 0)
ent->client->ps.jetpackFuel -= 8;
ent->client->ps.jetpackFuel -= 10;
if (ent->client->ps.jetpackFuel < 0)
ent->client->ps.jetpackFuel = 0;
ent->client->overheatDebReduce = level.time + 200;
Expand Down Expand Up @@ -608,8 +608,12 @@ static void WP_FireBlaster( gentity_t *ent, qboolean altFire, int seed )
vectoangles( forward, angs );

if (ent && ent->client && g_tweakWeapons.integer & WT_TRIBES) { //Chaingun Overheat mechanic
if (ent->client->ps.jetpackFuel > 0)
ent->client->ps.jetpackFuel -= 8;
if (ent->client->ps.jetpackFuel > 0) {
if (altFire)
ent->client->ps.jetpackFuel -= 12;
else
ent->client->ps.jetpackFuel -= 8;
}
if (ent->client->ps.jetpackFuel < 0)
ent->client->ps.jetpackFuel = 0;
ent->client->overheatDebReduce = level.time + 200;
Expand Down Expand Up @@ -941,16 +945,14 @@ void WP_DisruptorAltFire(gentity_t *ent)
maxCount = 200;//the previous line ALWAYS evaluated to 135 - was that on purpose?
}
//[JAPRO - Serverside - Weapons - Tweak weapons Nerf Sniper Max Scope Dmg - Start]
if (g_tweakWeapons.integer & WT_DISRUPTOR_DAM)
{
maxCount = 40;
}
if (g_tweakWeapons.integer & WT_TRIBES) {
damage = 15 * g_weaponDamageScale.value;//30
maxCount = 30;
maxCount = 50;
}
else if (g_tweakWeapons.integer & WT_DISRUPTOR_DAM)
else if (g_tweakWeapons.integer & WT_DISRUPTOR_DAM) {
damage = DISRUPTOR_ALT_DAMAGE - 40;//60
maxCount = 40;
}
else
damage = DISRUPTOR_ALT_DAMAGE - 30;//70
//[JAPRO - Serverside - Weapons - Tweak weapons Nerf Sniper Max Scope Dmg - End]
Expand Down Expand Up @@ -1809,8 +1811,7 @@ void DEMP2_AltRadiusDamage( gentity_t *ent )
if (gent != myOwner)
{
G_Damage( gent, myOwner, myOwner, dir, ent->r.currentOrigin, ent->damage, DAMAGE_DEATH_KNOCKBACK, ent->splashMethodOfDeath );
if ( gent->takedamage
&& gent->client )
if ( gent->takedamage && gent->client && !(g_tweakWeapons.integer & WT_TRIBES))
{
if ( gent->client->ps.electrifyTime < level.time )
{//electrocution effect
Expand Down Expand Up @@ -4495,6 +4496,54 @@ void WP_DropDetPack( gentity_t *ent, qboolean alt_fire )
}
}

void WP_FireSpinfusorAlt(gentity_t* ent)
{
gentity_t* missile;
int damage;
float vel = 32000;


VectorMA(muzzle, -6, vright, muzzle);//temp fix but we should rewrite calcmuzzlepoint since this actually affects all weapons but is only really noticible with sniper
VectorMA(muzzle, 6, up, muzzle);

missile = CreateMissileNew(muzzle, forward, vel * g_projectileVelocityScale.value, 10000, ent, qtrue, qtrue, qtrue);


if (ent->client) {
damage = ent->client->ps.fd.forcePower * 0.5f * g_weaponDamageScale.value;
ent->client->jetPackDebReduce = level.time + 300;
if (damage < 10)
damage = 10;
ent->client->ps.fd.forcePower = 0;
}
else {
damage = 30 * g_weaponDamageScale.value;
}
missile->s.generic1 = damage; // The missile will then render according to the charge level.

if (!d_projectileGhoul2Collision.integer) {
VectorSet(missile->r.maxs, 2, 2, 2); //constant hitbox
VectorSet(missile->r.mins, -2, -2, -2);
}

missile->classname = "bryar_proj";
missile->s.weapon = WP_BRYAR_PISTOL;

//VectorSet( missile->r.maxs, BOWCASTER_SIZE, BOWCASTER_SIZE, BOWCASTER_SIZE );
//VectorScale( missile->r.maxs, -1, missile->r.mins );

missile->damage = damage;
missile->dflags = DAMAGE_DEATH_KNOCKBACK;
missile->methodOfDeath = MOD_BLASTER;
missile->clipmask = MASK_SHOT;// | CONTENTS_LIGHTSABER;

//missile->flags |= FL_BOUNCE;
missile->bounceCount = 8;//was 3

if (g_tweakWeapons.integer & WT_PROJECTILE_GRAVITY) //JAPRO - Serverside - Give bullets gravity!
missile->s.pos.trType = TR_GRAVITY;
}

static void WP_FireConcussionAlt( gentity_t *ent )
{//a rail-gun-like beam
int damage = CONC_ALT_DAMAGE, skip, traces = DISRUPTOR_ALT_TRACES;
Expand Down Expand Up @@ -6435,8 +6484,12 @@ void FireWeapon( gentity_t *ent, qboolean altFire ) {
break;

case WP_CONCUSSION:
if ( altFire )
WP_FireConcussionAlt( ent );
if (altFire) {
if (g_tweakWeapons.integer & WT_TRIBES)
WP_FireSpinfusorAlt(ent);
else
WP_FireConcussionAlt(ent);
}
else
WP_FireConcussion( ent );
break;
Expand Down
Loading

0 comments on commit 8188f06

Please sign in to comment.