@ -59,6 +59,7 @@ std::map<EquipSlot,std::weak_ptr<Item>>Inventory::equipment;
std : : map < std : : string , EquipSlot > ItemInfo : : nameToEquipSlot ;
int Item : : IsBlankStaticCallCounter = 0 ;
safemap < int , float > Stats : : maxDamageReductionTable ;
ItemEnhancementFunctionPrimingData Item : : enhanceFunctionPrimed ( " CanEnhanceItem() " ) ;
ItemInfo : : ItemInfo ( )
: customProps ( { nullptr , nullptr } ) , img ( nullptr ) { }
@ -705,8 +706,18 @@ const uint8_t Item::EnhancementLevel()const{
return enhancementLevel ;
} ;
void Item : : EnhanceItem ( ) {
enhanceFunctionPrimed . Validate ( ActualName ( ) , EnhancementLevel ( ) ) ;
if ( enhancementLevel + 1 > " Item.Item Max Enhancement Level " _I ) ERR ( " WARNING! Attempted to enhance " < < DisplayName ( ) < < " beyond the cap of " < < " Item.Item Max Enhancement Level " _I ) ;
enhancementLevel + + ;
const CraftingRequirement & consumedResources = GetEnhancementInfo ( ) [ EnhancementLevel ( ) ] . craftingRequirement ;
for ( const Item & it : consumedResources . GetItems ( ) ) {
Inventory : : RemoveItem ( it . ActualName ( ) , it . Amt ( ) ) ;
}
game - > GetPlayer ( ) - > SetMoney ( game - > GetPlayer ( ) - > GetMoney ( ) - consumedResources . GetCost ( ) ) ;
} ;
const std : : vector < std : : pair < int , Stats > > & ItemSet : : GetSetBonusBreakpoints ( ) const {
@ -843,4 +854,32 @@ void EnhancementInfo::SetCraftingRequirements(const int enhanceLevel,const std::
}
EnhancementLevelInfo : : EnhancementLevelInfo ( const Stats & stats , const CraftingRequirement & craftingRequirement )
: stats ( stats ) , craftingRequirement ( craftingRequirement ) { }
: stats ( stats ) , craftingRequirement ( craftingRequirement ) { }
const bool Item : : CanEnhanceItem ( ) const {
if ( ! GetEnhancementInfo ( ) . CanBeEnhanced ( ) ) return false ;
const EnhancementLevelInfo & enhanceInfo = GetEnhancementInfo ( ) [ EnhancementLevel ( ) + 1 ] ;
if ( EnhancementLevel ( ) > = " Item.Item Max Enhancement Level " _I ) return false ;
if ( game - > GetPlayer ( ) - > GetMoney ( ) < enhanceInfo . craftingRequirement . GetCost ( ) ) return false ;
for ( const Item & it : enhanceInfo . craftingRequirement . GetItems ( ) ) {
if ( Inventory : : GetItemCount ( ActualName ( ) ) < it . Amt ( ) ) {
return false ;
}
}
enhanceFunctionPrimed . enhancementLevel = EnhancementLevel ( ) ;
enhanceFunctionPrimed . item = ActualName ( ) ;
return enhanceFunctionPrimed = true ;
}
const EnhancementInfo & ItemInfo : : GetEnhancementInfo ( ) const {
return enhancement ;
}
const EnhancementInfo & Item : : GetEnhancementInfo ( ) const {
return it - > GetEnhancementInfo ( ) ;
}
const bool EnhancementInfo : : CanBeEnhanced ( ) const {
return enhancementStats . size ( ) = = " Item.Item Max Enhancement Level " _I + 1 & & craftingRequirements . size ( ) = = " Item.Item Max Enhancement Level " _I + 1 ;
} ;