From e4f0a69a526307c629befd16f04de19b185747af Mon Sep 17 00:00:00 2001 From: KamiliaBlow#2908 Date: Sun, 21 May 2023 15:52:20 +0900 Subject: [PATCH] Crash fix - Outdated code, caused the server to crash when trying to send a query to the database --- src/server/scripts/Commands/cs_npc.cpp | 10 ++++---- src/server/scripts/Commands/cs_wp.cpp | 4 ++-- src/server/scripts/Spells/spell_warrior.cpp | 26 +++++++++++++++++++++ 3 files changed, 33 insertions(+), 7 deletions(-) diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp index f47cc8e266c42..33531ed867183 100644 --- a/src/server/scripts/Commands/cs_npc.cpp +++ b/src/server/scripts/Commands/cs_npc.cpp @@ -679,7 +679,7 @@ class npc_commandscript : public CommandScript return false; } - WorldDatabase.PQuery("INSERT INTO creature_addon(guid,emote) VALUES(%i,%i);", target->GetSpawnId(), emote); + WorldDatabase.PQuery("INSERT INTO creature_addon(guid,emote) VALUES('{}',{});", target->GetSpawnId(), emote); target->SetEmoteState(Emote(emote)); @@ -1432,7 +1432,7 @@ class npc_commandscript : public CommandScript //Cot? SQL guidLow = target->GetSpawnId(); std::string auraString = std::to_string(uint32(spellId)); - QueryResult guidSql = WorldDatabase.PQuery("SELECT auras FROM creature_addon WHERE guid = %u", guidLow); + QueryResult guidSql = WorldDatabase.PQuery("SELECT auras FROM creature_addon WHERE guid = '{}'", guidLow); if (!guidSql && spellId != 0) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_SET_AURA); @@ -1479,7 +1479,7 @@ class npc_commandscript : public CommandScript //Cot? SQL guidLow = target->GetSpawnId(); - QueryResult guidSql = WorldDatabase.PQuery("SELECT guid FROM creature_addon WHERE guid = %u", guidLow); + QueryResult guidSql = WorldDatabase.PQuery("SELECT guid FROM creature_addon WHERE guid = '{}'", guidLow); if (!guidSql) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_SET_MOUNT); @@ -1517,7 +1517,7 @@ class npc_commandscript : public CommandScript //Cot? SQL guidLow = target->GetSpawnId(); - QueryResult guidSql = WorldDatabase.PQuery("SELECT guid FROM creature_addon WHERE guid = %u", guidLow); + QueryResult guidSql = WorldDatabase.PQuery("SELECT guid FROM creature_addon WHERE guid = '{}'", guidLow); if (!guidSql) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_SET_ANIMKIT); @@ -1553,7 +1553,7 @@ class npc_commandscript : public CommandScript //Cot? SQL guidLow = target->GetSpawnId(); - QueryResult guidSql = WorldDatabase.PQuery("SELECT guid FROM creature_addon WHERE guid = %u", guidLow); + QueryResult guidSql = WorldDatabase.PQuery("SELECT guid FROM creature_addon WHERE guid = '{}'", guidLow); if (!guidSql) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_SET_ANIM); diff --git a/src/server/scripts/Commands/cs_wp.cpp b/src/server/scripts/Commands/cs_wp.cpp index 5ba965613d6fb..b6627ea3f2de3 100644 --- a/src/server/scripts/Commands/cs_wp.cpp +++ b/src/server/scripts/Commands/cs_wp.cpp @@ -1122,7 +1122,7 @@ class wp_commandscript : public CommandScript //SQL - QueryResult guidSql = WorldDatabase.PQuery("SELECT move_type FROM waypoint_data WHERE id = %u", wpId); + QueryResult guidSql = WorldDatabase.PQuery("SELECT move_type FROM waypoint_data WHERE id = '{}'", wpId); if (!guidSql) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_WP_MOVETYPE); @@ -1190,7 +1190,7 @@ class wp_commandscript : public CommandScript } //SQL - QueryResult guidSql = WorldDatabase.PQuery("SELECT delay FROM waypoint_data WHERE id = %u", wpId); + QueryResult guidSql = WorldDatabase.PQuery("SELECT delay FROM waypoint_data WHERE id = '{}'", wpId); if (!guidSql) { WorldDatabasePreparedStatement* stmt = WorldDatabase.GetPreparedStatement(WORLD_INS_WP_DELAY); diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index b9f314e8f4a8c..6713fe8745df0 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -55,6 +55,7 @@ enum WarriorSpells SPELL_WARRIOR_CHARGE_SLOW_EFFECT = 236027, SPELL_WARRIOR_COLOSSUS_SMASH = 167105, SPELL_WARRIOR_COLOSSUS_SMASH_AURA = 208086, + SPELL_WARRIOR_CRITICAL_THINKING_ENERGIZE = 392776, SPELL_WARRIOR_EXECUTE = 20647, SPELL_WARRIOR_FUELED_BY_VIOLENCE_HEAL = 383104, SPELL_WARRIOR_GLYPH_OF_THE_BLAZING_TRAIL = 123779, @@ -1296,6 +1297,30 @@ class spell_warr_shiel_charge : public SpellScript } }; +// 389306 - Critical Thinking +class spell_warr_critical_thinking : public AuraScript +{ + PrepareAuraScript(spell_warr_critical_thinking); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WARRIOR_CRITICAL_THINKING_ENERGIZE }); + } + + void HandleProc(AuraEffect* aurEff, ProcEventInfo& eventInfo) + { + Unit* target = GetTarget(); + Optional rageCost = eventInfo.GetProcSpell()->GetPowerTypeCostAmount(POWER_RAGE); + if (rageCost.has_value()) + target->CastSpell(nullptr, SPELL_WARRIOR_CRITICAL_THINKING_ENERGIZE, CastSpellExtraArgs(TRIGGERED_FULL_MASK).AddSpellBP0(CalculatePct(rageCost.value(), aurEff->GetAmount()))); + } + + void Register() override + { + AfterEffectProc += AuraEffectProcFn(spell_warr_critical_thinking::HandleProc, EFFECT_1, SPELL_AURA_DUMMY); + } +}; + void AddSC_warrior_spell_scripts() { RegisterSpellScript(spell_warr_bloodthirst); @@ -1334,4 +1359,5 @@ void AddSC_warrior_spell_scripts() new spell_warr_shout(); RegisterSpellScript(spell_warr_wirlwind_dmg); RegisterSpellScript(spell_warr_shiel_charge); + RegisterSpellScript(spell_warr_critical_thinking); }