Core/SmartScripts: Implement SMART_ACTION_PLAY_CINEMATIC
Port From (https://github.com/TrinityCore/TrinityCore/commit/dad95d16b263b9c1cb8df6edac8043138fb4da9e)
This commit is contained in:
@@ -389,7 +389,7 @@ namespace Framework.Constants
|
|||||||
DespawnSpawngroup = 132, // Group ID, min secs, max secs, spawnflags
|
DespawnSpawngroup = 132, // Group ID, min secs, max secs, spawnflags
|
||||||
RespawnBySpawnId = 133, // spawnType, spawnId
|
RespawnBySpawnId = 133, // spawnType, spawnId
|
||||||
InvokerCast = 134, // spellID, castFlags
|
InvokerCast = 134, // spellID, castFlags
|
||||||
PlayCinematic = 135, // reserved for future uses
|
PlayCinematic = 135, // entry, cinematic
|
||||||
SetMovementSpeed = 136, // movementType, speedInteger, speedFraction
|
SetMovementSpeed = 136, // movementType, speedInteger, speedFraction
|
||||||
PlaySpellVisualKit = 137, // spellVisualKitId, kitType (unknown values, copypaste from packet dumps), duration
|
PlaySpellVisualKit = 137, // spellVisualKitId, kitType (unknown values, copypaste from packet dumps), duration
|
||||||
CreateConversation = 143, // conversation_template.id
|
CreateConversation = 143, // conversation_template.id
|
||||||
|
|||||||
@@ -1412,6 +1412,16 @@ namespace Game.AI
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SmartActions.PlayCinematic:
|
||||||
|
{
|
||||||
|
if (!CliDB.CinematicSequencesStorage.ContainsKey(e.Action.cinematic.entry))
|
||||||
|
{
|
||||||
|
Log.outError(LogFilter.Sql, $"SmartAIMgr: SMART_ACTION_PLAY_CINEMATIC {e} uses invalid entry {e.Action.cinematic.entry}, skipped.");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
}
|
||||||
case SmartActions.SetMovementSpeed:
|
case SmartActions.SetMovementSpeed:
|
||||||
{
|
{
|
||||||
if (e.Action.movementSpeed.movementType >= (int)MovementGeneratorType.Max)
|
if (e.Action.movementSpeed.movementType >= (int)MovementGeneratorType.Max)
|
||||||
@@ -2530,6 +2540,9 @@ namespace Game.AI
|
|||||||
[FieldOffset(4)]
|
[FieldOffset(4)]
|
||||||
public Scene scene;
|
public Scene scene;
|
||||||
|
|
||||||
|
[FieldOffset(4)]
|
||||||
|
public Cinematic cinematic;
|
||||||
|
|
||||||
[FieldOffset(4)]
|
[FieldOffset(4)]
|
||||||
public MovementSpeed movementSpeed;
|
public MovementSpeed movementSpeed;
|
||||||
|
|
||||||
@@ -3045,6 +3058,10 @@ namespace Game.AI
|
|||||||
{
|
{
|
||||||
public uint sceneId;
|
public uint sceneId;
|
||||||
}
|
}
|
||||||
|
public struct Cinematic
|
||||||
|
{
|
||||||
|
public uint entry;
|
||||||
|
}
|
||||||
public struct MovementSpeed
|
public struct MovementSpeed
|
||||||
{
|
{
|
||||||
public uint movementType;
|
public uint movementType;
|
||||||
|
|||||||
@@ -2438,6 +2438,17 @@ namespace Game.AI
|
|||||||
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
case SmartActions.PlayCinematic:
|
||||||
|
{
|
||||||
|
foreach (WorldObject target in targets)
|
||||||
|
{
|
||||||
|
if (!IsPlayer(target))
|
||||||
|
continue;
|
||||||
|
|
||||||
|
target.ToPlayer().SendCinematicStart(e.Action.cinematic.entry);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
default:
|
default:
|
||||||
Log.outError(LogFilter.Sql, "SmartScript.ProcessAction: Entry {0} SourceType {1}, Event {2}, Unhandled Action type {3}", e.EntryOrGuid, e.GetScriptType(), e.EventId, e.GetActionType());
|
Log.outError(LogFilter.Sql, "SmartScript.ProcessAction: Entry {0} SourceType {1}, Event {2}, Unhandled Action type {3}", e.EntryOrGuid, e.GetScriptType(), e.EventId, e.GetActionType());
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user