aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNay <dnpd.dd@gmail.com>2011-12-22 21:21:41 +0000
committerNay <dnpd.dd@gmail.com>2011-12-22 21:21:41 +0000
commit94e85c34d3187de243984e46e1cc6d9ef3361529 (patch)
tree440b2be3de18034baa216991a6f5de0e9e9e81d7
parent090bb5a45e4b7608b57577c525a16416986a0b3e (diff)
Core/Spell: Enable and 'fix' SMSG_SET_PCT/FLAG_SPELL_MODIFIER
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp12
-rw-r--r--src/server/game/Server/Protocol/Opcodes.cpp4
-rwxr-xr-xsrc/server/game/Server/Protocol/Opcodes.h4
3 files changed, 10 insertions, 10 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 67c301977fc..e1494a094c4 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -19730,29 +19730,29 @@ bool Player::IsAffectedBySpellmod(SpellInfo const* spellInfo, SpellModifier* mod
void Player::AddSpellMod(SpellModifier* mod, bool apply)
{
sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "Player::AddSpellMod %d", mod->spellId);
- uint16 Opcode = (mod->type == SPELLMOD_FLAT) ? SMSG_SET_FLAT_SPELL_MODIFIER : SMSG_SET_PCT_SPELL_MODIFIER;
+ uint16 opcode = (mod->type == SPELLMOD_FLAT) ? SMSG_SET_FLAT_SPELL_MODIFIER : SMSG_SET_PCT_SPELL_MODIFIER;
int i = 0;
flag96 _mask = 0;
for (int eff = 0; eff < 96; ++eff)
{
- if (eff != 0 && eff%32 == 0)
+ if (eff != 0 && eff % 32 == 0)
_mask[i++] = 0;
- _mask[i] = uint32(1) << (eff-(32*i));
+ _mask[i] = uint32(1) << (eff - (32 * i));
if (mod->mask & _mask)
{
int32 val = 0;
for (SpellModList::iterator itr = m_spellMods[mod->op].begin(); itr != m_spellMods[mod->op].end(); ++itr)
- {
if ((*itr)->type == mod->type && (*itr)->mask & _mask)
val += (*itr)->value;
- }
val += apply ? mod->value : -(mod->value);
- WorldPacket data(Opcodes(Opcode), (1+1+4));
+ WorldPacket data(Opcodes(opcode), (1+1+4));
data << uint8(eff);
data << uint8(mod->op);
data << int32(val);
+ if (opcode == SMSG_SET_PCT_SPELL_MODIFIER)
+ data << uint8(0); // 4.x unk
SendDirectMessage(&data);
}
}
diff --git a/src/server/game/Server/Protocol/Opcodes.cpp b/src/server/game/Server/Protocol/Opcodes.cpp
index 323901dc494..4bac2be777a 100644
--- a/src/server/game/Server/Protocol/Opcodes.cpp
+++ b/src/server/game/Server/Protocol/Opcodes.cpp
@@ -676,8 +676,8 @@ void InitOpcodes()
//DEFINE_OPCODE_HANDLER(SMSG_SPELLORDAMAGE_IMMUNE, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
DEFINE_OPCODE_HANDLER(CMSG_AUCTION_LIST_BIDDER_ITEMS, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleAuctionListBidderItems );
//DEFINE_OPCODE_HANDLER(SMSG_AUCTION_BIDDER_LIST_RESULT, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(SMSG_SET_FLAT_SPELL_MODIFIER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
- //DEFINE_OPCODE_HANDLER(SMSG_SET_PCT_SPELL_MODIFIER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SET_FLAT_SPELL_MODIFIER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
+ DEFINE_OPCODE_HANDLER(SMSG_SET_PCT_SPELL_MODIFIER, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(SMSG_CORPSE_RECLAIM_DELAY, STATUS_NEVER, PROCESS_INPLACE, &WorldSession::Handle_ServerSide );
//DEFINE_OPCODE_HANDLER(CMSG_SET_ACTIVE_MOVER, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandleSetActiveMoverOpcode );
//DEFINE_OPCODE_HANDLER(CMSG_PET_CANCEL_AURA, STATUS_LOGGEDIN, PROCESS_THREADUNSAFE, &WorldSession::HandlePetCancelAuraOpcode );
diff --git a/src/server/game/Server/Protocol/Opcodes.h b/src/server/game/Server/Protocol/Opcodes.h
index e7f8f26d471..d986eae76d6 100755
--- a/src/server/game/Server/Protocol/Opcodes.h
+++ b/src/server/game/Server/Protocol/Opcodes.h
@@ -943,9 +943,9 @@ enum Opcodes
SMSG_SET_FACTION_ATWAR = 0x00,
SMSG_SET_FACTION_STANDING = 0x00,
SMSG_SET_FACTION_VISIBLE = 0x00,
- SMSG_SET_FLAT_SPELL_MODIFIER = 0x00,
+ SMSG_SET_FLAT_SPELL_MODIFIER = 0x88D3,
SMSG_SET_FORCED_REACTIONS = 0x00,
- SMSG_SET_PCT_SPELL_MODIFIER = 0x00,
+ SMSG_SET_PCT_SPELL_MODIFIER = 0x98FE,
SMSG_SET_PHASE_SHIFT = 0x204C,
SMSG_SET_PLAYER_DECLINED_NAMES_RESULT = 0x0E67,
SMSG_SET_PROFICIENCY = 0x00,