diff options
| author | carl3175 <carl3175@163.com> | 2025-10-22 11:10:16 +0800 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2025-10-24 12:13:33 +0200 |
| commit | b9e6a81f28d1fa7a50d0e6f0b08e100071430a5e (patch) | |
| tree | 9ba27f72cebc8fae4f715ec43a510e66ddc6a757 /src | |
| parent | 962568781a2e79f77308c09aa54984873ecdb2c0 (diff) | |
Core/SAI: Implement fall movement action
Diffstat (limited to 'src')
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 7 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 2 | ||||
| -rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 8 |
3 files changed, 16 insertions, 1 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 42a3e09d1d9..e8cad28a4e8 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -2678,6 +2678,13 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u } break; } + case SMART_ACTION_FALL: + { + for (WorldObject* target : targets) + if (Unit* unitTarget = target->ToUnit()) + unitTarget->GetMotionMaster()->MoveFall(e.action.fall.pointId); + 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; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 7fceb43a614..65a13078bc9 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1035,6 +1035,7 @@ bool SmartAIMgr::CheckUnusedActionParams(SmartScriptHolder const& e) 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; + case SMART_ACTION_FALL: return sizeof(SmartAction::fall); 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()); @@ -2452,6 +2453,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder& e) case SMART_ACTION_ADD_TO_STORED_TARGET_LIST: case SMART_ACTION_DO_ACTION: case SMART_ACTION_EXIT_VEHICLE: + case SMART_ACTION_FALL: break; case SMART_ACTION_BECOME_PERSONAL_CLONE_FOR_PLAYER: { diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 0b3de204454..a9127a33f8a 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -614,7 +614,8 @@ enum SMART_ACTION SMART_ACTION_BOARD_PASSENGER = 156, // seat id SMART_ACTION_EXIT_VEHICLE = 157, SMART_ACTION_RESUME_MOVEMENT = 158, // UNUSED NEEDS CHERRYPICK - SMART_ACTION_END = 159 + SMART_ACTION_FALL = 159, // pointId + SMART_ACTION_END = 160 }; enum class SmartActionSummonCreatureFlags @@ -877,6 +878,11 @@ struct SmartAction struct { + uint32 pointId; + } fall; + + struct + { SAIBool run; // unused defined by waypoint_path uint32 pathID; SAIBool repeat; |
