aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2008-12-24 10:57:04 -0600
committermegamage <none@none>2008-12-24 10:57:04 -0600
commit253f4bf374ccaa83d20a7ff58e31b37300f4a26e (patch)
tree32ad2585c67269500c961af90f5d561570331b50
parentc81299e6536e249ca05eebf100f3f350522da7da (diff)
*Fix the bug that many talents lose one point.
--HG-- branch : trunk
-rw-r--r--src/game/SharedDefines.h3
-rw-r--r--src/game/Spell.cpp15
-rw-r--r--src/game/SpellAuras.cpp2
-rw-r--r--src/game/SpellMgr.cpp1
-rw-r--r--src/game/Unit.cpp19
5 files changed, 28 insertions, 12 deletions
diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h
index bf23a724520..51fba0b48ed 100644
--- a/src/game/SharedDefines.h
+++ b/src/game/SharedDefines.h
@@ -868,8 +868,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,
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index ffac28c7c58..b3930a85520 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -1473,6 +1473,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;
@@ -1759,13 +1765,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();
@@ -3914,7 +3913,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;
diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp
index 36feb9b9375..1597b4a2b25 100644
--- a/src/game/SpellAuras.cpp
+++ b/src/game/SpellAuras.cpp
@@ -342,7 +342,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
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index 432682d618e..705a69ea2a4 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -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:
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index e00b2446010..123dbbcf2eb 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -12943,8 +12943,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)