Core/SAI: Add distance option for SMART_ACTION_SOUND & SMART_ACTION_RANDOM_SOUND

Port From (https://github.com/TrinityCore/TrinityCore/commit/097335f2c4db5ce8ff773ec73b179a1f26b504fe)
This commit is contained in:
hondacrx
2021-01-19 13:32:21 -05:00
parent b5b43dc251
commit 73f4790346
2 changed files with 12 additions and 7 deletions
@@ -941,8 +941,6 @@ namespace Game.AI
return false;
if (e.Action.randomSound.sound4 != 0 && !IsSoundValid(e, e.Action.randomSound.sound4))
return false;
if (e.Action.randomSound.sound5 != 0 && !IsSoundValid(e, e.Action.randomSound.sound5))
return false;
break;
case SmartActions.Cast:
{
@@ -2416,7 +2414,7 @@ namespace Game.AI
{
public uint soundId;
public uint onlySelf;
public uint distance; // NYI: awaiting cherry-pick
public uint distance;
public uint keyBroadcastTextId;
}
public struct Emote
@@ -2700,7 +2698,6 @@ namespace Game.AI
{
public uint entry;
}
public struct Equip
{
public uint entry;
@@ -2843,8 +2840,8 @@ namespace Game.AI
public uint sound2;
public uint sound3;
public uint sound4;
public uint sound5;
public uint onlySelf;
public uint distance;
}
public struct CorpseDelay
{
+10 -2
View File
@@ -178,7 +178,11 @@ namespace Game.AI
{
if (IsUnit(target))
{
target.PlayDirectSound(e.Action.sound.soundId, e.Action.sound.onlySelf != 0 ? target.ToPlayer() : null, e.Action.sound.keyBroadcastTextId);
if (e.Action.sound.distance == 1)
target.PlayDistanceSound(e.Action.sound.soundId, e.Action.sound.onlySelf != 0 ? target.ToPlayer() : null);
else
target.PlayDirectSound(e.Action.sound.soundId, e.Action.sound.onlySelf != 0 ? target.ToPlayer() : null, e.Action.sound.keyBroadcastTextId);
Log.outDebug(LogFilter.ScriptsAi, "SmartScript.ProcessAction. SMART_ACTION_SOUND: target: {0} (GuidLow: {1}), sound: {2}, onlyself: {3}",
target.GetName(), target.GetGUID().ToString(), e.Action.sound.soundId, e.Action.sound.onlySelf);
}
@@ -2038,7 +2042,11 @@ namespace Game.AI
if (IsUnit(target))
{
uint sound = sounds.SelectRandom();
target.PlayDirectSound(sound, onlySelf ? target.ToPlayer() : null);
if (e.Action.randomSound.distance == 1)
target.PlayDistanceSound(sound, onlySelf ? target.ToPlayer() : null);
else
target.PlayDirectSound(sound, onlySelf ? target.ToPlayer() : null);
Log.outDebug(LogFilter.ScriptsAi, "SmartScript.ProcessAction:: SMART_ACTION_RANDOM_SOUND: target: {0} ({1}), sound: {2}, onlyself: {3}",
target.GetName(), target.GetGUID().ToString(), sound, onlySelf);
}