diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2016-06-03 00:30:45 +0200 | 
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2016-06-03 00:30:45 +0200 | 
| commit | b19005715c0d9b15529c0bcd2f675a7909a0f43f (patch) | |
| tree | f9e58639e2bb0700ccd1ed046175f4358205a579 | |
| parent | 7f0e1caf72acb44a738b89037bf4f2555c4ca023 (diff) | |
| parent | 34ef05ce0bfa34855ce33fcdf2bf82d257ae6672 (diff) | |
Merge pull request #16346 from Trisjdc/creature_no_flag_reset_on_combat
Core/Creatures: Remove resetting of UNIT_FLAG_IMMUNE_TO_PC on combat clearing
3 files changed, 5 insertions, 9 deletions
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 2aa32374087..df8d43062c5 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -11398,10 +11398,8 @@ void Unit::SetInCombatState(bool PvP, Unit* enemy)          if (enemy)          {              if (IsAIEnabled) -            {                  creature->AI()->EnterCombat(enemy); -                RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); // unit has engaged in combat, remove immunity so players can fight back -            } +              if (creature->GetFormation())                  creature->GetFormation()->MemberAttackStart(creature, enemy);          } @@ -11442,9 +11440,6 @@ void Unit::ClearInCombat()      // Player's state will be cleared in Player::UpdateContestedPvP      if (Creature* creature = ToCreature())      { -        if (creature->GetCreatureTemplate() && creature->GetCreatureTemplate()->unit_flags & UNIT_FLAG_IMMUNE_TO_PC) -            SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); // set immunity state to the one from db on evade -          ClearUnitState(UNIT_STATE_ATTACK_PLAYER);          if (HasFlag(UNIT_DYNAMIC_FLAGS, UNIT_DYNFLAG_TAPPED))              SetUInt32Value(UNIT_DYNAMIC_FLAGS, creature->GetCreatureTemplate()->dynamicflags); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index 4a0a8217af8..de8d65693b9 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -528,6 +528,7 @@ class boss_the_lich_king : public CreatureScript              void SetupEncounter()              {                  _Reset(); +                me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);                  me->SetReactState(REACT_PASSIVE);                  events.SetPhase(PHASE_INTRO);                  Initialize(); diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 3d5a6ee8dfb..54e3b51fb0d 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -376,6 +376,8 @@ public:              me->SetDisableGravity(true);              me->SetByteFlag(UNIT_FIELD_BYTES_1, 3, UNIT_BYTE1_FLAG_ALWAYS_STAND | UNIT_BYTE1_FLAG_HOVER); +            me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC); +            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);              // TO DO: find what in core is making boss slower than in retail (when correct speed data) or find missing movement flag update or forced spline change              me->SetSpeedRate(MOVE_FLIGHT, _flySpeed * 0.25f);              if (_despawned) @@ -464,7 +466,7 @@ public:                          pos.m_positionZ = alexstraszaBunny->GetPositionZ();                          alexstraszaBunny->GetNearPoint2D(pos.m_positionX, pos.m_positionY, 30.0f, alexstraszaBunny->GetAngle(me));                          me->GetMotionMaster()->MoveLand(POINT_LAND_P_ONE, pos); -                        me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC); +                        me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);                          me->SetReactState(REACT_AGGRESSIVE);                          me->SetInCombatWithZone();                          events.ScheduleEvent(EVENT_LAND_START_ENCOUNTER, 7*IN_MILLISECONDS, 1, PHASE_NOT_STARTED); @@ -604,8 +606,6 @@ public:              // Set speed to normal value              me->SetSpeedRate(MOVE_FLIGHT, _flySpeed); -            me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC); -            me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);              me->RemoveAllAuras();              me->CombatStop(); // Sometimes threat can remain, so it's a safety measure  | 
