Using PickActor will only set the TID if the picked actor doesn't have a TID already. An optional 8th parameter (bool forceTID) was added to revert to the old behavior.

This commit is contained in:
John Palomo Jr 2014-10-19 20:52:48 -04:00
parent c9252d1919
commit 82255c4dfd

View file

@ -5619,15 +5619,27 @@ doplaysound: if (funcIndex == ACSF_PlayActorSound)
wallMask = args[6]; wallMask = args[6];
} }
bool forceTID = 0;
if (argCount >= 8)
{
if (args[7] != 0)
forceTID = 1;
}
AActor* pickedActor = P_LinePickActor(actor, args[1] << 16, args[3], args[2] << 16, actorMask, wallMask); AActor* pickedActor = P_LinePickActor(actor, args[1] << 16, args[3], args[2] << 16, actorMask, wallMask);
if (pickedActor == NULL) { if (pickedActor == NULL) {
return 0; return 0;
} }
pickedActor->RemoveFromHash(); if (!(forceTID) && (args[4] == 0) && (pickedActor->tid == 0))
pickedActor->tid = args[4]; return 0;
pickedActor->AddToHash();
if ((pickedActor->tid == 0) || (forceTID))
{
pickedActor->RemoveFromHash();
pickedActor->tid = args[4];
pickedActor->AddToHash();
}
return 1; return 1;
} }
break; break;