mirror of
https://github.com/mangosfour/server.git
synced 2025-12-12 19:37:03 +00:00
[9618] More use ObjectGuid in spell/etc code
This commit is contained in:
parent
21ff192866
commit
b658b25ff8
19 changed files with 117 additions and 122 deletions
|
|
@ -1748,9 +1748,9 @@ void ChatHandler::FillMessageData( WorldPacket *data, WorldSession* session, uin
|
||||||
*data << uint32(0); // 2.1.0
|
*data << uint32(0); // 2.1.0
|
||||||
*data << uint32(strlen(speaker->GetName()) + 1);
|
*data << uint32(strlen(speaker->GetName()) + 1);
|
||||||
*data << speaker->GetName();
|
*data << speaker->GetName();
|
||||||
uint64 listener_guid = 0;
|
ObjectGuid listener_guid;
|
||||||
*data << uint64(listener_guid);
|
*data << listener_guid;
|
||||||
if(listener_guid && !IS_PLAYER_GUID(listener_guid))
|
if (!listener_guid.IsEmpty() && !listener_guid.IsPlayer())
|
||||||
{
|
{
|
||||||
*data << uint32(1); // string listener_name_length
|
*data << uint32(1); // string listener_name_length
|
||||||
*data << uint8(0); // string listener_name
|
*data << uint8(0); // string listener_name
|
||||||
|
|
|
||||||
|
|
@ -542,7 +542,7 @@ void CreatureEventAI::ProcessAction(CreatureEventAI_Action const& action, uint32
|
||||||
case ACTION_T_CAST_EVENT:
|
case ACTION_T_CAST_EVENT:
|
||||||
if (Unit* target = GetTargetByType(action.cast_event.target, pActionInvoker))
|
if (Unit* target = GetTargetByType(action.cast_event.target, pActionInvoker))
|
||||||
if (target->GetTypeId() == TYPEID_PLAYER)
|
if (target->GetTypeId() == TYPEID_PLAYER)
|
||||||
((Player*)target)->CastedCreatureOrGO(action.cast_event.creatureId, m_creature->GetGUID(), action.cast_event.spellId);
|
((Player*)target)->CastedCreatureOrGO(action.cast_event.creatureId, m_creature->GetObjectGuid(), action.cast_event.spellId);
|
||||||
break;
|
break;
|
||||||
case ACTION_T_SET_UNIT_FIELD:
|
case ACTION_T_SET_UNIT_FIELD:
|
||||||
{
|
{
|
||||||
|
|
@ -643,7 +643,7 @@ void CreatureEventAI::ProcessAction(CreatureEventAI_Action const& action, uint32
|
||||||
for (ThreatList::const_iterator i = threatList.begin(); i != threatList.end(); ++i)
|
for (ThreatList::const_iterator i = threatList.begin(); i != threatList.end(); ++i)
|
||||||
if (Unit* Temp = Unit::GetUnit(*m_creature,(*i)->getUnitGuid()))
|
if (Unit* Temp = Unit::GetUnit(*m_creature,(*i)->getUnitGuid()))
|
||||||
if (Temp->GetTypeId() == TYPEID_PLAYER)
|
if (Temp->GetTypeId() == TYPEID_PLAYER)
|
||||||
((Player*)Temp)->CastedCreatureOrGO(action.cast_event_all.creatureId, m_creature->GetGUID(), action.cast_event_all.spellId);
|
((Player*)Temp)->CastedCreatureOrGO(action.cast_event_all.creatureId, m_creature->GetObjectGuid(), action.cast_event_all.spellId);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case ACTION_T_REMOVEAURASFROMSPELL:
|
case ACTION_T_REMOVEAURASFROMSPELL:
|
||||||
|
|
|
||||||
|
|
@ -78,20 +78,15 @@ void GameObject::RemoveFromWorld()
|
||||||
if(IsInWorld())
|
if(IsInWorld())
|
||||||
{
|
{
|
||||||
// Remove GO from owner
|
// Remove GO from owner
|
||||||
if(uint64 owner_guid = GetOwnerGUID())
|
ObjectGuid owner_guid = GetOwnerGUID();
|
||||||
|
if (!owner_guid.IsEmpty())
|
||||||
{
|
{
|
||||||
if (Unit* owner = ObjectAccessor::GetUnit(*this,owner_guid))
|
if (Unit* owner = ObjectAccessor::GetUnit(*this,owner_guid))
|
||||||
owner->RemoveGameObject(this,false);
|
owner->RemoveGameObject(this,false);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
const char * ownerType = "creature";
|
sLog.outError("Delete %s with SpellId %u LinkedGO %u that lost references to owner %s GO list. Crash possible later.",
|
||||||
if(IS_PLAYER_GUID(owner_guid))
|
GetObjectGuid().GetString().c_str(), m_spellId, GetGOInfo()->GetLinkedGameObjectEntry(), owner_guid.GetString().c_str());
|
||||||
ownerType = "player";
|
|
||||||
else if(IS_PET_GUID(owner_guid))
|
|
||||||
ownerType = "pet";
|
|
||||||
|
|
||||||
sLog.outError("Delete GameObject (GUID: %u Entry: %u SpellId %u LinkedGO %u) that lost references to owner (GUID %u Type '%s') GO list. Crash possible later.",
|
|
||||||
GetGUIDLow(), GetGOInfo()->id, m_spellId, GetGOInfo()->GetLinkedGameObjectEntry(), GUID_LOPART(owner_guid), ownerType);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -164,7 +159,7 @@ bool GameObject::Create(uint32 guidlow, uint32 name_id, Map *map, uint32 phaseMa
|
||||||
|
|
||||||
void GameObject::Update(uint32 /*p_time*/)
|
void GameObject::Update(uint32 /*p_time*/)
|
||||||
{
|
{
|
||||||
if (IS_MO_TRANSPORT(GetGUID()))
|
if (GetObjectGuid().IsMOTransport())
|
||||||
{
|
{
|
||||||
//((Transport*)this)->Update(p_time);
|
//((Transport*)this)->Update(p_time);
|
||||||
return;
|
return;
|
||||||
|
|
@ -1062,7 +1057,7 @@ void GameObject::Use(Unit* user)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
player->CastedCreatureOrGO(info->id, GetGUID(), 0);
|
player->CastedCreatureOrGO(info->id, GetObjectGuid(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (uint32 trapEntry = info->goober.linkedTrapId)
|
if (uint32 trapEntry = info->goober.linkedTrapId)
|
||||||
|
|
|
||||||
|
|
@ -4889,18 +4889,18 @@ bool ChatHandler::HandleQuestComplete(const char* args)
|
||||||
if(uint32 spell_id = pQuest->ReqSpell[i])
|
if(uint32 spell_id = pQuest->ReqSpell[i])
|
||||||
{
|
{
|
||||||
for(uint16 z = 0; z < creaturecount; ++z)
|
for(uint16 z = 0; z < creaturecount; ++z)
|
||||||
player->CastedCreatureOrGO(creature,0,spell_id);
|
player->CastedCreatureOrGO(creature, ObjectGuid::EmptyGuid, spell_id);
|
||||||
}
|
}
|
||||||
else if(creature > 0)
|
else if(creature > 0)
|
||||||
{
|
{
|
||||||
if(CreatureInfo const* cInfo = ObjectMgr::GetCreatureTemplate(creature))
|
if(CreatureInfo const* cInfo = ObjectMgr::GetCreatureTemplate(creature))
|
||||||
for(uint16 z = 0; z < creaturecount; ++z)
|
for(uint16 z = 0; z < creaturecount; ++z)
|
||||||
player->KilledMonster(cInfo,0);
|
player->KilledMonster(cInfo, ObjectGuid::EmptyGuid);
|
||||||
}
|
}
|
||||||
else if(creature < 0)
|
else if(creature < 0)
|
||||||
{
|
{
|
||||||
for(uint16 z = 0; z < creaturecount; ++z)
|
for(uint16 z = 0; z < creaturecount; ++z)
|
||||||
player->CastedCreatureOrGO(-(creature),0,0);
|
player->CastedCreatureOrGO(-creature, ObjectGuid::EmptyGuid, 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -271,7 +271,7 @@ void WorldSession::HandleMovementOpcodes( WorldPacket & recv_data )
|
||||||
// elevators also cause the client to send MOVEFLAG_ONTRANSPORT - just unmount if the guid can be found in the transport list
|
// elevators also cause the client to send MOVEFLAG_ONTRANSPORT - just unmount if the guid can be found in the transport list
|
||||||
for (MapManager::TransportSet::const_iterator iter = sMapMgr.m_Transports.begin(); iter != sMapMgr.m_Transports.end(); ++iter)
|
for (MapManager::TransportSet::const_iterator iter = sMapMgr.m_Transports.begin(); iter != sMapMgr.m_Transports.end(); ++iter)
|
||||||
{
|
{
|
||||||
if ((*iter)->GetGUID() == movementInfo.GetTransportGuid())
|
if ((*iter)->GetObjectGuid() == movementInfo.GetTransportGuid())
|
||||||
{
|
{
|
||||||
plMover->m_transport = (*iter);
|
plMover->m_transport = (*iter);
|
||||||
(*iter)->AddPassenger(plMover);
|
(*iter)->AddPassenger(plMover);
|
||||||
|
|
|
||||||
|
|
@ -1641,7 +1641,7 @@ void WorldObject::AddObjectToRemoveList()
|
||||||
|
|
||||||
Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, float ang,TempSummonType spwtype,uint32 despwtime)
|
Creature* WorldObject::SummonCreature(uint32 id, float x, float y, float z, float ang,TempSummonType spwtype,uint32 despwtime)
|
||||||
{
|
{
|
||||||
TemporarySummon* pCreature = new TemporarySummon(GetGUID());
|
TemporarySummon* pCreature = new TemporarySummon(GetObjectGuid());
|
||||||
|
|
||||||
uint32 team = 0;
|
uint32 team = 0;
|
||||||
if (GetTypeId()==TYPEID_PLAYER)
|
if (GetTypeId()==TYPEID_PLAYER)
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,8 @@
|
||||||
|
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
|
||||||
|
ObjectGuid const ObjectGuid::EmptyGuid;
|
||||||
|
|
||||||
char const* ObjectGuid::GetTypeName(HighGuid high)
|
char const* ObjectGuid::GetTypeName(HighGuid high)
|
||||||
{
|
{
|
||||||
switch(high)
|
switch(high)
|
||||||
|
|
|
||||||
|
|
@ -69,14 +69,8 @@ enum HighGuid
|
||||||
};
|
};
|
||||||
|
|
||||||
//*** Must be replaced by ObjectGuid use ***
|
//*** Must be replaced by ObjectGuid use ***
|
||||||
#define IS_CREATURE_GUID(Guid) ( GUID_HIPART(Guid) == HIGHGUID_UNIT )
|
|
||||||
#define IS_PET_GUID(Guid) ( GUID_HIPART(Guid) == HIGHGUID_PET )
|
|
||||||
#define IS_PLAYER_GUID(Guid) ( GUID_HIPART(Guid) == HIGHGUID_PLAYER && Guid!=0 )
|
#define IS_PLAYER_GUID(Guid) ( GUID_HIPART(Guid) == HIGHGUID_PLAYER && Guid!=0 )
|
||||||
#define IS_UNIT_GUID(Guid) ( IS_CREATURE_GUID(Guid) || IS_PET_GUID(Guid) || IS_PLAYER_GUID(Guid) )
|
|
||||||
// special case for empty guid need check
|
// special case for empty guid need check
|
||||||
#define IS_GAMEOBJECT_GUID(Guid) ( GUID_HIPART(Guid) == HIGHGUID_GAMEOBJECT )
|
|
||||||
#define IS_MO_TRANSPORT(Guid) ( GUID_HIPART(Guid) == HIGHGUID_MO_TRANSPORT )
|
|
||||||
|
|
||||||
// l - OBJECT_FIELD_GUID
|
// l - OBJECT_FIELD_GUID
|
||||||
// e - OBJECT_FIELD_ENTRY for GO (except GAMEOBJECT_TYPE_MO_TRANSPORT) and creatures or UNIT_FIELD_PETNUMBER for pets
|
// e - OBJECT_FIELD_ENTRY for GO (except GAMEOBJECT_TYPE_MO_TRANSPORT) and creatures or UNIT_FIELD_PETNUMBER for pets
|
||||||
// h - OBJECT_FIELD_GUID + 1
|
// h - OBJECT_FIELD_GUID + 1
|
||||||
|
|
@ -128,6 +122,9 @@ class ObjectGuid
|
||||||
ObjectGuid(HighGuid hi, uint32 entry, uint32 counter) : m_guid(uint64(counter) | (uint64(entry) << 24) | (uint64(hi) << 48)) {}
|
ObjectGuid(HighGuid hi, uint32 entry, uint32 counter) : m_guid(uint64(counter) | (uint64(entry) << 24) | (uint64(hi) << 48)) {}
|
||||||
ObjectGuid(HighGuid hi, uint32 counter) : m_guid(uint64(counter) | (uint64(hi) << 48)) {}
|
ObjectGuid(HighGuid hi, uint32 counter) : m_guid(uint64(counter) | (uint64(hi) << 48)) {}
|
||||||
|
|
||||||
|
public: // statics
|
||||||
|
static ObjectGuid const EmptyGuid;
|
||||||
|
|
||||||
public: // modifiers
|
public: // modifiers
|
||||||
PackedGuidReader ReadAsPacked() { return PackedGuidReader(*this); }
|
PackedGuidReader ReadAsPacked() { return PackedGuidReader(*this); }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -14059,17 +14059,17 @@ void Player::ItemRemovedQuestCheck( uint32 entry, uint32 count )
|
||||||
UpdateForQuestWorldObjects();
|
UpdateForQuestWorldObjects();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::KilledMonster( CreatureInfo const* cInfo, uint64 guid )
|
void Player::KilledMonster( CreatureInfo const* cInfo, ObjectGuid guid )
|
||||||
{
|
{
|
||||||
if(cInfo->Entry)
|
if(cInfo->Entry)
|
||||||
KilledMonsterCredit(cInfo->Entry,guid);
|
KilledMonsterCredit(cInfo->Entry, guid);
|
||||||
|
|
||||||
for(int i = 0; i < MAX_KILL_CREDIT; ++i)
|
for(int i = 0; i < MAX_KILL_CREDIT; ++i)
|
||||||
if(cInfo->KillCredit[i])
|
if(cInfo->KillCredit[i])
|
||||||
KilledMonsterCredit(cInfo->KillCredit[i],guid);
|
KilledMonsterCredit(cInfo->KillCredit[i], guid);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::KilledMonsterCredit( uint32 entry, uint64 guid )
|
void Player::KilledMonsterCredit( uint32 entry, ObjectGuid guid )
|
||||||
{
|
{
|
||||||
uint32 addkillcount = 1;
|
uint32 addkillcount = 1;
|
||||||
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, entry, addkillcount);
|
GetAchievementMgr().UpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_KILL_CREATURE, entry, addkillcount);
|
||||||
|
|
@ -14123,9 +14123,9 @@ void Player::KilledMonsterCredit( uint32 entry, uint64 guid )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::CastedCreatureOrGO( uint32 entry, uint64 guid, uint32 spell_id )
|
void Player::CastedCreatureOrGO( uint32 entry, ObjectGuid guid, uint32 spell_id )
|
||||||
{
|
{
|
||||||
bool isCreature = IS_CREATURE_GUID(guid);
|
bool isCreature = guid.IsCreature();
|
||||||
|
|
||||||
uint32 addCastCount = 1;
|
uint32 addCastCount = 1;
|
||||||
for( int i = 0; i < MAX_QUEST_LOG_SIZE; ++i)
|
for( int i = 0; i < MAX_QUEST_LOG_SIZE; ++i)
|
||||||
|
|
@ -14192,7 +14192,7 @@ void Player::CastedCreatureOrGO( uint32 entry, uint64 guid, uint32 spell_id )
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::TalkedToCreature( uint32 entry, uint64 guid )
|
void Player::TalkedToCreature( uint32 entry, ObjectGuid guid )
|
||||||
{
|
{
|
||||||
uint32 addTalkCount = 1;
|
uint32 addTalkCount = 1;
|
||||||
for( int i = 0; i < MAX_QUEST_LOG_SIZE; ++i )
|
for( int i = 0; i < MAX_QUEST_LOG_SIZE; ++i )
|
||||||
|
|
@ -14481,7 +14481,7 @@ void Player::SendQuestUpdateAddItem( Quest const* /*pQuest*/, uint32 /*item_idx*
|
||||||
GetSession()->SendPacket( &data );
|
GetSession()->SendPacket( &data );
|
||||||
}
|
}
|
||||||
|
|
||||||
void Player::SendQuestUpdateAddCreatureOrGo( Quest const* pQuest, uint64 guid, uint32 creatureOrGO_idx, uint32 old_count, uint32 add_count )
|
void Player::SendQuestUpdateAddCreatureOrGo( Quest const* pQuest, ObjectGuid guid, uint32 creatureOrGO_idx, uint32 old_count, uint32 add_count )
|
||||||
{
|
{
|
||||||
assert(old_count + add_count < 65536 && "mob/GO count store in 16 bits 2^16 = 65536 (0..65536)");
|
assert(old_count + add_count < 65536 && "mob/GO count store in 16 bits 2^16 = 65536 (0..65536)");
|
||||||
|
|
||||||
|
|
@ -14496,7 +14496,7 @@ void Player::SendQuestUpdateAddCreatureOrGo( Quest const* pQuest, uint64 guid, u
|
||||||
data << uint32(entry);
|
data << uint32(entry);
|
||||||
data << uint32(old_count + add_count);
|
data << uint32(old_count + add_count);
|
||||||
data << uint32(pQuest->ReqCreatureOrGOCount[ creatureOrGO_idx ]);
|
data << uint32(pQuest->ReqCreatureOrGOCount[ creatureOrGO_idx ]);
|
||||||
data << uint64(guid);
|
data << guid;
|
||||||
GetSession()->SendPacket(&data);
|
GetSession()->SendPacket(&data);
|
||||||
|
|
||||||
uint16 log_slot = FindQuestSlot( pQuest->GetQuestId() );
|
uint16 log_slot = FindQuestSlot( pQuest->GetQuestId() );
|
||||||
|
|
@ -19846,7 +19846,7 @@ bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
|
||||||
{
|
{
|
||||||
// normal creature (not pet/etc) can be only in !PvP case
|
// normal creature (not pet/etc) can be only in !PvP case
|
||||||
if(pVictim->GetTypeId()==TYPEID_UNIT)
|
if(pVictim->GetTypeId()==TYPEID_UNIT)
|
||||||
pGroupGuy->KilledMonster(((Creature*)pVictim)->GetCreatureInfo(), pVictim->GetGUID());
|
pGroupGuy->KilledMonster(((Creature*)pVictim)->GetCreatureInfo(), pVictim->GetObjectGuid());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -19871,7 +19871,7 @@ bool Player::RewardPlayerAndGroupAtKill(Unit* pVictim)
|
||||||
|
|
||||||
// normal creature (not pet/etc) can be only in !PvP case
|
// normal creature (not pet/etc) can be only in !PvP case
|
||||||
if(pVictim->GetTypeId()==TYPEID_UNIT)
|
if(pVictim->GetTypeId()==TYPEID_UNIT)
|
||||||
KilledMonster(((Creature*)pVictim)->GetCreatureInfo(), pVictim->GetGUID());
|
KilledMonster(((Creature*)pVictim)->GetCreatureInfo(), pVictim->GetObjectGuid());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return xp || honored_kill;
|
return xp || honored_kill;
|
||||||
|
|
|
||||||
|
|
@ -1372,10 +1372,10 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
void GroupEventHappens( uint32 questId, WorldObject const* pEventObject );
|
void GroupEventHappens( uint32 questId, WorldObject const* pEventObject );
|
||||||
void ItemAddedQuestCheck( uint32 entry, uint32 count );
|
void ItemAddedQuestCheck( uint32 entry, uint32 count );
|
||||||
void ItemRemovedQuestCheck( uint32 entry, uint32 count );
|
void ItemRemovedQuestCheck( uint32 entry, uint32 count );
|
||||||
void KilledMonster( CreatureInfo const* cInfo, uint64 guid );
|
void KilledMonster( CreatureInfo const* cInfo, ObjectGuid guid );
|
||||||
void KilledMonsterCredit( uint32 entry, uint64 guid );
|
void KilledMonsterCredit( uint32 entry, ObjectGuid guid );
|
||||||
void CastedCreatureOrGO( uint32 entry, uint64 guid, uint32 spell_id );
|
void CastedCreatureOrGO( uint32 entry, ObjectGuid guid, uint32 spell_id );
|
||||||
void TalkedToCreature( uint32 entry, uint64 guid );
|
void TalkedToCreature( uint32 entry, ObjectGuid guid );
|
||||||
void MoneyChanged( uint32 value );
|
void MoneyChanged( uint32 value );
|
||||||
void ReputationChanged(FactionEntry const* factionEntry );
|
void ReputationChanged(FactionEntry const* factionEntry );
|
||||||
bool HasQuestForItem( uint32 itemid ) const;
|
bool HasQuestForItem( uint32 itemid ) const;
|
||||||
|
|
@ -1391,7 +1391,7 @@ class MANGOS_DLL_SPEC Player : public Unit
|
||||||
void SendQuestConfirmAccept(Quest const* pQuest, Player* pReceiver);
|
void SendQuestConfirmAccept(Quest const* pQuest, Player* pReceiver);
|
||||||
void SendPushToPartyResponse( Player *pPlayer, uint32 msg );
|
void SendPushToPartyResponse( Player *pPlayer, uint32 msg );
|
||||||
void SendQuestUpdateAddItem( Quest const* pQuest, uint32 item_idx, uint32 count );
|
void SendQuestUpdateAddItem( Quest const* pQuest, uint32 item_idx, uint32 count );
|
||||||
void SendQuestUpdateAddCreatureOrGo( Quest const* pQuest, uint64 guid, uint32 creatureOrGO_idx, uint32 old_count, uint32 add_count );
|
void SendQuestUpdateAddCreatureOrGo( Quest const* pQuest, ObjectGuid guid, uint32 creatureOrGO_idx, uint32 old_count, uint32 add_count );
|
||||||
|
|
||||||
uint64 GetDivider() { return m_divider; }
|
uint64 GetDivider() { return m_divider; }
|
||||||
void SetDivider( uint64 guid ) { m_divider = guid; }
|
void SetDivider( uint64 guid ) { m_divider = guid; }
|
||||||
|
|
|
||||||
|
|
@ -101,8 +101,8 @@ void PointMovementGenerator<Creature>::MovementInform(Creature &unit)
|
||||||
if (unit.isTemporarySummon())
|
if (unit.isTemporarySummon())
|
||||||
{
|
{
|
||||||
TemporarySummon* pSummon = (TemporarySummon*)(&unit);
|
TemporarySummon* pSummon = (TemporarySummon*)(&unit);
|
||||||
if (IS_CREATURE_GUID(pSummon->GetSummonerGUID()))
|
if (pSummon->GetSummonerGuid().IsCreature())
|
||||||
if(Creature* pSummoner = unit.GetMap()->GetCreature(pSummon->GetSummonerGUID()))
|
if(Creature* pSummoner = unit.GetMap()->GetCreature(pSummon->GetSummonerGuid()))
|
||||||
if (pSummoner->AI())
|
if (pSummoner->AI())
|
||||||
pSummoner->AI()->SummonedMovementInform(&unit, POINT_MOTION_TYPE, id);
|
pSummoner->AI()->SummonedMovementInform(&unit, POINT_MOTION_TYPE, id);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -312,7 +312,7 @@ void SpellCastTargets::write( ByteBuffer& data ) const
|
||||||
data << m_strTarget;
|
data << m_strTarget;
|
||||||
}
|
}
|
||||||
|
|
||||||
Spell::Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID, Spell** triggeringContainer )
|
Spell::Spell( Unit* Caster, SpellEntry const *info, bool triggered, ObjectGuid originalCasterGUID, Spell** triggeringContainer )
|
||||||
{
|
{
|
||||||
ASSERT( Caster != NULL && info != NULL );
|
ASSERT( Caster != NULL && info != NULL );
|
||||||
ASSERT( info == sSpellStore.LookupEntry( info->Id ) && "`info` must be pointer to sSpellStore element");
|
ASSERT( info == sSpellStore.LookupEntry( info->Id ) && "`info` must be pointer to sSpellStore element");
|
||||||
|
|
@ -345,10 +345,10 @@ Spell::Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 origi
|
||||||
// Set health leech amount to zero
|
// Set health leech amount to zero
|
||||||
m_healthLeech = 0;
|
m_healthLeech = 0;
|
||||||
|
|
||||||
if(originalCasterGUID)
|
if(!originalCasterGUID.IsEmpty())
|
||||||
m_originalCasterGUID = originalCasterGUID;
|
m_originalCasterGUID = originalCasterGUID;
|
||||||
else
|
else
|
||||||
m_originalCasterGUID = m_caster->GetGUID();
|
m_originalCasterGUID = m_caster->GetObjectGuid();
|
||||||
|
|
||||||
UpdateOriginalCasterPointer();
|
UpdateOriginalCasterPointer();
|
||||||
|
|
||||||
|
|
@ -767,7 +767,7 @@ void Spell::AddUnitTarget(Unit* pVictim, SpellEffectIndex effIndex)
|
||||||
// Check for effect immune skip if immuned
|
// Check for effect immune skip if immuned
|
||||||
bool immuned = pVictim->IsImmunedToSpellEffect(m_spellInfo, effIndex);
|
bool immuned = pVictim->IsImmunedToSpellEffect(m_spellInfo, effIndex);
|
||||||
|
|
||||||
uint64 targetGUID = pVictim->GetGUID();
|
ObjectGuid targetGUID = pVictim->GetObjectGuid();
|
||||||
|
|
||||||
// Lookup target in already in list
|
// Lookup target in already in list
|
||||||
for(std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
|
for(std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
|
||||||
|
|
@ -837,7 +837,7 @@ void Spell::AddGOTarget(GameObject* pVictim, SpellEffectIndex effIndex)
|
||||||
if( m_spellInfo->Effect[effIndex] == 0 )
|
if( m_spellInfo->Effect[effIndex] == 0 )
|
||||||
return;
|
return;
|
||||||
|
|
||||||
uint64 targetGUID = pVictim->GetGUID();
|
ObjectGuid targetGUID = pVictim->GetObjectGuid();
|
||||||
|
|
||||||
// Lookup target in already in list
|
// Lookup target in already in list
|
||||||
for(std::list<GOTargetInfo>::iterator ihit = m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit)
|
for(std::list<GOTargetInfo>::iterator ihit = m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit)
|
||||||
|
|
@ -913,7 +913,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
|
||||||
// Get mask of effects for target
|
// Get mask of effects for target
|
||||||
uint32 mask = target->effectMask;
|
uint32 mask = target->effectMask;
|
||||||
|
|
||||||
Unit* unit = m_caster->GetGUID() == target->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, target->targetGUID);
|
Unit* unit = m_caster->GetObjectGuid() == target->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, target->targetGUID);
|
||||||
if (!unit)
|
if (!unit)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
@ -1017,7 +1017,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target)
|
||||||
// ignore pets or autorepeat/melee casts for speed (not exist quest for spells (hm... )
|
// ignore pets or autorepeat/melee casts for speed (not exist quest for spells (hm... )
|
||||||
if (real_caster && !((Creature*)unit)->isPet() && !IsAutoRepeat() && !IsNextMeleeSwingSpell() && !IsChannelActive())
|
if (real_caster && !((Creature*)unit)->isPet() && !IsAutoRepeat() && !IsNextMeleeSwingSpell() && !IsChannelActive())
|
||||||
if (Player* p = real_caster->GetCharmerOrOwnerPlayerOrPlayerItself())
|
if (Player* p = real_caster->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||||
p->CastedCreatureOrGO(unit->GetEntry(), unit->GetGUID(), m_spellInfo->Id);
|
p->CastedCreatureOrGO(unit->GetEntry(), unit->GetObjectGuid(), m_spellInfo->Id);
|
||||||
|
|
||||||
if(((Creature*)unit)->AI())
|
if(((Creature*)unit)->AI())
|
||||||
((Creature*)unit)->AI()->SpellHit(m_caster, m_spellInfo);
|
((Creature*)unit)->AI()->SpellHit(m_caster, m_spellInfo);
|
||||||
|
|
@ -1178,7 +1178,7 @@ void Spell::DoAllEffectOnTarget(GOTargetInfo *target)
|
||||||
if( !IsAutoRepeat() && !IsNextMeleeSwingSpell() && !IsChannelActive() )
|
if( !IsAutoRepeat() && !IsNextMeleeSwingSpell() && !IsChannelActive() )
|
||||||
{
|
{
|
||||||
if ( Player* p = m_caster->GetCharmerOrOwnerPlayerOrPlayerItself() )
|
if ( Player* p = m_caster->GetCharmerOrOwnerPlayerOrPlayerItself() )
|
||||||
p->CastedCreatureOrGO(go->GetEntry(), go->GetGUID(), m_spellInfo->Id);
|
p->CastedCreatureOrGO(go->GetEntry(), go->GetObjectGuid(), m_spellInfo->Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1205,7 +1205,7 @@ bool Spell::IsAliveUnitPresentInTargetList()
|
||||||
{
|
{
|
||||||
if( ihit->missCondition == SPELL_MISS_NONE && (needAliveTargetMask & ihit->effectMask) )
|
if( ihit->missCondition == SPELL_MISS_NONE && (needAliveTargetMask & ihit->effectMask) )
|
||||||
{
|
{
|
||||||
Unit *unit = m_caster->GetGUID() == ihit->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID);
|
Unit *unit = m_caster->GetObjectGuid() == ihit->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID);
|
||||||
|
|
||||||
// either unit is alive and normal spell, or unit dead and deathonly-spell
|
// either unit is alive and normal spell, or unit dead and deathonly-spell
|
||||||
if (unit && (unit->isAlive() != IsDeathOnlySpell(m_spellInfo)))
|
if (unit && (unit->isAlive() != IsDeathOnlySpell(m_spellInfo)))
|
||||||
|
|
@ -2479,7 +2479,7 @@ void Spell::cancel()
|
||||||
{
|
{
|
||||||
if( ihit->missCondition == SPELL_MISS_NONE )
|
if( ihit->missCondition == SPELL_MISS_NONE )
|
||||||
{
|
{
|
||||||
Unit* unit = m_caster->GetGUID() == (*ihit).targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID);
|
Unit* unit = m_caster->GetObjectGuid() == (*ihit).targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID);
|
||||||
if( unit && unit->isAlive() )
|
if( unit && unit->isAlive() )
|
||||||
unit->RemoveAurasByCasterSpell(m_spellInfo->Id, m_caster->GetGUID());
|
unit->RemoveAurasByCasterSpell(m_spellInfo->Id, m_caster->GetGUID());
|
||||||
}
|
}
|
||||||
|
|
@ -2956,14 +2956,14 @@ void Spell::update(uint32 difftime)
|
||||||
for(std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
|
for(std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
|
||||||
{
|
{
|
||||||
TargetInfo* target = &*ihit;
|
TargetInfo* target = &*ihit;
|
||||||
if(!IS_CREATURE_GUID(target->targetGUID))
|
if(!target->targetGUID.IsCreature())
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
Unit* unit = m_caster->GetGUID() == target->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, target->targetGUID);
|
Unit* unit = m_caster->GetObjectGuid() == target->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, target->targetGUID);
|
||||||
if (unit == NULL)
|
if (unit == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
p->CastedCreatureOrGO(unit->GetEntry(), unit->GetGUID(), m_spellInfo->Id);
|
p->CastedCreatureOrGO(unit->GetEntry(), unit->GetObjectGuid(), m_spellInfo->Id);
|
||||||
}
|
}
|
||||||
|
|
||||||
for(std::list<GOTargetInfo>::iterator ihit = m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit)
|
for(std::list<GOTargetInfo>::iterator ihit = m_UniqueGOTargetInfo.begin(); ihit != m_UniqueGOTargetInfo.end(); ++ihit)
|
||||||
|
|
@ -2974,7 +2974,7 @@ void Spell::update(uint32 difftime)
|
||||||
if(!go)
|
if(!go)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
p->CastedCreatureOrGO(go->GetEntry(), go->GetGUID(), m_spellInfo->Id);
|
p->CastedCreatureOrGO(go->GetEntry(), go->GetObjectGuid(), m_spellInfo->Id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -3017,7 +3017,7 @@ void Spell::finish(bool ok)
|
||||||
if( ihit->missCondition == SPELL_MISS_NONE )
|
if( ihit->missCondition == SPELL_MISS_NONE )
|
||||||
{
|
{
|
||||||
// check m_caster->GetGUID() let load auras at login and speedup most often case
|
// check m_caster->GetGUID() let load auras at login and speedup most often case
|
||||||
Unit *unit = m_caster->GetGUID()== ihit->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID);
|
Unit *unit = m_caster->GetObjectGuid() == ihit->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID);
|
||||||
if (unit && unit->isAlive())
|
if (unit && unit->isAlive())
|
||||||
{
|
{
|
||||||
SpellEntry const *auraSpellInfo = (*i)->GetSpellProto();
|
SpellEntry const *auraSpellInfo = (*i)->GetSpellProto();
|
||||||
|
|
@ -3054,7 +3054,7 @@ void Spell::finish(bool ok)
|
||||||
{
|
{
|
||||||
for(std::list<TargetInfo>::const_iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
|
for(std::list<TargetInfo>::const_iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
|
||||||
{
|
{
|
||||||
if (ihit->missCondition != SPELL_MISS_NONE && ihit->targetGUID != m_caster->GetGUID())
|
if (ihit->missCondition != SPELL_MISS_NONE && ihit->targetGUID != m_caster->GetObjectGuid())
|
||||||
{
|
{
|
||||||
needDrop = false;
|
needDrop = false;
|
||||||
break;
|
break;
|
||||||
|
|
@ -3380,20 +3380,20 @@ void Spell::WriteSpellGoTargets( WorldPacket * data )
|
||||||
{
|
{
|
||||||
if ((*ihit).missCondition == SPELL_MISS_NONE) // Add only hits
|
if ((*ihit).missCondition == SPELL_MISS_NONE) // Add only hits
|
||||||
{
|
{
|
||||||
*data << uint64(ihit->targetGUID);
|
*data << ihit->targetGUID;
|
||||||
m_needAliveTargetMask |=ihit->effectMask;
|
m_needAliveTargetMask |=ihit->effectMask;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for(std::list<GOTargetInfo>::const_iterator ighit = m_UniqueGOTargetInfo.begin(); ighit != m_UniqueGOTargetInfo.end(); ++ighit)
|
for(std::list<GOTargetInfo>::const_iterator ighit = m_UniqueGOTargetInfo.begin(); ighit != m_UniqueGOTargetInfo.end(); ++ighit)
|
||||||
*data << uint64(ighit->targetGUID); // Always hits
|
*data << ighit->targetGUID; // Always hits
|
||||||
|
|
||||||
*data << (uint8)miss;
|
*data << (uint8)miss;
|
||||||
for(std::list<TargetInfo>::const_iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
|
for(std::list<TargetInfo>::const_iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit)
|
||||||
{
|
{
|
||||||
if( ihit->missCondition != SPELL_MISS_NONE ) // Add only miss
|
if( ihit->missCondition != SPELL_MISS_NONE ) // Add only miss
|
||||||
{
|
{
|
||||||
*data << uint64(ihit->targetGUID);
|
*data << ihit->targetGUID;
|
||||||
*data << uint8(ihit->missCondition);
|
*data << uint8(ihit->missCondition);
|
||||||
if( ihit->missCondition == SPELL_MISS_REFLECT )
|
if( ihit->missCondition == SPELL_MISS_REFLECT )
|
||||||
*data << uint8(ihit->reflectResult);
|
*data << uint8(ihit->reflectResult);
|
||||||
|
|
@ -3535,10 +3535,10 @@ void Spell::SendChannelUpdate(uint32 time)
|
||||||
{
|
{
|
||||||
m_caster->RemoveAurasByCasterSpell(m_spellInfo->Id, m_caster->GetGUID());
|
m_caster->RemoveAurasByCasterSpell(m_spellInfo->Id, m_caster->GetGUID());
|
||||||
|
|
||||||
if(uint64 target_guid = m_caster->GetChannelObjectGUID())
|
ObjectGuid target_guid = m_caster->GetChannelObjectGUID();
|
||||||
if(target_guid != m_caster->GetGUID() && IS_UNIT_GUID(target_guid))
|
if (target_guid != m_caster->GetObjectGuid() && target_guid.IsUnit())
|
||||||
if(Unit* target = ObjectAccessor::GetUnit(*m_caster, target_guid))
|
if (Unit* target = ObjectAccessor::GetUnit(*m_caster, target_guid))
|
||||||
target->RemoveAurasByCasterSpell(m_spellInfo->Id, m_caster->GetGUID());
|
target->RemoveAurasByCasterSpell(m_spellInfo->Id, m_caster->GetGUID());
|
||||||
|
|
||||||
m_caster->SetChannelObjectGUID(0);
|
m_caster->SetChannelObjectGUID(0);
|
||||||
m_caster->SetUInt32Value(UNIT_CHANNEL_SPELL, 0);
|
m_caster->SetUInt32Value(UNIT_CHANNEL_SPELL, 0);
|
||||||
|
|
@ -3559,7 +3559,7 @@ void Spell::SendChannelStart(uint32 duration)
|
||||||
{
|
{
|
||||||
for(std::list<TargetInfo>::const_iterator itr = m_UniqueTargetInfo.begin(); itr != m_UniqueTargetInfo.end(); ++itr)
|
for(std::list<TargetInfo>::const_iterator itr = m_UniqueTargetInfo.begin(); itr != m_UniqueTargetInfo.end(); ++itr)
|
||||||
{
|
{
|
||||||
if( (itr->effectMask & (1 << 0)) && itr->reflectResult == SPELL_MISS_NONE && itr->targetGUID != m_caster->GetGUID())
|
if( (itr->effectMask & (1 << 0)) && itr->reflectResult == SPELL_MISS_NONE && itr->targetGUID != m_caster->GetObjectGuid())
|
||||||
{
|
{
|
||||||
target = ObjectAccessor::GetUnit(*m_caster, itr->targetGUID);
|
target = ObjectAccessor::GetUnit(*m_caster, itr->targetGUID);
|
||||||
break;
|
break;
|
||||||
|
|
@ -5209,7 +5209,7 @@ SpellCastResult Spell::CheckCasterAuras() const
|
||||||
|
|
||||||
bool Spell::CanAutoCast(Unit* target)
|
bool Spell::CanAutoCast(Unit* target)
|
||||||
{
|
{
|
||||||
uint64 targetguid = target->GetGUID();
|
ObjectGuid targetguid = target->GetObjectGuid();
|
||||||
|
|
||||||
for(int j = 0; j < MAX_EFFECT_INDEX; ++j)
|
for(int j = 0; j < MAX_EFFECT_INDEX; ++j)
|
||||||
{
|
{
|
||||||
|
|
@ -5916,7 +5916,7 @@ void Spell::DelayedChannel()
|
||||||
{
|
{
|
||||||
if ((*ihit).missCondition == SPELL_MISS_NONE)
|
if ((*ihit).missCondition == SPELL_MISS_NONE)
|
||||||
{
|
{
|
||||||
if (Unit* unit = m_caster->GetGUID() == ihit->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID))
|
if (Unit* unit = m_caster->GetObjectGuid() == ihit->targetGUID ? m_caster : ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID))
|
||||||
for (int j = 0; j < MAX_EFFECT_INDEX; ++j)
|
for (int j = 0; j < MAX_EFFECT_INDEX; ++j)
|
||||||
if (ihit->effectMask & (1 << j))
|
if (ihit->effectMask & (1 << j))
|
||||||
unit->DelayAura(m_spellInfo->Id, SpellEffectIndex(j), delaytime);
|
unit->DelayAura(m_spellInfo->Id, SpellEffectIndex(j), delaytime);
|
||||||
|
|
@ -5936,9 +5936,9 @@ void Spell::DelayedChannel()
|
||||||
|
|
||||||
void Spell::UpdateOriginalCasterPointer()
|
void Spell::UpdateOriginalCasterPointer()
|
||||||
{
|
{
|
||||||
if(m_originalCasterGUID == m_caster->GetGUID())
|
if(m_originalCasterGUID == m_caster->GetObjectGuid())
|
||||||
m_originalCaster = m_caster;
|
m_originalCaster = m_caster;
|
||||||
else if (IS_GAMEOBJECT_GUID(m_originalCasterGUID))
|
else if (m_originalCasterGUID.IsGameobject())
|
||||||
{
|
{
|
||||||
GameObject* go = m_caster->IsInWorld() ? m_caster->GetMap()->GetGameObject(m_originalCasterGUID) : NULL;
|
GameObject* go = m_caster->IsInWorld() ? m_caster->GetMap()->GetGameObject(m_originalCasterGUID) : NULL;
|
||||||
m_originalCaster = go ? go->GetOwner() : NULL;
|
m_originalCaster = go ? go->GetOwner() : NULL;
|
||||||
|
|
@ -6382,7 +6382,7 @@ void Spell::FillRaidOrPartyHealthPriorityTargets(UnitList &targetUnitMap, Unit*
|
||||||
|
|
||||||
WorldObject* Spell::GetCastingObject() const
|
WorldObject* Spell::GetCastingObject() const
|
||||||
{
|
{
|
||||||
if (IS_GAMEOBJECT_GUID(m_originalCasterGUID))
|
if (m_originalCasterGUID.IsGameobject())
|
||||||
return m_caster->IsInWorld() ? m_caster->GetMap()->GetGameObject(m_originalCasterGUID) : NULL;
|
return m_caster->IsInWorld() ? m_caster->GetMap()->GetGameObject(m_originalCasterGUID) : NULL;
|
||||||
else
|
else
|
||||||
return m_caster;
|
return m_caster;
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@
|
||||||
#include "GridDefines.h"
|
#include "GridDefines.h"
|
||||||
#include "SharedDefines.h"
|
#include "SharedDefines.h"
|
||||||
#include "DBCEnums.h"
|
#include "DBCEnums.h"
|
||||||
|
#include "ObjectGuid.h"
|
||||||
|
|
||||||
class WorldSession;
|
class WorldSession;
|
||||||
class Unit;
|
class Unit;
|
||||||
|
|
@ -357,7 +358,7 @@ class Spell
|
||||||
void EffectSpecCount(SpellEffectIndex eff_idx);
|
void EffectSpecCount(SpellEffectIndex eff_idx);
|
||||||
void EffectActivateSpec(SpellEffectIndex eff_idx);
|
void EffectActivateSpec(SpellEffectIndex eff_idx);
|
||||||
|
|
||||||
Spell( Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID = 0, Spell** triggeringContainer = NULL );
|
Spell( Unit* Caster, SpellEntry const *info, bool triggered, ObjectGuid originalCasterGUID = ObjectGuid::EmptyGuid, Spell** triggeringContainer = NULL );
|
||||||
~Spell();
|
~Spell();
|
||||||
|
|
||||||
void prepare(SpellCastTargets const* targets, Aura* triggeredByAura = NULL);
|
void prepare(SpellCastTargets const* targets, Aura* triggeredByAura = NULL);
|
||||||
|
|
@ -474,7 +475,7 @@ class Spell
|
||||||
// formal spell caster, in game source of spell affects cast
|
// formal spell caster, in game source of spell affects cast
|
||||||
Unit* GetCaster() const { return m_caster; }
|
Unit* GetCaster() const { return m_caster; }
|
||||||
// real source of cast affects, explcit caster, or DoT/HoT applier, or GO owner, etc. Can be NULL
|
// real source of cast affects, explcit caster, or DoT/HoT applier, or GO owner, etc. Can be NULL
|
||||||
Unit* GetAffectiveCaster() const { return m_originalCasterGUID ? m_originalCaster : m_caster; }
|
Unit* GetAffectiveCaster() const { return !m_originalCasterGUID.IsEmpty() ? m_originalCaster : m_caster; }
|
||||||
// m_originalCasterGUID can store GO guid, and in this case this is visual caster
|
// m_originalCasterGUID can store GO guid, and in this case this is visual caster
|
||||||
WorldObject* GetCastingObject() const;
|
WorldObject* GetCastingObject() const;
|
||||||
|
|
||||||
|
|
@ -500,7 +501,7 @@ class Spell
|
||||||
|
|
||||||
Unit* m_caster;
|
Unit* m_caster;
|
||||||
|
|
||||||
uint64 m_originalCasterGUID; // real source of cast (aura caster/etc), used for spell targets selection
|
ObjectGuid m_originalCasterGUID; // real source of cast (aura caster/etc), used for spell targets selection
|
||||||
// e.g. damage around area spell trigered by victim aura and da,age emeies of aura caster
|
// e.g. damage around area spell trigered by victim aura and da,age emeies of aura caster
|
||||||
Unit* m_originalCaster; // cached pointer for m_originalCaster, updated at Spell::UpdatePointers()
|
Unit* m_originalCaster; // cached pointer for m_originalCaster, updated at Spell::UpdatePointers()
|
||||||
|
|
||||||
|
|
@ -570,7 +571,7 @@ class Spell
|
||||||
// Targets store structures and data
|
// Targets store structures and data
|
||||||
struct TargetInfo
|
struct TargetInfo
|
||||||
{
|
{
|
||||||
uint64 targetGUID;
|
ObjectGuid targetGUID;
|
||||||
uint64 timeDelay;
|
uint64 timeDelay;
|
||||||
SpellMissInfo missCondition:8;
|
SpellMissInfo missCondition:8;
|
||||||
SpellMissInfo reflectResult:8;
|
SpellMissInfo reflectResult:8;
|
||||||
|
|
@ -582,7 +583,7 @@ class Spell
|
||||||
|
|
||||||
struct GOTargetInfo
|
struct GOTargetInfo
|
||||||
{
|
{
|
||||||
uint64 targetGUID;
|
ObjectGuid targetGUID;
|
||||||
uint64 timeDelay;
|
uint64 timeDelay;
|
||||||
uint8 effectMask:8;
|
uint8 effectMask:8;
|
||||||
bool processed:1;
|
bool processed:1;
|
||||||
|
|
|
||||||
|
|
@ -2846,7 +2846,7 @@ void Spell::EffectApplyAura(SpellEffectIndex eff_idx)
|
||||||
{
|
{
|
||||||
// FIXME: currently we can't have auras applied explIcitly by gameobjects
|
// FIXME: currently we can't have auras applied explIcitly by gameobjects
|
||||||
// so for auras from wild gameobjects (no owner) target used
|
// so for auras from wild gameobjects (no owner) target used
|
||||||
if (IS_GAMEOBJECT_GUID(m_originalCasterGUID))
|
if (m_originalCasterGUID.IsGameobject())
|
||||||
caster = unitTarget;
|
caster = unitTarget;
|
||||||
else
|
else
|
||||||
return;
|
return;
|
||||||
|
|
@ -5489,7 +5489,7 @@ void Spell::EffectScriptEffect(SpellEffectIndex eff_idx)
|
||||||
TemporarySummon* pSummon = (TemporarySummon*)pTarget;
|
TemporarySummon* pSummon = (TemporarySummon*)pTarget;
|
||||||
|
|
||||||
// can only affect "own" summoned
|
// can only affect "own" summoned
|
||||||
if (pSummon->GetSummonerGUID() == m_caster->GetGUID())
|
if (pSummon->GetSummonerGuid() == m_caster->GetObjectGuid())
|
||||||
{
|
{
|
||||||
if (pTarget->hasUnitState(UNIT_STAT_ROAMING | UNIT_STAT_ROAMING_MOVE))
|
if (pTarget->hasUnitState(UNIT_STAT_ROAMING | UNIT_STAT_ROAMING_MOVE))
|
||||||
pTarget->GetMotionMaster()->MovementExpired();
|
pTarget->GetMotionMaster()->MovementExpired();
|
||||||
|
|
|
||||||
|
|
@ -21,7 +21,7 @@
|
||||||
#include "ObjectAccessor.h"
|
#include "ObjectAccessor.h"
|
||||||
#include "CreatureAI.h"
|
#include "CreatureAI.h"
|
||||||
|
|
||||||
TemporarySummon::TemporarySummon( uint64 summoner ) :
|
TemporarySummon::TemporarySummon( ObjectGuid summoner ) :
|
||||||
Creature(CREATURE_SUBTYPE_TEMPORARY_SUMMON), m_type(TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN), m_timer(0), m_lifetime(0), m_summoner(summoner)
|
Creature(CREATURE_SUBTYPE_TEMPORARY_SUMMON), m_type(TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN), m_timer(0), m_lifetime(0), m_summoner(summoner)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
@ -165,8 +165,8 @@ void TemporarySummon::UnSummon()
|
||||||
{
|
{
|
||||||
CombatStop();
|
CombatStop();
|
||||||
|
|
||||||
if (IS_CREATURE_GUID(GetSummonerGUID()))
|
if (GetSummonerGuid().IsCreature())
|
||||||
if(Creature* sum = GetMap()->GetCreature(GetSummonerGUID()))
|
if(Creature* sum = GetMap()->GetCreature(GetSummonerGuid()))
|
||||||
if (sum->AI())
|
if (sum->AI())
|
||||||
sum->AI()->SummonedCreatureDespawn(this);
|
sum->AI()->SummonedCreatureDespawn(this);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -25,18 +25,18 @@
|
||||||
class TemporarySummon : public Creature
|
class TemporarySummon : public Creature
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
explicit TemporarySummon(uint64 summoner = 0);
|
explicit TemporarySummon(ObjectGuid summoner = ObjectGuid::EmptyGuid);
|
||||||
virtual ~TemporarySummon(){};
|
virtual ~TemporarySummon(){};
|
||||||
void Update(uint32 time);
|
void Update(uint32 time);
|
||||||
void Summon(TempSummonType type, uint32 lifetime);
|
void Summon(TempSummonType type, uint32 lifetime);
|
||||||
void MANGOS_DLL_SPEC UnSummon();
|
void MANGOS_DLL_SPEC UnSummon();
|
||||||
void SaveToDB();
|
void SaveToDB();
|
||||||
uint64 GetSummonerGUID() const { return m_summoner ; }
|
ObjectGuid const& GetSummonerGuid() const { return m_summoner ; }
|
||||||
Unit* GetSummoner() const { return m_summoner ? ObjectAccessor::GetUnit(*this, m_summoner) : NULL; }
|
Unit* GetSummoner() const { return ObjectAccessor::GetUnit(*this, m_summoner); }
|
||||||
private:
|
private:
|
||||||
TempSummonType m_type;
|
TempSummonType m_type;
|
||||||
uint32 m_timer;
|
uint32 m_timer;
|
||||||
uint32 m_lifetime;
|
uint32 m_lifetime;
|
||||||
uint64 m_summoner;
|
ObjectGuid m_summoner;
|
||||||
};
|
};
|
||||||
#endif
|
#endif
|
||||||
|
|
|
||||||
|
|
@ -594,7 +594,7 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
|
||||||
// some critters required for quests (need normal entry instead possible heroic in any cases)
|
// some critters required for quests (need normal entry instead possible heroic in any cases)
|
||||||
if(GetTypeId() == TYPEID_PLAYER)
|
if(GetTypeId() == TYPEID_PLAYER)
|
||||||
if(CreatureInfo const* normalInfo = ObjectMgr::GetCreatureTemplate(pVictim->GetEntry()))
|
if(CreatureInfo const* normalInfo = ObjectMgr::GetCreatureTemplate(pVictim->GetEntry()))
|
||||||
((Player*)this)->KilledMonster(normalInfo,pVictim->GetGUID());
|
((Player*)this)->KilledMonster(normalInfo,pVictim->GetObjectGuid());
|
||||||
|
|
||||||
return damage;
|
return damage;
|
||||||
}
|
}
|
||||||
|
|
@ -820,8 +820,8 @@ uint32 Unit::DealDamage(Unit *pVictim, uint32 damage, CleanDamage const* cleanDa
|
||||||
if (cVictim->isTemporarySummon())
|
if (cVictim->isTemporarySummon())
|
||||||
{
|
{
|
||||||
TemporarySummon* pSummon = (TemporarySummon*)cVictim;
|
TemporarySummon* pSummon = (TemporarySummon*)cVictim;
|
||||||
if (IS_CREATURE_GUID(pSummon->GetSummonerGUID()))
|
if (pSummon->GetSummonerGuid().IsCreature())
|
||||||
if(Creature* pSummoner = cVictim->GetMap()->GetCreature(pSummon->GetSummonerGUID()))
|
if(Creature* pSummoner = cVictim->GetMap()->GetCreature(pSummon->GetSummonerGuid()))
|
||||||
if (pSummoner->AI())
|
if (pSummoner->AI())
|
||||||
pSummoner->AI()->SummonedCreatureJustDied(cVictim);
|
pSummoner->AI()->SummonedCreatureJustDied(cVictim);
|
||||||
}
|
}
|
||||||
|
|
@ -1064,34 +1064,34 @@ void Unit::CastStop(uint32 except_spellid)
|
||||||
InterruptSpell(CurrentSpellTypes(i),false);
|
InterruptSpell(CurrentSpellTypes(i),false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::CastSpell(Unit* Victim, uint32 spellId, bool triggered, Item *castItem, Aura* triggeredByAura, uint64 originalCaster)
|
void Unit::CastSpell(Unit* Victim, uint32 spellId, bool triggered, Item *castItem, Aura* triggeredByAura, ObjectGuid originalCaster)
|
||||||
{
|
{
|
||||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId );
|
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
|
||||||
|
|
||||||
if(!spellInfo)
|
if(!spellInfo)
|
||||||
{
|
{
|
||||||
sLog.outError("CastSpell: unknown spell id %i by caster: %s %u)", spellId,(GetTypeId()==TYPEID_PLAYER ? "player (GUID:" : "creature (Entry:"),(GetTypeId()==TYPEID_PLAYER ? GetGUIDLow() : GetEntry()));
|
sLog.outError("CastSpell: unknown spell id %i by caster: %s", spellId, GetObjectGuid().GetString().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CastSpell(Victim,spellInfo,triggered,castItem,triggeredByAura, originalCaster);
|
CastSpell(Victim, sSpellStore.LookupEntry(spellId), triggered, castItem, triggeredByAura, originalCaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::CastSpell(Unit* Victim,SpellEntry const *spellInfo, bool triggered, Item *castItem, Aura* triggeredByAura, uint64 originalCaster)
|
void Unit::CastSpell(Unit* Victim,SpellEntry const *spellInfo, bool triggered, Item *castItem, Aura* triggeredByAura, ObjectGuid originalCaster)
|
||||||
{
|
{
|
||||||
if(!spellInfo)
|
if(!spellInfo)
|
||||||
{
|
{
|
||||||
sLog.outError("CastSpell: unknown spell by caster: %s %u)", (GetTypeId()==TYPEID_PLAYER ? "player (GUID:" : "creature (Entry:"),(GetTypeId()==TYPEID_PLAYER ? GetGUIDLow() : GetEntry()));
|
sLog.outError("CastSpell: unknown spell by caster: %s", GetObjectGuid().GetString().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (castItem)
|
if (castItem)
|
||||||
DEBUG_LOG("WORLD: cast Item spellId - %i", spellInfo->Id);
|
DEBUG_LOG("WORLD: cast Item spellId - %i", spellInfo->Id);
|
||||||
|
|
||||||
if(!originalCaster && triggeredByAura)
|
if(originalCaster.IsEmpty() && triggeredByAura)
|
||||||
originalCaster = triggeredByAura->GetCasterGUID();
|
originalCaster = triggeredByAura->GetCasterGUID();
|
||||||
|
|
||||||
Spell *spell = new Spell(this, spellInfo, triggered, originalCaster );
|
Spell *spell = new Spell(this, spellInfo, triggered, originalCaster);
|
||||||
|
|
||||||
SpellCastTargets targets;
|
SpellCastTargets targets;
|
||||||
targets.setUnitTarget( Victim );
|
targets.setUnitTarget( Victim );
|
||||||
|
|
@ -1099,31 +1099,31 @@ void Unit::CastSpell(Unit* Victim,SpellEntry const *spellInfo, bool triggered, I
|
||||||
spell->prepare(&targets, triggeredByAura);
|
spell->prepare(&targets, triggeredByAura);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::CastCustomSpell(Unit* Victim,uint32 spellId, int32 const* bp0, int32 const* bp1, int32 const* bp2, bool triggered, Item *castItem, Aura* triggeredByAura, uint64 originalCaster)
|
void Unit::CastCustomSpell(Unit* Victim,uint32 spellId, int32 const* bp0, int32 const* bp1, int32 const* bp2, bool triggered, Item *castItem, Aura* triggeredByAura, ObjectGuid originalCaster)
|
||||||
{
|
{
|
||||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId );
|
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
|
||||||
|
|
||||||
if(!spellInfo)
|
if(!spellInfo)
|
||||||
{
|
{
|
||||||
sLog.outError("CastCustomSpell: unknown spell id %i", spellId);
|
sLog.outError("CastCustomSpell: unknown spell id %i by caster: %s", spellId, GetObjectGuid().GetString().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CastCustomSpell(Victim,spellInfo,bp0,bp1,bp2,triggered,castItem,triggeredByAura, originalCaster);
|
CastCustomSpell(Victim, spellInfo, bp0, bp1, bp2, triggered, castItem, triggeredByAura, originalCaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::CastCustomSpell(Unit* Victim,SpellEntry const *spellInfo, int32 const* bp0, int32 const* bp1, int32 const* bp2, bool triggered, Item *castItem, Aura* triggeredByAura, uint64 originalCaster)
|
void Unit::CastCustomSpell(Unit* Victim, SpellEntry const *spellInfo, int32 const* bp0, int32 const* bp1, int32 const* bp2, bool triggered, Item *castItem, Aura* triggeredByAura, ObjectGuid originalCaster)
|
||||||
{
|
{
|
||||||
if(!spellInfo)
|
if(!spellInfo)
|
||||||
{
|
{
|
||||||
sLog.outError("CastCustomSpell: unknown spell");
|
sLog.outError("CastCustomSpell: unknown spell by caster: %s", GetObjectGuid().GetString().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (castItem)
|
if (castItem)
|
||||||
DEBUG_LOG("WORLD: cast Item spellId - %i", spellInfo->Id);
|
DEBUG_LOG("WORLD: cast Item spellId - %i", spellInfo->Id);
|
||||||
|
|
||||||
if(!originalCaster && triggeredByAura)
|
if(originalCaster.IsEmpty() && triggeredByAura)
|
||||||
originalCaster = triggeredByAura->GetCasterGUID();
|
originalCaster = triggeredByAura->GetCasterGUID();
|
||||||
|
|
||||||
Spell *spell = new Spell(this, spellInfo, triggered, originalCaster);
|
Spell *spell = new Spell(this, spellInfo, triggered, originalCaster);
|
||||||
|
|
@ -1144,35 +1144,35 @@ void Unit::CastCustomSpell(Unit* Victim,SpellEntry const *spellInfo, int32 const
|
||||||
}
|
}
|
||||||
|
|
||||||
// used for scripting
|
// used for scripting
|
||||||
void Unit::CastSpell(float x, float y, float z, uint32 spellId, bool triggered, Item *castItem, Aura* triggeredByAura, uint64 originalCaster)
|
void Unit::CastSpell(float x, float y, float z, uint32 spellId, bool triggered, Item *castItem, Aura* triggeredByAura, ObjectGuid originalCaster)
|
||||||
{
|
{
|
||||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId );
|
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
|
||||||
|
|
||||||
if(!spellInfo)
|
if(!spellInfo)
|
||||||
{
|
{
|
||||||
sLog.outError("CastSpell(x,y,z): unknown spell id %i by caster: %s %u)", spellId,(GetTypeId()==TYPEID_PLAYER ? "player (GUID:" : "creature (Entry:"),(GetTypeId()==TYPEID_PLAYER ? GetGUIDLow() : GetEntry()));
|
sLog.outError("CastSpell(x,y,z): unknown spell id %i by caster: %s", spellId, GetObjectGuid().GetString().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
CastSpell(x, y, z,spellInfo,triggered,castItem,triggeredByAura, originalCaster);
|
CastSpell(x, y, z, spellInfo, triggered, castItem, triggeredByAura, originalCaster);
|
||||||
}
|
}
|
||||||
|
|
||||||
// used for scripting
|
// used for scripting
|
||||||
void Unit::CastSpell(float x, float y, float z, SpellEntry const *spellInfo, bool triggered, Item *castItem, Aura* triggeredByAura, uint64 originalCaster)
|
void Unit::CastSpell(float x, float y, float z, SpellEntry const *spellInfo, bool triggered, Item *castItem, Aura* triggeredByAura, ObjectGuid originalCaster)
|
||||||
{
|
{
|
||||||
if(!spellInfo)
|
if(!spellInfo)
|
||||||
{
|
{
|
||||||
sLog.outError("CastSpell(x,y,z): unknown spell by caster: %s %u)", (GetTypeId()==TYPEID_PLAYER ? "player (GUID:" : "creature (Entry:"),(GetTypeId()==TYPEID_PLAYER ? GetGUIDLow() : GetEntry()));
|
sLog.outError("CastSpell(x,y,z): unknown spell by caster: %s", GetObjectGuid().GetString().c_str());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (castItem)
|
if (castItem)
|
||||||
DEBUG_LOG("WORLD: cast Item spellId - %i", spellInfo->Id);
|
DEBUG_LOG("WORLD: cast Item spellId - %i", spellInfo->Id);
|
||||||
|
|
||||||
if(!originalCaster && triggeredByAura)
|
if(originalCaster.IsEmpty() && triggeredByAura)
|
||||||
originalCaster = triggeredByAura->GetCasterGUID();
|
originalCaster = triggeredByAura->GetCasterGUID();
|
||||||
|
|
||||||
Spell *spell = new Spell(this, spellInfo, triggered, originalCaster );
|
Spell *spell = new Spell(this, spellInfo, triggered, originalCaster);
|
||||||
|
|
||||||
SpellCastTargets targets;
|
SpellCastTargets targets;
|
||||||
targets.setDestination(x, y, z);
|
targets.setDestination(x, y, z);
|
||||||
|
|
|
||||||
|
|
@ -773,7 +773,7 @@ class MovementInfo
|
||||||
t_time = time;
|
t_time = time;
|
||||||
t_seat = seat;
|
t_seat = seat;
|
||||||
}
|
}
|
||||||
uint64 GetTransportGuid() const { return t_guid.GetRawValue(); }
|
ObjectGuid const& GetTransportGuid() const { return t_guid; }
|
||||||
Position const *GetTransportPos() const { return &t_pos; }
|
Position const *GetTransportPos() const { return &t_pos; }
|
||||||
int8 GetTransportSeat() const { return t_seat; }
|
int8 GetTransportSeat() const { return t_seat; }
|
||||||
uint32 GetTransportTime() const { return t_time; }
|
uint32 GetTransportTime() const { return t_time; }
|
||||||
|
|
@ -1352,12 +1352,12 @@ class MANGOS_DLL_SPEC Unit : public WorldObject
|
||||||
void SendEnergizeSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage,Powers powertype);
|
void SendEnergizeSpellLog(Unit *pVictim, uint32 SpellID, uint32 Damage,Powers powertype);
|
||||||
void EnergizeBySpell(Unit *pVictim, uint32 SpellID, uint32 Damage, Powers powertype);
|
void EnergizeBySpell(Unit *pVictim, uint32 SpellID, uint32 Damage, Powers powertype);
|
||||||
uint32 SpellNonMeleeDamageLog(Unit *pVictim, uint32 spellID, uint32 damage);
|
uint32 SpellNonMeleeDamageLog(Unit *pVictim, uint32 spellID, uint32 damage);
|
||||||
void CastSpell(Unit* Victim, uint32 spellId, bool triggered, Item *castItem = NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0);
|
void CastSpell(Unit* Victim, uint32 spellId, bool triggered, Item *castItem = NULL, Aura* triggeredByAura = NULL, ObjectGuid originalCaster = ObjectGuid::EmptyGuid);
|
||||||
void CastSpell(Unit* Victim,SpellEntry const *spellInfo, bool triggered, Item *castItem= NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0);
|
void CastSpell(Unit* Victim,SpellEntry const *spellInfo, bool triggered, Item *castItem= NULL, Aura* triggeredByAura = NULL, ObjectGuid originalCaster = ObjectGuid::EmptyGuid);
|
||||||
void CastCustomSpell(Unit* Victim, uint32 spellId, int32 const* bp0, int32 const* bp1, int32 const* bp2, bool triggered, Item *castItem= NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0);
|
void CastCustomSpell(Unit* Victim, uint32 spellId, int32 const* bp0, int32 const* bp1, int32 const* bp2, bool triggered, Item *castItem= NULL, Aura* triggeredByAura = NULL, ObjectGuid originalCaster = ObjectGuid::EmptyGuid);
|
||||||
void CastCustomSpell(Unit* Victim,SpellEntry const *spellInfo, int32 const* bp0, int32 const* bp1, int32 const* bp2, bool triggered, Item *castItem= NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0);
|
void CastCustomSpell(Unit* Victim,SpellEntry const *spellInfo, int32 const* bp0, int32 const* bp1, int32 const* bp2, bool triggered, Item *castItem= NULL, Aura* triggeredByAura = NULL, ObjectGuid originalCaster = ObjectGuid::EmptyGuid);
|
||||||
void CastSpell(float x, float y, float z, uint32 spellId, bool triggered, Item *castItem = NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0);
|
void CastSpell(float x, float y, float z, uint32 spellId, bool triggered, Item *castItem = NULL, Aura* triggeredByAura = NULL, ObjectGuid originalCaster = ObjectGuid::EmptyGuid);
|
||||||
void CastSpell(float x, float y, float z, SpellEntry const *spellInfo, bool triggered, Item *castItem = NULL, Aura* triggeredByAura = NULL, uint64 originalCaster = 0);
|
void CastSpell(float x, float y, float z, SpellEntry const *spellInfo, bool triggered, Item *castItem = NULL, Aura* triggeredByAura = NULL, ObjectGuid originalCaster = ObjectGuid::EmptyGuid);
|
||||||
|
|
||||||
bool IsDamageToThreatSpell(SpellEntry const * spellInfo) const;
|
bool IsDamageToThreatSpell(SpellEntry const * spellInfo) const;
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "9617"
|
#define REVISION_NR "9618"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue