Do this:
Somewhere in the startup of your map, set up all the map entities' rendering to be hooked to one function:
for(e=0; e<entities; e++)
HookEntityRender(e,"dwl_IdleMove");
Here's part of what goes in to dwl_IdleMove():
BlitEntityFrame(dwl_EntityScreenX(event.entity),dwl_EntityScreenY(event.entity),event.entity,
entity.face[event.entity]-1<<1+(timer/(DWL_FRAME_SPEED-player_speed_offset)%DWL_FRAME_WALK_COUNT)
,screen) ;
The important thing here is that all the entities are rendered using the dwl_IdleMove() function, and the specific entity being referenced at a given time by the entity rendering function is always going to be "event.entity".
Using this information, you can render every map entity using a custom rendering function. This is the method I use for custom animation for all map entities, and it works fine.