mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-02-16 16:56:07 +00:00
feat(Core/Unit): New helpers for UnitFlag and UnitFlag2 (#11227)
This commit is contained in:
@@ -441,7 +441,7 @@ public:
|
||||
target->m_invisibility.AddFlag(type);
|
||||
target->m_invisibility.AddValue(type, aurEff->GetAmount());
|
||||
|
||||
GetUnitOwner()->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
GetUnitOwner()->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
GetUnitOwner()->SetStandState(UNIT_STAND_STATE_DEAD);
|
||||
GetUnitOwner()->m_last_notify_position.Relocate(0.0f, 0.0f, 0.0f);
|
||||
GetUnitOwner()->m_delayed_unit_relocation_timer = 1000;
|
||||
@@ -449,7 +449,7 @@ public:
|
||||
|
||||
void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
|
||||
{
|
||||
GetUnitOwner()->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
GetUnitOwner()->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
GetUnitOwner()->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
}
|
||||
|
||||
|
||||
@@ -199,7 +199,7 @@ public:
|
||||
{
|
||||
advisor->Respawn(true);
|
||||
advisor->StopMovingOnCurrentPos();
|
||||
advisor->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
advisor->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
advisor->SetReactState(REACT_PASSIVE);
|
||||
summons.Summon(advisor);
|
||||
}
|
||||
@@ -215,7 +215,7 @@ public:
|
||||
{
|
||||
summon->SetReactState(REACT_PASSIVE);
|
||||
summon->setDeathState(JUST_RESPAWNED);
|
||||
summon->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
summon->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -238,8 +238,8 @@ public:
|
||||
phase = PHASE_NONE;
|
||||
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_HOVER, true);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
SetRoomState(GO_STATE_READY);
|
||||
me->SetDisableGravity(false);
|
||||
me->SetWalk(false);
|
||||
@@ -321,7 +321,7 @@ public:
|
||||
|
||||
void JustDied(Unit* killer) override
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
Talk(SAY_DEATH);
|
||||
BossAI::JustDied(killer);
|
||||
@@ -357,7 +357,7 @@ public:
|
||||
me->SetWalk(false);
|
||||
me->RemoveAurasDueToSpell(SPELL_KAEL_FULL_POWER);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
events.SetTimer(60000);
|
||||
events.ScheduleEvent(EVENT_SPELL_FIREBALL, 0);
|
||||
events.ScheduleEvent(EVENT_SPELL_FLAMESTRIKE, 10000);
|
||||
@@ -389,7 +389,7 @@ public:
|
||||
if (Creature* advisor = summons.GetCreatureWithEntry(NPC_THALADRED))
|
||||
{
|
||||
advisor->SetReactState(REACT_AGGRESSIVE);
|
||||
advisor->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
advisor->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
advisor->AI()->AttackStart(target);
|
||||
advisor->SetInCombatWithZone();
|
||||
@@ -403,7 +403,7 @@ public:
|
||||
if (Creature* advisor = summons.GetCreatureWithEntry(NPC_LORD_SANGUINAR))
|
||||
{
|
||||
advisor->SetReactState(REACT_AGGRESSIVE);
|
||||
advisor->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
advisor->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
advisor->AI()->AttackStart(target);
|
||||
advisor->SetInCombatWithZone();
|
||||
@@ -417,7 +417,7 @@ public:
|
||||
if (Creature* advisor = summons.GetCreatureWithEntry(NPC_CAPERNIAN))
|
||||
{
|
||||
advisor->SetReactState(REACT_AGGRESSIVE);
|
||||
advisor->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
advisor->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
advisor->AI()->AttackStart(target);
|
||||
advisor->SetInCombatWithZone();
|
||||
@@ -431,7 +431,7 @@ public:
|
||||
if (Creature* advisor = summons.GetCreatureWithEntry(NPC_TELONICUS))
|
||||
{
|
||||
advisor->SetReactState(REACT_AGGRESSIVE);
|
||||
advisor->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
advisor->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
advisor->AI()->AttackStart(target);
|
||||
advisor->SetInCombatWithZone();
|
||||
@@ -449,7 +449,7 @@ public:
|
||||
if (Creature* summon = ObjectAccessor::GetCreature(*me, *i))
|
||||
if (!summon->GetSpawnId())
|
||||
{
|
||||
summon->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
summon->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
summon->SetInCombatWithZone();
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
summon->AI()->AttackStart(target);
|
||||
@@ -472,7 +472,7 @@ public:
|
||||
if (summon->GetSpawnId())
|
||||
{
|
||||
summon->SetReactState(REACT_AGGRESSIVE);
|
||||
summon->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
summon->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
summon->SetInCombatWithZone();
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
summon->AI()->AttackStart(target);
|
||||
@@ -484,7 +484,7 @@ public:
|
||||
Talk(SAY_PHASE4_INTRO2);
|
||||
phase = PHASE_FINAL;
|
||||
DoResetThreat();
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
if (Unit* target = SelectTarget(SelectTargetMethod::Random, 0))
|
||||
AttackStart(target);
|
||||
|
||||
@@ -669,7 +669,7 @@ public:
|
||||
if (me->HealthBelowPct(51))
|
||||
{
|
||||
events.Reset();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->GetMotionMaster()->MovePoint(POINT_MIDDLE, me->GetHomePosition(), true, true);
|
||||
me->ClearUnitState(UNIT_STATE_MELEE_ATTACKING);
|
||||
|
||||
@@ -92,7 +92,7 @@ public:
|
||||
ScriptedAI::InitializeAI();
|
||||
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
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);
|
||||
events2.Reset();
|
||||
events2.ScheduleEvent(EVENT_TELEPORT_VISUAL, 0);
|
||||
events2.ScheduleEvent(EVENT_MILLHOUSE_INTRO1, 3000);
|
||||
@@ -174,7 +174,7 @@ public:
|
||||
case EVENT_MILLHOUSE_INTRO9:
|
||||
me->SetFacingTo(M_PI * 1.5f);
|
||||
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), M_PI * 1.5f);
|
||||
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->SetReactState(REACT_AGGRESSIVE);
|
||||
events2.ScheduleEvent(EVENT_SEARCH_FIGHT, 1000);
|
||||
break;
|
||||
@@ -365,9 +365,9 @@ public:
|
||||
{
|
||||
_Reset();
|
||||
me->setActive(false);
|
||||
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->RemoveFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
|
||||
me->RemoveUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||
me->CastSpell((Unit*)nullptr, SPELL_TARGET_OMEGA, false);
|
||||
instance->HandleGameObject(instance->GetGuidData(DATA_WARDENS_SHIELD), true);
|
||||
instance->SetBossState(DATA_WARDEN_MELLICHAR, NOT_STARTED);
|
||||
@@ -379,7 +379,7 @@ public:
|
||||
{
|
||||
me->setActive(true);
|
||||
me->InterruptNonMeleeSpells(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);
|
||||
events.ScheduleEvent(EVENT_WARDEN_INTRO1, 1500);
|
||||
events.ScheduleEvent(EVENT_WARDEN_CHECK_PLAYERS, 1000);
|
||||
instance->SetBossState(DATA_WARDEN_MELLICHAR, IN_PROGRESS);
|
||||
@@ -535,7 +535,7 @@ public:
|
||||
case EVENT_WARDEN_INTRO25:
|
||||
if (Creature* cr = me->SummonCreature(NPC_HARBINGER_SKYRISS, 445.763f, -191.639f, 44.64f, 1.60f, TEMPSUMMON_MANUAL_DESPAWN))
|
||||
{
|
||||
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->CastSpell(cr, SPELL_TELEPORT_VISUAL, true);
|
||||
}
|
||||
events.ScheduleEvent(EVENT_WARDEN_INTRO26, 1000);
|
||||
@@ -559,10 +559,10 @@ public:
|
||||
case EVENT_WARDEN_INTRO29:
|
||||
events.Reset();
|
||||
me->SetFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_DEAD);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_FEIGN_DEATH);
|
||||
me->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||
if (Creature* creature = summons.GetCreatureWithEntry(NPC_HARBINGER_SKYRISS))
|
||||
{
|
||||
creature->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
creature->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
if (Player* player = SelectTargetFromPlayerList(50.0f))
|
||||
AttackStart(player);
|
||||
}
|
||||
|
||||
@@ -66,14 +66,14 @@ public:
|
||||
{
|
||||
_Reset();
|
||||
events2.Reset();
|
||||
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 InitializeAI() override
|
||||
{
|
||||
BossAI::InitializeAI();
|
||||
if (instance->GetBossState(DATA_SOCCOTHRATES) != DONE)
|
||||
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* /*killer*/) override
|
||||
|
||||
@@ -75,7 +75,7 @@ public:
|
||||
{
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
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 EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -87,14 +87,14 @@ public:
|
||||
_Reset();
|
||||
events2.Reset();
|
||||
me->CastSpell(me, SPELL_FEL_IMMOLATION, true);
|
||||
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 InitializeAI() override
|
||||
{
|
||||
BossAI::InitializeAI();
|
||||
if (!preFight)
|
||||
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* /*killer*/) override
|
||||
@@ -185,9 +185,9 @@ public:
|
||||
if (Creature* dalliah = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_DALLIAH)))
|
||||
{
|
||||
dalliah->SetFacingToObject(me);
|
||||
dalliah->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
dalliah->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetFacingToObject(dalliah);
|
||||
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);
|
||||
dalliah->SetHomePosition(dalliah->GetPositionX(), dalliah->GetPositionY(), dalliah->GetPositionZ(), 1.51737f);
|
||||
me->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 4.725722f);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user