diff options
24 files changed, 197 insertions, 75 deletions
diff --git a/sql/updates/world/2014_01_26_08_world_creature_template.sql b/sql/updates/world/2014_01_26_08_world_creature_template.sql new file mode 100644 index 00000000000..8adaaa07a50 --- /dev/null +++ b/sql/updates/world/2014_01_26_08_world_creature_template.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_template` SET `flags_extra`=130 WHERE `entry`=34174; diff --git a/sql/updates/world/2014_01_26_09_world_spell_script_names_335.sql b/sql/updates/world/2014_01_26_09_world_spell_script_names_335.sql new file mode 100644 index 00000000000..664ff0f8228 --- /dev/null +++ b/sql/updates/world/2014_01_26_09_world_spell_script_names_335.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN (53407,20271,53408); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(53407,'spell_pal_judgement_of_justice'), +(20271,'spell_pal_judgement_of_light'), +(53408,'spell_pal_judgement_of_wisdom'); diff --git a/sql/updates/world/2014_01_27_00_world_creature_queststarter.sql b/sql/updates/world/2014_01_27_00_world_creature_queststarter.sql new file mode 100644 index 00000000000..d77ae243d5d --- /dev/null +++ b/sql/updates/world/2014_01_27_00_world_creature_queststarter.sql @@ -0,0 +1,2 @@ +-- +INSERT INTO `creature_queststarter` (`id`,`quest`) VALUES (16271,9617); diff --git a/sql/updates/world/2014_01_27_01_world_creature.sql b/sql/updates/world/2014_01_27_01_world_creature.sql new file mode 100644 index 00000000000..06383902c49 --- /dev/null +++ b/sql/updates/world/2014_01_27_01_world_creature.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM `creature` WHERE `guid`=86933; diff --git a/sql/updates/world/2014_01_27_02_world_creature_template.sql b/sql/updates/world/2014_01_27_02_world_creature_template.sql new file mode 100644 index 00000000000..3f8a5288f38 --- /dev/null +++ b/sql/updates/world/2014_01_27_02_world_creature_template.sql @@ -0,0 +1,3 @@ +-- +UPDATE `creature_template` SET `spell1`=32982 WHERE `entry`=15439; +UPDATE `creature_template` SET `spell1`=33663 WHERE `entry`=15430; diff --git a/sql/updates/world/2014_01_27_03_world_quest.sql b/sql/updates/world/2014_01_27_03_world_quest.sql new file mode 100644 index 00000000000..b431d304bb2 --- /dev/null +++ b/sql/updates/world/2014_01_27_03_world_quest.sql @@ -0,0 +1,23 @@ +-- Fix taking of 6962/7025 Treats for Great-father Winter +-- Horde +UPDATE `quest_template` SET `PrevQuestId`=0 WHERE `Id`=6962; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (19,20) and `SourceEntry`IN(6962); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(20, 0, 6962, 0, 0, 8, 0, 7021, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'), +(19, 0, 6962, 0, 0, 8, 0, 7021, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'), +(20, 0, 6962, 0, 1, 8, 0, 7024, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'), +(19, 0, 6962, 0, 1, 8, 0, 7024, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'), +(20, 0, 6962, 0, 2, 8, 0, 6961, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'), +(19, 0, 6962, 0, 2, 8, 0, 6961, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'); + +-- Alliance +UPDATE `quest_template` SET `PrevQuestId`=0 WHERE `Id`=7025; +UPDATE `creature_queststarter` SET `id`='13433' WHERE `id`='13429' and`quest`='7022'; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (19,20) and `SourceEntry`IN(7025); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(20, 0, 7025, 0, 0, 8, 0, 7022, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'), +(19, 0, 7025, 0, 0, 8, 0, 7022, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'), +(20, 0, 7025, 0, 1, 8, 0, 7023, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'), +(19, 0, 7025, 0, 1, 8, 0, 7023, 0, 0, 0, 0, 0, '', 'Treats for Great-father Winter once Great-father Winter is Here! Has been completed'); diff --git a/sql/updates/world/2014_01_27_04_world_conditions.sql b/sql/updates/world/2014_01_27_04_world_conditions.sql new file mode 100644 index 00000000000..1ca0da434f3 --- /dev/null +++ b/sql/updates/world/2014_01_27_04_world_conditions.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceGroup`=29501 AND `SourceEntry`=54575; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(18, 29501, 54575, 0, 0, 15, 0, 32, 0, 0, 0, 0, 0, '', 'Spellclick only for dks'); diff --git a/sql/updates/world/2014_01_27_05_world_spell_target_position.sql b/sql/updates/world/2014_01_27_05_world_spell_target_position.sql new file mode 100644 index 00000000000..4dfb0ae26a4 --- /dev/null +++ b/sql/updates/world/2014_01_27_05_world_spell_target_position.sql @@ -0,0 +1,4 @@ +-- +DELETE FROM `spell_target_position` WHERE `id`=26448; +INSERT INTO `spell_target_position` (`id`,`target_map`,`target_position_x`,`target_position_y`,`target_position_z`,`target_orientation`) VALUES +(26448,1,7581.01,-2225.35,473.64,1.80); diff --git a/sql/updates/world/2014_01_27_06_world_gameobject.sql b/sql/updates/world/2014_01_27_06_world_gameobject.sql new file mode 100644 index 00000000000..80b613e7603 --- /dev/null +++ b/sql/updates/world/2014_01_27_06_world_gameobject.sql @@ -0,0 +1,17 @@ +-- By Darkman1983 +SET @GUID =11995; +INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES +(@GUID+0, 300058, 1, 0, 0, 1983.464966, -4255.527344, 31.897110, 0.526572, 0, 0, 0, 0, 300, 0, 1), +(@GUID+1, 300058, 1, 0, 0, -1031.407349, -230.353455, 160.180954, 3.209599, 0, 0, 0, 0, 300, 0, 1), +(@GUID+2, 300058, 1, 0, 0, 10150.500000, 2602.330078, 1330.829956, 4.751910, 0, 0, 0, 0, 300, 0, 1), +(@GUID+3, 300058, 0, 0, 0, 1642.353760, 239.186249, 62.591576, 5.267044, 0, 0, 0, 0, 300, 0, 1), +(@GUID+4, 300058, 0, 0, 0, -4663.466797, -955.900879, 500.377686, 5.617465, 0, 0, 0, 0, 300, 0, 1), +(@GUID+5, 300058, 0, 0, 0, -8747.168945, 1073.401367, 90.419289, 5.551456, 0, 0, 0, 0, 300, 0, 1); + +INSERT INTO `game_event_gameobject` (`eventEntry`, `guid`) VALUES +(7, @GUID+0), +(7, @GUID+1), +(7, @GUID+2), +(7, @GUID+3), +(7, @GUID+4), +(7, @GUID+5); diff --git a/sql/updates/world/2014_01_27_07_world_creature_template.sql b/sql/updates/world/2014_01_27_07_world_creature_template.sql new file mode 100644 index 00000000000..6da1a479c5e --- /dev/null +++ b/sql/updates/world/2014_01_27_07_world_creature_template.sql @@ -0,0 +1,3 @@ +-- +UPDATE `creature_template` SET `faction_A` = 83, `faction_H` = 83 WHERE `entry` = 38095; -- Sniffs confirm 37034 faction 83. +UPDATE `creature_template` SET `minlevel`=80, `maxlevel`=80, `faction_A`=83, `faction_H`=83 WHERE `entry`=35407; -- Sniffs confirm 34918 faction 83, copy level from normal mode. diff --git a/sql/updates/world/2014_01_27_08_world_creature_template.sql b/sql/updates/world/2014_01_27_08_world_creature_template.sql new file mode 100644 index 00000000000..d5818d2c979 --- /dev/null +++ b/sql/updates/world/2014_01_27_08_world_creature_template.sql @@ -0,0 +1,6 @@ +-- +UPDATE `creature_template` SET `faction_A` = 1770, `faction_H` = 1770 WHERE `entry` = 37809; -- Sniff shows faction 1770 for mob 37774 +UPDATE `creature_template` SET `faction_A` = 1214, `faction_H` = 1214 WHERE `entry` = 37296; -- Sniff shows faction 1214 for mob 14282 +UPDATE `creature_template` SET `faction_A` = 1594, `faction_H` = 1594 WHERE `entry` = 37240; -- Sniff shows faction 1594 for mob 14187 +UPDATE `creature_template` SET `faction_A` = 1334, `faction_H` = 1334 WHERE `entry` = 37416; -- Sniff shows faction 1334 for mob 11997 +UPDATE `creature_template` SET `faction_A` = 877, `faction_H` = 877 WHERE `entry` = 37370; -- Sniff shows faction 877 for mob 14185 diff --git a/sql/updates/world/2014_01_27_09_world_gameobject.sql b/sql/updates/world/2014_01_27_09_world_gameobject.sql new file mode 100644 index 00000000000..0d4a56a1045 --- /dev/null +++ b/sql/updates/world/2014_01_27_09_world_gameobject.sql @@ -0,0 +1,2 @@ +-- +UPDATE `gameobject` SET `spawnMask` = 1, `phaseMask` = 1 WHERE `id` = 300058; diff --git a/sql/updates/world/2014_01_27_10_world_creature_model_info.sql b/sql/updates/world/2014_01_27_10_world_creature_model_info.sql new file mode 100644 index 00000000000..adb94260fb9 --- /dev/null +++ b/sql/updates/world/2014_01_27_10_world_creature_model_info.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature_model_info` SET `modelid_other_gender`=0 WHERE `modelid` IN (1812, 3441); diff --git a/sql/updates/world/2014_01_27_10_world_creature_template.sql b/sql/updates/world/2014_01_27_10_world_creature_template.sql new file mode 100644 index 00000000000..6a47eb02805 --- /dev/null +++ b/sql/updates/world/2014_01_27_10_world_creature_template.sql @@ -0,0 +1,5 @@ +-- +UPDATE `creature_template` SET `faction_A` = 534, `faction_H` = 534 WHERE `entry` IN (37497,37603,37604); -- Sniff shows faction 534 for mobs 37496,37497 +UPDATE `creature_template` SET `faction_A` = 57, `faction_H` = 57 WHERE `entry` = 37281; -- Sniff shows faction 57 for mob 14188 +UPDATE `creature_template` SET `faction_A` = 21, `faction_H` = 21 WHERE `entry` = 37638; -- Sniff shows faction 21 for mob 36830 +UPDATE `creature_template` SET `faction_A` = 74, `faction_H` = 74 WHERE `entry` IN (19897,19899); -- Sniff shows faction 74 for mobs 18176, 18179 diff --git a/sql/updates/world/2014_01_27_12_world_creature_template.sql b/sql/updates/world/2014_01_27_12_world_creature_template.sql new file mode 100644 index 00000000000..7e88de7d20d --- /dev/null +++ b/sql/updates/world/2014_01_27_12_world_creature_template.sql @@ -0,0 +1,3 @@ +-- +UPDATE `creature_template` SET `faction_A` = 1215, `faction_H` = 1215 WHERE `entry` IN (37486,37318,37373,37485,37399,37401,37479,37320,37305); +UPDATE `creature_template` SET `faction_A` = 1217, `faction_H` = 1217 WHERE `entry` IN (37480,37483,37484); diff --git a/sql/updates/world/2014_01_27_13_world_creature_template.sql b/sql/updates/world/2014_01_27_13_world_creature_template.sql new file mode 100644 index 00000000000..e7e6edf8ed5 --- /dev/null +++ b/sql/updates/world/2014_01_27_13_world_creature_template.sql @@ -0,0 +1,3 @@ +-- +UPDATE `creature_template` SET `faction_A` = 1217, `faction_H` = 1217 WHERE `entry` IN (37242,37349,37344,37427,37348,37420,37315); +UPDATE `creature_template` SET `faction_A` = 1534, `faction_H` = 1534 WHERE `entry` IN (37285,37287,37327); diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp index 67d3975815f..8a2a6c67496 100644 --- a/src/server/authserver/Server/AuthSocket.cpp +++ b/src/server/authserver/Server/AuthSocket.cpp @@ -321,9 +321,7 @@ bool AuthSocket::_HandleLogonChallenge() socket().recv((char *)&buf[0], 4); -#if TRINITY_ENDIAN == TRINITY_BIGENDIAN EndianConvert(*((uint16*)(buf[0]))); -#endif uint16 remaining = ((sAuthLogonChallenge_C *)&buf[0])->size; TC_LOG_DEBUG("server.authserver", "[AuthChallenge] got header, body is %#04x bytes", remaining); @@ -343,7 +341,6 @@ bool AuthSocket::_HandleLogonChallenge() // BigEndian code, nop in little endian case // size already converted -#if TRINITY_ENDIAN == TRINITY_BIGENDIAN EndianConvert(*((uint32*)(&ch->gamename[0]))); EndianConvert(ch->build); EndianConvert(*((uint32*)(&ch->platform[0]))); @@ -351,7 +348,6 @@ bool AuthSocket::_HandleLogonChallenge() EndianConvert(*((uint32*)(&ch->country[0]))); EndianConvert(ch->timezone_bias); EndianConvert(ch->ip); -#endif ByteBuffer pkt; @@ -397,7 +393,7 @@ bool AuthSocket::_HandleLogonChallenge() bool locked = false; if (fields[2].GetUInt8() == 1) // if ip is locked { - TC_LOG_DEBUG("server.authserver", "[AuthChallenge] Account '%s' is locked to IP - '%s'", _login.c_str(), fields[3].GetCString()); + TC_LOG_DEBUG("server.authserver", "[AuthChallenge] Account '%s' is locked to IP - '%s'", _login.c_str(), fields[4].GetCString()); TC_LOG_DEBUG("server.authserver", "[AuthChallenge] Player address is '%s'", ip_address.c_str()); if (strcmp(fields[4].GetCString(), ip_address.c_str()) != 0) @@ -783,9 +779,7 @@ bool AuthSocket::_HandleReconnectChallenge() socket().recv((char *)&buf[0], 4); -#if TRINITY_ENDIAN == TRINITY_BIGENDIAN EndianConvert(*((uint16*)(buf[0]))); -#endif uint16 remaining = ((sAuthLogonChallenge_C *)&buf[0])->size; TC_LOG_DEBUG("server.authserver", "[ReconnectChallenge] got header, body is %#04x bytes", remaining); diff --git a/src/server/game/Entities/GameObject/GameObject.cpp b/src/server/game/Entities/GameObject/GameObject.cpp index d8c310aa055..01bdf63d464 100644 --- a/src/server/game/Entities/GameObject/GameObject.cpp +++ b/src/server/game/Entities/GameObject/GameObject.cpp @@ -2211,7 +2211,7 @@ void GameObject::GetRespawnPosition(float &x, float &y, float &z, float* ori /* *ori = GetOrientation(); } -float GameObject::GetInteractionDistance() +float GameObject::GetInteractionDistance() const { switch (GetGoType()) { @@ -2221,6 +2221,7 @@ float GameObject::GetInteractionDistance() case GAMEOBJECT_TYPE_MAILBOX: return 10.0f; case GAMEOBJECT_TYPE_FISHINGHOLE: + case GAMEOBJECT_TYPE_FISHINGNODE: return 20.0f + CONTACT_DISTANCE; // max spell range default: return INTERACTION_DISTANCE; diff --git a/src/server/game/Entities/GameObject/GameObject.h b/src/server/game/Entities/GameObject/GameObject.h index aade937cc6d..8f32f5fe080 100644 --- a/src/server/game/Entities/GameObject/GameObject.h +++ b/src/server/game/Entities/GameObject/GameObject.h @@ -831,7 +831,7 @@ class GameObject : public WorldObject, public GridObject<GameObject>, public Map float GetStationaryZ() const { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MO_TRANSPORT) return m_stationaryPosition.GetPositionZ(); return GetPositionZ(); } float GetStationaryO() const { if (GetGOInfo()->type != GAMEOBJECT_TYPE_MO_TRANSPORT) return m_stationaryPosition.GetOrientation(); return GetOrientation(); } - float GetInteractionDistance(); + float GetInteractionDistance() const; protected: bool AIM_Initialize(); diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp index 39448358d03..f152e4f5976 100644 --- a/src/server/game/Spells/SpellEffects.cpp +++ b/src/server/game/Spells/SpellEffects.cpp @@ -3800,65 +3800,6 @@ void Spell::EffectScriptEffect(SpellEffIndex effIndex) } break; } - case SPELLFAMILY_PALADIN: - { - // Judgement (seal trigger) - if (m_spellInfo->GetCategory() == SPELLCATEGORY_JUDGEMENT) - { - if (!unitTarget || !unitTarget->IsAlive()) - return; - uint32 spellId1 = 0; - uint32 spellId2 = 0; - - // Judgement self add switch - switch (m_spellInfo->Id) - { - case 53407: spellId1 = 20184; break; // Judgement of Justice - case 20271: // Judgement of Light - case 57774: spellId1 = 20185; break; // Judgement of Light - case 53408: spellId1 = 20186; break; // Judgement of Wisdom - default: - TC_LOG_ERROR("spells", "Unsupported Judgement (seal trigger) spell (Id: %u) in Spell::EffectScriptEffect", m_spellInfo->Id); - return; - } - // all seals have aura dummy in 2 effect - Unit::AuraApplicationMap & sealAuras = m_caster->GetAppliedAuras(); - for (Unit::AuraApplicationMap::iterator iter = sealAuras.begin(); iter != sealAuras.end();) - { - Aura* aura = iter->second->GetBase(); - if (aura->GetSpellInfo()->GetSpellSpecific() == SPELL_SPECIFIC_SEAL) - { - if (AuraEffect* aureff = aura->GetEffect(2)) - if (aureff->GetAuraType() == SPELL_AURA_DUMMY) - { - if (sSpellMgr->GetSpellInfo(aureff->GetAmount())) - spellId2 = aureff->GetAmount(); - break; - } - if (!spellId2) - { - switch (iter->first) - { - // Seal of light, Seal of wisdom, Seal of justice - case 20165: - case 20166: - case 20164: - spellId2 = 54158; - } - } - break; - } - else - ++iter; - } - if (spellId1) - m_caster->CastSpell(unitTarget, spellId1, true); - if (spellId2) - m_caster->CastSpell(unitTarget, spellId2, true); - return; - } - break; - } case SPELLFAMILY_DEATHKNIGHT: { // Pestilence @@ -5518,6 +5459,7 @@ void Spell::SummonGuardian(uint32 i, uint32 entry, SummonPropertiesEntry const* TempSummon* summon = map->SummonCreature(entry, pos, properties, duration, caster, m_spellInfo->Id); if (!summon) return; + if (summon->HasUnitTypeMask(UNIT_MASK_GUARDIAN)) ((Guardian*)summon)->InitStatsForLevel(level); diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 575c2fe2860..54f4aa8b32e 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -1181,7 +1181,7 @@ class spell_dru_wild_growth : public SpellScriptLoader bool Validate(SpellInfo const* spellInfo) OVERRIDE { - if (spellInfo->Effects[EFFECT_2].IsEffect() || !spellInfo->Effects[EFFECT_2].CalcValue()) + if (spellInfo->Effects[EFFECT_2].IsEffect() || spellInfo->Effects[EFFECT_2].CalcValue() <= 0) return false; return true; } @@ -1190,9 +1190,9 @@ class spell_dru_wild_growth : public SpellScriptLoader { targets.remove_if(RaidCheck(GetCaster())); - int32 const maxTargets = GetSpellInfo()->Effects[EFFECT_2].CalcValue(GetCaster()); + uint32 const maxTargets = uint32(GetSpellInfo()->Effects[EFFECT_2].CalcValue(GetCaster())); - if (targets.size() > uint32(maxTargets)) + if (targets.size() > maxTargets) { targets.sort(Trinity::HealthPctOrderPred()); targets.resize(maxTargets); diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index e066c8eb008..07d95aa63f5 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -290,7 +290,7 @@ enum PilgrimsBountyBuffFood class spell_pilgrims_bounty_buff_food : public SpellScriptLoader { private: - uint32 _triggeredSpellId; + uint32 const _triggeredSpellId; public: spell_pilgrims_bounty_buff_food(const char* name, uint32 triggeredSpellId) : SpellScriptLoader(name), _triggeredSpellId(triggeredSpellId) { } @@ -298,7 +298,7 @@ class spell_pilgrims_bounty_buff_food : public SpellScriptLoader { PrepareAuraScript(spell_pilgrims_bounty_buff_food_AuraScript) private: - uint32 _triggeredSpellId; + uint32 const _triggeredSpellId; public: spell_pilgrims_bounty_buff_food_AuraScript(uint32 triggeredSpellId) : AuraScript(), _triggeredSpellId(triggeredSpellId) { } @@ -311,6 +311,7 @@ class spell_pilgrims_bounty_buff_food : public SpellScriptLoader void HandleTriggerSpell(AuraEffect const* /*aurEff*/) { + PreventDefaultAction(); if (_handled) return; diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index f548255e554..23efbf3b514 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -56,6 +56,10 @@ enum PaladinSpells SPELL_PALADIN_IMPROVED_CONCENTRACTION_AURA = 63510, SPELL_PALADIN_IMPROVED_DEVOTION_AURA = 63514, SPELL_PALADIN_ITEM_HEALING_TRANCE = 37706, + SPELL_PALADIN_JUDGEMENT_DAMAGE = 54158, + SPELL_PALADIN_JUDGEMENT_OF_JUSTICE = 20184, + SPELL_PALADIN_JUDGEMENT_OF_LIGHT = 20185, + SPELL_PALADIN_JUDGEMENT_OF_WISDOM = 20186, SPELL_PALADIN_RIGHTEOUS_DEFENSE_TAUNT = 31790, SPELL_PALADIN_SANCTIFIED_RETRIBUTION_AURA = 63531, SPELL_PALADIN_SANCTIFIED_RETRIBUTION_R1 = 31869, @@ -826,6 +830,96 @@ class spell_pal_item_healing_discount : public SpellScriptLoader } }; +// 53407 - Judgement of Justice +// 20271 - Judgement of Light +// 53408 - Judgement of Wisdom +class spell_pal_judgement : public SpellScriptLoader +{ + public: + spell_pal_judgement(char const* scriptName, uint32 spellId) : SpellScriptLoader(scriptName), _spellId(spellId) { } + + class spell_pal_judgement_SpellScript : public SpellScript + { + PrepareSpellScript(spell_pal_judgement_SpellScript); + + public: + spell_pal_judgement_SpellScript(uint32 spellId) : SpellScript(), _spellId(spellId) { } + + bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE + { + if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_JUDGEMENT_DAMAGE) + || !sSpellMgr->GetSpellInfo(_spellId)) + return false; + return true; + } + + void HandleScriptEffect(SpellEffIndex /*effIndex*/) + { + uint32 spellId2 = SPELL_PALADIN_JUDGEMENT_DAMAGE; + + // some seals have SPELL_AURA_DUMMY in EFFECT_2 + Unit::AuraEffectList const& auras = GetCaster()->GetAuraEffectsByType(SPELL_AURA_DUMMY); + for (Unit::AuraEffectList::const_iterator i = auras.begin(); i != auras.end(); ++i) + { + if ((*i)->GetSpellInfo()->GetSpellSpecific() == SPELL_SPECIFIC_SEAL && (*i)->GetEffIndex() == EFFECT_2) + if (sSpellMgr->GetSpellInfo((*i)->GetAmount())) + { + spellId2 = (*i)->GetAmount(); + break; + } + } + + GetCaster()->CastSpell(GetHitUnit(), _spellId, true); + GetCaster()->CastSpell(GetHitUnit(), spellId2, true); + } + + void Register() OVERRIDE + { + OnEffectHitTarget += SpellEffectFn(spell_pal_judgement_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + + private: + uint32 const _spellId; + }; + + SpellScript* GetSpellScript() const OVERRIDE + { + return new spell_pal_judgement_SpellScript(_spellId); + } + + private: + uint32 const _spellId; +}; + +// 20425 - Judgement of Command +class spell_pal_judgement_of_command : public SpellScriptLoader +{ + public: + spell_pal_judgement_of_command() : SpellScriptLoader("spell_pal_judgement_of_command") { } + + class spell_pal_judgement_of_command_SpellScript : public SpellScript + { + PrepareSpellScript(spell_pal_judgement_of_command_SpellScript); + + void HandleDummy(SpellEffIndex /*effIndex*/) + { + if (Unit* unitTarget = GetHitUnit()) + if (SpellInfo const* spell_proto = sSpellMgr->GetSpellInfo(GetEffectValue())) + GetCaster()->CastSpell(unitTarget, spell_proto, true, NULL); + } + + void Register() OVERRIDE + { + OnEffectHitTarget += SpellEffectFn(spell_pal_judgement_of_command_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const OVERRIDE + { + return new spell_pal_judgement_of_command_SpellScript(); + } +}; + // 633 - Lay on Hands class spell_pal_lay_on_hands : public SpellScriptLoader { @@ -1114,6 +1208,10 @@ void AddSC_paladin_spell_scripts() new spell_pal_improved_aura_effect("spell_pal_improved_devotion_aura_effect"); new spell_pal_improved_aura_effect("spell_pal_sanctified_retribution_effect"); new spell_pal_item_healing_discount(); + new spell_pal_judgement("spell_pal_judgement_of_justice", SPELL_PALADIN_JUDGEMENT_OF_JUSTICE); + new spell_pal_judgement("spell_pal_judgement_of_light", SPELL_PALADIN_JUDGEMENT_OF_LIGHT); + new spell_pal_judgement("spell_pal_judgement_of_wisdom", SPELL_PALADIN_JUDGEMENT_OF_WISDOM); + new spell_pal_judgement_of_command(); new spell_pal_lay_on_hands(); new spell_pal_righteous_defense(); new spell_pal_sacred_shield(); diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 678ad54955a..c92f9e30ac5 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -79,7 +79,7 @@ enum MiscSpells class PowerCheck { public: - explicit PowerCheck(Powers power) : _power(power) { } + explicit PowerCheck(Powers const power) : _power(power) { } bool operator()(WorldObject* obj) const { @@ -90,7 +90,7 @@ class PowerCheck } private: - Powers _power; + Powers const _power; }; class RaidCheck |