mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-22 10:05:32 +01:00
Core/Commands: Add .npc info mechanicImmuneMask infos
This commit is contained in:
3
sql/updates/world/2013_08_04_04_world_trinity_string.sql
Normal file
3
sql/updates/world/2013_08_04_04_world_trinity_string.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
DELETE FROM `trinity_string` WHERE `entry`=5037;
|
||||
INSERT INTO `trinity_string` (`entry`, `content_default`, `content_loc1`, `content_loc2`, `content_loc3`, `content_loc4`, `content_loc5`, `content_loc6`, `content_loc7`, `content_loc8`) VALUES
|
||||
(5037, 'MechanicImmuneMask: %u', NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL);
|
||||
@@ -1083,6 +1083,7 @@ enum TrinityStrings
|
||||
LANG_COMMAND_NO_OUTDOOR_PVP_FORUND = 5034,
|
||||
LANG_CALL_FOR_HELP = 5035,
|
||||
LANG_NPCINFO_EQUIPMENT = 5036,
|
||||
LANG_NPCINFO_MECHANIC_IMMUNE = 5037,
|
||||
// Room for more Trinity strings 5037-9999
|
||||
|
||||
// Level requirement notifications
|
||||
|
||||
@@ -41,7 +41,7 @@ struct NpcFlagText
|
||||
|
||||
#define NPCFLAG_COUNT 24
|
||||
|
||||
const NpcFlagText npcFlagTexts[NPCFLAG_COUNT] =
|
||||
NpcFlagText const npcFlagTexts[NPCFLAG_COUNT] =
|
||||
{
|
||||
{ UNIT_NPC_FLAG_AUCTIONEER, LANG_NPCINFO_AUCTIONEER },
|
||||
{ UNIT_NPC_FLAG_BANKER, LANG_NPCINFO_BANKER },
|
||||
@@ -69,6 +69,51 @@ const NpcFlagText npcFlagTexts[NPCFLAG_COUNT] =
|
||||
{ UNIT_NPC_FLAG_VENDOR_REAGENT, LANG_NPCINFO_VENDOR_REAGENT }
|
||||
};
|
||||
|
||||
struct MechanicImmune
|
||||
{
|
||||
uint32 flag;
|
||||
char const* text;
|
||||
};
|
||||
|
||||
#define MECHANIC_MAX 33
|
||||
|
||||
MechanicImmune const mechanicImmunes[MECHANIC_MAX] =
|
||||
{
|
||||
{ MECHANIC_NONE , "MECHANIC_NONE" },
|
||||
{ MECHANIC_CHARM , "MECHANIC_CHARM" },
|
||||
{ MECHANIC_DISORIENTED , "MECHANIC_DISORIENTED" },
|
||||
{ MECHANIC_DISARM , "MECHANIC_DISARM" },
|
||||
{ MECHANIC_DISTRACT , "MECHANIC_DISTRACT" },
|
||||
{ MECHANIC_FEAR , "MECHANIC_FEAR" },
|
||||
{ MECHANIC_GRIP , "MECHANIC_GRIP" },
|
||||
{ MECHANIC_ROOT , "MECHANIC_ROOT" },
|
||||
{ MECHANIC_SLOW_ATTACK , "MECHANIC_SLOW_ATTACK" },
|
||||
{ MECHANIC_SILENCE , "MECHANIC_SILENCE" },
|
||||
{ MECHANIC_SLEEP , "MECHANIC_SLEEP" },
|
||||
{ MECHANIC_SNARE , "MECHANIC_SNARE" },
|
||||
{ MECHANIC_STUN , "MECHANIC_STUN" },
|
||||
{ MECHANIC_FREEZE , "MECHANIC_FREEZE" },
|
||||
{ MECHANIC_KNOCKOUT , "MECHANIC_KNOCKOUT" },
|
||||
{ MECHANIC_BLEED , "MECHANIC_BLEED" },
|
||||
{ MECHANIC_BANDAGE , "MECHANIC_BANDAGE" },
|
||||
{ MECHANIC_POLYMORPH , "MECHANIC_POLYMORPH" },
|
||||
{ MECHANIC_BANISH , "MECHANIC_BANISH" },
|
||||
{ MECHANIC_SHIELD , "MECHANIC_SHIELD" },
|
||||
{ MECHANIC_SHACKLE , "MECHANIC_SHACKLE" },
|
||||
{ MECHANIC_MOUNT , "MECHANIC_MOUNT" },
|
||||
{ MECHANIC_INFECTED , "MECHANIC_INFECTED" },
|
||||
{ MECHANIC_TURN , "MECHANIC_TURN" },
|
||||
{ MECHANIC_HORROR , "MECHANIC_HORROR" },
|
||||
{ MECHANIC_INVULNERABILITY , "MECHANIC_INVULNERABILITY" },
|
||||
{ MECHANIC_INTERRUPT , "MECHANIC_INTERRUPT" },
|
||||
{ MECHANIC_DAZE , "MECHANIC_DAZE" },
|
||||
{ MECHANIC_DISCOVERY , "MECHANIC_DISCOVERY" },
|
||||
{ MECHANIC_IMMUNE_SHIELD , "MECHANIC_IMMUNE_SHIELD" },
|
||||
{ MECHANIC_SAPPED , "MECHANIC_SAPPED" },
|
||||
{ MECHANIC_ENRAGED , "MECHANIC_ENRAGED" },
|
||||
{ MECHANIC_WOUNDED , "MECHANIC_WOUNDED" }
|
||||
};
|
||||
|
||||
class npc_commandscript : public CommandScript
|
||||
{
|
||||
public:
|
||||
@@ -630,12 +675,14 @@ public:
|
||||
return false;
|
||||
}
|
||||
|
||||
CreatureTemplate const* cInfo = target->GetCreatureTemplate();
|
||||
|
||||
uint32 faction = target->getFaction();
|
||||
uint32 npcflags = target->GetUInt32Value(UNIT_NPC_FLAGS);
|
||||
uint32 mechanicImmuneMask = cInfo->MechanicImmuneMask;
|
||||
uint32 displayid = target->GetDisplayId();
|
||||
uint32 nativeid = target->GetNativeDisplayId();
|
||||
uint32 Entry = target->GetEntry();
|
||||
CreatureTemplate const* cInfo = target->GetCreatureTemplate();
|
||||
|
||||
int64 curRespawnDelay = target->GetRespawnTimeEx()-time(NULL);
|
||||
if (curRespawnDelay < 0)
|
||||
@@ -660,6 +707,11 @@ public:
|
||||
if (npcflags & npcFlagTexts[i].flag)
|
||||
handler->PSendSysMessage(npcFlagTexts[i].text, npcFlagTexts[i].flag);
|
||||
|
||||
handler->PSendSysMessage(LANG_NPCINFO_MECHANIC_IMMUNE, mechanicImmuneMask);
|
||||
for (uint8 i = 0; i < MECHANIC_MAX; ++i)
|
||||
if ((mechanicImmuneMask << 1) & mechanicImmunes[i].flag)
|
||||
handler->PSendSysMessage(mechanicImmunes[i].text, mechanicImmunes[i].flag);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user