Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4

Conflicts:
	src/server/game/AI/SmartScripts/SmartScriptMgr.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_halazzi.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_hexlord.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_janalai.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_nalorakk.cpp
	src/server/scripts/EasternKingdoms/ZulAman/boss_zuljin.cpp
	src/server/scripts/EasternKingdoms/ZulAman/zulaman.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_arlokk.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_jeklik.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_jindo.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_mandokir.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_marli.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_renataki.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_thekal.cpp
	src/server/scripts/EasternKingdoms/ZulGurub/boss_venoxis.cpp
	src/server/scripts/EasternKingdoms/zone_hinterlands.cpp
	src/server/scripts/EasternKingdoms/zone_redridge_mountains.cpp
	src/server/scripts/EasternKingdoms/zone_silverpine_forest.cpp
	src/server/scripts/EasternKingdoms/zone_stormwind_city.cpp
	src/server/scripts/EasternKingdoms/zone_tirisfal_glades.cpp
This commit is contained in:
Vincent-Michael
2014-09-04 06:41:51 +02:00
44 changed files with 788 additions and 359 deletions

View File

@@ -2227,6 +2227,64 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
sGameEventMgr->StartEvent(eventId, true);
break;
}
case SMART_ACTION_START_CLOSEST_WAYPOINT:
{
uint32 waypoints[SMART_ACTION_PARAM_COUNT];
waypoints[0] = e.action.closestWaypointFromList.wp1;
waypoints[1] = e.action.closestWaypointFromList.wp2;
waypoints[2] = e.action.closestWaypointFromList.wp3;
waypoints[3] = e.action.closestWaypointFromList.wp4;
waypoints[4] = e.action.closestWaypointFromList.wp5;
waypoints[5] = e.action.closestWaypointFromList.wp6;
float distanceToClosest = std::numeric_limits<float>::max();
WayPoint* closestWp = NULL;
ObjectList* targets = GetTargets(e, unit);
if (targets)
{
for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); ++itr)
{
if (Creature* target = (*itr)->ToCreature())
{
if (IsSmart(target))
{
for (uint8 i = 0; i < SMART_ACTION_PARAM_COUNT; i++)
{
if (!waypoints[i])
continue;
WPPath* path = sSmartWaypointMgr->GetPath(waypoints[i]);
if (!path || path->empty())
continue;
WPPath::const_iterator itrWp = path->find(0);
if (itrWp != path->end())
{
if (WayPoint* wp = itrWp->second)
{
float distToThisPath = target->GetDistance(wp->x, wp->y, wp->z);
if (distToThisPath < distanceToClosest)
{
distanceToClosest = distToThisPath;
closestWp = wp;
}
}
}
}
if (closestWp)
CAST_AI(SmartAI, target->AI())->StartPath(false, closestWp->id, true);
}
}
}
delete targets;
}
break;
}
default:
TC_LOG_ERROR("sql.sql", "SmartScript::ProcessAction: Entry %d SourceType %u, Event %u, Unhandled Action type %u", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
break;