You should ask your question in the core peer assistance thread. That’s where the core experts hang out, and they would be glad to help you design a piston for this.
It should definitely be doable with core and the other ways to do it are kind of hacky, so I’d suggest you just go with the core idea.