aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2017_02_11_00_world.sql3
-rw-r--r--src/server/game/Spells/Auras/SpellAuraDefines.h2
-rw-r--r--src/server/game/Spells/Auras/SpellAuraEffects.cpp2
-rw-r--r--src/server/game/Spells/SpellEffects.cpp10
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp52
5 files changed, 67 insertions, 2 deletions
diff --git a/sql/updates/world/master/2017_02_11_00_world.sql b/sql/updates/world/master/2017_02_11_00_world.sql
new file mode 100644
index 00000000000..2b28e31773c
--- /dev/null
+++ b/sql/updates/world/master/2017_02_11_00_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_gen_fishing';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(131474,'spell_gen_fishing');
diff --git a/src/server/game/Spells/Auras/SpellAuraDefines.h b/src/server/game/Spells/Auras/SpellAuraDefines.h
index a3905f8a421..b5260c70961 100644
--- a/src/server/game/Spells/Auras/SpellAuraDefines.h
+++ b/src/server/game/Spells/Auras/SpellAuraDefines.h
@@ -315,7 +315,7 @@ enum AuraType
SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT = 255,
SPELL_AURA_NO_REAGENT_USE = 256,
SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS = 257,
- SPELL_AURA_258 = 258,
+ SPELL_AURA_OVERRIDE_SUMMONED_OBJECT = 258,
SPELL_AURA_259 = 259, // old SPELL_AURA_MOD_HOT_PCT, unused 4.3.4
SPELL_AURA_SCREEN_EFFECT = 260,
SPELL_AURA_PHASE = 261,
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index 250457d0d0d..4d373e9f0b8 100644
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -317,7 +317,7 @@ pAuraEffectHandler AuraEffectHandler[TOTAL_AURAS]=
&AuraEffect::HandleNoImmediateEffect, //255 SPELL_AURA_MOD_MECHANIC_DAMAGE_TAKEN_PERCENT implemented in Unit::SpellDamageBonus
&AuraEffect::HandleNoReagentUseAura, //256 SPELL_AURA_NO_REAGENT_USE Use SpellClassMask for spell select
&AuraEffect::HandleNULL, //257 SPELL_AURA_MOD_TARGET_RESIST_BY_SPELL_CLASS Use SpellClassMask for spell select
- &AuraEffect::HandleNULL, //258 SPELL_AURA_MOD_SPELL_VISUAL
+ &AuraEffect::HandleNoImmediateEffect, //258 SPELL_AURA_OVERRIDE_SUMMONED_OBJECT implemented in Spell::EffectTransmitted
&AuraEffect::HandleUnused, //259 unused (4.3.4) old SPELL_AURA_MOD_HOT_PCT
&AuraEffect::HandleNoImmediateEffect, //260 SPELL_AURA_SCREEN_EFFECT (miscvalue = id in ScreenEffect.dbc) not required any code
&AuraEffect::HandlePhase, //261 SPELL_AURA_PHASE
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 2bd23ee79dc..2837d320d06 100644
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -4740,6 +4740,16 @@ void Spell::EffectTransmitted(SpellEffIndex effIndex)
uint32 name_id = effectInfo->MiscValue;
+ Unit::AuraEffectList const& overrideSummonedGameObjects = m_caster->GetAuraEffectsByType(SPELL_AURA_OVERRIDE_SUMMONED_OBJECT);
+ for (AuraEffect const* aurEff : overrideSummonedGameObjects)
+ {
+ if (uint32(aurEff->GetMiscValue()) == name_id)
+ {
+ name_id = uint32(aurEff->GetMiscValueB());
+ break;
+ }
+ }
+
GameObjectTemplate const* goinfo = sObjectMgr->GetGameObjectTemplate(name_id);
if (!goinfo)
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 7e51fd7b24e..681a5efde3e 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -1629,6 +1629,57 @@ class spell_gen_elune_candle : public SpellScriptLoader
}
};
+enum FishingSpells
+{
+ SPELL_FISHING_NO_FISHING_POLE = 131476,
+ SPELL_FISHING_WITH_POLE = 131490
+};
+
+// 131474 - Fishing
+class spell_gen_fishing : public SpellScriptLoader
+{
+public:
+ spell_gen_fishing() : SpellScriptLoader("spell_gen_fishing") { }
+
+ class spell_gen_fishing_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_gen_fishing_SpellScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_FISHING_NO_FISHING_POLE, SPELL_FISHING_WITH_POLE });
+ }
+
+ bool Load() override
+ {
+ return GetCaster()->GetTypeId() == TYPEID_PLAYER;
+ }
+
+ void HandleDummy(SpellEffIndex effIndex)
+ {
+ PreventHitDefaultEffect(effIndex);
+ uint32 spellId;
+ Item* mainHand = GetCaster()->ToPlayer()->GetItemByPos(INVENTORY_SLOT_BAG_0, EQUIPMENT_SLOT_MAINHAND);
+ if (!mainHand || mainHand->GetTemplate()->GetClass() != ITEM_CLASS_WEAPON || mainHand->GetTemplate()->GetSubClass() != ITEM_SUBCLASS_WEAPON_FISHING_POLE)
+ spellId = SPELL_FISHING_NO_FISHING_POLE;
+ else
+ spellId = SPELL_FISHING_WITH_POLE;
+
+ GetCaster()->CastSpell(GetCaster(), spellId, false);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_gen_fishing_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+ };
+
+ SpellScript* GetSpellScript() const override
+ {
+ return new spell_gen_fishing_SpellScript();
+ }
+};
+
enum TransporterBackfires
{
SPELL_TRANSPORTER_MALFUNCTION_POLYMORPH = 23444,
@@ -4547,6 +4598,7 @@ void AddSC_generic_spell_scripts()
new spell_gen_dummy_trigger();
new spell_gen_dungeon_credit();
new spell_gen_elune_candle();
+ new spell_gen_fishing();
new spell_gen_gadgetzan_transporter_backfire();
new spell_gen_gift_of_naaru();
new spell_gen_gnomish_transporter();