Ejemplo n.º 1
0
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;
	}
}
Ejemplo n.º 2
0
void Equipment::deequip_weapon() {
	if (has_weapon()) {
		inventory.add(weapon.as_item(), 1);
		weapon = Weapon(NONE);

		if (!valid_to_use_projectile(projectile)) {
			deequip_projectiles();
		}
	}
}
Ejemplo n.º 3
0
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" );
}