Core/SAI: Use GetBaseObject as second param of SMART_ACTION_ACTIVATE_GAMEOBJECT & reorder GameObjectActions
Port From (https://github.com/TrinityCore/TrinityCore/commit/52bb230e4c83c814658b77f6d277da77e0b47be7)
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user