(See the best response by Multiverse7.)
I tried using winset() to change the image property on a whole bunch of buttons like so:

for(var/inc = 1 to whatever)
winset(mob, "window.button[inc]", "image=[icon_list[inc]]")

It works just fine, but only if icon_list[inc] is a cached icon file (I think?).

So I created a list of icons, just so that they would get loaded into the cache. Is there a different way I should be going about this? :D
Best response
I don't think you need to use winset() for that. You can just use output(). It's easier to use and more efficient.
mob << output(icon_list[inc], "window.button[inc]")

As for the icons, I think the best you could do is generate the list at runtime, using flist() and fcopy_rsc().
Ironically I looked up "cache" in the reference and failed to take a look at "fcopy_rsc proc". Thank you!