mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-18 03:15:41 +00:00
feat(Core/Unit): New helpers for UnitFlag and UnitFlag2 (#11227)
This commit is contained in:
@@ -237,8 +237,8 @@ public:
|
||||
bLockHealthCheck = false;
|
||||
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -340,14 +340,14 @@ public:
|
||||
if (!victim)
|
||||
return;
|
||||
|
||||
if (me->GetVictim() && me->GetVictim()->GetGUID() == victim->GetGUID() && !me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED))
|
||||
if (me->GetVictim() && me->GetVictim()->GetGUID() == victim->GetGUID() && !me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED))
|
||||
{
|
||||
if (!me->GetGuidValue(UNIT_FIELD_TARGET))
|
||||
me->SetTarget(victim->GetGUID());
|
||||
}
|
||||
else if (me->Attack(victim, true))
|
||||
{
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED))
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED))
|
||||
me->GetMotionMaster()->MoveChase(victim);
|
||||
else
|
||||
me->SetTarget();
|
||||
@@ -356,7 +356,7 @@ public:
|
||||
|
||||
void DamageTaken(Unit*, uint32& damage, DamageEffectType, SpellSchoolMask) override
|
||||
{
|
||||
if (damage >= me->GetHealth() && !me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE)) // allow dying only in phase 3!
|
||||
if (damage >= me->GetHealth() && !me->HasUnitFlag(UNIT_FLAG_DISABLE_MOVE)) // allow dying only in phase 3!
|
||||
{
|
||||
damage = 0;
|
||||
return;
|
||||
@@ -417,7 +417,7 @@ public:
|
||||
pInstance->SetData(DATA_HIDE_IRIS_AND_PORTAL, 0);
|
||||
pInstance->DoStartTimedAchievement(ACHIEVEMENT_TIMED_TYPE_EVENT, ACHIEV_YOU_DONT_HAVE_AN_ENTERNITY_EVENT);
|
||||
}
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
|
||||
if (Unit* target = me->SelectNearestTarget(250.0f))
|
||||
{
|
||||
AttackStart(target);
|
||||
@@ -460,7 +460,7 @@ public:
|
||||
Talk(SAY_MAGIC_BLAST);
|
||||
EntryCheckPredicate pred(NPC_POWER_SPARK);
|
||||
summons.DoAction(2, pred); // stop following
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
||||
me->SetUnitFlag(UNIT_FLAG_PACIFIED);
|
||||
|
||||
me->SendMeleeAttackStop(me->GetVictim());
|
||||
me->SetTarget();
|
||||
@@ -539,7 +539,7 @@ public:
|
||||
sScriptMgr->AnticheatSetSkipOnePacketForASH(pPlayer, true);
|
||||
|
||||
pPlayer->SetGuidValue(PLAYER_FARSIGHT, vp->GetGUID());
|
||||
c->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
c->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -556,7 +556,7 @@ public:
|
||||
bLockHealthCheck = false;
|
||||
EntryCheckPredicate pred(NPC_POWER_SPARK);
|
||||
summons.DoAction(1, pred); // resume following
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_PACIFIED);
|
||||
if (Unit* target = me->GetVictim())
|
||||
{
|
||||
AttackStart(target);
|
||||
@@ -568,7 +568,7 @@ public:
|
||||
case EVENT_START_PHASE_2:
|
||||
events.SetPhase(PHASE_TWO);
|
||||
Talk(SAY_END_P1);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED);
|
||||
me->SetUnitFlag(UNIT_FLAG_PACIFIED);
|
||||
me->SendMeleeAttackStop();
|
||||
me->SetTarget();
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
@@ -588,7 +588,7 @@ public:
|
||||
}
|
||||
case EVENT_START_PHASE_2_MOVE_TO_SIDE:
|
||||
Talk(SAY_PHASE_2);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_PACIFIED);
|
||||
me->GetMotionMaster()->MovePoint(MI_POINT_CIRCLE_OUTSIDE_PH_2, Phase2NorthPos);
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCANE_STORM, urand(12000, 15000), 1);
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCANE_OVERLOAD, 8000, 1);
|
||||
@@ -742,8 +742,8 @@ public:
|
||||
case EVENT_START_PHASE_3:
|
||||
events.SetPhase(PHASE_THREE);
|
||||
me->GetMap()->SetZoneOverrideLight(AREA_EYE_OF_ETERNITY, LIGHT_OBSCURE_ARCANE_RUNES, 1s);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_PACIFIED | UNIT_FLAG_DISABLE_MOVE);
|
||||
if (Unit* target = me->GetVictim())
|
||||
AttackStart(target);
|
||||
events.RescheduleEvent(EVENT_SPELL_ARCANE_PULSE, 0, 1);
|
||||
@@ -818,7 +818,7 @@ public:
|
||||
{
|
||||
me->SetDisableGravity(true);
|
||||
me->GetMap()->SetZoneOverrideLight(AREA_EYE_OF_ETERNITY, LIGHT_GET_DEFAULT_FOR_MAP, 1s);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||
ScriptedAI::EnterEvadeMode();
|
||||
}
|
||||
|
||||
@@ -1010,14 +1010,14 @@ public:
|
||||
if (damage >= me->GetHealth())
|
||||
{
|
||||
damage = 0;
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||
{
|
||||
MoveTimer = 0;
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->DisableSpline();
|
||||
me->MonsterMoveWithSpeed(me->GetPositionX(), me->GetPositionY(), CenterPos.GetPositionZ(), 100.0f);
|
||||
me->SetPosition(me->GetPositionX(), me->GetPositionY(), CenterPos.GetPositionZ(), me->GetOrientation());
|
||||
me->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->ReplaceAllUnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveAura(SPELL_POWER_SPARK_VISUAL);
|
||||
me->CastSpell(me, SPELL_POWER_SPARK_GROUND_BUFF, true);
|
||||
me->DespawnOrUnsummon(60000);
|
||||
@@ -1027,7 +1027,7 @@ public:
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||
return;
|
||||
|
||||
if (CheckTimer <= diff)
|
||||
|
||||
@@ -123,12 +123,12 @@ public:
|
||||
{
|
||||
if (remove)
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveAurasDueToSpell(SPELL_FROZEN_PRISON);
|
||||
}
|
||||
else
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->CastSpell(me, SPELL_FROZEN_PRISON, true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -248,14 +248,14 @@ public:
|
||||
GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_FROST_MAGUS_SUMMON, true);
|
||||
GetUnitOwner()->CastSpell(GetUnitOwner(), SPELL_ARCANE_MAGUS_SUMMON, true);
|
||||
|
||||
GetUnitOwner()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
GetUnitOwner()->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
GetUnitOwner()->SetControlled(true, UNIT_STATE_STUNNED);
|
||||
GetUnitOwner()->ToCreature()->LoadEquipment(0, true);
|
||||
}
|
||||
|
||||
void HandleRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
GetUnitOwner()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
GetUnitOwner()->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
GetUnitOwner()->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
GetUnitOwner()->ToCreature()->LoadEquipment(1, true);
|
||||
}
|
||||
|
||||
@@ -217,8 +217,8 @@ public:
|
||||
restoreTimer = 0;
|
||||
abilityTimer1 = 0;
|
||||
abilityTimer2 = 30000;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void EnterCombat(Unit*) override
|
||||
@@ -244,8 +244,8 @@ public:
|
||||
damage = 0;
|
||||
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetRegeneratingHealth(false);
|
||||
me->CastSpell(me, SPELL_SUMMON_SEED_POD, true);
|
||||
me->CastSpell(me, SPELL_SEED_POD, true);
|
||||
@@ -266,8 +266,8 @@ public:
|
||||
me->SetRegeneratingHealth(true);
|
||||
restoreTimer = 0;
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -93,9 +93,9 @@ public:
|
||||
{
|
||||
pInstance->SetData(DATA_EREGOS, NOT_STARTED);
|
||||
if( pInstance->GetData(DATA_UROM) != DONE )
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
else
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
events.Reset();
|
||||
|
||||
@@ -126,9 +126,9 @@ public:
|
||||
{
|
||||
pInstance->SetData(DATA_UROM, NOT_STARTED);
|
||||
if( pInstance->GetData(DATA_VAROS) != DONE )
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
else
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
|
||||
me->CastSpell(me, SPELL_EVOCATION, true);
|
||||
@@ -277,7 +277,7 @@ public:
|
||||
me->GetMotionMaster()->MoveIdle();
|
||||
me->StopMoving();
|
||||
me->SetControlled(true, UNIT_STATE_ROOT);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetCanFly(true);
|
||||
me->SetDisableGravity(true);
|
||||
me->NearTeleportTo(1103.69f, 1048.76f, 512.279f, 1.16f);
|
||||
@@ -354,7 +354,7 @@ public:
|
||||
me->SetDisableGravity(false);
|
||||
me->NearTeleportTo(x, y, z, 0.0f);
|
||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->GetMotionMaster()->MoveChase(me->GetVictim());
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -102,12 +102,12 @@ public:
|
||||
pInstance->SetData(DATA_VAROS, NOT_STARTED);
|
||||
if( pInstance->GetData(DATA_CC_COUNT) < 10 )
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->CastSpell(me, 50053, true);
|
||||
}
|
||||
else
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->RemoveAura(50053);
|
||||
}
|
||||
|
||||
@@ -148,14 +148,14 @@ public:
|
||||
DoUpdateWorldState(WORLD_STATE_CENTRIFUGE_CONSTRUCT_SHOW, 0);
|
||||
|
||||
if( Creature* urom = instance->GetCreature(uiUromGUID) )
|
||||
urom->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
urom->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
break;
|
||||
case DATA_UROM:
|
||||
m_auiEncounter[DATA_UROM] = data;
|
||||
if( data == DONE )
|
||||
if( Creature* eregos = instance->GetCreature(uiEregosGUID) )
|
||||
eregos->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
eregos->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
break;
|
||||
case DATA_EREGOS:
|
||||
m_auiEncounter[DATA_EREGOS] = data;
|
||||
@@ -181,7 +181,7 @@ public:
|
||||
if( CentrifugeCount >= 10 )
|
||||
if( Creature* varos = instance->GetCreature(uiVarosGUID) )
|
||||
{
|
||||
varos->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
varos->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
varos->InterruptNonMeleeSpells(false);
|
||||
varos->RemoveAura(50053);
|
||||
}
|
||||
|
||||
@@ -926,7 +926,7 @@ public:
|
||||
case EFFECT_1:
|
||||
_drakeGUID = drake->GetGUID();
|
||||
caster->AddAura(SPELL_DRAKE_FLAG_VISUAL, caster);
|
||||
caster->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
caster->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
caster->RemoveAurasByType(SPELL_AURA_MOD_SHAPESHIFT);
|
||||
drake->CastSpell(drake, SPELL_SOAR_TRIGGER);
|
||||
if (drake->GetEntry() == NPC_RUBY_DRAKE)
|
||||
@@ -950,12 +950,12 @@ public:
|
||||
|
||||
if (drake)
|
||||
{
|
||||
drake->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_POSSESSED);
|
||||
drake->RemoveUnitFlag(UNIT_FLAG_POSSESSED);
|
||||
drake->RemoveAurasDueToSpell(GetId());
|
||||
drake->RemoveAurasDueToSpell(SPELL_SOAR_TRIGGER);
|
||||
drake->RemoveAurasDueToSpell(SPELL_RUBY_EVASIVE_AURA);
|
||||
}
|
||||
caster->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
caster->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
caster->RemoveAurasDueToSpell(SPELL_DRAKE_FLAG_VISUAL);
|
||||
}
|
||||
|
||||
@@ -993,7 +993,7 @@ public:
|
||||
|
||||
if (!drake)
|
||||
{
|
||||
caster->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
caster->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
caster->RemoveAurasDueToSpell(SPELL_DRAKE_FLAG_VISUAL);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user