Shakespeare Programming Language, 123123 120 bytes
(Whitespace added for readability)
T.Ajax,.Puck,.Act I:.Scene I:.[Exeunt][Enter Ajax and Puck] Ajax:Listen tothy.Open heart. IsAm zeroI worse you?If solet usAct I. I make use of a trick to reuse Scene I. For some reason, it doesn’t error to keep taking input, so I do that. Then I just compare the input to zero, and loop if it’s greater. Saved 3 bytes by comparing to I instead of zero because characters initialize to zero—thanks Robin Ryder!