- fixed: FraggleScript's SpawnedThings array must always be checked for owned inventory items. The 'mapthingnumexist' function forgot to do that.

This commit is contained in:
Christoph Oelckers 2014-07-13 09:43:28 +02:00
parent 400a573e65
commit 004cf5748c

View file

@ -3530,9 +3530,18 @@ void FParser::SF_MapThingNumExist()
} }
else else
{ {
t_return.type = svt_int; // Inventory items in the player's inventory have to be considered non-present.
if (SpawnedThings[intval]->IsKindOf(RUNTIME_CLASS(AInventory)) &&
barrier_cast<AInventory*>(SpawnedThings[intval])->Owner != NULL)
{
t_return.value.i = 0;
}
else
{
t_return.value.i = 1; t_return.value.i = 1;
} }
t_return.type = svt_int;
}
} }
} }
@ -3770,12 +3779,15 @@ void FParser::SF_ObjType()
mo = Script->trigger; mo = Script->trigger;
} }
if (mo != NULL)
{
for (unsigned int i = 0; i < countof(ActorTypes); i++) if (mo->GetClass() == ActorTypes[i]) for (unsigned int i = 0; i < countof(ActorTypes); i++) if (mo->GetClass() == ActorTypes[i])
{ {
t_return.type = svt_int; t_return.type = svt_int;
t_return.value.i = i; t_return.value.i = i;
return; return;
} }
}
t_return.type = svt_int; t_return.type = svt_int;
t_return.value.i = -1; t_return.value.i = -1;
} }