Death Knight Spell : Garagoyle.

Code:
Index: src/arcemu-world/Pet.cpp
===================================================================
--- src/arcemu-world/Pet.cpp
+++ src/arcemu-world/Pet.cpp
@@ -29,6 +29,8 @@
 #define SHADOWFIEND        19668
 #define SPIRITWOLF        29264
 #define DANCINGRUNEWEAPON 27893
+#define TREANT                 1964
+#define GARGOYLE               17906
 
 uint32 Pet::GetAutoCastTypeForSpell( SpellEntry * ent )
 {
@@ -60,6 +62,14 @@
         break;
 
     /************************************************************************/
+    /* DK Pet Spell                                                            */
+    /************************************************************************/
+        case SPELL_HASH_GARGOYLE_STRIKE:
+            return AUTOCAST_EVENT_ATTACK;
+            break;
+    
+
+    /************************************************************************/
     /* Hunter Pet Spells                                                    */
     /************************************************************************/
     case SPELL_HASH_THUNDERSTOMP:        // Thunderstomp
@@ -75,9 +85,12 @@
     /* Mage Pet Spells                                                        */
     /************************************************************************/
 
-    case SPELL_HASH_WATERBOLT:            // Waterbolt
+    case SPELL_HASH_WATER_BOLT:            // Updated to WATER_BOLT hence it didn't match Spellhash.h elsewise.
         return AUTOCAST_EVENT_ATTACK;
         break;
+    case SPELL_HASH_FREEZE:
+        return AUTOCAST_EVENT_NONE;
+        break;
 
     /************************************************************************/
     /* Shaman Pet Spells                                                    */

Index: src/arcemu-world/SpellEffects.cpp
===================================================================
--- src/arcemu-world/SpellEffects.cpp
+++ src/arcemu-world/SpellEffects.cpp
@@ -3214,6 +3214,15 @@
             summon->AddSpell( dbcSpell.LookupEntry(31707), true );
             summon->AddSpell( dbcSpell.LookupEntry(33395), true );
         }break;
+    
+    case 17906: // Gargoyle
+        {
+            Pet *summon = objmgr.CreatePet(GetProto()->EffectMiscValue[i]);
+            summon->CreateAsSummon( GetProto()->EffectMiscValue[i], ci, NULL, p_caster, GetProto(), 1, GetDuration() );
+            summon->AddSpell( dbcSpell.LookupEntry(31664), true ); // Gargoyle Strike
+        }break;
+    
+
     case 29264: // Feral Spirit
         {
             /*

Index: src/arcemu-world/SpellFixes.cpp
===================================================================
--- src/arcemu-world/SpellFixes.cpp
+++ src/arcemu-world/SpellFixes.cpp
@@ -2958,6 +2958,28 @@
         sp = dbcSpell.LookupEntryForced( 59578 );
         if( sp != NULL )
             sp->AuraInterruptFlags = AURA_INTERRUPT_ON_CAST_SPELL;
+        
+        // Infected Wounds Rank 1
+            sp = dbcSpell.LookupEntryForced(58179);
+            if( sp != NULL)
+            {
+                sp->procChance = 100;
+                sp->procFlags = PROC_ON_CAST_SPELL;
+                }
+        // Infected Wounds Rank 1
+            sp = dbcSpell.LookupEntryForced(58180);
+            if( sp != NULL)
+            {
+                sp->procChance = 100;
+                sp->procFlags = PROC_ON_CAST_SPELL;
+                }
+        // Infected Wounds Rank 1
+            sp = dbcSpell.LookupEntryForced(58181);
+            if( sp != NULL)
+            {
+                sp->procChance = 100;
+                sp->procFlags = PROC_ON_CAST_SPELL;
+                }
 
         //Paladin - Hammer of Justice - Interrupt effect
         sp = dbcSpell.LookupEntryForced( 853 );

Index: src/arcemu-world/Unit.cpp
===================================================================
--- src/arcemu-world/Unit.cpp
+++ src/arcemu-world/Unit.cpp
@@ -1277,6 +1277,20 @@
                     if( CastingSpell->Id != 5229 )//enrage
                         continue;
                 }break;
+
+                // Druid - Infected Wounds
+                case 58179:
+                case 58180:
+                case 58181:
+                    {
+                        if( CastingSpell == NULL )
+                             continue;
+                        if( CastingSpell->NameHash != SPELL_HASH_SHRED &&
+                            CastingSpell->NameHash != SPELL_HASH_MANGLE &&
+                            CastingSpell->NameHash != SPELL_HASH_MAUL )
+                            continue;
+                }break;
+            
                 case 31616: //Nature's Guardian
                 {
                     //yep, another special case: Nature's grace
Dancing Runeblad (Hacky Fix.)

Code:
Index: src/arcemu-world/SpellEffects.cpp
===================================================================
--- src/arcemu-world/SpellEffects.cpp    2010-02-20 17:04:51 +00:00 (rev 36)
+++ src/arcemu-world/SpellEffects.cpp    2010-02-20 17:11:07 +00:00 (rev 37)
@@ -391,7 +391,7 @@
 
     switch( spellId )
     {
-    case 48743:
+    case 48743: // death pact
     case 29364:    // encapsulate voidwalker
         {
             // retarget? some one test this spell.
@@ -3272,10 +3272,11 @@
             Pet *summon = objmgr.CreatePet(GetProto()->EffectMiscValue[i]);
             summon->CreateAsSummon(26125, ci, NULL, p_caster, GetProto(), 1, extradur );
             summon->SetDisplayId((uint32)15435);
-            summon->SetMinDamage((float)p_caster->GetDamageDoneMod(SCHOOL_NORMAL));
-            summon->SetMaxDamage((float)p_caster->GetDamageDoneMod(SCHOOL_NORMAL));
+            //summon->SetFloatValue(UNIT_FIELD_MINDAMAGE,(float)p_caster->GetDamageDoneMod(SCHOOL_NORMAL));
+            //summon->SetFloatValue(UNIT_FIELD_MAXDAMAGE,(float)p_caster->GetDamageDoneMod(SCHOOL_NORMAL)); // Not sure 'bout this.
+            summon->SetFloatValue(UNIT_FIELD_MINDAMAGE, (float)p_caster->GetMainMeleeDamage(0) * 0.5); // 50% of the damage done by the Dk.
+            summon->SetFloatValue(UNIT_FIELD_MAXDAMAGE, (float)p_caster->GetMainMeleeDamage(0) * 0.5); // Same with MAXDAMAGE.
             summon->GetAIInterface()->SetUnitToFollowAngle(float(-(M_PI/2)));
-
             Item * item = p_caster->GetItemInterface()->GetInventoryItem( EQUIPMENT_SLOT_MAINHAND );
             if( item != NULL )
             {

Shattered Barrier.
Code:
Index: src/arcemu-world/Unit.cpp
===================================================================
--- src/arcemu-world/Unit.cpp
+++ src/arcemu-world/Unit.cpp
@@ -5678,6 +5678,29 @@
                 }
             }
 
+            switch((*j)->spellid)
+                {
+            case 11426: // Ice Barrier Ranks
+            case 13031:
+            case 13032:
+            case 13033:
+            case 27134:
+            case 33405:
+            case 43038:
+            case 43039:
+                {
+                    if(HasAura(54787))
+                    {
+                        CastSpell(this, 55080, true);
+                    }
+                    else if ( HasAura(44745) )
+                    {
+                        if( Rand(50.0f) )
+                            CastSpell(this, 55080, true);
+                    }
+                        }break;
+                }
+
             this->RemoveAura((*j)->spellid); //,(*j)->caster);
             if(!*dmg)//absorbed all dmg
                 break;
Typhoon rank 1 to 5.
Code:
Index: src/arcemu-world/SpellFixes.cpp
===================================================================
--- src/arcemu-world/SpellFixes.cpp
+++ src/arcemu-world/SpellFixes.cpp
@@ -1345,7 +1345,62 @@
         //////////////////////////////////////////
         // DRUID                                //
         //////////////////////////////////////////
-        
+        //Druid - Typhoon rank 1
+        sp = dbcSpell.LookupEntryForced( 61391 );
+        if( sp != NULL )
+        {
+            sp->Effect[1] = SPELL_EFFECT_TRIGGER_SPELL;
+            sp->EffectApplyAuraName[1] = SPELL_AURA_PROC_TRIGGER_SPELL;
+            sp->EffectTriggerSpell[1] = 50516;
+            sp->procFlags = PROC_ON_CAST_SPELL;
+            sp->procChance = 100;
+        }
+
+        //Druid - Typhoon rank 2
+        sp = dbcSpell.LookupEntryForced( 61390 );
+        if( sp != NULL )
+        {
+            sp->Effect[1] = SPELL_EFFECT_TRIGGER_SPELL;
+            sp->EffectApplyAuraName[1] = SPELL_AURA_PROC_TRIGGER_SPELL;
+            sp->EffectTriggerSpell[1] = 53223;
+            sp->procFlags = PROC_ON_CAST_SPELL;
+            sp->procChance = 100;
+        }
+    
+        //Druid - Typhoon rank 3
+        sp = dbcSpell.LookupEntryForced( 61388 );
+        if( sp != NULL )
+        {
+            sp->Effect[1] = SPELL_EFFECT_TRIGGER_SPELL;
+            sp->EffectApplyAuraName[1] = SPELL_AURA_PROC_TRIGGER_SPELL;
+            sp->EffectTriggerSpell[1] = 53225;
+            sp->procFlags = PROC_ON_CAST_SPELL;
+            sp->procChance = 100;
+        }
+
+        //Druid - Typhoon rank 5
+        sp = dbcSpell.LookupEntryForced( 61387 );
+        if( sp != NULL )
+        {
+            sp->Effect[1] = SPELL_EFFECT_TRIGGER_SPELL;
+            sp->EffectApplyAuraName[1] = SPELL_AURA_PROC_TRIGGER_SPELL;
+            sp->EffectTriggerSpell[1] = 53226;
+            sp->procFlags = PROC_ON_CAST_SPELL;
+            sp->procChance = 100;
+        }
+
+        //Druid - Typhoon rank 5
+        sp = dbcSpell.LookupEntryForced( 61384 );
+        if( sp != NULL )
+        {
+            sp->Effect[1] = SPELL_EFFECT_TRIGGER_SPELL;
+            sp->EffectApplyAuraName[1] = SPELL_AURA_PROC_TRIGGER_SPELL;
+            sp->EffectTriggerSpell[1] = 53227;
+            sp->procFlags = PROC_ON_CAST_SPELL;
+            sp->procChance = 100;
+        }
+
+
         // Dash
         if( sp->NameHash == SPELL_HASH_DASH )
         {
Hex.



Code:
Index: src/arcemu-world/SpellFixes.cpp
===================================================================
--- src/arcemu-world/SpellFixes.cpp
+++ src/arcemu-world/SpellFixes.cpp
@@ -1289,8 +1289,12 @@
         //////////////////////////////////////////
         // SHAMAN                                //
         //////////////////////////////////////////
-
-        // Insert shaman spell fixes here
+        // Shaman Hex
+            sp = dbcSpell.LookupEntryForced(51514); //Redirects to the actual spell 51514.
+        if(sp != NULL)
+            sp->Effect[1] = AURA_INTERRUPT_ON_UNUSED2;  // Damage done can break the target out of hex now.
+        if( sp->NameHash == SPELL_HASH_HEX )
+            sp->AuraInterruptFlags = AURA_INTERRUPT_ON_UNUSED2;
     
         // Flametongue Totem passive target fix
         if( sp->NameHash == SPELL_HASH_FLAMETONGUE_TOTEM && sp->Attributes & ATTRIBUTES_PASSIVE )
Execute work-around.

Code:
        case 5308:
        case 20658:
        case 20660:
        case 20661:
        case 20662:
        case 25234:
        case 25236:
        case 47470:
        case 47471:// Execute
                {
                        if( !u_caster || !u_caster->IsInWorld() || !unitTarget || !unitTarget->IsInWorld() || !m_spellInfo)
                                return;

                        uint32 value = m_spellInfo->EffectBasePoints[i]+1 + (u_caster->GetAP() * 0.2);
                        uint32 rageCurrent = u_caster->GetUInt32Value(UNIT_FIELD_POWER2);
                        // 150 -> 15 max rage without skills
                        uint32 rageUsed = std::min(rageCurrent, uint32(150));

                        uint32 rageLeft = rageCurrent - rageUsed;
                        AuraPointer suddenDeath = u_caster->FindAura(52437);

                        if(suddenDeath)
                        {               
                                SpellEntry * sd = dbcSpell.LookupEntry(suddenDeath->pSpellId);
                                if(sd)
                                        rageLeft += sd->RankNumber > 1 ? sd->RankNumber * 30 + 10 : sd->RankNumber * 30;
                                suddenDeath->Remove(); // Sudden Death is removed after 1 execute
                        }

                        if( u_caster->HasDummyAura(SPELL_HASH_GLYPH_OF_EXECUTION) )
                                rageUsed += 100; //Your Execute ability deals damage as if you had 10 additional rage.

                        value += (int32) (rageUsed * m_spellInfo->dmg_multiplier[0]); 
                        u_caster->SetPower(POWER_TYPE_RAGE, rageLeft);
                        // 20647 is dummy execute spell for logs
                        SpellEntry *spellInfo = dbcSpell.LookupEntry(20647);
                        u_caster->Strike(unitTarget,MELEE,spellInfo,0,0,value,false,false);
                }break;