mirror of
https://github.com/mangosfour/server.git
synced 2025-12-14 07:37:01 +00:00
[7207] Phase system development continue for DB/in_game objects
* Store phase mask for creatures/gameobjects/corpse in DB * Propertly set phase for summoned creatures/gameobjects/pets/corpses/spell related dynobjects * Select proper phase for spawned creature/gameobjects and save it in DB TODO: in game commands.
This commit is contained in:
parent
b5da610388
commit
aa24bd836e
29 changed files with 204 additions and 82 deletions
|
|
@ -782,7 +782,7 @@ void Spell::EffectDummy(uint32 i)
|
|||
|
||||
Map *map = creatureTarget->GetMap();
|
||||
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), 179644, map,
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), 179644, map, m_caster->GetPhaseMask(),
|
||||
creatureTarget->GetPositionX(), creatureTarget->GetPositionY(), creatureTarget->GetPositionZ(),
|
||||
creatureTarget->GetOrientation(), 0, 0, 0, 0, 100, 1) )
|
||||
{
|
||||
|
|
@ -3233,7 +3233,8 @@ void Spell::EffectSummon(uint32 i)
|
|||
|
||||
Map *map = m_caster->GetMap();
|
||||
uint32 pet_number = objmgr.GeneratePetNumber();
|
||||
if(!spawnCreature->Create(objmgr.GenerateLowGuid(HIGHGUID_PET),map,m_spellInfo->EffectMiscValue[i], pet_number))
|
||||
if(!spawnCreature->Create(objmgr.GenerateLowGuid(HIGHGUID_PET),map,m_caster->GetPhaseMask(),
|
||||
m_spellInfo->EffectMiscValue[i], pet_number))
|
||||
{
|
||||
sLog.outErrorDb("Spell::EffectSummon: no such creature entry %u",m_spellInfo->EffectMiscValue[i]);
|
||||
delete spawnCreature;
|
||||
|
|
@ -3657,7 +3658,8 @@ void Spell::EffectSummonGuardian(uint32 i)
|
|||
|
||||
Map *map = m_caster->GetMap();
|
||||
uint32 pet_number = objmgr.GeneratePetNumber();
|
||||
if(!spawnCreature->Create(objmgr.GenerateLowGuid(HIGHGUID_PET), map,m_spellInfo->EffectMiscValue[i], pet_number))
|
||||
if(!spawnCreature->Create(objmgr.GenerateLowGuid(HIGHGUID_PET), map,m_caster->GetPhaseMask(),
|
||||
m_spellInfo->EffectMiscValue[i], pet_number))
|
||||
{
|
||||
sLog.outError("no such creature entry %u",m_spellInfo->EffectMiscValue[i]);
|
||||
delete spawnCreature;
|
||||
|
|
@ -4075,7 +4077,8 @@ void Spell::EffectSummonPet(uint32 i)
|
|||
|
||||
Map *map = m_caster->GetMap();
|
||||
uint32 pet_number = objmgr.GeneratePetNumber();
|
||||
if(!NewSummon->Create(objmgr.GenerateLowGuid(HIGHGUID_PET), map, petentry, pet_number))
|
||||
if(!NewSummon->Create(objmgr.GenerateLowGuid(HIGHGUID_PET), map, m_caster->GetPhaseMask(),
|
||||
petentry, pet_number))
|
||||
{
|
||||
delete NewSummon;
|
||||
return;
|
||||
|
|
@ -4506,7 +4509,7 @@ void Spell::EffectSummonObjectWild(uint32 i)
|
|||
Map *map = target->GetMap();
|
||||
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), gameobject_id, map,
|
||||
x, y, z, target->GetOrientation(), 0, 0, 0, 0, 100, 1))
|
||||
m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0, 0, 0, 0, 100, 1))
|
||||
{
|
||||
delete pGameObj;
|
||||
return;
|
||||
|
|
@ -4554,7 +4557,7 @@ void Spell::EffectSummonObjectWild(uint32 i)
|
|||
{
|
||||
GameObject* linkedGO = new GameObject;
|
||||
if(linkedGO->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), linkedEntry, map,
|
||||
x, y, z, target->GetOrientation(), 0, 0, 0, 0, 100, 1))
|
||||
m_caster->GetPhaseMask(), x, y, z, target->GetOrientation(), 0, 0, 0, 0, 100, 1))
|
||||
{
|
||||
linkedGO->SetRespawnTime(duration > 0 ? duration/1000 : 0);
|
||||
linkedGO->SetSpellId(m_spellInfo->Id);
|
||||
|
|
@ -5166,7 +5169,8 @@ void Spell::EffectDuel(uint32 i)
|
|||
uint32 gameobject_id = m_spellInfo->EffectMiscValue[i];
|
||||
|
||||
Map *map = m_caster->GetMap();
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), gameobject_id, map,
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), gameobject_id,
|
||||
map, m_caster->GetPhaseMask(),
|
||||
m_caster->GetPositionX()+(unitTarget->GetPositionX()-m_caster->GetPositionX())/2 ,
|
||||
m_caster->GetPositionY()+(unitTarget->GetPositionY()-m_caster->GetPositionY())/2 ,
|
||||
m_caster->GetPositionZ(),
|
||||
|
|
@ -5349,7 +5353,8 @@ void Spell::EffectSummonTotem(uint32 i)
|
|||
|
||||
Totem* pTotem = new Totem;
|
||||
|
||||
if(!pTotem->Create(objmgr.GenerateLowGuid(HIGHGUID_UNIT), m_caster->GetMap(), m_spellInfo->EffectMiscValue[i], team ))
|
||||
if(!pTotem->Create(objmgr.GenerateLowGuid(HIGHGUID_UNIT), m_caster->GetMap(), m_caster->GetPhaseMask(),
|
||||
m_spellInfo->EffectMiscValue[i], team ))
|
||||
{
|
||||
delete pTotem;
|
||||
return;
|
||||
|
|
@ -5560,7 +5565,8 @@ void Spell::EffectSummonObject(uint32 i)
|
|||
m_caster->GetClosePoint(x,y,z,DEFAULT_WORLD_OBJECT_SIZE);
|
||||
|
||||
Map *map = m_caster->GetMap();
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), go_id, map, x, y, z, m_caster->GetOrientation(), 0, 0, rot2, rot3, 0, 1))
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), go_id, map,
|
||||
m_caster->GetPhaseMask(), x, y, z, m_caster->GetOrientation(), 0, 0, rot2, rot3, 0, 1))
|
||||
{
|
||||
delete pGameObj;
|
||||
return;
|
||||
|
|
@ -5822,8 +5828,8 @@ void Spell::EffectSummonCritter(uint32 i)
|
|||
|
||||
Map *map = m_caster->GetMap();
|
||||
uint32 pet_number = objmgr.GeneratePetNumber();
|
||||
if(!critter->Create(objmgr.GenerateLowGuid(HIGHGUID_PET),
|
||||
map, pet_entry, pet_number))
|
||||
if(!critter->Create(objmgr.GenerateLowGuid(HIGHGUID_PET), map, m_caster->GetPhaseMask(),
|
||||
pet_entry, pet_number))
|
||||
{
|
||||
sLog.outError("Spell::EffectSummonCritter, spellid %u: no such creature entry %u", m_spellInfo->Id, pet_entry);
|
||||
delete critter;
|
||||
|
|
@ -6154,7 +6160,7 @@ void Spell::EffectTransmitted(uint32 effIndex)
|
|||
GameObject* pGameObj = new GameObject;
|
||||
|
||||
if(!pGameObj->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), name_id, cMap,
|
||||
fx, fy, fz, m_caster->GetOrientation(), 0, 0, 0, 0, 100, 1))
|
||||
m_caster->GetPhaseMask(), fx, fy, fz, m_caster->GetOrientation(), 0, 0, 0, 0, 100, 1))
|
||||
{
|
||||
delete pGameObj;
|
||||
return;
|
||||
|
|
@ -6225,7 +6231,7 @@ void Spell::EffectTransmitted(uint32 effIndex)
|
|||
{
|
||||
GameObject* linkedGO = new GameObject;
|
||||
if(linkedGO->Create(objmgr.GenerateLowGuid(HIGHGUID_GAMEOBJECT), linkedEntry, cMap,
|
||||
fx, fy, fz, m_caster->GetOrientation(), 0, 0, 0, 0, 100, 1))
|
||||
m_caster->GetPhaseMask(), fx, fy, fz, m_caster->GetOrientation(), 0, 0, 0, 0, 100, 1))
|
||||
{
|
||||
linkedGO->SetRespawnTime(duration > 0 ? duration/1000 : 0);
|
||||
linkedGO->SetUInt32Value(GAMEOBJECT_LEVEL, m_caster->getLevel() );
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue