mirror of
https://github.com/mangosfour/server.git
synced 2025-12-17 16:37:00 +00:00
[7952] Implement rogue talent 51690.
Signed-off-by: VladimirMangos <vladimir@getmangos.com>
This commit is contained in:
parent
48fee42129
commit
35271fe488
3 changed files with 57 additions and 4 deletions
|
|
@ -767,6 +767,25 @@ namespace MaNGOS
|
||||||
float i_range;
|
float i_range;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class AnyUnfriendlyVisibleUnitInObjectRangeCheck
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
AnyUnfriendlyVisibleUnitInObjectRangeCheck(WorldObject const* obj, Unit const* funit, float range)
|
||||||
|
: i_obj(obj), i_funit(funit), i_range(range) {}
|
||||||
|
|
||||||
|
bool operator()(Unit* u)
|
||||||
|
{
|
||||||
|
return u->isAlive()
|
||||||
|
&& i_obj->IsWithinDistInMap(u, i_range)
|
||||||
|
&& !i_funit->IsFriendlyTo(u)
|
||||||
|
&& u->isVisibleForOrDetect(i_funit, false);
|
||||||
|
}
|
||||||
|
private:
|
||||||
|
WorldObject const* i_obj;
|
||||||
|
Unit const* i_funit;
|
||||||
|
float i_range;
|
||||||
|
};
|
||||||
|
|
||||||
class AnyFriendlyUnitInObjectRangeCheck
|
class AnyFriendlyUnitInObjectRangeCheck
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
|
|
||||||
|
|
@ -6449,8 +6449,42 @@ void Aura::PeriodicDummyTick()
|
||||||
}
|
}
|
||||||
case SPELLFAMILY_ROGUE:
|
case SPELLFAMILY_ROGUE:
|
||||||
{
|
{
|
||||||
// switch (spell->Id)
|
switch (spell->Id)
|
||||||
// {
|
{
|
||||||
|
case 51690:
|
||||||
|
{
|
||||||
|
std::list<Unit*> targets;
|
||||||
|
{
|
||||||
|
// eff_radius ==0
|
||||||
|
float radius = GetSpellMaxRange(sSpellRangeStore.LookupEntry(spell->rangeIndex));
|
||||||
|
|
||||||
|
CellPair p(MaNGOS::ComputeCellPair(caster->GetPositionX(),caster->GetPositionY()));
|
||||||
|
Cell cell(p);
|
||||||
|
cell.data.Part.reserved = ALL_DISTRICT;
|
||||||
|
|
||||||
|
MaNGOS::AnyUnfriendlyVisibleUnitInObjectRangeCheck u_check(caster, caster, radius);
|
||||||
|
MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyVisibleUnitInObjectRangeCheck> checker(caster,targets, u_check);
|
||||||
|
|
||||||
|
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyVisibleUnitInObjectRangeCheck>, GridTypeMapContainer > grid_object_checker(checker);
|
||||||
|
TypeContainerVisitor<MaNGOS::UnitListSearcher<MaNGOS::AnyUnfriendlyVisibleUnitInObjectRangeCheck>, WorldTypeMapContainer > world_object_checker(checker);
|
||||||
|
|
||||||
|
CellLock<GridReadGuard> cell_lock(cell, p);
|
||||||
|
|
||||||
|
cell_lock->Visit(cell_lock, grid_object_checker, *caster->GetMap());
|
||||||
|
cell_lock->Visit(cell_lock, world_object_checker, *caster->GetMap());
|
||||||
|
}
|
||||||
|
|
||||||
|
if(targets.empty())
|
||||||
|
return;
|
||||||
|
|
||||||
|
std::list<Unit*>::const_iterator itr = targets.begin();
|
||||||
|
std::advance(itr, rand()%targets.size());
|
||||||
|
Unit* target = *itr;
|
||||||
|
|
||||||
|
caster->CastSpell(target, 57840, true);
|
||||||
|
caster->CastSpell(target, 57841, true);
|
||||||
|
return;
|
||||||
|
}
|
||||||
// Master of Subtlety
|
// Master of Subtlety
|
||||||
// case 31666: break;
|
// case 31666: break;
|
||||||
// Killing Spree
|
// Killing Spree
|
||||||
|
|
@ -6459,7 +6493,7 @@ void Aura::PeriodicDummyTick()
|
||||||
// case 58428: break;
|
// case 58428: break;
|
||||||
// default:
|
// default:
|
||||||
// break;
|
// break;
|
||||||
// }
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case SPELLFAMILY_HUNTER:
|
case SPELLFAMILY_HUNTER:
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,4 @@
|
||||||
#ifndef __REVISION_NR_H__
|
#ifndef __REVISION_NR_H__
|
||||||
#define __REVISION_NR_H__
|
#define __REVISION_NR_H__
|
||||||
#define REVISION_NR "7951"
|
#define REVISION_NR "7952"
|
||||||
#endif // __REVISION_NR_H__
|
#endif // __REVISION_NR_H__
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue