aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/game/Object.cpp28
-rw-r--r--src/game/Object.h2
-rw-r--r--src/game/Opcodes.cpp2
-rw-r--r--src/game/Opcodes.h6
-rw-r--r--src/game/Player.cpp36
-rw-r--r--src/game/Player.h19
-rw-r--r--src/game/SpellEffects.cpp10
-rw-r--r--src/game/Totem.cpp7
-rw-r--r--src/game/Unit.cpp4
9 files changed, 65 insertions, 49 deletions
diff --git a/src/game/Object.cpp b/src/game/Object.cpp
index 1ac4c8fa2f0..11d9350ad78 100644
--- a/src/game/Object.cpp
+++ b/src/game/Object.cpp
@@ -259,13 +259,13 @@ void Object::BuildOutOfRangeUpdateBlock(UpdateData * data) const
data->AddOutOfRangeGUID(GetGUID());
}
-void Object::DestroyForPlayer(Player *target) const
+void Object::DestroyForPlayer( Player *target, bool anim ) const
{
ASSERT(target);
WorldPacket data(SMSG_DESTROY_OBJECT, 8);
data << uint64(GetGUID());
- data << uint8(0); // WotLK (bool)
+ data << uint8(anim ? 1 : 0); // WotLK (bool), may be despawn animation
target->GetSession()->SendPacket( &data );
}
@@ -760,7 +760,7 @@ void Object::_SetCreateBits(UpdateMask *updateMask, Player* /*target*/) const
void Object::SetInt32Value( uint16 index, int32 value )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
if(m_int32Values[ index ] != value)
{
@@ -779,7 +779,7 @@ void Object::SetInt32Value( uint16 index, int32 value )
void Object::SetUInt32Value( uint16 index, uint32 value )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
if(m_uint32Values[ index ] != value)
{
@@ -798,7 +798,7 @@ void Object::SetUInt32Value( uint16 index, uint32 value )
void Object::SetUInt64Value( uint16 index, const uint64 &value )
{
- ASSERT( index + 1 < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index + 1 < m_valuesCount || PrintIndexError( index, true ) );
if(*((uint64*)&(m_uint32Values[ index ])) != value)
{
m_uint32Values[ index ] = *((uint32*)&value);
@@ -859,7 +859,7 @@ bool Object::RemoveUInt64Value(uint16 index, const uint64 &value)
void Object::SetFloatValue( uint16 index, float value )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
if(m_floatValues[ index ] != value)
{
@@ -878,7 +878,7 @@ void Object::SetFloatValue( uint16 index, float value )
void Object::SetByteValue( uint16 index, uint8 offset, uint8 value )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
if(offset > 4)
{
@@ -904,7 +904,7 @@ void Object::SetByteValue( uint16 index, uint8 offset, uint8 value )
void Object::SetUInt16Value( uint16 index, uint8 offset, uint16 value )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
if(offset > 2)
{
@@ -978,7 +978,7 @@ void Object::ApplyModPositiveFloatValue(uint16 index, float val, bool apply)
void Object::SetFlag( uint16 index, uint32 newFlag )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
uint32 oldval = m_uint32Values[ index ];
uint32 newval = oldval | newFlag;
@@ -999,7 +999,7 @@ void Object::SetFlag( uint16 index, uint32 newFlag )
void Object::RemoveFlag( uint16 index, uint32 oldFlag )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
uint32 oldval = m_uint32Values[ index ];
uint32 newval = oldval & ~oldFlag;
@@ -1020,7 +1020,7 @@ void Object::RemoveFlag( uint16 index, uint32 oldFlag )
void Object::SetByteFlag( uint16 index, uint8 offset, uint8 newFlag )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
if(offset > 4)
{
@@ -1045,7 +1045,7 @@ void Object::SetByteFlag( uint16 index, uint8 offset, uint8 newFlag )
void Object::RemoveByteFlag( uint16 index, uint8 offset, uint8 oldFlag )
{
- ASSERT( index < m_valuesCount || PrintIndexError( index , true ) );
+ ASSERT( index < m_valuesCount || PrintIndexError( index, true ) );
if(offset > 4)
{
@@ -1462,7 +1462,7 @@ bool WorldObject::IsInBetween(const WorldObject *obj1, const WorldObject *obj2,
void WorldObject::GetRandomPoint( float x, float y, float z, float distance, float &rand_x, float &rand_y, float &rand_z) const
{
- if(distance==0)
+ if(distance == 0)
{
rand_x = x;
rand_y = y;
@@ -1696,7 +1696,7 @@ void WorldObject::SendMessageToSetInRange(WorldPacket *data, float dist, bool /*
void WorldObject::SendObjectDeSpawnAnim(uint64 guid)
{
WorldPacket data(SMSG_GAMEOBJECT_DESPAWN_ANIM, 8);
- data << guid;
+ data << uint64(guid);
SendMessageToSet(&data, true);
}
diff --git a/src/game/Object.h b/src/game/Object.h
index 3004601cd50..235b3fb6b38 100644
--- a/src/game/Object.h
+++ b/src/game/Object.h
@@ -171,7 +171,7 @@ class TRINITY_DLL_SPEC Object
void BuildMovementUpdateBlock( UpdateData * data, uint32 flags = 0 ) const;
void BuildUpdate(UpdateDataMapType &);
- virtual void DestroyForPlayer( Player *target ) const;
+ virtual void DestroyForPlayer( Player *target, bool anim = false ) const;
const int32& GetInt32Value( uint16 index ) const
{
diff --git a/src/game/Opcodes.cpp b/src/game/Opcodes.cpp
index ddf7c74146a..8fd57ad52be 100644
--- a/src/game/Opcodes.cpp
+++ b/src/game/Opcodes.cpp
@@ -1025,7 +1025,7 @@ OpcodeHandler opcodeTable[NUM_MSG_TYPES] =
/*0x3E2*/ { "SMSG_COMSAT_CONNECT_FAIL", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x3E3*/ { "SMSG_VOICE_CHAT_STATUS", STATUS_NEVER, &WorldSession::Handle_ServerSide },
/*0x3E4*/ { "CMSG_REPORT_PVP_AFK", STATUS_LOGGEDIN, &WorldSession::HandleReportPvPAFK },
- /*0x3E5*/ { "CMSG_REPORT_PVP_AFK_RESULT", STATUS_NEVER, &WorldSession::Handle_NULL },
+ /*0x3E5*/ { "SMSG_REPORT_PVP_AFK_RESULT", STATUS_NEVER, &WorldSession::Handle_NULL },
/*0x3E6*/ { "CMSG_GUILD_BANKER_ACTIVATE", STATUS_LOGGEDIN, &WorldSession::HandleGuildBankerActivate },
/*0x3E7*/ { "CMSG_GUILD_BANK_QUERY_TAB", STATUS_LOGGEDIN, &WorldSession::HandleGuildBankQueryTab },
/*0x3E8*/ { "SMSG_GUILD_BANK_LIST", STATUS_NEVER, &WorldSession::Handle_ServerSide },
diff --git a/src/game/Opcodes.h b/src/game/Opcodes.h
index b3d9c4f8f11..b468cc64978 100644
--- a/src/game/Opcodes.h
+++ b/src/game/Opcodes.h
@@ -694,8 +694,8 @@ enum Opcodes
CMSG_GROUP_ASSISTANT_LEADER = 0x28F,
CMSG_BUYBACK_ITEM = 0x290,
SMSG_SERVER_MESSAGE = 0x291,
- CMSG_MEETINGSTONE_JOIN = 0x292,
- CMSG_MEETINGSTONE_LEAVE = 0x293, // SMSG?
+ CMSG_MEETINGSTONE_JOIN = 0x292, // lua: SetSavedInstanceExtend
+ SMSG_MEETINGSTONE_LEAVE = 0x293,
CMSG_MEETINGSTONE_CHEAT = 0x294,
SMSG_MEETINGSTONE_SETQUEUE = 0x295,
CMSG_MEETINGSTONE_INFO = 0x296,
@@ -1033,7 +1033,7 @@ enum Opcodes
SMSG_COMSAT_CONNECT_FAIL = 0x3E2,
SMSG_VOICE_CHAT_STATUS = 0x3E3,
CMSG_REPORT_PVP_AFK = 0x3E4,
- CMSG_REPORT_PVP_AFK_RESULT = 0x3E5,
+ SMSG_REPORT_PVP_AFK_RESULT = 0x3E5, // SMSG?
CMSG_GUILD_BANKER_ACTIVATE = 0x3E6,
CMSG_GUILD_BANK_QUERY_TAB = 0x3E7,
SMSG_GUILD_BANK_LIST = 0x3E8,
diff --git a/src/game/Player.cpp b/src/game/Player.cpp
index d2dbdd1263c..1535290af27 100644
--- a/src/game/Player.cpp
+++ b/src/game/Player.cpp
@@ -3865,9 +3865,9 @@ void Player::BuildCreateUpdateBlockForPlayer( UpdateData *data, Player *target )
Unit::BuildCreateUpdateBlockForPlayer( data, target );
}
-void Player::DestroyForPlayer( Player *target ) const
+void Player::DestroyForPlayer( Player *target, bool anim ) const
{
- Unit::DestroyForPlayer( target );
+ Unit::DestroyForPlayer( target, anim );
for(uint8 i = 0; i < INVENTORY_SLOT_BAG_END; i++)
{
@@ -10710,7 +10710,6 @@ Item* Player::EquipNewItem( uint16 pos, uint32 item, bool update )
Item* Player::EquipItem( uint16 pos, Item *pItem, bool update )
{
-
AddEnchantmentDurations(pItem);
AddItemDurations(pItem);
@@ -16717,10 +16716,10 @@ void Player::SendAttackSwingBadFacingAttack()
GetSession()->SendPacket( &data );
}
-void Player::SendAutoRepeatCancel()
+void Player::SendAutoRepeatCancel(Unit *target)
{
- WorldPacket data(SMSG_CANCEL_AUTO_REPEAT, GetPackGUID().size());
- data.append(GetPackGUID()); // may be it's target guid
+ WorldPacket data(SMSG_CANCEL_AUTO_REPEAT, target->GetPackGUID().size());
+ data.append(target->GetPackGUID()); // may be it's target guid
GetSession()->SendPacket( &data );
}
@@ -18773,7 +18772,7 @@ void Player::UpdateVisibilityOf(WorldObject* target)
{
if(HaveAtClient(target))
{
- if(!target->isVisibleForInState(this,true))
+ if(!target->isVisibleForInState(this, true))
{
target->DestroyForPlayer(this);
m_clientGUIDs.erase(target->GetGUID());
@@ -20360,11 +20359,30 @@ bool Player::HasTitle(uint32 bitIndex)
return HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag);
}
-void Player::SetTitle(CharTitlesEntry const* title)
+void Player::SetTitle(CharTitlesEntry const* title, bool lost)
{
uint32 fieldIndexOffset = title->bit_index / 32;
uint32 flag = 1 << (title->bit_index % 32);
- SetFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag);
+
+ if(lost)
+ {
+ if(!HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag))
+ return;
+
+ RemoveFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag);
+ }
+ else
+ {
+ if(HasFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag))
+ return;
+
+ SetFlag(PLAYER__FIELD_KNOWN_TITLES + fieldIndexOffset, flag);
+ }
+
+ WorldPacket data(SMSG_TITLE_EARNED, 4 + 4);
+ data << uint32(title->bit_index);
+ data << uint32(lost ? 0 : 1); // 1 - earned, 0 - lost
+ GetSession()->SendPacket(&data);
}
/*-----------------------TRINITY--------------------------*/
diff --git a/src/game/Player.h b/src/game/Player.h
index a8ec9e80172..744e4e0cc3c 100644
--- a/src/game/Player.h
+++ b/src/game/Player.h
@@ -136,11 +136,12 @@ enum ActionButtonUpdateState
enum ActionButtonType
{
- ACTION_BUTTON_SPELL = 0,
- ACTION_BUTTON_EQSET = 32,
- ACTION_BUTTON_MACRO = 64,
- ACTION_BUTTON_CMACRO= 65,
- ACTION_BUTTON_ITEM = 128
+ ACTION_BUTTON_SPELL = 0x00,
+ ACTION_BUTTON_C = 0x01, // click?
+ ACTION_BUTTON_EQSET = 0x20,
+ ACTION_BUTTON_MACRO = 0x40,
+ ACTION_BUTTON_CMACRO = ACTION_BUTTON_C | ACTION_BUTTON_MACRO,
+ ACTION_BUTTON_ITEM = 0x80
};
#define ACTION_BUTTON_ACTION(X) (uint32(X) & 0x00FFFFFF)
@@ -1653,7 +1654,7 @@ class TRINITY_DLL_SPEC Player : public Unit
void SetSession(WorldSession *s) { m_session = s; }
void BuildCreateUpdateBlockForPlayer( UpdateData *data, Player *target ) const;
- void DestroyForPlayer( Player *target ) const;
+ void DestroyForPlayer( Player *target, bool anim = false ) const;
void SendDelayResponse(const uint32);
void SendLogXPGain(uint32 GivenXP,Unit* victim,uint32 RestXP);
@@ -1663,7 +1664,7 @@ class TRINITY_DLL_SPEC Player : public Unit
void SendAttackSwingDeadTarget();
void SendAttackSwingNotInRange();
void SendAttackSwingBadFacingAttack();
- void SendAutoRepeatCancel();
+ void SendAutoRepeatCancel(Unit *target);
void SendExplorationExperience(uint32 Area, uint32 Experience);
void SendDungeonDifficulty(bool IsInGroup);
@@ -2140,7 +2141,7 @@ class TRINITY_DLL_SPEC Player : public Unit
void UpdateAchievementCriteria(AchievementCriteriaTypes type, uint32 miscvalue1=0, uint32 miscvalue2=0, Unit *unit=NULL, uint32 time=0);
bool HasTitle(uint32 bitIndex);
bool HasTitle(CharTitlesEntry const* title) { return HasTitle(title->bit_index); }
- void SetTitle(CharTitlesEntry const* title);
+ void SetTitle(CharTitlesEntry const* title, bool lost = false);
//bool isActiveObject() const { return true; }
bool canSeeSpellClickOn(Creature const* creature) const;
@@ -2460,4 +2461,4 @@ template <class T> T Player::ApplySpellMod(uint32 spellId, SpellModOp op, T &bas
basevalue = T((float)basevalue + diff);
return T(diff);
}
-#endif
+#endif \ No newline at end of file
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index 130b997424f..4bf42f13ac3 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -6485,16 +6485,14 @@ void Spell::EffectTransmitted(uint32 effIndex)
case GAMEOBJECT_TYPE_FISHINGHOLE:
case GAMEOBJECT_TYPE_CHEST:
default:
- {
break;
- }
}
pGameObj->SetRespawnTime(duration > 0 ? duration/IN_MILISECONDS : 0);
- pGameObj->SetOwnerGUID(m_caster->GetGUID() );
+ pGameObj->SetOwnerGUID(m_caster->GetGUID());
- //pGameObj->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel() );
+ //pGameObj->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel());
pGameObj->SetSpellId(m_spellInfo->Id);
DEBUG_LOG("AddObject at SpellEfects.cpp EffectTransmitted");
@@ -6514,9 +6512,9 @@ void Spell::EffectTransmitted(uint32 effIndex)
m_caster->GetPhaseMask(), fx, fy, fz, m_caster->GetOrientation(), 0.0f, 0.0f, 0.0f, 0.0f, 100, GO_STATE_READY))
{
linkedGO->SetRespawnTime(duration > 0 ? duration/IN_MILISECONDS : 0);
- //linkedGO->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel() );
+ //linkedGO->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel());
linkedGO->SetSpellId(m_spellInfo->Id);
- linkedGO->SetOwnerGUID(m_caster->GetGUID() );
+ linkedGO->SetOwnerGUID(m_caster->GetGUID());
linkedGO->GetMap()->Add(linkedGO);
}
diff --git a/src/game/Totem.cpp b/src/game/Totem.cpp
index b11146367b2..d35ba9e30b9 100644
--- a/src/game/Totem.cpp
+++ b/src/game/Totem.cpp
@@ -57,9 +57,9 @@ void Totem::InitStats(uint32 duration)
Minion::InitStats(duration);
CreatureInfo const *cinfo = GetCreatureInfo();
- if (m_owner->GetTypeId()==TYPEID_PLAYER && cinfo)
+ if(m_owner->GetTypeId() == TYPEID_PLAYER && cinfo)
{
- uint32 display_id = objmgr.ChooseDisplayId(((Player*)m_owner)->GetTeam(),cinfo);
+ uint32 display_id = objmgr.ChooseDisplayId(((Player*)m_owner)->GetTeam(), cinfo);
CreatureModelInfo const *minfo = objmgr.GetCreatureModelRandomGender(display_id);
if (minfo)
display_id = minfo->modelid;
@@ -137,7 +137,7 @@ void Totem::UnSummon()
bool Totem::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index) const
{
- // TODO: possibly all negative auras immuned?
+ // TODO: possibly all negative auras immune?
switch(spellInfo->EffectApplyAuraName[index])
{
case SPELL_AURA_PERIODIC_DAMAGE:
@@ -150,4 +150,3 @@ bool Totem::IsImmunedToSpellEffect(SpellEntry const* spellInfo, uint32 index) co
}
return Creature::IsImmunedToSpellEffect(spellInfo, index);
}
-
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index 84590d47336..117dbe0e1da 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -3477,8 +3477,8 @@ void Unit::InterruptSpell(uint32 spellType, bool withDelayed, bool withInstant)
// send autorepeat cancel message for autorepeat spells
if (spellType == CURRENT_AUTOREPEAT_SPELL)
{
- if(GetTypeId()==TYPEID_PLAYER)
- ((Player*)this)->SendAutoRepeatCancel();
+ if(GetTypeId() == TYPEID_PLAYER)
+ ((Player*)this)->SendAutoRepeatCancel(this);
}
if (spell->getState() != SPELL_STATE_FINISHED)