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
|
|
@ -1985,13 +1985,13 @@ void Player::SetGameMaster(bool on)
|
|||
getHostilRefManager().setOnlineOfflineState(false);
|
||||
CombatStop();
|
||||
|
||||
SetPhaseMask(PHASEMASK_ANYWHERE); // see and visible in all phases
|
||||
SetPhaseMask(PHASEMASK_ANYWHERE,false); // see and visible in all phases
|
||||
}
|
||||
else
|
||||
{
|
||||
// restore phase
|
||||
AuraList const& phases = GetAurasByType(SPELL_AURA_PHASE);
|
||||
SetPhaseMask(!phases.empty() ? phases.front()->GetMiscValue() : PHASEMASK_NORMAL);
|
||||
SetPhaseMask(!phases.empty() ? phases.front()->GetMiscValue() : PHASEMASK_NORMAL,false);
|
||||
|
||||
m_ExtraFlags &= ~ PLAYER_EXTRA_GM_ON;
|
||||
setFactionForRace(getRace());
|
||||
|
|
@ -3936,8 +3936,7 @@ void Player::CreateCorpse()
|
|||
Corpse *corpse = new Corpse( (m_ExtraFlags & PLAYER_EXTRA_PVP_DEATH) ? CORPSE_RESURRECTABLE_PVP : CORPSE_RESURRECTABLE_PVE );
|
||||
SetPvPDeath(false);
|
||||
|
||||
if(!corpse->Create(objmgr.GenerateLowGuid(HIGHGUID_CORPSE), this, GetMapId(), GetPositionX(),
|
||||
GetPositionY(), GetPositionZ(), GetOrientation()))
|
||||
if(!corpse->Create(objmgr.GenerateLowGuid(HIGHGUID_CORPSE), this))
|
||||
{
|
||||
delete corpse;
|
||||
return;
|
||||
|
|
@ -19455,3 +19454,24 @@ void Player::_LoadSkills()
|
|||
SetSkill(SKILL_UNARMED, base_skill,base_skill);
|
||||
}
|
||||
}
|
||||
|
||||
uint32 Player::GetPhaseMaskForSpawn() const
|
||||
{
|
||||
uint32 phase = PHASEMASK_NORMAL;
|
||||
if(!isGameMaster())
|
||||
phase = GetPhaseMask();
|
||||
else
|
||||
{
|
||||
AuraList const& phases = GetAurasByType(SPELL_AURA_PHASE);
|
||||
if(phases.empty())
|
||||
phase = GetPhaseMask();
|
||||
else
|
||||
phase = phases.front()->GetMiscValue();
|
||||
}
|
||||
|
||||
// some aura phases include 1 normal map in addition to phase itself
|
||||
if(uint32 n_phase = phase & ~PHASEMASK_NORMAL)
|
||||
return n_phase;
|
||||
|
||||
return PHASEMASK_NORMAL;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue