PDA

Просмотр полной версии : [9863][patch] SpellEffect SummonPhantasm


Insider42
07.05.2010, 08:58
Реализация spell effect 93. Используется, например, в http://www.wowhead.com/spell=61851 , http://www.wowhead.com/spell=62196 и http://www.wowhead.com/spell=58836 .
Что должен делать этот эффект: сбрасывать кастера из выделения у всех игроков выделивших его. Эффект схож на уход в невидимость, только можно выделить вновь.
Автор идеи: я
Помощь в реализации: MaS0n

diff --git a/src/game/Spell.h b/src/game/Spell.h
index 85e8def..404da73 100644
--- a/src/game/Spell.h
+++ b/src/game/Spell.h
@@ -332,6 +332,7 @@ class Spell
void EffectDispelMechanic(SpellEffectIndex eff_idx);
void EffectSummonDeadPet(SpellEffectIndex eff_idx);
void EffectSummonAllTotems(SpellEffectIndex eff_idx);
+ void EffectSummonPhantasm (SpellEffectIndex eff_idx);
void EffectDestroyAllTotems(SpellEffectIndex eff_idx);
void EffectDurabilityDamage(SpellEffectIndex eff_idx);
void EffectSkill(SpellEffectIndex eff_idx);
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index a6e75c9..28640fd 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -153,7 +153,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
&Spell::EffectKillCreditPersonal, // 90 SPELL_EFFECT_KILL_CREDIT Kill credit but only for single person
&Spell::EffectUnused, // 91 SPELL_EFFECT_THREAT_ALL one spell: zzOLDBrainwash
&Spell::EffectEnchantHeldItem, // 92 SPELL_EFFECT_ENCHANT_HELD_ITEM
- &Spell::EffectUnused, // 93 SPELL_EFFECT_93 (old SPELL_EFFECT_SUMMON_PHANTASM)
+ &Spell::EffectSummonPhantasm, // 93 SPELL_EFFECT_93
&Spell::EffectSelfResurrect, // 94 SPELL_EFFECT_SELF_RESURRECT
&Spell::EffectSkinning, // 95 SPELL_EFFECT_SKINNING
&Spell::EffectCharge, // 96 SPELL_EFFECT_CHARGE
@@ -7307,6 +7307,16 @@ void Spell::EffectDestroyAllTotems(SpellEffectIndex /*eff_idx*/)
m_caster->CastCustomSpell(m_caster, 39104, &mana, NULL, NULL, true);
}

+void Spell::EffectSummonPhantasm (SpellEffectIndex /* eff_idx */)
+{
+ if (m_caster->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ WorldPacket data(SMSG_CLEAR_TARGET, 8);
+ data << uint64(m_caster->GetGUID());
+ m_caster->SendMessageToSet(&data, false);
+}
+
void Spell::EffectDurabilityDamage(SpellEffectIndex eff_idx)
{
if(!unitTarget || unitTarget->GetTypeId() != TYPEID_PLAYER)

либо качаем тут http://paste2.org/p/815458

MaS0n
07.05.2010, 11:38
У близов все куда проще :)

void Spell::EffectSummonPhantasm (SpellEffectIndex /* eff_idx */)
{
if (m_caster->GetTypeId() != TYPEID_PLAYER)
return;

WorldPacket data(SMSG_CLEAR_TARGET, 8);
data << uint64(m_caster->GetGUID());
m_caster->SendMessageToSet(&data, false);
}


Тока что проверил - сбрасывает таргеты у всех, кто в радиусе видимости кастера

Правда для Зеркального Изображения например - нужно специальное добавление кастера в список целей, т.к в спелле таргетов нету)
ПС : а этот эффект только для игроков работает? вообще судя по пакету - можно сбрасывать выделение с любой цели, не только игроков

Vladimir
11.05.2010, 06:43
Спел http://www.wowhead.com/spell=58836 имеет все 0 для выбора целей так что стоит еще добавить в switch для выбора кастера по эффекту

Ну и моглибы нормально назвать эффект - хотябы по аналогии с названием в wowhead.

Не вижу почему такой эффект не может кастаться мобом.

Vladimir
11.05.2010, 07:10
Добавлено в [9863]. Спасибо.