Commit Graph

2991 Commits

Author SHA1 Message Date
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
QAston
a796012723 *Merge some fixes from tc1
--HG--
branch : trunk
2009-05-15 18:00:50 +02:00
Anubisss
ad92f5e210 *Fix Glyph of Ice Block.
*Thanks QAston for the help in the SpellFamilyMask.

--HG--
branch : trunk
2009-05-15 17:58:06 +02:00
Anubisss
e6cd40a619 *Implement GetSpellCooldowns() for get m_spellCooldowns(Player's map of spell CDs).
--HG--
branch : trunk
2009-05-15 17:54:10 +02:00
BroodWyrm
7549076a38 *Rewrite Moroes Script to fix reset bug
--HG--
branch : trunk
2009-05-15 16:52:59 +02:00
QAston
ae461a4158 *Fix Cheat Death.
--HG--
branch : trunk
2009-05-15 15:33:23 +02:00
Genars & Aokromes
854e791c2f New server options to block adding GMs to friends by players and to block inviting GMs to parties
--HG--
branch : trunk
2009-05-14 23:07:17 +02:00
megamage
662dbb9744 *Fix a typo that cause crash. Thanks to Drahy.
--HG--
branch : trunk
2009-05-14 20:02:10 -05:00
megamage
047cc95388 *Add some distance check functions. By VladimirMangos.
--HG--
branch : trunk
2009-05-14 16:50:47 -05:00
megamage
811eee356d [7825] Fixed typo in comment and var. name. Author: BombermaG
--HG--
branch : trunk
2009-05-14 15:38:20 -05:00
megamage
5823e2c471 [7824] Implement use ArmorDamageModifier bonus for armor Author: DiSlord
--HG--
branch : trunk
2009-05-14 15:37:56 -05:00
megamage
9831dab114 [7822] Avoid declined names form show in case disabled config option with russian client at non-russian realm. Author: Foks
--HG--
branch : trunk
2009-05-14 11:59:15 -05:00
megamage
d3839aaaf0 [7821] Fixed typo in comment and var. name. Author: KAPATEJIb
--HG--
branch : trunk
2009-05-14 11:58:35 -05:00
megamage
c6407a8b4c [7820] Fixed typo in [7819] that not allow correct work non-scalling item stats. Author: VladimirMangos
--HG--
branch : trunk
2009-05-14 11:58:01 -05:00
megamage
43b84c7b07 Code style and cleanups in item equip checks. Author: VladimirMangos
--HG--
branch : trunk
2009-05-14 11:57:25 -05:00
megamage
8782d2d31a [7819] Correct use item ScalingStatValues data (ScalingStatValues.dbc): Author: DiSlord
- ScalingStatDistribution stats multiplier
     - Armor bonus from ssv
     - Damage from ssv
     - Feral AP from ssv
     - Feral AP from ssv dps bonus
    Use item->StatsCount in apply mods
    Not allow equip item if level > ScalingStatDistribution->maxlevel field

    TODO find more info about ScalingStatValuesEntry->spellBonus

--HG--
branch : trunk
2009-05-14 11:56:51 -05:00
megamage
bf82601817 [7818] Implement SPELL_AURA_MOD_FACTION_REPUTATION_GAIN. Author: DonTomika
--HG--
branch : trunk
2009-05-14 11:56:02 -05:00
megamage
657971629c *Merge. Sorry for the mess. But a rev was wrongly backouted so we have to make these two backouts.
--HG--
branch : trunk
2009-05-14 11:47:12 -05:00
megamage
22b082519e Backed out changeset: 7dcbf5239f55
--HG--
branch : trunk
2009-05-14 11:44:27 -05:00
megamage
64bee88f69 *Merge.
--HG--
branch : trunk
2009-05-14 11:41:34 -05:00
megamage
1b52fa4206 Backed out changeset: 5201ecc6b309
--HG--
branch : trunk
2009-05-14 11:40:02 -05:00
raczman
2ed9222ac9 Fixed build on linux.
Tested on Arch linux, still need someone to fixup .vcproj's for windows.

--HG--
branch : trunk
2009-05-14 13:25:35 +02:00
QAston
dbceefb4a1 *Merge
--HG--
branch : trunk
2009-05-14 06:38:22 +02:00
QAston
42aa8efe47 Backed out changeset 1f92b07df94a
--HG--
branch : trunk
2009-05-14 06:32:35 +02:00
megamage
22f34d1b74 *Merge.
--HG--
branch : trunk
2009-05-13 19:34:10 -05:00
megamage
eaf0f7d44a *Merge.
--HG--
branch : trunk
2009-05-13 19:28:55 -05:00
megamage
5457286416 [7815] Apply mangos code style: Replace tabs by spaces in recent added code. Author: VladimirMangos
--HG--
branch : trunk
2009-05-13 18:28:21 -05:00
megamage
cd2857fc3f [7813] Fixed build x64 debug on win. Author: AlexDereka
--HG--
branch : trunk
2009-05-13 18:26:11 -05:00
megamage
88107fa1d6 [7811] do not reload already loaded map coordinats at runtime. Author: Ambal
--HG--
branch : trunk
2009-05-13 18:24:35 -05:00
megamage
25e5c99dec [7810] Moved ZThread related code on ACE framework. Author: Ambal
Remove ZThread source code from mangos.

--HG--
branch : trunk
2009-05-13 18:22:21 -05:00
Anubisss
9dd5a1c6d7 *Better way in Glyph of Prayer of Healing.
--HG--
branch : trunk
2009-05-13 18:37:02 +02:00
QAston
131c29f132 *Merge.
--HG--
branch : trunk
2009-05-13 18:33:15 +02:00
QAston
9aab389937 *Better fix for judgements
--HG--
branch : trunk
2009-05-13 18:32:32 +02:00
QAston
9056165453 *Fix sudden death proc execute damage.
--HG--
branch : trunk
2009-05-13 18:00:07 +02:00
megamage
80c1901343 *Add script for Gothik. Please apply 3233_world_scripts_naxx.sql for new contents.
--HG--
branch : trunk
2009-05-13 10:59:00 -05:00
megamage
8994cbe081 *Update some script functions.
--HG--
branch : trunk
2009-05-13 10:54:11 -05:00
megamage
4cf3ca42f0 *Process events for dead creatures. This allows delayed spells to work after caster is dead.
--HG--
branch : trunk
2009-05-13 10:53:31 -05:00
megamage
f1fed2d947 *Allow passive unit to call entercombat function.
--HG--
branch : trunk
2009-05-13 10:52:55 -05:00
QAston
cfe64e00e7 *Do not parry/dodge judgements.
--HG--
branch : trunk
2009-05-13 17:19:09 +02:00
Farah
8db26443d0 *Fix Glyph of Prayer of healing
--HG--
branch : trunk
2009-05-13 17:05:51 +02:00
megamage
1fbc7377d1 *Do not show error for not assigned example scripts.
--HG--
branch : trunk
2009-05-12 11:16:26 -05:00
megamage
722701381b *Do not allow a spell proc itself. This fixes the crash caused by item 32500.
--HG--
branch : trunk
2009-05-12 10:25:47 -05:00
megamage
df4e8b456b *Move MoveFollow owner from MoveTargetedHome to enterevademode.
--HG--
branch : trunk
2009-05-12 10:11:54 -05:00
megamage
65b10830b8 *Fix a bug that arena never ends if the last player is killed with spirit of redemption talent.
--HG--
branch : trunk
2009-05-12 10:01:09 -05:00
megamage
2024577488 *Try to fix build in Linux.
--HG--
branch : trunk
2009-05-12 00:52:16 -05:00
megamage
8fc07d443a *Change waypoint data structure. Use creature db guid as path id. If a creature uses waypoint movement as default movement type, the path id should be DBGUID*10. For paths of script use, the path id should be DBGUID*10+1 ~ DBGUID*10+9.
*Two sql queries are included. Converter is used to convert the existing path id to new path id. "...creature_add..." is used to change table structure. You can first run the converter, then run the other one. Or run the other one directly and get the new data from the db team. Because it may take hours to run the converter.
*If you have custom data, you may need to run the converter. We suggest you use console to run it It is extremely slow to run the query. If you have multiple paths for a creature in your db, you need to do more work to convert it. However, if you know how to use multiple paths, you should already have more db knowledge than I do and you should know how to convert it.
*There may be a faster query to convert the db. If you know, please tell us. I am no sql expert.
*Backup your db first!
*Thanks to X-Savior and subhuman_bob.

--HG--
branch : trunk
2009-05-11 13:27:10 -05:00
megamage
91558b8b29 *Try to fix build in Linux.
--HG--
branch : trunk
2009-05-11 13:15:16 -05:00
megamage
f631b2a2d6 *Update creature AI functions.
--HG--
branch : trunk
2009-05-11 11:46:48 -05:00
megamage
5658963117 *Update Naxx scripts.
--HG--
branch : trunk
2009-05-11 03:17:48 -05:00
megamage
f9f5d078fd *Update instance script functions.
--HG--
branch : trunk
2009-05-11 03:17:13 -05:00