mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-28 08:06:23 +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:
@@ -219,7 +219,7 @@ public:
|
||||
if (creature->AI()->GetData(DATA_IN_PROGRESS))
|
||||
return true;
|
||||
|
||||
creature->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
creature->SetImmuneToPC(false);
|
||||
creature->RemoveUnitFlag(UNIT_FLAG_SWIMMING);
|
||||
|
||||
player->CastSpell(creature, SPELL_DUEL, false);
|
||||
@@ -584,7 +584,7 @@ public:
|
||||
{
|
||||
ScriptedAI::MoveInLineOfSight(who);
|
||||
|
||||
if (!who->HasUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC) && who->GetEntry() == NPC_GHOUL && me->IsWithinDistInMap(who, 10.0f))
|
||||
if (!who->IsImmuneToNPC() && who->GetEntry() == NPC_GHOUL && me->IsWithinDistInMap(who, 10.0f))
|
||||
if (Unit* owner = who->GetOwner())
|
||||
if (Player* player = owner->ToPlayer())
|
||||
{
|
||||
@@ -593,7 +593,7 @@ public:
|
||||
creature->CastSpell(owner, 52517, true);
|
||||
|
||||
creature->AI()->SetGUID(me->GetGUID());
|
||||
creature->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
creature->SetImmuneToAll(true);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -743,7 +743,7 @@ public:
|
||||
phase = PHASE_CHAINED;
|
||||
events.Reset();
|
||||
me->SetFaction(FACTION_CREATURE);
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(true);
|
||||
me->SetUInt32Value(UNIT_FIELD_BYTES_1, 8);
|
||||
me->LoadEquipment(0, true);
|
||||
}
|
||||
@@ -844,7 +844,7 @@ public:
|
||||
else
|
||||
{
|
||||
me->SetFaction(FACTION_MONSTER);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
phase = PHASE_ATTACKING;
|
||||
|
||||
if (Player* target = ObjectAccessor::GetPlayer(*me, playerGUID))
|
||||
@@ -964,7 +964,7 @@ public:
|
||||
{
|
||||
npc_scarlet_miner_cartAI(Creature* creature) : PassiveAI(creature)
|
||||
{
|
||||
me->ReplaceAllUnitFlags(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToAll(true);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
me->SetDisplayId(me->GetCreatureTemplate()->Modelid1); // Modelid2 is a horse.
|
||||
}
|
||||
@@ -987,7 +987,8 @@ public:
|
||||
me->SetSpeed(MOVE_RUN, 1.25f);
|
||||
|
||||
me->GetMotionMaster()->MoveFollow(miner, 1.0f, 0);
|
||||
me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetImmuneToAll(true);
|
||||
me->SetFaction(FACTION_FRIENDLY);
|
||||
}
|
||||
}
|
||||
@@ -1097,7 +1098,8 @@ public:
|
||||
{
|
||||
me->SetFacingToObject(car);
|
||||
// xinef: add some flags
|
||||
car->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
car->ReplaceAllUnitFlags(UNIT_FLAG_NON_ATTACKABLE);
|
||||
car->SetImmuneToAll(true);
|
||||
car->SetFaction(FACTION_FRIENDLY);
|
||||
}
|
||||
Talk(SAY_SCARLET_MINER_0);
|
||||
|
||||
@@ -255,7 +255,7 @@ public:
|
||||
else
|
||||
{
|
||||
me->GetMotionMaster()->MoveTargetedHome();
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToNPC(true);
|
||||
Reset();
|
||||
}
|
||||
}
|
||||
@@ -313,7 +313,7 @@ public:
|
||||
m_uiValrothGUID = summoned->GetGUID();
|
||||
|
||||
summoned->AddThreat(me, 0.0f);
|
||||
summoned->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
summoned->SetImmuneToPC(false);
|
||||
summons.Summon(summoned);
|
||||
}
|
||||
|
||||
@@ -666,7 +666,7 @@ public:
|
||||
ExecuteSpeech_Counter = 0;
|
||||
PlayerGUID.Clear();
|
||||
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
}
|
||||
|
||||
bool MeetQuestCondition(Player* player)
|
||||
@@ -780,7 +780,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_6, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -826,7 +826,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_8, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -872,7 +872,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_3, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -918,7 +918,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_7, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -964,7 +964,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_4, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -1010,7 +1010,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_9, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -1056,7 +1056,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_5, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -1102,7 +1102,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_10, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -1146,7 +1146,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_1, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
@@ -1192,7 +1192,7 @@ public:
|
||||
case 9:
|
||||
Talk(SAY_EXEC_TIME_2, player);
|
||||
me->SetStandState(UNIT_STAND_STATE_KNEEL);
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC);
|
||||
me->SetImmuneToPC(false);
|
||||
break;
|
||||
case 10:
|
||||
Talk(SAY_EXEC_WAITING, player);
|
||||
|
||||
@@ -465,7 +465,7 @@ public:
|
||||
if (battleStarted == ENCOUNTER_STATE_OUTRO && cr->GetEntry() == NPC_DEFENDER_OF_THE_LIGHT)
|
||||
{
|
||||
cr->SetReactState(REACT_PASSIVE);
|
||||
cr->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
cr->SetImmuneToAll(true);
|
||||
cr->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY1H);
|
||||
cr->HandleEmoteCommand(EMOTE_STATE_READY1H);
|
||||
}
|
||||
@@ -546,7 +546,7 @@ public:
|
||||
events.Reset();
|
||||
summons.DespawnAll();
|
||||
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToAll(true);
|
||||
me->ReplaceAllNpcFlags(UNIT_NPC_FLAG_GOSSIP | UNIT_NPC_FLAG_QUESTGIVER);
|
||||
me->SetStandState(UNIT_STAND_STATE_STAND);
|
||||
me->SetVisible(true);
|
||||
@@ -670,7 +670,7 @@ public:
|
||||
break;
|
||||
}
|
||||
case EVENT_START_COUNTDOWN_14:
|
||||
me->RemoveUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToAll(false);
|
||||
me->SummonCreatureGroup(5);
|
||||
return;
|
||||
case EVENT_FINISH_FIGHT_1:
|
||||
@@ -698,13 +698,13 @@ public:
|
||||
{
|
||||
summon->CombatStop(true);
|
||||
summon->GetThreatMgr().ClearAllThreat();
|
||||
summon->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
summon->SetImmuneToAll(true);
|
||||
summon->SetReactState(REACT_PASSIVE);
|
||||
summon->GetMotionMaster()->Clear(false);
|
||||
}
|
||||
me->CombatStop(true);
|
||||
me->GetThreatMgr().ClearAllThreat();
|
||||
me->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
me->SetImmuneToAll(true);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
me->GetMotionMaster()->Clear(false);
|
||||
|
||||
@@ -1027,7 +1027,7 @@ public:
|
||||
{
|
||||
tirion->CastSpell(tirion, SPELL_TIRION_CHARGE, true);
|
||||
tirion->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_STATE_READY2H);
|
||||
tirion->SetUnitFlag(UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
|
||||
tirion->SetImmuneToAll(true);
|
||||
}
|
||||
break;
|
||||
case EVENT_OUTRO_SCENE_44:
|
||||
|
||||
Reference in New Issue
Block a user