Commit Graph

3048 Commits

Author SHA1 Message Date
megamage
0b9bb3b4ff *Use Null AI for spell click creature as default.
--HG--
branch : trunk
2009-05-17 23:28:12 -05:00
megamage
a922f36da5 *Update script for Loatheb.
--HG--
branch : trunk
2009-05-17 23:27:51 -05:00
megamage
1d859b6ee4 [7843] Added newline into Pet.h end to make gcc happy. Author: ApoC
--HG--
branch : trunk
2009-05-17 18:43:07 -05:00
megamage
786083d8cc [7842] Set and stop combat for pets at player enter to GM-mode. Author: DonTomika
--HG--
branch : trunk
2009-05-17 18:42:01 -05:00
megamage
ce0feb36ea [7841] Fixed: Prevent loading maps/vmaps when building enum. Author: SilverIce
--HG--
branch : trunk
2009-05-17 18:41:16 -05:00
megamage
3d43b9a612 *Remove some unused scripts and add a missing scriptname to full sql.
--HG--
branch : trunk
2009-05-17 18:00:17 -05:00
megamage
cbc375b895 *Fix a bug that event ai text is loaded twice.
--HG--
branch : trunk
2009-05-17 17:46:47 -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
5f023f64f3 *Use degree rather than radian for creature_formation table.
--HG--
branch : trunk
2009-05-17 17:29:25 -05: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
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
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
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
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
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
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