feat(Core/Unit): New helpers for UnitFlag and UnitFlag2 (#11227)
This commit is contained in:
@@ -587,9 +587,9 @@ void PetAI::DoAttack(Unit* target, bool chase)
|
|||||||
{
|
{
|
||||||
// xinef: properly fix fake combat after pet is sent to attack
|
// xinef: properly fix fake combat after pet is sent to attack
|
||||||
if (Unit* owner = me->GetOwner())
|
if (Unit* owner = me->GetOwner())
|
||||||
owner->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT);
|
owner->SetUnitFlag(UNIT_FLAG_PET_IN_COMBAT);
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT);
|
me->SetUnitFlag(UNIT_FLAG_PET_IN_COMBAT);
|
||||||
|
|
||||||
// Play sound to let the player know the pet is attacking something it picked on its own
|
// Play sound to let the player know the pet is attacking something it picked on its own
|
||||||
if (me->HasReactState(REACT_AGGRESSIVE) && !me->GetCharmInfo()->IsCommandAttack())
|
if (me->HasReactState(REACT_AGGRESSIVE) && !me->GetCharmInfo()->IsCommandAttack())
|
||||||
@@ -676,7 +676,7 @@ bool PetAI::CanAttack(Unit* target, SpellInfo const* spellInfo)
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// xinef: pets of mounted players have stunned flag only, check this also
|
// xinef: pets of mounted players have stunned flag only, check this also
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED))
|
if (me->HasUnitFlag(UNIT_FLAG_STUNNED))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// pussywizard: TEMP!
|
// pussywizard: TEMP!
|
||||||
|
|||||||
@@ -298,7 +298,7 @@ SpellInfo const* ScriptedAI::SelectSpell(Unit* target, uint32 school, uint32 mec
|
|||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
//Silenced so we can't cast
|
//Silenced so we can't cast
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED))
|
if (me->HasUnitFlag(UNIT_FLAG_SILENCED))
|
||||||
return nullptr;
|
return nullptr;
|
||||||
|
|
||||||
//Using the extended script system we first create a list of viable spells
|
//Using the extended script system we first create a list of viable spells
|
||||||
|
|||||||
@@ -215,7 +215,7 @@ void npc_escortAI::EnterEvadeMode()
|
|||||||
{
|
{
|
||||||
me->GetMotionMaster()->MoveTargetedHome();
|
me->GetMotionMaster()->MoveTargetedHome();
|
||||||
if (HasImmuneToNPCFlags)
|
if (HasImmuneToNPCFlags)
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -497,10 +497,10 @@ void npc_escortAI::Start(bool isActiveAttacker /* = true*/, bool run /* = false
|
|||||||
|
|
||||||
//disable npcflags
|
//disable npcflags
|
||||||
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
|
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_NONE);
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC))
|
if (me->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC))
|
||||||
{
|
{
|
||||||
HasImmuneToNPCFlags = true;
|
HasImmuneToNPCFlags = true;
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG("scripts.ai", "EscortAI started with {} waypoints. ActiveAttacker = {}, Run = {}, PlayerGUID = {}",
|
LOG_DEBUG("scripts.ai", "EscortAI started with {} waypoints. ActiveAttacker = {}, Run = {}, PlayerGUID = {}",
|
||||||
|
|||||||
@@ -630,7 +630,7 @@ void SmartAI::EnterEvadeMode()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (me->GetCharmerGUID().IsPlayer() || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED))
|
if (me->GetCharmerGUID().IsPlayer() || me->HasUnitFlag(UNIT_FLAG_POSSESSED))
|
||||||
{
|
{
|
||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
return;
|
return;
|
||||||
@@ -802,7 +802,7 @@ void SmartAI::SummonedCreatureDies(Creature* summon, Unit* /*killer*/)
|
|||||||
void SmartAI::AttackStart(Unit* who)
|
void SmartAI::AttackStart(Unit* who)
|
||||||
{
|
{
|
||||||
// xinef: dont allow charmed npcs to act on their own
|
// xinef: dont allow charmed npcs to act on their own
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED))
|
if (me->HasUnitFlag(UNIT_FLAG_POSSESSED))
|
||||||
{
|
{
|
||||||
if (who && mCanAutoAttack)
|
if (who && mCanAutoAttack)
|
||||||
me->Attack(who, true);
|
me->Attack(who, true);
|
||||||
|
|||||||
@@ -719,7 +719,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
|||||||
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(e.action.cast.spell);
|
SpellInfo const* spellInfo = sSpellMgr->GetSpellInfo(e.action.cast.spell);
|
||||||
int32 currentPower = me->GetPower(GetCasterPowerType());
|
int32 currentPower = me->GetPower(GetCasterPowerType());
|
||||||
|
|
||||||
if ((spellInfo && (currentPower < spellInfo->CalcPowerCost(me, spellInfo->GetSchoolMask()) || me->IsSpellProhibited(spellInfo->GetSchoolMask()))) || me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED))
|
if ((spellInfo && (currentPower < spellInfo->CalcPowerCost(me, spellInfo->GetSchoolMask()) || me->IsSpellProhibited(spellInfo->GetSchoolMask()))) || me->HasUnitFlag(UNIT_FLAG_SILENCED))
|
||||||
{
|
{
|
||||||
SetCasterActualDist(0);
|
SetCasterActualDist(0);
|
||||||
CAST_AI(SmartAI, me->AI())->SetForcedCombatMove(0);
|
CAST_AI(SmartAI, me->AI())->SetForcedCombatMove(0);
|
||||||
@@ -863,13 +863,13 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
|||||||
{
|
{
|
||||||
if (!e.action.unitFlag.type)
|
if (!e.action.unitFlag.type)
|
||||||
{
|
{
|
||||||
(*itr)->ToUnit()->SetFlag(UNIT_FIELD_FLAGS, e.action.unitFlag.flag);
|
(*itr)->ToUnit()->SetUnitFlag(UnitFlags(e.action.unitFlag.flag));
|
||||||
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction:: SMART_ACTION_SET_UNIT_FLAG. Unit {} added flag {} to UNIT_FIELD_FLAGS",
|
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction:: SMART_ACTION_SET_UNIT_FLAG. Unit {} added flag {} to UNIT_FIELD_FLAGS",
|
||||||
(*itr)->GetGUID().ToString(), e.action.unitFlag.flag);
|
(*itr)->GetGUID().ToString(), e.action.unitFlag.flag);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(*itr)->ToUnit()->SetFlag(UNIT_FIELD_FLAGS_2, e.action.unitFlag.flag);
|
(*itr)->ToUnit()->SetUnitFlag2(UnitFlags2(e.action.unitFlag.flag));
|
||||||
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction:: SMART_ACTION_SET_UNIT_FLAG. Unit {} added flag {} to UNIT_FIELD_FLAGS_2",
|
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction:: SMART_ACTION_SET_UNIT_FLAG. Unit {} added flag {} to UNIT_FIELD_FLAGS_2",
|
||||||
(*itr)->GetGUID().ToString(), e.action.unitFlag.flag);
|
(*itr)->GetGUID().ToString(), e.action.unitFlag.flag);
|
||||||
}
|
}
|
||||||
@@ -891,13 +891,13 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
|||||||
{
|
{
|
||||||
if (!e.action.unitFlag.type)
|
if (!e.action.unitFlag.type)
|
||||||
{
|
{
|
||||||
(*itr)->ToUnit()->RemoveFlag(UNIT_FIELD_FLAGS, e.action.unitFlag.flag);
|
(*itr)->ToUnit()->RemoveUnitFlag(UnitFlags(e.action.unitFlag.flag));
|
||||||
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction:: SMART_ACTION_REMOVE_UNIT_FLAG. Unit {} removed flag {} to UNIT_FIELD_FLAGS",
|
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction:: SMART_ACTION_REMOVE_UNIT_FLAG. Unit {} removed flag {} to UNIT_FIELD_FLAGS",
|
||||||
(*itr)->GetGUID().ToString(), e.action.unitFlag.flag);
|
(*itr)->GetGUID().ToString(), e.action.unitFlag.flag);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
(*itr)->ToUnit()->RemoveFlag(UNIT_FIELD_FLAGS_2, e.action.unitFlag.flag);
|
(*itr)->ToUnit()->RemoveUnitFlag2(UnitFlags2(e.action.unitFlag.flag));
|
||||||
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction:: SMART_ACTION_REMOVE_UNIT_FLAG. Unit {} removed flag {} to UNIT_FIELD_FLAGS_2",
|
LOG_DEBUG("sql.sql", "SmartScript::ProcessAction:: SMART_ACTION_REMOVE_UNIT_FLAG. Unit {} removed flag {} to UNIT_FIELD_FLAGS_2",
|
||||||
(*itr)->GetGUID().ToString(), e.action.unitFlag.flag);
|
(*itr)->GetGUID().ToString(), e.action.unitFlag.flag);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -488,7 +488,7 @@ void Battlefield::HideNpc(Creature* creature)
|
|||||||
{
|
{
|
||||||
creature->CombatStop();
|
creature->CombatStop();
|
||||||
creature->SetReactState(REACT_PASSIVE);
|
creature->SetReactState(REACT_PASSIVE);
|
||||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
creature->SetPhaseMask(2, false); // pussywizard: false because UpdateObjectVisibility(true) is called below in SetVisible(), no need to have it here
|
creature->SetPhaseMask(2, false); // pussywizard: false because UpdateObjectVisibility(true) is called below in SetVisible(), no need to have it here
|
||||||
creature->DisappearAndDie();
|
creature->DisappearAndDie();
|
||||||
creature->SetVisible(false);
|
creature->SetVisible(false);
|
||||||
@@ -498,14 +498,14 @@ void Battlefield::ShowNpc(Creature* creature, bool aggressive)
|
|||||||
{
|
{
|
||||||
creature->SetPhaseMask(1, false); // pussywizard: false because UpdateObjectVisibility(true) is called below in SetVisible(), no need to have it here
|
creature->SetPhaseMask(1, false); // pussywizard: false because UpdateObjectVisibility(true) is called below in SetVisible(), no need to have it here
|
||||||
creature->SetVisible(true);
|
creature->SetVisible(true);
|
||||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
creature->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
if (!creature->IsAlive())
|
if (!creature->IsAlive())
|
||||||
creature->Respawn(true);
|
creature->Respawn(true);
|
||||||
if (aggressive)
|
if (aggressive)
|
||||||
creature->SetReactState(REACT_AGGRESSIVE);
|
creature->SetReactState(REACT_AGGRESSIVE);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
creature->SetReactState(REACT_PASSIVE);
|
creature->SetReactState(REACT_PASSIVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -718,7 +718,7 @@ void BattlefieldWG::HandleKill(Player* killer, Unit* victim)
|
|||||||
|
|
||||||
// Xinef: Allow to Skin non-released corpse
|
// Xinef: Allow to Skin non-released corpse
|
||||||
if (victim->GetTypeId() == TYPEID_PLAYER)
|
if (victim->GetTypeId() == TYPEID_PLAYER)
|
||||||
victim->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
|
victim->SetUnitFlag(UNIT_FLAG_SKINNABLE);
|
||||||
}
|
}
|
||||||
else if (victim->IsVehicle() && !killer->IsFriendlyTo(victim))
|
else if (victim->IsVehicle() && !killer->IsFriendlyTo(victim))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1764,7 +1764,7 @@ void Battleground::HandleKillPlayer(Player* victim, Player* killer)
|
|||||||
if (!isArena())
|
if (!isArena())
|
||||||
{
|
{
|
||||||
// To be able to remove insignia -- ONLY IN Battlegrounds
|
// To be able to remove insignia -- ONLY IN Battlegrounds
|
||||||
victim->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
|
victim->SetUnitFlag(UNIT_FLAG_SKINNABLE);
|
||||||
RewardXPAtKill(killer, victim);
|
RewardXPAtKill(killer, victim);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -740,7 +740,7 @@ void BattlegroundIC::HandleContestedNodes(ICNodePoint* nodePoint)
|
|||||||
for (std::list<Creature*>::const_iterator itr = cannons.begin(); itr != cannons.end(); ++itr)
|
for (std::list<Creature*>::const_iterator itr = cannons.begin(); itr != cannons.end(); ++itr)
|
||||||
{
|
{
|
||||||
(*itr)->GetVehicleKit()->RemoveAllPassengers();
|
(*itr)->GetVehicleKit()->RemoveAllPassengers();
|
||||||
(*itr)->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
(*itr)->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (nodePoint->nodeType == NODE_TYPE_WORKSHOP)
|
else if (nodePoint->nodeType == NODE_TYPE_WORKSHOP)
|
||||||
@@ -775,7 +775,7 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* nodePoint, bool recapture)
|
|||||||
gunshipHorde->GetCreatureListWithEntryInGrid(cannons, NPC_HORDE_GUNSHIP_CANNON, 150.0f);
|
gunshipHorde->GetCreatureListWithEntryInGrid(cannons, NPC_HORDE_GUNSHIP_CANNON, 150.0f);
|
||||||
|
|
||||||
for (std::list<Creature*>::const_iterator itr = cannons.begin(); itr != cannons.end(); ++itr)
|
for (std::list<Creature*>::const_iterator itr = cannons.begin(); itr != cannons.end(); ++itr)
|
||||||
(*itr)->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
(*itr)->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
for (uint8 u = 0; u < MAX_HANGAR_TELEPORTERS_SPAWNS; ++u)
|
for (uint8 u = 0; u < MAX_HANGAR_TELEPORTERS_SPAWNS; ++u)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -699,18 +699,18 @@ void BattlegroundSA::DemolisherStartState(bool start)
|
|||||||
if (Creature* dem = GetBGCreature(i))
|
if (Creature* dem = GetBGCreature(i))
|
||||||
{
|
{
|
||||||
if (start)
|
if (start)
|
||||||
dem->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
dem->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
else
|
else
|
||||||
dem->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
dem->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint8 i = BG_SA_GUN_1; i <= BG_SA_GUN_10; i++)
|
for (uint8 i = BG_SA_GUN_1; i <= BG_SA_GUN_10; i++)
|
||||||
if (Creature* gun = GetBGCreature(i))
|
if (Creature* gun = GetBGCreature(i))
|
||||||
{
|
{
|
||||||
if (start)
|
if (start)
|
||||||
gun->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
gun->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
else
|
else
|
||||||
gun->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
gun->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
// xinef: enable first gates damaging at start
|
// xinef: enable first gates damaging at start
|
||||||
|
|||||||
@@ -295,7 +295,7 @@ bool Condition::Meets(ConditionSourceInfo& sourceInfo)
|
|||||||
case CONDITION_OBJECT_ENTRY_GUID:
|
case CONDITION_OBJECT_ENTRY_GUID:
|
||||||
{
|
{
|
||||||
if (ConditionValue3 == 1 && object->ToUnit()) // pussywizard: if == 1, ignore not attackable/selectable targets
|
if (ConditionValue3 == 1 && object->ToUnit()) // pussywizard: if == 1, ignore not attackable/selectable targets
|
||||||
if (object->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE))
|
if (object->ToUnit()->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE))
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (uint32(object->GetTypeId()) == ConditionValue1)
|
if (uint32(object->GetTypeId()) == ConditionValue1)
|
||||||
|
|||||||
@@ -501,8 +501,8 @@ bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changele
|
|||||||
if (IsInCombat())
|
if (IsInCombat())
|
||||||
unit_flags |= UNIT_FLAG_IN_COMBAT;
|
unit_flags |= UNIT_FLAG_IN_COMBAT;
|
||||||
|
|
||||||
SetUInt32Value(UNIT_FIELD_FLAGS, unit_flags);
|
ReplaceAllUnitFlags(UnitFlags(unit_flags));
|
||||||
SetUInt32Value(UNIT_FIELD_FLAGS_2, cInfo->unit_flags2);
|
ReplaceAllUnitFlags2(UnitFlags2(cInfo->unit_flags2));
|
||||||
|
|
||||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, dynamicflags);
|
SetUInt32Value(UNIT_DYNAMIC_FLAGS, dynamicflags);
|
||||||
|
|
||||||
@@ -564,7 +564,7 @@ bool Creature::UpdateEntry(uint32 Entry, const CreatureData* data, bool changele
|
|||||||
|
|
||||||
// trigger creature is always not selectable and can not be attacked
|
// trigger creature is always not selectable and can not be attacked
|
||||||
if (IsTrigger())
|
if (IsTrigger())
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
InitializeReactState();
|
InitializeReactState();
|
||||||
|
|
||||||
@@ -847,7 +847,7 @@ void Creature::Regenerate(Powers power)
|
|||||||
uint32 maxValue = GetMaxPower(power);
|
uint32 maxValue = GetMaxPower(power);
|
||||||
|
|
||||||
// Xinef: implement power regeneration flag
|
// Xinef: implement power regeneration flag
|
||||||
if (!HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER) && !GetOwnerGUID().IsPlayer())
|
if (!HasUnitFlag2(UNIT_FLAG2_REGENERATE_POWER) && !GetOwnerGUID().IsPlayer())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (curValue >= maxValue)
|
if (curValue >= maxValue)
|
||||||
@@ -1302,7 +1302,7 @@ void Creature::SaveToDB(uint32 mapid, uint8 spawnMask, uint32 phaseMask)
|
|||||||
|
|
||||||
uint32 displayId = GetNativeDisplayId();
|
uint32 displayId = GetNativeDisplayId();
|
||||||
uint32 npcflag = GetUInt32Value(UNIT_NPC_FLAGS);
|
uint32 npcflag = GetUInt32Value(UNIT_NPC_FLAGS);
|
||||||
uint32 unit_flags = GetUInt32Value(UNIT_FIELD_FLAGS);
|
uint32 unit_flags = GetUnitFlags();
|
||||||
uint32 dynamicflags = GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
uint32 dynamicflags = GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
||||||
|
|
||||||
// check if it's a custom model and if not, use 0 for displayId
|
// check if it's a custom model and if not, use 0 for displayId
|
||||||
@@ -1789,14 +1789,14 @@ bool Creature::CanStartAttack(Unit const* who) const
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// This set of checks is should be done only for creatures
|
// This set of checks is should be done only for creatures
|
||||||
if ((HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC) && who->GetTypeId() != TYPEID_PLAYER) || // flag is valid only for non player characters
|
if ((HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC) && who->GetTypeId() != TYPEID_PLAYER) || // flag is valid only for non player characters
|
||||||
(HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC) && who->GetTypeId() == TYPEID_PLAYER)) // immune to PC and target is a player, return false
|
(HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC) && who->GetTypeId() == TYPEID_PLAYER)) // immune to PC and target is a player, return false
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (Unit* owner = who->GetOwner())
|
if (Unit* owner = who->GetOwner())
|
||||||
if (owner->GetTypeId() == TYPEID_PLAYER && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC)) // immune to PC and target has player owner
|
if (owner->GetTypeId() == TYPEID_PLAYER && HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC)) // immune to PC and target has player owner
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Do not attack non-combat pets
|
// Do not attack non-combat pets
|
||||||
@@ -2159,9 +2159,9 @@ SpellInfo const* Creature::reachWithSpellAttack(Unit* victim)
|
|||||||
float dist = GetDistance(victim);
|
float dist = GetDistance(victim);
|
||||||
if (dist > range || dist < minrange)
|
if (dist > range || dist < minrange)
|
||||||
continue;
|
continue;
|
||||||
if (spellInfo->PreventionType == SPELL_PREVENTION_TYPE_SILENCE && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED))
|
if (spellInfo->PreventionType == SPELL_PREVENTION_TYPE_SILENCE && HasUnitFlag(UNIT_FLAG_SILENCED))
|
||||||
continue;
|
continue;
|
||||||
if (spellInfo->PreventionType == SPELL_PREVENTION_TYPE_PACIFY && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED))
|
if (spellInfo->PreventionType == SPELL_PREVENTION_TYPE_PACIFY && HasUnitFlag(UNIT_FLAG_PACIFIED))
|
||||||
continue;
|
continue;
|
||||||
return spellInfo;
|
return spellInfo;
|
||||||
}
|
}
|
||||||
@@ -2206,9 +2206,9 @@ SpellInfo const* Creature::reachWithSpellCure(Unit* victim)
|
|||||||
// continue;
|
// continue;
|
||||||
if (dist > range || dist < minrange)
|
if (dist > range || dist < minrange)
|
||||||
continue;
|
continue;
|
||||||
if (spellInfo->PreventionType == SPELL_PREVENTION_TYPE_SILENCE && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED))
|
if (spellInfo->PreventionType == SPELL_PREVENTION_TYPE_SILENCE && HasUnitFlag(UNIT_FLAG_SILENCED))
|
||||||
continue;
|
continue;
|
||||||
if (spellInfo->PreventionType == SPELL_PREVENTION_TYPE_PACIFY && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED))
|
if (spellInfo->PreventionType == SPELL_PREVENTION_TYPE_PACIFY && HasUnitFlag(UNIT_FLAG_PACIFIED))
|
||||||
continue;
|
continue;
|
||||||
return spellInfo;
|
return spellInfo;
|
||||||
}
|
}
|
||||||
@@ -2339,7 +2339,7 @@ bool Creature::CanAssistTo(Unit const* u, Unit const* enemy, bool checkfaction /
|
|||||||
if (IsCivilian())
|
if (IsCivilian())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC))
|
if (HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// skip fighting creature
|
// skip fighting creature
|
||||||
@@ -2388,7 +2388,7 @@ bool Creature::_IsTargetAcceptable(Unit const* target) const
|
|||||||
if (target->HasUnitState(UNIT_STATE_DIED))
|
if (target->HasUnitState(UNIT_STATE_DIED))
|
||||||
{
|
{
|
||||||
// some creatures can detect fake death
|
// some creatures can detect fake death
|
||||||
if (CanIgnoreFeignDeath() && target->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH))
|
if (CanIgnoreFeignDeath() && target->HasUnitFlag2(UNIT_FLAG2_FEIGN_DEATH))
|
||||||
return true;
|
return true;
|
||||||
else
|
else
|
||||||
return false;
|
return false;
|
||||||
@@ -2475,7 +2475,7 @@ bool Creature::CanCreatureAttack(Unit const* victim, bool skipDistCheck) const
|
|||||||
}
|
}
|
||||||
|
|
||||||
// if victim is in FD and we can't see that
|
// if victim is in FD and we can't see that
|
||||||
if (victim->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH) && !CanIgnoreFeignDeath())
|
if (victim->HasUnitFlag2(UNIT_FLAG2_FEIGN_DEATH) && !CanIgnoreFeignDeath())
|
||||||
{
|
{
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@@ -2785,7 +2785,7 @@ void Creature::AllLootRemovedFromCorpse()
|
|||||||
{
|
{
|
||||||
if (LootTemplates_Skinning.HaveLootFor(GetCreatureTemplate()->SkinLootId))
|
if (LootTemplates_Skinning.HaveLootFor(GetCreatureTemplate()->SkinLootId))
|
||||||
{
|
{
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
|
SetUnitFlag(UNIT_FLAG_SKINNABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3056,12 +3056,12 @@ bool Creature::CanEnterWater() const
|
|||||||
void Creature::RefreshSwimmingFlag(bool recheck)
|
void Creature::RefreshSwimmingFlag(bool recheck)
|
||||||
{
|
{
|
||||||
if (!_isMissingSwimmingFlagOutOfCombat || recheck)
|
if (!_isMissingSwimmingFlagOutOfCombat || recheck)
|
||||||
_isMissingSwimmingFlagOutOfCombat = !HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SWIMMING);
|
_isMissingSwimmingFlagOutOfCombat = !HasUnitFlag(UNIT_FLAG_SWIMMING);
|
||||||
|
|
||||||
// Check if the creature has UNIT_FLAG_SWIMMING and add it if it's missing
|
// Check if the creature has UNIT_FLAG_SWIMMING and add it if it's missing
|
||||||
// Creatures must be able to chase a target in water if they can enter water
|
// Creatures must be able to chase a target in water if they can enter water
|
||||||
if (_isMissingSwimmingFlagOutOfCombat && CanEnterWater())
|
if (_isMissingSwimmingFlagOutOfCombat && CanEnterWater())
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SWIMMING);
|
SetUnitFlag(UNIT_FLAG_SWIMMING);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Creature::SetCanFly(bool enable, bool /*packetOnly*/ /* = false */)
|
bool Creature::SetCanFly(bool enable, bool /*packetOnly*/ /* = false */)
|
||||||
|
|||||||
@@ -2057,13 +2057,13 @@ void GameObject::CastSpell(Unit* target, uint32 spellId)
|
|||||||
// needed for GO casts for proper target validation checks
|
// needed for GO casts for proper target validation checks
|
||||||
trigger->SetOwnerGUID(owner->GetGUID());
|
trigger->SetOwnerGUID(owner->GetGUID());
|
||||||
// xinef: fixes some duel bugs with traps]
|
// xinef: fixes some duel bugs with traps]
|
||||||
if (owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED))
|
if (owner->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
|
||||||
trigger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
trigger->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
if (owner->IsFFAPvP())
|
if (owner->IsFFAPvP())
|
||||||
trigger->SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP);
|
trigger->SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP);
|
||||||
|
|
||||||
// xinef: Remove Immunity flags
|
// xinef: Remove Immunity flags
|
||||||
trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
trigger->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
// xinef: set proper orientation, fixes cast against stealthed targets
|
// xinef: set proper orientation, fixes cast against stealthed targets
|
||||||
if (target)
|
if (target)
|
||||||
trigger->SetInFront(target);
|
trigger->SetInFront(target);
|
||||||
|
|||||||
@@ -303,14 +303,14 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c
|
|||||||
else
|
else
|
||||||
SetUInt32Value(UNIT_FIELD_BYTES_0, 0x800); // class = mage
|
SetUInt32Value(UNIT_FIELD_BYTES_0, 0x800); // class = mage
|
||||||
|
|
||||||
SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED); // this enables popup window (pet dismiss, cancel)
|
ReplaceAllUnitFlags(UNIT_FLAG_PLAYER_CONTROLLED); // this enables popup window (pet dismiss, cancel)
|
||||||
break;
|
break;
|
||||||
case HUNTER_PET:
|
case HUNTER_PET:
|
||||||
SetUInt32Value(UNIT_FIELD_BYTES_0, 0x02020100); // class = warrior, gender = none, power = focus
|
SetUInt32Value(UNIT_FIELD_BYTES_0, 0x02020100); // class = warrior, gender = none, power = focus
|
||||||
SetSheath(SHEATH_STATE_MELEE);
|
SetSheath(SHEATH_STATE_MELEE);
|
||||||
SetByteFlag(UNIT_FIELD_BYTES_2, 2, petInfo->WasRenamed ? UNIT_CAN_BE_ABANDONED : UNIT_CAN_BE_RENAMED | UNIT_CAN_BE_ABANDONED);
|
SetByteFlag(UNIT_FIELD_BYTES_2, 2, petInfo->WasRenamed ? UNIT_CAN_BE_ABANDONED : UNIT_CAN_BE_RENAMED | UNIT_CAN_BE_ABANDONED);
|
||||||
|
|
||||||
SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
ReplaceAllUnitFlags(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
// this enables popup window (pet abandon, cancel)
|
// this enables popup window (pet abandon, cancel)
|
||||||
SetMaxPower(POWER_HAPPINESS, GetCreatePowers(POWER_HAPPINESS));
|
SetMaxPower(POWER_HAPPINESS, GetCreatePowers(POWER_HAPPINESS));
|
||||||
SetPower(POWER_HAPPINESS, petInfo->Happiness);
|
SetPower(POWER_HAPPINESS, petInfo->Happiness);
|
||||||
@@ -622,19 +622,19 @@ void Pet::setDeathState(DeathState s, bool /*despawn = false*/)
|
|||||||
{
|
{
|
||||||
// pet corpse non lootable and non skinnable
|
// pet corpse non lootable and non skinnable
|
||||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
|
RemoveUnitFlag(UNIT_FLAG_SKINNABLE);
|
||||||
|
|
||||||
//lose happiness when died and not in BG/Arena
|
//lose happiness when died and not in BG/Arena
|
||||||
MapEntry const* mapEntry = sMapStore.LookupEntry(GetMapId());
|
MapEntry const* mapEntry = sMapStore.LookupEntry(GetMapId());
|
||||||
if (!mapEntry || (mapEntry->map_type != MAP_ARENA && mapEntry->map_type != MAP_BATTLEGROUND))
|
if (!mapEntry || (mapEntry->map_type != MAP_ARENA && mapEntry->map_type != MAP_BATTLEGROUND))
|
||||||
ModifyPower(POWER_HAPPINESS, -HAPPINESS_LEVEL_SIZE);
|
ModifyPower(POWER_HAPPINESS, -HAPPINESS_LEVEL_SIZE);
|
||||||
|
|
||||||
//SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
//SetUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (getDeathState() == ALIVE)
|
else if (getDeathState() == ALIVE)
|
||||||
{
|
{
|
||||||
//RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
//RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
CastPetAuras(true);
|
CastPetAuras(true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2259,7 +2259,7 @@ bool Pet::Create(ObjectGuid::LowType guidlow, Map* map, uint32 phaseMask, uint32
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// Force regen flag for player pets, just like we do for players themselves
|
// Force regen flag for player pets, just like we do for players themselves
|
||||||
SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER);
|
SetUnitFlag2(UNIT_FLAG2_REGENERATE_POWER);
|
||||||
SetSheath(SHEATH_STATE_MELEE);
|
SetSheath(SHEATH_STATE_MELEE);
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -527,9 +527,9 @@ bool Player::Create(ObjectGuid::LowType guidlow, CharacterCreateInfo* createInfo
|
|||||||
if (sWorld->getIntConfig(CONFIG_GAME_TYPE) == REALM_TYPE_PVP || sWorld->getIntConfig(CONFIG_GAME_TYPE) == REALM_TYPE_RPPVP)
|
if (sWorld->getIntConfig(CONFIG_GAME_TYPE) == REALM_TYPE_PVP || sWorld->getIntConfig(CONFIG_GAME_TYPE) == REALM_TYPE_RPPVP)
|
||||||
{
|
{
|
||||||
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP);
|
SetByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP);
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
}
|
}
|
||||||
SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER);
|
SetUnitFlag2(UNIT_FLAG2_REGENERATE_POWER);
|
||||||
SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f); // fix cast time showed in spell tooltip on client
|
SetFloatValue(UNIT_MOD_CAST_SPEED, 1.0f); // fix cast time showed in spell tooltip on client
|
||||||
SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f); // default for players in 3.0.3
|
SetFloatValue(UNIT_FIELD_HOVERHEIGHT, 1.0f); // default for players in 3.0.3
|
||||||
|
|
||||||
@@ -2173,7 +2173,7 @@ void Player::SetGameMaster(bool on)
|
|||||||
if (AccountMgr::IsGMAccount(GetSession()->GetSecurity()))
|
if (AccountMgr::IsGMAccount(GetSession()->GetSecurity()))
|
||||||
SetFaction(FACTION_FRIENDLY);
|
SetFaction(FACTION_FRIENDLY);
|
||||||
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM);
|
SetFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM);
|
||||||
SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_ALLOW_CHEAT_SPELLS);
|
SetUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS);
|
||||||
|
|
||||||
if (Pet* pet = GetPet())
|
if (Pet* pet = GetPet())
|
||||||
{
|
{
|
||||||
@@ -2204,7 +2204,7 @@ void Player::SetGameMaster(bool on)
|
|||||||
m_ExtraFlags &= ~ PLAYER_EXTRA_GM_ON;
|
m_ExtraFlags &= ~ PLAYER_EXTRA_GM_ON;
|
||||||
SetFactionForRace(getRace(true));
|
SetFactionForRace(getRace(true));
|
||||||
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM);
|
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_GM);
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_ALLOW_CHEAT_SPELLS);
|
RemoveUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS);
|
||||||
|
|
||||||
if (Pet* pet = GetPet())
|
if (Pet* pet = GetPet())
|
||||||
{
|
{
|
||||||
@@ -2649,9 +2649,9 @@ void Player::InitStatsForLevel(bool reapplyMods)
|
|||||||
UNIT_FLAG_STUNNED | UNIT_FLAG_IN_COMBAT | UNIT_FLAG_DISARMED |
|
UNIT_FLAG_STUNNED | UNIT_FLAG_IN_COMBAT | UNIT_FLAG_DISARMED |
|
||||||
UNIT_FLAG_CONFUSED | UNIT_FLAG_FLEEING | UNIT_FLAG_NOT_SELECTABLE |
|
UNIT_FLAG_CONFUSED | UNIT_FLAG_FLEEING | UNIT_FLAG_NOT_SELECTABLE |
|
||||||
UNIT_FLAG_SKINNABLE | UNIT_FLAG_MOUNT | UNIT_FLAG_TAXI_FLIGHT );
|
UNIT_FLAG_SKINNABLE | UNIT_FLAG_MOUNT | UNIT_FLAG_TAXI_FLIGHT );
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED); // must be set
|
SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED); // must be set
|
||||||
|
|
||||||
SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_REGENERATE_POWER);// must be set
|
SetUnitFlag2(UNIT_FLAG2_REGENERATE_POWER);// must be set
|
||||||
|
|
||||||
// cleanup player flags (will be re-applied if need at aura load), to avoid have ghost flag without ghost aura, for example.
|
// cleanup player flags (will be re-applied if need at aura load), to avoid have ghost flag without ghost aura, for example.
|
||||||
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK | PLAYER_FLAGS_DND | PLAYER_FLAGS_GM | PLAYER_FLAGS_GHOST | PLAYER_ALLOW_ONLY_ABILITY);
|
RemoveFlag(PLAYER_FLAGS, PLAYER_FLAGS_AFK | PLAYER_FLAGS_DND | PLAYER_FLAGS_GM | PLAYER_FLAGS_GHOST | PLAYER_ALLOW_ONLY_ABILITY);
|
||||||
@@ -4332,7 +4332,7 @@ void Player::BuildPlayerRepop()
|
|||||||
{
|
{
|
||||||
SetMovement(MOVE_UNROOT);
|
SetMovement(MOVE_UNROOT);
|
||||||
}
|
}
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE); // BG - remove insignia related
|
RemoveUnitFlag(UNIT_FLAG_SKINNABLE); // BG - remove insignia related
|
||||||
int32 corpseReclaimDelay = CalculateCorpseReclaimDelay();
|
int32 corpseReclaimDelay = CalculateCorpseReclaimDelay();
|
||||||
if (corpseReclaimDelay >= 0)
|
if (corpseReclaimDelay >= 0)
|
||||||
{
|
{
|
||||||
@@ -4431,7 +4431,7 @@ void Player::KillPlayer()
|
|||||||
StopMirrorTimers(); //disable timers(bars)
|
StopMirrorTimers(); //disable timers(bars)
|
||||||
|
|
||||||
setDeathState(CORPSE);
|
setDeathState(CORPSE);
|
||||||
//SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_IN_PVP);
|
//SetUnitFlag(UNIT_FLAG_NOT_IN_PVP);
|
||||||
|
|
||||||
SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
||||||
ApplyModFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTE_RELEASE_TIMER, !sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION));
|
ApplyModFlag(PLAYER_FIELD_BYTES, PLAYER_FIELD_BYTE_RELEASE_TIMER, !sMapStore.LookupEntry(GetMapId())->Instanceable() && !HasAuraType(SPELL_AURA_PREVENT_RESURRECTION));
|
||||||
@@ -7990,7 +7990,7 @@ void Player::SendLoot(ObjectGuid guid, LootType loot_type)
|
|||||||
loot->AddLooter(GetGUID());
|
loot->AddLooter(GetGUID());
|
||||||
|
|
||||||
if (loot_type == LOOT_CORPSE && !guid.IsItem())
|
if (loot_type == LOOT_CORPSE && !guid.IsItem())
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_LOOTING);
|
SetUnitFlag(UNIT_FLAG_LOOTING);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
SendLootError(guid, LOOT_ERROR_DIDNT_KILL);
|
SendLootError(guid, LOOT_ERROR_DIDNT_KILL);
|
||||||
@@ -9942,7 +9942,7 @@ bool Player::ActivateTaxiPathTo(std::vector<uint32> const& nodes, Creature* npc
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// taximaster case
|
// taximaster case
|
||||||
@@ -10143,7 +10143,7 @@ void Player::CleanupAfterTaxiFlight()
|
|||||||
}
|
}
|
||||||
m_taxi.ClearTaxiDestinations(); // not destinations, clear source node
|
m_taxi.ClearTaxiDestinations(); // not destinations, clear source node
|
||||||
Dismount();
|
Dismount();
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT);
|
RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT);
|
||||||
getHostileRefMgr().setOnlineOfflineState(true);
|
getHostileRefMgr().setOnlineOfflineState(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12207,7 +12207,7 @@ bool Player::HasItemFitToSpellRequirements(SpellInfo const* spellInfo, Item cons
|
|||||||
bool Player::CanNoReagentCast(SpellInfo const* spellInfo) const
|
bool Player::CanNoReagentCast(SpellInfo const* spellInfo) const
|
||||||
{
|
{
|
||||||
// don't take reagents for spells with SPELL_ATTR5_NO_REAGENT_COST_WITH_AURA
|
// don't take reagents for spells with SPELL_ATTR5_NO_REAGENT_COST_WITH_AURA
|
||||||
if (spellInfo->HasAttribute(SPELL_ATTR5_NO_REAGENT_COST_WITH_AURA) && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PREPARATION))
|
if (spellInfo->HasAttribute(SPELL_ATTR5_NO_REAGENT_COST_WITH_AURA) && HasUnitFlag(UNIT_FLAG_PREPARATION))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// Check no reagent use mask
|
// Check no reagent use mask
|
||||||
@@ -12517,14 +12517,14 @@ void Player::SetClientControl(Unit* target, bool allowMove, bool packetOnly /*=
|
|||||||
if (target->GetTypeId() != TYPEID_UNIT)
|
if (target->GetTypeId() != TYPEID_UNIT)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (allowMove && target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (allowMove && target->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
{
|
{
|
||||||
target->ClearUnitState(UNIT_STATE_ROOT);
|
target->ClearUnitState(UNIT_STATE_ROOT);
|
||||||
target->SetControlled(true, UNIT_STATE_ROOT);
|
target->SetControlled(true, UNIT_STATE_ROOT);
|
||||||
}
|
}
|
||||||
else if (!allowMove && target->HasUnitState(UNIT_STATE_ROOT) && !target->HasUnitTypeMask(UNIT_MASK_ACCESSORY))
|
else if (!allowMove && target->HasUnitState(UNIT_STATE_ROOT) && !target->HasUnitTypeMask(UNIT_MASK_ACCESSORY))
|
||||||
{
|
{
|
||||||
if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (target->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
{
|
{
|
||||||
// Xinef: restore original orientation, important for shooting vehicles!
|
// Xinef: restore original orientation, important for shooting vehicles!
|
||||||
Position pos = target->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && target->GetTransGUID() && target->GetTransGUID().IsMOTransport() ? target->ToCreature()->GetTransportHomePosition() : target->ToCreature()->GetHomePosition();
|
Position pos = target->HasUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT) && target->GetTransGUID() && target->GetTransGUID().IsMOTransport() ? target->ToCreature()->GetTransportHomePosition() : target->ToCreature()->GetHomePosition();
|
||||||
@@ -14954,7 +14954,7 @@ void Player::SetIsSpectator(bool on)
|
|||||||
m_ExtraFlags |= PLAYER_EXTRA_SPECTATOR_ON;
|
m_ExtraFlags |= PLAYER_EXTRA_SPECTATOR_ON;
|
||||||
AddUnitState(UNIT_STATE_ISOLATED);
|
AddUnitState(UNIT_STATE_ISOLATED);
|
||||||
//SetFaction(1100);
|
//SetFaction(1100);
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP);
|
RemoveByteFlag(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_FFA_PVP);
|
||||||
ResetContestedPvP();
|
ResetContestedPvP();
|
||||||
SetDisplayId(23691);
|
SetDisplayId(23691);
|
||||||
@@ -14965,7 +14965,7 @@ void Player::SetIsSpectator(bool on)
|
|||||||
if (IsSpectator())
|
if (IsSpectator())
|
||||||
ClearUnitState(UNIT_STATE_ISOLATED);
|
ClearUnitState(UNIT_STATE_ISOLATED);
|
||||||
m_ExtraFlags &= ~PLAYER_EXTRA_SPECTATOR_ON;
|
m_ExtraFlags &= ~PLAYER_EXTRA_SPECTATOR_ON;
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
RestoreDisplayId();
|
RestoreDisplayId();
|
||||||
|
|
||||||
if (!IsGameMaster())
|
if (!IsGameMaster())
|
||||||
|
|||||||
@@ -5398,7 +5398,7 @@ bool Player::LoadFromDB(ObjectGuid playerGuid, CharacterDatabaseQueryHolder cons
|
|||||||
SetGuidValue(PLAYER_FARSIGHT, ObjectGuid::Empty);
|
SetGuidValue(PLAYER_FARSIGHT, ObjectGuid::Empty);
|
||||||
SetCreatorGUID(ObjectGuid::Empty);
|
SetCreatorGUID(ObjectGuid::Empty);
|
||||||
|
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FORCE_MOVEMENT);
|
RemoveUnitFlag2(UNIT_FLAG2_FORCE_MOVEMENT);
|
||||||
|
|
||||||
// reset some aura modifiers before aura apply
|
// reset some aura modifiers before aura apply
|
||||||
SetUInt32Value(PLAYER_TRACK_CREATURES, 0);
|
SetUInt32Value(PLAYER_TRACK_CREATURES, 0);
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ void Player::Update(uint32 p_time)
|
|||||||
|
|
||||||
// Xinef: update charm AI only if we are controlled by creature or
|
// Xinef: update charm AI only if we are controlled by creature or
|
||||||
// non-posses player charm
|
// non-posses player charm
|
||||||
if (IsCharmed() && !HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED))
|
if (IsCharmed() && !HasUnitFlag(UNIT_FLAG_POSSESSED))
|
||||||
{
|
{
|
||||||
m_charmUpdateTimer += p_time;
|
m_charmUpdateTimer += p_time;
|
||||||
if (m_charmUpdateTimer >= 1000)
|
if (m_charmUpdateTimer >= 1000)
|
||||||
|
|||||||
@@ -2303,7 +2303,7 @@ void Unit::CalcHealAbsorb(HealInfo& healInfo)
|
|||||||
|
|
||||||
void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extra)
|
void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extra)
|
||||||
{
|
{
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED))
|
if (HasUnitFlag(UNIT_FLAG_PACIFIED))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -9635,9 +9635,9 @@ ReputationRank Unit::GetReactionTo(Unit const* target, bool checkOriginalFaction
|
|||||||
return *repRank;
|
return *repRank;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED))
|
if (HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
|
||||||
{
|
{
|
||||||
if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED))
|
if (target->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
|
||||||
{
|
{
|
||||||
if (selfPlayerOwner && targetPlayerOwner)
|
if (selfPlayerOwner && targetPlayerOwner)
|
||||||
{
|
{
|
||||||
@@ -9666,7 +9666,7 @@ ReputationRank Unit::GetReactionTo(Unit const* target, bool checkOriginalFaction
|
|||||||
{
|
{
|
||||||
if (ReputationRank const* repRank = selfPlayerOwner->GetReputationMgr().GetForcedRankIfAny(targetFactionTemplateEntry))
|
if (ReputationRank const* repRank = selfPlayerOwner->GetReputationMgr().GetForcedRankIfAny(targetFactionTemplateEntry))
|
||||||
return *repRank;
|
return *repRank;
|
||||||
if (!selfPlayerOwner->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_IGNORE_REPUTATION))
|
if (!selfPlayerOwner->HasUnitFlag2(UNIT_FLAG2_IGNORE_REPUTATION))
|
||||||
{
|
{
|
||||||
if (FactionEntry const* targetFactionEntry = sFactionStore.LookupEntry(targetFactionTemplateEntry->faction))
|
if (FactionEntry const* targetFactionEntry = sFactionStore.LookupEntry(targetFactionTemplateEntry->faction))
|
||||||
{
|
{
|
||||||
@@ -9751,7 +9751,7 @@ ReputationRank Unit::GetFactionReactionTo(FactionTemplateEntry const* factionTem
|
|||||||
return REP_HOSTILE;
|
return REP_HOSTILE;
|
||||||
if (ReputationRank const* repRank = targetPlayerOwner->GetReputationMgr().GetForcedRankIfAny(factionTemplateEntry))
|
if (ReputationRank const* repRank = targetPlayerOwner->GetReputationMgr().GetForcedRankIfAny(factionTemplateEntry))
|
||||||
return *repRank;
|
return *repRank;
|
||||||
if (!target->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_IGNORE_REPUTATION))
|
if (!target->HasUnitFlag2(UNIT_FLAG2_IGNORE_REPUTATION))
|
||||||
{
|
{
|
||||||
if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionTemplateEntry->faction))
|
if (FactionEntry const* factionEntry = sFactionStore.LookupEntry(factionTemplateEntry->faction))
|
||||||
{
|
{
|
||||||
@@ -9846,7 +9846,7 @@ bool Unit::Attack(Unit* victim, bool meleeAttack)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
//if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED)) // pussywizard: why having this flag prevents from entering combat? it should just prevent melee attack
|
//if (HasUnitFlag(UNIT_FLAG_PACIFIED)) // pussywizard: why having this flag prevents from entering combat? it should just prevent melee attack
|
||||||
// return false;
|
// return false;
|
||||||
|
|
||||||
// nobody can attack GM in GM-mode
|
// nobody can attack GM in GM-mode
|
||||||
@@ -10229,7 +10229,7 @@ void Unit::SetMinion(Minion* minion, bool apply)
|
|||||||
if (GetTypeId() == TYPEID_PLAYER)
|
if (GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
minion->m_ControlledByPlayer = true;
|
minion->m_ControlledByPlayer = true;
|
||||||
minion->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
minion->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Can only have one pet. If a new one is summoned, dismiss the old one.
|
// Can only have one pet. If a new one is summoned, dismiss the old one.
|
||||||
@@ -10417,7 +10417,7 @@ void Unit::SetCharm(Unit* charm, bool apply)
|
|||||||
|
|
||||||
charm->m_ControlledByPlayer = true;
|
charm->m_ControlledByPlayer = true;
|
||||||
// TODO: maybe we can use this flag to check if controlled by player
|
// TODO: maybe we can use this flag to check if controlled by player
|
||||||
charm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
charm->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
charm->m_ControlledByPlayer = false;
|
charm->m_ControlledByPlayer = false;
|
||||||
@@ -10447,13 +10447,13 @@ void Unit::SetCharm(Unit* charm, bool apply)
|
|||||||
if (charm->GetTypeId() == TYPEID_PLAYER)
|
if (charm->GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
charm->m_ControlledByPlayer = true;
|
charm->m_ControlledByPlayer = true;
|
||||||
charm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
charm->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
charm->ToPlayer()->UpdatePvPState();
|
charm->ToPlayer()->UpdatePvPState();
|
||||||
}
|
}
|
||||||
else if (Player* player = charm->GetCharmerOrOwnerPlayerOrPlayerItself())
|
else if (Player* player = charm->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||||
{
|
{
|
||||||
charm->m_ControlledByPlayer = true;
|
charm->m_ControlledByPlayer = true;
|
||||||
charm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
charm->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
charm->SetByteValue(UNIT_FIELD_BYTES_2, 1, player->GetByteValue(UNIT_FIELD_BYTES_2, 1));
|
charm->SetByteValue(UNIT_FIELD_BYTES_2, 1, player->GetByteValue(UNIT_FIELD_BYTES_2, 1));
|
||||||
|
|
||||||
// Xinef: skip controlled erase if charmed unit is owned by charmer
|
// Xinef: skip controlled erase if charmed unit is owned by charmer
|
||||||
@@ -10463,7 +10463,7 @@ void Unit::SetCharm(Unit* charm, bool apply)
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
charm->m_ControlledByPlayer = false;
|
charm->m_ControlledByPlayer = false;
|
||||||
charm->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
charm->RemoveUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
charm->SetByteValue(UNIT_FIELD_BYTES_2, 1, 0);
|
charm->SetByteValue(UNIT_FIELD_BYTES_2, 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -12840,7 +12840,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry)
|
|||||||
if (mount)
|
if (mount)
|
||||||
SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, mount);
|
SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, mount);
|
||||||
|
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_MOUNT);
|
SetUnitFlag(UNIT_FLAG_MOUNT);
|
||||||
|
|
||||||
if (Player* player = ToPlayer())
|
if (Player* player = ToPlayer())
|
||||||
{
|
{
|
||||||
@@ -12874,7 +12874,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry)
|
|||||||
Battleground* bg = ToPlayer()->GetBattleground();
|
Battleground* bg = ToPlayer()->GetBattleground();
|
||||||
// don't unsummon pet in arena but SetFlag UNIT_FLAG_STUNNED to disable pet's interface
|
// don't unsummon pet in arena but SetFlag UNIT_FLAG_STUNNED to disable pet's interface
|
||||||
if (bg && bg->isArena())
|
if (bg && bg->isArena())
|
||||||
pet->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
pet->SetUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
else
|
else
|
||||||
player->UnsummonPetTemporaryIfAny();
|
player->UnsummonPetTemporaryIfAny();
|
||||||
}
|
}
|
||||||
@@ -12882,7 +12882,7 @@ void Unit::Mount(uint32 mount, uint32 VehicleId, uint32 creatureEntry)
|
|||||||
// xinef: if we have charmed npc, stun him also
|
// xinef: if we have charmed npc, stun him also
|
||||||
if (Unit* charm = player->GetCharm())
|
if (Unit* charm = player->GetCharm())
|
||||||
if (charm->GetTypeId() == TYPEID_UNIT)
|
if (charm->GetTypeId() == TYPEID_UNIT)
|
||||||
charm->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
charm->SetUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
|
|
||||||
WorldPacket data(SMSG_MOVE_SET_COLLISION_HGT, GetPackGUID().size() + 4 + 4);
|
WorldPacket data(SMSG_MOVE_SET_COLLISION_HGT, GetPackGUID().size() + 4 + 4);
|
||||||
data << GetPackGUID();
|
data << GetPackGUID();
|
||||||
@@ -12900,7 +12900,7 @@ void Unit::Dismount()
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0);
|
SetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID, 0);
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_MOUNT);
|
RemoveUnitFlag(UNIT_FLAG_MOUNT);
|
||||||
|
|
||||||
if (Player* thisPlayer = ToPlayer())
|
if (Player* thisPlayer = ToPlayer())
|
||||||
{
|
{
|
||||||
@@ -12938,8 +12938,8 @@ void Unit::Dismount()
|
|||||||
|
|
||||||
if (Pet* pPet = player->GetPet())
|
if (Pet* pPet = player->GetPet())
|
||||||
{
|
{
|
||||||
if (pPet->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED) && !pPet->HasUnitState(UNIT_STATE_STUNNED))
|
if (pPet->HasUnitFlag(UNIT_FLAG_STUNNED) && !pPet->HasUnitState(UNIT_STATE_STUNNED))
|
||||||
pPet->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
pPet->RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
player->ResummonPetTemporaryUnSummonedIfAny();
|
player->ResummonPetTemporaryUnSummonedIfAny();
|
||||||
@@ -12947,7 +12947,7 @@ void Unit::Dismount()
|
|||||||
// xinef: if we have charmed npc, remove stun also
|
// xinef: if we have charmed npc, remove stun also
|
||||||
if (Unit* charm = player->GetCharm())
|
if (Unit* charm = player->GetCharm())
|
||||||
if (charm->GetTypeId() == TYPEID_UNIT && !charm->HasUnitState(UNIT_STATE_STUNNED))
|
if (charm->GetTypeId() == TYPEID_UNIT && !charm->HasUnitState(UNIT_STATE_STUNNED))
|
||||||
charm->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
charm->RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13090,13 +13090,13 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy, uint32 duration)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// xinef: if we somehow engage in combat (scripts, dunno) with player, remove this flag so he can fight back
|
// xinef: if we somehow engage in combat (scripts, dunno) with player, remove this flag so he can fight back
|
||||||
if (GetTypeId() == TYPEID_UNIT && enemy && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC) && enemy->GetCharmerOrOwnerPlayerOrPlayerItself())
|
if (GetTypeId() == TYPEID_UNIT && enemy && HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC) && enemy->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); // unit has engaged in combat, remove immunity so players can fight back
|
RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); // unit has engaged in combat, remove immunity so players can fight back
|
||||||
|
|
||||||
if (IsInCombat())
|
if (IsInCombat())
|
||||||
return;
|
return;
|
||||||
|
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
|
SetUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||||
|
|
||||||
if (Creature* creature = ToCreature())
|
if (Creature* creature = ToCreature())
|
||||||
{
|
{
|
||||||
@@ -13151,13 +13151,13 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy, uint32 duration)
|
|||||||
void Unit::ClearInCombat()
|
void Unit::ClearInCombat()
|
||||||
{
|
{
|
||||||
m_CombatTimer = 0;
|
m_CombatTimer = 0;
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT);
|
RemoveUnitFlag(UNIT_FLAG_IN_COMBAT);
|
||||||
|
|
||||||
// Player's state will be cleared in Player::UpdateContestedPvP
|
// Player's state will be cleared in Player::UpdateContestedPvP
|
||||||
if (Creature* creature = ToCreature())
|
if (Creature* creature = ToCreature())
|
||||||
{
|
{
|
||||||
if (creature->GetCreatureTemplate() && creature->GetCreatureTemplate()->unit_flags & UNIT_FLAG_IMMUNE_TO_PC)
|
if (creature->GetCreatureTemplate() && creature->GetCreatureTemplate()->unit_flags & UNIT_FLAG_IMMUNE_TO_PC)
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); // set immunity state to the one from db on evade
|
SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); // set immunity state to the one from db on evade
|
||||||
|
|
||||||
ClearUnitState(UNIT_STATE_ATTACK_PLAYER);
|
ClearUnitState(UNIT_STATE_ATTACK_PLAYER);
|
||||||
if (HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED))
|
if (HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED))
|
||||||
@@ -13185,11 +13185,11 @@ void Unit::ClearInCombat()
|
|||||||
|
|
||||||
void Unit::ClearInPetCombat()
|
void Unit::ClearInPetCombat()
|
||||||
{
|
{
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT);
|
RemoveUnitFlag(UNIT_FLAG_PET_IN_COMBAT);
|
||||||
RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_LEAVE_COMBAT);
|
RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_LEAVE_COMBAT);
|
||||||
if (Unit* owner = GetOwner())
|
if (Unit* owner = GetOwner())
|
||||||
{
|
{
|
||||||
owner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT);
|
owner->RemoveUnitFlag(UNIT_FLAG_PET_IN_COMBAT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -13198,10 +13198,10 @@ bool Unit::isTargetableForAttack(bool checkFakeDeath, Unit const* byWho) const
|
|||||||
if (!IsAlive())
|
if (!IsAlive())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE))
|
if (HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC) && byWho && byWho->GetCharmerOrOwnerPlayerOrPlayerItself())
|
if (HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC) && byWho && byWho->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->IsGameMaster())
|
if (GetTypeId() == TYPEID_PLAYER && ToPlayer()->IsGameMaster())
|
||||||
@@ -13246,7 +13246,7 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
|
|||||||
|
|
||||||
// can't attack untargetable
|
// can't attack untargetable
|
||||||
if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_UNTARGETABLE))
|
if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_UNTARGETABLE))
|
||||||
&& target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
&& target->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (Player const* playerAttacker = ToPlayer())
|
if (Player const* playerAttacker = ToPlayer())
|
||||||
@@ -13255,16 +13255,16 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
// check flags
|
// check flags
|
||||||
if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_TAXI_FLIGHT | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_NON_ATTACKABLE_2)
|
if (target->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_TAXI_FLIGHT | UNIT_FLAG_NOT_ATTACKABLE_1 | UNIT_FLAG_NON_ATTACKABLE_2)
|
||||||
|| (!HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) && target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC))
|
|| (!HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && target->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC))
|
||||||
|| (!target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC))
|
|| (!target->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC))
|
||||||
|| (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) && target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC))
|
|| (HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && target->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))
|
||||||
// check if this is a world trigger cast - GOs are using world triggers to cast their spells, so we need to ignore their immunity flag here, this is a temp workaround, needs removal when go cast is implemented properly
|
// check if this is a world trigger cast - GOs are using world triggers to cast their spells, so we need to ignore their immunity flag here, this is a temp workaround, needs removal when go cast is implemented properly
|
||||||
|| ((GetEntry() != WORLD_TRIGGER && (!obj || !obj->isType(TYPEMASK_GAMEOBJECT | TYPEMASK_DYNAMICOBJECT))) && target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC)))
|
|| ((GetEntry() != WORLD_TRIGGER && (!obj || !obj->isType(TYPEMASK_GAMEOBJECT | TYPEMASK_DYNAMICOBJECT))) && target->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC)))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// CvC case - can attack each other only when one of them is hostile
|
// CvC case - can attack each other only when one of them is hostile
|
||||||
if (!HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) && !target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED))
|
if (!HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && !target->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
|
||||||
return GetReactionTo(target) <= REP_HOSTILE || target->GetReactionTo(this) <= REP_HOSTILE;
|
return GetReactionTo(target) <= REP_HOSTILE || target->GetReactionTo(this) <= REP_HOSTILE;
|
||||||
|
|
||||||
// PvP, PvC, CvP case
|
// PvP, PvC, CvP case
|
||||||
@@ -13303,8 +13303,8 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
|
|||||||
if (creatureAttacker && creatureAttacker->GetCreatureTemplate()->type_flags & CREATURE_TYPE_FLAG_TREAT_AS_RAID_UNIT)
|
if (creatureAttacker && creatureAttacker->GetCreatureTemplate()->type_flags & CREATURE_TYPE_FLAG_TREAT_AS_RAID_UNIT)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
Player const* playerAffectingAttacker = HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) ? GetAffectingPlayer() : nullptr;
|
Player const* playerAffectingAttacker = HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) ? GetAffectingPlayer() : nullptr;
|
||||||
Player const* playerAffectingTarget = target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) ? target->GetAffectingPlayer() : nullptr;
|
Player const* playerAffectingTarget = target->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) ? target->GetAffectingPlayer() : nullptr;
|
||||||
|
|
||||||
// check duel - before sanctuary checks
|
// check duel - before sanctuary checks
|
||||||
if (playerAffectingAttacker && playerAffectingTarget)
|
if (playerAffectingAttacker && playerAffectingTarget)
|
||||||
@@ -13313,7 +13313,7 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
|
|||||||
|
|
||||||
// PvP case - can't attack when attacker or target are in sanctuary
|
// PvP case - can't attack when attacker or target are in sanctuary
|
||||||
// however, 13850 client doesn't allow to attack when one of the unit's has sanctuary flag and is pvp
|
// however, 13850 client doesn't allow to attack when one of the unit's has sanctuary flag and is pvp
|
||||||
if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) && HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) && (target->IsInSanctuary() || IsInSanctuary()))
|
if (target->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) && (target->IsInSanctuary() || IsInSanctuary()))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
// additional checks - only PvP case
|
// additional checks - only PvP case
|
||||||
@@ -13364,23 +13364,23 @@ bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) co
|
|||||||
|
|
||||||
// can't assist untargetable
|
// can't assist untargetable
|
||||||
if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_UNTARGETABLE))
|
if ((!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_TARGET_UNTARGETABLE))
|
||||||
&& target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
&& target->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC))
|
if (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC))
|
||||||
{
|
{
|
||||||
// xinef: do not allow to assist non attackable units
|
// xinef: do not allow to assist non attackable units
|
||||||
if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (target->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED))
|
if (HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
|
||||||
{
|
{
|
||||||
if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC))
|
if (target->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC))
|
if (target->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC))
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -13392,10 +13392,10 @@ bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) co
|
|||||||
return false;
|
return false;
|
||||||
|
|
||||||
// PvP case
|
// PvP case
|
||||||
if (target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED))
|
if (target->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
|
||||||
{
|
{
|
||||||
Player const* targetPlayerOwner = target->GetAffectingPlayer();
|
Player const* targetPlayerOwner = target->GetAffectingPlayer();
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED))
|
if (HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED))
|
||||||
{
|
{
|
||||||
Player const* selfPlayerOwner = GetAffectingPlayer();
|
Player const* selfPlayerOwner = GetAffectingPlayer();
|
||||||
if (selfPlayerOwner && targetPlayerOwner)
|
if (selfPlayerOwner && targetPlayerOwner)
|
||||||
@@ -13416,8 +13416,8 @@ bool Unit::_IsValidAssistTarget(Unit const* target, SpellInfo const* bySpell) co
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
// PvC case - player can assist creature only if has specific type flags
|
// PvC case - player can assist creature only if has specific type flags
|
||||||
// !target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED) &&
|
// !target->HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED) &&
|
||||||
else if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED)
|
else if (HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED)
|
||||||
&& (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC))
|
&& (!bySpell || !bySpell->HasAttribute(SPELL_ATTR6_CAN_ASSIST_IMMUNE_PC))
|
||||||
&& !target->IsPvP())
|
&& !target->IsPvP())
|
||||||
{
|
{
|
||||||
@@ -13818,7 +13818,7 @@ void Unit::SetSpeed(UnitMoveType mtype, float rate, bool forced)
|
|||||||
pet = GetCharm();
|
pet = GetCharm();
|
||||||
|
|
||||||
// xinef: do not affect vehicles and possesed pets
|
// xinef: do not affect vehicles and possesed pets
|
||||||
if (pet && (pet->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED) || pet->IsVehicle()))
|
if (pet && (pet->HasUnitFlag(UNIT_FLAG_POSSESSED) || pet->IsVehicle()))
|
||||||
pet = nullptr;
|
pet = nullptr;
|
||||||
|
|
||||||
if (pet && pet->GetTypeId() == TYPEID_UNIT && !pet->IsInCombat() && pet->GetMotionMaster()->GetCurrentMovementGeneratorType() == FOLLOW_MOTION_TYPE)
|
if (pet && pet->GetTypeId() == TYPEID_UNIT && !pet->IsInCombat() && pet->GetMotionMaster()->GetCurrentMovementGeneratorType() == FOLLOW_MOTION_TYPE)
|
||||||
@@ -16900,7 +16900,7 @@ bool Unit::InitTamedPet(Pet* pet, uint8 level, uint32 spell_id)
|
|||||||
pet->SetUInt32Value(UNIT_CREATED_BY_SPELL, spell_id);
|
pet->SetUInt32Value(UNIT_CREATED_BY_SPELL, spell_id);
|
||||||
|
|
||||||
if (GetTypeId() == TYPEID_PLAYER)
|
if (GetTypeId() == TYPEID_PLAYER)
|
||||||
pet->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
pet->ReplaceAllUnitFlags(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
|
|
||||||
if (!pet->InitStatsForLevel(level))
|
if (!pet->InitStatsForLevel(level))
|
||||||
{
|
{
|
||||||
@@ -17605,7 +17605,7 @@ void Unit::SetStunned(bool apply)
|
|||||||
if (apply)
|
if (apply)
|
||||||
{
|
{
|
||||||
SetTarget();
|
SetTarget();
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
SetUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
|
|
||||||
if (GetTypeId() == TYPEID_PLAYER)
|
if (GetTypeId() == TYPEID_PLAYER)
|
||||||
{
|
{
|
||||||
@@ -17626,15 +17626,15 @@ void Unit::SetStunned(bool apply)
|
|||||||
// don't remove UNIT_FLAG_STUNNED for pet when owner is mounted (disabled pet's interface)
|
// don't remove UNIT_FLAG_STUNNED for pet when owner is mounted (disabled pet's interface)
|
||||||
Unit* owner = GetOwner();
|
Unit* owner = GetOwner();
|
||||||
if (!owner || owner->GetTypeId() != TYPEID_PLAYER || !owner->ToPlayer()->IsMounted())
|
if (!owner || owner->GetTypeId() != TYPEID_PLAYER || !owner->ToPlayer()->IsMounted())
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
|
|
||||||
// Xinef: same for charmed npcs
|
// Xinef: same for charmed npcs
|
||||||
owner = GetCharmer();
|
owner = GetCharmer();
|
||||||
if (!owner || owner->GetTypeId() != TYPEID_PLAYER || !owner->ToPlayer()->IsMounted())
|
if (!owner || owner->GetTypeId() != TYPEID_PLAYER || !owner->ToPlayer()->IsMounted())
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
|
|
||||||
if (!HasUnitState(UNIT_STATE_ROOT)) // prevent moving if it also has root effect
|
if (!HasUnitState(UNIT_STATE_ROOT)) // prevent moving if it also has root effect
|
||||||
{
|
{
|
||||||
@@ -17720,9 +17720,9 @@ void Unit::DisableRotate(bool apply)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
if (apply)
|
if (apply)
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED);
|
SetUnitFlag(UNIT_FLAG_POSSESSED);
|
||||||
else if (!HasUnitState(UNIT_STATE_POSSESSED))
|
else if (!HasUnitState(UNIT_STATE_POSSESSED))
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED);
|
RemoveUnitFlag(UNIT_FLAG_POSSESSED);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::SetFeared(bool apply)
|
void Unit::SetFeared(bool apply)
|
||||||
@@ -17949,7 +17949,7 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au
|
|||||||
switch (type)
|
switch (type)
|
||||||
{
|
{
|
||||||
case CHARM_TYPE_VEHICLE:
|
case CHARM_TYPE_VEHICLE:
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED);
|
SetUnitFlag(UNIT_FLAG_POSSESSED);
|
||||||
AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
||||||
playerCharmer->SetClientControl(this, true); // verified
|
playerCharmer->SetClientControl(this, true); // verified
|
||||||
playerCharmer->VehicleSpellInitialize();
|
playerCharmer->VehicleSpellInitialize();
|
||||||
@@ -17957,8 +17957,8 @@ bool Unit::SetCharmedBy(Unit* charmer, CharmType type, AuraApplication const* au
|
|||||||
case CHARM_TYPE_POSSESS:
|
case CHARM_TYPE_POSSESS:
|
||||||
AddUnitState(UNIT_STATE_POSSESSED);
|
AddUnitState(UNIT_STATE_POSSESSED);
|
||||||
AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
AddUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED);
|
SetUnitFlag(UNIT_FLAG_POSSESSED);
|
||||||
charmer->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
charmer->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||||
playerCharmer->SetClientControl(this, true); // verified
|
playerCharmer->SetClientControl(this, true); // verified
|
||||||
playerCharmer->PossessSpellInitialize();
|
playerCharmer->PossessSpellInitialize();
|
||||||
break;
|
break;
|
||||||
@@ -18049,7 +18049,7 @@ void Unit::RemoveCharmedBy(Unit* charmer)
|
|||||||
|
|
||||||
// xinef: remove stunned flag if owner was mounted
|
// xinef: remove stunned flag if owner was mounted
|
||||||
if (GetTypeId() == TYPEID_UNIT && !HasUnitState(UNIT_STATE_STUNNED))
|
if (GetTypeId() == TYPEID_UNIT && !HasUnitState(UNIT_STATE_STUNNED))
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
|
|
||||||
// If charmer still exists
|
// If charmer still exists
|
||||||
if (!charmer)
|
if (!charmer)
|
||||||
@@ -18068,14 +18068,14 @@ void Unit::RemoveCharmedBy(Unit* charmer)
|
|||||||
case CHARM_TYPE_VEHICLE:
|
case CHARM_TYPE_VEHICLE:
|
||||||
playerCharmer->SetClientControl(this, false);
|
playerCharmer->SetClientControl(this, false);
|
||||||
playerCharmer->SetClientControl(charmer, true); // verified
|
playerCharmer->SetClientControl(charmer, true); // verified
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED);
|
RemoveUnitFlag(UNIT_FLAG_POSSESSED);
|
||||||
ClearUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
ClearUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
||||||
break;
|
break;
|
||||||
case CHARM_TYPE_POSSESS:
|
case CHARM_TYPE_POSSESS:
|
||||||
playerCharmer->SetClientControl(this, false);
|
playerCharmer->SetClientControl(this, false);
|
||||||
playerCharmer->SetClientControl(charmer, true); // verified
|
playerCharmer->SetClientControl(charmer, true); // verified
|
||||||
charmer->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
charmer->RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED);
|
RemoveUnitFlag(UNIT_FLAG_POSSESSED);
|
||||||
ClearUnitState(UNIT_STATE_POSSESSED);
|
ClearUnitState(UNIT_STATE_POSSESSED);
|
||||||
ClearUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
ClearUnitState(UNIT_STATE_NO_ENVIRONMENT_UPD);
|
||||||
break;
|
break;
|
||||||
@@ -19366,15 +19366,15 @@ bool Unit::IsFalling() const
|
|||||||
bool Unit::CanSwim() const
|
bool Unit::CanSwim() const
|
||||||
{
|
{
|
||||||
// Mirror client behavior, if this method returns false then client will not use swimming animation and for players will apply gravity as if there was no water
|
// Mirror client behavior, if this method returns false then client will not use swimming animation and for players will apply gravity as if there was no water
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_CANNOT_SWIM))
|
if (HasUnitFlag(UNIT_FLAG_CANNOT_SWIM))
|
||||||
return false;
|
return false;
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED)) // is player
|
if (HasUnitFlag(UNIT_FLAG_POSSESSED)) // is player
|
||||||
return true;
|
return true;
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS_2, 0x1000000))
|
if (HasUnitFlag2(UNIT_FLAG2_UNUSED_6))
|
||||||
return false;
|
return false;
|
||||||
if (HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT))
|
if (HasUnitFlag(UNIT_FLAG_PET_IN_COMBAT))
|
||||||
return true;
|
return true;
|
||||||
return HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_RENAME | UNIT_FLAG_SWIMMING);
|
return HasUnitFlag(UNIT_FLAG_RENAME | UNIT_FLAG_SWIMMING);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Unit::NearTeleportTo(float x, float y, float z, float orientation, bool casting /*= false*/, bool vehicleTeleport /*= false*/, bool withPet /*= false*/, bool removeTransport /*= false*/)
|
void Unit::NearTeleportTo(float x, float y, float z, float orientation, bool casting /*= false*/, bool vehicleTeleport /*= false*/, bool withPet /*= false*/, bool removeTransport /*= false*/)
|
||||||
@@ -20035,12 +20035,12 @@ bool Unit::SetSwim(bool enable)
|
|||||||
if (enable)
|
if (enable)
|
||||||
{
|
{
|
||||||
AddUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
|
AddUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
|
||||||
SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SWIMMING);
|
SetUnitFlag(UNIT_FLAG_SWIMMING);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
|
RemoveUnitMovementFlag(MOVEMENTFLAG_SWIMMING);
|
||||||
RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SWIMMING);
|
RemoveUnitFlag(UNIT_FLAG_SWIMMING);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|||||||
@@ -19,6 +19,7 @@
|
|||||||
#define __UNIT_H
|
#define __UNIT_H
|
||||||
|
|
||||||
#include "EventProcessor.h"
|
#include "EventProcessor.h"
|
||||||
|
#include "EnumFlag.h"
|
||||||
#include "FollowerRefMgr.h"
|
#include "FollowerRefMgr.h"
|
||||||
#include "FollowerReference.h"
|
#include "FollowerReference.h"
|
||||||
#include "HostileRefMgr.h"
|
#include "HostileRefMgr.h"
|
||||||
@@ -437,8 +438,9 @@ enum DamageEffectType
|
|||||||
|
|
||||||
// Value masks for UNIT_FIELD_FLAGS
|
// Value masks for UNIT_FIELD_FLAGS
|
||||||
// EnumUtils: DESCRIBE THIS
|
// EnumUtils: DESCRIBE THIS
|
||||||
enum UnitFlags
|
enum UnitFlags : uint32
|
||||||
{
|
{
|
||||||
|
UNIT_FLAG_NONE = 0x00000000,
|
||||||
UNIT_FLAG_SERVER_CONTROLLED = 0x00000001, // set only when unit movement is controlled by server - by SPLINE/MONSTER_MOVE packets, together with UNIT_FLAG_STUNNED; only set to units controlled by client; client function CGUnit_C::IsClientControlled returns false when set for owner
|
UNIT_FLAG_SERVER_CONTROLLED = 0x00000001, // set only when unit movement is controlled by server - by SPLINE/MONSTER_MOVE packets, together with UNIT_FLAG_STUNNED; only set to units controlled by client; client function CGUnit_C::IsClientControlled returns false when set for owner
|
||||||
UNIT_FLAG_NON_ATTACKABLE = 0x00000002, // not attackable
|
UNIT_FLAG_NON_ATTACKABLE = 0x00000002, // not attackable
|
||||||
UNIT_FLAG_DISABLE_MOVE = 0x00000004,
|
UNIT_FLAG_DISABLE_MOVE = 0x00000004,
|
||||||
@@ -473,9 +475,12 @@ enum UnitFlags
|
|||||||
UNIT_FLAG_IMMUNE = 0x80000000, // Immune to damage
|
UNIT_FLAG_IMMUNE = 0x80000000, // Immune to damage
|
||||||
};
|
};
|
||||||
|
|
||||||
|
DEFINE_ENUM_FLAG(UnitFlags);
|
||||||
|
|
||||||
// Value masks for UNIT_FIELD_FLAGS_2
|
// Value masks for UNIT_FIELD_FLAGS_2
|
||||||
enum UnitFlags2
|
enum UnitFlags2 : uint32
|
||||||
{
|
{
|
||||||
|
UNIT_FLAG2_NONE = 0x00000000,
|
||||||
UNIT_FLAG2_FEIGN_DEATH = 0x00000001,
|
UNIT_FLAG2_FEIGN_DEATH = 0x00000001,
|
||||||
UNIT_FLAG2_HIDE_BODY = 0x00000002, // Hide unit model (show only player equip)
|
UNIT_FLAG2_HIDE_BODY = 0x00000002, // Hide unit model (show only player equip)
|
||||||
UNIT_FLAG2_IGNORE_REPUTATION = 0x00000004,
|
UNIT_FLAG2_IGNORE_REPUTATION = 0x00000004,
|
||||||
@@ -494,8 +499,11 @@ enum UnitFlags2
|
|||||||
UNIT_FLAG2_UNK2 = 0x00010000,
|
UNIT_FLAG2_UNK2 = 0x00010000,
|
||||||
UNIT_FLAG2_PLAY_DEATH_ANIM = 0x00020000, // Plays special death animation upon death
|
UNIT_FLAG2_PLAY_DEATH_ANIM = 0x00020000, // Plays special death animation upon death
|
||||||
UNIT_FLAG2_ALLOW_CHEAT_SPELLS = 0x00040000, // Allows casting spells with AttributesEx7 & SPELL_ATTR7_DEBUG_SPELL
|
UNIT_FLAG2_ALLOW_CHEAT_SPELLS = 0x00040000, // Allows casting spells with AttributesEx7 & SPELL_ATTR7_DEBUG_SPELL
|
||||||
|
UNIT_FLAG2_UNUSED_6 = 0x01000000,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
DEFINE_ENUM_FLAG(UnitFlags2);
|
||||||
|
|
||||||
/// Non Player Character flags
|
/// Non Player Character flags
|
||||||
// EnumUtils: DESCRIBE THIS
|
// EnumUtils: DESCRIBE THIS
|
||||||
enum NPCFlags : uint32
|
enum NPCFlags : uint32
|
||||||
@@ -1432,6 +1440,18 @@ public:
|
|||||||
void ApplyAttackTimePercentMod(WeaponAttackType att, float val, bool apply);
|
void ApplyAttackTimePercentMod(WeaponAttackType att, float val, bool apply);
|
||||||
void ApplyCastTimePercentMod(float val, bool apply);
|
void ApplyCastTimePercentMod(float val, bool apply);
|
||||||
|
|
||||||
|
UnitFlags GetUnitFlags() const { return UnitFlags(GetUInt32Value(UNIT_FIELD_FLAGS)); }
|
||||||
|
bool HasUnitFlag(UnitFlags flags) const { return HasFlag(UNIT_FIELD_FLAGS, flags); }
|
||||||
|
void SetUnitFlag(UnitFlags flags) { SetFlag(UNIT_FIELD_FLAGS, flags); }
|
||||||
|
void RemoveUnitFlag(UnitFlags flags) { RemoveFlag(UNIT_FIELD_FLAGS, flags); }
|
||||||
|
void ReplaceAllUnitFlags(UnitFlags flags) { SetUInt32Value(UNIT_FIELD_FLAGS, flags); }
|
||||||
|
|
||||||
|
UnitFlags2 GetUnitFlags2() const { return UnitFlags2(GetUInt32Value(UNIT_FIELD_FLAGS_2)); }
|
||||||
|
bool HasUnitFlag2(UnitFlags2 flags) const { return HasFlag(UNIT_FIELD_FLAGS_2, flags); }
|
||||||
|
void SetUnitFlag2(UnitFlags2 flags) { SetFlag(UNIT_FIELD_FLAGS_2, flags); }
|
||||||
|
void RemoveUnitFlag2(UnitFlags2 flags) { RemoveFlag(UNIT_FIELD_FLAGS_2, flags); }
|
||||||
|
void ReplaceAllUnitFlags2(UnitFlags2 flags) { SetUInt32Value(UNIT_FIELD_FLAGS_2, flags); }
|
||||||
|
|
||||||
[[nodiscard]] SheathState GetSheath() const { return SheathState(GetByteValue(UNIT_FIELD_BYTES_2, 0)); }
|
[[nodiscard]] SheathState GetSheath() const { return SheathState(GetByteValue(UNIT_FIELD_BYTES_2, 0)); }
|
||||||
virtual void SetSheath(SheathState sheathed) { SetByteValue(UNIT_FIELD_BYTES_2, 0, sheathed); }
|
virtual void SetSheath(SheathState sheathed) { SetByteValue(UNIT_FIELD_BYTES_2, 0, sheathed); }
|
||||||
|
|
||||||
@@ -1482,7 +1502,7 @@ public:
|
|||||||
void SetStandFlags(uint8 flags) { SetByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_VIS_FLAG, flags); }
|
void SetStandFlags(uint8 flags) { SetByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_VIS_FLAG, flags); }
|
||||||
void RemoveStandFlags(uint8 flags) { RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_VIS_FLAG, flags); }
|
void RemoveStandFlags(uint8 flags) { RemoveByteFlag(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_VIS_FLAG, flags); }
|
||||||
|
|
||||||
[[nodiscard]] bool IsMounted() const { return HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_MOUNT); }
|
[[nodiscard]] bool IsMounted() const { return HasUnitFlag(UNIT_FLAG_MOUNT); }
|
||||||
[[nodiscard]] uint32 GetMountID() const { return GetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID); }
|
[[nodiscard]] uint32 GetMountID() const { return GetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID); }
|
||||||
void Mount(uint32 mount, uint32 vehicleId = 0, uint32 creatureEntry = 0);
|
void Mount(uint32 mount, uint32 vehicleId = 0, uint32 creatureEntry = 0);
|
||||||
void Dismount();
|
void Dismount();
|
||||||
@@ -1550,11 +1570,11 @@ public:
|
|||||||
switch (attacktype)
|
switch (attacktype)
|
||||||
{
|
{
|
||||||
case BASE_ATTACK:
|
case BASE_ATTACK:
|
||||||
return !HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISARMED);
|
return !HasUnitFlag(UNIT_FLAG_DISARMED);
|
||||||
case OFF_ATTACK:
|
case OFF_ATTACK:
|
||||||
return !HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_DISARM_OFFHAND);
|
return !HasUnitFlag2(UNIT_FLAG2_DISARM_OFFHAND);
|
||||||
case RANGED_ATTACK:
|
case RANGED_ATTACK:
|
||||||
return !HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_DISARM_RANGED);
|
return !HasUnitFlag2(UNIT_FLAG2_DISARM_RANGED);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -1610,10 +1630,10 @@ public:
|
|||||||
|
|
||||||
[[nodiscard]] bool IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); }
|
[[nodiscard]] bool IsInFlight() const { return HasUnitState(UNIT_STATE_IN_FLIGHT); }
|
||||||
|
|
||||||
[[nodiscard]] bool IsInCombat() const { return HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IN_COMBAT); }
|
[[nodiscard]] bool IsInCombat() const { return HasUnitFlag(UNIT_FLAG_IN_COMBAT); }
|
||||||
bool IsInCombatWith(Unit const* who) const;
|
bool IsInCombatWith(Unit const* who) const;
|
||||||
|
|
||||||
[[nodiscard]] bool IsPetInCombat() const { return HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PET_IN_COMBAT); }
|
[[nodiscard]] bool IsPetInCombat() const { return HasUnitFlag(UNIT_FLAG_PET_IN_COMBAT); }
|
||||||
void CombatStart(Unit* target, bool initialAggro = true);
|
void CombatStart(Unit* target, bool initialAggro = true);
|
||||||
void CombatStartOnCast(Unit* target, bool initialAggro = true, uint32 duration = 0);
|
void CombatStartOnCast(Unit* target, bool initialAggro = true, uint32 duration = 0);
|
||||||
void SetInCombatState(bool PvP, Unit* enemy = nullptr, uint32 duration = 0);
|
void SetInCombatState(bool PvP, Unit* enemy = nullptr, uint32 duration = 0);
|
||||||
|
|||||||
@@ -346,7 +346,7 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId)
|
|||||||
unit->GetName(), _me->GetEntry(), _vehicleInfo->m_ID, _me->GetGUID().ToString(), (int32)seat->first);
|
unit->GetName(), _me->GetEntry(), _vehicleInfo->m_ID, _me->GetGUID().ToString(), (int32)seat->first);
|
||||||
|
|
||||||
seat->second.Passenger.Guid = unit->GetGUID();
|
seat->second.Passenger.Guid = unit->GetGUID();
|
||||||
seat->second.Passenger.IsUnselectable = unit->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
seat->second.Passenger.IsUnselectable = unit->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
if (seat->second.SeatInfo->CanEnterOrExit())
|
if (seat->second.SeatInfo->CanEnterOrExit())
|
||||||
{
|
{
|
||||||
@@ -369,7 +369,7 @@ bool Vehicle::AddPassenger(Unit* unit, int8 seatId)
|
|||||||
unit->ToPlayer()->UnsummonPetTemporaryIfAny();
|
unit->ToPlayer()->UnsummonPetTemporaryIfAny();
|
||||||
|
|
||||||
if (seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE)
|
if (seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE)
|
||||||
unit->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
unit->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
|
unit->AddUnitMovementFlag(MOVEMENTFLAG_ONTRANSPORT);
|
||||||
VehicleSeatEntry const* veSeat = seat->second.SeatInfo;
|
VehicleSeatEntry const* veSeat = seat->second.SeatInfo;
|
||||||
@@ -464,7 +464,7 @@ void Vehicle::RemovePassenger(Unit* unit)
|
|||||||
|
|
||||||
// Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle
|
// Remove UNIT_FLAG_NOT_SELECTABLE if passenger did not have it before entering vehicle
|
||||||
if (seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE && !seat->second.Passenger.IsUnselectable)
|
if (seat->second.SeatInfo->m_flags & VEHICLE_SEAT_FLAG_PASSENGER_NOT_SELECTABLE && !seat->second.Passenger.IsUnselectable)
|
||||||
unit->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
unit->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
seat->second.Passenger.Reset();
|
seat->second.Passenger.Reset();
|
||||||
|
|
||||||
|
|||||||
@@ -1037,7 +1037,7 @@ namespace Acore
|
|||||||
{}
|
{}
|
||||||
bool operator()(Unit* u)
|
bool operator()(Unit* u)
|
||||||
{
|
{
|
||||||
if (!u->IsAlive() || u->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE) || (u->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC) && !u->IsInCombat()))
|
if (!u->IsAlive() || u->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE) || (u->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC) && !u->IsInCombat()))
|
||||||
return false;
|
return false;
|
||||||
if (u->GetGUID() == i_funit->GetGUID())
|
if (u->GetGUID() == i_funit->GetGUID())
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -1151,7 +1151,7 @@ void WorldSession::HandlePlayerLoginToCharInWorld(Player* pCurrChar)
|
|||||||
|
|
||||||
// Xinef: fix possible problem with flag UNIT_FLAG_STUNNED added during logout
|
// Xinef: fix possible problem with flag UNIT_FLAG_STUNNED added during logout
|
||||||
if (!pCurrChar->HasUnitState(UNIT_STATE_STUNNED))
|
if (!pCurrChar->HasUnitState(UNIT_STATE_STUNNED))
|
||||||
pCurrChar->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
pCurrChar->RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
|
|
||||||
pCurrChar->SendInitialPacketsBeforeAddToMap();
|
pCurrChar->SendInitialPacketsBeforeAddToMap();
|
||||||
|
|
||||||
|
|||||||
@@ -262,7 +262,7 @@ void WorldSession::DoLootRelease(ObjectGuid lguid)
|
|||||||
player->SetLootGUID(ObjectGuid::Empty);
|
player->SetLootGUID(ObjectGuid::Empty);
|
||||||
player->SendLootRelease(lguid);
|
player->SendLootRelease(lguid);
|
||||||
|
|
||||||
player->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_LOOTING);
|
player->RemoveUnitFlag(UNIT_FLAG_LOOTING);
|
||||||
|
|
||||||
if (!player->IsInWorld())
|
if (!player->IsInWorld())
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -463,7 +463,7 @@ void WorldSession::HandleLogoutRequestOpcode(WorldPackets::Character::LogoutRequ
|
|||||||
}
|
}
|
||||||
|
|
||||||
GetPlayer()->SetRooted(true);
|
GetPlayer()->SetRooted(true);
|
||||||
GetPlayer()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
GetPlayer()->SetUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
}
|
}
|
||||||
|
|
||||||
SetLogoutStartTime(GameTime::GetGameTime().count());
|
SetLogoutStartTime(GameTime::GetGameTime().count());
|
||||||
@@ -485,7 +485,7 @@ void WorldSession::HandleLogoutCancelOpcode(WorldPackets::Character::LogoutCance
|
|||||||
GetPlayer()->SetRooted(false);
|
GetPlayer()->SetRooted(false);
|
||||||
|
|
||||||
GetPlayer()->SetStandState(UNIT_STAND_STATE_STAND);
|
GetPlayer()->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
GetPlayer()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
GetPlayer()->RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -373,7 +373,7 @@ void WorldSession::HandleMovementOpcodes(WorldPacket& recvData)
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (mover->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (mover->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
{
|
{
|
||||||
// Xinef: skip moving packets
|
// Xinef: skip moving packets
|
||||||
if (movementInfo.HasMovementFlag(MOVEMENTFLAG_MASK_MOVING))
|
if (movementInfo.HasMovementFlag(MOVEMENTFLAG_MASK_MOVING))
|
||||||
|
|||||||
@@ -242,7 +242,7 @@ void MotionMaster::MoveIdle()
|
|||||||
void MotionMaster::MoveRandom(float wanderDistance)
|
void MotionMaster::MoveRandom(float wanderDistance)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_owner->GetTypeId() == TYPEID_UNIT)
|
if (_owner->GetTypeId() == TYPEID_UNIT)
|
||||||
@@ -265,7 +265,7 @@ void MotionMaster::MoveTargetedHome()
|
|||||||
{
|
{
|
||||||
_owner->ClearUnitState(UNIT_STATE_EVADE);
|
_owner->ClearUnitState(UNIT_STATE_EVADE);
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
LOG_DEBUG("movement.motionmaster", "Pet or controlled creature ({}) targeting home", _owner->GetGUID().ToString());
|
LOG_DEBUG("movement.motionmaster", "Pet or controlled creature ({}) targeting home", _owner->GetGUID().ToString());
|
||||||
@@ -285,7 +285,7 @@ void MotionMaster::MoveTargetedHome()
|
|||||||
void MotionMaster::MoveConfused()
|
void MotionMaster::MoveConfused()
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
||||||
@@ -304,7 +304,7 @@ void MotionMaster::MoveChase(Unit* target, std::optional<ChaseRange> dist, std:
|
|||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
// ignore movement request if target not exist
|
// ignore movement request if target not exist
|
||||||
if (!target || target == _owner || _owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (!target || target == _owner || _owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//_owner->ClearUnitState(UNIT_STATE_FOLLOW);
|
//_owner->ClearUnitState(UNIT_STATE_FOLLOW);
|
||||||
@@ -372,7 +372,7 @@ void MotionMaster::MoveFollow(Unit* target, float dist, float angle, MovementSlo
|
|||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
// ignore movement request if target not exist
|
// ignore movement request if target not exist
|
||||||
if (!target || target == _owner || _owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (!target || target == _owner || _owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -395,7 +395,7 @@ void MotionMaster::MoveFollow(Unit* target, float dist, float angle, MovementSlo
|
|||||||
void MotionMaster::MovePoint(uint32 id, float x, float y, float z, bool generatePath, bool forceDestination, MovementSlot slot, float orientation /* = 0.0f*/)
|
void MotionMaster::MovePoint(uint32 id, float x, float y, float z, bool generatePath, bool forceDestination, MovementSlot slot, float orientation /* = 0.0f*/)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
||||||
@@ -413,7 +413,7 @@ void MotionMaster::MovePoint(uint32 id, float x, float y, float z, bool generate
|
|||||||
void MotionMaster::MoveSplinePath(Movement::PointsArray* path)
|
void MotionMaster::MoveSplinePath(Movement::PointsArray* path)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
||||||
@@ -429,7 +429,7 @@ void MotionMaster::MoveSplinePath(Movement::PointsArray* path)
|
|||||||
void MotionMaster::MoveLand(uint32 id, Position const& pos, float speed /* = 0.0f*/)
|
void MotionMaster::MoveLand(uint32 id, Position const& pos, float speed /* = 0.0f*/)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float x, y, z;
|
float x, y, z;
|
||||||
@@ -459,7 +459,7 @@ void MotionMaster::MoveLand(uint32 id, float x, float y, float z, float speed /*
|
|||||||
void MotionMaster::MoveTakeoff(uint32 id, Position const& pos, float speed /* = 0.0f*/)
|
void MotionMaster::MoveTakeoff(uint32 id, Position const& pos, float speed /* = 0.0f*/)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
float x, y, z;
|
float x, y, z;
|
||||||
@@ -549,7 +549,7 @@ void MotionMaster::MoveJump(float x, float y, float z, float speedXY, float spee
|
|||||||
void MotionMaster::MoveFall(uint32 id /*=0*/, bool addFlagForNPC)
|
void MotionMaster::MoveFall(uint32 id /*=0*/, bool addFlagForNPC)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
// use larger distance for vmap height search than in most other cases
|
// use larger distance for vmap height search than in most other cases
|
||||||
@@ -590,7 +590,7 @@ void MotionMaster::MoveFall(uint32 id /*=0*/, bool addFlagForNPC)
|
|||||||
void MotionMaster::MoveCharge(float x, float y, float z, float speed, uint32 id, const Movement::PointsArray* path, bool generatePath, float orientation /* = 0.0f*/, ObjectGuid targetGUID /*= ObjectGuid::Empty*/)
|
void MotionMaster::MoveCharge(float x, float y, float z, float speed, uint32 id, const Movement::PointsArray* path, bool generatePath, float orientation /* = 0.0f*/, ObjectGuid targetGUID /*= ObjectGuid::Empty*/)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Impl[MOTION_SLOT_CONTROLLED] && Impl[MOTION_SLOT_CONTROLLED]->GetMovementGeneratorType() != DISTRACT_MOTION_TYPE)
|
if (Impl[MOTION_SLOT_CONTROLLED] && Impl[MOTION_SLOT_CONTROLLED]->GetMovementGeneratorType() != DISTRACT_MOTION_TYPE)
|
||||||
@@ -611,7 +611,7 @@ void MotionMaster::MoveCharge(float x, float y, float z, float speed, uint32 id,
|
|||||||
void MotionMaster::MoveSeekAssistance(float x, float y, float z)
|
void MotionMaster::MoveSeekAssistance(float x, float y, float z)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
||||||
@@ -631,7 +631,7 @@ void MotionMaster::MoveSeekAssistance(float x, float y, float z)
|
|||||||
void MotionMaster::MoveSeekAssistanceDistract(uint32 time)
|
void MotionMaster::MoveSeekAssistanceDistract(uint32 time)
|
||||||
{
|
{
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
||||||
@@ -651,7 +651,7 @@ void MotionMaster::MoveFleeing(Unit* enemy, uint32 time)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
if (_owner->GetTypeId() == TYPEID_PLAYER)
|
||||||
@@ -700,7 +700,7 @@ void MotionMaster::MoveDistract(uint32 timer)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
/*if (_owner->GetTypeId() == TYPEID_PLAYER)
|
/*if (_owner->GetTypeId() == TYPEID_PLAYER)
|
||||||
@@ -752,7 +752,7 @@ void MotionMaster::MovePath(uint32 path_id, bool repeatable)
|
|||||||
return;
|
return;
|
||||||
|
|
||||||
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
// Xinef: do not allow to move with UNIT_FLAG_DISABLE_MOVE
|
||||||
if (_owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (_owner->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
//We set waypoint movement as new default movement generator
|
//We set waypoint movement as new default movement generator
|
||||||
|
|||||||
@@ -94,7 +94,7 @@ void ConfusedMovementGenerator<T>::DoInitialize(T* unit)
|
|||||||
i_nextMove = urand(1, MAX_CONF_WAYPOINTS);
|
i_nextMove = urand(1, MAX_CONF_WAYPOINTS);
|
||||||
DoUpdate(unit, 1);
|
DoUpdate(unit, 1);
|
||||||
|
|
||||||
unit->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_CONFUSED);
|
unit->SetUnitFlag(UNIT_FLAG_CONFUSED);
|
||||||
unit->AddUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_CONFUSED_MOVE);
|
unit->AddUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_CONFUSED_MOVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -163,7 +163,7 @@ bool ConfusedMovementGenerator<T>::DoUpdate(T* unit, uint32 diff)
|
|||||||
template<>
|
template<>
|
||||||
void ConfusedMovementGenerator<Player>::DoFinalize(Player* unit)
|
void ConfusedMovementGenerator<Player>::DoFinalize(Player* unit)
|
||||||
{
|
{
|
||||||
unit->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_CONFUSED);
|
unit->RemoveUnitFlag(UNIT_FLAG_CONFUSED);
|
||||||
unit->ClearUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_CONFUSED_MOVE);
|
unit->ClearUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_CONFUSED_MOVE);
|
||||||
unit->StopMoving();
|
unit->StopMoving();
|
||||||
}
|
}
|
||||||
@@ -171,7 +171,7 @@ void ConfusedMovementGenerator<Player>::DoFinalize(Player* unit)
|
|||||||
template<>
|
template<>
|
||||||
void ConfusedMovementGenerator<Creature>::DoFinalize(Creature* unit)
|
void ConfusedMovementGenerator<Creature>::DoFinalize(Creature* unit)
|
||||||
{
|
{
|
||||||
unit->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_CONFUSED);
|
unit->RemoveUnitFlag(UNIT_FLAG_CONFUSED);
|
||||||
unit->ClearUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_CONFUSED_MOVE);
|
unit->ClearUnitState(UNIT_STATE_CONFUSED | UNIT_STATE_CONFUSED_MOVE);
|
||||||
if (unit->GetVictim())
|
if (unit->GetVictim())
|
||||||
unit->SetTarget(unit->GetVictim()->GetGUID());
|
unit->SetTarget(unit->GetVictim()->GetGUID());
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ void FleeingMovementGenerator<T>::DoInitialize(T* owner)
|
|||||||
if (!owner)
|
if (!owner)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
owner->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING);
|
owner->SetUnitFlag(UNIT_FLAG_FLEEING);
|
||||||
owner->AddUnitState(UNIT_STATE_FLEEING | UNIT_STATE_FLEEING_MOVE);
|
owner->AddUnitState(UNIT_STATE_FLEEING | UNIT_STATE_FLEEING_MOVE);
|
||||||
|
|
||||||
_Init(owner);
|
_Init(owner);
|
||||||
@@ -323,14 +323,14 @@ void FleeingMovementGenerator<Player>::_Init(Player* )
|
|||||||
template<>
|
template<>
|
||||||
void FleeingMovementGenerator<Player>::DoFinalize(Player* owner)
|
void FleeingMovementGenerator<Player>::DoFinalize(Player* owner)
|
||||||
{
|
{
|
||||||
owner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING);
|
owner->RemoveUnitFlag(UNIT_FLAG_FLEEING);
|
||||||
owner->ClearUnitState(UNIT_STATE_FLEEING | UNIT_STATE_FLEEING_MOVE);
|
owner->ClearUnitState(UNIT_STATE_FLEEING | UNIT_STATE_FLEEING_MOVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
template<>
|
template<>
|
||||||
void FleeingMovementGenerator<Creature>::DoFinalize(Creature* owner)
|
void FleeingMovementGenerator<Creature>::DoFinalize(Creature* owner)
|
||||||
{
|
{
|
||||||
owner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING);
|
owner->RemoveUnitFlag(UNIT_FLAG_FLEEING);
|
||||||
owner->ClearUnitState(UNIT_STATE_FLEEING | UNIT_STATE_FLEEING_MOVE);
|
owner->ClearUnitState(UNIT_STATE_FLEEING | UNIT_STATE_FLEEING_MOVE);
|
||||||
if (owner->GetVictim())
|
if (owner->GetVictim())
|
||||||
owner->SetTarget(owner->GetVictim()->GetGUID());
|
owner->SetTarget(owner->GetVictim()->GetGUID());
|
||||||
@@ -376,7 +376,7 @@ template bool FleeingMovementGenerator<Creature>::DoUpdate(Creature*, uint32);
|
|||||||
|
|
||||||
void TimedFleeingMovementGenerator::Finalize(Unit* owner)
|
void TimedFleeingMovementGenerator::Finalize(Unit* owner)
|
||||||
{
|
{
|
||||||
owner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_FLEEING);
|
owner->RemoveUnitFlag(UNIT_FLAG_FLEEING);
|
||||||
owner->ClearUnitState(UNIT_STATE_FLEEING | UNIT_STATE_FLEEING_MOVE);
|
owner->ClearUnitState(UNIT_STATE_FLEEING | UNIT_STATE_FLEEING_MOVE);
|
||||||
if (owner->GetVictim())
|
if (owner->GetVictim())
|
||||||
owner->SetTarget(owner->GetVictim()->GetGUID());
|
owner->SetTarget(owner->GetVictim()->GetGUID());
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ void HomeMovementGenerator<Creature>::DoFinalize(Creature* owner)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!owner->HasSwimmingFlagOutOfCombat())
|
if (!owner->HasSwimmingFlagOutOfCombat())
|
||||||
owner->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SWIMMING);
|
owner->RemoveUnitFlag(UNIT_FLAG_SWIMMING);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HomeMovementGenerator<Creature>::DoReset(Creature*)
|
void HomeMovementGenerator<Creature>::DoReset(Creature*)
|
||||||
|
|||||||
@@ -280,7 +280,7 @@ bool RandomMovementGenerator<Creature>::DoUpdate(Creature* creature, const uint3
|
|||||||
}
|
}
|
||||||
|
|
||||||
// xinef: if we got disable move flag, do not remove default generator - just prevent movement
|
// xinef: if we got disable move flag, do not remove default generator - just prevent movement
|
||||||
if (creature->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE))
|
if (creature->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE))
|
||||||
{
|
{
|
||||||
_nextMoveTime.Reset(0); // Expire the timer
|
_nextMoveTime.Reset(0); // Expire the timer
|
||||||
creature->ClearUnitState(UNIT_STATE_ROAMING_MOVE);
|
creature->ClearUnitState(UNIT_STATE_ROAMING_MOVE);
|
||||||
|
|||||||
@@ -264,7 +264,7 @@ void ChaseMovementGenerator<T>::MovementInform(T* owner)
|
|||||||
static Optional<float> GetVelocity(Unit* owner, Unit* target, G3D::Vector3 const& dest, bool playerPet)
|
static Optional<float> GetVelocity(Unit* owner, Unit* target, G3D::Vector3 const& dest, bool playerPet)
|
||||||
{
|
{
|
||||||
Optional<float> speed = {};
|
Optional<float> speed = {};
|
||||||
if (!owner->IsInCombat() && !owner->IsVehicle() && !owner->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED) &&
|
if (!owner->IsInCombat() && !owner->IsVehicle() && !owner->HasUnitFlag(UNIT_FLAG_POSSESSED) &&
|
||||||
(owner->IsPet() || owner->IsGuardian() || owner->GetGUID() == target->GetCritterGUID() || owner->GetCharmerOrOwnerGUID() == target->GetGUID()))
|
(owner->IsPet() || owner->IsGuardian() || owner->GetGUID() == target->GetCritterGUID() || owner->GetCharmerOrOwnerGUID() == target->GetGUID()))
|
||||||
{
|
{
|
||||||
UnitMoveType moveType = Movement::SelectSpeedType(target->GetUnitMovementFlags());
|
UnitMoveType moveType = Movement::SelectSpeedType(target->GetUnitMovementFlags());
|
||||||
|
|||||||
@@ -316,7 +316,7 @@ void FlightPathMovementGenerator::DoFinalize(Player* player)
|
|||||||
|
|
||||||
// xinef: this should be cleaned by CleanupAfterTaxiFlight(); function!
|
// xinef: this should be cleaned by CleanupAfterTaxiFlight(); function!
|
||||||
player->Dismount();
|
player->Dismount();
|
||||||
player->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT);
|
player->RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT);
|
||||||
|
|
||||||
if (player->m_taxi.empty())
|
if (player->m_taxi.empty())
|
||||||
{
|
{
|
||||||
@@ -337,7 +337,7 @@ void FlightPathMovementGenerator::DoReset(Player* player)
|
|||||||
{
|
{
|
||||||
player->getHostileRefMgr().setOnlineOfflineState(false);
|
player->getHostileRefMgr().setOnlineOfflineState(false);
|
||||||
player->AddUnitState(UNIT_STATE_IN_FLIGHT);
|
player->AddUnitState(UNIT_STATE_IN_FLIGHT);
|
||||||
player->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT);
|
player->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_TAXI_FLIGHT);
|
||||||
|
|
||||||
Movement::MoveSplineInit init(player);
|
Movement::MoveSplineInit init(player);
|
||||||
uint32 end = GetPathAtMapEnd();
|
uint32 end = GetPathAtMapEnd();
|
||||||
|
|||||||
@@ -2372,12 +2372,12 @@ void AuraEffect::HandleAuraCloneCaster(AuraApplication const* aurApp, uint8 mode
|
|||||||
|
|
||||||
// What must be cloned? at least display and scale
|
// What must be cloned? at least display and scale
|
||||||
target->SetDisplayId(caster->GetDisplayId());
|
target->SetDisplayId(caster->GetDisplayId());
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_MIRROR_IMAGE);
|
target->SetUnitFlag2(UNIT_FLAG2_MIRROR_IMAGE);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
target->SetDisplayId(target->GetNativeDisplayId());
|
target->SetDisplayId(target->GetNativeDisplayId());
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_MIRROR_IMAGE);
|
target->RemoveUnitFlag2(UNIT_FLAG2_MIRROR_IMAGE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2479,9 +2479,9 @@ void AuraEffect::HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, boo
|
|||||||
if (aurApp->GetRemoveMode())
|
if (aurApp->GetRemoveMode())
|
||||||
return;
|
return;
|
||||||
// blizz like 2.0.x
|
// blizz like 2.0.x
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
|
target->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
|
||||||
// blizz like 2.0.x
|
// blizz like 2.0.x
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
|
target->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||||
// blizz like 2.0.x
|
// blizz like 2.0.x
|
||||||
target->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
target->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
||||||
|
|
||||||
@@ -2496,9 +2496,9 @@ void AuraEffect::HandleFeignDeath(AuraApplication const* aurApp, uint8 mode, boo
|
|||||||
target->SendMessageToSet(&data, true);
|
target->SendMessageToSet(&data, true);
|
||||||
*/
|
*/
|
||||||
// blizz like 2.0.x
|
// blizz like 2.0.x
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
|
target->RemoveUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
|
||||||
// blizz like 2.0.x
|
// blizz like 2.0.x
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
|
target->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||||
// blizz like 2.0.x
|
// blizz like 2.0.x
|
||||||
target->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
target->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
||||||
|
|
||||||
@@ -2603,7 +2603,7 @@ void AuraEffect::HandleAuraModSilence(AuraApplication const* aurApp, uint8 mode,
|
|||||||
|
|
||||||
if (apply)
|
if (apply)
|
||||||
{
|
{
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED);
|
target->SetUnitFlag(UNIT_FLAG_SILENCED);
|
||||||
|
|
||||||
// call functions which may have additional effects after chainging state of unit
|
// call functions which may have additional effects after chainging state of unit
|
||||||
// Stop cast only spells vs PreventionType == SPELL_PREVENTION_TYPE_SILENCE
|
// Stop cast only spells vs PreventionType == SPELL_PREVENTION_TYPE_SILENCE
|
||||||
@@ -2619,7 +2619,7 @@ void AuraEffect::HandleAuraModSilence(AuraApplication const* aurApp, uint8 mode,
|
|||||||
if (target->HasAuraType(SPELL_AURA_MOD_SILENCE) || target->HasAuraType(SPELL_AURA_MOD_PACIFY_SILENCE))
|
if (target->HasAuraType(SPELL_AURA_MOD_SILENCE) || target->HasAuraType(SPELL_AURA_MOD_PACIFY_SILENCE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SILENCED);
|
target->RemoveUnitFlag(UNIT_FLAG_SILENCED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2632,7 +2632,7 @@ void AuraEffect::HandleAuraModPacify(AuraApplication const* aurApp, uint8 mode,
|
|||||||
|
|
||||||
if (apply)
|
if (apply)
|
||||||
{
|
{
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
target->SetUnitFlag(UNIT_FLAG_PACIFIED);
|
||||||
//target->AttackStop(); // pussywizard: why having this flag prevents from being in combat? it should just prevent melee attack
|
//target->AttackStop(); // pussywizard: why having this flag prevents from being in combat? it should just prevent melee attack
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -2640,7 +2640,7 @@ void AuraEffect::HandleAuraModPacify(AuraApplication const* aurApp, uint8 mode,
|
|||||||
// do not remove unit flag if there are more than this auraEffect of that kind on unit on unit
|
// do not remove unit flag if there are more than this auraEffect of that kind on unit on unit
|
||||||
if (target->HasAuraType(SPELL_AURA_MOD_PACIFY) || target->HasAuraType(SPELL_AURA_MOD_PACIFY_SILENCE))
|
if (target->HasAuraType(SPELL_AURA_MOD_PACIFY) || target->HasAuraType(SPELL_AURA_MOD_PACIFY_SILENCE))
|
||||||
return;
|
return;
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
target->RemoveUnitFlag(UNIT_FLAG_PACIFIED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2999,13 +2999,13 @@ void AuraEffect::HandleForceMoveForward(AuraApplication const* aurApp, uint8 mod
|
|||||||
Unit* target = aurApp->GetTarget();
|
Unit* target = aurApp->GetTarget();
|
||||||
|
|
||||||
if (apply)
|
if (apply)
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FORCE_MOVEMENT);
|
target->SetUnitFlag2(UNIT_FLAG2_FORCE_MOVEMENT);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// do not remove unit flag if there are more than this auraEffect of that kind on unit on unit
|
// do not remove unit flag if there are more than this auraEffect of that kind on unit on unit
|
||||||
if (target->HasAuraType(GetAuraType()))
|
if (target->HasAuraType(GetAuraType()))
|
||||||
return;
|
return;
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FORCE_MOVEMENT);
|
target->RemoveUnitFlag2(UNIT_FLAG2_FORCE_MOVEMENT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4961,13 +4961,13 @@ void AuraEffect::HandleArenaPreparation(AuraApplication const* aurApp, uint8 mod
|
|||||||
Unit* target = aurApp->GetTarget();
|
Unit* target = aurApp->GetTarget();
|
||||||
|
|
||||||
if (apply)
|
if (apply)
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PREPARATION);
|
target->SetUnitFlag(UNIT_FLAG_PREPARATION);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// do not remove unit flag if there are more than this auraEffect of that kind on unit on unit
|
// do not remove unit flag if there are more than this auraEffect of that kind on unit on unit
|
||||||
if (target->HasAuraType(GetAuraType()))
|
if (target->HasAuraType(GetAuraType()))
|
||||||
return;
|
return;
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PREPARATION);
|
target->RemoveUnitFlag(UNIT_FLAG_PREPARATION);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5598,13 +5598,13 @@ void AuraEffect::HandleAuraModFaction(AuraApplication const* aurApp, uint8 mode,
|
|||||||
{
|
{
|
||||||
target->SetFaction(GetMiscValue());
|
target->SetFaction(GetMiscValue());
|
||||||
if (target->GetTypeId() == TYPEID_PLAYER)
|
if (target->GetTypeId() == TYPEID_PLAYER)
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
target->RemoveUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
target->RestoreFaction();
|
target->RestoreFaction();
|
||||||
if (target->GetTypeId() == TYPEID_PLAYER)
|
if (target->GetTypeId() == TYPEID_PLAYER)
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
target->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5616,13 +5616,13 @@ void AuraEffect::HandleComprehendLanguage(AuraApplication const* aurApp, uint8 m
|
|||||||
Unit* target = aurApp->GetTarget();
|
Unit* target = aurApp->GetTarget();
|
||||||
|
|
||||||
if (apply)
|
if (apply)
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_COMPREHEND_LANG);
|
target->SetUnitFlag2(UNIT_FLAG2_COMPREHEND_LANG);
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (target->HasAuraType(GetAuraType()))
|
if (target->HasAuraType(GetAuraType()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_COMPREHEND_LANG);
|
target->RemoveUnitFlag2(UNIT_FLAG2_COMPREHEND_LANG);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5890,7 +5890,7 @@ void AuraEffect::HandlePeriodicDummyAuraTick(Unit* target, Unit* caster) const
|
|||||||
if (GetId() == 52179) // Astral Shift
|
if (GetId() == 52179) // Astral Shift
|
||||||
{
|
{
|
||||||
// Periodic need for remove visual on stun/fear/silence lost
|
// Periodic need for remove visual on stun/fear/silence lost
|
||||||
if (!(target->GetUInt32Value(UNIT_FIELD_FLAGS) & (UNIT_FLAG_STUNNED | UNIT_FLAG_FLEEING | UNIT_FLAG_SILENCED)))
|
if (!(target->GetUnitFlags() & (UNIT_FLAG_STUNNED | UNIT_FLAG_FLEEING | UNIT_FLAG_SILENCED)))
|
||||||
target->RemoveAurasDueToSpell(52179);
|
target->RemoveAurasDueToSpell(52179);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2832,7 +2832,7 @@ SpellMissInfo Spell::DoSpellHitOnUnit(Unit* unit, uint32 effectMask, bool scaleA
|
|||||||
if (unit->GetTypeId() == TYPEID_UNIT && unit->ToCreature()->IsInEvadeMode())
|
if (unit->GetTypeId() == TYPEID_UNIT && unit->ToCreature()->IsInEvadeMode())
|
||||||
return SPELL_MISS_EVADE;
|
return SPELL_MISS_EVADE;
|
||||||
|
|
||||||
if (unit->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE) && unit->GetCharmerOrOwnerGUID() != m_caster->GetGUID())
|
if (unit->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE) && unit->GetCharmerOrOwnerGUID() != m_caster->GetGUID())
|
||||||
return SPELL_MISS_EVADE;
|
return SPELL_MISS_EVADE;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -5385,7 +5385,7 @@ SpellCastResult Spell::CheckCast(bool strict)
|
|||||||
return SPELL_FAILED_NOT_READY;
|
return SPELL_FAILED_NOT_READY;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (m_spellInfo->HasAttribute(SPELL_ATTR7_DEBUG_SPELL) && !m_caster->HasFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_ALLOW_CHEAT_SPELLS))
|
if (m_spellInfo->HasAttribute(SPELL_ATTR7_DEBUG_SPELL) && !m_caster->HasUnitFlag2(UNIT_FLAG2_ALLOW_CHEAT_SPELLS))
|
||||||
{
|
{
|
||||||
m_customError = SPELL_CUSTOM_ERROR_GM_ONLY;
|
m_customError = SPELL_CUSTOM_ERROR_GM_ONLY;
|
||||||
return SPELL_FAILED_CUSTOM_ERROR;
|
return SPELL_FAILED_CUSTOM_ERROR;
|
||||||
@@ -5934,7 +5934,7 @@ SpellCastResult Spell::CheckCast(bool strict)
|
|||||||
if (m_caster->GetTypeId() != TYPEID_PLAYER || !m_targets.GetUnitTarget() || m_targets.GetUnitTarget()->GetTypeId() != TYPEID_UNIT)
|
if (m_caster->GetTypeId() != TYPEID_PLAYER || !m_targets.GetUnitTarget() || m_targets.GetUnitTarget()->GetTypeId() != TYPEID_UNIT)
|
||||||
return SPELL_FAILED_BAD_TARGETS;
|
return SPELL_FAILED_BAD_TARGETS;
|
||||||
|
|
||||||
if (!(m_targets.GetUnitTarget()->GetUInt32Value(UNIT_FIELD_FLAGS) & UNIT_FLAG_SKINNABLE))
|
if (!(m_targets.GetUnitTarget()->GetUnitFlags() & UNIT_FLAG_SKINNABLE))
|
||||||
return SPELL_FAILED_TARGET_UNSKINNABLE;
|
return SPELL_FAILED_TARGET_UNSKINNABLE;
|
||||||
|
|
||||||
Creature* creature = m_targets.GetUnitTarget()->ToCreature();
|
Creature* creature = m_targets.GetUnitTarget()->ToCreature();
|
||||||
@@ -6532,7 +6532,7 @@ SpellCastResult Spell::CheckCasterAuras(bool preventionOnly) const
|
|||||||
// Check whether the cast should be prevented by any state you might have.
|
// Check whether the cast should be prevented by any state you might have.
|
||||||
SpellCastResult prevented_reason = SPELL_CAST_OK;
|
SpellCastResult prevented_reason = SPELL_CAST_OK;
|
||||||
// Have to check if there is a stun aura. Otherwise will have problems with ghost aura apply while logging out
|
// Have to check if there is a stun aura. Otherwise will have problems with ghost aura apply while logging out
|
||||||
uint32 unitflag = m_caster->GetUInt32Value(UNIT_FIELD_FLAGS); // Get unit state
|
uint32 unitflag = m_caster->GetUnitFlags(); // Get unit state
|
||||||
|
|
||||||
// Xinef: if spell is triggered check preventionType only
|
// Xinef: if spell is triggered check preventionType only
|
||||||
if (!preventionOnly)
|
if (!preventionOnly)
|
||||||
@@ -7584,7 +7584,7 @@ bool Spell::CheckEffectTarget(Unit const* target, uint32 eff) const
|
|||||||
|
|
||||||
// xinef: skip los checking if spell has appropriate attribute, or target requires specific entry
|
// xinef: skip los checking if spell has appropriate attribute, or target requires specific entry
|
||||||
// this is only for target addition and target has to have unselectable flag, this is valid for FLAG_EXTRA_TRIGGER and quest triggers however there are some without this flag, used not_selectable
|
// this is only for target addition and target has to have unselectable flag, this is valid for FLAG_EXTRA_TRIGGER and quest triggers however there are some without this flag, used not_selectable
|
||||||
if (m_spellInfo->HasAttribute(SPELL_ATTR2_IGNORE_LINE_OF_SIGHT) || (target->GetTypeId() == TYPEID_UNIT && target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE) && (m_spellInfo->Effects[eff].TargetA.GetCheckType() == TARGET_CHECK_ENTRY || m_spellInfo->Effects[eff].TargetB.GetCheckType() == TARGET_CHECK_ENTRY)))
|
if (m_spellInfo->HasAttribute(SPELL_ATTR2_IGNORE_LINE_OF_SIGHT) || (target->GetTypeId() == TYPEID_UNIT && target->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE) && (m_spellInfo->Effects[eff].TargetA.GetCheckType() == TARGET_CHECK_ENTRY || m_spellInfo->Effects[eff].TargetB.GetCheckType() == TARGET_CHECK_ENTRY)))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
// if spell is triggered, need to check for LOS disable on the aura triggering it and inherit that behaviour
|
// if spell is triggered, need to check for LOS disable on the aura triggering it and inherit that behaviour
|
||||||
@@ -7620,7 +7620,7 @@ bool Spell::CheckEffectTarget(Unit const* target, uint32 eff) const
|
|||||||
{
|
{
|
||||||
if (!m_targets.GetCorpseTargetGUID())
|
if (!m_targets.GetCorpseTargetGUID())
|
||||||
{
|
{
|
||||||
if (target->IsWithinLOSInMap(m_caster, LINEOFSIGHT_ALL_CHECKS) && target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE))
|
if (target->IsWithinLOSInMap(m_caster, LINEOFSIGHT_ALL_CHECKS) && target->HasUnitFlag(UNIT_FLAG_SKINNABLE))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
|||||||
@@ -2414,7 +2414,7 @@ void Spell::EffectSummonType(SpellEffIndex effIndex)
|
|||||||
summon->SelectLevel(); // some summoned creaters have different from 1 DB data for level/hp
|
summon->SelectLevel(); // some summoned creaters have different from 1 DB data for level/hp
|
||||||
summon->SetUInt32Value(UNIT_NPC_FLAGS, summon->GetCreatureTemplate()->npcflag);
|
summon->SetUInt32Value(UNIT_NPC_FLAGS, summon->GetCreatureTemplate()->npcflag);
|
||||||
|
|
||||||
summon->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
summon->ReplaceAllUnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
summon->SetReactState(REACT_PASSIVE);
|
summon->SetReactState(REACT_PASSIVE);
|
||||||
|
|
||||||
// Xinef: Pet can have some auras in creature_addon or in scripts, do not remove them instantly
|
// Xinef: Pet can have some auras in creature_addon or in scripts, do not remove them instantly
|
||||||
@@ -4894,7 +4894,7 @@ void Spell::EffectSkinning(SpellEffIndex /*effIndex*/)
|
|||||||
|
|
||||||
uint32 skill = creature->GetCreatureTemplate()->GetRequiredLootSkill();
|
uint32 skill = creature->GetCreatureTemplate()->GetRequiredLootSkill();
|
||||||
|
|
||||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
|
creature->RemoveUnitFlag(UNIT_FLAG_SKINNABLE);
|
||||||
creature->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
creature->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_LOOTABLE);
|
||||||
m_caster->ToPlayer()->SendLoot(creature->GetGUID(), LOOT_SKINNING);
|
m_caster->ToPlayer()->SendLoot(creature->GetGUID(), LOOT_SKINNING);
|
||||||
|
|
||||||
@@ -5246,7 +5246,7 @@ void Spell::EffectResurrectPet(SpellEffIndex /*effIndex*/)
|
|||||||
pet->NearTeleportTo(x, y, z, player->GetOrientation());
|
pet->NearTeleportTo(x, y, z, player->GetOrientation());
|
||||||
pet->Relocate(x, y, z, player->GetOrientation()); // This is needed so SaveStayPosition() will get the proper coords.
|
pet->Relocate(x, y, z, player->GetOrientation()); // This is needed so SaveStayPosition() will get the proper coords.
|
||||||
pet->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
pet->SetUInt32Value(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_NONE);
|
||||||
pet->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SKINNABLE);
|
pet->RemoveUnitFlag(UNIT_FLAG_SKINNABLE);
|
||||||
pet->setDeathState(ALIVE);
|
pet->setDeathState(ALIVE);
|
||||||
pet->ClearUnitState(uint32(UNIT_STATE_ALL_STATE & ~(UNIT_STATE_POSSESSED))); // xinef: just in case
|
pet->ClearUnitState(uint32(UNIT_STATE_ALL_STATE & ~(UNIT_STATE_POSSESSED))); // xinef: just in case
|
||||||
pet->SetHealth(pet->CountPctFromMaxHealth(damage));
|
pet->SetHealth(pet->CountPctFromMaxHealth(damage));
|
||||||
|
|||||||
@@ -1835,7 +1835,7 @@ SpellCastResult SpellInfo::CheckTarget(Unit const* caster, WorldObject const* ta
|
|||||||
return SPELL_FAILED_BAD_TARGETS;
|
return SPELL_FAILED_BAD_TARGETS;
|
||||||
|
|
||||||
// checked in Unit::IsValidAttack/AssistTarget, shouldn't be checked for ENTRY targets
|
// checked in Unit::IsValidAttack/AssistTarget, shouldn't be checked for ENTRY targets
|
||||||
//if (!(AttributesEx6 & SPELL_ATTR6_CAN_TARGET_UNTARGETABLE) && target->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
//if (!(AttributesEx6 & SPELL_ATTR6_CAN_TARGET_UNTARGETABLE) && target->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
|
||||||
// return SPELL_FAILED_BAD_TARGETS;
|
// return SPELL_FAILED_BAD_TARGETS;
|
||||||
|
|
||||||
//if (!(AttributesEx6 & SPELL_ATTR6_NO_AURA_LOG)
|
//if (!(AttributesEx6 & SPELL_ATTR6_NO_AURA_LOG)
|
||||||
|
|||||||
@@ -265,7 +265,7 @@ public:
|
|||||||
if (!factionID)
|
if (!factionID)
|
||||||
{
|
{
|
||||||
uint32 factionid = target->GetFaction();
|
uint32 factionid = target->GetFaction();
|
||||||
uint32 flag = target->GetUInt32Value(UNIT_FIELD_FLAGS);
|
uint32 flag = target->GetUnitFlags();
|
||||||
uint32 npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS);
|
uint32 npcflag = target->GetUInt32Value(UNIT_NPC_FLAGS);
|
||||||
uint32 dyflag = target->GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
uint32 dyflag = target->GetUInt32Value(UNIT_DYNAMIC_FLAGS);
|
||||||
handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUID().GetCounter(), factionid, flag, npcflag, dyflag);
|
handler->PSendSysMessage(LANG_CURRENT_FACTION, target->GetGUID().GetCounter(), factionid, flag, npcflag, dyflag);
|
||||||
@@ -273,15 +273,15 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint32 factionid = factionID.value();
|
uint32 factionid = factionID.value();
|
||||||
uint32 flag;
|
UnitFlags flag;
|
||||||
uint32 npcflag;
|
uint32 npcflag;
|
||||||
uint32 dyflag;
|
uint32 dyflag;
|
||||||
|
|
||||||
auto pflag = flagID;
|
auto pflag = flagID;
|
||||||
if (!pflag)
|
if (!pflag)
|
||||||
flag = target->GetUInt32Value(UNIT_FIELD_FLAGS);
|
flag = target->GetUnitFlags();
|
||||||
else
|
else
|
||||||
flag = *pflag;
|
flag = UnitFlags(*pflag);
|
||||||
|
|
||||||
auto pnpcflag = npcFlagID;
|
auto pnpcflag = npcFlagID;
|
||||||
if (!pnpcflag)
|
if (!pnpcflag)
|
||||||
@@ -305,7 +305,7 @@ public:
|
|||||||
handler->PSendSysMessage(LANG_YOU_CHANGE_FACTION, target->GetGUID().GetCounter(), factionid, flag, npcflag, dyflag);
|
handler->PSendSysMessage(LANG_YOU_CHANGE_FACTION, target->GetGUID().GetCounter(), factionid, flag, npcflag, dyflag);
|
||||||
|
|
||||||
target->SetFaction(factionid);
|
target->SetFaction(factionid);
|
||||||
target->SetUInt32Value(UNIT_FIELD_FLAGS, flag);
|
target->ReplaceAllUnitFlags(flag);
|
||||||
target->SetUInt32Value(UNIT_NPC_FLAGS, npcflag);
|
target->SetUInt32Value(UNIT_NPC_FLAGS, npcflag);
|
||||||
target->SetUInt32Value(UNIT_DYNAMIC_FLAGS, dyflag);
|
target->SetUInt32Value(UNIT_DYNAMIC_FLAGS, dyflag);
|
||||||
|
|
||||||
|
|||||||
@@ -614,7 +614,7 @@ public:
|
|||||||
handler->PSendSysMessage(LANG_NPCINFO_LEVEL, target->getLevel());
|
handler->PSendSysMessage(LANG_NPCINFO_LEVEL, target->getLevel());
|
||||||
handler->PSendSysMessage(LANG_NPCINFO_EQUIPMENT, target->GetCurrentEquipmentId(), target->GetOriginalEquipmentId());
|
handler->PSendSysMessage(LANG_NPCINFO_EQUIPMENT, target->GetCurrentEquipmentId(), target->GetOriginalEquipmentId());
|
||||||
handler->PSendSysMessage(LANG_NPCINFO_HEALTH, target->GetCreateHealth(), target->GetMaxHealth(), target->GetHealth());
|
handler->PSendSysMessage(LANG_NPCINFO_HEALTH, target->GetCreateHealth(), target->GetMaxHealth(), target->GetHealth());
|
||||||
handler->PSendSysMessage(LANG_NPCINFO_FLAGS, target->GetUInt32Value(UNIT_FIELD_FLAGS), target->GetUInt32Value(UNIT_FIELD_FLAGS_2), target->GetUInt32Value(UNIT_DYNAMIC_FLAGS), target->GetFaction());
|
handler->PSendSysMessage(LANG_NPCINFO_FLAGS, target->GetUnitFlags(), target->GetUnitFlags2(), target->GetUInt32Value(UNIT_DYNAMIC_FLAGS), target->GetFaction());
|
||||||
handler->PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(), curRespawnDelayStr.c_str());
|
handler->PSendSysMessage(LANG_COMMAND_RAWPAWNTIMES, defRespawnDelayStr.c_str(), curRespawnDelayStr.c_str());
|
||||||
handler->PSendSysMessage(LANG_NPCINFO_LOOT, cInfo->lootid, cInfo->pickpocketLootId, cInfo->SkinLootId);
|
handler->PSendSysMessage(LANG_NPCINFO_LOOT, cInfo->lootid, cInfo->pickpocketLootId, cInfo->SkinLootId);
|
||||||
handler->PSendSysMessage(LANG_NPCINFO_DUNGEON_ID, target->GetInstanceId());
|
handler->PSendSysMessage(LANG_NPCINFO_DUNGEON_ID, target->GetInstanceId());
|
||||||
|
|||||||
@@ -116,7 +116,7 @@ public:
|
|||||||
|
|
||||||
player->SetByteValue(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP);
|
player->SetByteValue(UNIT_FIELD_BYTES_2, 1, UNIT_BYTE2_FLAG_PVP);
|
||||||
|
|
||||||
player->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
player->ReplaceAllUnitFlags(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
|
|
||||||
//-1 is default value
|
//-1 is default value
|
||||||
player->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1));
|
player->SetUInt32Value(PLAYER_FIELD_WATCHED_FACTION_INDEX, uint32(-1));
|
||||||
|
|||||||
+1
-1
@@ -219,7 +219,7 @@ public:
|
|||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustSummoned(Creature* summon) override
|
void JustSummoned(Creature* summon) override
|
||||||
|
|||||||
+1
-3
@@ -176,12 +176,10 @@ public:
|
|||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
Voidwalkers = false;
|
Voidwalkers = false;
|
||||||
// Reset his gossip menu
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
|
|
||||||
// was set before event start, so set again
|
// was set before event start, so set again
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
|
|
||||||
if (instance->GetData(TYPE_TOMB_OF_SEVEN) == DONE) // what is this trying to do? Probably some kind of crash recovery
|
if (instance->GetData(TYPE_TOMB_OF_SEVEN) == DONE) // what is this trying to do? Probably some kind of crash recovery
|
||||||
{
|
{
|
||||||
|
|||||||
+2
-2
@@ -752,7 +752,7 @@ public:
|
|||||||
{
|
{
|
||||||
++TombEventCounter;
|
++TombEventCounter;
|
||||||
boss->SetFaction(FACTION_DARK_IRON_DWARVES);
|
boss->SetFaction(FACTION_DARK_IRON_DWARVES);
|
||||||
boss->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
boss->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
|
|
||||||
// find suitable target here.
|
// find suitable target here.
|
||||||
Player* target = boss->SelectNearestPlayer(130);
|
Player* target = boss->SelectNearestPlayer(130);
|
||||||
@@ -786,7 +786,7 @@ public:
|
|||||||
boss->SetLootRecipient(nullptr);
|
boss->SetLootRecipient(nullptr);
|
||||||
}
|
}
|
||||||
boss->SetFaction(FACTION_FRIENDLY);
|
boss->SetFaction(FACTION_FRIENDLY);
|
||||||
boss->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); // think this is useless
|
boss->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); // think this is useless
|
||||||
if (i == 6) // doomrel needs explicit reset
|
if (i == 6) // doomrel needs explicit reset
|
||||||
{
|
{
|
||||||
boss->AI()->Reset();
|
boss->AI()->Reset();
|
||||||
|
|||||||
+3
-3
@@ -63,7 +63,7 @@ public:
|
|||||||
BossAI::Reset();
|
BossAI::Reset();
|
||||||
|
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
frenzy40 = false;
|
frenzy40 = false;
|
||||||
frenzy15 = false;
|
frenzy15 = false;
|
||||||
@@ -95,7 +95,7 @@ public:
|
|||||||
void StartTalking(uint32 talkGroupId, uint32 timer)
|
void StartTalking(uint32 talkGroupId, uint32 timer)
|
||||||
{
|
{
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
|
|
||||||
Talk(talkGroupId);
|
Talk(talkGroupId);
|
||||||
@@ -109,7 +109,7 @@ public:
|
|||||||
events.SetPhase(EVENT_PHASE_FIGHT);
|
events.SetPhase(EVENT_PHASE_FIGHT);
|
||||||
|
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -79,7 +79,7 @@ public:
|
|||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
events.Reset();
|
events.Reset();
|
||||||
// Apply auras on spawn and reset
|
// Apply auras on spawn and reset
|
||||||
// DoCast(me, SPELL_FIRE_SHIELD_TRIGGER); // Need to find this in old DBC if possible
|
// DoCast(me, SPELL_FIRE_SHIELD_TRIGGER); // Need to find this in old DBC if possible
|
||||||
@@ -157,7 +157,7 @@ public:
|
|||||||
me->CastSpell(me, SPELL_EMBERSEER_FULL_STRENGTH);
|
me->CastSpell(me, SPELL_EMBERSEER_FULL_STRENGTH);
|
||||||
Talk(EMOTE_FREE_OF_BONDS);
|
Talk(EMOTE_FREE_OF_BONDS);
|
||||||
Talk(YELL_FREE_OF_BONDS);
|
Talk(YELL_FREE_OF_BONDS);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
events.ScheduleEvent(EVENT_ENTER_COMBAT, 2000);
|
events.ScheduleEvent(EVENT_ENTER_COMBAT, 2000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -338,7 +338,7 @@ public:
|
|||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
if (Creature* Emberseer = me->FindNearestCreature(NPC_PYROGAURD_EMBERSEER, 30.0f, true))
|
if (Creature* Emberseer = me->FindNearestCreature(NPC_PYROGAURD_EMBERSEER, 30.0f, true))
|
||||||
Emberseer->AI()->SetData(1, 3);
|
Emberseer->AI()->SetData(1, 3);
|
||||||
|
|
||||||
@@ -364,7 +364,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (data == 1 && value == 1)
|
if (data == 1 && value == 1)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->InterruptSpell(CURRENT_CHANNELED_SPELL);
|
me->InterruptSpell(CURRENT_CHANNELED_SPELL);
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
_events.CancelEvent(EVENT_ENCAGED_EMBERSEER);
|
_events.CancelEvent(EVENT_ENCAGED_EMBERSEER);
|
||||||
|
|||||||
+2
-2
@@ -114,11 +114,11 @@ public:
|
|||||||
|
|
||||||
if (instance->GetBossState(DATA_GYTH) == IN_PROGRESS)
|
if (instance->GetBossState(DATA_GYTH) == IN_PROGRESS)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_PREPARATION);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_PREPARATION);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_PREPARATION);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_PREPARATION);
|
||||||
gythEvent = false;
|
gythEvent = false;
|
||||||
victorGUID.Clear();
|
victorGUID.Clear();
|
||||||
waveDoorGUID.Clear();
|
waveDoorGUID.Clear();
|
||||||
|
|||||||
+5
-5
@@ -255,7 +255,7 @@ public:
|
|||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
me->SetStandState(UNIT_STAND_STATE_SIT_HIGH_CHAIR);
|
me->SetStandState(UNIT_STAND_STATE_SIT_HIGH_CHAIR);
|
||||||
me->RemoveAura(SPELL_NEFARIANS_BARRIER);
|
me->RemoveAura(SPELL_NEFARIANS_BARRIER);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -467,7 +467,7 @@ public:
|
|||||||
me->SetFaction(FACTION_DRAGONFLIGHT_BLACK);
|
me->SetFaction(FACTION_DRAGONFLIGHT_BLACK);
|
||||||
me->SetUInt32Value(UNIT_NPC_FLAGS, 0);
|
me->SetUInt32Value(UNIT_NPC_FLAGS, 0);
|
||||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
// Due to Nefarius despawning himself on Vael, we need to update the guid on instance to prevent unwanted behaviours as encounter not resetting at all.
|
// Due to Nefarius despawning himself on Vael, we need to update the guid on instance to prevent unwanted behaviours as encounter not resetting at all.
|
||||||
instance->SetGuidData(DATA_LORD_VICTOR_NEFARIUS, me->GetGUID());
|
instance->SetGuidData(DATA_LORD_VICTOR_NEFARIUS, me->GetGUID());
|
||||||
}
|
}
|
||||||
@@ -501,7 +501,7 @@ struct boss_nefarian : public BossAI
|
|||||||
{
|
{
|
||||||
Initialize();
|
Initialize();
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetCanFly(true);
|
me->SetCanFly(true);
|
||||||
me->SetDisableGravity(true);
|
me->SetDisableGravity(true);
|
||||||
if (_introDone) // already in combat, reset properly.
|
if (_introDone) // already in combat, reset properly.
|
||||||
@@ -569,7 +569,7 @@ struct boss_nefarian : public BossAI
|
|||||||
me->SetDisableGravity(false);
|
me->SetDisableGravity(false);
|
||||||
Position land = me->GetPosition();
|
Position land = me->GetPosition();
|
||||||
me->GetMotionMaster()->MoveLand(0, land, 8.5f);
|
me->GetMotionMaster()->MoveLand(0, land, 8.5f);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->GetMotionMaster()->MoveIdle();
|
me->GetMotionMaster()->MoveIdle();
|
||||||
|
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
@@ -703,7 +703,7 @@ struct boss_nefarian : public BossAI
|
|||||||
{
|
{
|
||||||
(*itr)->Respawn();
|
(*itr)->Respawn();
|
||||||
DoZoneInCombat((*itr));
|
DoZoneInCombat((*itr));
|
||||||
(*itr)->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
(*itr)->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
(*itr)->SetReactState(REACT_AGGRESSIVE);
|
(*itr)->SetReactState(REACT_AGGRESSIVE);
|
||||||
(*itr)->SetStandState(UNIT_STAND_STATE_STAND);
|
(*itr)->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
}
|
}
|
||||||
|
|||||||
+4
-4
@@ -92,7 +92,7 @@ public:
|
|||||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_QUESTGIVER);
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
@@ -160,7 +160,7 @@ public:
|
|||||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
me->SummonCreature(NPC_VICTOR_NEFARIUS, aNefariusSpawnLoc[0], aNefariusSpawnLoc[1], aNefariusSpawnLoc[2], aNefariusSpawnLoc[3], TEMPSUMMON_TIMED_DESPAWN, 26000);
|
me->SummonCreature(NPC_VICTOR_NEFARIUS, aNefariusSpawnLoc[0], aNefariusSpawnLoc[1], aNefariusSpawnLoc[2], aNefariusSpawnLoc[3], TEMPSUMMON_TIMED_DESPAWN, 26000);
|
||||||
_eventsIntro.ScheduleEvent(EVENT_SPEECH_2, 1000);
|
_eventsIntro.ScheduleEvent(EVENT_SPEECH_2, 1000);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
break;
|
break;
|
||||||
case EVENT_SPEECH_2:
|
case EVENT_SPEECH_2:
|
||||||
if (Creature* nefarius = me->GetMap()->GetCreature(m_nefariusGuid))
|
if (Creature* nefarius = me->GetMap()->GetCreature(m_nefariusGuid))
|
||||||
@@ -190,7 +190,7 @@ public:
|
|||||||
Talk(SAY_LINE3);
|
Talk(SAY_LINE3);
|
||||||
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
me->HandleEmoteCommand(EMOTE_ONESHOT_TALK);
|
||||||
_eventsIntro.ScheduleEvent(EVENT_SPEECH_7, 17000);
|
_eventsIntro.ScheduleEvent(EVENT_SPEECH_7, 17000);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
break;
|
break;
|
||||||
case EVENT_SPEECH_7:
|
case EVENT_SPEECH_7:
|
||||||
me->SetFaction(FACTION_DRAGONFLIGHT_BLACK);
|
me->SetFaction(FACTION_DRAGONFLIGHT_BLACK);
|
||||||
@@ -265,7 +265,7 @@ public:
|
|||||||
if (summoned->GetEntry() == NPC_VICTOR_NEFARIUS)
|
if (summoned->GetEntry() == NPC_VICTOR_NEFARIUS)
|
||||||
{
|
{
|
||||||
// Set not selectable, so players won't interact with it
|
// Set not selectable, so players won't interact with it
|
||||||
summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
summoned->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
m_nefariusGuid = summoned->GetGUID();
|
m_nefariusGuid = summoned->GetGUID();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -396,7 +396,7 @@ public:
|
|||||||
if (Creature* summon = unit->ToCreature())
|
if (Creature* summon = unit->ToCreature())
|
||||||
{
|
{
|
||||||
summon->UpdateEntry(NPC_BONE_CONSTRUCT);
|
summon->UpdateEntry(NPC_BONE_CONSTRUCT);
|
||||||
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
summon->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
summon->SetReactState(REACT_PASSIVE);
|
summon->SetReactState(REACT_PASSIVE);
|
||||||
summon->SetStandState(UNIT_STAND_STATE_DEAD);
|
summon->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -151,7 +151,7 @@ public:
|
|||||||
{
|
{
|
||||||
summon->CastSpell(summon, SPELL_RAGNAROS_FADE);
|
summon->CastSpell(summon, SPELL_RAGNAROS_FADE);
|
||||||
summon->CastSpell(summon, SPELL_RAGNAROS_SUBMERGE_EFFECT, true);
|
summon->CastSpell(summon, SPELL_RAGNAROS_SUBMERGE_EFFECT, true);
|
||||||
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
|
summon->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
|
||||||
summon->SetReactState(REACT_PASSIVE);
|
summon->SetReactState(REACT_PASSIVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -180,7 +180,7 @@ public:
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
events.SetPhase(PHASE_NONE);
|
events.SetPhase(PHASE_NONE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
me->SetFaction(FACTION_MAJORDOMO_FRIENDLY);
|
me->SetFaction(FACTION_MAJORDOMO_FRIENDLY);
|
||||||
}
|
}
|
||||||
@@ -282,7 +282,7 @@ public:
|
|||||||
instance->SetBossState(DATA_MAJORDOMO_EXECUTUS, DONE);
|
instance->SetBossState(DATA_MAJORDOMO_EXECUTUS, DONE);
|
||||||
events.CancelEventGroup(PHASE_COMBAT);
|
events.CancelEventGroup(PHASE_COMBAT);
|
||||||
me->GetMap()->UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, me->GetEntry(), me);
|
me->GetMap()->UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, me->GetEntry(), me);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetFaction(FACTION_MAJORDOMO_FRIENDLY);
|
me->SetFaction(FACTION_MAJORDOMO_FRIENDLY);
|
||||||
EnterEvadeMode();
|
EnterEvadeMode();
|
||||||
Talk(SAY_DEFEAT);
|
Talk(SAY_DEFEAT);
|
||||||
|
|||||||
@@ -137,7 +137,7 @@ public:
|
|||||||
extraEvents.Reset();
|
extraEvents.Reset();
|
||||||
extraEvents.SetPhase(PHASE_EMERGED);
|
extraEvents.SetPhase(PHASE_EMERGED);
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC|UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_IMMUNE_TO_PC|UNIT_FLAG_IMMUNE_TO_NPC|UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
||||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||||
}
|
}
|
||||||
@@ -276,7 +276,7 @@ public:
|
|||||||
_isIntroDone = true;
|
_isIntroDone = true;
|
||||||
extraEvents.SetPhase(PHASE_EMERGED);
|
extraEvents.SetPhase(PHASE_EMERGED);
|
||||||
me->RemoveAurasDueToSpell(SPELL_RAGNAROS_SUBMERGE_EFFECT);
|
me->RemoveAurasDueToSpell(SPELL_RAGNAROS_SUBMERGE_EFFECT);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
break;
|
break;
|
||||||
@@ -409,7 +409,7 @@ public:
|
|||||||
me->InterruptNonMeleeSpells(false);
|
me->InterruptNonMeleeSpells(false);
|
||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_SUBMERGED);
|
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_SUBMERGED);
|
||||||
DoCastSelf(SPELL_RAGNA_SUBMERGE_VISUAL, true);
|
DoCastSelf(SPELL_RAGNA_SUBMERGE_VISUAL, true);
|
||||||
//me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
|
//me->HandleEmoteCommand(EMOTE_ONESHOT_SUBMERGE);
|
||||||
@@ -460,7 +460,7 @@ public:
|
|||||||
extraEvents.SetPhase(PHASE_EMERGED);
|
extraEvents.SetPhase(PHASE_EMERGED);
|
||||||
|
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE|UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, 0);
|
||||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||||
|
|
||||||
|
|||||||
@@ -133,8 +133,8 @@ public:
|
|||||||
|
|
||||||
creatureTarget->CastSpell(creatureTarget, SPELL_PLAY_DEAD_PACIFY, true);
|
creatureTarget->CastSpell(creatureTarget, SPELL_PLAY_DEAD_PACIFY, true);
|
||||||
creatureTarget->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
creatureTarget->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
||||||
creatureTarget->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
|
creatureTarget->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||||
//creatureTarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
//creatureTarget->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
creatureTarget->SetReactState(REACT_PASSIVE);
|
creatureTarget->SetReactState(REACT_PASSIVE);
|
||||||
creatureTarget->SetControlled(true, UNIT_STATE_ROOT);
|
creatureTarget->SetControlled(true, UNIT_STATE_ROOT);
|
||||||
|
|
||||||
@@ -151,8 +151,8 @@ public:
|
|||||||
|
|
||||||
creatureTarget->RemoveAurasDueToSpell(SPELL_PLAY_DEAD_PACIFY);
|
creatureTarget->RemoveAurasDueToSpell(SPELL_PLAY_DEAD_PACIFY);
|
||||||
creatureTarget->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
creatureTarget->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
||||||
creatureTarget->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
|
creatureTarget->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||||
//creatureTarget->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
//creatureTarget->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
creatureTarget->SetControlled(false, UNIT_STATE_ROOT);
|
creatureTarget->SetControlled(false, UNIT_STATE_ROOT);
|
||||||
creatureTarget->SetReactState(REACT_AGGRESSIVE);
|
creatureTarget->SetReactState(REACT_AGGRESSIVE);
|
||||||
|
|
||||||
|
|||||||
@@ -67,7 +67,7 @@ public:
|
|||||||
me->LoadEquipment(EQUIP_SWORD);
|
me->LoadEquipment(EQUIP_SWORD);
|
||||||
me->SetCanDualWield(false);
|
me->SetCanDualWield(false);
|
||||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
me->RemoveUnitFlag(UNIT_FLAG_PACIFIED);
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -94,7 +94,7 @@ public:
|
|||||||
me->GetMotionMaster()->Clear();
|
me->GetMotionMaster()->Clear();
|
||||||
me->GetMotionMaster()->MovePoint(EQUIP_TWO_SWORDS, 1.859f, -780.72f, 9.831f);
|
me->GetMotionMaster()->MovePoint(EQUIP_TWO_SWORDS, 1.859f, -780.72f, 9.831f);
|
||||||
Talk(SAY_SWAP1);
|
Talk(SAY_SWAP1);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
me->SetUnitFlag(UNIT_FLAG_PACIFIED);
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
health67 = true;
|
health67 = true;
|
||||||
break;
|
break;
|
||||||
@@ -109,7 +109,7 @@ public:
|
|||||||
me->GetMotionMaster()->Clear();
|
me->GetMotionMaster()->Clear();
|
||||||
me->GetMotionMaster()->MovePoint(EQUIP_MACE, 1.859f, -780.72f, 9.831f);
|
me->GetMotionMaster()->MovePoint(EQUIP_MACE, 1.859f, -780.72f, 9.831f);
|
||||||
Talk(SAY_SWAP2);
|
Talk(SAY_SWAP2);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
me->SetUnitFlag(UNIT_FLAG_PACIFIED);
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
health34 = true;
|
health34 = true;
|
||||||
break;
|
break;
|
||||||
@@ -135,7 +135,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
case EVENT_RESTORE_COMBAT:
|
case EVENT_RESTORE_COMBAT:
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
me->RemoveUnitFlag(UNIT_FLAG_PACIFIED);
|
||||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
if (me->GetVictim())
|
if (me->GetVictim())
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -144,7 +144,7 @@ public:
|
|||||||
if (spell->Id == SPELL_INFERNAL_RELAY)
|
if (spell->Id == SPELL_INFERNAL_RELAY)
|
||||||
{
|
{
|
||||||
me->SetDisplayId(me->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
|
me->SetDisplayId(me->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
HellfireTimer = 4000;
|
HellfireTimer = 4000;
|
||||||
CleanupTimer = 170000;
|
CleanupTimer = 170000;
|
||||||
}
|
}
|
||||||
@@ -477,7 +477,7 @@ public:
|
|||||||
void Initialize()
|
void Initialize()
|
||||||
{
|
{
|
||||||
AxesTargetSwitchTimer = 7500;
|
AxesTargetSwitchTimer = 7500;
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetCanDualWield(true);
|
me->SetCanDualWield(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -106,8 +106,8 @@ void SummonCroneIfReady(InstanceScript* instance, Creature* creature)
|
|||||||
{
|
{
|
||||||
if (creature->GetVictim())
|
if (creature->GetVictim())
|
||||||
pCrone->AI()->AttackStart(creature->GetVictim());
|
pCrone->AI()->AttackStart(creature->GetVictim());
|
||||||
pCrone->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
pCrone->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
pCrone->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
pCrone->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -179,7 +179,7 @@ public:
|
|||||||
|
|
||||||
void AttackStart(Unit* who) override
|
void AttackStart(Unit* who) override
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::AttackStart(who);
|
ScriptedAI::AttackStart(who);
|
||||||
@@ -188,7 +188,7 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* who) override
|
void MoveInLineOfSight(Unit* who) override
|
||||||
|
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::MoveInLineOfSight(who);
|
ScriptedAI::MoveInLineOfSight(who);
|
||||||
@@ -200,7 +200,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (AggroTimer <= diff)
|
if (AggroTimer <= diff)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
AggroTimer = 0;
|
AggroTimer = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -342,7 +342,7 @@ public:
|
|||||||
|
|
||||||
void AttackStart(Unit* who) override
|
void AttackStart(Unit* who) override
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::AttackStart(who);
|
ScriptedAI::AttackStart(who);
|
||||||
@@ -351,7 +351,7 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* who) override
|
void MoveInLineOfSight(Unit* who) override
|
||||||
|
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::MoveInLineOfSight(who);
|
ScriptedAI::MoveInLineOfSight(who);
|
||||||
@@ -399,7 +399,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (AggroTimer <= diff)
|
if (AggroTimer <= diff)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
AggroTimer = 0;
|
AggroTimer = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -478,7 +478,7 @@ public:
|
|||||||
|
|
||||||
void AttackStart(Unit* who) override
|
void AttackStart(Unit* who) override
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::AttackStart(who);
|
ScriptedAI::AttackStart(who);
|
||||||
@@ -487,7 +487,7 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* who) override
|
void MoveInLineOfSight(Unit* who) override
|
||||||
|
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::MoveInLineOfSight(who);
|
ScriptedAI::MoveInLineOfSight(who);
|
||||||
@@ -511,7 +511,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (AggroTimer <= diff)
|
if (AggroTimer <= diff)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
AggroTimer = 0;
|
AggroTimer = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -582,7 +582,7 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* who) override
|
void MoveInLineOfSight(Unit* who) override
|
||||||
|
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::MoveInLineOfSight(who);
|
ScriptedAI::MoveInLineOfSight(who);
|
||||||
@@ -590,7 +590,7 @@ public:
|
|||||||
|
|
||||||
void AttackStart(Unit* who) override
|
void AttackStart(Unit* who) override
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::AttackStart(who);
|
ScriptedAI::AttackStart(who);
|
||||||
@@ -625,7 +625,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (AggroTimer <= diff)
|
if (AggroTimer <= diff)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
AggroTimer = 0;
|
AggroTimer = 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@@ -688,7 +688,7 @@ public:
|
|||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
CycloneTimer = 22000;
|
CycloneTimer = 22000;
|
||||||
ChainLightningTimer = 8000;
|
ChainLightningTimer = 8000;
|
||||||
}
|
}
|
||||||
@@ -1014,7 +1014,7 @@ void PretendToDie(Creature* creature)
|
|||||||
creature->InterruptNonMeleeSpells(true);
|
creature->InterruptNonMeleeSpells(true);
|
||||||
creature->RemoveAllAuras();
|
creature->RemoveAllAuras();
|
||||||
creature->SetHealth(0);
|
creature->SetHealth(0);
|
||||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
creature->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
creature->GetMotionMaster()->MovementExpired(false);
|
creature->GetMotionMaster()->MovementExpired(false);
|
||||||
creature->GetMotionMaster()->MoveIdle();
|
creature->GetMotionMaster()->MoveIdle();
|
||||||
creature->SetStandState(UNIT_STAND_STATE_DEAD);
|
creature->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||||
@@ -1022,7 +1022,7 @@ void PretendToDie(Creature* creature)
|
|||||||
|
|
||||||
void Resurrect(Creature* target)
|
void Resurrect(Creature* target)
|
||||||
{
|
{
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
target->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
target->SetFullHealth();
|
target->SetFullHealth();
|
||||||
target->SetStandState(UNIT_STAND_STATE_STAND);
|
target->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
target->CastSpell(target, SPELL_RES_VISUAL, true);
|
target->CastSpell(target, SPELL_RES_VISUAL, true);
|
||||||
@@ -1107,7 +1107,7 @@ public:
|
|||||||
|
|
||||||
void AttackStart(Unit* who) override
|
void AttackStart(Unit* who) override
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::AttackStart(who);
|
ScriptedAI::AttackStart(who);
|
||||||
@@ -1116,7 +1116,7 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* who) override
|
void MoveInLineOfSight(Unit* who) override
|
||||||
|
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::MoveInLineOfSight(who);
|
ScriptedAI::MoveInLineOfSight(who);
|
||||||
@@ -1239,7 +1239,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (Creature* Julianne = (ObjectAccessor::GetCreature((*me), JulianneGUID)))
|
if (Creature* Julianne = (ObjectAccessor::GetCreature((*me), JulianneGUID)))
|
||||||
{
|
{
|
||||||
Julianne->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
Julianne->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Julianne->GetMotionMaster()->Clear();
|
Julianne->GetMotionMaster()->Clear();
|
||||||
Julianne->setDeathState(JUST_DIED);
|
Julianne->setDeathState(JUST_DIED);
|
||||||
Julianne->CombatStop(true);
|
Julianne->CombatStop(true);
|
||||||
@@ -1281,7 +1281,7 @@ public:
|
|||||||
void MoveInLineOfSight(Unit* who) override
|
void MoveInLineOfSight(Unit* who) override
|
||||||
|
|
||||||
{
|
{
|
||||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
ScriptedAI::MoveInLineOfSight(who);
|
ScriptedAI::MoveInLineOfSight(who);
|
||||||
@@ -1382,7 +1382,7 @@ void boss_julianne::boss_julianneAI::UpdateAI(uint32 diff)
|
|||||||
if (AggroYellTimer <= diff)
|
if (AggroYellTimer <= diff)
|
||||||
{
|
{
|
||||||
Talk(SAY_JULIANNE_AGGRO);
|
Talk(SAY_JULIANNE_AGGRO);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetFaction(FACTION_MONSTER_2);
|
me->SetFaction(FACTION_MONSTER_2);
|
||||||
AggroYellTimer = 0;
|
AggroYellTimer = 0;
|
||||||
}
|
}
|
||||||
@@ -1542,7 +1542,7 @@ void boss_julianne::boss_julianneAI::DamageTaken(Unit* /*done_by*/, uint32& dama
|
|||||||
{
|
{
|
||||||
if (Creature* Romulo = (ObjectAccessor::GetCreature((*me), RomuloGUID)))
|
if (Creature* Romulo = (ObjectAccessor::GetCreature((*me), RomuloGUID)))
|
||||||
{
|
{
|
||||||
Romulo->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
Romulo->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Romulo->GetMotionMaster()->Clear();
|
Romulo->GetMotionMaster()->Clear();
|
||||||
Romulo->setDeathState(JUST_DIED);
|
Romulo->setDeathState(JUST_DIED);
|
||||||
Romulo->CombatStop(true);
|
Romulo->CombatStop(true);
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ public:
|
|||||||
me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f,
|
me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0.0f,
|
||||||
TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000))
|
TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000))
|
||||||
{
|
{
|
||||||
spotlight->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
spotlight->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
spotlight->CastSpell(spotlight, SPELL_SPOTLIGHT, false);
|
spotlight->CastSpell(spotlight, SPELL_SPOTLIGHT, false);
|
||||||
m_uiSpotlightGUID = spotlight->GetGUID();
|
m_uiSpotlightGUID = spotlight->GetGUID();
|
||||||
}
|
}
|
||||||
@@ -265,11 +265,7 @@ public:
|
|||||||
float PosX = Spawns[index][1];
|
float PosX = Spawns[index][1];
|
||||||
|
|
||||||
if (Creature* creature = me->SummonCreature(entry, PosX, SPAWN_Y, SPAWN_Z, SPAWN_O, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, HOUR * 2 * IN_MILLISECONDS))
|
if (Creature* creature = me->SummonCreature(entry, PosX, SPAWN_Y, SPAWN_Z, SPAWN_O, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, HOUR * 2 * IN_MILLISECONDS))
|
||||||
{
|
creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
// In case database has bad flags
|
|
||||||
creature->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
|
|
||||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
RaidWiped = false;
|
RaidWiped = false;
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ public:
|
|||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, false);
|
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_INTERRUPT_CAST, false);
|
||||||
instance->SetData(DATA_KAELTHAS_EVENT, NOT_STARTED);
|
instance->SetData(DATA_KAELTHAS_EVENT, NOT_STARTED);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustSummoned(Creature* summon) override
|
void JustSummoned(Creature* summon) override
|
||||||
@@ -120,7 +120,7 @@ public:
|
|||||||
void InitializeAI() override
|
void InitializeAI() override
|
||||||
{
|
{
|
||||||
ScriptedAI::InitializeAI();
|
ScriptedAI::InitializeAI();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void JustDied(Unit*) override
|
void JustDied(Unit*) override
|
||||||
@@ -162,7 +162,7 @@ public:
|
|||||||
if (me->isRegeneratingHealth())
|
if (me->isRegeneratingHealth())
|
||||||
{
|
{
|
||||||
me->SetRegeneratingHealth(false);
|
me->SetRegeneratingHealth(false);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->CombatStop();
|
me->CombatStop();
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
LapseAction(ACTION_REMOVE_FLY);
|
LapseAction(ACTION_REMOVE_FLY);
|
||||||
@@ -200,7 +200,7 @@ public:
|
|||||||
switch (events2.ExecuteEvent())
|
switch (events2.ExecuteEvent())
|
||||||
{
|
{
|
||||||
case EVENT_INIT_COMBAT:
|
case EVENT_INIT_COMBAT:
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
if (Unit* target = SelectTargetFromPlayerList(50.0f))
|
if (Unit* target = SelectTargetFromPlayerList(50.0f))
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -167,7 +167,7 @@ public:
|
|||||||
if (Unit* crystal = ObjectAccessor::GetUnit(*me, CrystalGUID))
|
if (Unit* crystal = ObjectAccessor::GetUnit(*me, CrystalGUID))
|
||||||
{
|
{
|
||||||
Talk(EMOTE_CRYSTAL);
|
Talk(EMOTE_CRYSTAL);
|
||||||
crystal->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
|
crystal->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
|
||||||
crystal->CastSpell(me, SPELL_MANA_RAGE, true);
|
crystal->CastSpell(me, SPELL_MANA_RAGE, true);
|
||||||
me->CastSpell(crystal, SPELL_FEL_CRYSTAL_COSMETIC, true);
|
me->CastSpell(crystal, SPELL_FEL_CRYSTAL_COSMETIC, true);
|
||||||
events.SetPhase(1);
|
events.SetPhase(1);
|
||||||
|
|||||||
@@ -102,7 +102,7 @@ public:
|
|||||||
case EVENT_REMOVE_CONTROL:
|
case EVENT_REMOVE_CONTROL:
|
||||||
if (Player* player = me->GetCharmerOrOwnerPlayerOrPlayerItself())
|
if (Player* player = me->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
me->SetUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
SetControl(player, false);
|
SetControl(player, false);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -131,7 +131,7 @@ public:
|
|||||||
case EVENT_REGAIN_CONTROL:
|
case EVENT_REGAIN_CONTROL:
|
||||||
if (Player* player = me->GetCharmerOrOwnerPlayerOrPlayerItself())
|
if (Player* player = me->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
me->RemoveUnitFlag(UNIT_FLAG_STUNNED);
|
||||||
me->SetSpeed(MOVE_FLIGHT, 3.3f, true);
|
me->SetSpeed(MOVE_FLIGHT, 3.3f, true);
|
||||||
|
|
||||||
SetControl(player, true);
|
SetControl(player, true);
|
||||||
@@ -206,8 +206,8 @@ public:
|
|||||||
if (creature->AI()->GetData(DATA_IN_PROGRESS))
|
if (creature->AI()->GetData(DATA_IN_PROGRESS))
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
creature->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SWIMMING);
|
creature->RemoveUnitFlag(UNIT_FLAG_SWIMMING);
|
||||||
|
|
||||||
player->CastSpell(creature, SPELL_DUEL, false);
|
player->CastSpell(creature, SPELL_DUEL, false);
|
||||||
player->CastSpell(player, SPELL_DUEL_FLAG, true);
|
player->CastSpell(player, SPELL_DUEL_FLAG, true);
|
||||||
@@ -263,7 +263,7 @@ public:
|
|||||||
me->RestoreFaction();
|
me->RestoreFaction();
|
||||||
CombatAI::Reset();
|
CombatAI::Reset();
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_SWIMMING);
|
me->SetUnitFlag(UNIT_FLAG_SWIMMING);
|
||||||
}
|
}
|
||||||
|
|
||||||
void SpellHit(Unit* caster, SpellInfo const* pSpell) override
|
void SpellHit(Unit* caster, SpellInfo const* pSpell) override
|
||||||
@@ -474,7 +474,7 @@ public:
|
|||||||
|
|
||||||
void InitializeAI() override
|
void InitializeAI() override
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||||
ScriptedAI::InitializeAI();
|
ScriptedAI::InitializeAI();
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
|
|
||||||
@@ -519,7 +519,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
case EVENT_GHOUL_RESTORE_STATE:
|
case EVENT_GHOUL_RESTORE_STATE:
|
||||||
me->SetReactState(REACT_DEFENSIVE);
|
me->SetReactState(REACT_DEFENSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
me->RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||||
if (Player* owner = me->GetCharmerOrOwnerPlayerOrPlayerItself())
|
if (Player* owner = me->GetCharmerOrOwnerPlayerOrPlayerItself())
|
||||||
me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, frand(0.0f, 2 * M_PI));
|
me->GetMotionMaster()->MoveFollow(owner, PET_FOLLOW_DIST, frand(0.0f, 2 * M_PI));
|
||||||
events.ScheduleEvent(EVENT_GHOUL_CHECK_COMBAT, 1000);
|
events.ScheduleEvent(EVENT_GHOUL_CHECK_COMBAT, 1000);
|
||||||
@@ -571,7 +571,7 @@ public:
|
|||||||
{
|
{
|
||||||
ScriptedAI::MoveInLineOfSight(who);
|
ScriptedAI::MoveInLineOfSight(who);
|
||||||
|
|
||||||
if (!who->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC) && who->GetEntry() == NPC_GHOUL && me->IsWithinDistInMap(who, 10.0f))
|
if (!who->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC) && who->GetEntry() == NPC_GHOUL && me->IsWithinDistInMap(who, 10.0f))
|
||||||
if (Unit* owner = who->GetOwner())
|
if (Unit* owner = who->GetOwner())
|
||||||
if (Player* player = owner->ToPlayer())
|
if (Player* player = owner->ToPlayer())
|
||||||
{
|
{
|
||||||
@@ -580,7 +580,7 @@ public:
|
|||||||
creature->CastSpell(owner, 52517, true);
|
creature->CastSpell(owner, 52517, true);
|
||||||
|
|
||||||
creature->AI()->SetGUID(me->GetGUID());
|
creature->AI()->SetGUID(me->GetGUID());
|
||||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
creature->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -730,7 +730,7 @@ public:
|
|||||||
phase = PHASE_CHAINED;
|
phase = PHASE_CHAINED;
|
||||||
events.Reset();
|
events.Reset();
|
||||||
me->SetFaction(FACTION_CREATURE);
|
me->SetFaction(FACTION_CREATURE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 8);
|
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 8);
|
||||||
me->LoadEquipment(0, true);
|
me->LoadEquipment(0, true);
|
||||||
}
|
}
|
||||||
@@ -831,7 +831,7 @@ public:
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
me->SetFaction(FACTION_MONSTER);
|
me->SetFaction(FACTION_MONSTER);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
phase = PHASE_ATTACKING;
|
phase = PHASE_ATTACKING;
|
||||||
|
|
||||||
if (Player* target = ObjectAccessor::GetPlayer(*me, playerGUID))
|
if (Player* target = ObjectAccessor::GetPlayer(*me, playerGUID))
|
||||||
@@ -951,7 +951,7 @@ public:
|
|||||||
{
|
{
|
||||||
npc_scarlet_miner_cartAI(Creature* creature) : PassiveAI(creature)
|
npc_scarlet_miner_cartAI(Creature* creature) : PassiveAI(creature)
|
||||||
{
|
{
|
||||||
me->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->ReplaceAllUnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); // Modelid2 is a horse.
|
me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); // Modelid2 is a horse.
|
||||||
}
|
}
|
||||||
@@ -974,7 +974,7 @@ public:
|
|||||||
me->SetSpeed(MOVE_RUN, 1.25f);
|
me->SetSpeed(MOVE_RUN, 1.25f);
|
||||||
|
|
||||||
me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0);
|
me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0);
|
||||||
me->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1084,7 +1084,7 @@ public:
|
|||||||
{
|
{
|
||||||
me->SetFacingToObject(car);
|
me->SetFacingToObject(car);
|
||||||
// xinef: add some flags
|
// xinef: add some flags
|
||||||
car->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
car->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
car->SetFaction(FACTION_FRIENDLY);
|
car->SetFaction(FACTION_FRIENDLY);
|
||||||
}
|
}
|
||||||
Talk(SAY_SCARLET_MINER_0);
|
Talk(SAY_SCARLET_MINER_0);
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ public:
|
|||||||
m_uiWave = 0;
|
m_uiWave = 0;
|
||||||
m_uiWave_Timer = 3000;
|
m_uiWave_Timer = 3000;
|
||||||
m_uiValrothGUID.Clear();
|
m_uiValrothGUID.Clear();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->LoadEquipment(0, true);
|
me->LoadEquipment(0, true);
|
||||||
me->RemoveAllAuras();
|
me->RemoveAllAuras();
|
||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
@@ -255,7 +255,7 @@ public:
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
me->GetMotionMaster()->MoveTargetedHome();
|
me->GetMotionMaster()->MoveTargetedHome();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
Reset();
|
Reset();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -274,7 +274,7 @@ public:
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
Talk(SAY_BREAKOUT1);
|
Talk(SAY_BREAKOUT1);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
@@ -313,7 +313,7 @@ public:
|
|||||||
m_uiValrothGUID = summoned->GetGUID();
|
m_uiValrothGUID = summoned->GetGUID();
|
||||||
|
|
||||||
summoned->AddThreat(me, 0.0f);
|
summoned->AddThreat(me, 0.0f);
|
||||||
summoned->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
summoned->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
summons.Summon(summoned);
|
summons.Summon(summoned);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -666,7 +666,7 @@ public:
|
|||||||
ExecuteSpeech_Counter = 0;
|
ExecuteSpeech_Counter = 0;
|
||||||
PlayerGUID.Clear();
|
PlayerGUID.Clear();
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool MeetQuestCondition(Player* player)
|
bool MeetQuestCondition(Player* player)
|
||||||
@@ -780,7 +780,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_6, player);
|
Talk(SAY_EXEC_TIME_6, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -826,7 +826,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_8, player);
|
Talk(SAY_EXEC_TIME_8, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -872,7 +872,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_3, player);
|
Talk(SAY_EXEC_TIME_3, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -918,7 +918,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_7, player);
|
Talk(SAY_EXEC_TIME_7, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -964,7 +964,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_4, player);
|
Talk(SAY_EXEC_TIME_4, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -1010,7 +1010,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_9, player);
|
Talk(SAY_EXEC_TIME_9, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -1056,7 +1056,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_5, player);
|
Talk(SAY_EXEC_TIME_5, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -1102,7 +1102,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_10, player);
|
Talk(SAY_EXEC_TIME_10, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -1146,7 +1146,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_1, player);
|
Talk(SAY_EXEC_TIME_1, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
@@ -1192,7 +1192,7 @@ public:
|
|||||||
case 9:
|
case 9:
|
||||||
Talk(SAY_EXEC_TIME_2, player);
|
Talk(SAY_EXEC_TIME_2, player);
|
||||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
break;
|
break;
|
||||||
case 10:
|
case 10:
|
||||||
Talk(SAY_EXEC_WAITING, player);
|
Talk(SAY_EXEC_WAITING, player);
|
||||||
|
|||||||
@@ -465,7 +465,7 @@ public:
|
|||||||
if (battleStarted == ENCOUNTER_STATE_OUTRO && cr->GetEntry() == NPC_DEFENDER_OF_THE_LIGHT)
|
if (battleStarted == ENCOUNTER_STATE_OUTRO && cr->GetEntry() == NPC_DEFENDER_OF_THE_LIGHT)
|
||||||
{
|
{
|
||||||
cr->SetReactState(REACT_PASSIVE);
|
cr->SetReactState(REACT_PASSIVE);
|
||||||
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
cr->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
||||||
cr->HandleEmoteCommand(EMOTE_STATE_READY1H);
|
cr->HandleEmoteCommand(EMOTE_STATE_READY1H);
|
||||||
}
|
}
|
||||||
@@ -546,7 +546,7 @@ public:
|
|||||||
events.Reset();
|
events.Reset();
|
||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
me->SetVisible(true);
|
me->SetVisible(true);
|
||||||
@@ -670,7 +670,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case EVENT_START_COUNTDOWN_14:
|
case EVENT_START_COUNTDOWN_14:
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SummonCreatureGroup(5);
|
me->SummonCreatureGroup(5);
|
||||||
return;
|
return;
|
||||||
case EVENT_FINISH_FIGHT_1:
|
case EVENT_FINISH_FIGHT_1:
|
||||||
@@ -698,13 +698,13 @@ public:
|
|||||||
{
|
{
|
||||||
summon->CombatStop(true);
|
summon->CombatStop(true);
|
||||||
summon->DeleteThreatList();
|
summon->DeleteThreatList();
|
||||||
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
summon->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
summon->SetReactState(REACT_PASSIVE);
|
summon->SetReactState(REACT_PASSIVE);
|
||||||
summon->GetMotionMaster()->Clear(false);
|
summon->GetMotionMaster()->Clear(false);
|
||||||
}
|
}
|
||||||
me->CombatStop(true);
|
me->CombatStop(true);
|
||||||
me->DeleteThreatList();
|
me->DeleteThreatList();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->GetMotionMaster()->Clear(false);
|
me->GetMotionMaster()->Clear(false);
|
||||||
|
|
||||||
@@ -769,7 +769,7 @@ public:
|
|||||||
case EVENT_OUTRO_SCENE_6:
|
case EVENT_OUTRO_SCENE_6:
|
||||||
if (Creature* alex = me->SummonCreature(NPC_HIGHLORD_ALEXANDROS_MOGRAINE, LightOfDawnPos[7].GetPositionX(), LightOfDawnPos[7].GetPositionY(), LightOfDawnPos[7].GetPositionZ(), LightOfDawnPos[7].GetOrientation(), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000))
|
if (Creature* alex = me->SummonCreature(NPC_HIGHLORD_ALEXANDROS_MOGRAINE, LightOfDawnPos[7].GetPositionX(), LightOfDawnPos[7].GetPositionY(), LightOfDawnPos[7].GetPositionZ(), LightOfDawnPos[7].GetOrientation(), TEMPSUMMON_TIMED_OR_CORPSE_DESPAWN, 300000))
|
||||||
{
|
{
|
||||||
alex->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
alex->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
alex->GetMotionMaster()->MovePoint(0, LightOfDawnPos[8].GetPositionX(), LightOfDawnPos[8].GetPositionY(), LightOfDawnPos[8].GetPositionZ());
|
alex->GetMotionMaster()->MovePoint(0, LightOfDawnPos[8].GetPositionX(), LightOfDawnPos[8].GetPositionY(), LightOfDawnPos[8].GetPositionZ());
|
||||||
alex->CastSpell(alex, SPELL_ALEXANDROS_MOGRAINE_SPAWN, true);
|
alex->CastSpell(alex, SPELL_ALEXANDROS_MOGRAINE_SPAWN, true);
|
||||||
//alex->AI()->Talk(EMOTE_LIGHT_OF_DAWN06);
|
//alex->AI()->Talk(EMOTE_LIGHT_OF_DAWN06);
|
||||||
@@ -778,7 +778,7 @@ public:
|
|||||||
case EVENT_OUTRO_SCENE_7:
|
case EVENT_OUTRO_SCENE_7:
|
||||||
if (Creature* alex = GetEntryFromSummons(NPC_HIGHLORD_ALEXANDROS_MOGRAINE))
|
if (Creature* alex = GetEntryFromSummons(NPC_HIGHLORD_ALEXANDROS_MOGRAINE))
|
||||||
{
|
{
|
||||||
alex->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
alex->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
alex->AI()->Talk(SAY_LIGHT_OF_DAWN32);
|
alex->AI()->Talk(SAY_LIGHT_OF_DAWN32);
|
||||||
me->SetFacingToObject(alex);
|
me->SetFacingToObject(alex);
|
||||||
}
|
}
|
||||||
@@ -1027,7 +1027,7 @@ public:
|
|||||||
{
|
{
|
||||||
tirion->CastSpell(tirion, SPELL_TIRION_CHARGE, true);
|
tirion->CastSpell(tirion, SPELL_TIRION_CHARGE, true);
|
||||||
tirion->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
tirion->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||||
tirion->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
tirion->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case EVENT_OUTRO_SCENE_44:
|
case EVENT_OUTRO_SCENE_44:
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ public:
|
|||||||
{
|
{
|
||||||
me->setActive(true);
|
me->setActive(true);
|
||||||
me->SetVisible(false);
|
me->SetVisible(false);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetCanFly(true);
|
me->SetCanFly(true);
|
||||||
FlyBackTimer = 500;
|
FlyBackTimer = 500;
|
||||||
phase = 0;
|
phase = 0;
|
||||||
|
|||||||
@@ -360,8 +360,8 @@ public:
|
|||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
//Incase wipe during phase that mograine fake death
|
//Incase wipe during phase that mograine fake death
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
|
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
|
||||||
SayAshbringer = false;
|
SayAshbringer = false;
|
||||||
timer = 0;
|
timer = 0;
|
||||||
@@ -416,7 +416,7 @@ public:
|
|||||||
me->ClearComboPointHolders();
|
me->ClearComboPointHolders();
|
||||||
me->RemoveAllAuras();
|
me->RemoveAllAuras();
|
||||||
me->ClearAllReactives();
|
me->ClearAllReactives();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->CastSpell(me, SPELL_PERMANENT_FEIGN_DEATH, true);
|
me->CastSpell(me, SPELL_PERMANENT_FEIGN_DEATH, true);
|
||||||
|
|
||||||
hasDied = true;
|
hasDied = true;
|
||||||
@@ -463,8 +463,8 @@ public:
|
|||||||
if (Unit* Whitemane = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_WHITEMANE)))
|
if (Unit* Whitemane = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_WHITEMANE)))
|
||||||
{
|
{
|
||||||
//Incase wipe during phase that mograine fake death
|
//Incase wipe during phase that mograine fake death
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
|
me->RemoveAurasDueToSpell(SPELL_PERMANENT_FEIGN_DEATH);
|
||||||
me->CastSpell(me, SPELL_RETRIBUTION_AURA, true);
|
me->CastSpell(me, SPELL_RETRIBUTION_AURA, true);
|
||||||
me->CastSpell(Whitemane, SPELL_LAY_ON_HANDS, true);
|
me->CastSpell(Whitemane, SPELL_LAY_ON_HANDS, true);
|
||||||
|
|||||||
@@ -112,9 +112,9 @@ public:
|
|||||||
events2.ScheduleEvent(INTRO_1, 1000);
|
events2.ScheduleEvent(INTRO_1, 1000);
|
||||||
me->SetDisableGravity(true);
|
me->SetDisableGravity(true);
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); // for some reason he aggroes if we don't have this.
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC); // for some reason he aggroes if we don't have this.
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); // might not be needed, but guardians and stuff like that could mess up.
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC); // might not be needed, but guardians and stuff like that could mess up.
|
||||||
}
|
}
|
||||||
|
|
||||||
void MovementInform(uint32 type, uint32 id) override
|
void MovementInform(uint32 type, uint32 id) override
|
||||||
@@ -153,9 +153,9 @@ public:
|
|||||||
case INTRO_5:
|
case INTRO_5:
|
||||||
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
|
me->HandleEmoteCommand(EMOTE_ONESHOT_ROAR);
|
||||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_KIRTONOS_STAFF));
|
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_KIRTONOS_STAFF));
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
break;
|
break;
|
||||||
case INTRO_6:
|
case INTRO_6:
|
||||||
|
|||||||
@@ -139,7 +139,7 @@ public:
|
|||||||
})
|
})
|
||||||
.Schedule(12s, [this](TaskContext context)
|
.Schedule(12s, [this](TaskContext context)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
_phase = PHASE_COMBAT;
|
_phase = PHASE_COMBAT;
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
|
|
||||||
@@ -185,7 +185,7 @@ public:
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
me->SetFaction(FACTION_MONSTER);
|
me->SetFaction(FACTION_MONSTER);
|
||||||
summons.DoAction(ACTION_START_EVENT);
|
summons.DoAction(ACTION_START_EVENT);
|
||||||
}
|
}
|
||||||
@@ -203,7 +203,7 @@ public:
|
|||||||
_isDead = true;
|
_isDead = true;
|
||||||
me->RemoveAurasDueToSpell(SPELL_ALLURING_PERFUME);
|
me->RemoveAurasDueToSpell(SPELL_ALLURING_PERFUME);
|
||||||
DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH, true);
|
DoCastSelf(SPELL_PERMANENT_FEIGN_DEATH, true);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Talk(SAY_HUMMEL_DEATH);
|
Talk(SAY_HUMMEL_DEATH);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -231,7 +231,7 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
_scheduler.CancelAll();
|
_scheduler.CancelAll();
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
instance->SetBossState(DATA_APOTHECARY_HUMMEL, DONE);
|
instance->SetBossState(DATA_APOTHECARY_HUMMEL, DONE);
|
||||||
|
|
||||||
Map::PlayerList const& players = me->GetMap()->GetPlayers();
|
Map::PlayerList const& players = me->GetMap()->GetPlayers();
|
||||||
@@ -293,13 +293,13 @@ struct npc_apothecary_genericAI : public ScriptedAI
|
|||||||
{
|
{
|
||||||
if (action == ACTION_START_EVENT)
|
if (action == ACTION_START_EVENT)
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
me->SetFaction(FACTION_MONSTER);
|
me->SetFaction(FACTION_MONSTER);
|
||||||
me->GetMotionMaster()->MovePoint(1, _movePos);
|
me->GetMotionMaster()->MovePoint(1, _movePos);
|
||||||
}
|
}
|
||||||
else if (action == ACTION_START_FIGHT)
|
else if (action == ACTION_START_FIGHT)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ struct boss_jarien : public BossAI
|
|||||||
});
|
});
|
||||||
|
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
_talked = false;
|
_talked = false;
|
||||||
_phase = PHASE_TALK;
|
_phase = PHASE_TALK;
|
||||||
}
|
}
|
||||||
@@ -145,7 +145,7 @@ struct boss_jarien : public BossAI
|
|||||||
_talked = true;
|
_talked = true;
|
||||||
_phase = PHASE_FIGHT;
|
_phase = PHASE_FIGHT;
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -234,7 +234,7 @@ struct boss_sothos : public BossAI
|
|||||||
});
|
});
|
||||||
|
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
_talked = false;
|
_talked = false;
|
||||||
_phase = PHASE_TALK;
|
_phase = PHASE_TALK;
|
||||||
}
|
}
|
||||||
@@ -261,7 +261,7 @@ struct boss_sothos : public BossAI
|
|||||||
_talked = true;
|
_talked = true;
|
||||||
_phase = PHASE_FIGHT;
|
_phase = PHASE_FIGHT;
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
})
|
})
|
||||||
.Schedule(3s, [this](TaskContext /*context*/)
|
.Schedule(3s, [this](TaskContext /*context*/)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
case NPC_SHADE_OF_ERANIKUS:
|
case NPC_SHADE_OF_ERANIKUS:
|
||||||
_shadeOfEranikusGUID = creature->GetGUID();
|
_shadeOfEranikusGUID = creature->GetGUID();
|
||||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
creature->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -66,7 +66,7 @@ public:
|
|||||||
if (unit->GetEntry() == NPC_JAMMAL_AN_THE_PROPHET)
|
if (unit->GetEntry() == NPC_JAMMAL_AN_THE_PROPHET)
|
||||||
{
|
{
|
||||||
if (Creature* cr = instance->GetCreature(_shadeOfEranikusGUID))
|
if (Creature* cr = instance->GetCreature(_shadeOfEranikusGUID))
|
||||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
cr->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -371,7 +371,7 @@ public:
|
|||||||
events.ScheduleEvent(EVENT_MAD_20, 7000);
|
events.ScheduleEvent(EVENT_MAD_20, 7000);
|
||||||
break;
|
break;
|
||||||
case EVENT_MAD_20:
|
case EVENT_MAD_20:
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
|
if (Creature* brutallus = ObjectAccessor::GetCreature(*me, instance->GetGuidData(NPC_BRUTALLUS)))
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -145,7 +145,7 @@ public:
|
|||||||
if (param == ACTION_START_EVENT)
|
if (param == ACTION_START_EVENT)
|
||||||
{
|
{
|
||||||
me->SetVisible(true);
|
me->SetVisible(true);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
events2.ScheduleEvent(EVENT_INTRO_1, 3000);
|
events2.ScheduleEvent(EVENT_INTRO_1, 3000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -153,7 +153,7 @@ public:
|
|||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
BossAI::Reset();
|
BossAI::Reset();
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->SetDisableGravity(false);
|
me->SetDisableGravity(false);
|
||||||
events2.Reset();
|
events2.Reset();
|
||||||
@@ -163,7 +163,7 @@ public:
|
|||||||
void EnterCombat(Unit* who) override
|
void EnterCombat(Unit* who) override
|
||||||
{
|
{
|
||||||
BossAI::EnterCombat(who);
|
BossAI::EnterCombat(who);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
if (events.Empty() && events2.Empty())
|
if (events.Empty() && events2.Empty())
|
||||||
events2.ScheduleEvent(EVENT_INTRO_2, 3000);
|
events2.ScheduleEvent(EVENT_INTRO_2, 3000);
|
||||||
}
|
}
|
||||||
@@ -262,7 +262,7 @@ public:
|
|||||||
events.ScheduleEvent(EVENT_LAND, 3000, 1);
|
events.ScheduleEvent(EVENT_LAND, 3000, 1);
|
||||||
events.ScheduleEvent(EVENT_SPELL_BERSERK, 600000);
|
events.ScheduleEvent(EVENT_SPELL_BERSERK, 600000);
|
||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->CastSpell(me, SPELL_NOXIOUS_FUMES, true);
|
me->CastSpell(me, SPELL_NOXIOUS_FUMES, true);
|
||||||
me->GetMotionMaster()->MovePoint(POINT_MISC, 1472.18f, 603.38f, 34.0f, false, true);
|
me->GetMotionMaster()->MovePoint(POINT_MISC, 1472.18f, 603.38f, 34.0f, false, true);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ public:
|
|||||||
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
||||||
me->SetDisableGravity(false);
|
me->SetDisableGravity(false);
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE + UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
events2.Reset();
|
events2.Reset();
|
||||||
|
|
||||||
sathBanished = false;
|
sathBanished = false;
|
||||||
@@ -240,7 +240,7 @@ public:
|
|||||||
me->RemoveAllAuras();
|
me->RemoveAllAuras();
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->CombatStop();
|
me->CombatStop();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
events2.ScheduleEvent(EVENT_TALK_GOOD_2, 1000);
|
events2.ScheduleEvent(EVENT_TALK_GOOD_2, 1000);
|
||||||
break;
|
break;
|
||||||
@@ -269,7 +269,7 @@ public:
|
|||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->CombatStop();
|
me->CombatStop();
|
||||||
me->RemoveAllAuras();
|
me->RemoveAllAuras();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
Talk(SAY_EVIL_ENRAGE);
|
Talk(SAY_EVIL_ENRAGE);
|
||||||
events2.ScheduleEvent(EVENT_TALK_BAD_2, 3000);
|
events2.ScheduleEvent(EVENT_TALK_BAD_2, 3000);
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -293,7 +293,7 @@ public:
|
|||||||
void InitializeAI() override
|
void InitializeAI() override
|
||||||
{
|
{
|
||||||
ScriptedAI::InitializeAI();
|
ScriptedAI::InitializeAI();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
|
|
||||||
phase = PHASE_NORMAL;
|
phase = PHASE_NORMAL;
|
||||||
events.Reset();
|
events.Reset();
|
||||||
@@ -331,7 +331,7 @@ public:
|
|||||||
me->RemoveAllAuras();
|
me->RemoveAllAuras();
|
||||||
me->DeleteThreatList();
|
me->DeleteThreatList();
|
||||||
me->SetRegeneratingHealth(false);
|
me->SetRegeneratingHealth(false);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->HandleEmoteCommand(EMOTE_ONESHOT_DROWN);
|
me->HandleEmoteCommand(EMOTE_ONESHOT_DROWN);
|
||||||
me->resetAttackTimer();
|
me->resetAttackTimer();
|
||||||
events.Reset();
|
events.Reset();
|
||||||
@@ -421,7 +421,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
case EVENT_INIT_FIGHT:
|
case EVENT_INIT_FIGHT:
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
return;
|
return;
|
||||||
case EVENT_TEXT_SPEACH11:
|
case EVENT_TEXT_SPEACH11:
|
||||||
@@ -478,7 +478,7 @@ public:
|
|||||||
{
|
{
|
||||||
anveena->CastSpell(anveena, SPELL_SACRIFICE_OF_ANVEENA, true);
|
anveena->CastSpell(anveena, SPELL_SACRIFICE_OF_ANVEENA, true);
|
||||||
me->CastSpell(me, SPELL_CUSTOM_08_STATE, true);
|
me->CastSpell(me, SPELL_CUSTOM_08_STATE, true);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
me->SetUnitFlag(UNIT_FLAG_PACIFIED);
|
||||||
events.DelayEvents(7001);
|
events.DelayEvents(7001);
|
||||||
events2.ScheduleEvent(EVENT_RESTORE_MELEE, 7000);
|
events2.ScheduleEvent(EVENT_RESTORE_MELEE, 7000);
|
||||||
}
|
}
|
||||||
@@ -486,7 +486,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
case EVENT_RESTORE_MELEE:
|
case EVENT_RESTORE_MELEE:
|
||||||
me->RemoveAurasDueToSpell(SPELL_CUSTOM_08_STATE);
|
me->RemoveAurasDueToSpell(SPELL_CUSTOM_08_STATE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
me->RemoveUnitFlag(UNIT_FLAG_PACIFIED);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -82,7 +82,7 @@ public:
|
|||||||
{
|
{
|
||||||
BossAI::Reset();
|
BossAI::Reset();
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetVisible(true);
|
me->SetVisible(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -102,9 +102,9 @@ public:
|
|||||||
if (damage >= me->GetHealth())
|
if (damage >= me->GetHealth())
|
||||||
{
|
{
|
||||||
damage = 0;
|
damage = 0;
|
||||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE))
|
if (!me->HasUnitFlag(UNIT_FLAG_NOT_SELECTABLE))
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->RemoveAllAuras();
|
me->RemoveAllAuras();
|
||||||
me->CastSpell(me, SPELL_OPEN_ALL_PORTALS, true);
|
me->CastSpell(me, SPELL_OPEN_ALL_PORTALS, true);
|
||||||
events.ScheduleEvent(EVENT_SUMMON_ENTROPIUS, 7000);
|
events.ScheduleEvent(EVENT_SUMMON_ENTROPIUS, 7000);
|
||||||
|
|||||||
@@ -201,14 +201,14 @@ public:
|
|||||||
{
|
{
|
||||||
Creature* target = GetUnitOwner()->ToCreature();
|
Creature* target = GetUnitOwner()->ToCreature();
|
||||||
target->SetReactState(REACT_PASSIVE);
|
target->SetReactState(REACT_PASSIVE);
|
||||||
target->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
target->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||||
{
|
{
|
||||||
Creature* target = GetUnitOwner()->ToCreature();
|
Creature* target = GetUnitOwner()->ToCreature();
|
||||||
target->SetReactState(REACT_AGGRESSIVE);
|
target->SetReactState(REACT_AGGRESSIVE);
|
||||||
target->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
target->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Register() override
|
void Register() override
|
||||||
|
|||||||
@@ -189,7 +189,7 @@ public:
|
|||||||
trigger->SetFaction(FACTION_FRIENDLY);
|
trigger->SetFaction(FACTION_FRIENDLY);
|
||||||
trigger->SetMaxHealth(100000);
|
trigger->SetMaxHealth(100000);
|
||||||
trigger->SetHealth(100000);
|
trigger->SetHealth(100000);
|
||||||
trigger->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
trigger->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
if (Cloud)
|
if (Cloud)
|
||||||
Cloud->CastCustomSpell(trigger, /*43661*/SPELL_ZAP, &bp0, nullptr, nullptr, true, 0, 0, Cloud->GetGUID());
|
Cloud->CastCustomSpell(trigger, /*43661*/SPELL_ZAP, &bp0, nullptr, nullptr, true, 0, 0, Cloud->GetGUID());
|
||||||
}
|
}
|
||||||
@@ -284,7 +284,7 @@ public:
|
|||||||
Cloud->SetFaction(FACTION_FRIENDLY);
|
Cloud->SetFaction(FACTION_FRIENDLY);
|
||||||
Cloud->SetMaxHealth(9999999);
|
Cloud->SetMaxHealth(9999999);
|
||||||
Cloud->SetHealth(9999999);
|
Cloud->SetHealth(9999999);
|
||||||
Cloud->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
Cloud->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
StormCount = 1;
|
StormCount = 1;
|
||||||
events.ScheduleEvent(EVENT_ELECTRICAL_STORM, 60000); // 60 seconds(bosskillers)
|
events.ScheduleEvent(EVENT_ELECTRICAL_STORM, 60000); // 60 seconds(bosskillers)
|
||||||
|
|||||||
@@ -176,7 +176,7 @@ public:
|
|||||||
if (Unit* pLynx = ObjectAccessor::GetUnit(*me, LynxGUID))
|
if (Unit* pLynx = ObjectAccessor::GetUnit(*me, LynxGUID))
|
||||||
{
|
{
|
||||||
Talk(SAY_MERGE);
|
Talk(SAY_MERGE);
|
||||||
pLynx->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
pLynx->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
pLynx->GetMotionMaster()->Clear();
|
pLynx->GetMotionMaster()->Clear();
|
||||||
pLynx->GetMotionMaster()->MoveFollow(me, 0, 0);
|
pLynx->GetMotionMaster()->MoveFollow(me, 0, 0);
|
||||||
me->GetMotionMaster()->Clear();
|
me->GetMotionMaster()->Clear();
|
||||||
@@ -347,7 +347,7 @@ public:
|
|||||||
|
|
||||||
void AttackStart(Unit* who) override
|
void AttackStart(Unit* who) override
|
||||||
{
|
{
|
||||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||||
ScriptedAI::AttackStart(who);
|
ScriptedAI::AttackStart(who);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -438,7 +438,7 @@ public:
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
trigger->SetDisplayId(11686);
|
trigger->SetDisplayId(11686);
|
||||||
trigger->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
trigger->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
trigger->CastSpell(target, SPELL_SIPHON_SOUL, true);
|
trigger->CastSpell(target, SPELL_SIPHON_SOUL, true);
|
||||||
trigger->GetMotionMaster()->MoveChase(me);
|
trigger->GetMotionMaster()->MoveChase(me);
|
||||||
|
|
||||||
|
|||||||
@@ -274,9 +274,9 @@ public:
|
|||||||
{
|
{
|
||||||
if (Unit* FireBomb = ObjectAccessor::GetUnit(*me, FireBombGUIDs[BombCount]))
|
if (Unit* FireBomb = ObjectAccessor::GetUnit(*me, FireBombGUIDs[BombCount]))
|
||||||
{
|
{
|
||||||
FireBomb->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
FireBomb->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
DoCast(FireBomb, SPELL_FIRE_BOMB_THROW, true);
|
DoCast(FireBomb, SPELL_FIRE_BOMB_THROW, true);
|
||||||
FireBomb->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
FireBomb->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
++BombCount;
|
++BombCount;
|
||||||
if (BombCount == 40)
|
if (BombCount == 40)
|
||||||
|
|||||||
@@ -117,8 +117,8 @@ public:
|
|||||||
{
|
{
|
||||||
if (MoveEvent)
|
if (MoveEvent)
|
||||||
{
|
{
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
inMove = false;
|
inMove = false;
|
||||||
waitTimer = 0;
|
waitTimer = 0;
|
||||||
me->SetSpeed(MOVE_RUN, 2);
|
me->SetSpeed(MOVE_RUN, 2);
|
||||||
@@ -268,8 +268,8 @@ public:
|
|||||||
|
|
||||||
Talk(SAY_WAVE4);
|
Talk(SAY_WAVE4);
|
||||||
|
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
|
||||||
MoveEvent = false;
|
MoveEvent = false;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -269,8 +269,8 @@ public:
|
|||||||
if (creature)
|
if (creature)
|
||||||
{
|
{
|
||||||
creature->CastSpell(creature, SPELL_SPIRIT_AURA, true);
|
creature->CastSpell(creature, SPELL_SPIRIT_AURA, true);
|
||||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
creature->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
creature->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
SpiritGUID[i] = creature->GetGUID();
|
SpiritGUID[i] = creature->GetGUID();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -336,7 +336,7 @@ public:
|
|||||||
{
|
{
|
||||||
Vortex->CastSpell(Vortex, SPELL_CYCLONE_PASSIVE, true);
|
Vortex->CastSpell(Vortex, SPELL_CYCLONE_PASSIVE, true);
|
||||||
Vortex->CastSpell(Vortex, SPELL_CYCLONE_VISUAL, true);
|
Vortex->CastSpell(Vortex, SPELL_CYCLONE_VISUAL, true);
|
||||||
Vortex->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
Vortex->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Vortex->SetSpeed(MOVE_RUN, 1.0f);
|
Vortex->SetSpeed(MOVE_RUN, 1.0f);
|
||||||
Vortex->AI()->AttackStart(SelectTarget(SelectTargetMethod::Random, 0));
|
Vortex->AI()->AttackStart(SelectTarget(SelectTargetMethod::Random, 0));
|
||||||
DoZoneInCombat(Vortex);
|
DoZoneInCombat(Vortex);
|
||||||
|
|||||||
@@ -194,7 +194,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (Unit* Hostage = i_pl->SummonCreature(HostageInfo[num].npc, HostageInfo[num].x, HostageInfo[num].y, HostageInfo[num].z, HostageInfo[num].o, TEMPSUMMON_DEAD_DESPAWN, 0))
|
if (Unit* Hostage = i_pl->SummonCreature(HostageInfo[num].npc, HostageInfo[num].x, HostageInfo[num].y, HostageInfo[num].z, HostageInfo[num].o, TEMPSUMMON_DEAD_DESPAWN, 0))
|
||||||
{
|
{
|
||||||
Hostage->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
Hostage->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
Hostage->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
Hostage->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -724,13 +724,13 @@ public:
|
|||||||
if (ptarget->GetPositionX() > 120)
|
if (ptarget->GetPositionX() > 120)
|
||||||
{
|
{
|
||||||
ptarget->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_SPEAR));
|
ptarget->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 0, uint32(WEAPON_SPEAR));
|
||||||
ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
ptarget->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
ptarget->SetReactState(REACT_PASSIVE);
|
ptarget->SetReactState(REACT_PASSIVE);
|
||||||
ptarget->AI()->SetData(0, 1);
|
ptarget->AI()->SetData(0, 1);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
ptarget->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
ptarget->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
ptarget->SetReactState(REACT_PASSIVE);
|
ptarget->SetReactState(REACT_PASSIVE);
|
||||||
ptarget->AI()->SetData(0, 2);
|
ptarget->AI()->SetData(0, 2);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -233,7 +233,7 @@ public:
|
|||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
DoResetThreat();
|
DoResetThreat();
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
DoCast(me, SPELL_VANISH_VISUAL);
|
DoCast(me, SPELL_VANISH_VISUAL);
|
||||||
DoCast(me, SPELL_VANISH);
|
DoCast(me, SPELL_VANISH);
|
||||||
events.ScheduleEvent(EVENT_VANISH, 1000, 0, PHASE_ONE);
|
events.ScheduleEvent(EVENT_VANISH, 1000, 0, PHASE_ONE);
|
||||||
@@ -252,7 +252,7 @@ public:
|
|||||||
break;
|
break;
|
||||||
case EVENT_VISIBLE:
|
case EVENT_VISIBLE:
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
me->RemoveAura(SPELL_SUPER_INVIS);
|
me->RemoveAura(SPELL_SUPER_INVIS);
|
||||||
|
|||||||
@@ -220,7 +220,7 @@ public:
|
|||||||
void Reset() override
|
void Reset() override
|
||||||
{
|
{
|
||||||
Bomb_Timer = 2000;
|
Bomb_Timer = 2000;
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->AddUnitState(UNIT_STATE_ROOT);
|
me->AddUnitState(UNIT_STATE_ROOT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ public:
|
|||||||
|
|
||||||
killCount = 0;
|
killCount = 0;
|
||||||
me->RemoveAurasDueToSpell(SPELL_FRENZY);
|
me->RemoveAurasDueToSpell(SPELL_FRENZY);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
summons.DespawnAll();
|
summons.DespawnAll();
|
||||||
instance->SetBossState(DATA_OHGAN, NOT_STARTED);
|
instance->SetBossState(DATA_OHGAN, NOT_STARTED);
|
||||||
me->Mount(MODEL_OHGAN_MOUNT);
|
me->Mount(MODEL_OHGAN_MOUNT);
|
||||||
@@ -214,7 +214,7 @@ public:
|
|||||||
events.ScheduleEvent(EVENT_CHECK_START, 1000);
|
events.ScheduleEvent(EVENT_CHECK_START, 1000);
|
||||||
break;
|
break;
|
||||||
case EVENT_STARTED:
|
case EVENT_STARTED:
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -91,7 +91,7 @@ public:
|
|||||||
SetEquipmentSlots(false, EQUIP_UNEQUIP, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE);
|
SetEquipmentSlots(false, EQUIP_UNEQUIP, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE);
|
||||||
me->SetDisplayId(11686);
|
me->SetDisplayId(11686);
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Invisible = true;
|
Invisible = true;
|
||||||
|
|
||||||
Invisible_Timer = urand(15000, 30000);
|
Invisible_Timer = urand(15000, 30000);
|
||||||
@@ -124,7 +124,7 @@ public:
|
|||||||
me->SetDisplayId(15268);
|
me->SetDisplayId(15268);
|
||||||
SetEquipmentSlots(false, EQUIP_ID_MAIN_HAND, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE);
|
SetEquipmentSlots(false, EQUIP_ID_MAIN_HAND, EQUIP_NO_CHANGE, EQUIP_NO_CHANGE);
|
||||||
|
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Invisible = false;
|
Invisible = false;
|
||||||
|
|
||||||
Visible_Timer = 4000;
|
Visible_Timer = 4000;
|
||||||
|
|||||||
@@ -146,7 +146,7 @@ public:
|
|||||||
DoCast(me, SPELL_TIGER_FORM); // SPELL_AURA_TRANSFORM
|
DoCast(me, SPELL_TIGER_FORM); // SPELL_AURA_TRANSFORM
|
||||||
me->SetObjectScale(2.00f);
|
me->SetObjectScale(2.00f);
|
||||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
/*
|
/*
|
||||||
const CreatureTemplate* cinfo = me->GetCreatureTemplate();
|
const CreatureTemplate* cinfo = me->GetCreatureTemplate();
|
||||||
me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40)));
|
me->SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, (cinfo->mindmg +((cinfo->mindmg/100) * 40)));
|
||||||
@@ -175,7 +175,7 @@ public:
|
|||||||
{
|
{
|
||||||
pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pLorKhan->SetFaction(FACTION_MONSTER);
|
pLorKhan->SetFaction(FACTION_MONSTER);
|
||||||
pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
pLorKhan->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
pLorKhan->SetFullHealth();
|
pLorKhan->SetFullHealth();
|
||||||
instance->SetData(DATA_LORKHAN, DONE);
|
instance->SetData(DATA_LORKHAN, DONE);
|
||||||
}
|
}
|
||||||
@@ -188,7 +188,7 @@ public:
|
|||||||
{
|
{
|
||||||
pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pZath->SetFaction(FACTION_MONSTER);
|
pZath->SetFaction(FACTION_MONSTER);
|
||||||
pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
pZath->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
pZath->SetFullHealth();
|
pZath->SetFullHealth();
|
||||||
instance->SetBossState(DATA_ZATH, DONE);
|
instance->SetBossState(DATA_ZATH, DONE);
|
||||||
}
|
}
|
||||||
@@ -237,7 +237,7 @@ public:
|
|||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT);
|
||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
instance->SetBossState(DATA_THEKAL, SPECIAL);
|
instance->SetBossState(DATA_THEKAL, SPECIAL);
|
||||||
@@ -290,7 +290,7 @@ public:
|
|||||||
instance->SetBossState(DATA_LORKHAN, NOT_STARTED);
|
instance->SetBossState(DATA_LORKHAN, NOT_STARTED);
|
||||||
|
|
||||||
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* /*who*/) override
|
void EnterCombat(Unit* /*who*/) override
|
||||||
@@ -360,7 +360,7 @@ public:
|
|||||||
if (Unit* pThekal = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THEKAL)))
|
if (Unit* pThekal = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THEKAL)))
|
||||||
{
|
{
|
||||||
pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
pThekal->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
pThekal->SetFaction(FACTION_MONSTER);
|
pThekal->SetFaction(FACTION_MONSTER);
|
||||||
pThekal->SetFullHealth();
|
pThekal->SetFullHealth();
|
||||||
}
|
}
|
||||||
@@ -372,7 +372,7 @@ public:
|
|||||||
if (Unit* pZath = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_ZATH)))
|
if (Unit* pZath = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_ZATH)))
|
||||||
{
|
{
|
||||||
pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
pZath->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pZath->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
pZath->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
pZath->SetFaction(FACTION_MONSTER);
|
pZath->SetFaction(FACTION_MONSTER);
|
||||||
pZath->SetFullHealth();
|
pZath->SetFullHealth();
|
||||||
}
|
}
|
||||||
@@ -387,7 +387,7 @@ public:
|
|||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT);
|
||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
@@ -448,7 +448,7 @@ public:
|
|||||||
instance->SetBossState(DATA_ZATH, NOT_STARTED);
|
instance->SetBossState(DATA_ZATH, NOT_STARTED);
|
||||||
|
|
||||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* /*who*/) override
|
void EnterCombat(Unit* /*who*/) override
|
||||||
@@ -513,7 +513,7 @@ public:
|
|||||||
if (Unit* pLorKhan = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_LORKHAN)))
|
if (Unit* pLorKhan = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_LORKHAN)))
|
||||||
{
|
{
|
||||||
pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
pLorKhan->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pLorKhan->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
pLorKhan->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
pLorKhan->SetFaction(FACTION_MONSTER);
|
pLorKhan->SetFaction(FACTION_MONSTER);
|
||||||
pLorKhan->SetFullHealth();
|
pLorKhan->SetFullHealth();
|
||||||
}
|
}
|
||||||
@@ -525,7 +525,7 @@ public:
|
|||||||
if (Unit* pThekal = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THEKAL)))
|
if (Unit* pThekal = ObjectAccessor::GetUnit(*me, instance->GetGuidData(DATA_THEKAL)))
|
||||||
{
|
{
|
||||||
pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
pThekal->SetUInt32Value(UNIT_FIELD_BYTES_1, 0);
|
||||||
pThekal->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
pThekal->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
pThekal->SetFaction(FACTION_MONSTER);
|
pThekal->SetFaction(FACTION_MONSTER);
|
||||||
pThekal->SetFullHealth();
|
pThekal->SetFullHealth();
|
||||||
}
|
}
|
||||||
@@ -540,7 +540,7 @@ public:
|
|||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE_PERCENT);
|
||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_DAMAGE);
|
||||||
me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH);
|
me->RemoveAurasByType(SPELL_AURA_PERIODIC_LEECH);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
me->SetStandState(UNIT_STAND_STATE_SLEEP);
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
me->AttackStop();
|
me->AttackStop();
|
||||||
|
|||||||
@@ -175,7 +175,7 @@ public:
|
|||||||
float z = 159.65f;
|
float z = 159.65f;
|
||||||
creature->SetWalk(true);
|
creature->SetWalk(true);
|
||||||
creature->GetMotionMaster()->MovePoint(0, x, y, z);
|
creature->GetMotionMaster()->MovePoint(0, x, y, z);
|
||||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PLAYER_CONTROLLED);
|
creature->SetUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -77,7 +77,7 @@ public:
|
|||||||
{
|
{
|
||||||
_IsByOutrunner = false;
|
_IsByOutrunner = false;
|
||||||
spawnId = 0;
|
spawnId = 0;
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Reset() override
|
void Reset() override
|
||||||
@@ -136,7 +136,7 @@ public:
|
|||||||
|
|
||||||
void sQuestAccept(Player* player, Quest const* quest) override
|
void sQuestAccept(Player* player, Quest const* quest) override
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||||
if (quest->GetQuestId() == QUEST_RINJI_TRAPPED)
|
if (quest->GetQuestId() == QUEST_RINJI_TRAPPED)
|
||||||
{
|
{
|
||||||
if (GameObject* go = me->FindNearestGameObject(GO_RINJI_CAGE, INTERACTION_DISTANCE))
|
if (GameObject* go = me->FindNearestGameObject(GO_RINJI_CAGE, INTERACTION_DISTANCE))
|
||||||
|
|||||||
@@ -372,7 +372,7 @@ public:
|
|||||||
continue;
|
continue;
|
||||||
else
|
else
|
||||||
c->AI()->Talk(SAY_MORLEN_4);
|
c->AI()->Talk(SAY_MORLEN_4);
|
||||||
c->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
c->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
c->AI()->AttackStart(me);
|
c->AI()->AttackStart(me);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public:
|
|||||||
phase = 0;
|
phase = 0;
|
||||||
mockingBlowTimer = 5000;
|
mockingBlowTimer = 5000;
|
||||||
shieldBashTimer = 8000;
|
shieldBashTimer = 8000;
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void sQuestAccept(Player* player, Quest const* quest) override
|
void sQuestAccept(Player* player, Quest const* quest) override
|
||||||
@@ -62,7 +62,7 @@ public:
|
|||||||
{
|
{
|
||||||
Talk(SAY_CORPORAL_1, player);
|
Talk(SAY_CORPORAL_1, player);
|
||||||
npc_escortAI::Start(true, false, player->GetGUID(), quest);
|
npc_escortAI::Start(true, false, player->GetGUID(), quest);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
|
me->SetFaction(FACTION_ESCORTEE_N_NEUTRAL_ACTIVE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -53,7 +53,7 @@ public:
|
|||||||
if (quest->GetQuestId() == QUEST_590)
|
if (quest->GetQuestId() == QUEST_590)
|
||||||
{
|
{
|
||||||
creature->SetFaction(FACTION_ENEMY);
|
creature->SetFaction(FACTION_ENEMY);
|
||||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
creature->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
CAST_AI(npc_calvin_montague::npc_calvin_montagueAI, creature->AI())->AttackStart(player);
|
CAST_AI(npc_calvin_montague::npc_calvin_montagueAI, creature->AI())->AttackStart(player);
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
@@ -80,8 +80,8 @@ public:
|
|||||||
|
|
||||||
me->RestoreFaction();
|
me->RestoreFaction();
|
||||||
|
|
||||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC))
|
if (!me->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_PC))
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* /*who*/) override { }
|
void EnterCombat(Unit* /*who*/) override { }
|
||||||
@@ -104,7 +104,7 @@ public:
|
|||||||
uiDamage = 0;
|
uiDamage = 0;
|
||||||
|
|
||||||
me->RestoreFaction();
|
me->RestoreFaction();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
me->CombatStop(true);
|
me->CombatStop(true);
|
||||||
|
|
||||||
m_uiPhase = 1;
|
m_uiPhase = 1;
|
||||||
|
|||||||
@@ -1113,7 +1113,7 @@ public:
|
|||||||
switch (summonedCreature->GetEntry())
|
switch (summonedCreature->GetEntry())
|
||||||
{
|
{
|
||||||
case NPC_GENERATOR:
|
case NPC_GENERATOR:
|
||||||
summonedCreature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
summonedCreature->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_WRYNN_BUFF, true);
|
summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_WRYNN_BUFF, true);
|
||||||
summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
|
summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
|
||||||
summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
|
summonedCreature->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
|
||||||
@@ -1416,8 +1416,8 @@ public:
|
|||||||
{
|
{
|
||||||
thrallGUID = temp->GetGUID();
|
thrallGUID = temp->GetGUID();
|
||||||
temp->SetReactState(REACT_PASSIVE);
|
temp->SetReactState(REACT_PASSIVE);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp->CastSpell(temp, SPELL_THRALL_BUFF);
|
temp->CastSpell(temp, SPELL_THRALL_BUFF);
|
||||||
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||||
}
|
}
|
||||||
@@ -1425,8 +1425,8 @@ public:
|
|||||||
{
|
{
|
||||||
sylvanasGUID = temp->GetGUID();
|
sylvanasGUID = temp->GetGUID();
|
||||||
temp->SetReactState(REACT_PASSIVE);
|
temp->SetReactState(REACT_PASSIVE);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||||
}
|
}
|
||||||
for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
|
for (uint8 i = 0; i < HORDE_FORCE_MAXCOUNT; ++i)
|
||||||
@@ -1435,8 +1435,8 @@ public:
|
|||||||
{
|
{
|
||||||
hordeForcesGUID[i] = temp->GetGUID();
|
hordeForcesGUID[i] = temp->GetGUID();
|
||||||
temp->SetReactState(REACT_PASSIVE);
|
temp->SetReactState(REACT_PASSIVE);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1447,8 +1447,8 @@ public:
|
|||||||
if (Unit* temp = me->SummonCreature(NPC_SW_SOLDIER, AllianceSpawn[i + 25].x, AllianceSpawn[i + 25].y, AllianceSpawn[i + 25].z, AllianceSpawn[i + 25].o, TEMPSUMMON_MANUAL_DESPAWN))
|
if (Unit* temp = me->SummonCreature(NPC_SW_SOLDIER, AllianceSpawn[i + 25].x, AllianceSpawn[i + 25].y, AllianceSpawn[i + 25].z, AllianceSpawn[i + 25].o, TEMPSUMMON_MANUAL_DESPAWN))
|
||||||
{
|
{
|
||||||
allianceForcesGUID[i] = temp->GetGUID();
|
allianceForcesGUID[i] = temp->GetGUID();
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1472,7 +1472,7 @@ public:
|
|||||||
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
|
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
|
||||||
{
|
{
|
||||||
jaina->GetMotionMaster()->Clear();
|
jaina->GetMotionMaster()->Clear();
|
||||||
jaina->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
jaina->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
jaina->SetReactState(REACT_AGGRESSIVE);
|
jaina->SetReactState(REACT_AGGRESSIVE);
|
||||||
}
|
}
|
||||||
SetHoldState(true);
|
SetHoldState(true);
|
||||||
@@ -1816,8 +1816,8 @@ public:
|
|||||||
case 53:
|
case 53:
|
||||||
if (Creature* putress = ObjectAccessor::GetCreature(*me, putressGUID))
|
if (Creature* putress = ObjectAccessor::GetCreature(*me, putressGUID))
|
||||||
{
|
{
|
||||||
putress->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
putress->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
putress->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
putress->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
putress->AddThreat(me, 100.0f);
|
putress->AddThreat(me, 100.0f);
|
||||||
me->AddThreat(putress, 100.0f);
|
me->AddThreat(putress, 100.0f);
|
||||||
putress->RemoveAura(SPELL_PUTRESS_CASTING_STATE);
|
putress->RemoveAura(SPELL_PUTRESS_CASTING_STATE);
|
||||||
@@ -1890,7 +1890,7 @@ public:
|
|||||||
case 66:
|
case 66:
|
||||||
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
|
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
|
||||||
jaina->AI()->Talk(JAINA_SAY_THRONE_1);
|
jaina->AI()->Talk(JAINA_SAY_THRONE_1);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
bStepping = false;
|
bStepping = false;
|
||||||
JumpToNextStep(0);
|
JumpToNextStep(0);
|
||||||
break;
|
break;
|
||||||
@@ -1903,8 +1903,8 @@ public:
|
|||||||
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
|
if (Creature* jaina = ObjectAccessor::GetCreature(*me, jainaGUID))
|
||||||
{
|
{
|
||||||
jaina->GetMotionMaster()->MovePoint(0, AllianceWP[8].x, AllianceWP[8].y, AllianceWP[8].z);
|
jaina->GetMotionMaster()->MovePoint(0, AllianceWP[8].x, AllianceWP[8].y, AllianceWP[8].z);
|
||||||
jaina->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
jaina->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
jaina->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
jaina->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
}
|
}
|
||||||
SetEscortPaused(false);
|
SetEscortPaused(false);
|
||||||
bStepping = false;
|
bStepping = false;
|
||||||
@@ -1929,12 +1929,12 @@ public:
|
|||||||
break;
|
break;
|
||||||
case 73:
|
case 73:
|
||||||
Talk(WRYNN_SAY_THRONE_9);
|
Talk(WRYNN_SAY_THRONE_9);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
if (Creature* thrall = ObjectAccessor::GetCreature(*me, thrallGUID))
|
if (Creature* thrall = ObjectAccessor::GetCreature(*me, thrallGUID))
|
||||||
{
|
{
|
||||||
thrall->SetReactState(REACT_AGGRESSIVE);
|
thrall->SetReactState(REACT_AGGRESSIVE);
|
||||||
thrall->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
thrall->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
thrall->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
thrall->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
thrall->AddThreat(me, 100.0f);
|
thrall->AddThreat(me, 100.0f);
|
||||||
me->AddThreat(thrall, 100.0f);
|
me->AddThreat(thrall, 100.0f);
|
||||||
thrall->AI()->AttackStart(me);
|
thrall->AI()->AttackStart(me);
|
||||||
@@ -1942,8 +1942,8 @@ public:
|
|||||||
if (Creature* sylvanas = ObjectAccessor::GetCreature(*me, sylvanasGUID))
|
if (Creature* sylvanas = ObjectAccessor::GetCreature(*me, sylvanasGUID))
|
||||||
{
|
{
|
||||||
sylvanas->SetReactState(REACT_AGGRESSIVE);
|
sylvanas->SetReactState(REACT_AGGRESSIVE);
|
||||||
sylvanas->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
sylvanas->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
sylvanas->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
sylvanas->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
sylvanas->AddThreat(me, 100.0f);
|
sylvanas->AddThreat(me, 100.0f);
|
||||||
sylvanas->AI()->AttackStart(me);
|
sylvanas->AI()->AttackStart(me);
|
||||||
me->AddThreat(sylvanas, 100.0f);
|
me->AddThreat(sylvanas, 100.0f);
|
||||||
@@ -1953,8 +1953,8 @@ public:
|
|||||||
if (Creature* temp = ObjectAccessor::GetCreature(*me, hordeForcesGUID[i]))
|
if (Creature* temp = ObjectAccessor::GetCreature(*me, hordeForcesGUID[i]))
|
||||||
{
|
{
|
||||||
temp->SetReactState(REACT_AGGRESSIVE);
|
temp->SetReactState(REACT_AGGRESSIVE);
|
||||||
temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
temp->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
|
for (uint8 i = 0; i < ALLIANCE_FORCE_MAXCOUNT; ++i)
|
||||||
@@ -1965,8 +1965,8 @@ public:
|
|||||||
{
|
{
|
||||||
temp->SetReactState(REACT_AGGRESSIVE);
|
temp->SetReactState(REACT_AGGRESSIVE);
|
||||||
temp2->SetReactState(REACT_AGGRESSIVE);
|
temp2->SetReactState(REACT_AGGRESSIVE);
|
||||||
temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
temp->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp2->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
temp2->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp->AddThreat(temp2, 100.0f);
|
temp->AddThreat(temp2, 100.0f);
|
||||||
temp->AI()->AttackStart(temp2);
|
temp->AI()->AttackStart(temp2);
|
||||||
temp2->AddThreat(temp, 100.0f);
|
temp2->AddThreat(temp, 100.0f);
|
||||||
@@ -2440,12 +2440,12 @@ public:
|
|||||||
summoned->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
summoned->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||||
break;
|
break;
|
||||||
case NPC_VARIMATHRAS_PORTAL:
|
case NPC_VARIMATHRAS_PORTAL:
|
||||||
summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
summoned->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
summoned->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
|
summoned->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
|
||||||
summoned->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
|
summoned->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
|
||||||
break;
|
break;
|
||||||
case NPC_CAVE_DUMMY:
|
case NPC_CAVE_DUMMY:
|
||||||
summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
summoned->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
summoned->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
|
summoned->ApplySpellImmune(0, IMMUNITY_ID, SPELL_THRALL_BUFF, true);
|
||||||
summoned->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
|
summoned->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
|
||||||
summoned->AddAura(SPELL_CYCLONE_FALL, summoned);
|
summoned->AddAura(SPELL_CYCLONE_FALL, summoned);
|
||||||
@@ -2560,7 +2560,7 @@ public:
|
|||||||
if (Creature* sylvanas = ObjectAccessor::GetCreature(*me, sylvanasfollowGUID))
|
if (Creature* sylvanas = ObjectAccessor::GetCreature(*me, sylvanasfollowGUID))
|
||||||
{
|
{
|
||||||
sylvanas->GetMotionMaster()->Clear();
|
sylvanas->GetMotionMaster()->Clear();
|
||||||
sylvanas->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
sylvanas->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
sylvanas->SetReactState(REACT_AGGRESSIVE);
|
sylvanas->SetReactState(REACT_AGGRESSIVE);
|
||||||
sylvanas->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
|
sylvanas->SetFaction(FACTION_ESCORT_N_NEUTRAL_ACTIVE);
|
||||||
sylvanas->GetMotionMaster()->MoveFollow(me, 1, M_PI * 0.1f);
|
sylvanas->GetMotionMaster()->MoveFollow(me, 1, M_PI * 0.1f);
|
||||||
@@ -2602,7 +2602,7 @@ public:
|
|||||||
if (Unit* temp = me->SummonCreature(NPC_VARIMATHRAS, ThrallSpawn[23].x, ThrallSpawn[23].y, ThrallSpawn[23].z, ThrallSpawn[23].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900 * IN_MILLISECONDS))
|
if (Unit* temp = me->SummonCreature(NPC_VARIMATHRAS, ThrallSpawn[23].x, ThrallSpawn[23].y, ThrallSpawn[23].z, ThrallSpawn[23].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 900 * IN_MILLISECONDS))
|
||||||
{
|
{
|
||||||
ValimathrasGUID = temp->GetGUID();
|
ValimathrasGUID = temp->GetGUID();
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
@@ -2725,7 +2725,7 @@ public:
|
|||||||
if (Unit* temp = me->SummonCreature(NPC_VARIMATHRAS, ThrallSpawn[63].x, ThrallSpawn[63].y, ThrallSpawn[63].z, ThrallSpawn[63].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 300 * IN_MILLISECONDS))
|
if (Unit* temp = me->SummonCreature(NPC_VARIMATHRAS, ThrallSpawn[63].x, ThrallSpawn[63].y, ThrallSpawn[63].z, ThrallSpawn[63].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 300 * IN_MILLISECONDS))
|
||||||
{
|
{
|
||||||
ValimathrasGUID = temp->GetGUID();
|
ValimathrasGUID = temp->GetGUID();
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case 13:
|
case 13:
|
||||||
@@ -2816,7 +2816,7 @@ public:
|
|||||||
if (Creature* temp = me->SummonCreature(NPC_VARIMATHRAS, ThrallSpawn[73].x, ThrallSpawn[73].y, ThrallSpawn[73].z, ThrallSpawn[73].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 1200 * IN_MILLISECONDS))
|
if (Creature* temp = me->SummonCreature(NPC_VARIMATHRAS, ThrallSpawn[73].x, ThrallSpawn[73].y, ThrallSpawn[73].z, ThrallSpawn[73].o, TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 1200 * IN_MILLISECONDS))
|
||||||
{
|
{
|
||||||
ValimathrasGUID = temp->GetGUID();
|
ValimathrasGUID = temp->GetGUID();
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp->CastSpell(me, SPELL_AURA_OF_VARIMATHRAS);
|
temp->CastSpell(me, SPELL_AURA_OF_VARIMATHRAS);
|
||||||
temp->CastSpell(me, SPELL_OPENING_LEGION_PORTALS);
|
temp->CastSpell(me, SPELL_OPENING_LEGION_PORTALS);
|
||||||
temp->AI()->Talk(SAY_CLOSE_DOOR);
|
temp->AI()->Talk(SAY_CLOSE_DOOR);
|
||||||
@@ -3667,7 +3667,7 @@ public:
|
|||||||
case 137:
|
case 137:
|
||||||
if (Creature* valimathras = ObjectAccessor::GetCreature(*me, ValimathrasGUID))
|
if (Creature* valimathras = ObjectAccessor::GetCreature(*me, ValimathrasGUID))
|
||||||
{
|
{
|
||||||
valimathras->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
valimathras->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
valimathras->RemoveAura(SPELL_AURA_OF_VARIMATHRAS);
|
valimathras->RemoveAura(SPELL_AURA_OF_VARIMATHRAS);
|
||||||
valimathras->RemoveAura(SPELL_OPENING_LEGION_PORTALS);
|
valimathras->RemoveAura(SPELL_OPENING_LEGION_PORTALS);
|
||||||
valimathras->AI()->Talk(SAY_VALIMATHRAS_ATTACK);
|
valimathras->AI()->Talk(SAY_VALIMATHRAS_ATTACK);
|
||||||
@@ -3736,8 +3736,8 @@ public:
|
|||||||
if (Creature* temp = me->SummonCreature(NPC_SW_SOLDIER, AllianceSpawn[i + 25].x, AllianceSpawn[i + 25].y, AllianceSpawn[i + 25].z, AllianceSpawn[i + 25].o, TEMPSUMMON_MANUAL_DESPAWN))
|
if (Creature* temp = me->SummonCreature(NPC_SW_SOLDIER, AllianceSpawn[i + 25].x, AllianceSpawn[i + 25].y, AllianceSpawn[i + 25].z, AllianceSpawn[i + 25].o, TEMPSUMMON_MANUAL_DESPAWN))
|
||||||
{
|
{
|
||||||
allianceForcesGUID[i] = temp->GetGUID();
|
allianceForcesGUID[i] = temp->GetGUID();
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
temp->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
temp->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
|
temp->ApplySpellImmune(0, IMMUNITY_ID, SPELL_SYLVANAS_BUFF, true);
|
||||||
temp->SetReactState(REACT_PASSIVE);
|
temp->SetReactState(REACT_PASSIVE);
|
||||||
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
temp->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||||
@@ -3746,8 +3746,8 @@ public:
|
|||||||
if (Creature* wrynn = me->SummonCreature(NPC_WRYNN, 1308.862f, 381.809f, -66.044243f, TEMPSUMMON_MANUAL_DESPAWN))
|
if (Creature* wrynn = me->SummonCreature(NPC_WRYNN, 1308.862f, 381.809f, -66.044243f, TEMPSUMMON_MANUAL_DESPAWN))
|
||||||
{
|
{
|
||||||
WrynnGUID = wrynn->GetGUID();
|
WrynnGUID = wrynn->GetGUID();
|
||||||
wrynn->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
wrynn->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
wrynn->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
wrynn->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
wrynn->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
wrynn->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||||
wrynn->SetReactState(REACT_PASSIVE);
|
wrynn->SetReactState(REACT_PASSIVE);
|
||||||
wrynn->GetMotionMaster()->MovePoint(0, 1302.543f, 359.472f, -67.295f, true);
|
wrynn->GetMotionMaster()->MovePoint(0, 1302.543f, 359.472f, -67.295f, true);
|
||||||
@@ -3755,8 +3755,8 @@ public:
|
|||||||
if (Creature* jaina = me->SummonCreature(NPC_JAINA, 1308.862f, 381.809f, -66.044243f, TEMPSUMMON_MANUAL_DESPAWN))
|
if (Creature* jaina = me->SummonCreature(NPC_JAINA, 1308.862f, 381.809f, -66.044243f, TEMPSUMMON_MANUAL_DESPAWN))
|
||||||
{
|
{
|
||||||
JainaGUID = jaina->GetGUID();
|
JainaGUID = jaina->GetGUID();
|
||||||
jaina->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
jaina->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
jaina->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
jaina->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
jaina->SetReactState(REACT_PASSIVE);
|
jaina->SetReactState(REACT_PASSIVE);
|
||||||
}
|
}
|
||||||
JumpToNextStep(6 * IN_MILLISECONDS);
|
JumpToNextStep(6 * IN_MILLISECONDS);
|
||||||
@@ -3784,11 +3784,11 @@ public:
|
|||||||
break;
|
break;
|
||||||
// Wrynn Fight
|
// Wrynn Fight
|
||||||
case 152:
|
case 152:
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
if (Creature* wrynn = ObjectAccessor::GetCreature(*me, WrynnGUID))
|
if (Creature* wrynn = ObjectAccessor::GetCreature(*me, WrynnGUID))
|
||||||
{
|
{
|
||||||
wrynn->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
|
wrynn->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
wrynn->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
wrynn->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
wrynn->SetReactState(REACT_AGGRESSIVE);
|
wrynn->SetReactState(REACT_AGGRESSIVE);
|
||||||
wrynn->AddThreat(me, 100.0f);
|
wrynn->AddThreat(me, 100.0f);
|
||||||
me->AddThreat(wrynn, 100.0f);
|
me->AddThreat(wrynn, 100.0f);
|
||||||
@@ -3799,7 +3799,7 @@ public:
|
|||||||
{
|
{
|
||||||
if (Creature* temp = ObjectAccessor::GetCreature(*me, allianceForcesGUID[i]))
|
if (Creature* temp = ObjectAccessor::GetCreature(*me, allianceForcesGUID[i]))
|
||||||
{
|
{
|
||||||
temp->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
temp->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
temp->SetReactState(REACT_AGGRESSIVE);
|
temp->SetReactState(REACT_AGGRESSIVE);
|
||||||
temp->AddThreat(me, 100.0f);
|
temp->AddThreat(me, 100.0f);
|
||||||
temp->AI()->AttackStart(me);
|
temp->AI()->AttackStart(me);
|
||||||
|
|||||||
@@ -1557,7 +1557,7 @@ struct npc_coren_direbrew : public ScriptedAI
|
|||||||
{
|
{
|
||||||
_events.Reset();
|
_events.Reset();
|
||||||
_summons.DespawnAll();
|
_summons.DespawnAll();
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
me->SetFaction(FACTION_FRIENDLY);
|
me->SetFaction(FACTION_FRIENDLY);
|
||||||
_events.SetPhase(PHASE_ALL);
|
_events.SetPhase(PHASE_ALL);
|
||||||
|
|
||||||
@@ -1596,7 +1596,7 @@ struct npc_coren_direbrew : public ScriptedAI
|
|||||||
if (action == ACTION_START_FIGHT)
|
if (action == ACTION_START_FIGHT)
|
||||||
{
|
{
|
||||||
_events.SetPhase(PHASE_ONE);
|
_events.SetPhase(PHASE_ONE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
|
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
|
|
||||||
@@ -1830,7 +1830,7 @@ struct npc_direbrew_antagonist : public ScriptedAI
|
|||||||
Talk(SAY_ANTAGONIST_2);
|
Talk(SAY_ANTAGONIST_2);
|
||||||
break;
|
break;
|
||||||
case ACTION_ANTAGONIST_HOSTILE:
|
case ACTION_ANTAGONIST_HOSTILE:
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||||
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
|
me->SetFaction(FACTION_GOBLIN_DARK_IRON_BAR_PATRON);
|
||||||
DoZoneInCombat();
|
DoZoneInCombat();
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -654,7 +654,7 @@ struct npc_hallows_end_soh : public ScriptedAI
|
|||||||
events.ScheduleEvent(3, 63000);
|
events.ScheduleEvent(3, 63000);
|
||||||
|
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
|
|
||||||
me->SetCanFly(true);
|
me->SetCanFly(true);
|
||||||
me->SetDisableGravity(true);
|
me->SetDisableGravity(true);
|
||||||
@@ -733,7 +733,7 @@ struct npc_hallows_end_soh : public ScriptedAI
|
|||||||
}
|
}
|
||||||
case 4:
|
case 4:
|
||||||
{
|
{
|
||||||
me->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
|
me->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
|
||||||
me->SetReactState(REACT_AGGRESSIVE);
|
me->SetReactState(REACT_AGGRESSIVE);
|
||||||
if (Unit* target = me->SelectNearestPlayer(30.0f))
|
if (Unit* target = me->SelectNearestPlayer(30.0f))
|
||||||
AttackStart(target);
|
AttackStart(target);
|
||||||
@@ -1038,7 +1038,7 @@ struct boss_headless_horseman : public ScriptedAI
|
|||||||
me->CastSpell(me, SPELL_HEAD_VISUAL, true);
|
me->CastSpell(me, SPELL_HEAD_VISUAL, true);
|
||||||
else if (point == 11)
|
else if (point == 11)
|
||||||
{
|
{
|
||||||
me->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
|
me->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
|
||||||
me->StopMoving();
|
me->StopMoving();
|
||||||
|
|
||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
@@ -1255,7 +1255,7 @@ struct boss_headless_horseman_head : public ScriptedAI
|
|||||||
if (Player* player = me->SelectNearestPlayer(50.0f))
|
if (Player* player = me->SelectNearestPlayer(50.0f))
|
||||||
me->GetMotionMaster()->MoveFleeing(player);
|
me->GetMotionMaster()->MoveFleeing(player);
|
||||||
|
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
timer = 26000;
|
timer = 26000;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,7 +124,7 @@ public:
|
|||||||
|
|
||||||
ArchimondeGUID = instance->GetGuidData(DATA_ARCHIMONDE);
|
ArchimondeGUID = instance->GetGuidData(DATA_ARCHIMONDE);
|
||||||
|
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
void EnterCombat(Unit* /*who*/) override { }
|
void EnterCombat(Unit* /*who*/) override { }
|
||||||
@@ -464,8 +464,8 @@ public:
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
summoned->SetFaction(me->GetFaction());
|
summoned->SetFaction(me->GetFaction());
|
||||||
summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
summoned->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
summoned->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
summoned->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (summoned->GetEntry() == CREATURE_DOOMFIRE_SPIRIT)
|
if (summoned->GetEntry() == CREATURE_DOOMFIRE_SPIRIT)
|
||||||
@@ -576,7 +576,7 @@ public:
|
|||||||
|
|
||||||
if (Unit* Nordrassil = ObjectAccessor::GetUnit(*me, WorldTreeGUID))
|
if (Unit* Nordrassil = ObjectAccessor::GetUnit(*me, WorldTreeGUID))
|
||||||
{
|
{
|
||||||
Nordrassil->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
Nordrassil->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
Nordrassil->SetDisplayId(11686);
|
Nordrassil->SetDisplayId(11686);
|
||||||
DoCast(Nordrassil, SPELL_DRAIN_WORLD_TREE);
|
DoCast(Nordrassil, SPELL_DRAIN_WORLD_TREE);
|
||||||
IsChanneling = true;
|
IsChanneling = true;
|
||||||
|
|||||||
@@ -989,7 +989,7 @@ void hyjalAI::DoOverrun(uint32 faction, const uint32 diff)
|
|||||||
{
|
{
|
||||||
(*itr)->CastSpell(*itr, SPELL_TELEPORT_VISUAL, true);
|
(*itr)->CastSpell(*itr, SPELL_TELEPORT_VISUAL, true);
|
||||||
(*itr)->SetFaction(FACTION_FRIENDLY); // make them friendly so mobs won't attack them
|
(*itr)->SetFaction(FACTION_FRIENDLY); // make them friendly so mobs won't attack them
|
||||||
(*itr)->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
(*itr)->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
DoCast(me, SPELL_TELEPORT_VISUAL);
|
DoCast(me, SPELL_TELEPORT_VISUAL);
|
||||||
|
|||||||
@@ -416,8 +416,8 @@ public:
|
|||||||
meteor = false;//call once!
|
meteor = false;//call once!
|
||||||
CanMove = false;
|
CanMove = false;
|
||||||
Delay = rand() % 30000;
|
Delay = rand() % 30000;
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetDisplayId(MODEL_INVIS);
|
me->SetDisplayId(MODEL_INVIS);
|
||||||
go = false;
|
go = false;
|
||||||
Reset();
|
Reset();
|
||||||
@@ -482,8 +482,8 @@ public:
|
|||||||
{
|
{
|
||||||
if (spawnTimer <= diff)
|
if (spawnTimer <= diff)
|
||||||
{
|
{
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||||
me->SetDisplayId(me->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
|
me->SetDisplayId(me->GetUInt32Value(UNIT_FIELD_NATIVEDISPLAYID));
|
||||||
CanMove = true;
|
CanMove = true;
|
||||||
if (instance->GetData(DATA_ALLIANCE_RETREAT) && !instance->GetData(DATA_HORDE_RETREAT))
|
if (instance->GetData(DATA_ALLIANCE_RETREAT) && !instance->GetData(DATA_HORDE_RETREAT))
|
||||||
|
|||||||
@@ -112,8 +112,8 @@ public:
|
|||||||
damage = 0;
|
damage = 0;
|
||||||
finished = true;
|
finished = true;
|
||||||
me->SetRegeneratingHealth(false);
|
me->SetRegeneratingHealth(false);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
if (InstanceScript* pInstance = me->GetInstanceScript())
|
if (InstanceScript* pInstance = me->GetInstanceScript())
|
||||||
{
|
{
|
||||||
|
|||||||
+12
-12
@@ -479,8 +479,8 @@ public:
|
|||||||
{
|
{
|
||||||
summons.Despawn(cr);
|
summons.Despawn(cr);
|
||||||
summons.Summon(cr);
|
summons.Summon(cr);
|
||||||
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
cr->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
}
|
}
|
||||||
Talk(SAY_PHASE501);
|
Talk(SAY_PHASE501);
|
||||||
SetEscortPaused(false);
|
SetEscortPaused(false);
|
||||||
@@ -979,7 +979,7 @@ public:
|
|||||||
if (Creature* cr = GetEventNpc(NPC_CITY_MAN))
|
if (Creature* cr = GetEventNpc(NPC_CITY_MAN))
|
||||||
{
|
{
|
||||||
cr->UpdateEntry(NPC_INFINITE_HUNTER, nullptr, false);
|
cr->UpdateEntry(NPC_INFINITE_HUNTER, nullptr, false);
|
||||||
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->SetReactState(REACT_PASSIVE);
|
cr->SetReactState(REACT_PASSIVE);
|
||||||
}
|
}
|
||||||
ScheduleNextEvent(currentEvent, 2000);
|
ScheduleNextEvent(currentEvent, 2000);
|
||||||
@@ -988,7 +988,7 @@ public:
|
|||||||
if (Creature* cr = GetEventNpc(NPC_CITY_MAN4))
|
if (Creature* cr = GetEventNpc(NPC_CITY_MAN4))
|
||||||
{
|
{
|
||||||
cr->UpdateEntry(NPC_INFINITE_AGENT, nullptr, false);
|
cr->UpdateEntry(NPC_INFINITE_AGENT, nullptr, false);
|
||||||
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->SetReactState(REACT_PASSIVE);
|
cr->SetReactState(REACT_PASSIVE);
|
||||||
}
|
}
|
||||||
ScheduleNextEvent(currentEvent, 2000);
|
ScheduleNextEvent(currentEvent, 2000);
|
||||||
@@ -1003,14 +1003,14 @@ public:
|
|||||||
}
|
}
|
||||||
if (Creature* cr = GetEventNpc(NPC_INFINITE_AGENT)) // it is infinite agent now :)
|
if (Creature* cr = GetEventNpc(NPC_INFINITE_AGENT)) // it is infinite agent now :)
|
||||||
{
|
{
|
||||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->SetReactState(REACT_AGGRESSIVE);
|
cr->SetReactState(REACT_AGGRESSIVE);
|
||||||
cr->SetInCombatWithZone();
|
cr->SetInCombatWithZone();
|
||||||
cr->AddThreat(me, 0.0f);
|
cr->AddThreat(me, 0.0f);
|
||||||
}
|
}
|
||||||
if (Creature* cr = GetEventNpc(NPC_INFINITE_HUNTER)) // it is infinite hunter now :)
|
if (Creature* cr = GetEventNpc(NPC_INFINITE_HUNTER)) // it is infinite hunter now :)
|
||||||
{
|
{
|
||||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->SetReactState(REACT_AGGRESSIVE);
|
cr->SetReactState(REACT_AGGRESSIVE);
|
||||||
cr->SetInCombatWithZone();
|
cr->SetInCombatWithZone();
|
||||||
cr->AddThreat(me, 0.0f);
|
cr->AddThreat(me, 0.0f);
|
||||||
@@ -1083,8 +1083,8 @@ public:
|
|||||||
me->SummonCreature(NPC_TIME_RIFT, EventPos[EVENT_SRC_EPOCH], TEMPSUMMON_TIMED_DESPAWN, 20000);
|
me->SummonCreature(NPC_TIME_RIFT, EventPos[EVENT_SRC_EPOCH], TEMPSUMMON_TIMED_DESPAWN, 20000);
|
||||||
if (Creature* cr = me->SummonCreature(NPC_EPOCH, EventPos[EVENT_SRC_EPOCH]))
|
if (Creature* cr = me->SummonCreature(NPC_EPOCH, EventPos[EVENT_SRC_EPOCH]))
|
||||||
{
|
{
|
||||||
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
cr->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
me->SetTarget(cr->GetGUID());
|
me->SetTarget(cr->GetGUID());
|
||||||
cr->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_EPOCH]);
|
cr->GetMotionMaster()->MovePoint(0, EventPos[EVENT_DST_EPOCH]);
|
||||||
}
|
}
|
||||||
@@ -1104,8 +1104,8 @@ public:
|
|||||||
case EVENT_ACTION_PHASE3+18:
|
case EVENT_ACTION_PHASE3+18:
|
||||||
if (Creature* cr = GetEventNpc(NPC_EPOCH))
|
if (Creature* cr = GetEventNpc(NPC_EPOCH))
|
||||||
{
|
{
|
||||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
cr->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
cr->SetReactState(REACT_AGGRESSIVE);
|
cr->SetReactState(REACT_AGGRESSIVE);
|
||||||
cr->AddThreat(me, 0.0f);
|
cr->AddThreat(me, 0.0f);
|
||||||
cr->SetInCombatWithZone();
|
cr->SetInCombatWithZone();
|
||||||
@@ -1129,8 +1129,8 @@ public:
|
|||||||
case EVENT_ACTION_PHASE5:
|
case EVENT_ACTION_PHASE5:
|
||||||
if (Creature* cr = GetEventNpc(NPC_MAL_GANIS))
|
if (Creature* cr = GetEventNpc(NPC_MAL_GANIS))
|
||||||
{
|
{
|
||||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
cr->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
cr->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||||
cr->SetInCombatWithZone();
|
cr->SetInCombatWithZone();
|
||||||
cr->AddThreat(me, 0.0f);
|
cr->AddThreat(me, 0.0f);
|
||||||
AttackStart(cr);
|
AttackStart(cr);
|
||||||
|
|||||||
+4
-4
@@ -82,7 +82,7 @@ public:
|
|||||||
summons.Summon(summon);
|
summons.Summon(summon);
|
||||||
if (Creature* thrall = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_THRALL_GUID)))
|
if (Creature* thrall = ObjectAccessor::GetCreature(*me, me->GetInstanceScript()->GetGuidData(DATA_THRALL_GUID)))
|
||||||
thrall->AI()->JustSummoned(summon);
|
thrall->AI()->JustSummoned(summon);
|
||||||
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
summon->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
|
|
||||||
if (summon->GetEntry() == NPC_SKARLOC_MOUNT)
|
if (summon->GetEntry() == NPC_SKARLOC_MOUNT)
|
||||||
return;
|
return;
|
||||||
@@ -103,7 +103,7 @@ public:
|
|||||||
path.push_back(G3D::Vector3(startPath[i].GetPositionX(), startPath[i].GetPositionY(), startPath[i].GetPositionZ()));
|
path.push_back(G3D::Vector3(startPath[i].GetPositionX(), startPath[i].GetPositionY(), startPath[i].GetPositionZ()));
|
||||||
|
|
||||||
me->GetMotionMaster()->MoveSplinePath(&path);
|
me->GetMotionMaster()->MoveSplinePath(&path);
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->Mount(SKARLOC_MOUNT_MODEL);
|
me->Mount(SKARLOC_MOUNT_MODEL);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -168,13 +168,13 @@ public:
|
|||||||
Talk(SAY_ENTER);
|
Talk(SAY_ENTER);
|
||||||
break;
|
break;
|
||||||
case EVENT_START_FIGHT:
|
case EVENT_START_FIGHT:
|
||||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetInCombatWithZone();
|
me->SetInCombatWithZone();
|
||||||
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
for (SummonList::const_iterator itr = summons.begin(); itr != summons.end(); ++itr)
|
||||||
if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
|
if (Creature* summon = ObjectAccessor::GetCreature(*me, *itr))
|
||||||
if (summon->GetEntry() != NPC_SKARLOC_MOUNT)
|
if (summon->GetEntry() != NPC_SKARLOC_MOUNT)
|
||||||
{
|
{
|
||||||
summon->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
summon->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
summon->SetInCombatWithZone();
|
summon->SetInCombatWithZone();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@@ -620,7 +620,7 @@ public:
|
|||||||
case EVENT_SUMMON_CHRONO:
|
case EVENT_SUMMON_CHRONO:
|
||||||
if (Creature* epoch = me->SummonCreature(NPC_EPOCH_HUNTER, 2640.49f, 696.15f, 64.31f, 4.51f, TEMPSUMMON_MANUAL_DESPAWN))
|
if (Creature* epoch = me->SummonCreature(NPC_EPOCH_HUNTER, 2640.49f, 696.15f, 64.31f, 4.51f, TEMPSUMMON_MANUAL_DESPAWN))
|
||||||
{
|
{
|
||||||
epoch->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
epoch->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
epoch->AI()->Talk(SAY_EPOCH_ENTER1);
|
epoch->AI()->Talk(SAY_EPOCH_ENTER1);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -703,7 +703,7 @@ public:
|
|||||||
case EVENT_CALL_EPOCH:
|
case EVENT_CALL_EPOCH:
|
||||||
if (Creature* epoch = summons.GetCreatureWithEntry(NPC_EPOCH_HUNTER))
|
if (Creature* epoch = summons.GetCreatureWithEntry(NPC_EPOCH_HUNTER))
|
||||||
{
|
{
|
||||||
epoch->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
epoch->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
epoch->GetMotionMaster()->MovePoint(0, *me, false, true);
|
epoch->GetMotionMaster()->MovePoint(0, *me, false, true);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@@ -759,7 +759,7 @@ public:
|
|||||||
Talk(SAY_EVENT_COMPLETE);
|
Talk(SAY_EVENT_COMPLETE);
|
||||||
break;
|
break;
|
||||||
case EVENT_THRALL_RUN_AWAY:
|
case EVENT_THRALL_RUN_AWAY:
|
||||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||||
me->SetReactState(REACT_PASSIVE);
|
me->SetReactState(REACT_PASSIVE);
|
||||||
SetEscortPaused(false);
|
SetEscortPaused(false);
|
||||||
break;
|
break;
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user