(And how many objects did you have that looping over all of them produced a noticeable slowdown?)
A loop over all the objects in the game caused lag on a high-end computer with just a hundred objects? That sucks.
'!include <type_list_full.lib>
define options
debug on
panes disabled
end define
define game <LoopLag>
asl-version <410>
gametype singleplayer
start <Home>
game version <1.0>
game author <J. Dobson>
game copyright <© 2009 JDG Inc.>
background <black>
default fontname <arial>
default fontsize <10>
foreground <White>
startscript {
set numeric <noObjects; 100>
clear
msg <Generating %noObjects% objects in %noObjects% different rooms...|xn>
pause <1>
set numeric <i; 0>
set numeric <n; 0>
for <i; 1; %noObjects%> {
create room <nowhere_%i%>
clone <someitem; someitem_%i%; nowhere_%i%>
}
msg <done!>
}
afterturn {
set <i; 0>
set string <msg; Tagged objects: >
for each object in game {
inc <i>
do <SomeProcedure(#quest.thing#)>
}
msg <Turn complete. Iterated over %i% objects: |n>
msg <#msg#>
}
end define
define room <Home>
alias <Home>
look <You're home.>
end define
define room <nowhere>
alias <Nowhere>
look <You really shouldn't be here.>
define item <someitem>
look <Some item.>
end define
end define
define procedure <SomeProcedure>
if ($numberparameters$ <> 1) then {
debug <Invalid number of parameters>
}
else {
set string <p1; $parameter(1)$>
set <n; $rand(1; 100)$>
if (%n% < 11) then property <#p1#; tagged> else property <#p1#; not tagged>
if property <#p1#; tagged> then set <msg; #msg# #p1#>
}
end defineI've now fixed this for Quest 4.1.2, and it's nice and speedy even with 100,000 procedures.