mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Core/SAI: Add actions ENTER_VEHICLE, BOARD_PASSENGER and EXIT_VEHICLE (#31141)
This commit is contained in:
@@ -2603,6 +2603,47 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
|
||||
Cell::VisitGridObjects(GetBaseObject(), worker, float(e.action.destroyConversation.range));
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_ENTER_VEHICLE:
|
||||
{
|
||||
if (!me)
|
||||
break;
|
||||
|
||||
for (WorldObject* target : targets)
|
||||
{
|
||||
if (Unit* unitTarget = target->ToUnit())
|
||||
{
|
||||
me->EnterVehicle(unitTarget, (uint8)e.action.enterVehicle.seatId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_BOARD_PASSENGER:
|
||||
{
|
||||
if (!me)
|
||||
break;
|
||||
|
||||
for (WorldObject* target : targets)
|
||||
{
|
||||
if (Unit* unitTarget = target->ToUnit())
|
||||
{
|
||||
unitTarget->EnterVehicle(me, (uint8)e.action.enterVehicle.seatId);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_EXIT_VEHICLE:
|
||||
{
|
||||
for (WorldObject* target : targets)
|
||||
{
|
||||
if (Unit* unitTarget = target->ToUnit())
|
||||
{
|
||||
unitTarget->ExitVehicle();
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
default:
|
||||
TC_LOG_ERROR("sql.sql", "SmartScript::ProcessAction: Entry {} SourceType {}, Event {}, Unhandled Action type {}", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
break;
|
||||
|
||||
@@ -1030,6 +1030,9 @@ bool SmartAIMgr::CheckUnusedActionParams(SmartScriptHolder const& e)
|
||||
case SMART_ACTION_COMPLETE_QUEST: return sizeof(SmartAction::quest);
|
||||
case SMART_ACTION_CREDIT_QUEST_OBJECTIVE_TALK_TO: return NO_PARAMS;
|
||||
case SMART_ACTION_DESTROY_CONVERSATION: return sizeof(SmartAction::destroyConversation);
|
||||
case SMART_ACTION_ENTER_VEHICLE: return sizeof(SmartAction::enterVehicle);
|
||||
case SMART_ACTION_BOARD_PASSENGER: return sizeof(SmartAction::enterVehicle);
|
||||
case SMART_ACTION_EXIT_VEHICLE: return NO_PARAMS;
|
||||
default:
|
||||
TC_LOG_WARN("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} is using an action with no unused params specified in SmartAIMgr::CheckUnusedActionParams(), please report this.",
|
||||
e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType());
|
||||
@@ -2427,6 +2430,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
case SMART_ACTION_DESPAWN_SPAWNGROUP:
|
||||
case SMART_ACTION_ADD_TO_STORED_TARGET_LIST:
|
||||
case SMART_ACTION_DO_ACTION:
|
||||
case SMART_ACTION_EXIT_VEHICLE:
|
||||
break;
|
||||
case SMART_ACTION_BECOME_PERSONAL_CLONE_FOR_PLAYER:
|
||||
{
|
||||
@@ -2479,6 +2483,16 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e)
|
||||
TC_SAI_IS_BOOLEAN_VALID(e, e.action.destroyConversation.isPrivate);
|
||||
break;
|
||||
}
|
||||
case SMART_ACTION_ENTER_VEHICLE:
|
||||
case SMART_ACTION_BOARD_PASSENGER:
|
||||
{
|
||||
if (e.action.enterVehicle.seatId >= MAX_VEHICLE_SEATS)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry {} SourceType {} Event {} Action {} uses incorrect seat id (out of range 0 - {}), skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), MAX_VEHICLE_SEATS - 1);
|
||||
return false;
|
||||
}
|
||||
break;
|
||||
}
|
||||
// Unused
|
||||
case SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS:
|
||||
case SMART_ACTION_CALL_GROUPEVENTHAPPENS:
|
||||
|
||||
@@ -608,7 +608,10 @@ enum SMART_ACTION
|
||||
SMART_ACTION_COMPLETE_QUEST = 152, // QuestId. Regular quests with objectives can't be completed with this action (only quests with QUEST_FLAGS_COMPLETION_EVENT, QUEST_FLAGS_COMPLETION_AREA_TRIGGER or QUEST_FLAGS_TRACKING_EVENT)
|
||||
SMART_ACTION_CREDIT_QUEST_OBJECTIVE_TALK_TO = 153,
|
||||
SMART_ACTION_DESTROY_CONVERSATION = 154, // conversation_template.id, isPrivate, range
|
||||
SMART_ACTION_END = 155
|
||||
SMART_ACTION_ENTER_VEHICLE = 155, // seat id
|
||||
SMART_ACTION_BOARD_PASSENGER = 156, // seat id
|
||||
SMART_ACTION_EXIT_VEHICLE = 157,
|
||||
SMART_ACTION_END = 158
|
||||
};
|
||||
|
||||
enum class SmartActionSummonCreatureFlags
|
||||
@@ -1243,6 +1246,11 @@ struct SmartAction
|
||||
uint32 actionId;
|
||||
} doAction;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 seatId;
|
||||
} enterVehicle;
|
||||
|
||||
struct
|
||||
{
|
||||
uint32 id;
|
||||
|
||||
Reference in New Issue
Block a user