From 48eb01666d0330d03be6ad63f2971e7fab2ea614 Mon Sep 17 00:00:00 2001 From: Lutik Date: Tue, 28 Jul 2009 14:06:40 +0400 Subject: [PATCH] [8264] Implement target mode 104 (forward 30 degries cone) Signed-off-by: VladimirMangos --- src/game/SharedDefines.h | 1 + src/game/Spell.cpp | 3 +++ src/game/Spell.h | 5 +++++ src/game/SpellMgr.cpp | 1 + src/game/SpellMgr.h | 1 + src/shared/revision_nr.h | 2 +- 6 files changed, 12 insertions(+), 1 deletion(-) diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 7597de6cb..dbe226931 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -1044,6 +1044,7 @@ enum Targets TARGET_SELF2 = 87, TARGET_DIRECTLY_FORWARD = 89, TARGET_NONCOMBAT_PET = 90, + TARGET_IN_FRONT_OF_CASTER_30 = 104, }; enum SpellMissInfo diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index b8c0f803b..60a4ad155 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -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); 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: { Unit *target = m_targets.getUnitTarget(); diff --git a/src/game/Spell.h b/src/game/Spell.h index 1ae7a3fda..288a0cf15 100644 --- a/src/game/Spell.h +++ b/src/game/Spell.h @@ -83,6 +83,7 @@ enum SpellCastFlags enum SpellNotifyPushType { PUSH_IN_FRONT, + PUSH_IN_FRONT_30, PUSH_IN_BACK, PUSH_SELF_CENTER, PUSH_DEST_CENTER, @@ -706,6 +707,10 @@ namespace MaNGOS if(i_spell.GetCaster()->isInFrontInMap((Unit*)(itr->getSource()), i_radius, 2*M_PI/3 )) i_data->push_back(itr->getSource()); 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: if(i_spell.GetCaster()->isInBackInMap((Unit*)(itr->getSource()), i_radius, 2*M_PI/3 )) i_data->push_back(itr->getSource()); diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 95997a3d8..806fdc259 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -281,6 +281,7 @@ bool IsPositiveTarget(uint32 targetA, uint32 targetB) case TARGET_ALL_ENEMY_IN_AREA_CHANNELED: case TARGET_CURRENT_ENEMY_COORDINATES: case TARGET_SINGLE_ENEMY: + case TARGET_IN_FRONT_OF_CASTER_30: return false; case TARGET_CASTER_COORDINATES: return (targetB == TARGET_ALL_PARTY || targetB == TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER); diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h index 6203cb750..7f06e1a90 100644 --- a/src/game/SpellMgr.h +++ b/src/game/SpellMgr.h @@ -233,6 +233,7 @@ inline bool IsAreaEffectTarget( Targets target ) case TARGET_AREAEFFECT_CUSTOM_2: case TARGET_ALL_RAID_AROUND_CASTER: case TARGET_AREAEFFECT_PARTY_AND_CLASS: + case TARGET_IN_FRONT_OF_CASTER_30: return true; default: break; diff --git a/src/shared/revision_nr.h b/src/shared/revision_nr.h index 1af9c788d..99ccd4e09 100644 --- a/src/shared/revision_nr.h +++ b/src/shared/revision_nr.h @@ -1,4 +1,4 @@ #ifndef __REVISION_NR_H__ #define __REVISION_NR_H__ - #define REVISION_NR "8263" + #define REVISION_NR "8264" #endif // __REVISION_NR_H__