Changeset 196 for trunk/src/game/Spell.cpp
- Timestamp:
- 11/19/08 13:45:21 (17 years ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/game/Spell.cpp
r194 r196 1047 1047 float multiplier = m_spellInfo->DmgMultiplier[effectNumber]; 1048 1048 // Apply multiplier mods 1049 if(Player* modOwner = m_originalCaster->GetSpellModOwner()) 1050 modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_EFFECT_PAST_FIRST, multiplier,this); 1049 if(m_originalCaster) 1050 if(Player* modOwner = m_originalCaster->GetSpellModOwner()) 1051 modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_EFFECT_PAST_FIRST, multiplier,this); 1051 1052 m_damageMultipliers[effectNumber] *= multiplier; 1052 1053 } … … 1069 1070 unit->CastSpell(unit, *i, true, 0, 0, m_caster->GetGUID()); 1070 1071 } 1072 } 1073 1074 if(spellmgr.GetSpellCustomAttr(m_spellInfo->Id) && m_originalCaster) 1075 { 1076 uint32 flag = spellmgr.GetSpellCustomAttr(m_spellInfo->Id); 1077 if(flag & SPELL_ATTR_CU_EFFECT_HEAL) 1078 m_originalCaster->ProcDamageAndSpell(unit, PROC_FLAG_HEAL, PROC_FLAG_NONE, 0, GetSpellSchoolMask(m_spellInfo), m_spellInfo); 1079 if(m_originalCaster != unit && (flag & SPELL_ATTR_CU_EFFECT_DAMAGE)) 1080 m_originalCaster->ProcDamageAndSpell(unit, PROC_FLAG_HIT_SPELL, PROC_FLAG_STRUCK_SPELL, 0, GetSpellSchoolMask(m_spellInfo), m_spellInfo); 1071 1081 } 1072 1082 } … … 1283 1293 cell_lock->Visit(cell_lock, world_object_notifier, *MapManager::Instance().GetMap(m_caster->GetMapId(), m_caster)); 1284 1294 } 1285 if(! spellmgr.GetSpellExtraAttr(m_spellInfo->Id, SPELL_EXTRA_ATTR_MAX_TARGETS))1295 if(!(spellmgr.GetSpellCustomAttr(m_spellInfo->Id) & SPELL_ATTR_CU_PLAYERS_ONLY)) 1286 1296 { 1287 1297 TypeContainerVisitor<Trinity::SpellNotifierCreatureAndPlayer, GridTypeMapContainer > grid_object_notifier(notifier); … … 1343 1353 uint32 EffectChainTarget = m_spellInfo->EffectChainTarget[i]; 1344 1354 uint32 unMaxTargets = m_spellInfo->MaxAffectedTargets; 1345 if(!unMaxTargets) 1346 unMaxTargets = spellmgr.GetSpellExtraAttr(m_spellInfo->Id, SPELL_EXTRA_ATTR_MAX_TARGETS); 1355 1347 1356 if(m_originalCaster) 1348 1357 { … … 1504 1513 case TARGET_IN_FRONT_OF_CASTER: 1505 1514 case TARGET_UNIT_CONE_ENEMY_UNKNOWN: 1506 switch(spellmgr.GetSpellExtraAttr(m_spellInfo->Id, SPELL_EXTRA_ATTR_CONE_TYPE)) 1507 { 1508 default: 1509 case 0: 1510 SearchAreaTarget(TagUnitMap, radius, PUSH_IN_FRONT, SPELL_TARGETS_AOE_DAMAGE); 1511 break; 1512 case 1: 1513 SearchAreaTarget(TagUnitMap, radius, PUSH_IN_BACK, SPELL_TARGETS_AOE_DAMAGE); 1514 break; 1515 case 2: 1516 SearchAreaTarget(TagUnitMap, radius, PUSH_IN_LINE, SPELL_TARGETS_AOE_DAMAGE); 1517 break; 1518 }break; 1515 if(spellmgr.GetSpellCustomAttr(m_spellInfo->Id) & SPELL_ATTR_CU_CONE_BACK) 1516 SearchAreaTarget(TagUnitMap, radius, PUSH_IN_BACK, SPELL_TARGETS_AOE_DAMAGE); 1517 else if(spellmgr.GetSpellCustomAttr(m_spellInfo->Id) & SPELL_ATTR_CU_CONE_LINE) 1518 SearchAreaTarget(TagUnitMap, radius, PUSH_IN_LINE, SPELL_TARGETS_AOE_DAMAGE); 1519 else 1520 SearchAreaTarget(TagUnitMap, radius, PUSH_IN_FRONT, SPELL_TARGETS_AOE_DAMAGE); 1521 break; 1519 1522 case TARGET_UNIT_CONE_ALLY: 1520 1523 SearchAreaTarget(TagUnitMap, radius, PUSH_IN_FRONT, SPELL_TARGETS_FRIENDLY);