A_PlaySound: var2 lower 16 bits == 2, play from actor target

This commit is contained in:
James R 2023-06-18 00:46:32 -07:00
parent abd6e183e9
commit f20a7e4db2

View file

@ -7221,13 +7221,14 @@ void A_ChangeRollAngleAbsolute(mobj_t *actor)
// //
// var1 = sound # to play // var1 = sound # to play
// var2: // var2:
// lower 16 bits = If 1, play sound using calling object as origin. If 0, play sound without an origin // lower 16 bits = If 1, play sound using calling object as origin. If 2, use target. If 0, play sound without an origin
// upper 16 bits = If 1, do not play sound during preticker. // upper 16 bits = If 1, do not play sound during preticker.
// //
void A_PlaySound(mobj_t *actor) void A_PlaySound(mobj_t *actor)
{ {
INT32 locvar1 = var1; INT32 locvar1 = var1;
INT32 locvar2 = var2; INT32 locvar2 = var2;
mobj_t *origin = NULL;
if (LUA_CallAction(A_PLAYSOUND, actor)) if (LUA_CallAction(A_PLAYSOUND, actor))
return; return;
@ -7235,7 +7236,18 @@ void A_PlaySound(mobj_t *actor)
if (leveltime < 2 && (locvar2 >> 16)) if (leveltime < 2 && (locvar2 >> 16))
return; return;
S_StartSound((locvar2 & 65535) ? actor : NULL, locvar1); switch (locvar2 & 65535)
{
case 1:
origin = actor;
break;
case 2:
origin = actor->target;
break;
}
S_StartSound(origin, locvar1);
} }
// Function: A_FindTarget // Function: A_FindTarget