aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp7
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp2
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h8
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;