Пример #1
0
bool Equipment::equip(SPItem item, unsigned int skillBase, unsigned int magicBase, bool checkCanEquip) {
	if (item->getUsageType() == ItemUsageType::equip && (!checkCanEquip || item->getEquippedStatus() == ItemEquippedStatus::not_equipped)) {
		// check required skill / magic, check unequip as on client
		EquipmentType et = getEquipmentType(item);
		//bool canEquip1 = canEquip(item, skillBase, magicBase);
		//std::cout << "eq type: " << et << (canEquip1 ? " e ok" : " enok ") << std::endl;
		if (et != et_invalid && (!checkCanEquip || canEquip(item, skillBase, magicBase))) {
			if (items[et].get() != 0) {
				unequip(item, skillBase, magicBase, false);
			}
			items[et] = item;
			item->setEquippedStatus(ItemEquippedStatus::equipped);
			calculateEffects();
			return true;
		}
	}
	return false;
}
Пример #2
0
bool Equipment::unequip(SPItem item, unsigned int skillBase, unsigned int magicBase, bool removeOnly) {
	if (item->getUsageType() == ItemUsageType::equip && item->getEquippedStatus() == ItemEquippedStatus::equipped) {
		// check required skill / magic, check unequip as on client
		EquipmentType et = getEquipmentType(item);
std::cout << "et: " << et << ((items[et].get()!=0) ? " not null" : "null") << std::endl;
		if (et != et_invalid && items[et].get()!=0 && items[et]->getId() == item->getId()) {
			if (!removeOnly) {
				items[et]->setEquippedStatus(ItemEquippedStatus::not_equipped);
			}
			items[et] = SPItem();	// null item
			// check if other items need to be unequipped as a consequence of this item being removed (skill / magic might have dropped)
			checkUnequipUnsupportedItems(skillBase, magicBase, removeOnly);
			calculateEffects();
			return true;
		}
	}
	return false;

}