mirror of
https://github.com/mangosfour/server.git
synced 2025-12-16 22:37:02 +00:00
Lots of cmangos commirs applied
This commit is contained in:
parent
8431568536
commit
18dd18780d
44 changed files with 677 additions and 323 deletions
|
|
@ -3629,17 +3629,18 @@ void Player::removeSpell(uint32 spell_id, bool disabled, bool learn_low_rank, bo
|
|||
PlayerSpellMap::iterator prev_itr = m_spells.find(prev_id);
|
||||
if (prev_itr != m_spells.end())
|
||||
{
|
||||
if (prev_itr->second.dependent != cur_dependent)
|
||||
PlayerSpell& spell = prev_itr->second;
|
||||
if (spell.dependent != cur_dependent)
|
||||
{
|
||||
prev_itr->second.dependent = cur_dependent;
|
||||
if (prev_itr->second.state != PLAYERSPELL_NEW)
|
||||
prev_itr->second.state = PLAYERSPELL_CHANGED;
|
||||
spell.dependent = cur_dependent;
|
||||
if (spell.state != PLAYERSPELL_NEW)
|
||||
spell.state = PLAYERSPELL_CHANGED;
|
||||
}
|
||||
|
||||
// now re-learn if need re-activate
|
||||
if (cur_active && !prev_itr->second.active && learn_low_rank)
|
||||
if (cur_active && !spell.active && learn_low_rank)
|
||||
{
|
||||
if (addSpell(prev_id, true, false, prev_itr->second.dependent, prev_itr->second.disabled))
|
||||
if (addSpell(prev_id, true, false, spell.dependent, spell.disabled))
|
||||
{
|
||||
// downgrade spell ranks in spellbook and action bar
|
||||
WorldPacket data(SMSG_SUPERCEDED_SPELL, 4 + 4);
|
||||
|
|
@ -6306,7 +6307,12 @@ void Player::CheckAreaExploreAndOutdoor()
|
|||
SpellEntry const* spellInfo = sSpellStore.LookupEntry(itr->first);
|
||||
if (!spellInfo || !IsNeedCastSpellAtOutdoor(spellInfo) || HasAura(itr->first))
|
||||
continue;
|
||||
CastSpell(this, itr->first, true, NULL);
|
||||
|
||||
SpellShapeshiftEntry const* shapeShift = spellInfo->GetSpellShapeshift();
|
||||
|
||||
if (!shapeShift || (shapeShift->Stances || shapeShift->StancesNot) && !IsNeedCastSpellAtFormApply(spellInfo, GetShapeshiftForm()))
|
||||
continue;
|
||||
CastSpell(this, itr->first, true, nullptr);
|
||||
}
|
||||
}
|
||||
else if (sWorld.getConfig(CONFIG_BOOL_VMAP_INDOOR_CHECK) && !isGameMaster())
|
||||
|
|
@ -6980,13 +6986,13 @@ void Player::UpdateZone(uint32 newZone, uint32 newArea)
|
|||
|
||||
if (zone->flags & AREA_FLAG_SANCTUARY) // in sanctuary
|
||||
{
|
||||
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SUPPORTABLE);
|
||||
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_SANCTUARY);
|
||||
if (sWorld.IsFFAPvPRealm())
|
||||
SetFFAPvP(false);
|
||||
}
|
||||
else
|
||||
{
|
||||
RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_SUPPORTABLE);
|
||||
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_SANCTUARY);
|
||||
}
|
||||
|
||||
if (zone->flags & AREA_FLAG_CAPITAL) // in capital city
|
||||
|
|
@ -7812,7 +7818,7 @@ void Player::CastItemUseSpell(Item* item, SpellCastTargets const& targets, uint8
|
|||
spell->m_CastItem = item;
|
||||
spell->m_cast_count = cast_count; // set count of casts
|
||||
spell->m_currentBasePoints[EFFECT_INDEX_0] = learning_spell_id;
|
||||
spell->prepare(&targets);
|
||||
spell->SpellStart(&targets);
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -7843,7 +7849,7 @@ void Player::CastItemUseSpell(Item* item, SpellCastTargets const& targets, uint8
|
|||
spell->m_CastItem = item;
|
||||
spell->m_cast_count = cast_count; // set count of casts
|
||||
spell->m_glyphIndex = glyphIndex; // glyph index
|
||||
spell->prepare(&targets);
|
||||
spell->SpellStart(&targets);
|
||||
|
||||
++count;
|
||||
}
|
||||
|
|
@ -7875,7 +7881,7 @@ void Player::CastItemUseSpell(Item* item, SpellCastTargets const& targets, uint8
|
|||
spell->m_CastItem = item;
|
||||
spell->m_cast_count = cast_count; // set count of casts
|
||||
spell->m_glyphIndex = glyphIndex; // glyph index
|
||||
spell->prepare(&targets);
|
||||
spell->SpellStart(&targets);
|
||||
|
||||
++count;
|
||||
}
|
||||
|
|
@ -18354,6 +18360,10 @@ void Player::Whisper(const std::string& text, uint32 language, ObjectGuid receiv
|
|||
ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER, text.c_str(), Language(language), GetChatTag(), GetObjectGuid(), GetName());
|
||||
rPlayer->GetSession()->SendPacket(&data);
|
||||
|
||||
// do not send confirmations, afk, dnd or system notifications for addon messages
|
||||
if (language == LANG_ADDON)
|
||||
return;
|
||||
|
||||
data.clear();
|
||||
ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER_INFORM, text.c_str(), Language(language), CHAT_TAG_NONE, rPlayer->GetObjectGuid());
|
||||
GetSession()->SendPacket(&data);
|
||||
|
|
@ -18365,10 +18375,13 @@ void Player::Whisper(const std::string& text, uint32 language, ObjectGuid receiv
|
|||
}
|
||||
|
||||
// announce afk or dnd message
|
||||
if (rPlayer->isAFK())
|
||||
ChatHandler(this).PSendSysMessage(LANG_PLAYER_AFK, rPlayer->GetName(), rPlayer->autoReplyMsg.c_str());
|
||||
else if (rPlayer->isDND())
|
||||
ChatHandler(this).PSendSysMessage(LANG_PLAYER_DND, rPlayer->GetName(), rPlayer->autoReplyMsg.c_str());
|
||||
if (rPlayer->isAFK() || rPlayer->isDND())
|
||||
{
|
||||
const ChatMsg msgtype = rPlayer->isAFK() ? CHAT_MSG_AFK : CHAT_MSG_DND;
|
||||
data.clear();
|
||||
ChatHandler::BuildChatPacket(data, msgtype, rPlayer->autoReplyMsg.c_str(), LANG_UNIVERSAL, CHAT_TAG_NONE, rPlayer->GetObjectGuid());
|
||||
GetSession()->SendPacket(&data);
|
||||
}
|
||||
}
|
||||
|
||||
void Player::PetSpellInitialize()
|
||||
|
|
@ -20780,8 +20793,8 @@ bool Player::IsSpellFitByClassAndRace(uint32 spell_id, uint32* pReqlevel /*= NUL
|
|||
if (abilityEntry->classmask && (abilityEntry->classmask & classmask) == 0)
|
||||
continue;
|
||||
|
||||
SkillRaceClassInfoMapBounds bounds = sSpellMgr.GetSkillRaceClassInfoMapBounds(abilityEntry->skillId);
|
||||
for (SkillRaceClassInfoMap::const_iterator itr = bounds.first; itr != bounds.second; ++itr)
|
||||
SkillRaceClassInfoMapBounds raceBounds = sSpellMgr.GetSkillRaceClassInfoMapBounds(abilityEntry->skillId);
|
||||
for (SkillRaceClassInfoMap::const_iterator itr = raceBounds.first; itr != raceBounds.second; ++itr)
|
||||
{
|
||||
SkillRaceClassInfoEntry const* skillRCEntry = itr->second;
|
||||
if ((skillRCEntry->raceMask & racemask) && (skillRCEntry->classMask & classmask))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue