-Edit, Installing quest 7.1 seems to have fixed it
Welp, you always forget to check the things that seem like they couldn't possibly break when working, this time I think i somehow broke the simple "take" function, because this is the result i get..
"Error running script: Cannot foreach over 'Object: Aniversary Present' as it is not a list"
and of course it happens for each and every takeable item, it has propagated to older aslx files as well for some odd reason..
However when I directly play the quest file rather than opening for editing and previewing it works (On a known good file)
I've tried running
recently updated to quest 7.2 but doubt that would have an effect,
if (HasAttribute(obj, "flavor")) {
MoveObject (obj, Flavor Items)
}
else if (HasAttribute(obj, "trophy")) {
MoveObject (obj, Flavor Items)
}
else {
DoTake (obj, multiple)
}
}
Is my customized take function I've had for quite some time, to automatically sort items for the player when picked up
If you have modified the take command/function in 5.7.1, and 5.7.2 has a new (different) take command/function than 7.1, then that would explain everything. See if the two versions have any differences; if so, you'll have to re-modify your customized take code in 7.2, assuming you want to upgrade.
I had this problem with a modified put command going from 5.6.3 to 5.7.1. There were some changes to the 7.1 put command, but Quest was using my old modified 6.3 put command.
I had similar problems with wear/remove and just decided I needed to retest thoroughly after each update.
Yep, The modified take command is very likely what the causing that issue, so going to take a look at how to redo it properly when i next try to update quest..currently 7.2 has nothing I really need in itthough so I have time
This is the TAKE command as of Quest 5.7.2:
<command name="take">
<pattern>take #object#; get #object#; pick up #object#</pattern>
<multiple>
takeList = NewObjectList()
foreach (obj, ListExclude(ScopeVisibleNotHeldNotScenery(), game.pov)) {
if (obj.parent = game.pov.parent) {
list add (takeList, obj)
}
}
return (takeList)
</multiple>
<scope>notheld</scope>
<multipleobjects type="script">
game.pov.currentcommandpendingobjectscope = NewObjectList()
objlist = ListExclude(ScopeVisibleNotHeldNotScenery(), game.pov)
objlist = ListExclude(objlist, FilterByAttribute(objlist,"not_all",true))
foreach (obj, objlist) {
if (obj.parent = game.pov.parent and not DoesInherit(obj, "npc_type")) {
list add (game.pov.currentcommandpendingobjectscope, obj)
}
}
</multipleobjects>
<script>
if (multiple and ListCount(object) = 0) {
msg ("Nothing here to take.")
}
else {
foreach (obj, object) {
DoTake (obj, multiple)
}
}
</script>
</command>
This is the 5.7.1 TAKE command:
<command name="take" template="take">
<multiple>
takeList = NewObjectList()
foreach (obj, ListExclude(ScopeVisibleNotHeldNotScenery(), game.pov)) {
if (obj.parent = game.pov.parent) {
list add(takeList, obj)
}
}
return (takeList)
</multiple>
<scope>notheld</scope>
<script>
foreach (obj, object) {
DoTake(obj, multiple)
}
</script>
</command>
And the TAKE command from 5.6.3:
<command name="take" template="take">
<multiple>
takeList = NewObjectList()
foreach (obj, ListExclude(ScopeVisibleNotHeldNotScenery(), game.pov)) {
if (obj.parent = game.pov.parent) {
list add(takeList, obj)
}
}
return (takeList)
</multiple>
<script>
foreach (obj, object) {
DoTake(obj, multiple)
}
</script>
</command>
Okay. It's done. I actually overwrote the take-verb. I'm all right now. Thanks for the help.