Hello & Welcome to our community. Is this your first visit? Register
Follow us on
Follow us on Facebook Follow us on Twitter Watch us on YouTube


MMOCoin

Likes Likes:  0
Results 1 to 3 of 3
  1. #1
    Contributor
    Cocain's Avatar
    Join Date
    Mar 2010
    Posts
    208
    Post Thanks / Like
    Rep Power
    16
    Reputation
    92

    Exclamation [C++/ArcEmu]Some Spellfixes.


    Register to remove this ad
    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;



    › See More: [C++/ArcEmu]Some Spellfixes.



  2. Related Threads - Scroll Down after related threads if you are only interested to view replies for above post/thread

  3. #2
    Founder
    Apple's Avatar
    Join Date
    Jul 2008
    Location
    HeaveN
    Posts
    15,916
    Post Thanks / Like
    Rep Power
    10
    Reputation
    295
    nice one





  4. #3
    Contributor
    Cocain's Avatar
    Join Date
    Mar 2010
    Posts
    208
    Post Thanks / Like
    Rep Power
    16
    Reputation
    92

    Register to remove this ad
    Hehe. ^^

 

 

Visitors found this page by searching for:

wow arcemu waterbolt

abilities on arcemu source

how to add spell fix to arcemu

druid c fix c

arcemu c register dummy spell

arcemu totem fix

wow arcemu waterbolt no damage

arcemu no spell dummy effect

c spell arcemu

arcemu shaman totem fix

SPELL_EFFECT_TRIGGER_SPELL

c druid typhoon

arcemu get rage

natures grace fix arcemu

typhoon rank 5 spell id

druid spels c

spellfixes.cpp

arcemu patch shaman pets

dk spells code c

[druid] spell fixes‎ spellfixes.cpp

spellfixes.cpp trinity

wow how to find spellfixes.cpp archemu server

arcemu spellefects print

srcarcemu-worldspelleffects.cpp has dummy effect but

Arcemu possible death knight

arcemu pet

arcemu pets

SEO Blog

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  
All times are GMT -5. The time now is 04:50 PM.
Powered by vBulletin® Copyright ©2000-2024, Jelsoft Enterprises Ltd.
See More links by ForumSetup.net. Feedback Buttons provided by Advanced Post Thanks / Like (Lite) - vBulletin Mods & Addons Copyright © 2024 DragonByte Technologies Ltd.
vBulletin Licensed to: MMOPro.org