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