mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 10:26:28 +01:00
Core/SmartAI: added new target type (invoker's vehicle)
-added new action: ENTER_VEHICLE (79), param1: seatID --HG-- branch : trunk
This commit is contained in:
@@ -466,7 +466,6 @@ void SmartAI::MoveInLineOfSight(Unit* who)
|
||||
{
|
||||
if (!who) return;
|
||||
GetScript()->OnMoveInLineOfSight(who);
|
||||
//HasEscortState(SMART_ESCORT_ESCORTING) ||
|
||||
if (me->HasReactState(REACT_PASSIVE) || AssistPlayerInCombat(who))
|
||||
return;
|
||||
|
||||
|
||||
@@ -910,6 +910,21 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u
|
||||
case SMART_ACTION_CALL_SCRIPT_RESET:
|
||||
OnReset();
|
||||
break;
|
||||
case SMART_ACTION_ENTER_VEHICLE:
|
||||
{
|
||||
if (!me) return;
|
||||
ObjectList* targets = GetTargets(e, unit);
|
||||
if (!targets) return;
|
||||
for (ObjectList::iterator itr = targets->begin(); itr != targets->end(); itr++)
|
||||
{
|
||||
if (IsUnit(*itr) && (*itr)->ToUnit()->GetVehicleKit())
|
||||
{
|
||||
me->EnterVehicle((*itr)->ToUnit()->GetVehicleKit(), e.action.enterVehicle.seat);
|
||||
return;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
sLog.outErrorDb("SmartScript::ProcessAction: Unhandled Action type %u", e.GetActionType());
|
||||
break;
|
||||
@@ -1062,6 +1077,12 @@ ObjectList* SmartScript::GetTargets(SmartScriptHolder e, Unit* invoker)
|
||||
l->push_back(invoker);
|
||||
}
|
||||
break;
|
||||
case SMART_TARGET_ACTION_INVOKER_VEHICLE:
|
||||
if (invoker && invoker->GetVehicle() && invoker->GetVehicle()->GetBase())
|
||||
{
|
||||
l->push_back(invoker->GetVehicle()->GetBase());
|
||||
}
|
||||
break;
|
||||
case SMART_TARGET_INVOKER_PARTY:
|
||||
if (invoker)
|
||||
{
|
||||
|
||||
@@ -275,6 +275,7 @@ bool SmartAIMgr::IsTargetValid(SmartScriptHolder e)
|
||||
case SMART_TARGET_CLOSEST_CREATURE:
|
||||
case SMART_TARGET_CLOSEST_GAMEOBJECT:
|
||||
case SMART_TARGET_CLOSEST_PLAYER:
|
||||
case SMART_TARGET_ACTION_INVOKER_VEHICLE:
|
||||
break;
|
||||
default:
|
||||
sLog.outErrorDb("SmartAIMgr: Not handled target_type(%u), Entry %d SourceType %u Event %u Action %u, skipped.", e.GetTargetType(), e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
@@ -738,6 +739,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder e)
|
||||
case SMART_ACTION_RESET_SCRIPT_BASE_OBJECT:
|
||||
case SMART_ACTION_ACTIVATE_GOBJECT:
|
||||
case SMART_ACTION_CALL_SCRIPT_RESET:
|
||||
case SMART_ACTION_ENTER_VEHICLE:
|
||||
case SMART_ACTION_NONE:
|
||||
break;
|
||||
default:
|
||||
|
||||
@@ -424,7 +424,8 @@ enum SMART_ACTION
|
||||
SMART_ACTION_OVERRIDE_SCRIPT_BASE_OBJECT = 76, //1 // target(first found used), WARNING: CAN CRASH CORE, do not use if you dont know what you are doing
|
||||
SMART_ACTION_RESET_SCRIPT_BASE_OBJECT = 77, //1 // none
|
||||
SMART_ACTION_CALL_SCRIPT_RESET = 78, //1 // none
|
||||
SMART_ACTION_END = 79,
|
||||
SMART_ACTION_ENTER_VEHICLE = 79, //1 // seatID, first vehicle target is used
|
||||
SMART_ACTION_END = 80,
|
||||
};
|
||||
|
||||
struct SmartAction
|
||||
@@ -763,6 +764,11 @@ struct SmartAction
|
||||
{
|
||||
uint32 flag;
|
||||
} unitFlag;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 seat;
|
||||
} enterVehicle;
|
||||
|
||||
struct
|
||||
{
|
||||
@@ -811,7 +817,8 @@ enum SMARTAI_TARGETS
|
||||
SMART_TARGET_CLOSEST_CREATURE = 19, // CreatureEntry(0any)
|
||||
SMART_TARGET_CLOSEST_GAMEOBJECT = 20, // entry(0any)
|
||||
SMART_TARGET_CLOSEST_PLAYER = 21, // none
|
||||
SMART_TARGET_END = 22,
|
||||
SMART_TARGET_ACTION_INVOKER_VEHICLE = 22, // Unit's vehicle who caused this Event to occur
|
||||
SMART_TARGET_END = 23,
|
||||
};
|
||||
|
||||
struct SmartTarget
|
||||
|
||||
Reference in New Issue
Block a user