Finally added the 5th weapon slot, where the C4 rightfully belongs.

This commit is contained in:
Marco Cawthorne 2019-01-05 21:35:38 +01:00
parent 9c78208af7
commit 7bb9281db7
10 changed files with 84 additions and 69 deletions

View file

@ -203,8 +203,7 @@ void HUD_DrawIcons(void) {
} }
// Bomb-Area // Bomb-Area
vector vBIconPos = vVideoMins + [16, (vVideoResolution[1] / 2) + 24]; if (getstatf(STAT_SLOT_C4BOMB) == WEAPON_C4BOMB) {
if (getstatf(STAT_SLOT_GRENADE) == WEAPON_C4BOMB) {
if (getstatf(STAT_BOMBZONE) == TRUE) { if (getstatf(STAT_BOMBZONE) == TRUE) {
float fAlpha = fabs(sin(time * 20)); float fAlpha = fabs(sin(time * 20));
drawsubpic(iconpos, [32,32], HUD_NUMFILE_LAYER, [0, 0.125 * 5 - 0.046875], [0.125, 0.125], [1,0,0], fAlpha, DRAWFLAG_ADDITIVE); drawsubpic(iconpos, [32,32], HUD_NUMFILE_LAYER, [0, 0.125 * 5 - 0.046875], [0.125, 0.125], [1,0,0], fAlpha, DRAWFLAG_ADDITIVE);

View file

@ -60,11 +60,12 @@ weaponsymbolinfo_t wpSymbolTable[CS_WEAPON_COUNT] = {
{ "sprites/640hud3.spr_0.tga", [0,0.52734375] } //WEAPON_SMOKEGRENADE { "sprites/640hud3.spr_0.tga", [0,0.52734375] } //WEAPON_SMOKEGRENADE
}; };
vector vHUDSlotNumPos[4] = { vector vHUDSlotNumPos[5] = {
[0.65625,0.28125], // 1 PRIMARY [0.65625,0.28125], // 1 PRIMARY
[0.734375,0.28125], // 2 SECONDARY [0.734375,0.28125], // 2 SECONDARY
[0.8125,0.28125], // 3 MELEE [0.8125,0.28125], // 3 MELEE
[0.65625,0.359375] // 4 GRENADE [0.65625,0.359375], // 4 GRENADE
[0.734375,0.359375] // 5 C4-BOMB
}; };
/* /*
@ -93,11 +94,6 @@ float HUD_DrawWeaponSelect_NextItem(float fSlot)
pSeat->iHUDGrenades = 0; pSeat->iHUDGrenades = 0;
// Keep this order in order for the selection to work // Keep this order in order for the selection to work
if (getstatf(STAT_SLOT_GRENADE)) {
pSeat->iHUDGrenadesSelected = getstatf(STAT_SLOT_GRENADE);
pSeat->iHUDGrenades++;
}
if (getstati_punf(STAT_ITEM_SMOKEGRENADE)) { if (getstati_punf(STAT_ITEM_SMOKEGRENADE)) {
pSeat->iHUDGrenadesSelected = WEAPON_SMOKEGRENADE; pSeat->iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
pSeat->iHUDGrenades++; pSeat->iHUDGrenades++;
@ -118,6 +114,12 @@ float HUD_DrawWeaponSelect_NextItem(float fSlot)
} else { } else {
return HUD_DrawWeaponSelect_NextItem(SLOT_GRENADE); return HUD_DrawWeaponSelect_NextItem(SLOT_GRENADE);
} }
} else if (fSlot == SLOT_C4BOMB) {
if (getstatf(STAT_SLOT_PRIMARY)) {
return SLOT_PRIMARY;
} else {
return HUD_DrawWeaponSelect_NextItem(SLOT_PRIMARY);
}
} else { } else {
// If we're in the grenade slot, go down // If we're in the grenade slot, go down
if (pSeat->iHUDGrenadesSelected == WEAPON_HEGRENADE) { if (pSeat->iHUDGrenadesSelected == WEAPON_HEGRENADE) {
@ -147,10 +149,10 @@ float HUD_DrawWeaponSelect_NextItem(float fSlot)
} }
} }
if (getstatf(STAT_SLOT_PRIMARY)) { if (getstatf(STAT_SLOT_C4BOMB)) {
return SLOT_PRIMARY; return SLOT_C4BOMB;
} else { } else {
return HUD_DrawWeaponSelect_NextItem(SLOT_PRIMARY); return HUD_DrawWeaponSelect_NextItem(SLOT_C4BOMB);
} }
} }
} }
@ -165,30 +167,10 @@ Checks and returns the previous slot with a weapon in it
float HUD_DrawWeaponSelect_PreviousItem(float fSlot) float HUD_DrawWeaponSelect_PreviousItem(float fSlot)
{ {
if (fSlot == SLOT_PRIMARY) { if (fSlot == SLOT_PRIMARY) {
pSeat->iHUDGrenades = 0; if (getstatf(STAT_SLOT_C4BOMB)) {
return SLOT_C4BOMB;
// Keep this order in order for the selection to work
if (getstati_punf(STAT_ITEM_HEGRENADE)) {
pSeat->iHUDGrenadesSelected = WEAPON_HEGRENADE;
pSeat->iHUDGrenades++;
}
if (getstati_punf(STAT_ITEM_FLASHBANG)) {
pSeat->iHUDGrenadesSelected = WEAPON_FLASHBANG;
pSeat->iHUDGrenades++;
}
if (getstati_punf(STAT_ITEM_SMOKEGRENADE)) {
pSeat->iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
pSeat->iHUDGrenades++;
}
if (getstatf(STAT_SLOT_GRENADE)) {
pSeat->iHUDGrenadesSelected = getstatf(STAT_SLOT_GRENADE);
pSeat->iHUDGrenades++;
}
if (pSeat->iHUDGrenades) {
return SLOT_GRENADE;
} else { } else {
return HUD_DrawWeaponSelect_PreviousItem(SLOT_GRENADE); return HUD_DrawWeaponSelect_PreviousItem(SLOT_C4BOMB);
} }
} else if (fSlot == SLOT_SECONDARY) { } else if (fSlot == SLOT_SECONDARY) {
if (getstatf(STAT_SLOT_PRIMARY)) { if (getstatf(STAT_SLOT_PRIMARY)) {
@ -202,19 +184,30 @@ float HUD_DrawWeaponSelect_PreviousItem(float fSlot)
} else { } else {
return HUD_DrawWeaponSelect_PreviousItem(SLOT_SECONDARY); return HUD_DrawWeaponSelect_PreviousItem(SLOT_SECONDARY);
} }
} else { } else if (fSlot == SLOT_C4BOMB) {
if (pSeat->iHUDGrenadesSelected == getstatf(STAT_SLOT_GRENADE)) { pSeat->iHUDGrenades = 0;
if (getstati_punf(STAT_ITEM_SMOKEGRENADE)) {
pSeat->iHUDGrenadesSelected = WEAPON_SMOKEGRENADE; /* See if we any any type of grenade in this slot */
return SLOT_GRENADE; if (getstati_punf(STAT_ITEM_HEGRENADE)) {
} else if (getstati_punf(STAT_ITEM_FLASHBANG)) { pSeat->iHUDGrenadesSelected = WEAPON_HEGRENADE;
pSeat->iHUDGrenadesSelected = WEAPON_FLASHBANG; pSeat->iHUDGrenades++;
return SLOT_GRENADE;
} else if (getstati_punf(STAT_ITEM_HEGRENADE)) {
pSeat->iHUDGrenadesSelected = WEAPON_HEGRENADE;
return SLOT_GRENADE;
}
} }
if (getstati_punf(STAT_ITEM_FLASHBANG)) {
pSeat->iHUDGrenadesSelected = WEAPON_FLASHBANG;
pSeat->iHUDGrenades++;
}
if (getstati_punf(STAT_ITEM_SMOKEGRENADE)) {
pSeat->iHUDGrenadesSelected = WEAPON_SMOKEGRENADE;
pSeat->iHUDGrenades++;
}
/* If we actually found a grenade, switch to the slot */
if (pSeat->iHUDGrenades) {
return SLOT_GRENADE;
} else {
return HUD_DrawWeaponSelect_PreviousItem(SLOT_GRENADE);
}
} else {
if (pSeat->iHUDGrenadesSelected == WEAPON_SMOKEGRENADE) { if (pSeat->iHUDGrenadesSelected == WEAPON_SMOKEGRENADE) {
if (getstati_punf(STAT_ITEM_FLASHBANG)) { if (getstati_punf(STAT_ITEM_FLASHBANG)) {
pSeat->iHUDGrenadesSelected = WEAPON_FLASHBANG; pSeat->iHUDGrenadesSelected = WEAPON_FLASHBANG;
@ -228,7 +221,8 @@ float HUD_DrawWeaponSelect_PreviousItem(float fSlot)
pSeat->iHUDGrenadesSelected = WEAPON_HEGRENADE; pSeat->iHUDGrenadesSelected = WEAPON_HEGRENADE;
return SLOT_GRENADE; return SLOT_GRENADE;
} }
} }
if (getstatf(STAT_SLOT_MELEE)) { if (getstatf(STAT_SLOT_MELEE)) {
return SLOT_MELEE; return SLOT_MELEE;
} else { } else {
@ -252,6 +246,8 @@ float HUD_DrawWeaponSelect_GetWeapon(float fSlot)
return getstatf(STAT_SLOT_SECONDARY); return getstatf(STAT_SLOT_SECONDARY);
} else if (fSlot == SLOT_MELEE) { } else if (fSlot == SLOT_MELEE) {
return getstatf(STAT_SLOT_MELEE); return getstatf(STAT_SLOT_MELEE);
} else if (fSlot == SLOT_C4BOMB) {
return getstatf(STAT_SLOT_C4BOMB);
} else { } else {
return pSeat->iHUDGrenadesSelected; return pSeat->iHUDGrenadesSelected;
} }
@ -266,7 +262,7 @@ Called via the invprev command
*/ */
void HUD_DrawWeaponSelect_Forward(void) void HUD_DrawWeaponSelect_Forward(void)
{ {
if (!getstatf(STAT_SLOT_MELEE) && !getstatf(STAT_SLOT_MELEE) && !getstatf(STAT_SLOT_MELEE) && !getstatf(STAT_SLOT_MELEE)) { if (!getstatf(STAT_SLOT_MELEE)) {
return; return;
} }
@ -290,7 +286,7 @@ Called via the invnext command
*/ */
void HUD_DrawWeaponSelect_Back(void) void HUD_DrawWeaponSelect_Back(void)
{ {
if (!getstatf(STAT_SLOT_MELEE) && !getstatf(STAT_SLOT_MELEE) && !getstatf(STAT_SLOT_MELEE) && !getstatf(STAT_SLOT_MELEE)) { if (!getstatf(STAT_SLOT_MELEE)) {
return; return;
} }
@ -336,11 +332,13 @@ void HUD_DrawWeaponSelect(void)
vector vSelectPos = vVideoMins + [160,12]; vector vSelectPos = vVideoMins + [160,12];
for (int i = 0; i < 4; i++) { for (int i = 0; i < 5; i++) {
vSelectPos[1] = vVideoMins[1] + 12;
HUD_DrawWeaponSelect_Num(vSelectPos, i); HUD_DrawWeaponSelect_Num(vSelectPos, i);
// Again, grenades are treated seperately // Again, grenades are treated seperately
if (i == SLOT_GRENADE) { if (i == SLOT_GRENADE) {
int ihasnade = FALSE;
if (wptTable[pSeat->fHUDWeaponSelected].iSlot == SLOT_GRENADE) { if (wptTable[pSeat->fHUDWeaponSelected].iSlot == SLOT_GRENADE) {
if (getstati_punf(STAT_ITEM_HEGRENADE)) { if (getstati_punf(STAT_ITEM_HEGRENADE)) {
drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[WEAPON_HEGRENADE].sSprite, wpSymbolTable[WEAPON_HEGRENADE].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE); drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[WEAPON_HEGRENADE].sSprite, wpSymbolTable[WEAPON_HEGRENADE].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
@ -348,6 +346,7 @@ void HUD_DrawWeaponSelect(void)
drawsubpic(vSelectPos + [0,20], [170,45], "sprites/640hud3.spr_0.tga", [0,0.703125], [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE); drawsubpic(vSelectPos + [0,20], [170,45], "sprites/640hud3.spr_0.tga", [0,0.703125], [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
} }
vSelectPos_y += 45; vSelectPos_y += 45;
ihasnade = TRUE;
} }
if (getstati_punf(STAT_ITEM_FLASHBANG)) { if (getstati_punf(STAT_ITEM_FLASHBANG)) {
drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[WEAPON_FLASHBANG].sSprite, wpSymbolTable[WEAPON_FLASHBANG].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE); drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[WEAPON_FLASHBANG].sSprite, wpSymbolTable[WEAPON_FLASHBANG].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
@ -355,6 +354,7 @@ void HUD_DrawWeaponSelect(void)
drawsubpic(vSelectPos + [0,20], [170,45], "sprites/640hud3.spr_0.tga", [0,0.703125], [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE); drawsubpic(vSelectPos + [0,20], [170,45], "sprites/640hud3.spr_0.tga", [0,0.703125], [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
} }
vSelectPos_y += 45; vSelectPos_y += 45;
ihasnade = TRUE;
} }
if (getstati_punf(STAT_ITEM_SMOKEGRENADE)) { if (getstati_punf(STAT_ITEM_SMOKEGRENADE)) {
drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[WEAPON_SMOKEGRENADE].sSprite, wpSymbolTable[WEAPON_SMOKEGRENADE].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE); drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[WEAPON_SMOKEGRENADE].sSprite, wpSymbolTable[WEAPON_SMOKEGRENADE].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
@ -362,14 +362,13 @@ void HUD_DrawWeaponSelect(void)
drawsubpic(vSelectPos + [0,20], [170,45], "sprites/640hud3.spr_0.tga", [0,0.703125], [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE); drawsubpic(vSelectPos + [0,20], [170,45], "sprites/640hud3.spr_0.tga", [0,0.703125], [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE);
} }
vSelectPos_y += 45; vSelectPos_y += 45;
ihasnade = TRUE;
} }
if (getstatf(STAT_SLOT_GRENADE)) { }
drawsubpic(vSelectPos + [0,20], [170,45], wpSymbolTable[getstatf(STAT_SLOT_GRENADE)].sSprite, wpSymbolTable[getstatf(STAT_SLOT_GRENADE)].vOrigin, [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE); if (ihasnade) {
if (pSeat->iHUDGrenadesSelected == getstatf(STAT_SLOT_GRENADE)) { vSelectPos_x += 170;
drawsubpic(vSelectPos + [0,20], [170,45], "sprites/640hud3.spr_0.tga", [0,0.703125], [0.6640625, 0.17578125], vHUDColor, 1, DRAWFLAG_ADDITIVE); } else {
} vSelectPos_x += 20;
vSelectPos_y += 45;
}
} }
} else { } else {
if (wptTable[pSeat->fHUDWeaponSelected].iSlot == i) { if (wptTable[pSeat->fHUDWeaponSelected].iSlot == i) {

View file

@ -67,11 +67,11 @@ float CSQC_VGUI_Draw( void ) {
vVGUIWindowPos_x += ( vVideoResolution_x / 2 ) - 320; vVGUIWindowPos_x += ( vVideoResolution_x / 2 ) - 320;
vVGUIWindowPos_y += ( vVideoResolution_y / 2 ) - 240; vVGUIWindowPos_y += ( vVideoResolution_y / 2 ) - 240;
VGUI_Window( vguiMenus[ pSeat->fVGUI_Display - 1 ].sTitle, vVGUIWindowPos, '640 480 0' ); VGUI_Window( vguiMenus[ pSeat->fVGUI_Display - 1 ].sTitle, vVGUIWindowPos, '640 480 0' );
iVGUIKey = 48; iVGUIKey = 48;
// Display the contents of whatever we have selected // Display the contents of whatever we have selected
vguiMenus[ pSeat->fVGUI_Display - 1 ].vDraw( vVGUIWindowPos ); vguiMenus[ pSeat->fVGUI_Display - 1 ].vDraw( vVGUIWindowPos );
return TRUE; return TRUE;
} }
@ -86,15 +86,15 @@ void CSQC_VGUI_Init( void ) {
string sTemp; string sTemp;
int iMOTDLength; int iMOTDLength;
filestream fmMapDescr; filestream fmMapDescr;
// First load the MESSAGE OF THE DAY // First load the MESSAGE OF THE DAY
// TODO: Move this to the server and put strings into infokeys // TODO: Move this to the server and put strings into infokeys
iMOTDLength = stof( serverkey( "motdlength" ) ); iMOTDLength = stof( serverkey( "motdlength" ) );
for ( int i = 0; i < iMOTDLength; i++ ) { for ( int i = 0; i < iMOTDLength; i++ ) {
sMOTDString[ i ] = serverkey( sprintf( "motdline%i", i ) ); sMOTDString[ i ] = serverkey( sprintf( "motdline%i", i ) );
} }
// Now load the MAP DESCRIPTION // Now load the MAP DESCRIPTION
fmMapDescr = fopen( sprintf( "maps/%s.txt", mapname ), FILE_READ ); fmMapDescr = fopen( sprintf( "maps/%s.txt", mapname ), FILE_READ );
if ( fmMapDescr != -1 ) { if ( fmMapDescr != -1 ) {
@ -107,7 +107,7 @@ void CSQC_VGUI_Init( void ) {
} }
fclose( fmMapDescr ); fclose( fmMapDescr );
} }
if (serverkeyfloat("slots") == 1) { if (serverkeyfloat("slots") == 1) {
pSeat->fVGUI_Display = VGUI_NONE; pSeat->fVGUI_Display = VGUI_NONE;
return; return;

View file

@ -71,6 +71,7 @@ enum {
STAT_SLOT_PRIMARY, STAT_SLOT_PRIMARY,
STAT_SLOT_SECONDARY, STAT_SLOT_SECONDARY,
STAT_SLOT_GRENADE, STAT_SLOT_GRENADE,
STAT_SLOT_C4BOMB,
STAT_EQUIPMENT, STAT_EQUIPMENT,
STAT_ITEM_FLASHBANG, STAT_ITEM_FLASHBANG,
STAT_ITEM_HEGRENADE, STAT_ITEM_HEGRENADE,
@ -179,7 +180,8 @@ enum {
SLOT_PRIMARY, SLOT_PRIMARY,
SLOT_SECONDARY, SLOT_SECONDARY,
SLOT_MELEE, SLOT_MELEE,
SLOT_GRENADE SLOT_GRENADE,
SLOT_C4BOMB
}; };
// These variables are taken from CS:S' .ctx script files, usually and interpreted as I go along... // These variables are taken from CS:S' .ctx script files, usually and interpreted as I go along...

View file

@ -69,6 +69,7 @@
.float fSlotPrimary; .float fSlotPrimary;
.float fSlotSecondary; .float fSlotSecondary;
.float fSlotGrenade; .float fSlotGrenade;
.float fSlotC4Bomb;
.float fAttackFinished; .float fAttackFinished;
.float fRadioFinished; .float fRadioFinished;
.float fAccuracy; .float fAccuracy;

View file

@ -642,6 +642,7 @@ void worldspawn( void ) {
clientstat( STAT_SLOT_PRIMARY, EV_FLOAT, fSlotPrimary ); clientstat( STAT_SLOT_PRIMARY, EV_FLOAT, fSlotPrimary );
clientstat( STAT_SLOT_SECONDARY, EV_FLOAT, fSlotSecondary ); clientstat( STAT_SLOT_SECONDARY, EV_FLOAT, fSlotSecondary );
clientstat( STAT_SLOT_GRENADE, EV_FLOAT, fSlotGrenade ); clientstat( STAT_SLOT_GRENADE, EV_FLOAT, fSlotGrenade );
clientstat( STAT_SLOT_C4BOMB, EV_FLOAT, fSlotC4Bomb );
clientstat( STAT_ITEM_FLASHBANG, EV_INTEGER, iAmmo_FLASHBANG ); clientstat( STAT_ITEM_FLASHBANG, EV_INTEGER, iAmmo_FLASHBANG );
clientstat( STAT_ITEM_HEGRENADE, EV_INTEGER, iAmmo_HEGRENADE ); clientstat( STAT_ITEM_HEGRENADE, EV_INTEGER, iAmmo_HEGRENADE );
clientstat( STAT_ITEM_SMOKEGRENADE, EV_INTEGER, iAmmo_SMOKEGRENADE ); clientstat( STAT_ITEM_SMOKEGRENADE, EV_INTEGER, iAmmo_SMOKEGRENADE );

View file

@ -15,7 +15,7 @@ int iBombProgress;
// Weapon Info // Weapon Info
weaponinfo_t wptC4BOMB = { weaponinfo_t wptC4BOMB = {
WEAPON_C4BOMB, // Identifier WEAPON_C4BOMB, // Identifier
SLOT_GRENADE, SLOT_C4BOMB,
0, // Price 0, // Price
EXPLOSIVE_C4, // Caliber ID EXPLOSIVE_C4, // Caliber ID
1.0, // Max Player Speed 1.0, // Max Player Speed
@ -177,7 +177,7 @@ void WeaponC4BOMB_Drop( vector vBombPos, vector vNormal ) {
iBombPlanted = TRUE; iBombPlanted = TRUE;
// Tell the bomb-planter to get rid of the weapon! // Tell the bomb-planter to get rid of the weapon!
self.fSlotGrenade = self.fSlotGrenade - WEAPON_C4BOMB; self.fSlotC4Bomb = 0;
Weapon_SwitchBest(); Weapon_SwitchBest();
//eprint( eBomb ); //eprint( eBomb );
} }

View file

@ -302,6 +302,10 @@ float Weapon_AlreadyExists( float fWeapon ) {
if ( self.fSlotGrenade == fWeapon ) { if ( self.fSlotGrenade == fWeapon ) {
return TRUE; return TRUE;
} }
} else if ( wptTable[ fWeapon ].iSlot == SLOT_C4BOMB ) {
if ( self.fSlotC4Bomb == fWeapon ) {
return TRUE;
}
} }
} }
@ -328,6 +332,10 @@ float Weapon_SlotEmpty( int fSlot ) {
if ( self.fSlotGrenade == 0 ) { if ( self.fSlotGrenade == 0 ) {
return TRUE; return TRUE;
} }
} else if ( fSlot == SLOT_C4BOMB ) {
if ( self.fSlotC4Bomb == 0 ) {
return TRUE;
}
} }
return FALSE; return FALSE;
@ -351,6 +359,8 @@ void Weapon_Switch( int iSlot ) {
fWeapon = self.fSlotSecondary; fWeapon = self.fSlotSecondary;
} else if ( iSlot == SLOT_GRENADE ) { } else if ( iSlot == SLOT_GRENADE ) {
fWeapon = self.fSlotGrenade; fWeapon = self.fSlotGrenade;
} else if ( iSlot == SLOT_C4BOMB ) {
fWeapon = self.fSlotC4Bomb;
} }
if ( !fWeapon || self.weapon == fWeapon ) { if ( !fWeapon || self.weapon == fWeapon ) {
@ -393,6 +403,8 @@ void Weapon_AddItem( float fWeapon ) {
self.fSlotPrimary = fWeapon; self.fSlotPrimary = fWeapon;
} else if ( wptTable[ fWeapon ].iSlot == SLOT_GRENADE ) { } else if ( wptTable[ fWeapon ].iSlot == SLOT_GRENADE ) {
self.fSlotGrenade = fWeapon; self.fSlotGrenade = fWeapon;
} else if ( wptTable[ fWeapon ].iSlot == SLOT_C4BOMB ) {
self.fSlotC4Bomb = fWeapon;
} }
// Make sure we've got at least one full clip // Make sure we've got at least one full clip
@ -480,6 +492,9 @@ void Weapon_DropWeapon( int iSlot ) {
} else if ( iSlot == SLOT_GRENADE ) { } else if ( iSlot == SLOT_GRENADE ) {
fWeapon = self.fSlotGrenade; fWeapon = self.fSlotGrenade;
self.fSlotGrenade = 0; self.fSlotGrenade = 0;
} else if ( iSlot == SLOT_C4BOMB ) {
fWeapon = self.fSlotC4Bomb;
self.fSlotGrenade = 0;
} else { } else {
return; return;
} }
@ -562,8 +577,6 @@ void CSEv_PlayerSwitchWeapon_f( float fWeapon ) {
return; return;
} else if (fWeapon == WEAPON_SMOKEGRENADE && !(self.iAmmo_SMOKEGRENADE)) { } else if (fWeapon == WEAPON_SMOKEGRENADE && !(self.iAmmo_SMOKEGRENADE)) {
return; return;
} else if (fWeapon == WEAPON_C4BOMB && !(self.fSlotGrenade & WEAPON_C4BOMB)) {
return;
} }
} }
if ( fWeapon != self.weapon ) { if ( fWeapon != self.weapon ) {

Binary file not shown.

Binary file not shown.