void Equipment::equip(const Item& item, int amnt) { switch (item.item_entry().equipment_type) { case ItemEntry::ARMOUR: if (armour.properties.flags & CURSED) break; deequip_armour(); armour = item.as_armour(); break; case ItemEntry::WEAPON: if (weapon.properties.flags & CURSED) break; deequip_projectiles(); if (has_weapon()) { inventory.add(weapon.as_item(), 1); } weapon = item.as_weapon(); break; case ItemEntry::PROJECTILE: if (projectile.properties.flags & CURSED) break; if (!(item.as_projectile() == projectile)) deequip_projectiles(); projectile = item.as_projectile(); projectile_amnt += amnt; break; } }
void Equipment::deequip_weapon() { if (has_weapon()) { inventory.add(weapon.as_item(), 1); weapon = Weapon(NONE); if (!valid_to_use_projectile(projectile)) { deequip_projectiles(); } } }
bool martialart::weapon_valid( const item &it ) const { if( it.is_null() ) { return true; } if( has_weapon( it.typeId() ) ) { return true; } return !strictly_unarmed && it.has_flag( "UNARMED_WEAPON" ); }