Core/Items: Removed old stupid code dropping enchantment charges when sheathing weapons...
This commit is contained in:
@@ -9243,54 +9243,6 @@ void Player::ResetPetTalents()
|
||||
/*** STORAGE SYSTEM ***/
|
||||
/*********************************************************/
|
||||
|
||||
void Player::SetVirtualItemSlot(uint8 i, Item* item)
|
||||
{
|
||||
ASSERT(i < 3);
|
||||
if (i < 2 && item)
|
||||
{
|
||||
if (!item->GetEnchantmentId(TEMP_ENCHANTMENT_SLOT))
|
||||
return;
|
||||
uint32 charges = item->GetEnchantmentCharges(TEMP_ENCHANTMENT_SLOT);
|
||||
if (charges == 0)
|
||||
return;
|
||||
if (charges > 1)
|
||||
item->SetEnchantmentCharges(TEMP_ENCHANTMENT_SLOT, charges-1);
|
||||
else if (charges <= 1)
|
||||
{
|
||||
ApplyEnchantment(item, TEMP_ENCHANTMENT_SLOT, false);
|
||||
item->ClearEnchantment(TEMP_ENCHANTMENT_SLOT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void Player::SetSheath(SheathState sheathed)
|
||||
{
|
||||
switch (sheathed)
|
||||
{
|
||||
case SHEATH_STATE_UNARMED: // no prepared weapon
|
||||
SetVirtualItemSlot(0, nullptr);
|
||||
SetVirtualItemSlot(1, nullptr);
|
||||
SetVirtualItemSlot(2, nullptr);
|
||||
break;
|
||||
case SHEATH_STATE_MELEE: // prepared melee weapon
|
||||
SetVirtualItemSlot(0, GetWeaponForAttack(BASE_ATTACK, true));
|
||||
SetVirtualItemSlot(1, GetWeaponForAttack(OFF_ATTACK, true));
|
||||
SetVirtualItemSlot(2, nullptr);
|
||||
break;
|
||||
case SHEATH_STATE_RANGED: // prepared ranged weapon
|
||||
SetVirtualItemSlot(0, nullptr);
|
||||
SetVirtualItemSlot(1, nullptr);
|
||||
SetVirtualItemSlot(2, GetWeaponForAttack(RANGED_ATTACK, true));
|
||||
break;
|
||||
default:
|
||||
SetVirtualItemSlot(0, nullptr);
|
||||
SetVirtualItemSlot(1, nullptr);
|
||||
SetVirtualItemSlot(2, nullptr);
|
||||
break;
|
||||
}
|
||||
Unit::SetSheath(sheathed); // this must visualize Sheath changing for other players...
|
||||
}
|
||||
|
||||
uint8 Player::FindEquipSlot(ItemTemplate const* proto, uint32 slot, bool swap) const
|
||||
{
|
||||
uint8 slots[4];
|
||||
|
||||
@@ -1322,8 +1322,6 @@ class TC_GAME_API Player : public Unit, public GridObject<Player>
|
||||
/*** STORAGE SYSTEM ***/
|
||||
/*********************************************************/
|
||||
|
||||
void SetVirtualItemSlot(uint8 i, Item* item);
|
||||
void SetSheath(SheathState sheathed) override; // overwrite Unit version
|
||||
uint8 FindEquipSlot(ItemTemplate const* proto, uint32 slot, bool swap) const;
|
||||
uint32 GetItemCount(uint32 item, bool inBankAlso = false, Item* skipItem = nullptr) const;
|
||||
uint32 GetItemCountWithLimitCategory(uint32 limitCategory, Item* skipItem = nullptr) const;
|
||||
|
||||
@@ -1479,7 +1479,7 @@ class TC_GAME_API Unit : public WorldObject
|
||||
void ApplyCastTimePercentMod(float val, bool apply);
|
||||
|
||||
SheathState GetSheath() const { return SheathState(GetByteValue(UNIT_FIELD_BYTES_2, 0)); }
|
||||
virtual void SetSheath(SheathState sheathed) { SetByteValue(UNIT_FIELD_BYTES_2, 0, sheathed); }
|
||||
void SetSheath(SheathState sheathed) { SetByteValue(UNIT_FIELD_BYTES_2, 0, sheathed); }
|
||||
|
||||
// faction template id
|
||||
uint32 getFaction() const { return GetUInt32Value(UNIT_FIELD_FACTIONTEMPLATE); }
|
||||
|
||||
Reference in New Issue
Block a user