From 1ceb4a95a5e49b3446cbf7a65fea7c85c893a2cd Mon Sep 17 00:00:00 2001 From: Maru Date: Fri, 17 Nov 2017 22:29:29 -0200 Subject: [PATCH] OneHandedWeapon helper; --- .../Server_Zone/Inventory/Inventory.cpp | 34 +++++++++++++++++-- src/servers/Server_Zone/Inventory/Inventory.h | 2 ++ 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/servers/Server_Zone/Inventory/Inventory.cpp b/src/servers/Server_Zone/Inventory/Inventory.cpp index 45af7d61..b1bb8e87 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.cpp +++ b/src/servers/Server_Zone/Inventory/Inventory.cpp @@ -439,6 +439,30 @@ bool Core::Inventory::removeCrystal( CrystalType type, uint32_t amount ) return true; } +bool Core::Inventory::isOneHandedWeapon( ItemCategory weaponCategory ) +{ + switch ( weaponCategory ) + { + case ItemCategory::AlcPri: + case ItemCategory::ArmPri: + case ItemCategory::BotPri: + case ItemCategory::ClnPri: + case ItemCategory::CnjWep: + case ItemCategory::CrpPri: + case ItemCategory::FshPri: + case ItemCategory::GlaWep: + case ItemCategory::GldPri: // Goldsmith + case ItemCategory::LtwPri: + case ItemCategory::MinPri: + case ItemCategory::ThmWep: + case ItemCategory::WvrPri: + case ItemCategory::BlmPri: // Blacksmith + return true; + default: + return false; + } +} + bool Core::Inventory::isObtainable( uint32_t catalogId, uint8_t quantity ) { @@ -846,10 +870,14 @@ uint16_t Core::Inventory::calculateEquippedGearItemLevel() iLvlResult += currItem->getItemLevel(); // If item is weapon and isn't one-handed - if ( currItem->isWeapon() && - ( currItem->getCategory() != ItemCategory::CnjWep || - currItem->getCategory() != ItemCategory::ThmWep ) ) + if ( currItem->isWeapon() && !isOneHandedWeapon( currItem->getCategory() ) ) + { iLvlResult += currItem->getItemLevel(); + } + else + { + g_log.debug( "Is one handed" ); + } } it++; diff --git a/src/servers/Server_Zone/Inventory/Inventory.h b/src/servers/Server_Zone/Inventory/Inventory.h index c0ceb727..010d4acb 100644 --- a/src/servers/Server_Zone/Inventory/Inventory.h +++ b/src/servers/Server_Zone/Inventory/Inventory.h @@ -153,6 +153,8 @@ public: bool updateContainer( uint16_t containerId, uint8_t slotId, ItemPtr pItem ); + /*! heck if weapon category qualifies the weapon as onehanded */ + bool isOneHandedWeapon( Common::ItemCategory weaponCategory ); /*! calculate and return player ilvl based off equipped gear */ uint16_t calculateEquippedGearItemLevel(); /*! return the current amount of currency of type */