From 1040f8018193b0df9cf379de76217201bd66b235 Mon Sep 17 00:00:00 2001 From: hondacrx Date: Mon, 30 May 2022 14:46:24 -0400 Subject: [PATCH] Core/SAI: Use GetBaseObject as second param of SMART_ACTION_ACTIVATE_GAMEOBJECT & reorder GameObjectActions Port From (https://github.com/TrinityCore/TrinityCore/commit/52bb230e4c83c814658b77f6d277da77e0b47be7) --- Source/Game/AI/SmartScripts/SmartScript.cs | 2 +- Source/Game/Entities/GameObject/GameObject.cs | 36 ++++++++++++------- 2 files changed, 25 insertions(+), 13 deletions(-) diff --git a/Source/Game/AI/SmartScripts/SmartScript.cs b/Source/Game/AI/SmartScripts/SmartScript.cs index c257c3ece..b89ec4013 100644 --- a/Source/Game/AI/SmartScripts/SmartScript.cs +++ b/Source/Game/AI/SmartScripts/SmartScript.cs @@ -2409,7 +2409,7 @@ namespace Game.AI { GameObject targetGo = target.ToGameObject(); if (targetGo != null) - targetGo.ActivateObject((GameObjectActions)e.Action.activateGameObject.gameObjectAction, (int)e.Action.activateGameObject.param); + targetGo.ActivateObject((GameObjectActions)e.Action.activateGameObject.gameObjectAction, (int)e.Action.activateGameObject.param, GetBaseObject()); } break; } diff --git a/Source/Game/Entities/GameObject/GameObject.cs b/Source/Game/Entities/GameObject/GameObject.cs index d1958e1a7..2a4d5f188 100644 --- a/Source/Game/Entities/GameObject/GameObject.cs +++ b/Source/Game/Entities/GameObject/GameObject.cs @@ -1490,6 +1490,9 @@ namespace Game.Entities switch (action) { + case GameObjectActions.None: + Log.outFatal(LogFilter.Spells, $"Spell {spellId} has action type NONE in effect {effectIndex}"); + break; case GameObjectActions.AnimateCustom0: case GameObjectActions.AnimateCustom1: case GameObjectActions.AnimateCustom2: @@ -1497,6 +1500,15 @@ namespace Game.Entities SendCustomAnim((uint)(action - GameObjectActions.AnimateCustom0)); break; case GameObjectActions.Disturb: // What's the difference with Open? + if (unitCaster) + Use(unitCaster); + break; + case GameObjectActions.Unlock: + RemoveFlag(GameObjectFlags.Locked); + break; + case GameObjectActions.Lock: + AddFlag(GameObjectFlags.Locked); + break; case GameObjectActions.Open: if (unitCaster) Use(unitCaster); @@ -1504,17 +1516,24 @@ namespace Game.Entities case GameObjectActions.OpenAndUnlock: if (unitCaster) UseDoorOrButton(0, false, unitCaster); - goto case GameObjectActions.Unlock; - case GameObjectActions.Unlock: RemoveFlag(GameObjectFlags.Locked); break; - case GameObjectActions.Lock: - AddFlag(GameObjectFlags.Locked); - break; case GameObjectActions.Close: + ResetDoorOrButton(); + break; + case GameObjectActions.ToggleOpen: + // No use cases, implementation unknown + break; + case GameObjectActions.Destroy: + if (unitCaster) + UseDoorOrButton(0, true, unitCaster); + break; case GameObjectActions.Rebuild: ResetDoorOrButton(); break; + case GameObjectActions.Creation: + // No use cases, implementation unknown + break; case GameObjectActions.Despawn: DespawnOrUnsummon(); break; @@ -1528,10 +1547,6 @@ namespace Game.Entities ResetDoorOrButton(); AddFlag(GameObjectFlags.Locked); break; - case GameObjectActions.Destroy: - if (unitCaster) - UseDoorOrButton(0, true, unitCaster); - break; case GameObjectActions.UseArtKit0: case GameObjectActions.UseArtKit1: case GameObjectActions.UseArtKit2: @@ -1601,9 +1616,6 @@ namespace Game.Entities case GameObjectActions.StopSpellVisual: SetSpellVisualId(0); break; - case GameObjectActions.None: - Log.outFatal(LogFilter.Spells, $"Spell {spellId} has action type NONE in effect {effectIndex}"); - break; default: Log.outError(LogFilter.Spells, $"Spell {spellId} has unhandled action {action} in effect {effectIndex}"); break;