/** * @brief Add ammo. * @return whether any ammo was added */ int Add_Ammo(gentity_t *ent, int weapon, int count, qboolean fillClip) { int ammoweap = BG_FindAmmoForWeapon(weapon); int maxammo = BG_MaxAmmoForWeapon(ammoweap, ent->client->sess.skill); int originalCount = ent->client->ps.ammo[ammoweap]; // FIXME: do a switch if (ammoweap == WP_GRENADE_LAUNCHER) // make sure if he picks up a grenade that he get's the "launcher" too { COM_BitSet(ent->client->ps.weapons, WP_GRENADE_LAUNCHER); fillClip = qtrue; // grenades always filter into the "clip" } else if (ammoweap == WP_GRENADE_PINEAPPLE) { COM_BitSet(ent->client->ps.weapons, WP_GRENADE_PINEAPPLE); fillClip = qtrue; // grenades always filter into the "clip" } else if (ammoweap == WP_DYNAMITE) { COM_BitSet(ent->client->ps.weapons, WP_DYNAMITE); fillClip = qtrue; } else if (ammoweap == WP_SATCHEL_DET) { COM_BitSet(ent->client->ps.weapons, WP_SATCHEL_DET); fillClip = qtrue; } if (fillClip) { Fill_Clip(&ent->client->ps, weapon); } if (ammoweap == WP_PANZERFAUST || ammoweap == WP_BAZOOKA || ammoweap == WP_FLAMETHROWER) { ent->client->ps.ammoclip[ammoweap] += count; if (ent->client->ps.ammoclip[ammoweap] > maxammo) { ent->client->ps.ammoclip[ammoweap] = maxammo; // - ent->client->ps.ammoclip[BG_FindClipForWeapon(weapon)]; } } else { ent->client->ps.ammo[ammoweap] += count; if (ent->client->ps.ammo[ammoweap] > maxammo) { ent->client->ps.ammo[ammoweap] = maxammo; // - ent->client->ps.ammoclip[BG_FindClipForWeapon(weapon)]; } } if (count >= 999) // 'really, give /all/' { ent->client->ps.ammo[ammoweap] = count; } return (ent->client->ps.ammo[ammoweap] > originalCount); }
/** * @brief Add ammo. * @param ent * @param weapon * @param count * @param fillClip * @return whether any ammo was added */ int Add_Ammo(gentity_t *ent, weapon_t weapon, int count, qboolean fillClip) { weapon_t ammoweap = GetWeaponTableData(weapon)->ammoIndex; int maxammo = BG_MaxAmmoForWeapon(ammoweap, ent->client->sess.skill); int originalCount = ent->client->ps.ammo[ammoweap]; if (GetWeaponTableData(ammoweap)->isGrenade || ammoweap == WP_DYNAMITE || ammoweap == WP_SATCHEL_DET) // make sure if he picks it up that he get's the "launcher" too { COM_BitSet(ent->client->ps.weapons, ammoweap); fillClip = qtrue; // always filter into the "clip" } if (fillClip) { Fill_Clip(&ent->client->ps, weapon); } if (GetWeaponTableData(ammoweap)->isPanzer || ammoweap == WP_FLAMETHROWER) { ent->client->ps.ammoclip[ammoweap] += count; if (ent->client->ps.ammoclip[ammoweap] > maxammo) { ent->client->ps.ammoclip[ammoweap] = maxammo; // - ent->client->ps.ammoclip[BG_FindClipForWeapon(weapon)]; } } else { ent->client->ps.ammo[ammoweap] += count; if (ent->client->ps.ammo[ammoweap] > maxammo) { ent->client->ps.ammo[ammoweap] = maxammo; // - ent->client->ps.ammoclip[BG_FindClipForWeapon(weapon)]; } } if (count >= 999) // 'really, give /all/' { ent->client->ps.ammo[ammoweap] = count; } return (ent->client->ps.ammo[ammoweap] > originalCount); }