Half-Life: Fixed purely visual bug in the WEAPON_SATCHEL ammo counter, where it'd falsely subtract 1 satchel when exploding them all.
This commit is contained in:
parent
80c5cdc5f9
commit
030cf0f21a
1 changed files with 109 additions and 76 deletions
|
@ -40,67 +40,11 @@ enum
|
||||||
RADIO_HOLSTER
|
RADIO_HOLSTER
|
||||||
};
|
};
|
||||||
|
|
||||||
void w_satchel_updateammo(player pl)
|
|
||||||
{
|
|
||||||
#ifdef SERVER
|
|
||||||
Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
string w_satchel_wmodel(void)
|
|
||||||
{
|
|
||||||
return "models/w_satchel.mdl";
|
|
||||||
}
|
|
||||||
string w_satchel_pmodel(void)
|
|
||||||
{
|
|
||||||
return "models/p_satchel.mdl";
|
|
||||||
}
|
|
||||||
string w_satchel_deathmsg(void)
|
|
||||||
{
|
|
||||||
return "";
|
|
||||||
}
|
|
||||||
void w_satchel_precache(void)
|
|
||||||
{
|
|
||||||
#ifdef SERVER
|
|
||||||
Sound_Precache("weapon_satchel.bounce");
|
|
||||||
precache_model("models/w_satchel.mdl");
|
|
||||||
#else
|
|
||||||
precache_model("models/v_satchel.mdl");
|
|
||||||
precache_model("models/v_satchel_radio.mdl");
|
|
||||||
precache_model("models/p_satchel.mdl");
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
int w_satchel_pickup(int new, int startammo)
|
|
||||||
{
|
|
||||||
#ifdef SERVER
|
|
||||||
player pl = (player)self;
|
|
||||||
|
|
||||||
if (pl.ammo_satchel < MAX_A_SATCHEL) {
|
|
||||||
pl.ammo_satchel = bound(0, pl.ammo_satchel + 1, MAX_A_SATCHEL);
|
|
||||||
} else {
|
|
||||||
return FALSE;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
return TRUE;
|
|
||||||
}
|
|
||||||
|
|
||||||
void w_satchel_draw(void)
|
|
||||||
{
|
|
||||||
Weapons_SetModel("models/v_satchel.mdl");
|
|
||||||
Weapons_ViewAnimation(SATCHEL_DRAW);
|
|
||||||
#ifdef SERVER
|
|
||||||
player pl = (player)self;
|
|
||||||
Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__);
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
|
|
||||||
void w_satchel_holster(void)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
void s_satchel_drop(entity master, vector src, vector vel)
|
void
|
||||||
|
s_satchel_drop(entity master, vector src, vector vel)
|
||||||
{
|
{
|
||||||
static void s_satchel_touch(void)
|
static void s_satchel_touch(void)
|
||||||
{
|
{
|
||||||
|
@ -123,7 +67,9 @@ void s_satchel_drop(entity master, vector src, vector vel)
|
||||||
setsize(satch, [-4,-4,-4], [4,4,4]);
|
setsize(satch, [-4,-4,-4], [4,4,4]);
|
||||||
setorigin(satch, src);
|
setorigin(satch, src);
|
||||||
}
|
}
|
||||||
void s_satchel_detonate(entity master)
|
|
||||||
|
void
|
||||||
|
s_satchel_detonate(entity master)
|
||||||
{
|
{
|
||||||
for (entity b = world; (b = find(b, ::classname, "satchel"));) {
|
for (entity b = world; (b = find(b, ::classname, "satchel"));) {
|
||||||
if (b.owner == master) {
|
if (b.owner == master) {
|
||||||
|
@ -137,7 +83,77 @@ void s_satchel_detonate(entity master)
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void w_satchel_primary(void)
|
void
|
||||||
|
w_satchel_updateammo(player pl)
|
||||||
|
{
|
||||||
|
#ifdef SERVER
|
||||||
|
Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
w_satchel_wmodel(void)
|
||||||
|
{
|
||||||
|
return "models/w_satchel.mdl";
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
w_satchel_pmodel(void)
|
||||||
|
{
|
||||||
|
return "models/p_satchel.mdl";
|
||||||
|
}
|
||||||
|
|
||||||
|
string
|
||||||
|
w_satchel_deathmsg(void)
|
||||||
|
{
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
w_satchel_precache(void)
|
||||||
|
{
|
||||||
|
#ifdef SERVER
|
||||||
|
Sound_Precache("weapon_satchel.bounce");
|
||||||
|
precache_model("models/w_satchel.mdl");
|
||||||
|
#else
|
||||||
|
precache_model("models/v_satchel.mdl");
|
||||||
|
precache_model("models/v_satchel_radio.mdl");
|
||||||
|
precache_model("models/p_satchel.mdl");
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
w_satchel_pickup(int new, int startammo)
|
||||||
|
{
|
||||||
|
#ifdef SERVER
|
||||||
|
player pl = (player)self;
|
||||||
|
|
||||||
|
if (pl.ammo_satchel < MAX_A_SATCHEL) {
|
||||||
|
pl.ammo_satchel = bound(0, pl.ammo_satchel + 1, MAX_A_SATCHEL);
|
||||||
|
} else {
|
||||||
|
return FALSE;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
return TRUE;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
w_satchel_draw(void)
|
||||||
|
{
|
||||||
|
#ifdef CLIENT
|
||||||
|
Weapons_SetModel("models/v_satchel.mdl");
|
||||||
|
Weapons_ViewAnimation(SATCHEL_DRAW);
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
w_satchel_holster(void)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
w_satchel_primary(void)
|
||||||
{
|
{
|
||||||
player pl = (player)self;
|
player pl = (player)self;
|
||||||
|
|
||||||
|
@ -163,6 +179,7 @@ void w_satchel_primary(void)
|
||||||
}
|
}
|
||||||
|
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
|
/* if we don't have any satchels placed yet, place one */
|
||||||
if (!pl.satchel_chg) {
|
if (!pl.satchel_chg) {
|
||||||
vector throw;
|
vector throw;
|
||||||
|
|
||||||
|
@ -172,24 +189,33 @@ void w_satchel_primary(void)
|
||||||
pl.satchel_chg++;
|
pl.satchel_chg++;
|
||||||
pl.ammo_satchel--;
|
pl.ammo_satchel--;
|
||||||
} else {
|
} else {
|
||||||
|
/* detonate all we have */
|
||||||
s_satchel_detonate(pl);
|
s_satchel_detonate(pl);
|
||||||
pl.satchel_chg = 0;
|
pl.satchel_chg = 0;
|
||||||
|
|
||||||
|
/* no satchels left to place? just get rid of this thing */
|
||||||
if (pl.ammo_satchel <= 0) {
|
if (pl.ammo_satchel <= 0) {
|
||||||
Weapons_RemoveItem(pl, WEAPON_SATCHEL);
|
Weapons_RemoveItem(pl, WEAPON_SATCHEL);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__);
|
|
||||||
#else
|
#else
|
||||||
setmodel(pSeat->m_eViewModel, "models/v_satchel_radio.mdl");
|
Weapons_SetModel("models/v_satchel_radio.mdl");
|
||||||
|
|
||||||
|
/* same thing as the SERVER ifdef above... */
|
||||||
|
if (!pl.a_ammo1) {
|
||||||
pl.a_ammo1++;
|
pl.a_ammo1++;
|
||||||
pl.a_ammo2--;
|
pl.a_ammo2--;
|
||||||
|
} else {
|
||||||
|
pl.a_ammo1 = 0;
|
||||||
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
pl.w_attack_next = 1.0f;
|
pl.w_attack_next = 1.0f;
|
||||||
pl.w_idle_next = 1.0f;
|
pl.w_idle_next = 1.0f;
|
||||||
}
|
}
|
||||||
void w_satchel_secondary(void)
|
|
||||||
|
void
|
||||||
|
w_satchel_secondary(void)
|
||||||
{
|
{
|
||||||
player pl = (player)self;
|
player pl = (player)self;
|
||||||
|
|
||||||
|
@ -215,23 +241,25 @@ void w_satchel_secondary(void)
|
||||||
s_satchel_drop(self, pl.origin, throw);
|
s_satchel_drop(self, pl.origin, throw);
|
||||||
pl.satchel_chg++;
|
pl.satchel_chg++;
|
||||||
pl.ammo_satchel--;
|
pl.ammo_satchel--;
|
||||||
Weapons_UpdateAmmo(pl, pl.satchel_chg, pl.ammo_satchel, __NULL__);
|
|
||||||
#else
|
#else
|
||||||
pl.a_ammo1++;
|
pl.a_ammo1++;
|
||||||
pl.a_ammo2--;
|
pl.a_ammo2--;
|
||||||
setmodel(pSeat->m_eViewModel, "models/v_satchel_radio.mdl");
|
Weapons_SetModel("models/v_satchel_radio.mdl");
|
||||||
#endif
|
|
||||||
|
|
||||||
Weapons_ViewAnimation(RADIO_DRAW);
|
Weapons_ViewAnimation(RADIO_DRAW);
|
||||||
|
#endif
|
||||||
|
|
||||||
pl.w_attack_next = 1.0f;
|
pl.w_attack_next = 1.0f;
|
||||||
pl.w_idle_next = 2.5f;
|
pl.w_idle_next = 2.5f;
|
||||||
}
|
}
|
||||||
void w_satchel_reload(void)
|
|
||||||
|
void
|
||||||
|
w_satchel_reload(void)
|
||||||
{
|
{
|
||||||
|
|
||||||
}
|
}
|
||||||
void w_satchel_release(void)
|
|
||||||
|
void
|
||||||
|
w_satchel_release(void)
|
||||||
{
|
{
|
||||||
player pl = (player)self;
|
player pl = (player)self;
|
||||||
|
|
||||||
|
@ -247,12 +275,14 @@ void w_satchel_release(void)
|
||||||
pl.w_idle_next = 15.0f;
|
pl.w_idle_next = 15.0f;
|
||||||
}
|
}
|
||||||
|
|
||||||
float w_satchel_aimanim(void)
|
float
|
||||||
|
w_satchel_aimanim(void)
|
||||||
{
|
{
|
||||||
return self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK;
|
return self.flags & FL_CROUCHING ? ANIM_CR_AIMSQUEAK : ANIM_AIMSQUEAK;
|
||||||
}
|
}
|
||||||
|
|
||||||
void w_satchel_hud(void)
|
void
|
||||||
|
w_satchel_hud(void)
|
||||||
{
|
{
|
||||||
#ifdef CLIENT
|
#ifdef CLIENT
|
||||||
HUD_DrawAmmo2();
|
HUD_DrawAmmo2();
|
||||||
|
@ -261,7 +291,8 @@ void w_satchel_hud(void)
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
void w_satchel_hudpic(int selected, vector pos, float a)
|
void
|
||||||
|
w_satchel_hudpic(int selected, vector pos, float a)
|
||||||
{
|
{
|
||||||
#ifdef CLIENT
|
#ifdef CLIENT
|
||||||
if (selected) {
|
if (selected) {
|
||||||
|
@ -296,7 +327,9 @@ weapon_t w_satchel =
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef SERVER
|
#ifdef SERVER
|
||||||
void weapon_satchel(void) {
|
void
|
||||||
|
weapon_satchel(void)
|
||||||
|
{
|
||||||
Weapons_InitItem(WEAPON_SATCHEL);
|
Weapons_InitItem(WEAPON_SATCHEL);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
Loading…
Reference in a new issue