Fixed incorrect pointers for Actor.Used()

https://mantis.zdoom.org/view.php?id=340
This commit is contained in:
alexey.lysiuk 2017-02-26 11:37:43 +02:00
parent 6ae91ac9ea
commit c150f9d737

View file

@ -5276,20 +5276,22 @@ bool P_UseTraverse(AActor *usething, const DVector2 &start, const DVector2 &end,
// [RH] Check for things to talk with or use a puzzle item on // [RH] Check for things to talk with or use a puzzle item on
if (!in->isaline) if (!in->isaline)
{ {
if (usething == in->d.thing) AActor * const mobj = in->d.thing;
if (mobj == usething)
continue; continue;
// Check thing // Check thing
// Check for puzzle item use or USESPECIAL flag // Check for puzzle item use or USESPECIAL flag
// Extended to use the same activationtype mechanism as BUMPSPECIAL does // Extended to use the same activationtype mechanism as BUMPSPECIAL does
if (in->d.thing->flags5 & MF5_USESPECIAL || in->d.thing->special == UsePuzzleItem) if (mobj->flags5 & MF5_USESPECIAL || mobj->special == UsePuzzleItem)
{ {
if (P_ActivateThingSpecial(in->d.thing, usething)) if (P_ActivateThingSpecial(mobj, usething))
return true; return true;
} }
IFVIRTUALPTR(usething, AActor, Used) IFVIRTUALPTR(mobj, AActor, Used)
{ {
VMValue params[] = { usething, in->d.thing }; VMValue params[] = { mobj, usething };
int ret; int ret;
VMReturn vret(&ret); VMReturn vret(&ret);
GlobalVMStack.Call(func, params, 2, &vret, 1); GlobalVMStack.Call(func, params, 2, &vret, 1);