From 41df8242c178db504af84bc23fb19f3ae8b9d8c5 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Sun, 21 Mar 2010 21:05:27 +0000 Subject: [PATCH] - Changed A_SetUserVar and A_SetUserArray so they affect the actor that called it, which is not necessarily "self". The only visible change from this should be that inventory items now set their own variables and not their owners'. SVN r2235 (trunk) --- src/thingdef/thingdef_codeptr.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/thingdef/thingdef_codeptr.cpp b/src/thingdef/thingdef_codeptr.cpp index f709b06a9..7e5f92f3c 100644 --- a/src/thingdef/thingdef_codeptr.cpp +++ b/src/thingdef/thingdef_codeptr.cpp @@ -3009,7 +3009,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserVar) ACTION_PARAM_NAME(varname, 0); ACTION_PARAM_INT(value, 1); - PSymbol *sym = self->GetClass()->Symbols.FindSymbol(varname, true); + PSymbol *sym = stateowner->GetClass()->Symbols.FindSymbol(varname, true); PSymbolVariable *var; if (sym == NULL || sym->SymbolType != SYM_Variable || @@ -3017,11 +3017,11 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserVar) var->ValueType.Type != VAL_Int) { Printf("%s is not a user variable in class %s\n", varname.GetChars(), - self->GetClass()->TypeName.GetChars()); + stateowner->GetClass()->TypeName.GetChars()); return; } // Set the value of the specified user variable. - *(int *)(reinterpret_cast(self) + var->offset) = value; + *(int *)(reinterpret_cast(stateowner) + var->offset) = value; } //=========================================================================== @@ -3037,7 +3037,7 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserArray) ACTION_PARAM_INT(pos, 1); ACTION_PARAM_INT(value, 2); - PSymbol *sym = self->GetClass()->Symbols.FindSymbol(varname, true); + PSymbol *sym = stateowner->GetClass()->Symbols.FindSymbol(varname, true); PSymbolVariable *var; if (sym == NULL || sym->SymbolType != SYM_Variable || @@ -3045,17 +3045,17 @@ DEFINE_ACTION_FUNCTION_PARAMS(AActor, A_SetUserArray) var->ValueType.Type != VAL_Array || var->ValueType.BaseType != VAL_Int) { Printf("%s is not a user array in class %s\n", varname.GetChars(), - self->GetClass()->TypeName.GetChars()); + stateowner->GetClass()->TypeName.GetChars()); return; } if (pos < 0 || pos >= var->ValueType.size) { Printf("%d is out of bounds in array %s in class %s\n", pos, varname.GetChars(), - self->GetClass()->TypeName.GetChars()); + stateowner->GetClass()->TypeName.GetChars()); return; } // Set the value of the specified user array at index pos. - ((int *)(reinterpret_cast(self) + var->offset))[pos] = value; + ((int *)(reinterpret_cast(stateowner) + var->offset))[pos] = value; } //===========================================================================