Looking at this again, the routine you're calling checks if it's the enemy's phase, instead of the ally's. So, let's rework this a little bit.
AREA 0x10 Punishment [10,20] [12,20] // You used 0x3D before, but I've got a feeling that's too large a number.
IFAT 0x01 0x7A2F1
// If we're in here, that means it's the enemy phase.
// We need to reset the event so that when a player unit eventually gets here, the event will trigger
// If we're in here, it should be the player phase.
UNIT 0x5B 0x23 0x00 Level(15,Enemy,True) [16,20] [15,20] [Bolting, Elfire]