fix(Core/Creatures): Implemented CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE extra flag. (#12802)
* fix(Scripts/AhnQiraj): Rajaxx wave mobs should not chain-aggro each other. Fixed #12745 * Update.
This commit is contained in:
@@ -0,0 +1,2 @@
|
|||||||
|
--
|
||||||
|
UPDATE `creature_template` SET `flags_extra`=`flags_extra`|0x02000000 WHERE `entry` IN (15385,15386,15387,15388,15389,15390,15391,15392,15344);
|
||||||
@@ -71,7 +71,7 @@ enum CreatureFlagsExtra : uint32
|
|||||||
CREATURE_FLAG_EXTRA_AVOID_AOE = 0x00400000, // pussywizard: ignored by aoe attacks (for icc blood prince council npc - Dark Nucleus)
|
CREATURE_FLAG_EXTRA_AVOID_AOE = 0x00400000, // pussywizard: ignored by aoe attacks (for icc blood prince council npc - Dark Nucleus)
|
||||||
CREATURE_FLAG_EXTRA_NO_DODGE = 0x00800000, // xinef: target cannot dodge
|
CREATURE_FLAG_EXTRA_NO_DODGE = 0x00800000, // xinef: target cannot dodge
|
||||||
CREATURE_FLAG_EXTRA_MODULE = 0x01000000,
|
CREATURE_FLAG_EXTRA_MODULE = 0x01000000,
|
||||||
CREATURE_FLAG_EXTRA_UNUSED_26 = 0x02000000,
|
CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE = 0x02000000, // Creatures do not call periodically assistance in combat
|
||||||
CREATURE_FLAG_EXTRA_UNUSED_27 = 0x04000000,
|
CREATURE_FLAG_EXTRA_UNUSED_27 = 0x04000000,
|
||||||
CREATURE_FLAG_EXTRA_UNUSED_28 = 0x08000000,
|
CREATURE_FLAG_EXTRA_UNUSED_28 = 0x08000000,
|
||||||
CREATURE_FLAG_EXTRA_DUNGEON_BOSS = 0x10000000, // creature is a dungeon boss (SET DYNAMICALLY, DO NOT ADD IN DB)
|
CREATURE_FLAG_EXTRA_DUNGEON_BOSS = 0x10000000, // creature is a dungeon boss (SET DYNAMICALLY, DO NOT ADD IN DB)
|
||||||
@@ -80,7 +80,7 @@ enum CreatureFlagsExtra : uint32
|
|||||||
CREATURE_FLAG_EXTRA_HARD_RESET = 0x80000000,
|
CREATURE_FLAG_EXTRA_HARD_RESET = 0x80000000,
|
||||||
|
|
||||||
// Masks
|
// Masks
|
||||||
CREATURE_FLAG_EXTRA_UNUSED = (CREATURE_FLAG_EXTRA_UNUSED_12 | CREATURE_FLAG_EXTRA_UNUSED_26 | CREATURE_FLAG_EXTRA_UNUSED_27 | CREATURE_FLAG_EXTRA_UNUSED_28), // SKIP
|
CREATURE_FLAG_EXTRA_UNUSED = (CREATURE_FLAG_EXTRA_UNUSED_12 | CREATURE_FLAG_EXTRA_UNUSED_27 | CREATURE_FLAG_EXTRA_UNUSED_28), // SKIP
|
||||||
|
|
||||||
CREATURE_FLAG_EXTRA_DB_ALLOWED = (0xFFFFFFFF & ~(CREATURE_FLAG_EXTRA_UNUSED | CREATURE_FLAG_EXTRA_DUNGEON_BOSS)) // SKIP
|
CREATURE_FLAG_EXTRA_DB_ALLOWED = (0xFFFFFFFF & ~(CREATURE_FLAG_EXTRA_UNUSED | CREATURE_FLAG_EXTRA_DUNGEON_BOSS)) // SKIP
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -56,7 +56,7 @@ AC_API_EXPORT EnumText EnumUtils<CreatureFlagsExtra>::ToString(CreatureFlagsExtr
|
|||||||
case CREATURE_FLAG_EXTRA_AVOID_AOE: return { "CREATURE_FLAG_EXTRA_AVOID_AOE", "CREATURE_FLAG_EXTRA_AVOID_AOE", "pussywizard: ignored by aoe attacks (for icc blood prince council npc - Dark Nucleus)" };
|
case CREATURE_FLAG_EXTRA_AVOID_AOE: return { "CREATURE_FLAG_EXTRA_AVOID_AOE", "CREATURE_FLAG_EXTRA_AVOID_AOE", "pussywizard: ignored by aoe attacks (for icc blood prince council npc - Dark Nucleus)" };
|
||||||
case CREATURE_FLAG_EXTRA_NO_DODGE: return { "CREATURE_FLAG_EXTRA_NO_DODGE", "CREATURE_FLAG_EXTRA_NO_DODGE", "xinef: target cannot dodge" };
|
case CREATURE_FLAG_EXTRA_NO_DODGE: return { "CREATURE_FLAG_EXTRA_NO_DODGE", "CREATURE_FLAG_EXTRA_NO_DODGE", "xinef: target cannot dodge" };
|
||||||
case CREATURE_FLAG_EXTRA_MODULE: return { "CREATURE_FLAG_EXTRA_MODULE", "CREATURE_FLAG_EXTRA_MODULE", "Used by module creatures to avoid blizzlike checks." };
|
case CREATURE_FLAG_EXTRA_MODULE: return { "CREATURE_FLAG_EXTRA_MODULE", "CREATURE_FLAG_EXTRA_MODULE", "Used by module creatures to avoid blizzlike checks." };
|
||||||
case CREATURE_FLAG_EXTRA_UNUSED_26: return { "CREATURE_FLAG_EXTRA_UNUSED_26", "CREATURE_FLAG_EXTRA_UNUSED_26", "" };
|
case CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE: return { "CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE", "Creatures do not call periodically assistance in combat", "" };
|
||||||
case CREATURE_FLAG_EXTRA_UNUSED_27: return { "CREATURE_FLAG_EXTRA_UNUSED_27", "CREATURE_FLAG_EXTRA_UNUSED_27", "" };
|
case CREATURE_FLAG_EXTRA_UNUSED_27: return { "CREATURE_FLAG_EXTRA_UNUSED_27", "CREATURE_FLAG_EXTRA_UNUSED_27", "" };
|
||||||
case CREATURE_FLAG_EXTRA_UNUSED_28: return { "CREATURE_FLAG_EXTRA_UNUSED_28", "CREATURE_FLAG_EXTRA_UNUSED_28", "" };
|
case CREATURE_FLAG_EXTRA_UNUSED_28: return { "CREATURE_FLAG_EXTRA_UNUSED_28", "CREATURE_FLAG_EXTRA_UNUSED_28", "" };
|
||||||
case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return { "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "creature is a dungeon boss (SET DYNAMICALLY, DO NOT ADD IN DB)" };
|
case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return { "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "CREATURE_FLAG_EXTRA_DUNGEON_BOSS", "creature is a dungeon boss (SET DYNAMICALLY, DO NOT ADD IN DB)" };
|
||||||
@@ -100,7 +100,7 @@ AC_API_EXPORT CreatureFlagsExtra EnumUtils<CreatureFlagsExtra>::FromIndex(size_t
|
|||||||
case 22: return CREATURE_FLAG_EXTRA_AVOID_AOE;
|
case 22: return CREATURE_FLAG_EXTRA_AVOID_AOE;
|
||||||
case 23: return CREATURE_FLAG_EXTRA_NO_DODGE;
|
case 23: return CREATURE_FLAG_EXTRA_NO_DODGE;
|
||||||
case 24: return CREATURE_FLAG_EXTRA_MODULE;
|
case 24: return CREATURE_FLAG_EXTRA_MODULE;
|
||||||
case 25: return CREATURE_FLAG_EXTRA_UNUSED_26;
|
case 25: return CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE;
|
||||||
case 26: return CREATURE_FLAG_EXTRA_UNUSED_27;
|
case 26: return CREATURE_FLAG_EXTRA_UNUSED_27;
|
||||||
case 27: return CREATURE_FLAG_EXTRA_UNUSED_28;
|
case 27: return CREATURE_FLAG_EXTRA_UNUSED_28;
|
||||||
case 28: return CREATURE_FLAG_EXTRA_DUNGEON_BOSS;
|
case 28: return CREATURE_FLAG_EXTRA_DUNGEON_BOSS;
|
||||||
@@ -141,7 +141,7 @@ AC_API_EXPORT size_t EnumUtils<CreatureFlagsExtra>::ToIndex(CreatureFlagsExtra v
|
|||||||
case CREATURE_FLAG_EXTRA_AVOID_AOE: return 22;
|
case CREATURE_FLAG_EXTRA_AVOID_AOE: return 22;
|
||||||
case CREATURE_FLAG_EXTRA_NO_DODGE: return 23;
|
case CREATURE_FLAG_EXTRA_NO_DODGE: return 23;
|
||||||
case CREATURE_FLAG_EXTRA_MODULE: return 24;
|
case CREATURE_FLAG_EXTRA_MODULE: return 24;
|
||||||
case CREATURE_FLAG_EXTRA_UNUSED_26: return 25;
|
case CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE: return 25;
|
||||||
case CREATURE_FLAG_EXTRA_UNUSED_27: return 26;
|
case CREATURE_FLAG_EXTRA_UNUSED_27: return 26;
|
||||||
case CREATURE_FLAG_EXTRA_UNUSED_28: return 27;
|
case CREATURE_FLAG_EXTRA_UNUSED_28: return 27;
|
||||||
case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return 28;
|
case CREATURE_FLAG_EXTRA_DUNGEON_BOSS: return 28;
|
||||||
|
|||||||
@@ -9991,8 +9991,13 @@ bool Unit::Attack(Unit* victim, bool meleeAttack)
|
|||||||
AddThreat(victim, 0.0f);
|
AddThreat(victim, 0.0f);
|
||||||
|
|
||||||
creature->SendAIReaction(AI_REACTION_HOSTILE);
|
creature->SendAIReaction(AI_REACTION_HOSTILE);
|
||||||
creature->CallAssistance();
|
|
||||||
creature->SetAssistanceTimer(sWorld->getIntConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_PERIOD));
|
CreatureTemplate const* cInfo = creature->GetCreatureTemplate();
|
||||||
|
if (!cInfo || !cInfo->HasFlagsExtra(CREATURE_FLAG_EXTRA_DONT_CALL_ASSISTANCE))
|
||||||
|
{
|
||||||
|
creature->CallAssistance();
|
||||||
|
creature->SetAssistanceTimer(sWorld->getIntConfig(CONFIG_CREATURE_FAMILY_ASSISTANCE_PERIOD));
|
||||||
|
}
|
||||||
|
|
||||||
SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user