feat(Core/Unit): New helpers for UnitFlag and UnitFlag2 (#11227)

This commit is contained in:
Kitzunu
2022-03-30 12:59:42 +02:00
committed by GitHub
parent 54c06eb72e
commit 856aed6fc6
243 changed files with 1205 additions and 1191 deletions

View File

@@ -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)

View File

@@ -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);
}
}

View File

@@ -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);
}

View File

@@ -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;
}

View File

@@ -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();

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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);
}
}