fix: re-check ground weapon upon pickup to recheck weapon is nice to us (fix #301)

This commit is contained in:
dmitry 2022-02-21 11:03:59 +03:00
commit 51c645172a
No known key found for this signature in database
GPG key ID: 8297CE728B7A7E37

View file

@ -613,19 +613,19 @@ void Bot::updatePickups () {
const bool isShotgun = weaponType == WeaponType::Shotgun; const bool isShotgun = weaponType == WeaponType::Shotgun;
const bool isRifle = weaponType == WeaponType::Rifle || weaponType == WeaponType::ZoomRifle; const bool isRifle = weaponType == WeaponType::Rifle || weaponType == WeaponType::ZoomRifle;
if (strcmp (model, "w_9mmarclip.mdl") == 0 && !isRifle) { if (!isRifle && strcmp (model, "w_9mmarclip.mdl") == 0) {
allowPickup = false; allowPickup = false;
} }
else if (strcmp (model, "w_shotbox.mdl") == 0 && !isShotgun) { else if (!isShotgun && strcmp (model, "w_shotbox.mdl") == 0) {
allowPickup = false; allowPickup = false;
} }
else if (strcmp (model, "w_9mmclip.mdl") == 0 && !isSubmachine) { else if (!isSubmachine && strcmp (model, "w_9mmclip.mdl") == 0) {
allowPickup = false; allowPickup = false;
} }
else if (strcmp (model, "w_crossbow_clip.mdl") == 0 && !isSniperRifle) { else if (!isSniperRifle && strcmp (model, "w_crossbow_clip.mdl") == 0) {
allowPickup = false; allowPickup = false;
} }
else if (strcmp (model, "w_chainammo.mdl") == 0 && primaryWeaponCarried != Weapon::M249) { else if (primaryWeaponCarried != Weapon::M249 && strcmp (model, "w_chainammo.mdl") == 0) {
allowPickup = false; allowPickup = false;
} }
} }
@ -4513,13 +4513,14 @@ void Bot::pickupItem_ () {
else { else {
// primary weapon // primary weapon
int wid = bestWeaponCarried (); int wid = bestWeaponCarried ();
bool niceWeapon = rateGroundWeapon (m_pickupItem);
if (wid == Weapon::Shield || wid > 6 || hasShield ()) { if ((wid == Weapon::Shield || wid > 6 || hasShield ()) && niceWeapon) {
selectWeaponById (wid); selectWeaponById (wid);
issueCommand ("drop"); issueCommand ("drop");
} }
if (!wid) { if (!wid || !niceWeapon) {
m_itemIgnore = m_pickupItem; m_itemIgnore = m_pickupItem;
m_pickupItem = nullptr; m_pickupItem = nullptr;
m_pickupType = Pickup::None; m_pickupType = Pickup::None;