Commit Graph
298 Commits
Author SHA1 Message Date
megamage d9ec2d2196 [8072] First step to get rid of data blob.
Adds new fields gender, level, xp, money, playerBytes, playerBytes2 and playerFlags to characters table.

    The update will not work if your database contains characters with an old data field (not fitting to the actual client version).

    It's recommended to backup your character database before applying this patch.

--HG--
branch : trunk
2009-06-27 17:39:51 -05:00
megamage a363df1836 *Fix a crash caused by player saves with incorrect instance id.
--HG--
branch : trunk
2009-06-27 16:18:08 -05:00
QAston da3569402d *Merge tc1 1591 - 1599, skip 1596
--HG--
branch : trunk
2009-06-27 15:51:36 +02:00
QAston 33b2917bb7 *Fix Ferocious Bite energy to dmg conversion
*Remove duplicated AP coefficients for Hammer of Wrath and Avengers Shield
*Correctly do effectaddcombopoints for spells which take them.
*Do not proc spelleffects on player login.

--HG--
branch : trunk
2009-06-24 15:58:44 +02:00
QAston 09a4fdc1c7 [8066] Fixed typo in Teleport call. Author: Ambal
--HG--
branch : trunk
2009-06-23 14:21:14 +02:00
QAston f2ec641e42 [8056] Move SMSG_CLEAR_COOLDOWN into function and use it. Other cleanups. Author:XTZGZoReX
[8060] Store spell_pet_auras for auraeffects instead of by whole aura Author:hunuza.

--HG--
branch : trunk
2009-06-23 14:05:37 +02:00
QAston ad91c6b1e2 [8052] Fixed typo in error log output. Author: The_Game_Master
[8049] Added energize effect after last heal tick for 33763 and ranks. Author: bobaz
[8053] At character talents reset using chat command also reset talents
for all character pets. Author: VladimirMangos

--HG--
branch : trunk
2009-06-23 13:05:15 +02:00
krz dd52461d40 * Allow spells to trigger ItemCombatSpells if spell is melee/ranged damage based. Original patch by freegajnja
* Tabs to spaces.

--HG--
branch : trunk
2009-06-23 04:47:46 +02:00
Machiavelli a4dafbf8ec * More updating of iterator data types in loops
--HG--
branch : trunk
2009-06-18 18:29:28 +02:00
megamage 3cf2be6042 [8026] Obtain object's map directly by calling appropriate WorldObject::GetMap()/GetBaseMap() functions instead of accessing MapManager. Code cleanups. Big thanks Infinity for tests. Author: Ambal
--HG--
branch : trunk
2009-06-16 11:19:59 -05:00
QAston 2e6db5421e *Fix aura type 280.
--HG--
branch : trunk
2009-06-16 15:29:07 +02:00
megamage b9610f27dd *Check movementflag to interrupt casting instead of checking position.
*Also some other fixes about movement flags.

--HG--
branch : trunk
2009-06-15 12:02:55 -05:00
megamage 4e005c3070 [8013] Fixed SMSG_RAID_INSTANCE_INFO opcode, some other fixes. Author: tomrus88
--HG--
branch : trunk
2009-06-14 10:19:44 -05:00
megamage 314a4f8f00 [8008] Fixed SMSG_RAID_INSTANCE_MESSAGE opcode. Author: tomrus88
--HG--
branch : trunk
2009-06-14 10:06:41 -05:00
megamage c0c9b14e1d [8002] Implemented ACHIEVEMENT_CRITERIA_DATA_TYPE S_DRUNK and fixed typos in ACHIEVEMENT_CRITERIA_DATA_TYPE_T_TEAM Author: Dyddye
--HG--
branch : trunk
2009-06-14 09:59:50 -05:00
megamage ee9c12b480 *Some fix of vehicles. Thanks to Seizerkiller.
--HG--
branch : trunk
2009-06-13 09:18:54 -05:00
megamage 9d670fe6f5 *Switch to support client version 3.1.3
*I strongly recommend you not to use this until you get the 313 db. Now all destructible buildings cause client crash.

Source: Mangos
Thanks to TOM_RUS for most work to make this switch possible ;)

--HG--
branch : trunk
2009-06-11 00:45:59 -05:00
megamage 6578cce471 *Add column heroic_level_min in table access_requirement
--HG--
branch : trunk
2009-06-08 15:31:04 -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
megamage ebfb4c0558 [7971] Implement support exotic pets limtations related to hunter telent 53270. Author: VladimirMangos
Note: before this commit hunters can tame exotic pets like any other.
          After patch like not propertly contriolled pets will auto-dismiss at loading
          if talent not learned.

--HG--
branch : trunk
2009-06-06 20:31:23 -05:00
QAston 6f9f1a13f5 *Fix build.
--HG--
branch : trunk
2009-06-06 08:42:43 +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 711ae28947 [7942] Fixed typo: proffesion->profession
[7944] Replace 10 by MAX_UNIT_ACTION_BAR_INDEX in packet size of SMSG_PET_SPELLS.
Author: yad02

--HG--
branch : trunk
2009-06-02 17:50:12 -05:00
megamage 30544055de *Merge.
--HG--
branch : trunk
2009-06-01 15:26:44 -05:00
megamage f92e8315cf [7918] Improve portability in work with uint64 string format specifiers and in code literals. Author: VladimirMangos
* Replace platform seelction MaNGOS code for select format descriptor for uint64 by using ACE define.
      I64FMTD renamed to UI64FMTD for more clear name.
    * Add new define UI64LIT (base at ACE seelction) for build portables uint64 literals.
      Please always use UI64LIT(0x00001) instead less portable 0x00001LL

--HG--
branch : trunk
2009-05-31 16:15:12 -05:00
megamage 5ed5513ca8 Mangos [7911]. Author: tomrus88
Very big patch. May cause bugs.

--HG--
branch : trunk
2009-05-31 15:56:51 -05:00
tvaroh a3a7996fd1 Do not remove poison enchantment auras when entering arena battle.
--HG--
branch : trunk
2009-05-30 18:27:08 +02:00
megamage bc32144310 *Update OutdoorPvP functions. No longer need creature triggers for capture points.
--HG--
branch : trunk
2009-05-29 00:18:41 -05:00
megamage 1288761fb7 [7905] Implement ACTION_T_SET_SHEATH for creature event ai make possibility set ranged fire state. Author: VladimirMangos
Also related cleanup code in field cases and player Player::SetSheath.

--HG--
branch : trunk
2009-05-28 18:43:57 -05:00
thenecromancer bc55209b3e Restore used spell mods if spell cast fails.
--HG--
branch : trunk
2009-05-28 23:05:52 +02:00
megamage 73d31e2552 [7898] Improve client error output at different mail send errors, cleanup code. Author: VladimirMangos
--HG--
branch : trunk
2009-05-27 16:38:50 -05:00
megamage cb72853dc6 *Cleanup message deliver functions. Remove unused parameters.
--HG--
branch : trunk
2009-05-27 09:09:22 -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 2fadf3dd77 Fixed bank bag slot amount achievement statistic. Cleanup related code. Author: VladimirMangos
--HG--
branch : trunk
2009-05-24 11:17:03 -05:00
megamage 3641be039b *Set pvp flags for units controlled by player.
*Reset pvp flags when unit is uncharmed.
*Remove walk flag when unit is charmed.

--HG--
branch : trunk
2009-05-22 03:12:35 -05:00
QAston 1403419164 *Fix reckonging
*fix Sword and Board
*Fix Vigilance
*Rollback sw:death fix.

--HG--
branch : trunk
2009-05-21 20:02:22 +02: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
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
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
megamage bf82601817 [7818] Implement SPELL_AURA_MOD_FACTION_REPUTATION_GAIN. Author: DonTomika
--HG--
branch : trunk
2009-05-14 11:56:02 -05: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
megamage ff3332f066 [7809] Replace repeating "remove cooldown and send update to client" code by function call. Author: VladimirMangos
--HG--
branch : trunk
2009-05-10 14:51:51 -05:00
QAston fcf0fdc1c1 *Item enchancment/proc patch - original code by Thenecromancer
--HG--
branch : trunk
2009-05-10 18:06:22 +02:00
megamage 29921b5bea [7798] More Player::ActivateTaxiPathTo use improvements Author: VladimirMangos
* Provide more explicit way about spell that cast taxi flight if any
    * Remove incorrect states instead error reporting in case non-taximaster flight start (cast/script)
    * Remove mount_id arg from ActivateTaxiPathTo and implement support for 0 mount_id case (spell 32474)
    * Implement spell 32474 (except finilize part)
    * Provided Player::ActivateTaxiPathTo(uint32 taxi_path_id) function version for simplify one node to node paths use by id.

--HG--
branch : trunk
2009-05-08 18:52:12 -05:00
megamage e69d2cbed9 [7776] Completed implementation of CMSG_SPELLCLICK Author: arrai
For vehicles, you have to add the correct SPELL_AURA_CONTROL_VEHICLE spells to
    npc_spellclick_spells, otherwise you won't be able to use them

--HG--
branch : trunk
2009-05-05 16:56:15 -05:00
megamage a04c9bfe00 [7772] Implement ACHIEVEMENT_CRITERIA_TYPE_HIGHEST_GOLD_VALUE_OWNED Author: DonTomika
--HG--
branch : trunk
2009-05-05 14:48:48 -05:00
megamage 30ac988ad3 *Fix build.
--HG--
branch : trunk
2009-05-03 22:33:41 -05:00
megamage 85fbe3ada2 [7740] More correct flags in trainer list data for profession ranks. Author: VladimirMangos
Note: this is not fix problem with gren show recently learned non-first rank of primary profession.

    Thanks to Seizerkiller for help in reseach.

--HG--
branch : trunk
2009-05-01 01:33:08 -05:00
megamage 4b4f472357 [7737] Implement ACHIEVEMENT_CRITERIA_TYPE_LOOT_TYPE. Author: Trazom
Zone dependent achievement criteria required DB support.

--HG--
branch : trunk
2009-04-29 18:42:53 -05:00
megamage de11b9e901 [7730] Some optimizantion and code style. Author: zhenya
--HG--
branch : trunk
2009-04-29 00:26:07 -05:00