Merge branch 'master' into Playerbot

This commit is contained in:
Yunfan Li
2024-07-23 18:23:10 +08:00
83 changed files with 320 additions and 247 deletions

View File

@@ -697,6 +697,26 @@ Logger.spells.scripts=2,Console Errors
#Logger.bg.battleground=4,Console Server
#Logger.bg.reportpvpafk=4,Console Server
#Logger.calendar=4,Console Server
#Logger.chat.say=4,Console Chat
#Logger.chat.emote=4,Console Chat
#Logger.chat.yell=4,Console Chat
#Logger.chat.whisper=4,Console Chat
#Logger.chat.party=4,Console Chat
#Logger.chat.raid=4,Console Chat
#Logger.chat.bg=4,Console Chat
#Logger.chat.guild=4,Console Chat
#Logger.chat.guild.officer=4,Console Chat
#Logger.chat.channel=4,Console Chat
#Logger.chat.addon.msg=4,Console Chat
#Logger.chat.addon.emote=4,Console Chat
#Logger.chat.addon.yell=4,Console Chat
#Logger.chat.addon.whisper=4,Console Chat
#Logger.chat.addon.party=4,Console Chat
#Logger.chat.addon.raid=4,Console Chat
#Logger.chat.addon.bg=4,Console Chat
#Logger.chat.addon.guild=4,Console Chat
#Logger.chat.addon.guild.officer=4,Console Chat
#Logger.chat.addon.channel=4,Console Chat
#Logger.chat.log=4,Console Server
#Logger.chat.log.addon=4,Console Server
#Logger.chat.system=4,Console Server
@@ -4393,6 +4413,13 @@ DailyRBGArenaPoints.MinLevel = 71
MunchingBlizzlike.Enabled = 1
#
# Daze.Enabled
# Description: Enable or disable the chance for mob melee attacks to daze the victim.
# Default: 1 - (Blizzlike)
Daze.Enabled = 1
#
###################################################################################################

View File

@@ -248,19 +248,6 @@ namespace Acore::ChatCommands
ChatCommandBuilder(char const* name, std::vector<ChatCommandBuilder> const& subCommands)
: _name{ ASSERT_NOTNULL(name) }, _data{ std::in_place_type<SubCommandEntry>, subCommands } { }
[[deprecated("char const* parameters to command handlers are deprecated; convert this to a typed argument handler instead")]]
ChatCommandBuilder(char const* name, bool(&handler)(ChatHandler*, char const*), uint32 securityLevel, Acore::ChatCommands::Console allowConsole)
: ChatCommandBuilder(name, handler, AcoreStrings(), securityLevel, allowConsole) { }
template <typename TypedHandler>
[[deprecated("you are using the old-style command format; convert this to the new format ({ name, handler (not a pointer!), permission, Console::(Yes/No) })")]]
ChatCommandBuilder(char const* name, uint32 securityLevel, bool console, TypedHandler* handler, char const*)
: ChatCommandBuilder(name, *handler, AcoreStrings(), securityLevel, static_cast<Acore::ChatCommands::Console>(console)) { }
[[deprecated("you are using the old-style command format; convert this to the new format ({ name, subCommands })")]]
ChatCommandBuilder(char const* name, uint32, bool, std::nullptr_t, char const*, std::vector <ChatCommandBuilder> const& sub)
: ChatCommandBuilder(name, sub) { }
private:
std::string_view _name;
std::variant<InvokerEntry, SubCommandEntry> _data;

View File

@@ -451,7 +451,7 @@ void PlayerMenu::SendQuestGiverQuestDetails(Quest const* quest, ObjectGuid npcGU
uint32 moneyRew = 0;
Player* player = _session->GetPlayer();
if (player && (player->getLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) || sScriptMgr->ShouldBeRewardedWithMoneyInsteadOfExp(player)))
if (player && (player->GetLevel() >= sWorld->getIntConfig(CONFIG_MAX_PLAYER_LEVEL) || sScriptMgr->ShouldBeRewardedWithMoneyInsteadOfExp(player)))
{
moneyRew = quest->GetRewMoneyMaxLevel();
}

View File

@@ -1915,8 +1915,10 @@ void Unit::DealMeleeDamage(CalcDamageInfo* damageInfo, bool durabilityLoss)
if (Probability > 40.0f)
Probability = 40.0f;
if (roll_chance_f(std::max(0.0f, Probability)))
CastSpell(victim, 1604, true);
// Daze application
if (sWorld->getBoolConfig(CONFIG_ENABLE_DAZE))
if (roll_chance_f(std::max(0.0f, Probability)))
CastSpell(victim, 1604, true);
}
if (GetTypeId() == TYPEID_PLAYER)
@@ -3054,9 +3056,8 @@ void Unit::SendMeleeAttackStop(Unit* victim)
if (victim)
{
uint8 nowDead = victim->isDead();
data << victim->GetPackGUID();
data << nowDead;
data << (uint32)victim->isDead();
}
SendMessageToSet(&data, true);
LOG_DEBUG("entities.unit", "WORLD: Sent SMSG_ATTACKSTOP");

View File

@@ -1506,9 +1506,7 @@ public:
[[nodiscard]] bool IsTotem() const { return m_unitTypeMask & UNIT_MASK_TOTEM; }
[[nodiscard]] bool IsVehicle() const { return m_unitTypeMask & UNIT_MASK_VEHICLE; }
/// @deprecated Use GetLevel() instead!
[[nodiscard]] uint8 getLevel() const { return uint8(GetUInt32Value(UNIT_FIELD_LEVEL)); }
[[nodiscard]] uint8 GetLevel() const { return getLevel(); }
[[nodiscard]] uint8 GetLevel() const { return uint8(GetUInt32Value(UNIT_FIELD_LEVEL)); }
uint8 getLevelForTarget(WorldObject const* /*target*/) const override { return GetLevel(); }
void SetLevel(uint8 lvl, bool showLevelChange = true);
[[nodiscard]] uint8 getRace(bool original = false) const;

View File

@@ -89,9 +89,8 @@ void WorldSession::SendAttackStop(Unit const* enemy)
if (enemy)
{
uint8 nowDead = enemy->isDead();
data << enemy->GetPackGUID(); // must be packed guid
data << nowDead;
data << (uint32)enemy->isDead();
}
SendPacket(&data);
}

View File

@@ -186,6 +186,7 @@ enum WorldBoolConfigs
CONFIG_STRICT_NAMES_PROFANITY,
CONFIG_ALLOWS_RANK_MOD_FOR_PET_HEALTH,
CONFIG_MUNCHING_BLIZZLIKE,
CONFIG_ENABLE_DAZE,
BOOL_CONFIG_VALUE_COUNT
};
@@ -567,7 +568,6 @@ public:
virtual void LoadConfigSettings(bool reload = false) = 0;
virtual void SendWorldText(uint32 string_id, ...) = 0;
virtual void SendWorldTextOptional(uint32 string_id, uint32 flag, ...) = 0;
virtual void SendGlobalText(const char* text, WorldSession* self) = 0;
virtual void SendGMText(uint32 string_id, ...) = 0;
virtual void SendGlobalMessage(WorldPacket const* packet, WorldSession* self = nullptr, TeamId teamId = TEAM_NEUTRAL) = 0;
virtual void SendGlobalGMMessage(WorldPacket const* packet, WorldSession* self = nullptr, TeamId teamId = TEAM_NEUTRAL) = 0;

View File

@@ -1285,6 +1285,8 @@ void World::LoadConfigSettings(bool reload)
_bool_configs[CONFIG_MUNCHING_BLIZZLIKE] = sConfigMgr->GetOption<bool>("MunchingBlizzlike.Enabled", true);
_bool_configs[CONFIG_ENABLE_DAZE] = sConfigMgr->GetOption<bool>("Daze.Enabled", true);
_int_configs[CONFIG_DAILY_RBG_MIN_LEVEL_AP_REWARD] = sConfigMgr->GetOption<uint32>("DailyRBGArenaPoints.MinLevel", 71);
_int_configs[CONFIG_AUCTION_HOUSE_SEARCH_TIMEOUT] = sConfigMgr->GetOption<uint32>("AuctionHouse.SearchTimeout", 1000);
@@ -2653,24 +2655,6 @@ void World::SendGMText(uint32 string_id, ...)
va_end(ap);
}
/// @deprecated only for debug purpose. Send a System Message to all players (except self if mentioned)
void World::SendGlobalText(const char* text, WorldSession* self)
{
WorldPacket data;
// need copy to prevent corruption by strtok call in LineFromMessage original string
char* buf = strdup(text);
char* pos = buf;
while (char* line = ChatHandler::LineFromMessage(pos))
{
ChatHandler::BuildChatPacket(data, CHAT_MSG_SYSTEM, LANG_UNIVERSAL, nullptr, nullptr, line);
SendGlobalMessage(&data, self);
}
free(buf);
}
/// Send a packet to all players (or players selected team) in the zone (except self if mentioned)
bool World::SendZoneMessage(uint32 zone, WorldPacket const* packet, WorldSession* self, TeamId teamId)
{

View File

@@ -239,7 +239,6 @@ public:
void LoadConfigSettings(bool reload = false) override;
void SendWorldText(uint32 string_id, ...) override;
void SendGlobalText(const char* text, WorldSession* self) override;
void SendGMText(uint32 string_id, ...) override;
void SendGlobalMessage(WorldPacket const* packet, WorldSession* self = nullptr, TeamId teamId = TEAM_NEUTRAL) override;
void SendGlobalGMMessage(WorldPacket const* packet, WorldSession* self = nullptr, TeamId teamId = TEAM_NEUTRAL) override;

View File

@@ -52,46 +52,46 @@ public:
{
static ChatCommandTable accountSetCommandTable =
{
{ "addon", SEC_GAMEMASTER, true, &HandleAccountSetAddonCommand, "" },
{ "gmlevel", SEC_CONSOLE, true, &HandleAccountSetGmLevelCommand, "" },
{ "password", SEC_CONSOLE, true, &HandleAccountSetPasswordCommand, "" },
{ "2fa", SEC_PLAYER, true, &HandleAccountSet2FACommand, "" }
{ "addon", HandleAccountSetAddonCommand, SEC_GAMEMASTER, Console::Yes },
{ "gmlevel", HandleAccountSetGmLevelCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "password", HandleAccountSetPasswordCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "2fa", HandleAccountSet2FACommand, SEC_PLAYER, Console::Yes }
};
static ChatCommandTable accountLockCommandTable
{
{ "country", SEC_PLAYER, true, &HandleAccountLockCountryCommand, "" },
{ "ip", SEC_PLAYER, true, &HandleAccountLockIpCommand, "" }
{ "country", HandleAccountLockCountryCommand, SEC_PLAYER, Console::Yes },
{ "ip", HandleAccountLockIpCommand, SEC_PLAYER, Console::Yes }
};
static ChatCommandTable account2faCommandTable
{
{ "setup", SEC_PLAYER, false, &HandleAccount2FASetupCommand, "" },
{ "remove", SEC_PLAYER, false, &HandleAccount2FARemoveCommand, "" },
{ "setup", HandleAccount2FASetupCommand, SEC_PLAYER, Console::No },
{ "remove", HandleAccount2FARemoveCommand, SEC_PLAYER, Console::No }
};
static ChatCommandTable accountRemoveCommandTable
{
{ "country", SEC_ADMINISTRATOR, true, &HandleAccountRemoveLockCountryCommand, "" }
{ "country", HandleAccountRemoveLockCountryCommand, SEC_ADMINISTRATOR, Console::Yes },
};
static ChatCommandTable accountCommandTable =
{
{ "2fa", SEC_PLAYER, true, nullptr, "", account2faCommandTable },
{ "addon", SEC_MODERATOR, false, &HandleAccountAddonCommand, "" },
{ "create", SEC_CONSOLE, true, &HandleAccountCreateCommand, "" },
{ "delete", SEC_CONSOLE, true, &HandleAccountDeleteCommand, "" },
{ "onlinelist", SEC_CONSOLE, true, &HandleAccountOnlineListCommand, "" },
{ "lock", SEC_PLAYER, false, nullptr, "", accountLockCommandTable },
{ "set", SEC_ADMINISTRATOR, true, nullptr, "", accountSetCommandTable },
{ "password", SEC_PLAYER, false, &HandleAccountPasswordCommand, "" },
{ "remove", SEC_ADMINISTRATOR, true, nullptr, "", accountRemoveCommandTable },
{ "", SEC_PLAYER, false, &HandleAccountCommand, "" }
{ "2fa", account2faCommandTable },
{ "addon", HandleAccountAddonCommand, SEC_MODERATOR, Console::No },
{ "create", HandleAccountCreateCommand, SEC_CONSOLE, Console::Yes },
{ "delete", HandleAccountDeleteCommand, SEC_CONSOLE, Console::Yes },
{ "onlinelist", HandleAccountOnlineListCommand, SEC_CONSOLE, Console::Yes },
{ "lock", accountLockCommandTable },
{ "set", accountSetCommandTable },
{ "password", HandleAccountPasswordCommand, SEC_PLAYER, Console::No },
{ "remove", accountRemoveCommandTable },
{ "", HandleAccountCommand, SEC_PLAYER, Console::No }
};
static ChatCommandTable commandTable =
{
{ "account", SEC_PLAYER, true, nullptr, "", accountCommandTable }
{ "account", accountCommandTable }
};
return commandTable;

View File

@@ -56,40 +56,40 @@ public:
{
static ChatCommandTable unbanCommandTable =
{
{ "account", SEC_ADMINISTRATOR, true, &HandleUnBanAccountCommand, "" },
{ "character", SEC_ADMINISTRATOR, true, &HandleUnBanCharacterCommand, "" },
{ "playeraccount", SEC_ADMINISTRATOR, true, &HandleUnBanAccountByCharCommand, "" },
{ "ip", SEC_ADMINISTRATOR, true, &HandleUnBanIPCommand, "" }
{ "account", HandleUnBanAccountCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "character", HandleUnBanCharacterCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "playeraccount", HandleUnBanAccountByCharCommand, SEC_ADMINISTRATOR, Console::Yes },
{ "ip", HandleUnBanIPCommand, SEC_ADMINISTRATOR, Console::Yes }
};
static ChatCommandTable banlistCommandTable =
{
{ "account", SEC_GAMEMASTER, true, &HandleBanListAccountCommand, "" },
{ "character", SEC_GAMEMASTER, true, &HandleBanListCharacterCommand, "" },
{ "ip", SEC_GAMEMASTER, true, &HandleBanListIPCommand, "" }
{ "account", HandleBanListAccountCommand, SEC_GAMEMASTER, Console::Yes },
{ "character", HandleBanListCharacterCommand, SEC_GAMEMASTER, Console::Yes },
{ "ip", HandleBanListIPCommand, SEC_GAMEMASTER, Console::Yes }
};
static ChatCommandTable baninfoCommandTable =
{
{ "account", SEC_GAMEMASTER, true, &HandleBanInfoAccountCommand, "" },
{ "character", SEC_GAMEMASTER, true, &HandleBanInfoCharacterCommand, "" },
{ "ip", SEC_GAMEMASTER, true, &HandleBanInfoIPCommand, "" }
{ "account", HandleBanInfoAccountCommand, SEC_GAMEMASTER, Console::Yes },
{ "character", HandleBanInfoCharacterCommand, SEC_GAMEMASTER, Console::Yes },
{ "ip", HandleBanInfoIPCommand, SEC_GAMEMASTER, Console::Yes }
};
static ChatCommandTable banCommandTable =
{
{ "account", SEC_GAMEMASTER, true, &HandleBanAccountCommand, "" },
{ "character", SEC_GAMEMASTER, true, &HandleBanCharacterCommand, "" },
{ "playeraccount", SEC_GAMEMASTER, true, &HandleBanAccountByCharCommand, "" },
{ "ip", SEC_GAMEMASTER, true, &HandleBanIPCommand, "" }
{ "account", HandleBanAccountCommand, SEC_GAMEMASTER, Console::Yes },
{ "character", HandleBanCharacterCommand, SEC_GAMEMASTER, Console::Yes },
{ "playeraccount",HandleBanAccountByCharCommand, SEC_GAMEMASTER, Console::Yes },
{ "ip", HandleBanIPCommand, SEC_GAMEMASTER, Console::Yes }
};
static ChatCommandTable commandTable =
{
{ "ban", SEC_GAMEMASTER, true, nullptr, "", banCommandTable },
{ "baninfo", SEC_GAMEMASTER, true, nullptr, "", baninfoCommandTable },
{ "banlist", SEC_GAMEMASTER, true, nullptr, "", banlistCommandTable },
{ "unban", SEC_ADMINISTRATOR, true, nullptr, "", unbanCommandTable }
{ "ban", banCommandTable },
{ "baninfo", baninfoCommandTable },
{ "banlist", banlistCommandTable },
{ "unban", unbanCommandTable }
};
return commandTable;

View File

@@ -50,7 +50,7 @@ public:
static ChatCommandTable learnAllCommandTable =
{
{ "my", learnAllMyCommandTable },
{ "my", learnAllMyCommandTable },
{ "gm", HandleLearnAllGMCommand, SEC_GAMEMASTER, Console::No },
{ "crafts", HandleLearnAllCraftsCommand, SEC_GAMEMASTER, Console::No },
{ "default", HandleLearnAllDefaultCommand, SEC_GAMEMASTER, Console::No },
@@ -60,14 +60,14 @@ public:
static ChatCommandTable learnCommandTable =
{
{ "all", learnAllCommandTable },
{ "all", learnAllCommandTable },
{ "", HandleLearnCommand, SEC_GAMEMASTER, Console::No }
};
static ChatCommandTable commandTable =
{
{ "learn", learnCommandTable },
{ "unlearn", HandleUnLearnCommand, SEC_GAMEMASTER, Console::No }
{ "learn", learnCommandTable },
{ "unlearn", HandleUnLearnCommand, SEC_GAMEMASTER, Console::No }
};
return commandTable;
}

View File

@@ -800,7 +800,7 @@ public:
{
LOG_INFO("server.loading", "Reloading `reputation_reward_rate` Table!" );
sObjectMgr->LoadReputationRewardRate();
handler->SendGlobalSysMessage("DB table `reputation_reward_rate` reloaded.");
handler->SendGlobalGMSysMessage("DB table `reputation_reward_rate` reloaded.");
return true;
}
@@ -808,7 +808,7 @@ public:
{
LOG_INFO("server.loading", "Reloading `reputation_spillover_template` Table!" );
sObjectMgr->LoadReputationSpilloverTemplate();
handler->SendGlobalSysMessage("DB table `reputation_spillover_template` reloaded.");
handler->SendGlobalGMSysMessage("DB table `reputation_spillover_template` reloaded.");
return true;
}

View File

@@ -42,17 +42,17 @@ public:
{
static ChatCommandTable wpCommandTable =
{
{ "add", SEC_ADMINISTRATOR, false, &HandleWpAddCommand, "" },
{ "event", SEC_ADMINISTRATOR, false, &HandleWpEventCommand, "" },
{ "load", SEC_ADMINISTRATOR, false, &HandleWpLoadCommand, "" },
{ "modify", SEC_ADMINISTRATOR, false, &HandleWpModifyCommand, "" },
{ "unload", SEC_ADMINISTRATOR, false, &HandleWpUnLoadCommand, "" },
{ "reload", SEC_ADMINISTRATOR, false, &HandleWpReloadCommand, "" },
{ "show", SEC_ADMINISTRATOR, false, &HandleWpShowCommand, "" }
{ "add", HandleWpAddCommand, SEC_ADMINISTRATOR, Console::No },
{ "event", HandleWpEventCommand, SEC_ADMINISTRATOR, Console::No },
{ "load", HandleWpLoadCommand, SEC_ADMINISTRATOR, Console::No },
{ "modify", HandleWpModifyCommand, SEC_ADMINISTRATOR, Console::No },
{ "unload", HandleWpUnLoadCommand, SEC_ADMINISTRATOR, Console::No },
{ "reload", HandleWpReloadCommand, SEC_ADMINISTRATOR, Console::No },
{ "show", HandleWpShowCommand, SEC_ADMINISTRATOR, Console::No }
};
static ChatCommandTable commandTable =
{
{ "wp", SEC_ADMINISTRATOR, false, nullptr, "", wpCommandTable }
{ "wp", wpCommandTable }
};
return commandTable;
}

View File

@@ -178,6 +178,7 @@ struct go_firework_show : public GameObjectAI
// trigger despawn animation for firework explosion
if (go)
{
go->setActive(true);
go->DespawnOrUnsummon();
go->AddObjectToRemoveList();
}

View File

@@ -22,7 +22,6 @@
#include "Player.h"
#include "PlayerScript.h"
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "Spell.h"
#include "SpellAuras.h"
#include "SpellScript.h"

View File

@@ -16,7 +16,6 @@
*/
#include "OutdoorPvPEP.h"
#include "CreatureScript.h"
#include "GameGraveyard.h"
#include "GameObject.h"
#include "Language.h"

View File

@@ -16,7 +16,6 @@
*/
#include "OutdoorPvPGH.h"
#include "CreatureScript.h"
#include "GameEventMgr.h"
#include "MapMgr.h"
#include "OutdoorPvPMgr.h"

View File

@@ -20,6 +20,7 @@
#include "SpellInfo.h"
#include "SpellScriptLoader.h"
#include "shadow_labyrinth.h"
#include "SpellScript.h"
enum Spells
{

View File

@@ -19,6 +19,7 @@
#include "InstanceScript.h"
#include "SpellScriptLoader.h"
#include "shadow_labyrinth.h"
#include "SpellScript.h"
DoorData const doorData[] =
{

View File

@@ -18,10 +18,8 @@
#ifndef DEF_SHADOW_LABYRINTH_H
#define DEF_SHADOW_LABYRINTH_H
#include "CreatureAI.h"
#include "CreatureAIImpl.h"
#include "GridNotifiers.h"
#include "SpellScript.h"
#define ShadowLabyrinthScriptName "instance_shadow_labyrinth"

View File

@@ -19,12 +19,6 @@
#define BLACK_TEMPLE_H_
#include "CreatureAIImpl.h"
#include "GridNotifiers.h"
#include "PassiveAI.h"
#include "Player.h"
#include "ScriptedGossip.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
#define DataHeader "BT"

View File

@@ -19,6 +19,7 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -20,6 +20,10 @@
#include "ScriptedEscortAI.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "Player.h"
#include "ScriptedGossip.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -19,6 +19,9 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "GridNotifiers.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -20,6 +20,9 @@
#include "Spell.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "Player.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -19,6 +19,11 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "PassiveAI.h"
#include "ScriptedGossip.h"
#include "SpellAuras.h"
#include "SpellInfo.h"
#include "SpellScript.h"
enum Says
{
@@ -81,7 +86,8 @@ enum Misc
ACTION_AKAMA_START_OUTRO = 1,
FACTION_DEFAULT = 1820,
FACTION_ENGAGE = 1868
FACTION_ENGAGE = 1868,
FACTION_DEFENDER = 1847
};
Position AkamaEngage = { 517.4877f, 400.79926f, 112.77704f };
@@ -364,11 +370,14 @@ struct npc_creature_generator_akama : public ScriptedAI
summon->GetMotionMaster()->MovePoint(POINT_ENGAGE, x, y, z);
}
break;
default:
summon->SetInCombatWithZone();
case NPC_ASHTONGUE_DEFENDER:
summon->SetFaction(FACTION_DEFENDER);
if (Creature* akama = instance->GetCreature(DATA_AKAMA_SHADE))
summon->AI()->AttackStart(akama);
break;
default:
summon->SetInCombatWithZone();
break;
}
}

View File

@@ -19,6 +19,11 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "PassiveAI.h"
#include "Player.h"
#include "SpellAuraEffects.h"
#include "SpellAuras.h"
#include "SpellScript.h"
enum Says
{
@@ -77,7 +82,7 @@ struct boss_teron_gorefiend : public BossAI
void Reset() override
{
BossAI::Reset();
me->CastSpell(me, SPELL_SHADOW_OF_DEATH_REMOVE, true);
DoCastSelf(SPELL_SHADOW_OF_DEATH_REMOVE, true);
}
void JustEngagedWith(Unit* who) override
@@ -155,7 +160,7 @@ struct boss_teron_gorefiend : public BossAI
{
BossAI::JustDied(killer);
Talk(SAY_DEATH);
me->CastSpell(me, SPELL_SHADOW_OF_DEATH_REMOVE, true);
DoCastSelf(SPELL_SHADOW_OF_DEATH_REMOVE, true);
}
void UpdateAI(uint32 diff) override
@@ -172,6 +177,17 @@ struct boss_teron_gorefiend : public BossAI
bool _intro;
};
struct npc_vengeful_spirit : public NullCreatureAI
{
npc_vengeful_spirit(Creature* creature) : NullCreatureAI(creature) { }
void OnCharmed(bool apply)
{
if (!apply)
me->DespawnOnEvade();
}
};
class spell_teron_gorefiend_shadow_of_death : public AuraScript
{
PrepareAuraScript(spell_teron_gorefiend_shadow_of_death);
@@ -231,7 +247,7 @@ class spell_teron_gorefiend_spiritual_vengeance : public AuraScript
{
PrepareAuraScript(spell_teron_gorefiend_spiritual_vengeance);
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
Unit::Kill(nullptr, GetTarget());
}
@@ -276,12 +292,44 @@ class spell_teron_gorefiend_shadowy_construct : public AuraScript
}
};
class spell_teron_gorefiend_shadow_of_death_remove : public SpellScript
{
PrepareSpellScript(spell_teron_gorefiend_shadow_of_death_remove);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo(
{
SPELL_SHADOW_OF_DEATH,
SPELL_POSSESS_SPIRIT_IMMUNE,
SPELL_SPIRITUAL_VENGEANCE
});
}
void HandleOnHit()
{
if (Unit* target = GetHitUnit())
{
target->RemoveAurasDueToSpell(SPELL_POSSESS_SPIRIT_IMMUNE);
target->RemoveAurasDueToSpell(SPELL_SPIRITUAL_VENGEANCE);
target->RemoveAurasDueToSpell(SPELL_SHADOW_OF_DEATH);
}
}
void Register() override
{
OnHit += SpellHitFn(spell_teron_gorefiend_shadow_of_death_remove::HandleOnHit);
}
};
void AddSC_boss_teron_gorefiend()
{
RegisterBlackTempleCreatureAI(boss_teron_gorefiend);
RegisterBlackTempleCreatureAI(npc_vengeful_spirit);
RegisterSpellScript(spell_teron_gorefiend_shadow_of_death);
RegisterSpellScript(spell_teron_gorefiend_spirit_lance);
RegisterSpellScript(spell_teron_gorefiend_spiritual_vengeance);
RegisterSpellScript(spell_teron_gorefiend_shadowy_construct);
RegisterSpellScript(spell_teron_gorefiend_shadow_of_death_remove);
}

View File

@@ -19,6 +19,7 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "SpellScript.h"
enum Yells
{

View File

@@ -19,6 +19,9 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "Player.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -20,6 +20,9 @@
#include "InstanceScript.h"
#include "SpellScriptLoader.h"
#include "black_temple.h"
#include "SpellAuraEffects.h"
#include "SpellAuras.h"
#include "SpellScript.h"
DoorData const doorData[] =
{
@@ -104,7 +107,6 @@ public:
{
switch (creature->GetEntry())
{
case NPC_VENGEFUL_SPIRIT:
case NPC_SHADOWY_CONSTRUCT:
if (Creature* teron = GetCreature(DATA_TERON_GOREFIEND))
teron->AI()->JustSummoned(creature);

View File

@@ -20,6 +20,8 @@
#include "SpellScriptLoader.h"
#include "TaskScheduler.h"
#include "serpent_shrine.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
enum Talk
{

View File

@@ -19,6 +19,7 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "serpent_shrine.h"
#include "SpellScript.h"
enum Talk
{

View File

@@ -22,6 +22,7 @@
#include "SpellScriptLoader.h"
#include "WorldSession.h"
#include "serpent_shrine.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -17,11 +17,14 @@
#include "CreatureGroups.h"
#include "CreatureScript.h"
#include "GridNotifiers.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "TaskScheduler.h"
#include "serpent_shrine.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
enum Talk
{

View File

@@ -17,9 +17,12 @@
#include "CreatureScript.h"
#include "GameObjectScript.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "serpent_shrine.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
enum Spells
{

View File

@@ -19,6 +19,7 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "serpent_shrine.h"
#include "SpellScript.h"
enum Yells
{

View File

@@ -23,6 +23,8 @@
#include "SpellScriptLoader.h"
#include "TemporarySummon.h"
#include "serpent_shrine.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
DoorData const doorData[] =
{

View File

@@ -18,12 +18,7 @@
#ifndef DEF_SERPENT_SHRINE_H
#define DEF_SERPENT_SHRINE_H
#include "CreatureAI.h"
#include "CreatureAIImpl.h"
#include "GridNotifiers.h"
#include "Player.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
#define DataHeader "SS"

View File

@@ -27,7 +27,6 @@
#include "Map.h"
#include "MotionMaster.h"
#include "ObjectAccessor.h"
#include "PassiveAI.h"
#include "Player.h"
#include "ScriptMgr.h"
#include "ScriptedCreature.h"

View File

@@ -19,7 +19,6 @@
#define DEF_STEAM_VAULT_H
#include "CreatureAIImpl.h"
#include "PassiveAI.h"
#define DataHeaders "SV"

View File

@@ -21,6 +21,7 @@
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "gruuls_lair.h"
#include "SpellAuraEffects.h"
enum Yells
{

View File

@@ -18,9 +18,7 @@
#ifndef GRUULS_LAIR_H_
#define GRUULS_LAIR_H_
#include "CreatureAI.h"
#include "CreatureAIImpl.h"
#include "SpellAuraEffects.h"
#define DataHeader "GL"

View File

@@ -20,6 +20,7 @@
#include "SpellScriptLoader.h"
#include "TaskScheduler.h"
#include "hellfire_ramparts.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -19,6 +19,7 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "hellfire_ramparts.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -19,7 +19,6 @@
#define DEF_RAMPARTS_H
#include "CreatureAIImpl.h"
#include "SpellScript.h"
#define DataHeader "HR"
#define HellfireRampartsScriptName "instance_hellfire_ramparts"

View File

@@ -23,6 +23,7 @@
#include "SpellScriptLoader.h"
#include "TaskScheduler.h"
#include "magtheridons_lair.h"
#include "SpellScript.h"
enum Yells
{

View File

@@ -19,8 +19,6 @@
#define DEF_MAGTHERIDONS_LAIR_H
#include "CreatureAIImpl.h"
#include "SpellScript.h"
#define DataHeader "ML"
#define MagtheridonsLairScriptName "instance_magtheridons_lair"

View File

@@ -21,6 +21,7 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "shattered_halls.h"
#include "SpellScript.h"
enum Texts
{

View File

@@ -19,8 +19,6 @@
#define DEF_SHATTERED_H
#include "CreatureAIImpl.h"
#include "PassiveAI.h"
#include "SpellScript.h"
#define ShatteredHallsLairScriptName "instance_shattered_halls"

View File

@@ -23,6 +23,9 @@
#include "the_eye.h"
#include <cmath>
#include "Player.h"
#include "SpellScript.h"
enum Spells
{
SPELL_BERSERK = 45078,

View File

@@ -17,6 +17,8 @@
#include "CreatureScript.h"
#include "ScriptedCreature.h"
#include "SpellAuras.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "the_eye.h"

View File

@@ -16,8 +16,9 @@
*/
#include "CreatureScript.h"
#include "Opcodes.h"
#include "GridNotifiers.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "WorldPacket.h"
#include "the_eye.h"

View File

@@ -17,6 +17,7 @@
#include "InstanceMapScript.h"
#include "InstanceScript.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "the_eye.h"

View File

@@ -19,10 +19,6 @@
#define DEF_THE_EYE_H
#include "CreatureAIImpl.h"
#include "GridNotifiers.h"
#include "Player.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
#define DataHeader "TE"

View File

@@ -19,6 +19,8 @@
#include "ScriptedCreature.h"
#include "SpellScriptLoader.h"
#include "mechanar.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
enum Says
{

View File

@@ -18,11 +18,7 @@
#ifndef DEF_MECHANAR_H
#define DEF_MECHANAR_H
#include "CreatureAI.h"
#include "CreatureAIImpl.h"
#include "Player.h"
#include "SpellAuraEffects.h"
#include "SpellScript.h"
#define DataHeader "MR"

View File

@@ -17,7 +17,9 @@
#include "arcatraz.h"
#include "CreatureScript.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
enum MillhouseSays

View File

@@ -18,10 +18,7 @@
#ifndef ARCATRAZ_H
#define ARCATRAZ_H
#include "CreatureAI.h"
#include "CreatureAIImpl.h"
#include "Player.h"
#include "SpellScript.h"
#define DataHeader "AZ"

View File

@@ -19,6 +19,7 @@
#include "GameTime.h"
#include "InstanceMapScript.h"
#include "InstanceScript.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "the_botanica.h"

View File

@@ -19,7 +19,6 @@
#define DEF_THE_BOTANICA_H
#include "CreatureAIImpl.h"
#include "SpellScript.h"
#define TheBotanicaScriptName "instance_the_botanica"

View File

@@ -23,7 +23,6 @@
#include "ScriptedCreature.h"
#include "ScriptedGossip.h"
#include "SpellAuraEffects.h"
#include "SpellAuras.h"
#include "SpellInfo.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"

View File

@@ -20,7 +20,6 @@
#include "Player.h"
#include "ScriptedCreature.h"
#include "ScriptedEscortAI.h"
#include "ScriptedGossip.h"
#include "SpellInfo.h"
/* ScriptData
SDName: Nagrand

View File

@@ -21,7 +21,6 @@
*/
#include "CreatureScript.h"
#include "PassiveAI.h"
#include "PetAI.h"
#include "ScriptedCreature.h"
#include "TotemAI.h"

View File

@@ -22,7 +22,6 @@
#include "MapMgr.h"
#include "ScriptedCreature.h"
#include "SpellAuraEffects.h"
#include "SpellAuras.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "Vehicle.h"

View File

@@ -21,7 +21,6 @@
#include "SpellMgr.h"
#include "SpellScript.h"
#include "SpellScriptLoader.h"
#include "TemporarySummon.h"
#include "Unit.h"
/*
* Scripts for spells with SPELLFAMILY_SHAMAN and SPELLFAMILY_GENERIC spells used by shaman players.

View File

@@ -23,7 +23,6 @@
#include "BattlegroundWS.h"
#include "Creature.h"
#include "Player.h"
#include "Vehicle.h"
class achievement_resilient_victory : public AchievementCriteriaScript
{

View File

@@ -16,11 +16,9 @@
*/
#include "AreaTriggerScript.h"
#include "CreatureScript.h"
#include "GameTime.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellMgr.h"
/* ScriptData
SDName: Areatrigger_Scripts
SD%Complete: 100

View File

@@ -16,7 +16,6 @@
*/
#include "Channel.h"
#include "CreatureScript.h"
#include "Group.h"
#include "Guild.h"
#include "Log.h"
@@ -64,10 +63,15 @@ public:
player->GetName(), chatType, lang, msg);
}
void OnChat(Player* player, uint32 /*type*/, uint32 /*lang*/, std::string& msg, Player* receiver) override
void OnChat(Player* player, uint32 /*type*/, uint32 lang, std::string& msg, Player* receiver) override
{
LOG_INFO("chat.whisper", "Player {} tells {}: {}",
player->GetName(), receiver ? receiver->GetName() : "<unknown>", msg);
//! NOTE:
//! LANG_ADDON can only be sent by client in "PARTY", "RAID", "GUILD", "BATTLEGROUND", "WHISPER"
std::string logType = (lang != LANG_ADDON) ? "chat." : "chat.addon.";
std::string msgType = "whisper";
LOG_INFO(logType + msgType, "Player {} {} {}: {}",
player->GetName(), msgType, receiver ? receiver->GetName() : "<unknown>", msg);
}
void OnChat(Player* player, uint32 type, uint32 lang, std::string& msg, Group* group) override

View File

@@ -32,7 +32,6 @@ EndContentData */
#include "GuardAI.h"
#include "Player.h"
#include "ScriptedCreature.h"
#include "SpellInfo.h"
enum GuardShattrath
{

View File

@@ -18,7 +18,6 @@
#ifndef NPC_STAVE_OF_ANCIENTS_H
#define NPC_STAVE_OF_ANCIENTS_H
#include "CreatureScript.h"
#include "ScriptedCreature.h"
enum Common

View File

@@ -15,7 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "CreatureScript.h"
#include "Player.h"
#include "PlayerScript.h"