diff options
author | Michael <martin.dev.446@gmail.com> | 2019-12-28 16:58:18 -0500 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2021-12-19 15:46:20 +0100 |
commit | 72e61625bca5a8420fc76666db3481673b180a69 (patch) | |
tree | b38f9f028c45104e6fc1a270ebf3d70574b3c305 /src | |
parent | bfc8889d544925182e2ddc4617ac5301c15745ae (diff) |
additional output for additem command (#24006)
* additional output for additem command
when removing items with additem:
if the user provides an amount too large of a negative amount, the command will now output the amount of items that could not be destroyed.
* renamed sql file to hopefully avoid conflicts
* added clarification to failure string
* changed unneeded else if condition to else
* code style; braces
* Update and rename 9999_99_99_99_world.sql to 2019_12_28_01_world.sql
(cherry picked from commit 6b19f4a0ab1f77ea969a080a6eea0379baf9f8df)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 36 | ||||
-rw-r--r-- | src/server/game/Entities/Player/Player.h | 2 | ||||
-rw-r--r-- | src/server/game/Miscellaneous/Language.h | 2 | ||||
-rw-r--r-- | src/server/scripts/Commands/cs_misc.cpp | 23 |
4 files changed, 41 insertions, 22 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index a1cb2059172..db6cfdb97e8 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -12795,7 +12795,7 @@ void Player::DestroyItem(uint8 bag, uint8 slot, bool update) } } -void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool unequip_check) +uint32 Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool unequip_check) { TC_LOG_DEBUG("entities.player.items", "Player::DestroyItemCount: Player '%s' (%s), Item: %u, Count: %u", GetName().c_str(), GetGUID().ToString().c_str(), itemEntry, count); @@ -12816,7 +12816,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool DestroyItem(INVENTORY_SLOT_BAG_0, i, update); if (remcount >= count) - return; + return remcount; } else { @@ -12825,7 +12825,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool if (IsInWorld() && update) item->SendUpdateToPlayer(this); item->SetState(ITEM_CHANGED, this); - return; + return remcount; } } } @@ -12849,7 +12849,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool DestroyItem(i, j, update); if (remcount >= count) - return; + return remcount; } else { @@ -12858,7 +12858,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool if (IsInWorld() && update) item->SendUpdateToPlayer(this); item->SetState(ITEM_CHANGED, this); - return; + return remcount; } } } @@ -12881,7 +12881,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool DestroyItem(INVENTORY_SLOT_BAG_0, i, update); if (remcount >= count) - return; + return remcount; } } else @@ -12891,7 +12891,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool if (IsInWorld() && update) item->SendUpdateToPlayer(this); item->SetState(ITEM_CHANGED, this); - return; + return remcount; } } } @@ -12909,7 +12909,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool remcount += item->GetCount(); DestroyItem(INVENTORY_SLOT_BAG_0, i, update); if (remcount >= count) - return; + return remcount; } else { @@ -12918,7 +12918,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool if (IsInWorld() && update) item->SendUpdateToPlayer(this); item->SetState(ITEM_CHANGED, this); - return; + return remcount; } } } @@ -12942,7 +12942,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool DestroyItem(i, j, update); if (remcount >= count) - return; + return remcount; } else { @@ -12951,7 +12951,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool if (IsInWorld() && update) item->SendUpdateToPlayer(this); item->SetState(ITEM_CHANGED, this); - return; + return remcount; } } } @@ -12973,7 +12973,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool remcount += item->GetCount(); DestroyItem(INVENTORY_SLOT_BAG_0, i, update); if (remcount >= count) - return; + return remcount; } } else @@ -12983,7 +12983,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool if (IsInWorld() && update) item->SendUpdateToPlayer(this); item->SetState(ITEM_CHANGED, this); - return; + return remcount; } } } @@ -13002,7 +13002,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool DestroyItem(INVENTORY_SLOT_BAG_0, i, update); if (remcount >= count) - return; + return remcount; } else { @@ -13011,7 +13011,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool if (IsInWorld() && update) item->SendUpdateToPlayer(this); item->SetState(ITEM_CHANGED, this); - return; + return remcount; } } } @@ -13030,7 +13030,7 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool DestroyItem(INVENTORY_SLOT_BAG_0, i, update); if (remcount >= count) - return; + return remcount; } else { @@ -13039,12 +13039,12 @@ void Player::DestroyItemCount(uint32 itemEntry, uint32 count, bool update, bool if (IsInWorld() && update) item->SendUpdateToPlayer(this); item->SetState(ITEM_CHANGED, this); - return; + return remcount; } } } } - + return remcount; } void Player::DestroyZoneLimitedItem(bool update, uint32 new_zone) diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h index 85578cd1ff6..ce2e681a4c8 100644 --- a/src/server/game/Entities/Player/Player.h +++ b/src/server/game/Entities/Player/Player.h @@ -1431,7 +1431,7 @@ class TC_GAME_API Player : public Unit, public GridObject<Player> // in trade, guild bank, mail.... void RemoveItemDependentAurasAndCasts(Item* pItem); void DestroyItem(uint8 bag, uint8 slot, bool update); - void DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check = false); + uint32 DestroyItemCount(uint32 item, uint32 count, bool update, bool unequip_check = false); void DestroyItemCount(Item* item, uint32& count, bool update); void DestroyConjuredItems(bool update); void DestroyZoneLimitedItem(bool update, uint32 new_zone); diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h index a1f167ba02d..fcd094ddd97 100644 --- a/src/server/game/Miscellaneous/Language.h +++ b/src/server/game/Miscellaneous/Language.h @@ -685,7 +685,7 @@ enum TrinityStrings LANG_GMLIST_HEADER = 598, LANG_GMLIST_EMPTY = 599, - LANG_REMOVEITEM_FAILURE = 600, // 3.3.5 RESERVED + LANG_REMOVEITEM_FAILURE = 600, // End Level 3 list, continued at 1100 diff --git a/src/server/scripts/Commands/cs_misc.cpp b/src/server/scripts/Commands/cs_misc.cpp index 7b74a54774f..af77c7466d2 100644 --- a/src/server/scripts/Commands/cs_misc.cpp +++ b/src/server/scripts/Commands/cs_misc.cpp @@ -1333,8 +1333,27 @@ public: // Subtract if (count < 0) { - playerTarget->DestroyItemCount(itemId, -count, true, false); - handler->PSendSysMessage(LANG_REMOVEITEM, itemId, -count, handler->GetNameLink(playerTarget).c_str()); + uint32 destroyedItemCount = playerTarget->DestroyItemCount(itemId, -count, true, false); + + if (destroyedItemCount > 0) + { + // output the amount of items successfully destroyed + handler->PSendSysMessage(LANG_REMOVEITEM, itemId, destroyedItemCount, handler->GetNameLink(playerTarget).c_str()); + + // check to see if we were unable to destroy all of the amount requested. + uint32 unableToDestroyItemCount = -count - destroyedItemCount; + if (unableToDestroyItemCount > 0) + { + // output message for the amount of items we couldn't destroy + handler->PSendSysMessage(LANG_REMOVEITEM_FAILURE, itemId, unableToDestroyItemCount, handler->GetNameLink(playerTarget).c_str()); + } + } + else + { + // failed to destroy items of the amount requested + handler->PSendSysMessage(LANG_REMOVEITEM_FAILURE, itemId, -count, handler->GetNameLink(playerTarget).c_str()); + } + return true; } |