mirror of
https://github.com/araxiaonline/TrinityCore2.git
synced 2026-06-16 04:49:38 -04:00
[7368] Implement unequip unexpected offhand weapons at talent reset (mostly for warror talent case). Author: Lightguard
Implemented OffhandCheckAtTalentsReset option for unequip at zone change (default)
and at talent reset itself (can be enabled).
--HG--
branch : trunk
This commit is contained in:
@@ -3443,6 +3443,13 @@ bool Player::resetTalents(bool no_cost)
|
||||
//FIXME: remove pet before or after unlearn spells? for now after unlearn to allow removing of talent related, pet affecting auras
|
||||
RemovePet(NULL,PET_SAVE_NOT_IN_SLOT, true);
|
||||
|
||||
if(m_canTitanGrip)
|
||||
{
|
||||
m_canTitanGrip = false;
|
||||
if(sWorld.getConfig(CONFIG_OFFHAND_CHECK_AT_TALENTS_RESET))
|
||||
AutoUnequipOffhandIfNeed();
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -6575,6 +6582,9 @@ void Player::UpdateZone(uint32 newZone)
|
||||
if(isAlive())
|
||||
DestroyZoneLimitedItem( true, newZone );
|
||||
|
||||
// check some item equip limitations (in result lost CanTitanGrip at talent reset, for example)
|
||||
AutoUnequipOffhandIfNeed();
|
||||
|
||||
// recent client version not send leave/join channel packets for built-in local channels
|
||||
UpdateLocalChannels( newZone );
|
||||
|
||||
@@ -19366,8 +19376,8 @@ void Player::AutoUnequipOffhandIfNeed()
|
||||
if(!offItem)
|
||||
return;
|
||||
|
||||
// need unequip for 2h-weapon without TitanGrip
|
||||
if (!IsTwoHandUsed())
|
||||
// need unequip offhand for 2h-weapon without TitanGrip (in any from hands)
|
||||
if (CanTitanGrip() || (offItem->GetProto()->InventoryType != INVTYPE_2HWEAPON && !IsTwoHandUsed()))
|
||||
return;
|
||||
|
||||
ItemPosCountVec off_dest;
|
||||
@@ -19379,7 +19389,16 @@ void Player::AutoUnequipOffhandIfNeed()
|
||||
}
|
||||
else
|
||||
{
|
||||
sLog.outError("Player::EquipItem: Can's store offhand item at 2hand item equip for player (GUID: %u).",GetGUIDLow());
|
||||
MailItemsInfo mi;
|
||||
mi.AddItem(offItem->GetGUIDLow(), offItem->GetEntry(), offItem);
|
||||
MoveItemFromInventory(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_OFFHAND, true);
|
||||
CharacterDatabase.BeginTransaction();
|
||||
offItem->DeleteFromInventoryDB(); // deletes item from character's inventory
|
||||
offItem->SaveToDB(); // recursive and not have transaction guard into self, item not in inventory and can be save standalone
|
||||
CharacterDatabase.CommitTransaction();
|
||||
|
||||
std::string subject = GetSession()->GetMangosString(LANG_NOT_EQUIPPED_ITEM);
|
||||
WorldSession::SendMailTo(this, MAIL_NORMAL, MAIL_STATIONERY_GM, GetGUIDLow(), GetGUIDLow(), subject, 0, &mi, 0, 0, MAIL_CHECK_MASK_NONE);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -951,6 +951,8 @@ void World::LoadConfigSettings(bool reload)
|
||||
m_configs[CONFIG_ARENA_SEASON_ID] = sConfig.GetIntDefault ("Arena.ArenaSeason.ID", 1);
|
||||
m_configs[CONFIG_ARENA_SEASON_IN_PROGRESS] = sConfig.GetBoolDefault("Arena.ArenaSeason.InProgress", true);
|
||||
|
||||
m_configs[CONFIG_OFFHAND_CHECK_AT_TALENTS_RESET] = sConfig.GetBoolDefault("OffhandCheckAtTalentsReset", false);
|
||||
|
||||
m_configs[CONFIG_INSTANT_LOGOUT] = sConfig.GetIntDefault("InstantLogout", SEC_MODERATOR);
|
||||
|
||||
m_VisibleUnitGreyDistance = sConfig.GetFloatDefault("Visibility.Distance.Grey.Unit", 1);
|
||||
|
||||
@@ -215,6 +215,7 @@ enum WorldConfigs
|
||||
CONFIG_INTERVAL_LOG_UPDATE,
|
||||
CONFIG_MIN_LOG_UPDATE,
|
||||
CONFIG_ENABLE_SINFO_LOGIN,
|
||||
CONFIG_OFFHAND_CHECK_AT_TALENTS_RESET,
|
||||
CONFIG_VALUE_COUNT
|
||||
};
|
||||
|
||||
|
||||
@@ -566,6 +566,11 @@ LogColors = ""
|
||||
# Default: 0 - no skilups
|
||||
# 1 - skilups possible
|
||||
#
|
||||
# OffhandCheckAtTalentsReset
|
||||
# Talent reset can change offhand weapon restrictions for equip slots.
|
||||
# Default: 0 - recheck offhand slot weapon only at zone update
|
||||
# 1 - recheck offhand slot weapon at talent reset also
|
||||
#
|
||||
# Event.Announce
|
||||
# Default: 0 (false)
|
||||
# 1 (true)
|
||||
@@ -626,6 +631,7 @@ MaxGroupXPDistance = 74
|
||||
MailDeliveryDelay = 3600
|
||||
SkillChance.Prospecting = 0
|
||||
SkillChance.Milling = 0
|
||||
OffhandCheckAtTalentsReset = 0
|
||||
Event.Announce = 0
|
||||
BeepAtStart = 1
|
||||
Motd = "Welcome to a Trinity Core server."
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "7367"
|
||||
#define REVISION_NR "7368"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
||||
Reference in New Issue
Block a user