mirror of
https://github.com/mod-playerbots/azerothcore-wotlk.git
synced 2026-01-13 01:08:35 +00:00
Merge branch 'master' into Playerbot
This commit is contained in:
7
data/sql/updates/db_world/2024_01_07_01.sql
Normal file
7
data/sql/updates/db_world/2024_01_07_01.sql
Normal file
@@ -0,0 +1,7 @@
|
||||
-- DB update 2024_01_07_00 -> 2024_01_07_01
|
||||
--
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = 18461 AND `ScriptName` = 'spell_rog_vanish_purge';
|
||||
DELETE FROM `spell_script_names` WHERE `spell_id` = -1856 AND `ScriptName` = 'spell_rog_vanish';
|
||||
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
|
||||
(18461, 'spell_rog_vanish_purge'),
|
||||
(-1856, 'spell_rog_vanish');
|
||||
2367
data/sql/updates/db_world/2024_01_07_02.sql
Normal file
2367
data/sql/updates/db_world/2024_01_07_02.sql
Normal file
File diff suppressed because one or more lines are too long
9
data/sql/updates/db_world/2024_01_07_03.sql
Normal file
9
data/sql/updates/db_world/2024_01_07_03.sql
Normal file
@@ -0,0 +1,9 @@
|
||||
-- DB update 2024_01_07_02 -> 2024_01_07_03
|
||||
--
|
||||
DELETE FROM `command` WHERE `name` = 'gobject respawn';
|
||||
INSERT INTO `command` (`name`, `security`, `help`) VALUES
|
||||
('gobject respawn', 1, 'Syntax: .gobject respawn #guid./nRespawns the target gameobject.');
|
||||
|
||||
DELETE FROM `acore_string` WHERE `entry` = 5085;
|
||||
INSERT INTO `acore_string` (`entry`, `content_default`) VALUES
|
||||
(5085, 'Object %s (entry :%u guid: %u) respawned!');
|
||||
3
data/sql/updates/db_world/2024_01_08_00.sql
Normal file
3
data/sql/updates/db_world/2024_01_08_00.sql
Normal file
@@ -0,0 +1,3 @@
|
||||
-- DB update 2024_01_07_03 -> 2024_01_08_00
|
||||
--
|
||||
UPDATE `creature_template` SET `flags_extra` = `flags_extra`|1073741824 WHERE `entry` = 21958;
|
||||
33
data/sql/updates/db_world/2024_01_08_01.sql
Normal file
33
data/sql/updates/db_world/2024_01_08_01.sql
Normal file
@@ -0,0 +1,33 @@
|
||||
-- DB update 2024_01_08_00 -> 2024_01_08_01
|
||||
-- Fix Midsummer Bonfire gossip menu option conditions
|
||||
DELETE FROM `conditions` WHERE (`SourceGroup` IN (9381, 9406, 9372, 9358, 9356, 9375, 9366, 9370, 9377, 9382, 9380, 9376, 9363, 9361, 9367, 9359, 9374, 9360, 9371, 9383, 9369, 9373, 9368, 9365, 9378, 9357, 9379, 9364, 9362)) AND (`SourceTypeOrReferenceId` = 15) AND (`ConditionTypeOrReference` = 8);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(15, 9381, 0, 0, 0, 8, 0, 11801, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9406, 0, 0, 0, 8, 0, 11581, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9372, 0, 0, 0, 8, 0, 11781, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9358, 0, 0, 0, 8, 0, 11768, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9356, 0, 0, 0, 8, 0, 11766, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9375, 0, 0, 0, 8, 0, 11784, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9366, 0, 0, 0, 8, 0, 11776, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9370, 0, 0, 0, 8, 0, 11580, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9377, 0, 0, 0, 8, 0, 11786, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9382, 0, 0, 0, 8, 0, 11802, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9380, 0, 0, 0, 8, 0, 11800, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9376, 0, 0, 0, 8, 0, 11785, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9363, 0, 0, 0, 8, 0, 11773, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9361, 0, 0, 0, 8, 0, 11771, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9367, 0, 0, 0, 8, 0, 11777, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9359, 0, 0, 0, 8, 0, 11769, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9374, 0, 0, 0, 8, 0, 11783, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9360, 0, 0, 0, 8, 0, 11770, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9371, 0, 0, 0, 8, 0, 11780, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9383, 0, 0, 0, 8, 0, 11803, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9369, 0, 0, 0, 8, 0, 11779, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9373, 0, 0, 0, 8, 0, 11782, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9368, 0, 0, 0, 8, 0, 11778, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9365, 0, 0, 0, 8, 0, 11775, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9378, 0, 0, 0, 8, 0, 11787, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9357, 0, 0, 0, 8, 0, 11767, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9379, 0, 0, 0, 8, 0, 11799, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9364, 0, 0, 0, 8, 0, 11774, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\''),
|
||||
(15, 9362, 0, 0, 0, 8, 0, 11772, 0, 0, 0, 0, 0, '', 'gossip menu option requires rewarded quest \'Desecrate this Fire!\'');
|
||||
@@ -9366,12 +9366,10 @@ void Player::Whisper(std::string_view text, Language language, Player* target, b
|
||||
}
|
||||
}
|
||||
|
||||
void Player::Whisper(uint32 textId, Player* target, bool /*isBossWhisper = false*/)
|
||||
void Player::Whisper(uint32 textId, Player* target, bool isBossWhisper)
|
||||
{
|
||||
if (!target)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
BroadcastText const* bct = sObjectMgr->GetBroadcastText(textId);
|
||||
if (!bct)
|
||||
@@ -9382,7 +9380,10 @@ void Player::Whisper(uint32 textId, Player* target, bool /*isBossWhisper = false
|
||||
|
||||
LocaleConstant locale = target->GetSession()->GetSessionDbLocaleIndex();
|
||||
WorldPacket data;
|
||||
ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER, LANG_UNIVERSAL, this, target, bct->GetText(locale, getGender()), 0, "", locale);
|
||||
if (isBossWhisper)
|
||||
ChatHandler::BuildChatPacket(data, CHAT_MSG_RAID_BOSS_WHISPER, LANG_UNIVERSAL, this, target, bct->GetText(locale, getGender()), 0, "", locale);
|
||||
else
|
||||
ChatHandler::BuildChatPacket(data, CHAT_MSG_WHISPER, LANG_UNIVERSAL, this, target, bct->GetText(locale, getGender()), 0, "", locale);
|
||||
target->SendDirectMessage(&data);
|
||||
}
|
||||
|
||||
|
||||
@@ -1159,7 +1159,9 @@ enum AcoreStrings
|
||||
|
||||
LANG_CMD_CAST_ERROR_CODE = 5084,
|
||||
|
||||
// Room for more strings 5084-9999
|
||||
LANG_CMD_GO_RESPAWN = 5085,
|
||||
|
||||
// Room for more strings 5086-9999
|
||||
|
||||
// Level requirement notifications
|
||||
LANG_SAY_REQ = 6604,
|
||||
|
||||
@@ -809,23 +809,6 @@ void Spell::EffectTriggerSpell(SpellEffIndex effIndex)
|
||||
|
||||
break;
|
||||
}
|
||||
// Vanish (not exist)
|
||||
case 18461:
|
||||
{
|
||||
unitTarget->RemoveMovementImpairingAuras(true);
|
||||
unitTarget->RemoveAurasByType(SPELL_AURA_MOD_STALKED);
|
||||
|
||||
// See if we already are stealthed. If so, we're done.
|
||||
if (unitTarget->HasAura(1784))
|
||||
return;
|
||||
|
||||
// Reset cooldown on stealth if needed
|
||||
if (unitTarget->GetTypeId() == TYPEID_PLAYER && unitTarget->ToPlayer()->HasSpellCooldown(1784))
|
||||
unitTarget->ToPlayer()->RemoveSpellCooldown(1784);
|
||||
|
||||
unitTarget->CastSpell(unitTarget, 1784, true);
|
||||
return;
|
||||
}
|
||||
// Demonic Empowerment -- succubus
|
||||
case 54437:
|
||||
{
|
||||
@@ -4079,18 +4062,6 @@ void Spell::EffectSanctuary(SpellEffIndex /*effIndex*/)
|
||||
|
||||
// Xinef: Set last sanctuary time
|
||||
unitTarget->m_lastSanctuaryTime = GameTime::GetGameTimeMS().count();
|
||||
|
||||
// Vanish allows to remove all threat and cast regular stealth so other spells can be used
|
||||
if (m_caster->GetTypeId() == TYPEID_PLAYER
|
||||
&& m_spellInfo->SpellFamilyName == SPELLFAMILY_ROGUE
|
||||
&& (m_spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_ROGUE_VANISH))
|
||||
{
|
||||
m_caster->ToPlayer()->RemoveAurasByType(SPELL_AURA_MOD_ROOT);
|
||||
|
||||
//Clean Escape
|
||||
if (m_caster->HasAura(23582))
|
||||
m_caster->CastSpell(m_caster, 23583, true);
|
||||
}
|
||||
}
|
||||
|
||||
void Spell::EffectAddComboPoints(SpellEffIndex /*effIndex*/)
|
||||
|
||||
@@ -15,13 +15,6 @@
|
||||
* with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
/* ScriptData
|
||||
Name: gobject_commandscript
|
||||
%Complete: 100
|
||||
Comment: All gobject related commands
|
||||
Category: commandscripts
|
||||
EndScriptData */
|
||||
|
||||
#include "Chat.h"
|
||||
#include "CommandScript.h"
|
||||
#include "GameEventMgr.h"
|
||||
@@ -59,7 +52,8 @@ public:
|
||||
{ "add temp", HandleGameObjectAddTempCommand, SEC_GAMEMASTER, Console::No },
|
||||
{ "add", HandleGameObjectAddCommand, SEC_ADMINISTRATOR, Console::No },
|
||||
{ "set phase", HandleGameObjectSetPhaseCommand, SEC_ADMINISTRATOR, Console::No },
|
||||
{ "set state", HandleGameObjectSetStateCommand, SEC_ADMINISTRATOR, Console::No }
|
||||
{ "set state", HandleGameObjectSetStateCommand, SEC_ADMINISTRATOR, Console::No },
|
||||
{ "respawn", HandleGameObjectRespawn, SEC_GAMEMASTER, Console::No }
|
||||
};
|
||||
static ChatCommandTable commandTable =
|
||||
{
|
||||
@@ -581,6 +575,20 @@ public:
|
||||
handler->PSendSysMessage("Set gobject type %d state %u", objectType, *objectState);
|
||||
return true;
|
||||
}
|
||||
|
||||
static bool HandleGameObjectRespawn(ChatHandler* handler, GameObjectSpawnId guidLow)
|
||||
{
|
||||
GameObject* object = handler->GetObjectFromPlayerMapByDbGuid(guidLow);
|
||||
if (!object)
|
||||
{
|
||||
handler->SendErrorMessage(LANG_COMMAND_OBJNOTFOUND, uint32(guidLow));
|
||||
return false;
|
||||
}
|
||||
|
||||
object->Respawn();
|
||||
handler->PSendSysMessage(LANG_CMD_GO_RESPAWN, object->GetNameForLocaleIdx(handler->GetSessionDbcLocale()), object->GetEntry(), object->GetSpawnId());
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_gobject_commandscript()
|
||||
|
||||
@@ -82,6 +82,8 @@ struct boss_the_lurker_below : public BossAI
|
||||
if (GameObject* pool = instance->GetGameObject(DATA_STRANGE_POOL))
|
||||
{
|
||||
pool->Respawn();
|
||||
pool->SetRespawnTime(10);
|
||||
pool->SaveRespawnTime(10);
|
||||
}
|
||||
me->DespawnOrUnsummon(2000);
|
||||
}
|
||||
|
||||
@@ -693,6 +693,65 @@ class spell_rog_pickpocket : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
enum vanish
|
||||
{
|
||||
SPELL_PARALYZE = 38132,
|
||||
SPELL_CLEAN_ESCAPE_AURA = 23582,
|
||||
SPELL_CLEAN_ESCAPE_HEAL = 23583
|
||||
};
|
||||
|
||||
// 18461 - Vanish Purge (Server Side)
|
||||
class spell_rog_vanish_purge : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_rog_vanish_purge);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_PARALYZE });
|
||||
}
|
||||
|
||||
void HandleRootRemove(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (GetCaster() && !GetCaster()->HasAura(SPELL_PARALYZE)) // Root from Tainted Core SSC, should not be removed by vanish.
|
||||
GetCaster()->RemoveAurasWithMechanic(1 << MECHANIC_ROOT);
|
||||
}
|
||||
|
||||
void HandleSnareRemove(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (GetCaster())
|
||||
GetCaster()->RemoveAurasWithMechanic(1 << MECHANIC_SNARE);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
// Blizzard handles EFFECT_0 as the unroot and EFFECT_1 as unsnare. Hence why they are not done in the same place.
|
||||
OnEffectHitTarget += SpellEffectFn(spell_rog_vanish_purge::HandleRootRemove, EFFECT_0, SPELL_EFFECT_APPLY_AURA);
|
||||
OnEffectHitTarget += SpellEffectFn(spell_rog_vanish_purge::HandleSnareRemove, EFFECT_1, SPELL_EFFECT_APPLY_AURA);
|
||||
}
|
||||
};
|
||||
|
||||
// -1856 - Vanish
|
||||
class spell_rog_vanish : public SpellScript
|
||||
{
|
||||
PrepareSpellScript(spell_rog_vanish);
|
||||
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ SPELL_CLEAN_ESCAPE_AURA, SPELL_CLEAN_ESCAPE_HEAL });
|
||||
}
|
||||
|
||||
void HandleEffect(SpellEffIndex /*effIndex*/)
|
||||
{
|
||||
if (GetCaster() && GetCaster()->HasAura(SPELL_CLEAN_ESCAPE_AURA))
|
||||
GetCaster()->CastSpell(GetCaster(), SPELL_CLEAN_ESCAPE_HEAL, true);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectHitTarget += SpellEffectFn(spell_rog_vanish::HandleEffect, EFFECT_2, SPELL_EFFECT_SANCTUARY);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_rogue_spell_scripts()
|
||||
{
|
||||
RegisterSpellScript(spell_rog_savage_combat);
|
||||
@@ -709,5 +768,7 @@ void AddSC_rogue_spell_scripts()
|
||||
RegisterSpellScript(spell_rog_tricks_of_the_trade);
|
||||
RegisterSpellScript(spell_rog_tricks_of_the_trade_proc);
|
||||
RegisterSpellScript(spell_rog_pickpocket);
|
||||
RegisterSpellScript(spell_rog_vanish_purge);
|
||||
RegisterSpellScript(spell_rog_vanish);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user