diff --git a/server/gameserver/human.cc b/server/gameserver/human.cc index d5dab6f..63952f0 100644 --- a/server/gameserver/human.cc +++ b/server/gameserver/human.cc @@ -3431,24 +3431,19 @@ void Human::ProcUseItem(int item_id) Weapon* Human::TakeonWeapon(MetaData::Equip* equip_meta) { + if (equip_meta->i->equip_type() != EQUIP_TYPE_WEAPON) { + return nullptr; + } + if (equip_meta->i->equip_subtype() == 1) { + return nullptr; + } + Weapon* weapon = nullptr; - if (equip_meta->i->equip_type() == EQUIP_TYPE_WEAPON) { - if (equip_meta->i->equip_subtype() == 1) { - } else { - for (int i = GUN_SLOT1; i <= GUN_SLOT2; ++i) { - if (weapons[i].weapon_id == 0) { - weapon = &weapons[i]; - weapon->weapon_idx = i; - } else if (weapons[i].meta->i->equip_subtype() == equip_meta->i->equip_subtype() && - weapons[i].meta->group_id == equip_meta->group_id){ - if (equip_meta->i->quality() > weapons[i].meta->i->quality()) { - weapon = &weapons[i]; - weapon->weapon_idx = i; - } else { - weapon = nullptr; - } - } - } + for (int idx = GUN_SLOT1; idx <= GUN_SLOT2; ++idx) { + if (weapons[idx].weapon_id == 0) { + weapon = &weapons[idx]; + weapon->weapon_idx = idx; + break; } } return weapon;