Commit Graph
300 Commits
Author SHA1 Message Date
QAston e81175ec11 *Fix Hungering Cold.
--HG--
branch : trunk
rename : sql/updates/3997_world_spell_proc_event.sql => sql/updates/4000_world_spell_proc_event.sql
2009-06-15 01:10:09 +02:00
QAston 54eb0096fd *Fix Icy Talons and their improved version.
--HG--
branch : trunk
2009-06-14 23:01:16 +02:00
QAston e7910ec9d2 *Correct interpretation of procflags and update spell_proc_event due to that (some of mangos entries may be incompatibile due to that change)
*Fix siphon life.
*Fix Rapture.

--HG--
branch : trunk
2009-06-14 17:56:22 +02:00
megamage e192d8f39b *Some work on vehicle.
--HG--
branch : trunk
2009-06-14 09:57:57 -05:00
megamage e82ae5f8df *Fix spell 16007.
--HG--
branch : trunk
2009-06-11 11:35:31 -05:00
QAston da067afe12 *Fix Improved Spell Reflection
*Fix Glyph of Improved Scorch
*Sword And Board
*Fix Glyph of Devastate - original patch by CRAZyBUg

--HG--
branch : trunk
2009-06-10 23:44:30 +02:00
Them 0555ec4a35 *Fix errors with spell_affect table loading
--HG--
branch : trunk
2009-06-08 21:56:26 +02:00
QAston 06aa0a94d4 *Fix improved sprint.
--HG--
branch : trunk
2009-06-08 21:08:27 +02:00
megamage a328728cb8 *Implement spell aura 177.
--HG--
branch : trunk
2009-06-07 23:32:35 -05:00
QAston d0c801d6cf *Add support for stance-dependant action bar spells
*Temporary remove assert check in Player::RestoreSpellMods
*Apply bleeding damage bonuses for Shred.

--HG--
branch : trunk
2009-06-07 22:13:17 +02:00
QAston e6941a4f41 *Remove Arcane Blast on Arcane Missiles and Arcane Barrage cast
*Spell_affect entry for Fingers of frost - by Larva
*use spellaffect entries in every affect check
*Allow spell_affect table to modify affect data for any spell

--HG--
branch : trunk
2009-06-06 12:53:38 +02:00
adrycasillo 8bc014b42d *Do not allow Divine Spirit and Prayer of Divine spirit to stack.
--HG--
branch : trunk
2009-06-06 09:14:04 +02:00
QAston 39548d6822 *Update spellmod system
*Implement SPELL_ATTR_EX6_IGNORE_CASTER_AURAS
*Fix some bugs with traps proc flags

--HG--
branch : trunk
2009-06-06 08:27:36 +02:00
megamage 38fd158c40 *Fix the bug that some traps without charges and spell radius cannot be triggered.
*Provide spell support for quest 12698

--HG--
branch : trunk
2009-06-03 23:24:57 -05:00
megamage 89d2c6afda [7930] Added diminishing for spell 1499 and ranks. Author: Lightguard
--HG--
branch : trunk
2009-06-01 14:55:51 -05:00
megamage a36d4fc7ae [7917] Spell effect with SPELL_AURA_MOD_SPELL_CRIT_CHANCE always possitive with possitive aura value. Author: VladimirMangos
--HG--
branch : trunk
2009-05-31 16:01:19 -05:00
megamage 3faa712d42 *Allow some warrior shouts and druid roars to interrupt stealth. thanks to thenecromancer
--HG--
branch : trunk
2009-05-29 16:09:55 -05:00
megamage d2fe68bfef *Some improvement of DK start zone quests (no new quest fixed)
--HG--
branch : trunk
2009-05-27 23:33:21 -05:00
megamage 7ac4fb46c4 *Fix DK quest 12641
--HG--
branch : trunk
2009-05-26 22:13:36 -05:00
megamage 0652c95126 [7892] Update spell_loot_template entry description in error output for better fit to current table use. Author: VladimirMangos
--HG--
branch : trunk
2009-05-26 16:10:42 -05:00
megamage 326940181a *Consider flight spells as passive spells.
--HG--
branch : trunk
2009-05-26 15:32:11 -05:00
megamage ddcc7d1c66 *Move spelltarget table check to the start of the server to reduce log spams.
--HG--
branch : trunk
2009-05-25 16:50:01 -05:00
megamage a2f8a735ae *Merge.
--HG--
branch : trunk
2009-05-25 13:03:11 -05:00
megamage a53326353b *Do not allow wrecking crew stack with enrage. Also, allow proc buff overwrite another. Need better rules to check that. (see my comment in code)
--HG--
branch : trunk
2009-05-25 11:19:13 -05:00
megamage 7e1ca8f2ce *Merge.
--HG--
branch : trunk
2009-05-25 11:08:52 -05:00
QAston 1c505261bc *Remove auras with duration lower than 30 sec on arena start.
*Do not remove rougue poisons and dk runes on arena start.
*Apply healing bonus for healing stream totem.
*Do not duplicate damage bonus in code with the one in db for Seal of Vengenance/Corruption

--HG--
branch : trunk
2009-05-24 22:54:13 +02:00
megamage 09b386a786 [7886] Drop use table petcreateinfo_spell
This is first commit in chain for remove oudated and not used pet functionality.

    * Use instead dropped table CreatureSpellData.dbc if creature_template.PetSpellDataId set (mostly hunter pets)
    * Use creature_template.spellN if not set creature_template.PetSpellDataId (mostly different summon creatures)
    * Fixed bug with not removing from action bar spell icon for not ranked unlearned spells.

    Note: summoned controllable creatures without PetSpellDataId must have expected spells in spellN feilds for creature_template.

[7887] Drop pet spell teaching code, including field in character_pet.

Author: VladimirMangos

--HG--
branch : trunk
2009-05-24 12:16:12 -05:00
QAston 1b2579a2ab Ancestral Awakening target selection
--HG--
branch : trunk
2009-05-24 15:36:15 +02:00
QAston 74770dbcf6 *Fix whath of air and flametongue totem
--HG--
branch : trunk
2009-05-24 14:58:54 +02:00
QAston 9af492483e *always remove old aura instead of recalculating new one in same id stack case-this prevents some problem with spelleffects execution problems
--HG--
branch : trunk
2009-05-23 10:57:05 +02:00
megamage ec24442af4 *Fix rock shards spell for archavon script.
--HG--
branch : trunk
2009-05-23 01:43:46 -05:00
Anubisss 08e1ec8a8a *Correct spell id for Muru's Negative Energy's MaxAffectedTargets by Alyen. Thank you.
--HG--
branch : trunk
2009-05-23 00:18:24 +02:00
megamage 32064b79da *Do not remove/add aura for refreshing case.
--HG--
branch : trunk
2009-05-21 14:54:22 -05:00
megamage 4ed847a6e3 *Implement spell effect wmo damage.
--HG--
branch : trunk
2009-05-21 10:01:03 -05:00
megamage 6473e94358 *Update Naxx scripts. Now only Kelthuzad is incompleted
--HG--
branch : trunk
2009-05-20 11:44:38 -05:00
megamage e8be2f026e *Add some scripted spells for naxx.
--HG--
branch : trunk
2009-05-18 15:04:05 -05:00
megamage e45c57f298 *Fix the bug that startfall aoe damage also apply on direct target.
*Add starfall spell bonus for other ranks. By Uruviel and Nesocip.

--HG--
branch : trunk
2009-05-18 10:22:43 -05:00
megamage 5784d03121 *Fix the bug that inferno and curse of doom summons too many minions.
--HG--
branch : trunk
2009-05-17 17:33:39 -05:00
megamage 1c134f81e3 *Merge.
--HG--
branch : trunk
2009-05-17 16:40:40 -05:00
QAston 7c6757d7ee *Update proc system.
--HG--
branch : trunk
2009-05-17 18:00:33 +02:00
megamage 3569f949d7 [7839] Rafactoring player targeting code in chat command and related cleanups/improvments.
* New extractOptFirstArg function for easy get 2 args in case option playe name as first arg.
    * New extractPlayerTarget function for get player pointer/guid/name for online/offline player base at provided name
      or if not provided by current seelction with error cases processing.
    * Property apply mute/unmute in case use different character name from loggined currently for account.
    * .reset commands can be used from console now
    * .repairitems comamnd can be used from console now but only to online player.

Author: VladimirMangos

--HG--
branch : trunk
2009-05-17 10:57:55 -05:00
megamage 14edc1e5eb *Update naxx script.
--HG--
branch : trunk
2009-05-16 14:49:58 -05:00
QAston bb6e0dba89 *Fix lifebloom final heal coefficient - by nesocip
*Fix aura immunity dispel for spells like Resurrection sickness
*Do not proc auras without spellfamilyflags required for totems.
*Allow more auras to be displayed in client.
*Fix some issues with Cut to the Chase.

--HG--
branch : trunk
2009-05-16 20:23:56 +02:00
megamage 15c78a728e *Skip Mangos ([7833] Implement levelup spells for non-hunter pets. Author: VladimirMangos)
--HG--
branch : trunk
2009-05-15 16:36:59 -05:00
megamage 834580f6b2 *Move some Trinity-only functions to the end of file.
--HG--
branch : trunk
2009-05-15 16:26:00 -05:00
QAston d81352b421 *Allow hots to proc
--HG--
branch : trunk
2009-05-15 16:59:27 +02:00
QAston 47d5fc51c5 *Item enchancment/proc patch - original code by Thenecromancer
-void Player::CastItemCombatSpell(Item *item,Unit* Target, WeaponAttackType attType)
-{
-    if(!item || item->IsBroken())
-        return;
-
-    ItemPrototype const *proto = item->GetProto();
-    if(!proto)
-        return;
+void Player::CastItemCombatSpell(Item *item, CalcDamageInfo *damageInfo, ItemPrototype const * proto)
+{
+    Unit * Target = damageInfo->target;
+    WeaponAttackType attType = damageInfo->attackType;

     if (!Target || Target == this )
         return;

-    for (int i = 0; i < MAX_ITEM_PROTO_SPELLS; ++i)
-    {
-        _Spell const& spellData = proto->Spells[i];
-
-        // no spell
-        if(!spellData.SpellId )
-            continue;
-
-        // wrong triggering type
-        if(spellData.SpellTrigger != ITEM_SPELLTRIGGER_CHANCE_ON_HIT)
-            continue;
-
-        SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellData.SpellId);
-        if(!spellInfo)
-        {
-            sLog.outError("WORLD: unknown Item spellid %i", spellData.SpellId);
-            continue;
-        }
-
-        // not allow proc extra attack spell at extra attack
-        if( m_extraAttacks && IsSpellHaveEffect(spellInfo,SPELL_EFFECT_ADD_EXTRA_ATTACKS) )
-            return;
-
-        float chance = spellInfo->procChance;
-
-        if(spellData.SpellPPMRate)
-        {
-            uint32 WeaponSpeed = GetAttackTime(attType);
-            chance = GetPPMProcChance(WeaponSpeed, spellData.SpellPPMRate, spellInfo);
-        }
-        else if(chance > 100.0f)
-        {
-            chance = GetWeaponProcChance();
-        }
-
-        if (roll_chance_f(chance))
-            CastSpell(Target, spellInfo->Id, true, item);
+    // Can do effect if any damage done to target
+    if (damageInfo->damage)
+    {
+        for (int i = 0; i < 5; i++)
+        {
+            _Spell const& spellData = proto->Spells[i];
+
+            // no spell
+            if(!spellData.SpellId )
+                continue;
+
+            // wrong triggering type
+            if(spellData.SpellTrigger != ITEM_SPELLTRIGGER_CHANCE_ON_HIT)
+                continue;
+
+            SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellData.SpellId);
+            if(!spellInfo)
+            {
+                sLog.outError("WORLD: unknown Item spellid %i", spellData.SpellId);
+                continue;
+            }
+
+            // not allow proc extra attack spell at extra attack
+            if( m_extraAttacks && IsSpellHaveEffect(spellInfo,SPELL_EFFECT_ADD_EXTRA_ATTACKS) )
+                return;
+
+            float chance = spellInfo->procChance;
+
+            if(spellData.SpellPPMRate)
+            {
+                uint32 WeaponSpeed = GetAttackTime(attType);
+                chance = GetPPMProcChance(WeaponSpeed, spellData.SpellPPMRate, spellInfo);
+            }
+            else if(chance > 100.0f)
+            {
+                chance = GetWeaponProcChance();
+            }
+
+            if (roll_chance_f(chance))
+                CastSpell(Target, spellInfo->Id, true, item);
+        }
     }

     // item combat enchantments
@@ -6993,6 +6993,21 @@
             if(pEnchant->type[s]!=ITEM_ENCHANTMENT_TYPE_COMBAT_SPELL)
                 continue;

+            SpellEnchantProcEntry const* entry =  spellmgr.GetSpellEnchantProcEvent(enchant_id);
+
+            if (entry && entry->procEx)
+            {
+                // Check hit/crit/dodge/parry requirement
+                if((entry->procEx & damageInfo->procEx) == 0)
+                    continue;
+            }
+            else
+            {
+                // Can do effect if any damage done to target
+                if (!(damageInfo->damage))
+                    continue;
+            }
+
             SpellEntry const *spellInfo = sSpellStore.LookupEntry(pEnchant->spellid[s]);
             if (!spellInfo)
             {
@@ -7001,6 +7016,18 @@
             }

             float chance = pEnchant->amount[s] != 0 ? float(pEnchant->amount[s]) : GetWeaponProcChance();
+
+            if (entry && entry->PPMChance)
+            {
+                uint32 WeaponSpeed = GetAttackTime(attType);
+                chance = GetPPMProcChance(WeaponSpeed, entry->PPMChance, spellInfo);
+            }
+            else if (entry && entry->customChance)
+                chance = entry->customChance;
+
+            // Apply spell mods
+            ApplySpellMod(pEnchant->spellid[s],SPELLMOD_CHANCE_OF_SUCCESS,chance);
+
             if (roll_chance_f(chance))
             {
                 if(IsPositiveSpell(pEnchant->spellid[s]))
@@ -7012,6 +7039,7 @@
     }
 }

+
 void Player::CastItemUseSpell(Item *item,SpellCastTargets const& targets,uint8 cast_count, uint32 glyphIndex)
 {
     ItemPrototype const* proto = item->GetProto();

--HG--
branch : trunk
2009-05-15 16:37:22 +02:00
krz ee40287ef7 Do not allow to proc spells if they can't stack with already active auras.
this fixes 13048 and 12292.

--HG--
branch : trunk
2009-05-14 14:35:09 +02:00
QAston a9349e06ba *Fix a typo
--HG--
branch : trunk
2009-05-11 23:52:50 +02:00
QAston 51b5f2aa64 *Allow Hots to proc-this should fix talents like 33776 effect from hots.
--HG--
branch : trunk
2009-05-11 23:46:45 +02:00