mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-29 00:23:48 +00:00
refactor(Core/Unit): PC&NPC Immunity (#11986)
* initial * refactor(Core/Unit): PC & NPC Immunities Cherry-pick TC:74af880217Co-authored-by: Treeston <treeston.nmoc@gmail.com> * fix builds error Cherry-pick TC:74af880217Co-authored-by: Treeston <treeston.nmoc@gmail.com> * Fix nef combat, and replace SetFlag by SetUnitFlag * fix combat with jedoga Co-authored-by: Treeston <treeston.nmoc@gmail.com>
This commit is contained in:
@@ -66,7 +66,7 @@ public:
|
||||
{
|
||||
startFightTimer = 0;
|
||||
uiHopelessnessCount = 0;
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToAll(true);
|
||||
me->SetControlled(false, UNIT_STATE_ROOT);
|
||||
events.Reset();
|
||||
if (pInstance)
|
||||
@@ -75,7 +75,7 @@ public:
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToAll(false);
|
||||
|
||||
events.ScheduleEvent(EVENT_QUIVERING_STRIKE, 5000);
|
||||
events.ScheduleEvent(EVENT_IMPENDING_DESPAIR, 11000);
|
||||
|
||||
@@ -63,7 +63,7 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
startFightTimer = 0;
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToAll(true);
|
||||
events.Reset();
|
||||
if (pInstance)
|
||||
pInstance->SetData(DATA_MARWYN, NOT_STARTED);
|
||||
@@ -71,7 +71,7 @@ public:
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToAll(false);
|
||||
|
||||
events.ScheduleEvent(EVENT_OBLITERATE, 15000);
|
||||
events.ScheduleEvent(EVENT_WELL_OF_CORRUPTION, 13000);
|
||||
|
||||
@@ -755,7 +755,10 @@ public:
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode(why);
|
||||
if (me->GetInstanceScript()->GetData(DATA_WAVE_NUMBER))
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NOT_SELECTABLE);
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetImmuneToAll(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -851,7 +854,10 @@ public:
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode(why);
|
||||
if (me->GetInstanceScript()->GetData(DATA_WAVE_NUMBER))
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NOT_SELECTABLE);
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetImmuneToAll(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -994,7 +1000,10 @@ public:
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode(why);
|
||||
if (me->GetInstanceScript()->GetData(DATA_WAVE_NUMBER))
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NOT_SELECTABLE);
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetImmuneToAll(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -1077,7 +1086,10 @@ public:
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode(why);
|
||||
if (me->GetInstanceScript()->GetData(DATA_WAVE_NUMBER))
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NOT_SELECTABLE);
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetImmuneToAll(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
@@ -1161,7 +1173,10 @@ public:
|
||||
{
|
||||
ScriptedAI::EnterEvadeMode(why);
|
||||
if (me->GetInstanceScript()->GetData(DATA_WAVE_NUMBER))
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NOT_SELECTABLE);
|
||||
{
|
||||
me->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetImmuneToAll(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
};
|
||||
|
||||
@@ -68,7 +68,7 @@ public:
|
||||
break;
|
||||
case 8:
|
||||
_owner.SetReactState(REACT_AGGRESSIVE);
|
||||
_owner.RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
_owner.SetImmuneToAll(false);
|
||||
if (InstanceScript* instance = _owner.GetInstanceScript())
|
||||
instance->SetData(DATA_BATTERED_HILT, 8);
|
||||
break;
|
||||
@@ -96,7 +96,7 @@ public:
|
||||
{
|
||||
Position homePos = _owner.GetHomePosition();
|
||||
_owner.SetReactState(REACT_PASSIVE);
|
||||
_owner.SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
_owner.SetImmuneToAll(true);
|
||||
_owner.SetVisible(false);
|
||||
_owner.UpdatePosition(homePos.GetPositionX(), homePos.GetPositionY(), homePos.GetPositionZ(), homePos.GetOrientation(), true);
|
||||
_owner.StopMovingOnCurrentPos();
|
||||
@@ -629,7 +629,7 @@ public:
|
||||
if (Creature* c = instance->GetCreature(NPC_QuelDelarGUID))
|
||||
{
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
c->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
c->SetImmuneToAll(false);
|
||||
c->RemoveAurasDueToSpell(70300);
|
||||
}
|
||||
break;
|
||||
@@ -889,7 +889,8 @@ public:
|
||||
if (c->GetEntry() == entry)
|
||||
{
|
||||
TrashActive[j] = true;
|
||||
c->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NOT_SELECTABLE);
|
||||
c->RemoveUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
c->SetImmuneToAll(false);
|
||||
c->AI()->DoAction(1);
|
||||
break;
|
||||
}
|
||||
@@ -918,7 +919,8 @@ public:
|
||||
c->GetThreatMgr().ClearAllThreat();
|
||||
c->CombatStop(true);
|
||||
c->InterruptNonMeleeSpells(true);
|
||||
c->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_NOT_SELECTABLE);
|
||||
c->SetUnitFlag(UNIT_FLAG_NOT_SELECTABLE);
|
||||
c->SetImmuneToAll(true);
|
||||
c->Respawn(true);
|
||||
c->UpdatePosition(c->GetHomePosition(), true);
|
||||
c->StopMovingOnCurrentPos();
|
||||
|
||||
@@ -418,7 +418,8 @@ public:
|
||||
c->CastSpell(c, 69753, false);
|
||||
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetUnitFlag(UNIT_FLAG_PREVENT_EMOTES_FROM_CHAT_TEXT);
|
||||
me->SetImmuneToAll(true);
|
||||
me->SetUnitFlag2(UNIT_FLAG2_FEIGN_DEATH);
|
||||
me->SetDynamicFlag(UNIT_DYNFLAG_DEAD);
|
||||
me->AddUnitState(UNIT_STATE_DIED);
|
||||
|
||||
@@ -930,7 +930,7 @@ public:
|
||||
if (Creature* c = pInstance->instance->GetCreature(pInstance->GetGuidData(DATA_TYRANNUS_GUID)))
|
||||
{
|
||||
c->AI()->Talk(SAY_PREFIGHT_1);
|
||||
c->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
c->SetImmuneToPC(false);
|
||||
c->SetReactState(REACT_AGGRESSIVE);
|
||||
//c->ClearUnitState(UNIT_STATE_ONVEHICLE);
|
||||
if (Player* plr = c->SelectNearestPlayer(100.0f))
|
||||
|
||||
Reference in New Issue
Block a user