Changeset 246

Show
Ignore:
Timestamp:
11/19/08 13:50:23 (17 years ago)
Author:
yumileroy
Message:

*Fix Gruul's shatter effect damage. Patch provided by _krz.

Original author: megamage
Date: 2008-11-16 16:56:35-06:00

Location:
trunk/src/game
Files:
3 modified

Legend:

Unmodified
Added
Removed
  • trunk/src/game/ArenaTeam.cpp

    r245 r246  
    9898    if(pl) 
    9999    { 
    100         if(pl->GetArenaTeamId(GetSlot())) 
     100        if(pl->GetArenaTeamId(GetType())) 
    101101        { 
    102102            sLog.outError("Arena::AddMember() : player already in this sized team"); 
  • trunk/src/game/GameObject.cpp

    r230 r246  
    12811281    { 
    12821282        trigger->setFaction(14); 
    1283         trigger->CastSpell(target, spell, true); 
     1283        trigger->CastSpell(target, spell, true, 0, 0, target->GetGUID()); 
    12841284    } 
    12851285    //trigger->setDeathState(JUST_DIED); 
  • trunk/src/game/SpellEffects.cpp

    r240 r246  
    334334                        break; 
    335335                    } 
    336                     // must only affect demons 
     336                    // must only affect demons (also undead?) 
    337337                    case 45072: 
    338338                    { 
    339                         if(unitTarget->GetCreatureType() != CREATURE_TYPE_DEMON) 
     339                        if(unitTarget->GetCreatureType() != CREATURE_TYPE_DEMON 
     340                            || unitTarget->GetCreatureType() != CREATURE_TYPE_UNDEAD) 
    340341                            return; 
    341342                        break; 
    342343                    } 
     344                    // gruul's shatter 
     345                    case 33671: 
     346                    { 
     347                        // don't damage self and only players 
     348                        if(unitTarget->GetGUID() == m_caster->GetGUID() || unitTarget->GetTypeId() != TYPEID_PLAYER) 
     349                            return; 
     350 
     351                        float radius = GetSpellRadius(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[0])); 
     352                        if(!radius) return; 
     353                        float distance = m_caster->GetDistance2d(unitTarget); 
     354                        damage = (distance > radius ) ? 0 : (int32)(m_spellInfo->EffectBasePoints[0]*((radius - distance)/radius)); 
     355                    }break; 
    343356                } 
    344357                break; 
     
    26382651    float radius = GetSpellRadius(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i])); 
    26392652    Unit *caster = m_originalCasterGUID ? m_originalCaster : m_caster; 
     2653    if(!caster) return; 
    26402654 
    26412655    if(Player* modOwner = caster->GetSpellModOwner())