Show
Ignore:
Timestamp:
11/22/08 00:35:41 (17 years ago)
Author:
yumileroy
Message:

Delete possessed AI only on creature delete.

Original author: gvcoman
Date: 2008-11-16 14:38:02-05:00

Files:
1 modified

Legend:

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

    r257 r272  
    334334                        break; 
    335335                    } 
    336                     // must only affect demons (also undead?) 
     336                    // must only affect demons 
    337337                    case 45072: 
    338338                    { 
    339                         if(unitTarget->GetCreatureType() != CREATURE_TYPE_DEMON 
    340                             || unitTarget->GetCreatureType() != CREATURE_TYPE_UNDEAD) 
     339                        if(unitTarget->GetCreatureType() != CREATURE_TYPE_DEMON) 
    341340                            return; 
    342341                        break; 
    343342                    } 
    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; 
    356343                } 
    357344                break; 
     
    11721159                    m_caster->CastSpell(m_caster, 45009, true); 
    11731160                    return; 
    1174                 } 
     1161                }                 
    11751162                case 45030:                                 // Impale Emissary 
    11761163                { 
     
    12751262                        //Polymorph Cast Visual Rank 1 
    12761263                        const uint32 spell_list[6] = {32813, 32816, 32817, 32818, 32819, 32820}; 
    1277                         unitTarget->CastSpell( unitTarget, spell_list[urand(0, 5)], true); 
     1264                        unitTarget->CastSpell( unitTarget, spell_list[urand(0, 5)], true);  
    12781265                    } 
    12791266                    return; 
     
    22512238        m_caster->ModifyPower(POWER_MANA,gain); 
    22522239        //send log 
    2253         m_caster->SendEnergizeSpellLog(m_caster, m_spellInfo->Id,gain,POWER_MANA); 
     2240        m_caster->SendEnergizeSpellLog(m_caster, m_spellInfo->Id,gain,POWER_MANA,false); 
    22542241    } 
    22552242} 
     
    22672254                    /*do not uncomment . 
    22682255                    if(bg->GetTypeID()==BATTLEGROUND_WS) 
    2269                         bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 
     2256                        bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget); 
    22702257                    sLog.outDebug("Send Event Horde Flag Picked Up"); 
    22712258                    break; 
     
    22802267                    /*do not uncomment ... (it will cause crash, because of null targetobject!) anyway this is a bad way to call that event, because it would cause recursion 
    22812268                    if(bg->GetTypeID()==BATTLEGROUND_WS) 
    2282                         bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 
     2269                        bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget); 
    22832270                    sLog.outDebug("Send Event Alliance Flag Picked Up"); 
    22842271                    break; 
     
    22912278                    case 23385:                                 // Alliance Flag Returns 
    22922279                        if(bg->GetTypeID()==BATTLEGROUND_WS) 
    2293                             bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 
     2280                            bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget); 
    22942281                        sLog.outDebug("Alliance Flag Returned"); 
    22952282                        break; 
    22962283                    case 23386:                                   // Horde Flag Returns 
    22972284                        if(bg->GetTypeID()==BATTLEGROUND_WS) 
    2298                             bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 
     2285                            bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget); 
    22992286                        sLog.outDebug("Horde Flag Returned"); 
    23002287                        break;*/ 
     
    23022289                    /* 
    23032290                    if(bg->GetTypeID()==BATTLEGROUND_EY) 
    2304                         bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 
     2291                        bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget); 
    23052292                    */ 
    23062293                    break; 
     
    26512638    float radius = GetSpellRadius(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i])); 
    26522639    Unit *caster = m_originalCasterGUID ? m_originalCaster : m_caster; 
    2653     if(!caster) return; 
    26542640 
    26552641    if(Player* modOwner = caster->GetSpellModOwner()) 
     
    26812667 
    26822668    // Some level depends spells 
    2683     int multiplier = 0; 
     2669    int multiplier  = 0; 
    26842670    int level_diff = 0; 
    26852671    switch (m_spellInfo->Id) 
     
    26882674        case 9512: 
    26892675            level_diff = m_caster->getLevel() - 40; 
    2690             multiplier = 2; 
     2676            multiplier  = 2; 
    26912677            break; 
    26922678        // Blood Fury 
    26932679        case 24571: 
    26942680            level_diff = m_caster->getLevel() - 60; 
    2695             multiplier = 10; 
     2681            multiplier  = 10; 
    26962682            break; 
    26972683        // Burst of Energy 
    26982684        case 24532: 
    26992685            level_diff = m_caster->getLevel() - 60; 
    2700             multiplier = 4; 
     2686            multiplier  = 4; 
    27012687            break; 
    27022688        default: 
     
    37603746        ((Player*)unitTarget)->TeleportTo(mapid, fx, fy, fz, -m_caster->GetOrientation(), TELE_TO_NOT_LEAVE_COMBAT | TELE_TO_NOT_UNSUMMON_PET | (unitTarget==m_caster ? TELE_TO_SPELL : 0)); 
    37613747    else 
    3762         m_caster->GetMap()->CreatureRelocation((Creature*)m_caster, fx, fy, fz, -m_caster->GetOrientation()); 
     3748        MapManager::Instance().GetMap(mapid, m_caster)->CreatureRelocation((Creature*)m_caster, fx, fy, fz, -m_caster->GetOrientation()); 
    37633749} 
    37643750 
     
    37813767        return; 
    37823768 
    3783     sLog.outDebug("SpellEffect::AddHonor called for spell_id %u , that rewards %d honor points to player: %u", m_spellInfo->Id, damage, ((Player*)unitTarget)->GetGUIDLow()); 
     3769    sLog.outDebug("SpellEffect::AddHonor called for spell_id %u , that rewards %d honor points to player: %u", m_spellInfo->Id, this->damage, ((Player*)unitTarget)->GetGUIDLow()); 
    37843770 
    37853771    // TODO: find formula for honor reward based on player's level! 
     
    37873773    // now fixed only for level 70 players: 
    37883774    if (((Player*)unitTarget)->getLevel() == 70) 
    3789         ((Player*)unitTarget)->RewardHonor(NULL, 1, damage); 
     3775        ((Player*)unitTarget)->RewardHonor(NULL, 1, this->damage); 
    37903776} 
    37913777 
     
    40023988 
    40033989    // add to world 
    4004     pet->GetMap()->Add((Creature*)pet); 
     3990    MapManager::Instance().GetMap(pet->GetMapId(), pet)->Add((Creature*)pet); 
    40053991 
    40063992    // visual effect for levelup 
     
    40324018                return; 
    40334019 
    4034             OldSummon->GetMap()->Remove((Creature*)OldSummon,false); 
     4020            MapManager::Instance().GetMap(OldSummon->GetMapId(), OldSummon)->Remove((Creature*)OldSummon,false); 
    40354021            OldSummon->SetMapId(m_caster->GetMapId()); 
    40364022 
     
    40394025 
    40404026            OldSummon->Relocate(px, py, pz, OldSummon->GetOrientation()); 
    4041             m_caster->GetMap()->Add((Creature*)OldSummon); 
     4027            MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)->Add((Creature*)OldSummon); 
    40424028 
    40434029            if(m_caster->GetTypeId() == TYPEID_PLAYER && OldSummon->isControlled() ) 
     
    41224108    if(m_caster->GetTypeId() == TYPEID_UNIT) 
    41234109    { 
    4124         if ( ((Creature*)m_caster)->isTotem() ) 
    4125             NewSummon->GetCharmInfo()->SetReactState(REACT_AGGRESSIVE); 
    4126         else 
    4127             NewSummon->GetCharmInfo()->SetReactState(REACT_DEFENSIVE); 
     4110                if ( ((Creature*)m_caster)->isTotem() ) 
     4111                        NewSummon->GetCharmInfo()->SetReactState(REACT_AGGRESSIVE); 
     4112                else 
     4113                        NewSummon->GetCharmInfo()->SetReactState(REACT_DEFENSIVE); 
    41284114    } 
    41294115 
     
    44474433            ((Player*)m_caster)->AddComboPoints(unitTarget, 1); 
    44484434    } 
    4449  
    44504435    // Mangle (Cat): CP 
    44514436    if(m_spellInfo->SpellFamilyName==SPELLFAMILY_DRUID && (m_spellInfo->SpellFamilyFlags==0x0000040000000000LL)) 
     
    44544439            ((Player*)m_caster)->AddComboPoints(unitTarget,1); 
    44554440    } 
     4441 
    44564442 
    44574443    // take ammo 
     
    54495435} 
    54505436 
    5451 void Spell::EffectResurrect(uint32 /*effIndex*/) 
     5437void Spell::EffectResurrect(uint32 i) 
    54525438{ 
    54535439    if(!unitTarget) 
     
    56705656    int32 targetLevel = creature->getLevel(); 
    56715657 
    5672     uint32 skill = creature->GetCreatureInfo()->GetRequiredLootSkill(); 
     5658    uint32 skill = creature->GetCreatureInfo()->GetRequiredLootSkill();  
    56735659 
    56745660    ((Player*)m_caster)->SendLoot(creature->GetGUID(),LOOT_SKINNING); 
     
    56975683 
    56985684    if(m_caster->GetTypeId() != TYPEID_PLAYER) 
    5699         m_caster->GetMap()->CreatureRelocation((Creature*)m_caster,x,y,z,m_caster->GetOrientation()); 
     5685        MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)->CreatureRelocation((Creature*)m_caster,x,y,z,m_caster->GetOrientation()); 
    57005686 
    57015687    // not all charge effects used in negative spells 
     
    61336119            linkedGO->SetOwnerGUID(m_caster->GetGUID() ); 
    61346120 
    6135             linkedGO->GetMap()->Add(linkedGO); 
     6121            MapManager::Instance().GetMap(linkedGO->GetMapId(), linkedGO)->Add(linkedGO); 
    61366122        } 
    61376123        else