Likes: 0
Results 1 to 3 of 3
Thread: [C++/ArcEmu]Some Spellfixes.
-
27-03-10, 10:05 AM #1
[C++/ArcEmu]Some Spellfixes.
Register to remove this adDeath 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
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;
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 ) {
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 )
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.
-
27-03-10, 10:13 AM #2
-
27-03-10, 10:20 AM #3
Register to remove this adHehe. ^^