Thanks, I played around with your code a bit but that doesn't actually seem to be the source of the problem - though led to me figuring it out. It seems that my deleting the dynamic sprite is the issue - this leads to the new dynamic sprite being created in the same slot as the old one (i.e. with the same graphic int), which seems to be result in the engine not realising that the new sprite is different. Easy enough to work around - I just created another DynamicSprite pointing to the old sprite and wait to delete it after the new one has been created. Thanks for the help, regardless.