An Ice Bro. It walks back and forth, occasionally hopping and periodically throwing two iceballs, which will disappear when they hit the ground. They will freeze and hurt Mario (both can be turned off independently of each other).
It throws an extended sprite iceball. The included ExtendedGetDrawInfo fixes a crash in PIXI's, so it is highly recommended you replace it with it. You have to put ExtendedBlockInteraction is the routines folder for the sprite to assemble.
Make sure to specify the extended sprite number of the iceball (extended/iceball.asm) from list.txt in the Ice Bro's ASM file (sprites/IceBro.asm)!
Another important note is that the block interaction routine the iceball uses is the same as the fire bro's, which triggers the 'MarioFireball' offset, which doesn't make sense. To fix this oddity, make a copy of 'ExtendedBlockInteraction.asm' and rename it to something like 'EBI_NoFireball'. Then, open your copy and comment out line 199. Finally, open 'iceball.asm' and change the '%ExtendedBlockInteraction()' to '%EBI_NoFireball()'.
Don't do that, it messes up interaction with some specific Map16 tiles for some reason.