Skip to content

Commit

Permalink
Finally decided to add the GH to Weapon Arena. (#338)
Browse files Browse the repository at this point in the history
  • Loading branch information
NeonKnightOA committed Apr 6, 2024
1 parent da0ee46 commit 81660f9
Show file tree
Hide file tree
Showing 4 changed files with 32 additions and 44 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -190,6 +190,7 @@

**Release date:** April 7, 2024

* Added Grappling Hook to Weapon Arena. If selected, players start with both the Gauntlet and the Grappling Hook.
* Fixed: The values of `cg_obituaryOutput` and `cg_weaponBarStyle` weren't properly loaded in Classic UI's HUD menu.
* Fixed: Team Deathmatch wasn't accounted as a team-based gametype.
* New cvar: `g_autoGameLimits`, if set, uses the frag, time and capturelimits set in the .info or .arena files (including `arenas.txt`) rather than user-set values. It's enabled by default for SP. This also allows the usage of `capturelimit` in .arena files.
Expand Down
11 changes: 9 additions & 2 deletions code/game/g_client.c
Original file line number Diff line number Diff line change
Expand Up @@ -1865,16 +1865,23 @@ void ClientSpawn(gentity_t *ent) {
}
}

// Weapon Arena handling: we give the correspondent weapon fully loaded
// unless the selected weaponArenaWeapon is the Gauntlet or the Grappling Hook;
// in the latter case we give both weapons. Players should always carry a damaging weapon.
if (g_weaponArena.integer) {
client->ps.stats[STAT_WEAPONS] |= ( 1 << G_GetWeaponArenaWeapon(g_weaponArenaWeapon.integer) );
if (G_GetWeaponArenaWeapon(g_weaponArenaWeapon.integer) == WP_GAUNTLET) {
if (G_GetWeaponArenaWeapon(g_weaponArenaWeapon.integer) == WP_GAUNTLET ||
G_GetWeaponArenaWeapon(g_weaponArenaWeapon.integer) == WP_GRAPPLING_HOOK) {
client->ps.ammo[G_GetWeaponArenaWeapon(g_weaponArenaWeapon.integer)] = -1;
} else {
client->ps.ammo[G_GetWeaponArenaWeapon(g_weaponArenaWeapon.integer)] = 999;
}
}

if (g_grapple.integer || (g_weaponArena.integer > 1)) {
// With g_grapple, g_weaponArena on and weaponArenaWeapon Grapple or g_weaponArena 2,
// we add the Grappling Hook.
if (g_grapple.integer || (g_weaponArena.integer > 1) ||
((g_weaponArena.integer == 1) && (g_weaponArenaWeapon.integer == WP_GRAPPLING_HOOK))) {
client->ps.stats[STAT_WEAPONS] |= ( 1 << WP_GRAPPLING_HOOK );
}

Expand Down
53 changes: 16 additions & 37 deletions code/game/g_main.c
Original file line number Diff line number Diff line change
Expand Up @@ -844,62 +844,62 @@ void G_InitGame( int levelTime, int randomSeed, int restart )
if (Q_strequal(specialMatch,"singleWeaponGA")) {
G_Printf("^2Single Weapon: Gauntlet mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(0);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_GAUNTLET));
}
if (Q_strequal(specialMatch,"singleWeaponMG")) {
G_Printf("^2Single Weapon: Machinegun mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(1);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_MACHINEGUN));
}
if (Q_strequal(specialMatch,"singleWeaponSG")) {
G_Printf("^2Single Weapon: Shotgun mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(2);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_SHOTGUN));
}
if (Q_strequal(specialMatch,"singleWeaponGL")) {
G_Printf("^2Single Weapon: Grenade Launcher mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(3);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_GRENADE_LAUNCHER));
}
if (Q_strequal(specialMatch,"singleWeaponRL")) {
G_Printf("^2Single Weapon: Rocket Launcher mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(4);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_ROCKET_LAUNCHER));
}
if (Q_strequal(specialMatch,"singleWeaponLG")) {
G_Printf("^2Single Weapon: Lightning Gun mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(5);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_LIGHTNING));
}
if (Q_strequal(specialMatch,"singleWeaponRG")) {
G_Printf("^2Single Weapon: Railgun mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(6);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_RAILGUN));
}
if (Q_strequal(specialMatch,"singleWeaponPG")) {
G_Printf("^2Single Weapon: Plasma Gun mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(7);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_PLASMAGUN));
}
if (Q_strequal(specialMatch,"singleWeaponBFG")) {
G_Printf("^2Single Weapon: BFG mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(8);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_BFG));
}
if (Q_strequal(specialMatch,"singleWeaponNG")) {
G_Printf("^2Single Weapon: Nailgun mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(9);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_NAILGUN));
}
if (Q_strequal(specialMatch,"singleWeaponCG")) {
G_Printf("^2Single Weapon: Chaingun mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(10);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_CHAINGUN));
}
if (Q_strequal(specialMatch,"singleWeaponPL")) {
G_Printf("^2Single Weapon: Prox Launcher mode enabled.\n");
g_weaponArena.integer = 1;
g_weaponArenaWeapon.integer = G_GetWeaponArenaWeapon(11);
trap_Cvar_Set("g_weaponArenaWeapon",va("%i",WP_PROX_LAUNCHER));
}
// Grappling Hook rule.
g_grapple.integer = 0;
Expand Down Expand Up @@ -3145,32 +3145,11 @@ And for menu reasons. (*cough*classicui*cough*)
===================
*/
int G_GetWeaponArenaWeapon(int weapon) {
switch (weapon) {
case 1: return WP_MACHINEGUN;
break;
case 2: return WP_SHOTGUN;
break;
case 3: return WP_GRENADE_LAUNCHER;
break;
case 4: return WP_ROCKET_LAUNCHER;
break;
case 5: return WP_LIGHTNING;
break;
case 6: return WP_RAILGUN;
break;
case 7: return WP_PLASMAGUN;
break;
case 8: return WP_BFG;
break;
case 9: return WP_NAILGUN;
break;
case 10: return WP_CHAINGUN;
break;
case 11: return WP_PROX_LAUNCHER;
break;
default: return WP_GAUNTLET;
break;
// If outside the limit, use Gauntlet.
if ((weapon <= WP_GAUNTLET) || (weapon > WP_NUM_WEAPONS) || (weapon = WP_GRAPPLING_HOOK)) {
return WP_GAUNTLET;
}
return weapon;
}
/*
===================
Expand Down
11 changes: 6 additions & 5 deletions code/q3_ui/ui_startserver.c
Original file line number Diff line number Diff line change
Expand Up @@ -901,15 +901,16 @@ static const char *weaponArenaWeapon_list[] = {
"Gauntlet",
"Machinegun",
"Shotgun",
"Grenade L.",
"Rocket L.",
"Lightning",
"Grenade Launcher",
"Rocket Launcher",
"Lightning Gun",
"Railgun",
"Plasma Gun",
"BFG",
"Grappling Hook",
"Nailgun",
"Prox Launcher",
"Chaingun",
"Prox Mine",
NULL
};

Expand Down Expand Up @@ -2353,7 +2354,7 @@ static void ServerOptions_MenuInit( qboolean multiplayer ) {
y += BIGCHAR_HEIGHT+2;
s_serveroptions.weaponArenaWeapon.generic.type = MTYPE_SPINCONTROL;
s_serveroptions.weaponArenaWeapon.generic.flags = QMF_PULSEIFFOCUS|QMF_SMALLFONT;
s_serveroptions.weaponArenaWeapon.generic.name = "SWA Mode Weapon:";
s_serveroptions.weaponArenaWeapon.generic.name = "Weapon Arena Weapon:";
s_serveroptions.weaponArenaWeapon.generic.x = OPTIONS_X;
s_serveroptions.weaponArenaWeapon.generic.y = y;
s_serveroptions.weaponArenaWeapon.itemnames = weaponArenaWeapon_list;
Expand Down

0 comments on commit 81660f9

Please sign in to comment.