mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-21 17:54:48 +01:00
Merge.
--HG-- branch : trunk
This commit is contained in:
@@ -880,8 +880,7 @@ enum Targets
|
||||
TARGET_DEST_TARGET_ENEMY = 53,
|
||||
TARGET_UNIT_CONE_ENEMY_UNKNOWN = 54,
|
||||
TARGET_DEST_CASTER_FRONT_LEAP = 55, // for a leap spell
|
||||
TARGET_RANDOM_RAID_MEMBER = 56,
|
||||
//TARGET_UNIT_AREA_RAID
|
||||
TARGET_UNIT_RAID = 56,
|
||||
TARGET_SINGLE_FRIEND_2 = 57,
|
||||
TARGET_UNIT_TARGET_RAID = 57,
|
||||
TARGET_UNIT_CONE_ALLY = 59,
|
||||
|
||||
@@ -1500,6 +1500,12 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
|
||||
case TARGET_UNIT_PARTY_CASTER:
|
||||
m_caster->GetPartyMember(TagUnitMap, radius);
|
||||
break;
|
||||
case TARGET_UNIT_RAID:
|
||||
if(Unit *target = m_targets.getUnitTarget())
|
||||
TagUnitMap.push_back(target);
|
||||
else
|
||||
m_caster->GetRaidMember(TagUnitMap, radius);
|
||||
break;
|
||||
}
|
||||
}break;
|
||||
|
||||
@@ -1786,13 +1792,6 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
|
||||
TagUnitMap.push_back(m_caster);
|
||||
break;
|
||||
}
|
||||
|
||||
case TARGET_RANDOM_RAID_MEMBER:
|
||||
{
|
||||
if (m_caster->GetTypeId() == TYPEID_PLAYER)
|
||||
if(Player* target = ((Player*)m_caster)->GetNextRandomRaidMember(radius))
|
||||
TagUnitMap.push_back(target);
|
||||
}break;
|
||||
case TARGET_CHAIN_HEAL:
|
||||
{
|
||||
Unit* pUnitTarget = m_targets.getUnitTarget();
|
||||
@@ -4129,7 +4128,7 @@ uint8 Spell::CanCast(bool strict)
|
||||
SkillValue = 0;
|
||||
|
||||
// add the damage modifier from the spell casted (cheat lock / skeleton key etc.) (use m_currentBasePoints, CalculateDamage returns wrong value)
|
||||
SkillValue += m_currentBasePoints[i]+1;
|
||||
SkillValue += m_currentBasePoints[i]/*+1*/;
|
||||
|
||||
// get the required lock value
|
||||
int32 ReqValue=0;
|
||||
|
||||
@@ -364,7 +364,7 @@ m_periodicTimer(0), m_PeriodicEventId(0), m_AuraDRGroup(DIMINISHING_NONE)
|
||||
if(!caster)
|
||||
{
|
||||
m_caster_guid = target->GetGUID();
|
||||
damage = m_currentBasePoints+1; // stored value-1
|
||||
//damage = m_currentBasePoints+1; // stored value-1
|
||||
m_maxduration = target->CalculateSpellDuration(m_spellProto, m_effIndex, target);
|
||||
}
|
||||
else
|
||||
|
||||
@@ -81,6 +81,7 @@ SpellMgr::SpellMgr()
|
||||
case TARGET_UNIT_MASTER:
|
||||
case TARGET_UNIT_PET:
|
||||
case TARGET_UNIT_PARTY_CASTER:
|
||||
case TARGET_UNIT_RAID:
|
||||
SpellTargetType[i] = TARGET_TYPE_UNIT_CASTER;
|
||||
break;
|
||||
case TARGET_UNIT_MINIPET:
|
||||
|
||||
@@ -13064,8 +13064,25 @@ bool Unit::IsInRaidWith(Unit const *unit) const
|
||||
return false;
|
||||
}
|
||||
|
||||
void Unit::GetRaidMember(std::list<Unit*> &TagUnitMap, float radius)
|
||||
void Unit::GetRaidMember(std::list<Unit*> &nearMembers, float radius)
|
||||
{
|
||||
Player *owner = GetCharmerOrOwnerPlayerOrPlayerItself();
|
||||
if(!owner)
|
||||
return;
|
||||
|
||||
Group *pGroup = owner->GetGroup();
|
||||
if(!pGroup)
|
||||
return;
|
||||
|
||||
for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next())
|
||||
{
|
||||
Player* Target = itr->getSource();
|
||||
|
||||
// IsHostileTo check duel and controlled by enemy
|
||||
if( Target && Target != this && Target->isAlive()
|
||||
&& IsWithinDistInMap(Target, radius) && !IsHostileTo(Target) )
|
||||
nearMembers.push_back(Target);
|
||||
}
|
||||
}
|
||||
|
||||
void Unit::GetPartyMember(std::list<Unit*> &TagUnitMap, float radius)
|
||||
@@ -13107,17 +13124,23 @@ void Unit::GetPartyMember(std::list<Unit*> &TagUnitMap, float radius)
|
||||
|
||||
void Unit::AddAura(uint32 spellId, Unit* target)
|
||||
{
|
||||
if(!target)
|
||||
if(!target || !target->isAlive())
|
||||
return;
|
||||
|
||||
SpellEntry const *spellInfo = sSpellStore.LookupEntry(spellId);
|
||||
if(!spellInfo)
|
||||
return;
|
||||
|
||||
if (target->IsImmunedToSpell(spellInfo))
|
||||
return;
|
||||
|
||||
for(uint32 i = 0; i < 3; ++i)
|
||||
{
|
||||
if(spellInfo->Effect[i] == SPELL_EFFECT_APPLY_AURA)
|
||||
{
|
||||
if(target->IsImmunedToSpellEffect(spellInfo->Effect[i], spellInfo->EffectMechanic[i]))
|
||||
continue;
|
||||
|
||||
if(spellInfo->EffectImplicitTargetA[i] == TARGET_UNIT_CASTER)
|
||||
{
|
||||
Aura *Aur = CreateAura(spellInfo, i, NULL, this, this);
|
||||
|
||||
Reference in New Issue
Block a user