mirror of
https://github.com/mangosfour/server.git
synced 2025-12-15 19:37:02 +00:00
[8089] Implement SPELL_EFFECT_CHARGE2(149), more correct monster flags use in charge effects.
Last fix let for example correct charge for flight creatures...
This commit is contained in:
parent
ed8a3a39cc
commit
cceb334533
2 changed files with 35 additions and 7 deletions
|
|
@ -206,7 +206,7 @@ pEffect SpellEffects[TOTAL_SPELL_EFFECTS]=
|
|||
&Spell::EffectActivateRune, //146 SPELL_EFFECT_ACTIVATE_RUNE
|
||||
&Spell::EffectQuestFail, //147 SPELL_EFFECT_QUEST_FAIL quest fail
|
||||
&Spell::EffectUnused, //148 SPELL_EFFECT_148 unused
|
||||
&Spell::EffectNULL, //149 SPELL_EFFECT_149 swoop
|
||||
&Spell::EffectCharge2, //149 SPELL_EFFECT_CHARGE2 swoop
|
||||
&Spell::EffectUnused, //150 SPELL_EFFECT_150 unused
|
||||
&Spell::EffectTriggerRitualOfSummoning, //151 SPELL_EFFECT_TRIGGER_SPELL_2
|
||||
&Spell::EffectNULL, //152 SPELL_EFFECT_152 summon Refer-a-Friend
|
||||
|
|
@ -5904,22 +5904,50 @@ void Spell::EffectSkinning(uint32 /*i*/)
|
|||
|
||||
void Spell::EffectCharge(uint32 /*i*/)
|
||||
{
|
||||
if(!unitTarget || !m_caster)
|
||||
if (!unitTarget)
|
||||
return;
|
||||
|
||||
float x, y, z;
|
||||
unitTarget->GetContactPoint(m_caster, x, y, z);
|
||||
if(unitTarget->GetTypeId() != TYPEID_PLAYER)
|
||||
if (unitTarget->GetTypeId() != TYPEID_PLAYER)
|
||||
((Creature *)unitTarget)->StopMoving();
|
||||
|
||||
// Only send MOVEMENTFLAG_WALK_MODE, client has strange issues with other move flags
|
||||
m_caster->SendMonsterMove(x, y, z, 0, MONSTER_MOVE_WALK, 1);
|
||||
m_caster->SendMonsterMove(x, y, z, 0, m_caster->GetTypeId()==TYPEID_PLAYER ? MONSTER_MOVE_WALK : ((Creature*)m_caster)->GetMonsterMoveFlags(), 1);
|
||||
|
||||
if(m_caster->GetTypeId() != TYPEID_PLAYER)
|
||||
if (m_caster->GetTypeId() != TYPEID_PLAYER)
|
||||
m_caster->GetMap()->CreatureRelocation((Creature*)m_caster,x,y,z,m_caster->GetOrientation());
|
||||
|
||||
// not all charge effects used in negative spells
|
||||
if ( !IsPositiveSpell(m_spellInfo->Id))
|
||||
if (unitTarget != m_caster && !IsPositiveSpell(m_spellInfo->Id))
|
||||
m_caster->Attack(unitTarget,true);
|
||||
}
|
||||
|
||||
void Spell::EffectCharge2(uint32 /*i*/)
|
||||
{
|
||||
float x, y, z;
|
||||
if (m_targets.m_targetMask & TARGET_FLAG_DEST_LOCATION)
|
||||
{
|
||||
x = m_targets.m_destX;
|
||||
y = m_targets.m_destY;
|
||||
z = m_targets.m_destZ;
|
||||
|
||||
if (unitTarget->GetTypeId() != TYPEID_PLAYER)
|
||||
((Creature *)unitTarget)->StopMoving();
|
||||
}
|
||||
else if (unitTarget && unitTarget != m_caster)
|
||||
unitTarget->GetContactPoint(m_caster, x, y, z);
|
||||
else
|
||||
return;
|
||||
|
||||
// Only send MOVEMENTFLAG_WALK_MODE, client has strange issues with other move flags
|
||||
m_caster->SendMonsterMove(x, y, z, 0, m_caster->GetTypeId()==TYPEID_PLAYER ? MONSTER_MOVE_WALK : ((Creature*)m_caster)->GetMonsterMoveFlags(), 1);
|
||||
|
||||
if (m_caster->GetTypeId() != TYPEID_PLAYER)
|
||||
m_caster->GetMap()->CreatureRelocation((Creature*)m_caster,x,y,z,m_caster->GetOrientation());
|
||||
|
||||
// not all charge effects used in negative spells
|
||||
if (unitTarget && unitTarget != m_caster && !IsPositiveSpell(m_spellInfo->Id))
|
||||
m_caster->Attack(unitTarget,true);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#ifndef __REVISION_NR_H__
|
||||
#define __REVISION_NR_H__
|
||||
#define REVISION_NR "8088"
|
||||
#define REVISION_NR "8089"
|
||||
#endif // __REVISION_NR_H__
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue