diff --git a/src/sfall_arrays.cc b/src/sfall_arrays.cc index 08bfe9c..cee6b52 100644 --- a/src/sfall_arrays.cc +++ b/src/sfall_arrays.cc @@ -24,6 +24,11 @@ public: opcode = VALUE_TYPE_INT; integerValue = value; } + SFallScriptValue(Object* value) + { + opcode = VALUE_TYPE_PTR; + pointerValue = value; + } SFallScriptValue(ProgramValue& value) { // Assuming that pointer is the biggest in size diff --git a/src/sfall_opcodes.cc b/src/sfall_opcodes.cc index 32842cd..0bccd5f 100644 --- a/src/sfall_opcodes.cc +++ b/src/sfall_opcodes.cc @@ -340,7 +340,12 @@ static void opLenArray(Program* program) static void opPartyMemberList(Program* program) { auto includeHidden = programStackPopInteger(program); - + auto objects = get_all_party_members_objects(includeHidden); + auto array_id = CreateTempArray(objects.size(), ARRAYFLAG_RESERVED); + auto arr = get_array_by_id(array_id); + for (int i = 0; i < arr->size(); i++) { + arr->data[i] = SFallScriptValue { objects[i] }; + } programStackPushInteger(program, 100); }