[8264] Implement target mode 104 (forward 30 degries cone)

Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
Lutik 2009-07-28 14:06:40 +04:00 committed by VladimirMangos
parent ee2fcde901
commit 48eb01666d
6 changed files with 12 additions and 1 deletions

View file

@ -1044,6 +1044,7 @@ enum Targets
TARGET_SELF2 = 87, TARGET_SELF2 = 87,
TARGET_DIRECTLY_FORWARD = 89, TARGET_DIRECTLY_FORWARD = 89,
TARGET_NONCOMBAT_PET = 90, TARGET_NONCOMBAT_PET = 90,
TARGET_IN_FRONT_OF_CASTER_30 = 104,
}; };
enum SpellMissInfo enum SpellMissInfo

View file

@ -1812,6 +1812,9 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,UnitList& TagUnitMap)
FillAreaTargets(TagUnitMap,m_caster->GetPositionX(), m_caster->GetPositionY(),radius,inFront ? PUSH_IN_FRONT : PUSH_IN_BACK,SPELL_TARGETS_AOE_DAMAGE); FillAreaTargets(TagUnitMap,m_caster->GetPositionX(), m_caster->GetPositionY(),radius,inFront ? PUSH_IN_FRONT : PUSH_IN_BACK,SPELL_TARGETS_AOE_DAMAGE);
break; break;
} }
case TARGET_IN_FRONT_OF_CASTER_30:
FillAreaTargets(TagUnitMap,m_caster->GetPositionX(), m_caster->GetPositionY(), radius, PUSH_IN_FRONT_30, SPELL_TARGETS_AOE_DAMAGE);
break;
case TARGET_DUELVSPLAYER: case TARGET_DUELVSPLAYER:
{ {
Unit *target = m_targets.getUnitTarget(); Unit *target = m_targets.getUnitTarget();

View file

@ -83,6 +83,7 @@ enum SpellCastFlags
enum SpellNotifyPushType enum SpellNotifyPushType
{ {
PUSH_IN_FRONT, PUSH_IN_FRONT,
PUSH_IN_FRONT_30,
PUSH_IN_BACK, PUSH_IN_BACK,
PUSH_SELF_CENTER, PUSH_SELF_CENTER,
PUSH_DEST_CENTER, PUSH_DEST_CENTER,
@ -706,6 +707,10 @@ namespace MaNGOS
if(i_spell.GetCaster()->isInFrontInMap((Unit*)(itr->getSource()), i_radius, 2*M_PI/3 )) if(i_spell.GetCaster()->isInFrontInMap((Unit*)(itr->getSource()), i_radius, 2*M_PI/3 ))
i_data->push_back(itr->getSource()); i_data->push_back(itr->getSource());
break; break;
case PUSH_IN_FRONT_30:
if(i_spell.GetCaster()->isInFrontInMap((Unit*)(itr->getSource()), i_radius, M_PI/6 ))
i_data->push_back(itr->getSource());
break;
case PUSH_IN_BACK: case PUSH_IN_BACK:
if(i_spell.GetCaster()->isInBackInMap((Unit*)(itr->getSource()), i_radius, 2*M_PI/3 )) if(i_spell.GetCaster()->isInBackInMap((Unit*)(itr->getSource()), i_radius, 2*M_PI/3 ))
i_data->push_back(itr->getSource()); i_data->push_back(itr->getSource());

View file

@ -281,6 +281,7 @@ bool IsPositiveTarget(uint32 targetA, uint32 targetB)
case TARGET_ALL_ENEMY_IN_AREA_CHANNELED: case TARGET_ALL_ENEMY_IN_AREA_CHANNELED:
case TARGET_CURRENT_ENEMY_COORDINATES: case TARGET_CURRENT_ENEMY_COORDINATES:
case TARGET_SINGLE_ENEMY: case TARGET_SINGLE_ENEMY:
case TARGET_IN_FRONT_OF_CASTER_30:
return false; return false;
case TARGET_CASTER_COORDINATES: case TARGET_CASTER_COORDINATES:
return (targetB == TARGET_ALL_PARTY || targetB == TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER); return (targetB == TARGET_ALL_PARTY || targetB == TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER);

View file

@ -233,6 +233,7 @@ inline bool IsAreaEffectTarget( Targets target )
case TARGET_AREAEFFECT_CUSTOM_2: case TARGET_AREAEFFECT_CUSTOM_2:
case TARGET_ALL_RAID_AROUND_CASTER: case TARGET_ALL_RAID_AROUND_CASTER:
case TARGET_AREAEFFECT_PARTY_AND_CLASS: case TARGET_AREAEFFECT_PARTY_AND_CLASS:
case TARGET_IN_FRONT_OF_CASTER_30:
return true; return true;
default: default:
break; break;

View file

@ -1,4 +1,4 @@
#ifndef __REVISION_NR_H__ #ifndef __REVISION_NR_H__
#define __REVISION_NR_H__ #define __REVISION_NR_H__
#define REVISION_NR "8263" #define REVISION_NR "8264"
#endif // __REVISION_NR_H__ #endif // __REVISION_NR_H__