aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp4
-rw-r--r--src/server/game/Entities/Creature/Creature.cpp6
-rw-r--r--src/server/game/Entities/Creature/CreatureData.h26
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp6
-rw-r--r--src/server/game/Entities/Unit/UnitDefines.h55
-rw-r--r--src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp48
-rw-r--r--src/server/game/Maps/enuminfo_SpawnData.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp4
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp2
-rw-r--r--src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp6
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp2
11 files changed, 95 insertions, 66 deletions
diff --git a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
index dde0034909c..76a96a401e8 100644
--- a/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
+++ b/src/server/game/Battlegrounds/Zones/BattlegroundIC.cpp
@@ -137,7 +137,7 @@ void BattlegroundIC::PostUpdateImpl(uint32 diff)
{
if (siege->IsAlive())
{
- if (siege->HasUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_CANNOT_SWIM | UNIT_FLAG_IMMUNE_TO_PC)))
+ if (siege->HasUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_CANT_SWIM | UNIT_FLAG_IMMUNE_TO_PC)))
// following sniffs the vehicle always has UNIT_FLAG_CANNOT_SWIM
siege->RemoveUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_IMMUNE_TO_PC));
else
@@ -762,7 +762,7 @@ void BattlegroundIC::HandleCapturedNodes(ICNodePoint* node, bool recapture)
if (Creature* siegeEngine = GetBGCreature(siegeType))
{
- siegeEngine->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_CANNOT_SWIM));
+ siegeEngine->AddUnitFlag(UnitFlags(UNIT_FLAG_NOT_SELECTABLE | UNIT_FLAG_CANT_SWIM));
siegeEngine->SetImmuneToPC(true);
siegeEngine->SetFaction(BG_IC_Factions[(node->faction == TEAM_ALLIANCE ? 0 : 1)]);
}
diff --git a/src/server/game/Entities/Creature/Creature.cpp b/src/server/game/Entities/Creature/Creature.cpp
index ae57f430667..cfea52352f4 100644
--- a/src/server/game/Entities/Creature/Creature.cpp
+++ b/src/server/game/Entities/Creature/Creature.cpp
@@ -3278,7 +3278,7 @@ void Creature::SetSpellFocus(Spell const* focusSpell, WorldObject const* target)
}
}
- if (!HasUnitFlag2(UNIT_FLAG2_DISABLE_TURN))
+ if (!HasUnitFlag2(UNIT_FLAG2_CANNOT_TURN))
{
// Face the target - we need to do this before the unit state is modified for no-turn spells
if (target)
@@ -3324,7 +3324,7 @@ void Creature::ReleaseSpellFocus(Spell const* focusSpell, bool withDelay)
if (IsPet()) // player pets do not use delay system
{
- if (!HasUnitFlag2(UNIT_FLAG2_DISABLE_TURN))
+ if (!HasUnitFlag2(UNIT_FLAG2_CANNOT_TURN))
ReacquireSpellFocusTarget();
}
else // don't allow re-target right away to prevent visual bugs
@@ -3343,7 +3343,7 @@ void Creature::ReacquireSpellFocusTarget()
SetUpdateFieldValue(m_values.ModifyValue(&Unit::m_unitData).ModifyValue(&UF::UnitData::Target), _spellFocusInfo.Target);
- if (!HasUnitFlag2(UNIT_FLAG2_DISABLE_TURN))
+ if (!HasUnitFlag2(UNIT_FLAG2_CANNOT_TURN))
{
if (!_spellFocusInfo.Target.IsEmpty())
{
diff --git a/src/server/game/Entities/Creature/CreatureData.h b/src/server/game/Entities/Creature/CreatureData.h
index 96f97cbaf9e..626dbaa03ea 100644
--- a/src/server/game/Entities/Creature/CreatureData.h
+++ b/src/server/game/Entities/Creature/CreatureData.h
@@ -62,7 +62,7 @@ enum CreatureDifficultyFlags
CREATURE_DIFFICULTYFLAGS_IGNORE_COMBAT = 0x02000000,
CREATURE_DIFFICULTYFLAGS_UNK12 = 0x04000000,
CREATURE_DIFFICULTYFLAGS_SUMMON_GUARD_IF_IN_AGGRO_RANGE = 0x08000000, // Creature will summon a guard if player is within its aggro range (even if creature doesn't attack per se)
- CREATURE_DIFFICULTYFLAGS_ONLY_SWIM = 0x10000000, // UNIT_FLAG_UNK_15
+ CREATURE_DIFFICULTYFLAGS_CAN_SWIM = 0x10000000, // UnitFlags 0x8000 UNIT_FLAG_CAN_SWIM
CREATURE_DIFFICULTYFLAGS_UNK13 = 0x20000000, // Related to gravity
CREATURE_DIFFICULTYFLAGS_TFLAG_UNK5 = 0x40000000, // CREATURE_TYPEFLAGS_UNK5
CREATURE_DIFFICULTYFLAGS_LARGE_AOI = 0x80000000 // UnitFlags2 0x200000
@@ -95,7 +95,7 @@ enum CreatureDifficultyFlags2
CREATURE_DIFFICULTYFLAGS_2_UNK16 = 0x00400000,
CREATURE_DIFFICULTYFLAGS_2_UNK17 = 0x00800000,
CREATURE_DIFFICULTYFLAGS_2_UNK18 = 0x01000000,
- CREATURE_DIFFICULTYFLAGS_2_HIDE_BODY = 0x02000000, // UNIT_FLAG2_UNK1
+ CREATURE_DIFFICULTYFLAGS_2_HIDE_BODY = 0x02000000, // UnitFlags2 0x2 UNIT_FLAG2_HIDE_BODY
CREATURE_DIFFICULTYFLAGS_2_UNK19 = 0x04000000,
CREATURE_DIFFICULTYFLAGS_2_SERVER_ONLY = 0x08000000,
CREATURE_DIFFICULTYFLAGS_2_CAN_SAFE_FALL = 0x10000000,
@@ -108,13 +108,13 @@ enum CreatureDifficultyFlags3
{
CREATURE_DIFFICULTYFLAGS_3_UNK1 = 0x00000001,
CREATURE_DIFFICULTYFLAGS_3_UNK2 = 0x00000002,
- CREATURE_DIFFICULTYFLAGS_3_INSTANTLY_APPEAR_MODEL = 0x00000004, // UNIT_FLAG2_INSTANTLY_APPEAR_MODEL
+ CREATURE_DIFFICULTYFLAGS_3_DONT_FADE_IN = 0x00000004, // UNIT_FLAG2_INSTANTLY_APPEAR_MODEL
CREATURE_DIFFICULTYFLAGS_3_MASK_UID = 0x00000008, // CREATURE_TYPEFLAG_MASK_UID
CREATURE_DIFFICULTYFLAGS_3_ENGINEERLOOT = 0x00000010, // CREATURE_TYPEFLAGS_ENGINEERLOOT
CREATURE_DIFFICULTYFLAGS_3_UNK3 = 0x00000020,
CREATURE_DIFFICULTYFLAGS_3_UNK4 = 0x00000040,
CREATURE_DIFFICULTYFLAGS_3_UNK5 = 0x00000080,
- CREATURE_DIFFICULTYFLAGS_3_CANNOT_SWIM = 0x00000100, // UNIT_FLAG_UNK_14
+ CREATURE_DIFFICULTYFLAGS_3_CANT_SWIM = 0x00000100, // UnitFlags 0x4000
CREATURE_DIFFICULTYFLAGS_3_EXOTIC = 0x00000200, // CREATURE_TYPEFLAGS_EXOTIC
CREATURE_DIFFICULTYFLAGS_3_GIGANTIC_AOI = 0x00000400, // Since MoP, creatures with that flag have UnitFlags2 0x400000
CREATURE_DIFFICULTYFLAGS_3_INFINITE_AOI = 0x00000800, // Since MoP, creatures with that flag have UnitFlags2 0x40000000
@@ -131,7 +131,7 @@ enum CreatureDifficultyFlags3
CREATURE_DIFFICULTYFLAGS_3_PROJECTILE_COLLISION = 0x00400000, // CREATURE_TYPEFLAGS_PROJECTILE_COLLISION
CREATURE_DIFFICULTYFLAGS_3_CAN_BE_MULTITAPPED = 0x00800000,
CREATURE_DIFFICULTYFLAGS_3_DO_NOT_PLAY_MOUNTED_ANIMATIONS = 0x01000000, // CREATURE_TYPEFLAGS_DO_NOT_PLAY_MOUNTED_ANIMATIONS
- CREATURE_DIFFICULTYFLAGS_3_DISABLE_TURN = 0x02000000, // UNIT_FLAG2_DISABLE_TURN
+ CREATURE_DIFFICULTYFLAGS_3_CANNOT_TURN = 0x02000000, // UnitFlags2 0x8000
CREATURE_DIFFICULTYFLAGS_3_UNK12 = 0x04000000,
CREATURE_DIFFICULTYFLAGS_3_UNK13 = 0x08000000,
CREATURE_DIFFICULTYFLAGS_3_UNK14 = 0x10000000,
@@ -157,17 +157,17 @@ enum CreatureDifficultyFlags4
CREATURE_DIFFICULTYFLAGS_4_UNK9 = 0x00001000,
CREATURE_DIFFICULTYFLAGS_4_UNK10 = 0x00002000,
CREATURE_DIFFICULTYFLAGS_4_UNK11 = 0x00004000,
- CREATURE_DIFFICULTYFLAGS_4_UFLAG2_UNK20 = 0x00008000, // UnitFlags2 0x100000
+ CREATURE_DIFFICULTYFLAGS_4_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS = 0x00008000, // UnitFlags2 0x100000
CREATURE_DIFFICULTYFLAGS_4_UNK12 = 0x00010000,
CREATURE_DIFFICULTYFLAGS_4_UNK13 = 0x00020000,
CREATURE_DIFFICULTYFLAGS_4_UNK14 = 0x00040000,
CREATURE_DIFFICULTYFLAGS_4_FORCE_GOSSIP = 0x00080000, // CREATURE_TYPEFLAGS_FORCE_GOSSIP
CREATURE_DIFFICULTYFLAGS_4_UNK15 = 0x00100000,
CREATURE_DIFFICULTYFLAGS_4_DO_NOT_SHEATHE = 0x00200000, // CREATURE_TYPEFLAGS_DO_NOT_SHEATHE
- CREATURE_DIFFICULTYFLAGS_4_IGNORE_SPELL_MIN_RANGE_RESTRICTIONS = 0x00400000, // UnitFlags2 0x8000000
+ CREATURE_DIFFICULTYFLAGS_4_ATTACKER_IGNORES_MINIMUM_RANGES = 0x00400000, // UnitFlags2 0x8000000
CREATURE_DIFFICULTYFLAGS_4_UNK16 = 0x00800000,
- CREATURE_DIFFICULTYFLAGS_4_PREVENT_SWIM = 0x01000000, // UnitFlags2 0x1000000
- CREATURE_DIFFICULTYFLAGS_4_HIDE_IN_COMBAT_LOG = 0x02000000, // UnitFlags2 0x2000000
+ CREATURE_DIFFICULTYFLAGS_4_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS = 0x01000000, // UnitFlags2 0x1000000
+ CREATURE_DIFFICULTYFLAGS_4_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS = 0x02000000, // UnitFlags2 0x2000000
CREATURE_DIFFICULTYFLAGS_4_UNK17 = 0x04000000,
CREATURE_DIFFICULTYFLAGS_4_UNK18 = 0x08000000,
CREATURE_DIFFICULTYFLAGS_4_UNK19 = 0x10000000,
@@ -178,20 +178,20 @@ enum CreatureDifficultyFlags4
enum CreatureDifficultyFlags5
{
- CREATURE_DIFFICULTYFLAGS_5_UNTARGETABLE_BY_CLIENT = 0x00000001, // UNIT_FLAG2_UNTARGETABLE_BY_CLIENT
+ CREATURE_DIFFICULTYFLAGS_5_UNTARGETABLE_BY_CLIENT = 0x00000001, // UnitFlags2 0x4000000 UNIT_FLAG2_UNTARGETABLE_BY_CLIENT
CREATURE_DIFFICULTYFLAGS_5_UNK1 = 0x00000002,
- CREATURE_DIFFICULTYFLAGS_5_UFLAG2_UNK30 = 0x00000004, // UnitFlags2 0x10000000
+ CREATURE_DIFFICULTYFLAGS_5_UNINTERACTIBLE_IF_HOSTILE = 0x00000004, // UnitFlags2 0x10000000
CREATURE_DIFFICULTYFLAGS_5_UNK2 = 0x00000008,
CREATURE_DIFFICULTYFLAGS_5_UNK3 = 0x00000010,
CREATURE_DIFFICULTYFLAGS_5_UNK4 = 0x00000020,
CREATURE_DIFFICULTYFLAGS_5_UNK5 = 0x00000040,
CREATURE_DIFFICULTYFLAGS_5_UNK6 = 0x00000080,
- CREATURE_DIFFICULTYFLAGS_5_CAN_INTERACT_EVEN_IF_HOSTILE = 0x00000100, // UNIT_FLAG2_ALLOW_ENEMY_INTERACT
+ CREATURE_DIFFICULTYFLAGS_5_INTERACT_WHILE_HOSTILE = 0x00000100, // UnitFlags2 0x4000 UNIT_FLAG2_INTERACT_WHILE_HOSTILE
CREATURE_DIFFICULTYFLAGS_5_UNK7 = 0x00000200,
CREATURE_DIFFICULTYFLAGS_5_TFLAG2_UNK1 = 0x00000400, // CREATURE_TYPEFLAGS_2_UNK1
CREATURE_DIFFICULTYFLAGS_5_TFLAG2_UNK2 = 0x00000800, // CREATURE_TYPEFLAGS_2_UNK2
CREATURE_DIFFICULTYFLAGS_5_TFLAG2_UNK3 = 0x00001000, // CREATURE_TYPEFLAGS_2_UNK3
- CREATURE_DIFFICULTYFLAGS_5_UFLAG2_UNK19 = 0x00002000, // UnitFlags2 0x80000
+ CREATURE_DIFFICULTYFLAGS_5_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER = 0x00002000, // UnitFlags2 0x80000 141
CREATURE_DIFFICULTYFLAGS_5_UNK8 = 0x00004000,
CREATURE_DIFFICULTYFLAGS_5_UNK9 = 0x00008000,
CREATURE_DIFFICULTYFLAGS_5_UNK10 = 0x00010000,
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index a9434f21e21..a88ee60ea88 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -2009,7 +2009,7 @@ void Unit::AttackerStateUpdate(Unit* victim, WeaponAttackType attType, bool extr
if (attType != BASE_ATTACK && attType != OFF_ATTACK)
return; // ignore ranged case
- if (GetTypeId() == TYPEID_UNIT && !HasUnitFlag(UNIT_FLAG_POSSESSED) && !HasUnitFlag2(UNIT_FLAG2_DISABLE_TURN))
+ if (GetTypeId() == TYPEID_UNIT && !HasUnitFlag(UNIT_FLAG_POSSESSED) && !HasUnitFlag2(UNIT_FLAG2_CANNOT_TURN))
SetFacingToObject(victim, false); // update client side facing to face the target (prevents visual glitches when casting untargeted spells)
// melee attack spell cast at main hand attack only - no normal melee dmg dealt
@@ -12034,7 +12034,7 @@ bool Unit::IsFalling() const
bool Unit::CanSwim() const
{
// Mirror client behavior, if this method returns false then client will not use swimming animation and for players will apply gravity as if there was no water
- if (HasUnitFlag(UNIT_FLAG_CANNOT_SWIM))
+ if (HasUnitFlag(UNIT_FLAG_CANT_SWIM))
return false;
if (HasUnitFlag(UNIT_FLAG_PLAYER_CONTROLLED)) // is player
return true;
@@ -12042,7 +12042,7 @@ bool Unit::CanSwim() const
return false;
if (IsPet() && HasUnitFlag(UNIT_FLAG_PET_IN_COMBAT))
return true;
- return HasUnitFlag(UnitFlags(UNIT_FLAG_RENAME | UNIT_FLAG_SWIMMING));
+ return HasUnitFlag(UnitFlags(UNIT_FLAG_RENAME | UNIT_FLAG_CAN_SWIM));
}
void Unit::NearTeleportTo(Position const& pos, bool casting /*= false*/)
diff --git a/src/server/game/Entities/Unit/UnitDefines.h b/src/server/game/Entities/Unit/UnitDefines.h
index dbe82b9e899..8fd5b8bdea8 100644
--- a/src/server/game/Entities/Unit/UnitDefines.h
+++ b/src/server/game/Entities/Unit/UnitDefines.h
@@ -131,8 +131,8 @@ enum UnitFlags : uint32
UNIT_FLAG_PET_IN_COMBAT = 0x00000800, // on player pets: whether the pet is chasing a target to attack || on other units: whether any of the unit's minions is in combat
UNIT_FLAG_PVP = 0x00001000, // changed in 3.0.3
UNIT_FLAG_SILENCED = 0x00002000, // silenced, 2.1.1
- UNIT_FLAG_CANNOT_SWIM = 0x00004000, // 2.0.8
- UNIT_FLAG_SWIMMING = 0x00008000, // shows swim animation in water
+ UNIT_FLAG_CANT_SWIM = 0x00004000, // TITLE Can't Swim
+ UNIT_FLAG_CAN_SWIM = 0x00008000, // TITLE Can Swim DESCRIPTION shows swim animation in water
UNIT_FLAG_NON_ATTACKABLE_2 = 0x00010000, // removes attackable icon, if on yourself, cannot assist self but can cast TARGET_SELF spells - added by SPELL_AURA_MOD_UNATTACKABLE
UNIT_FLAG_PACIFIED = 0x00020000, // 3.0.3 ok
UNIT_FLAG_STUNNED = 0x00040000, // 3.0.3 ok
@@ -155,27 +155,36 @@ enum UnitFlags : uint32
// EnumUtils: DESCRIBE THIS
enum UnitFlags2 : uint32
{
- UNIT_FLAG2_FEIGN_DEATH = 0x00000001,
- UNIT_FLAG2_UNK1 = 0x00000002, // Hide unit model (show only player equip)
- UNIT_FLAG2_IGNORE_REPUTATION = 0x00000004,
- UNIT_FLAG2_COMPREHEND_LANG = 0x00000008,
- UNIT_FLAG2_MIRROR_IMAGE = 0x00000010,
- UNIT_FLAG2_INSTANTLY_APPEAR_MODEL = 0x00000020, // Unit model instantly appears when summoned (does not fade in)
- UNIT_FLAG2_FORCE_MOVEMENT = 0x00000040,
- UNIT_FLAG2_DISARM_OFFHAND = 0x00000080,
- UNIT_FLAG2_DISABLE_PRED_STATS = 0x00000100, // Player has disabled predicted stats (Used by raid frames)
- UNIT_FLAG2_ALLOW_CHANGING_TALENTS = 0x00000200, // Allows changing talents outside rest area
- UNIT_FLAG2_DISARM_RANGED = 0x00000400, // this does not disable ranged weapon display (maybe additional flag needed?)
- UNIT_FLAG2_REGENERATE_POWER = 0x00000800,
- UNIT_FLAG2_RESTRICT_PARTY_INTERACTION = 0x00001000, // Restrict interaction to party or raid
- UNIT_FLAG2_PREVENT_SPELL_CLICK = 0x00002000, // Prevent spellclick
- UNIT_FLAG2_ALLOW_ENEMY_INTERACT = 0x00004000,
- UNIT_FLAG2_DISABLE_TURN = 0x00008000,
- UNIT_FLAG2_UNK2 = 0x00010000,
- UNIT_FLAG2_PLAY_DEATH_ANIM = 0x00020000, // Plays special death animation upon death
- UNIT_FLAG2_ALLOW_CHEAT_SPELLS = 0x00040000, // Allows casting spells with AttributesEx7 & SPELL_ATTR7_IS_CHEAT_SPELL
- UNIT_FLAG2_NO_ACTIONS = 0x00800000,
- UNIT_FLAG2_UNTARGETABLE_BY_CLIENT = 0x04000000 // Unit cannot be targeted by client (even in GM mode)
+ UNIT_FLAG2_FEIGN_DEATH = 0x00000001,
+ UNIT_FLAG2_HIDE_BODY = 0x00000002, // TITLE Hide Body DESCRIPTION Hide unit model (show only player equip)
+ UNIT_FLAG2_IGNORE_REPUTATION = 0x00000004,
+ UNIT_FLAG2_COMPREHEND_LANG = 0x00000008,
+ UNIT_FLAG2_MIRROR_IMAGE = 0x00000010,
+ UNIT_FLAG2_INSTANTLY_DONT_FADE_IN = 0x00000020, // TITLE Don't Fade In DESCRIPTION Unit model instantly appears when summoned (does not fade in)
+ UNIT_FLAG2_FORCE_MOVEMENT = 0x00000040,
+ UNIT_FLAG2_DISARM_OFFHAND = 0x00000080,
+ UNIT_FLAG2_DISABLE_PRED_STATS = 0x00000100, // Player has disabled predicted stats (Used by raid frames)
+ UNIT_FLAG2_ALLOW_CHANGING_TALENTS = 0x00000200, // Allows changing talents outside rest area
+ UNIT_FLAG2_DISARM_RANGED = 0x00000400, // this does not disable ranged weapon display (maybe additional flag needed?)
+ UNIT_FLAG2_REGENERATE_POWER = 0x00000800,
+ UNIT_FLAG2_RESTRICT_PARTY_INTERACTION = 0x00001000, // Restrict interaction to party or raid
+ UNIT_FLAG2_PREVENT_SPELL_CLICK = 0x00002000, // Prevent spellclick
+ UNIT_FLAG2_INTERACT_WHILE_HOSTILE = 0x00004000, // TITLE Interact while Hostile
+ UNIT_FLAG2_CANNOT_TURN = 0x00008000, // TITLE Cannot Turn
+ UNIT_FLAG2_UNK2 = 0x00010000,
+ UNIT_FLAG2_PLAY_DEATH_ANIM = 0x00020000, // Plays special death animation upon death
+ UNIT_FLAG2_ALLOW_CHEAT_SPELLS = 0x00040000, // Allows casting spells with AttributesEx7 & SPELL_ATTR7_IS_CHEAT_SPELL
+ UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER = 0x00080000, // TITLE Suppress highlight when targeted or moused over
+ UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS = 0x00100000, // TITLE Treat as Raid Unit For Helpful Spells (Instances ONLY)
+ UNIT_FLAG2_LARGE_AOI = 0x00200000, // TITLE Large (AOI)
+ UNIT_FLAG2_GIGANTIC_AOI = 0x00400000, // TITLE Gigantic (AOI)
+ UNIT_FLAG2_NO_ACTIONS = 0x00800000,
+ UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS = 0x01000000, // TITLE AI will only swim if target swims
+ UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS = 0x02000000, // TITLE Don't generate combat log when engaged with NPC's
+ UNIT_FLAG2_UNTARGETABLE_BY_CLIENT = 0x04000000, // TITLE Untargetable By Client
+ UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES = 0x08000000, // TITLE Attacker Ignores Minimum Ranges
+ UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE = 0x10000000, // TITLE Uninteractible If Hostile
+ UNIT_FLAG2_INFINITE_AOI = 0x40000000, // TITLE Infinite (AOI)
};
// Value masks for UNIT_FIELD_FLAGS_3
diff --git a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp
index eb21b6796b7..09abb48252a 100644
--- a/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp
+++ b/src/server/game/Entities/Unit/enuminfo_UnitDefines.cpp
@@ -47,8 +47,8 @@ TC_API_EXPORT EnumText EnumUtils<UnitFlags>::ToString(UnitFlags value)
case UNIT_FLAG_PET_IN_COMBAT: return { "UNIT_FLAG_PET_IN_COMBAT", "UNIT_FLAG_PET_IN_COMBAT", "on player pets: whether the pet is chasing a target to attack || on other units: whether any of the unit's minions is in combat" };
case UNIT_FLAG_PVP: return { "UNIT_FLAG_PVP", "UNIT_FLAG_PVP", "changed in 3.0.3" };
case UNIT_FLAG_SILENCED: return { "UNIT_FLAG_SILENCED", "UNIT_FLAG_SILENCED", "silenced, 2.1.1" };
- case UNIT_FLAG_CANNOT_SWIM: return { "UNIT_FLAG_CANNOT_SWIM", "UNIT_FLAG_CANNOT_SWIM", "2.0.8" };
- case UNIT_FLAG_SWIMMING: return { "UNIT_FLAG_SWIMMING", "UNIT_FLAG_SWIMMING", "shows swim animation in water" };
+ case UNIT_FLAG_CANT_SWIM: return { "UNIT_FLAG_CANT_SWIM", "Can't Swim", "" };
+ case UNIT_FLAG_CAN_SWIM: return { "UNIT_FLAG_CAN_SWIM", "Can Swim", "shows swim animation in water" };
case UNIT_FLAG_NON_ATTACKABLE_2: return { "UNIT_FLAG_NON_ATTACKABLE_2", "UNIT_FLAG_NON_ATTACKABLE_2", "removes attackable icon, if on yourself, cannot assist self but can cast TARGET_SELF spells - added by SPELL_AURA_MOD_UNATTACKABLE" };
case UNIT_FLAG_PACIFIED: return { "UNIT_FLAG_PACIFIED", "UNIT_FLAG_PACIFIED", "3.0.3 ok" };
case UNIT_FLAG_STUNNED: return { "UNIT_FLAG_STUNNED", "UNIT_FLAG_STUNNED", "3.0.3 ok" };
@@ -91,8 +91,8 @@ TC_API_EXPORT UnitFlags EnumUtils<UnitFlags>::FromIndex(size_t index)
case 11: return UNIT_FLAG_PET_IN_COMBAT;
case 12: return UNIT_FLAG_PVP;
case 13: return UNIT_FLAG_SILENCED;
- case 14: return UNIT_FLAG_CANNOT_SWIM;
- case 15: return UNIT_FLAG_SWIMMING;
+ case 14: return UNIT_FLAG_CANT_SWIM;
+ case 15: return UNIT_FLAG_CAN_SWIM;
case 16: return UNIT_FLAG_NON_ATTACKABLE_2;
case 17: return UNIT_FLAG_PACIFIED;
case 18: return UNIT_FLAG_STUNNED;
@@ -122,11 +122,11 @@ TC_API_EXPORT EnumText EnumUtils<UnitFlags2>::ToString(UnitFlags2 value)
switch (value)
{
case UNIT_FLAG2_FEIGN_DEATH: return { "UNIT_FLAG2_FEIGN_DEATH", "UNIT_FLAG2_FEIGN_DEATH", "" };
- case UNIT_FLAG2_UNK1: return { "UNIT_FLAG2_UNK1", "UNIT_FLAG2_UNK1", "Hide unit model (show only player equip)" };
+ case UNIT_FLAG2_HIDE_BODY: return { "UNIT_FLAG2_HIDE_BODY", "Hide Body", "Hide unit model (show only player equip)" };
case UNIT_FLAG2_IGNORE_REPUTATION: return { "UNIT_FLAG2_IGNORE_REPUTATION", "UNIT_FLAG2_IGNORE_REPUTATION", "" };
case UNIT_FLAG2_COMPREHEND_LANG: return { "UNIT_FLAG2_COMPREHEND_LANG", "UNIT_FLAG2_COMPREHEND_LANG", "" };
case UNIT_FLAG2_MIRROR_IMAGE: return { "UNIT_FLAG2_MIRROR_IMAGE", "UNIT_FLAG2_MIRROR_IMAGE", "" };
- case UNIT_FLAG2_INSTANTLY_APPEAR_MODEL: return { "UNIT_FLAG2_INSTANTLY_APPEAR_MODEL", "UNIT_FLAG2_INSTANTLY_APPEAR_MODEL", "Unit model instantly appears when summoned (does not fade in)" };
+ case UNIT_FLAG2_INSTANTLY_DONT_FADE_IN: return { "UNIT_FLAG2_INSTANTLY_DONT_FADE_IN", "Don't Fade In", "Unit model instantly appears when summoned (does not fade in)" };
case UNIT_FLAG2_FORCE_MOVEMENT: return { "UNIT_FLAG2_FORCE_MOVEMENT", "UNIT_FLAG2_FORCE_MOVEMENT", "" };
case UNIT_FLAG2_DISARM_OFFHAND: return { "UNIT_FLAG2_DISARM_OFFHAND", "UNIT_FLAG2_DISARM_OFFHAND", "" };
case UNIT_FLAG2_DISABLE_PRED_STATS: return { "UNIT_FLAG2_DISABLE_PRED_STATS", "UNIT_FLAG2_DISABLE_PRED_STATS", "Player has disabled predicted stats (Used by raid frames)" };
@@ -135,18 +135,28 @@ TC_API_EXPORT EnumText EnumUtils<UnitFlags2>::ToString(UnitFlags2 value)
case UNIT_FLAG2_REGENERATE_POWER: return { "UNIT_FLAG2_REGENERATE_POWER", "UNIT_FLAG2_REGENERATE_POWER", "" };
case UNIT_FLAG2_RESTRICT_PARTY_INTERACTION: return { "UNIT_FLAG2_RESTRICT_PARTY_INTERACTION", "UNIT_FLAG2_RESTRICT_PARTY_INTERACTION", "Restrict interaction to party or raid" };
case UNIT_FLAG2_PREVENT_SPELL_CLICK: return { "UNIT_FLAG2_PREVENT_SPELL_CLICK", "UNIT_FLAG2_PREVENT_SPELL_CLICK", "Prevent spellclick" };
- case UNIT_FLAG2_ALLOW_ENEMY_INTERACT: return { "UNIT_FLAG2_ALLOW_ENEMY_INTERACT", "UNIT_FLAG2_ALLOW_ENEMY_INTERACT", "" };
- case UNIT_FLAG2_DISABLE_TURN: return { "UNIT_FLAG2_DISABLE_TURN", "UNIT_FLAG2_DISABLE_TURN", "" };
+ case UNIT_FLAG2_INTERACT_WHILE_HOSTILE: return { "UNIT_FLAG2_INTERACT_WHILE_HOSTILE", "Interact while Hostile", "" };
+ case UNIT_FLAG2_CANNOT_TURN: return { "UNIT_FLAG2_CANNOT_TURN", "Cannot Turn", "" };
case UNIT_FLAG2_UNK2: return { "UNIT_FLAG2_UNK2", "UNIT_FLAG2_UNK2", "" };
case UNIT_FLAG2_PLAY_DEATH_ANIM: return { "UNIT_FLAG2_PLAY_DEATH_ANIM", "UNIT_FLAG2_PLAY_DEATH_ANIM", "Plays special death animation upon death" };
case UNIT_FLAG2_ALLOW_CHEAT_SPELLS: return { "UNIT_FLAG2_ALLOW_CHEAT_SPELLS", "UNIT_FLAG2_ALLOW_CHEAT_SPELLS", "Allows casting spells with AttributesEx7 & SPELL_ATTR7_IS_CHEAT_SPELL" };
+ case UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER: return { "UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER", "Suppress highlight when targeted or moused over", "" };
+ case UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS: return { "UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS", "Treat as Raid Unit For Helpful Spells (Instances ONLY)", "" };
+ case UNIT_FLAG2_LARGE_AOI: return { "UNIT_FLAG2_LARGE_AOI", "Large (AOI)", "" };
+ case UNIT_FLAG2_GIGANTIC_AOI: return { "UNIT_FLAG2_GIGANTIC_AOI", "Gigantic (AOI)", "" };
case UNIT_FLAG2_NO_ACTIONS: return { "UNIT_FLAG2_NO_ACTIONS", "UNIT_FLAG2_NO_ACTIONS", "" };
+ case UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS: return { "UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS", "AI will only swim if target swims", "" };
+ case UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS: return { "UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS", "Don't generate combat log when engaged with NPC's", "" };
+ case UNIT_FLAG2_UNTARGETABLE_BY_CLIENT: return { "UNIT_FLAG2_UNTARGETABLE_BY_CLIENT", "Untargetable By Client", "" };
+ case UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES: return { "UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES", "Attacker Ignores Minimum Ranges", "" };
+ case UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE: return { "UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE", "Uninteractible If Hostile", "" };
+ case UNIT_FLAG2_INFINITE_AOI: return { "UNIT_FLAG2_INFINITE_AOI", "Infinite (AOI)", "" };
default: throw std::out_of_range("value");
}
}
template <>
-TC_API_EXPORT size_t EnumUtils<UnitFlags2>::Count() { return 20; }
+TC_API_EXPORT size_t EnumUtils<UnitFlags2>::Count() { return 30; }
template <>
TC_API_EXPORT UnitFlags2 EnumUtils<UnitFlags2>::FromIndex(size_t index)
@@ -154,11 +164,11 @@ TC_API_EXPORT UnitFlags2 EnumUtils<UnitFlags2>::FromIndex(size_t index)
switch (index)
{
case 0: return UNIT_FLAG2_FEIGN_DEATH;
- case 1: return UNIT_FLAG2_UNK1;
+ case 1: return UNIT_FLAG2_HIDE_BODY;
case 2: return UNIT_FLAG2_IGNORE_REPUTATION;
case 3: return UNIT_FLAG2_COMPREHEND_LANG;
case 4: return UNIT_FLAG2_MIRROR_IMAGE;
- case 5: return UNIT_FLAG2_INSTANTLY_APPEAR_MODEL;
+ case 5: return UNIT_FLAG2_INSTANTLY_DONT_FADE_IN;
case 6: return UNIT_FLAG2_FORCE_MOVEMENT;
case 7: return UNIT_FLAG2_DISARM_OFFHAND;
case 8: return UNIT_FLAG2_DISABLE_PRED_STATS;
@@ -167,12 +177,22 @@ TC_API_EXPORT UnitFlags2 EnumUtils<UnitFlags2>::FromIndex(size_t index)
case 11: return UNIT_FLAG2_REGENERATE_POWER;
case 12: return UNIT_FLAG2_RESTRICT_PARTY_INTERACTION;
case 13: return UNIT_FLAG2_PREVENT_SPELL_CLICK;
- case 14: return UNIT_FLAG2_ALLOW_ENEMY_INTERACT;
- case 15: return UNIT_FLAG2_DISABLE_TURN;
+ case 14: return UNIT_FLAG2_INTERACT_WHILE_HOSTILE;
+ case 15: return UNIT_FLAG2_CANNOT_TURN;
case 16: return UNIT_FLAG2_UNK2;
case 17: return UNIT_FLAG2_PLAY_DEATH_ANIM;
case 18: return UNIT_FLAG2_ALLOW_CHEAT_SPELLS;
- case 19: return UNIT_FLAG2_NO_ACTIONS;
+ case 19: return UNIT_FLAG2_SUPPRESS_HIGHLIGHT_WHEN_TARGETED_OR_MOUSED_OVER;
+ case 20: return UNIT_FLAG2_TREAT_AS_RAID_UNIT_FOR_HELPFUL_SPELLS;
+ case 21: return UNIT_FLAG2_LARGE_AOI;
+ case 22: return UNIT_FLAG2_GIGANTIC_AOI;
+ case 23: return UNIT_FLAG2_NO_ACTIONS;
+ case 24: return UNIT_FLAG2_AI_WILL_ONLY_SWIM_IF_TARGET_SWIMS;
+ case 25: return UNIT_FLAG2_DONT_GENERATE_COMBAT_LOG_WHEN_ENGAGED_WITH_NPCS;
+ case 26: return UNIT_FLAG2_UNTARGETABLE_BY_CLIENT;
+ case 27: return UNIT_FLAG2_ATTACKER_IGNORES_MINIMUM_RANGES;
+ case 28: return UNIT_FLAG2_UNINTERACTIBLE_IF_HOSTILE;
+ case 29: return UNIT_FLAG2_INFINITE_AOI;
default: throw std::out_of_range("index");
}
}
diff --git a/src/server/game/Maps/enuminfo_SpawnData.cpp b/src/server/game/Maps/enuminfo_SpawnData.cpp
index a4ff6770ed0..f999952efc0 100644
--- a/src/server/game/Maps/enuminfo_SpawnData.cpp
+++ b/src/server/game/Maps/enuminfo_SpawnData.cpp
@@ -41,7 +41,7 @@ TC_API_EXPORT EnumText EnumUtils<SpawnObjectType>::ToString(SpawnObjectType valu
}
template <>
-TC_API_EXPORT size_t EnumUtils<SpawnObjectType>::Count() { return 2; }
+TC_API_EXPORT size_t EnumUtils<SpawnObjectType>::Count() { return 3; }
template <>
TC_API_EXPORT SpawnObjectType EnumUtils<SpawnObjectType>::FromIndex(size_t index)
diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
index 959f3b4737e..0f5d44370ca 100644
--- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
+++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp
@@ -574,7 +574,7 @@ public:
me->RestoreFaction();
CombatAI::Reset();
- me->AddUnitFlag(UNIT_FLAG_SWIMMING);
+ me->AddUnitFlag(UNIT_FLAG_CAN_SWIM);
}
void SpellHit(WorldObject* caster, SpellInfo const* spellInfo) override
@@ -666,7 +666,7 @@ public:
return true;
me->SetImmuneToPC(false);
- me->RemoveUnitFlag(UNIT_FLAG_SWIMMING);
+ me->RemoveUnitFlag(UNIT_FLAG_CAN_SWIM);
player->CastSpell(me, SPELL_DUEL, false);
player->CastSpell(player, SPELL_DUEL_FLAG, true);
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp
index 3dc7df4841b..83f98106dbb 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sister_svalna.cpp
@@ -454,7 +454,7 @@ struct boss_sister_svalna : public BossAI
CastSpellExtraArgs args;
args.AddSpellBP0(1);
summon->CastSpell(target, VEHICLE_SPELL_RIDE_HARDCODED, args);
- summon->AddUnitFlag2(UnitFlags2(UNIT_FLAG2_UNK1 | UNIT_FLAG2_ALLOW_ENEMY_INTERACT));
+ summon->AddUnitFlag2(UnitFlags2(UNIT_FLAG2_HIDE_BODY | UNIT_FLAG2_INTERACT_WHILE_HOSTILE));
}
break;
default:
diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
index a1ea341b1b3..2064ffded7c 100644
--- a/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
+++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_varos.cpp
@@ -282,10 +282,10 @@ class spell_varos_centrifuge_shield : public SpellScriptLoader
if (Unit* caster = GetCaster())
{
// flags taken from sniffs
- if (caster->HasUnitFlag(UnitFlags(UNIT_FLAG_SWIMMING | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_UNK_6)))
+ if (caster->HasUnitFlag(UnitFlags(UNIT_FLAG_CAN_SWIM | UNIT_FLAG_IMMUNE_TO_NPC | UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_UNK_6)))
{
caster->ToCreature()->SetReactState(REACT_PASSIVE);
- caster->AddUnitFlag(UnitFlags(UNIT_FLAG_SWIMMING | UNIT_FLAG_UNK_6));
+ caster->AddUnitFlag(UnitFlags(UNIT_FLAG_CAN_SWIM | UNIT_FLAG_UNK_6));
caster->SetImmuneToAll(true, true);
}
}
@@ -296,7 +296,7 @@ class spell_varos_centrifuge_shield : public SpellScriptLoader
if (Unit* caster = GetCaster())
{
caster->ToCreature()->SetReactState(REACT_AGGRESSIVE);
- caster->RemoveUnitFlag(UnitFlags(UNIT_FLAG_SWIMMING | UNIT_FLAG_UNK_6));
+ caster->RemoveUnitFlag(UnitFlags(UNIT_FLAG_CAN_SWIM | UNIT_FLAG_UNK_6));
caster->SetImmuneToAll(false);
}
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
index feb09246622..b62c570560a 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp
@@ -312,7 +312,7 @@ struct boss_algalon_the_observer : public BossAI
{
case ACTION_START_INTRO:
{
- me->AddUnitFlag2(UNIT_FLAG2_INSTANTLY_APPEAR_MODEL);
+ me->AddUnitFlag2(UNIT_FLAG2_INSTANTLY_DONT_FADE_IN);
me->SetDisableGravity(true);
DoCastSelf(SPELL_ARRIVAL, true);
DoCastSelf(SPELL_RIDE_THE_LIGHTNING, true);