*Implement spell target type TARGET_GAMEOBJECT_NEARBY_ENTRY

--HG--
branch : trunk
This commit is contained in:
QAston
2010-02-04 00:36:40 +01:00
parent b1cc10aaf0
commit 6ec51e7bbc
3 changed files with 9 additions and 4 deletions
+1 -1
View File
@@ -1121,7 +1121,7 @@ enum Targets
TARGET_UNIT_PARTY_TARGET = 37,
TARGET_UNIT_NEARBY_ENTRY = 38,
TARGET_UNIT_CASTER_FISHING = 39,
TARGET_OBJECT_USE = 40,
TARGET_GAMEOBJECT_NEARBY_ENTRY = 40,
TARGET_DEST_CASTER_FRONT_LEFT = 41, //earth totem
TARGET_DEST_CASTER_BACK_LEFT = 42, //water totem
TARGET_DEST_CASTER_BACK_RIGHT = 43, //air totem
+2 -2
View File
@@ -1754,8 +1754,8 @@ WorldObject* Spell::SearchNearbyTarget(float range, SpellTargets TargetType)
if ((*itr)->GetEntry() == i_spellST->second.targetEntry && (*itr)->IsWithinDistInMap(m_caster, range))
{
goScriptTarget = NULL;
range = m_caster->GetDistance(creatureScriptTarget);
creatureScriptTarget = ((Creature *)*itr);
range = m_caster->GetDistance(creatureScriptTarget);
}
break;
case SPELL_TARGET_TYPE_GAMEOBJECT:
@@ -1941,6 +1941,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
target = SearchNearbyTarget(range, SPELL_TARGETS_ALLY);
break;
case TARGET_UNIT_NEARBY_ENTRY:
case TARGET_GAMEOBJECT_NEARBY_ENTRY:
range = GetSpellMaxRange(m_spellInfo, IsPositiveSpell(m_spellInfo->Id));
if(modOwner) modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_RANGE, range, this);
target = SearchNearbyTarget(range, SPELL_TARGETS_ENTRY);
@@ -2180,7 +2181,6 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
switch (cur)
{
case TARGET_GAMEOBJECT:
case TARGET_OBJECT_USE:
if(m_targets.getGOTarget())
AddGOTarget(m_targets.getGOTarget(), i);
break;
+6 -1
View File
@@ -137,6 +137,7 @@ SpellMgr::SpellMgr()
case TARGET_UNIT_NEARBY_ALLY_UNK:
case TARGET_UNIT_NEARBY_ENTRY:
case TARGET_UNIT_NEARBY_RAID:
case TARGET_GAMEOBJECT_NEARBY_ENTRY:
SpellTargetType[i] = TARGET_TYPE_UNIT_NEARBY;
break;
case TARGET_UNIT_AREA_ENEMY_SRC:
@@ -1981,6 +1982,8 @@ void SpellMgr::LoadSpellScriptTarget()
spellProto->EffectImplicitTargetB[i]==TARGET_UNIT_AREA_ENTRY_DST ||
spellProto->EffectImplicitTargetA[i]==TARGET_UNIT_NEARBY_ENTRY ||
spellProto->EffectImplicitTargetB[i]==TARGET_UNIT_NEARBY_ENTRY ||
spellProto->EffectImplicitTargetA[i]==TARGET_GAMEOBJECT_NEARBY_ENTRY ||
spellProto->EffectImplicitTargetB[i]==TARGET_GAMEOBJECT_NEARBY_ENTRY ||
spellProto->EffectImplicitTargetA[i]==TARGET_DST_NEARBY_ENTRY ||
spellProto->EffectImplicitTargetB[i]==TARGET_DST_NEARBY_ENTRY ||
spellProto->EffectImplicitTargetA[i]==TARGET_UNIT_CONE_ENTRY ||
@@ -1993,7 +1996,7 @@ void SpellMgr::LoadSpellScriptTarget()
if (!targetfound)
{
sLog.outErrorDb("Table `spell_script_target`: spellId %u listed for TargetEntry %u does not have any implicit target TARGET_UNIT_NEARBY_ENTRY(38) or TARGET_DST_NEARBY_ENTRY (46)\
,TARGET_UNIT_AREA_ENTRY_SRC(7), TARGET_UNIT_AREA_ENTRY_DST(8), TARGET_UNIT_CONE_ENTRY(60)",spellId,targetEntry);
,TARGET_UNIT_AREA_ENTRY_SRC(7), TARGET_UNIT_AREA_ENTRY_DST(8), TARGET_UNIT_CONE_ENTRY(60), TARGET_GAMEOBJECT_NEARBY_ENTRY(40)",spellId,targetEntry);
continue;
}
@@ -2064,6 +2067,7 @@ void SpellMgr::LoadSpellScriptTarget()
case TARGET_UNIT_AREA_ENTRY_SRC:
case TARGET_UNIT_AREA_ENTRY_DST:
case TARGET_UNIT_NEARBY_ENTRY:
case TARGET_GAMEOBJECT_NEARBY_ENTRY:
case TARGET_DST_NEARBY_ENTRY:
case TARGET_UNIT_CONE_ENTRY:
found = true;
@@ -2077,6 +2081,7 @@ void SpellMgr::LoadSpellScriptTarget()
case TARGET_UNIT_AREA_ENTRY_SRC:
case TARGET_UNIT_AREA_ENTRY_DST:
case TARGET_UNIT_NEARBY_ENTRY:
case TARGET_GAMEOBJECT_NEARBY_ENTRY:
case TARGET_DST_NEARBY_ENTRY:
case TARGET_UNIT_CONE_ENTRY:
found = true;