Changeset 279 for trunk/src/game/SpellEffects.cpp
- Timestamp:
- 11/22/08 00:36:22 (17 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/game/SpellEffects.cpp
r274 r279 334 334 break; 335 335 } 336 // must only affect demons 336 // must only affect demons (also undead?) 337 337 case 45072: 338 338 { 339 if(unitTarget->GetCreatureType() != CREATURE_TYPE_DEMON) 339 if(unitTarget->GetCreatureType() != CREATURE_TYPE_DEMON 340 || unitTarget->GetCreatureType() != CREATURE_TYPE_UNDEAD) 340 341 return; 341 342 break; 342 343 } 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; 343 356 } 344 357 break; … … 1159 1172 m_caster->CastSpell(m_caster, 45009, true); 1160 1173 return; 1161 } 1174 } 1162 1175 case 45030: // Impale Emissary 1163 1176 { … … 1262 1275 //Polymorph Cast Visual Rank 1 1263 1276 const uint32 spell_list[6] = {32813, 32816, 32817, 32818, 32819, 32820}; 1264 unitTarget->CastSpell( unitTarget, spell_list[urand(0, 5)], true); 1277 unitTarget->CastSpell( unitTarget, spell_list[urand(0, 5)], true); 1265 1278 } 1266 1279 return; … … 2238 2251 m_caster->ModifyPower(POWER_MANA,gain); 2239 2252 //send log 2240 m_caster->SendEnergizeSpellLog(m_caster, m_spellInfo->Id,gain,POWER_MANA ,false);2253 m_caster->SendEnergizeSpellLog(m_caster, m_spellInfo->Id,gain,POWER_MANA); 2241 2254 } 2242 2255 } … … 2254 2267 /*do not uncomment . 2255 2268 if(bg->GetTypeID()==BATTLEGROUND_WS) 2256 bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget);2269 bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 2257 2270 sLog.outDebug("Send Event Horde Flag Picked Up"); 2258 2271 break; … … 2267 2280 /*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 2268 2281 if(bg->GetTypeID()==BATTLEGROUND_WS) 2269 bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget);2282 bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 2270 2283 sLog.outDebug("Send Event Alliance Flag Picked Up"); 2271 2284 break; … … 2278 2291 case 23385: // Alliance Flag Returns 2279 2292 if(bg->GetTypeID()==BATTLEGROUND_WS) 2280 bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget);2293 bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 2281 2294 sLog.outDebug("Alliance Flag Returned"); 2282 2295 break; 2283 2296 case 23386: // Horde Flag Returns 2284 2297 if(bg->GetTypeID()==BATTLEGROUND_WS) 2285 bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget);2298 bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 2286 2299 sLog.outDebug("Horde Flag Returned"); 2287 2300 break;*/ … … 2289 2302 /* 2290 2303 if(bg->GetTypeID()==BATTLEGROUND_EY) 2291 bg->EventPlayerClickedOnFlag((Player*)m_caster, this->gameObjTarget);2304 bg->EventPlayerClickedOnFlag((Player*)m_caster, gameObjTarget); 2292 2305 */ 2293 2306 break; … … 2638 2651 float radius = GetSpellRadius(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i])); 2639 2652 Unit *caster = m_originalCasterGUID ? m_originalCaster : m_caster; 2653 if(!caster) return; 2640 2654 2641 2655 if(Player* modOwner = caster->GetSpellModOwner()) … … 2667 2681 2668 2682 // Some level depends spells 2669 int multiplier 2683 int multiplier = 0; 2670 2684 int level_diff = 0; 2671 2685 switch (m_spellInfo->Id) … … 2674 2688 case 9512: 2675 2689 level_diff = m_caster->getLevel() - 40; 2676 multiplier 2690 multiplier = 2; 2677 2691 break; 2678 2692 // Blood Fury 2679 2693 case 24571: 2680 2694 level_diff = m_caster->getLevel() - 60; 2681 multiplier 2695 multiplier = 10; 2682 2696 break; 2683 2697 // Burst of Energy 2684 2698 case 24532: 2685 2699 level_diff = m_caster->getLevel() - 60; 2686 multiplier 2700 multiplier = 4; 2687 2701 break; 2688 2702 default: … … 3746 3760 ((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)); 3747 3761 else 3748 MapManager::Instance().GetMap(mapid, m_caster)->CreatureRelocation((Creature*)m_caster, fx, fy, fz, -m_caster->GetOrientation());3762 m_caster->GetMap()->CreatureRelocation((Creature*)m_caster, fx, fy, fz, -m_caster->GetOrientation()); 3749 3763 } 3750 3764 … … 3767 3781 return; 3768 3782 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());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()); 3770 3784 3771 3785 // TODO: find formula for honor reward based on player's level! … … 3773 3787 // now fixed only for level 70 players: 3774 3788 if (((Player*)unitTarget)->getLevel() == 70) 3775 ((Player*)unitTarget)->RewardHonor(NULL, 1, this->damage);3789 ((Player*)unitTarget)->RewardHonor(NULL, 1, damage); 3776 3790 } 3777 3791 … … 3988 4002 3989 4003 // add to world 3990 MapManager::Instance().GetMap(pet->GetMapId(), pet)->Add((Creature*)pet);4004 pet->GetMap()->Add((Creature*)pet); 3991 4005 3992 4006 // visual effect for levelup … … 4018 4032 return; 4019 4033 4020 MapManager::Instance().GetMap(OldSummon->GetMapId(), OldSummon)->Remove((Creature*)OldSummon,false);4034 OldSummon->GetMap()->Remove((Creature*)OldSummon,false); 4021 4035 OldSummon->SetMapId(m_caster->GetMapId()); 4022 4036 … … 4025 4039 4026 4040 OldSummon->Relocate(px, py, pz, OldSummon->GetOrientation()); 4027 MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)->Add((Creature*)OldSummon);4041 m_caster->GetMap()->Add((Creature*)OldSummon); 4028 4042 4029 4043 if(m_caster->GetTypeId() == TYPEID_PLAYER && OldSummon->isControlled() ) … … 4108 4122 if(m_caster->GetTypeId() == TYPEID_UNIT) 4109 4123 { 4110 4111 4112 4113 4124 if ( ((Creature*)m_caster)->isTotem() ) 4125 NewSummon->GetCharmInfo()->SetReactState(REACT_AGGRESSIVE); 4126 else 4127 NewSummon->GetCharmInfo()->SetReactState(REACT_DEFENSIVE); 4114 4128 } 4115 4129 … … 4433 4447 ((Player*)m_caster)->AddComboPoints(unitTarget, 1); 4434 4448 } 4449 4435 4450 // Mangle (Cat): CP 4436 4451 if(m_spellInfo->SpellFamilyName==SPELLFAMILY_DRUID && (m_spellInfo->SpellFamilyFlags==0x0000040000000000LL)) … … 4439 4454 ((Player*)m_caster)->AddComboPoints(unitTarget,1); 4440 4455 } 4441 4442 4456 4443 4457 // take ammo … … 5435 5449 } 5436 5450 5437 void Spell::EffectResurrect(uint32 i)5451 void Spell::EffectResurrect(uint32 /*effIndex*/) 5438 5452 { 5439 5453 if(!unitTarget) … … 5656 5670 int32 targetLevel = creature->getLevel(); 5657 5671 5658 uint32 skill = creature->GetCreatureInfo()->GetRequiredLootSkill(); 5672 uint32 skill = creature->GetCreatureInfo()->GetRequiredLootSkill(); 5659 5673 5660 5674 ((Player*)m_caster)->SendLoot(creature->GetGUID(),LOOT_SKINNING); … … 5683 5697 5684 5698 if(m_caster->GetTypeId() != TYPEID_PLAYER) 5685 MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)->CreatureRelocation((Creature*)m_caster,x,y,z,m_caster->GetOrientation());5699 m_caster->GetMap()->CreatureRelocation((Creature*)m_caster,x,y,z,m_caster->GetOrientation()); 5686 5700 5687 5701 // not all charge effects used in negative spells … … 6119 6133 linkedGO->SetOwnerGUID(m_caster->GetGUID() ); 6120 6134 6121 MapManager::Instance().GetMap(linkedGO->GetMapId(), linkedGO)->Add(linkedGO);6135 linkedGO->GetMap()->Add(linkedGO); 6122 6136 } 6123 6137 else