diff --git a/src/p_setup.cpp b/src/p_setup.cpp index de760008f..9f1708aff 100644 --- a/src/p_setup.cpp +++ b/src/p_setup.cpp @@ -1686,18 +1686,18 @@ static void SetMapThingUserData(AActor *actor, unsigned udi) { FName varname = MapThingsUserData[udi].Property; int value = MapThingsUserData[udi].Value; - PSymbolVariable *var = dyn_cast(actor->GetClass()->Symbols.FindSymbol(varname, true)); + PField *var = dyn_cast(actor->GetClass()->Symbols.FindSymbol(varname, true)); udi++; - if (var == NULL || var->bUserVar || var->ValueType.Type != VAL_Int) + if (var == NULL || (var->Flags & VARF_Native) || !var->Type->IsKindOf(RUNTIME_CLASS(PBasicType))) { DPrintf("%s is not a user variable in class %s\n", varname.GetChars(), actor->GetClass()->TypeName.GetChars()); } else { // Set the value of the specified user variable. - *(int *)(reinterpret_cast(actor) + var->offset) = value; + var->Type->SetValue(reinterpret_cast(actor) + var->Offset, value); } } }