mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-21 20:56:23 +00:00
feat(Core/Unit): New helpers for UnitFlag and UnitFlag2 (#11227)
This commit is contained in:
@@ -159,7 +159,7 @@ public:
|
||||
summons.Summon(spark);
|
||||
spark->CastSpell(spark, me->GetMap()->IsHeroic() ? SPELL_SPARK_VISUAL_TRIGGER_H : SPELL_SPARK_VISUAL_TRIGGER_N, true);
|
||||
spark->CastSpell(spark, SPELL_RANDOM_LIGHTNING, true);
|
||||
spark->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
spark->SetUnitFlag(UNIT_FLAG_PACIFIED | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
spark->SetHomePosition(me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), 0);
|
||||
|
||||
if (Player* tgt = SelectTargetFromPlayerList(100))
|
||||
|
||||
@@ -103,12 +103,12 @@ public:
|
||||
if (!isActive)
|
||||
{
|
||||
me->SetControlled(true, UNIT_STATE_STUNNED);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
else
|
||||
{
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -195,7 +195,7 @@ public:
|
||||
m_pInstance->SetData(TYPE_LOKEN_INTRO, 1);
|
||||
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
if (Player* target = SelectTargetFromPlayerList(80))
|
||||
AttackStart(target);
|
||||
|
||||
@@ -357,7 +357,7 @@ public:
|
||||
if (uiDamage >= me->GetHealth())
|
||||
{
|
||||
me->UpdateEntry(NPC_BRITTLE_GOLEM, 0, false);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
me->RemoveAllAuras();
|
||||
me->AttackStop();
|
||||
@@ -459,7 +459,7 @@ public:
|
||||
{
|
||||
_attackGUID.Clear();
|
||||
_isActive = urand(0, 1);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->CastSpell(me, SPELL_FREEZE_ANIM, true);
|
||||
}
|
||||
|
||||
@@ -522,7 +522,7 @@ public:
|
||||
|
||||
if (eventId == EVENT_UNFREEZE)
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->CastSpell(me, SPELL_AWAKEN, true);
|
||||
me->RemoveAllAuras();
|
||||
_isActive = true;
|
||||
|
||||
@@ -141,10 +141,10 @@ public:
|
||||
pInstance->SetData(BOSS_SJONNIR, NOT_STARTED);
|
||||
pInstance->SetData(DATA_SJONNIR_ACHIEVEMENT, false);
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (pInstance->GetData(BOSS_TRIBUNAL_OF_AGES) == DONE)
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (GameObject* doors = me->GetMap()->GetGameObject(pInstance->GetGuidData(GO_SJONNIR_DOOR)))
|
||||
doors->SetGoState(GO_STATE_ACTIVE);
|
||||
|
||||
|
||||
@@ -676,7 +676,7 @@ void brann_bronzebeard::brann_bronzebeardAI::WaypointReached(uint32 id)
|
||||
pInstance->SetData(BRANN_BRONZEBEARD, 5);
|
||||
me->SetUInt32Value(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
if (Creature* cr = ObjectAccessor::GetCreature(*me, pInstance->GetGuidData(NPC_SJONNIR)))
|
||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
cr->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetOrientation(3.132660f);
|
||||
DoCast(me, 58506, false);
|
||||
}
|
||||
|
||||
@@ -217,7 +217,7 @@ public:
|
||||
|
||||
// Make sjonnir attackable
|
||||
if (Creature* cr = instance->GetCreature(SjonnirGUID))
|
||||
cr->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
cr->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
if (type == BOSS_TRIBUNAL_OF_AGES && data == NOT_STARTED)
|
||||
{
|
||||
|
||||
@@ -377,7 +377,7 @@ public:
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetSheath(SHEATH_STATE_UNARMED);
|
||||
me->SetFaction(190);
|
||||
me->CastSpell(me, SPELL_DUAL_WIELD, true);
|
||||
@@ -403,8 +403,8 @@ public:
|
||||
{
|
||||
case ACTION_START_INTRO:
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS_2, UNIT_FLAG2_DO_NOT_FADE_IN);
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetUnitFlag2(UNIT_FLAG2_DO_NOT_FADE_IN);
|
||||
me->SetDisableGravity(true);
|
||||
me->CastSpell(me, SPELL_ARRIVAL, true);
|
||||
me->CastSpell(me, SPELL_RIDE_THE_LIGHTNING, true);
|
||||
@@ -438,7 +438,7 @@ public:
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->AttackStop();
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
if (m_pInstance)
|
||||
m_pInstance->SetData(TYPE_ALGALON, NOT_STARTED);
|
||||
@@ -446,7 +446,7 @@ public:
|
||||
case ACTION_INIT_ALGALON:
|
||||
_firstPull = false;
|
||||
_fedOnTears = false;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
break;
|
||||
case ACTION_ASCEND:
|
||||
summons.DespawnAll();
|
||||
@@ -477,7 +477,7 @@ public:
|
||||
uint32 introDelay = 0;
|
||||
me->setActive(true);
|
||||
me->SetInCombatWithZone();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
events.Reset();
|
||||
events.SetPhase(PHASE_ROLE_PLAY);
|
||||
|
||||
@@ -603,7 +603,7 @@ public:
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->AttackStop();
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
@@ -649,7 +649,7 @@ public:
|
||||
break;
|
||||
case EVENT_INTRO_FINISH:
|
||||
events.Reset();
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
if (Creature* brann = ObjectAccessor::GetCreature(*me, m_pInstance->GetGuidData(NPC_BRANN_BRONZBEARD_ALG)))
|
||||
brann->AI()->DoAction(ACTION_FINISH_INTRO);
|
||||
break;
|
||||
@@ -659,7 +659,7 @@ public:
|
||||
break;
|
||||
case EVENT_REMOVE_UNNATTACKABLE:
|
||||
me->SetSheath(SHEATH_STATE_MELEE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
break;
|
||||
case EVENT_INTRO_TIMER_DONE:
|
||||
events.SetPhase(PHASE_NORMAL);
|
||||
@@ -736,7 +736,7 @@ public:
|
||||
break;
|
||||
case EVENT_OUTRO_1:
|
||||
me->RemoveAllAuras();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_RENAME);
|
||||
me->SetUnitFlag(UNIT_FLAG_RENAME);
|
||||
break;
|
||||
case EVENT_OUTRO_2:
|
||||
{
|
||||
@@ -758,7 +758,7 @@ public:
|
||||
break;
|
||||
case EVENT_OUTRO_4:
|
||||
me->CastSpell((Unit*)nullptr, SPELL_SUPERMASSIVE_FAIL);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
break;
|
||||
case EVENT_OUTRO_5:
|
||||
if (Creature* brann = me->SummonCreature(NPC_BRANN_BRONZBEARD_ALG, BrannOutroPos[0], TEMPSUMMON_TIMED_DESPAWN, 131500))
|
||||
@@ -985,7 +985,7 @@ public:
|
||||
{
|
||||
case ACTION_ACTIVATE_STAR:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
_isActive = true;
|
||||
|
||||
if (Player* target = SelectTargetFromPlayerList(250.0f))
|
||||
|
||||
@@ -802,7 +802,7 @@ public:
|
||||
me->StopMoving();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetGuidValue(UNIT_FIELD_TARGET, ObjectGuid::Empty);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_STUNNED);
|
||||
me->SetUnitFlag(UNIT_FLAG_STUNNED);
|
||||
me->SendMonsterMove(_flyTarget->GetPositionX(), _flyTarget->GetPositionY(), _flyTarget->GetPositionZ() + 15, 1500, SPLINEFLAG_FLYING);
|
||||
|
||||
me->CastSpell(me, SPELL_LIGHTNING_TENDRILS, true);
|
||||
|
||||
@@ -308,11 +308,11 @@ public:
|
||||
if (m_pInstance->GetData(TYPE_LEVIATHAN) != SPECIAL)
|
||||
{
|
||||
m_pInstance->SetData(TYPE_LEVIATHAN, NOT_STARTED);
|
||||
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);
|
||||
m_pInstance->SetData(DATA_VEHICLE_SPAWN, VEHICLE_POS_LEVIATHAN);
|
||||
_startTimer = 0;
|
||||
}
|
||||
@@ -372,7 +372,7 @@ public:
|
||||
}
|
||||
else if (_speakTimer > 41000 && _speakTimer < 60000)
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
TurnGates(true, false);
|
||||
me->MonsterMoveWithSpeed(homePos.GetPositionX(), homePos.GetPositionY(), homePos.GetPositionZ(), 100.0f);
|
||||
me->UpdatePosition(homePos);
|
||||
@@ -768,14 +768,14 @@ public:
|
||||
{
|
||||
if (apply)
|
||||
{
|
||||
turret->SetUInt32Value(UNIT_FIELD_FLAGS, 0);
|
||||
turret->ReplaceAllUnitFlags(UNIT_FLAG_NONE);
|
||||
turret->GetAI()->AttackStart(who);
|
||||
if (Creature* leviathan = me->GetVehicleCreatureBase())
|
||||
leviathan->AI()->Talk(FLAME_LEVIATHAN_SAY_PLAYER_RIDING);
|
||||
}
|
||||
else
|
||||
{
|
||||
turret->SetUInt32Value(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
turret->ReplaceAllUnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
if (turret->GetTypeId() == TYPEID_UNIT)
|
||||
turret->ToCreature()->AI()->EnterEvadeMode();
|
||||
}
|
||||
@@ -817,7 +817,7 @@ public:
|
||||
|
||||
if (Vehicle* vehicle = me->GetVehicle())
|
||||
if (Unit* device = vehicle->GetPassenger(SEAT_DEVICE))
|
||||
device->SetUInt32Value(UNIT_FIELD_FLAGS, 0); // unselectable
|
||||
device->ReplaceAllUnitFlags(UNIT_FLAG_NONE); // unselectable
|
||||
|
||||
if (Creature* leviathan = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(TYPE_LEVIATHAN)))
|
||||
leviathan->AI()->DoAction(ACTION_DESTROYED_TURRET);
|
||||
@@ -874,7 +874,7 @@ public:
|
||||
if (me->GetVehicle())
|
||||
{
|
||||
me->RemoveFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_SPELLCLICK);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
if (Unit* player = me->GetVehicle()->GetPassenger(SEAT_PLAYER))
|
||||
{
|
||||
|
||||
@@ -343,7 +343,7 @@ public:
|
||||
me->PlayDirectSound(SOUND_DEATH);
|
||||
|
||||
damage = 0;
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
me->CombatStop();
|
||||
|
||||
@@ -307,7 +307,7 @@ public:
|
||||
for (ObjectGuid const& guid : summons)
|
||||
if (Creature* sv = ObjectAccessor::GetCreature(*me, guid))
|
||||
{
|
||||
sv->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
sv->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
sv->GetMotionMaster()->MoveIdle();
|
||||
sv->GetMotionMaster()->MoveCharge(1852.78f, 81.38f, 342.461f, 28.0f);
|
||||
}
|
||||
|
||||
@@ -338,7 +338,7 @@ public:
|
||||
{
|
||||
damage = 0;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||
{
|
||||
if (pInstance)
|
||||
{
|
||||
@@ -346,7 +346,7 @@ public:
|
||||
me->CastSpell(me, 64899, true); // credit
|
||||
}
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->GetMotionMaster()->Clear();
|
||||
me->AttackStop();
|
||||
|
||||
@@ -113,7 +113,7 @@ public:
|
||||
{
|
||||
timer = 1000;
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void JustReachedHome() override
|
||||
@@ -126,7 +126,7 @@ public:
|
||||
if (spell->Id == SPELL_ACTIVATE_CONSTRUCT)
|
||||
{
|
||||
me->RemoveAura(38757);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
if (InstanceScript* instance = me->GetInstanceScript())
|
||||
if (Creature* ignis = ObjectAccessor::GetCreature(*me, instance->GetGuidData(TYPE_IGNIS)))
|
||||
|
||||
@@ -235,7 +235,7 @@ public:
|
||||
_looksAchievement = true;
|
||||
|
||||
me->SetDisableGravity(true);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||
me->DisableRotate(true);
|
||||
|
||||
events.Reset();
|
||||
|
||||
@@ -335,7 +335,7 @@ public:
|
||||
ResetGameObjects();
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
if (pInstance && pInstance->GetData(TYPE_MIMIRON) != DONE)
|
||||
pInstance->SetData(TYPE_MIMIRON, NOT_STARTED);
|
||||
@@ -358,7 +358,7 @@ public:
|
||||
me->setActive(true);
|
||||
DoZoneInCombat();
|
||||
me->RemoveAllAuras();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
events.Reset();
|
||||
|
||||
if (Creature* c = GetLMK2())
|
||||
@@ -1030,8 +1030,8 @@ public:
|
||||
c->ExitVehicle(); // this should never happen!
|
||||
if (Creature* c = me->SummonCreature(NPC_LEVIATHAN_MKII_CANNON, *me, TEMPSUMMON_MANUAL_DESPAWN))
|
||||
c->EnterVehicle(me, 3);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
|
||||
@@ -1050,7 +1050,7 @@ public:
|
||||
break;
|
||||
case 1:
|
||||
Phase = 1;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (Unit* target = SelectTargetFromPlayerList(75.0f))
|
||||
AttackStart(target);
|
||||
DoZoneInCombat();
|
||||
@@ -1067,7 +1067,7 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
DoResetThreat();
|
||||
Phase = 4;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (Unit* target = SelectTargetFromPlayerList(75.0f))
|
||||
AttackStart(target);
|
||||
DoZoneInCombat();
|
||||
@@ -1089,9 +1089,9 @@ public:
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
if (Phase == 1)
|
||||
{
|
||||
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->GetMotionMaster()->Clear();
|
||||
me->AttackStop();
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
@@ -1107,9 +1107,9 @@ public:
|
||||
}
|
||||
else if (Phase == 4)
|
||||
{
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE);
|
||||
me->CastSpell(me, SPELL_SELF_REPAIR, false);
|
||||
@@ -1264,7 +1264,7 @@ public:
|
||||
{
|
||||
if( spell->Id == SPELL_SELF_REPAIR )
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
}
|
||||
@@ -1326,7 +1326,7 @@ public:
|
||||
Phase = 2;
|
||||
fighting = true;
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_SPELL_CAST_OMNI);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_SPELL_HEAT_WAVE, 10000);
|
||||
events.ScheduleEvent(EVENT_SPELL_ROCKET_STRIKE, 16000);
|
||||
@@ -1343,7 +1343,7 @@ public:
|
||||
case 4:
|
||||
Phase = 4;
|
||||
fighting = true;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
events.Reset();
|
||||
events.ScheduleEvent(EVENT_REINSTALL_ROCKETS, 3000);
|
||||
events.ScheduleEvent(EVENT_SPELL_ROCKET_STRIKE, 16000);
|
||||
@@ -1382,9 +1382,9 @@ public:
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
if (Phase == 2)
|
||||
{
|
||||
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);
|
||||
SetData(1, 0);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE);
|
||||
@@ -1397,9 +1397,9 @@ public:
|
||||
}
|
||||
else if (Phase == 4)
|
||||
{
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE);
|
||||
me->CastSpell(me, SPELL_SELF_REPAIR, false);
|
||||
@@ -1606,7 +1606,7 @@ public:
|
||||
{
|
||||
if( spell->Id == SPELL_SELF_REPAIR )
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
}
|
||||
@@ -1666,7 +1666,7 @@ public:
|
||||
break;
|
||||
case 3:
|
||||
Phase = 3;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (Unit* target = SelectTargetFromPlayerList(75.0f))
|
||||
AttackStart(target);
|
||||
DoZoneInCombat();
|
||||
@@ -1683,7 +1683,7 @@ public:
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
DoResetThreat();
|
||||
Phase = 4;
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (Unit* target = SelectTargetFromPlayerList(75.0f))
|
||||
AttackStart(target);
|
||||
DoZoneInCombat();
|
||||
@@ -1714,9 +1714,9 @@ public:
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
if (Phase == 3)
|
||||
{
|
||||
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->GetMotionMaster()->Clear();
|
||||
me->StopMoving();
|
||||
me->AttackStop();
|
||||
@@ -1734,9 +1734,9 @@ public:
|
||||
}
|
||||
else if (Phase == 4)
|
||||
{
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE))
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE))
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->InterruptNonMeleeSpells(false);
|
||||
me->RemoveAllAurasExceptType(SPELL_AURA_CONTROL_VEHICLE);
|
||||
me->CastSpell(me, SPELL_SELF_REPAIR, false);
|
||||
@@ -1935,7 +1935,7 @@ public:
|
||||
{
|
||||
if( spell->Id == SPELL_SELF_REPAIR )
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -352,13 +352,13 @@ public:
|
||||
{
|
||||
if (apply)
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_PACIFIED);
|
||||
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_PACIFIED);
|
||||
me->DisableRotate(true);
|
||||
me->AddUnitState(UNIT_STATE_ROOT);
|
||||
}
|
||||
else
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_PACIFIED);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_PACIFIED);
|
||||
me->DisableRotate(false);
|
||||
me->ClearUnitState(UNIT_STATE_ROOT);
|
||||
me->resetAttackTimer(BASE_ATTACK);
|
||||
@@ -569,7 +569,7 @@ public:
|
||||
if (!_encounterFinished)
|
||||
{
|
||||
_encounterFinished = true;
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
me->CombatStop();
|
||||
@@ -1720,7 +1720,7 @@ public:
|
||||
events.RepeatEvent(12000);
|
||||
break;
|
||||
case EVENT_DR_CHAMPION_WH:
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISARMED))
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_DISARMED))
|
||||
me->CastSpell(me, SPELL_WHIRLWIND, false);
|
||||
events.RepeatEvent(6000);
|
||||
break;
|
||||
|
||||
@@ -166,7 +166,7 @@ public:
|
||||
_gravityAchievement = true;
|
||||
|
||||
me->SetByteValue(UNIT_FIELD_BYTES_1, UNIT_BYTES_1_OFFSET_STAND_STATE, UNIT_STAND_STATE_STAND); // emerge
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
|
||||
if (m_pInstance)
|
||||
@@ -370,7 +370,7 @@ public:
|
||||
// Animation events
|
||||
case EVENT_START_SECOND_PHASE:
|
||||
me->TextEmote("XT-002 Deconstructor's heart is exposed and leaking energy.", nullptr, true);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
if (Unit* heart = me->GetVehicleKit() ? me->GetVehicleKit()->GetPassenger(HEART_VEHICLE_SEAT) : nullptr)
|
||||
heart->GetAI()->DoAction(ACTION_AWAKEN_HEART);
|
||||
|
||||
@@ -394,7 +394,7 @@ public:
|
||||
events.ScheduleEvent(EVENT_REMOVE_EMOTE, 4000);
|
||||
return;
|
||||
case EVENT_REMOVE_EMOTE:
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetControlled(false, UNIT_STATE_STUNNED);
|
||||
|
||||
RescheduleEvents();
|
||||
@@ -421,7 +421,7 @@ public:
|
||||
{
|
||||
npc_xt002_heartAI(Creature* pCreature) : PassiveAI(pCreature), summons(me)
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
SummonList summons;
|
||||
@@ -464,7 +464,7 @@ public:
|
||||
me->SetHealth(me->GetMaxHealth());
|
||||
me->CastSpell(me, SPELL_HEART_OVERLOAD, true);
|
||||
me->CastSpell(me, SPELL_EXPOSED_HEART, false); // Channeled
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
if (!summons.HasEntry(NPC_PILE_TRIGGER))
|
||||
SummonPiles();
|
||||
@@ -477,7 +477,7 @@ public:
|
||||
pXT002->AI()->DoAction(_damageDone);
|
||||
_damageDone = 0;
|
||||
}
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -544,7 +544,7 @@ public:
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
if (!me->HasFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE))
|
||||
if (!me->HasUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_NOT_SELECTABLE))
|
||||
{
|
||||
_timerSpawn += diff;
|
||||
if (_timerSpawn >= 1900)
|
||||
|
||||
@@ -415,13 +415,13 @@ public:
|
||||
{
|
||||
if (apply)
|
||||
{
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||
me->DisableRotate(false);
|
||||
me->ClearUnitState(UNIT_STATE_ROOT);
|
||||
}
|
||||
else
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE);
|
||||
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE);
|
||||
me->DisableRotate(true);
|
||||
me->AddUnitState(UNIT_STATE_ROOT);
|
||||
}
|
||||
@@ -563,7 +563,7 @@ public:
|
||||
{
|
||||
if ((cr = me->SummonCreature(NPC_DESCEND_INTO_MADNESS, yoggPortalLoc[i].x, yoggPortalLoc[i].y, yoggPortalLoc[i].z, 0, TEMPSUMMON_TIMED_DESPAWN, 25000)))
|
||||
{
|
||||
cr->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
cr->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_NON_ATTACKABLE);
|
||||
cr->SetArmor(_currentIllusion);
|
||||
}
|
||||
}
|
||||
@@ -1112,7 +1112,7 @@ public:
|
||||
me->HandleEmoteCommand(EMOTE_ONESHOT_EMERGE);
|
||||
me->SetInCombatWithZone();
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_PACIFIED);
|
||||
me->SetUnitFlag(UNIT_FLAG_DISABLE_MOVE | UNIT_FLAG_PACIFIED);
|
||||
}
|
||||
else if (param == ACTION_YOGG_SARON_START_YELL)
|
||||
{
|
||||
|
||||
@@ -185,7 +185,7 @@ public:
|
||||
else // if (m_algalonTimer = TIMER_ALGALON_TO_SUMMON)
|
||||
{
|
||||
m_algalonTimer = TIMER_ALGALON_SUMMONED;
|
||||
algalon->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
algalon->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user