Commit Graph
3300 Commits
Author SHA1 Message Date
thenecromancer 6ebfe2f580 Correct behavior of Add Extra Attact spelleffect.
Correctly send attack gain in spell log.
Attack right after processing effect
Ignore effect if target not in melee range/angle

--HG--
branch : trunk
2009-05-20 22:39:52 +02:00
megamage 1c134f81e3 *Merge.
--HG--
branch : trunk
2009-05-17 16:40:40 -05:00
megamage b95e67375c *Move AI function DamageTaken back to DealDamage.
--HG--
branch : trunk
2009-05-17 16:38:44 -05:00
megamage c75e3d526b *Update Naxx script. Let boss evade if they are pulled out of room.
--HG--
branch : trunk
2009-05-17 16:37:03 -05:00
megamage 424391d7c4 *Fix a bug that player may not be at correct location when log in after crash.
--HG--
branch : trunk
2009-05-17 16:36:40 -05:00
raczman b0c727abf7 Check wether NPC is friendly to player before interacting, to prevent
exploiting with cheating tool.

--HG--
branch : trunk
2009-05-17 21:10:51 +02:00
QAston 7c6757d7ee *Update proc system.
--HG--
branch : trunk
2009-05-17 18:00:33 +02:00
megamage f09f5c61d4 [7840] Fixed unexpected rounding in pet size scale calculation. Author: Naicisum
--HG--
branch : trunk
2009-05-17 10:58:31 -05: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 d2ef2c0500 [7837] Implement missed item enchant type (stat mana, stat health) Author: xILOSWag
--HG--
branch : trunk
2009-05-17 10:09:44 -05:00
megamage d99e66d931 [7836] Fixes for distance range checks. Author: VladimirMangos
* ignore 0.0f min range limit (this correct case when 2 object overlapped)

    Also use int32 for temporary store GetSessionDbLocaleIndex result.

--HG--
branch : trunk
2009-05-17 10:09:06 -05:00
megamage 98e32a041d *Do not clear unit movement flags when it is stunned/rooted
--HG--
branch : trunk
2009-05-17 10:07:11 -05:00
megamage d0a50c9d55 *Fix the sql error when saving pet auras.
--HG--
branch : trunk
2009-05-17 09:43:57 -05:00
megamage f4efa0f1df *Fix a crash caused by bg and arena.
--HG--
branch : trunk
2009-05-17 09:28:38 -05:00
krz cc85d9e1c4 Properly check if triggering spell can stack with player's aura.
That should fix e.g. water shield.

--HG--
branch : trunk
2009-05-17 12:03:54 +02:00
megamage 698b43f088 *Make some boss scripts safer. But I still strongly recommend that you do not spawn instance bosses outside the instance. They may make server crash like hell.
--HG--
branch : trunk
2009-05-16 22:45:13 -05:00
megamage c583767ad6 *Update gluth script.
--HG--
branch : trunk
2009-05-16 16:52:57 -05:00
megamage a0ba5dc206 *Allow creating new instance when log in and a save exists.
--HG--
branch : trunk
2009-05-16 16:52:45 -05:00
megamage a5df3c9e72 *Do not allow positive AOE affect totem.
--HG--
branch : trunk
2009-05-16 15:28:58 -05:00
megamage 09407c8757 *Do not allow taunt affect passive creatures.
*Fix build.

--HG--
branch : trunk
2009-05-16 15:28:37 -05:00
megamage e4456ae9f8 *Fix an exploit that instance can be reset when there are logged-out players in it.
--HG--
branch : trunk
2009-05-16 14:52:41 -05:00
megamage 14edc1e5eb *Update naxx script.
--HG--
branch : trunk
2009-05-16 14:49:58 -05:00
megamage 819326f286 *Update some instance script functions.
--HG--
branch : trunk
2009-05-16 14:49:30 -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
QAston 14daff6d38 *Change amount of passive auras if mod changed for them (this fixes Glyph of vigor apply/remove and some other spells)
*Backfire damage from unstable affliction is applied to dispeller now
*Correct amount of improved Divine Spirit

--HG--
branch : trunk
2009-05-16 17:59:36 +02:00
raczman 10ee81ef13 Moved most randomisation functions usage from static version into Map object.
--HG--
branch : trunk
2009-05-16 10:50:39 +02:00
megamage 9b4d3bf0af [7835] Store structures (with size = uint32) insteed pointer to structure in PetSpellMap. Author: VladimirMangos
--HG--
branch : trunk
2009-05-15 16:46:02 -05:00
megamage f5af5ea9e3 [7834] Mangos string loading code cleanups. Author: VladimirMangos
* Better integration creature event ai strings.
    * Not inclide in checks as expected max mangos strings range value to range

--HG--
branch : trunk
2009-05-15 16:41:36 -05: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
raczman c66877019e Added MTRand object to Map class.
This is first step of getting rid of static MTRandTSS object.

--HG--
branch : trunk
2009-05-15 22:41:13 +02:00
megamage 03cfacb361 *Fix a crash caused by eventai.
--HG--
branch : trunk
2009-05-15 14:23:05 -05:00
megamage c64c834c50 *Fix build.
--HG--
branch : trunk
2009-05-15 14:10:31 -05:00
raczman 5d78a9c6bd merge.
--HG--
branch : trunk
2009-05-15 21:06:58 +02:00
raczman ad552d272d Another two memory leaks.
--HG--
branch : trunk
2009-05-15 21:06:23 +02:00
megamage ff7f023ff1 *Merge.
--HG--
branch : trunk
2009-05-15 13:57:10 -05:00
megamage c15bae5871 [7832] Better check at petcreateinfo_spell loading for errors and redundend data. Author: VladimirMangos
--HG--
branch : trunk
2009-05-15 13:45:34 -05:00
megamage a442a9b914 [7831] Prevent have hunter pet with level greater player levels at level changes. Propertly set hunter pet xp values at level update. Author: VladimirMangos
--HG--
branch : trunk
2009-05-15 13:44:49 -05:00
megamage 0d715cfd8f *remove UNIT_FLAG2_FORCE_MOVE when loading players. This fix the bug that players cannot stop moving forward. By Bulkin.
--HG--
branch : trunk
2009-05-15 13:39:48 -05:00
QAston 4b782ccc1d *Blizzlike calculation of skill required to cast judgement-like spells.
--HG--
branch : trunk
2009-05-15 19:40:45 +02:00
QAston 02bc76455a *Fix build.
--HG--
branch : trunk
2009-05-15 18:30:34 +02:00
QAston d81352b421 *Allow hots to proc
--HG--
branch : trunk
2009-05-15 16:59:27 +02:00
QAston 4a20e22af3 *Do not proc relentless strikes with slice and dice twice
*Fix trap radius calculation in some cases-by krz

--HG--
branch : trunk
2009-05-15 16:51:26 +02:00
BroodWyrm b5b9f28117 *Rewrite Moroes Script to fix reset bug
--HG--
branch : trunk
2009-05-15 16:38:48 +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
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