Here's my take, totally convoluted, but I think it technically works:
Events: Alms, Bonfire
Kingdom: Villa, Torturer, King's Court, Lurker, Peasant, Watchtower, Lighthouse, Ambassador, Tribute (10th card can be anything)
Opponent has +1 Action token on Torturer (from Teacher) and plays 3 Torturers and a Lighthouse. You discard your entire hand, which was 5 Lurkers.
After drawing 5 cards, your opponent has exactly 2 cards in his deck: A Copper and an Estate.
(Their hand is 3 Torturers, Lighthouse, Ambassador. Teacher is on their Tavern mat.)
You have your +1 Card token on Villa, your +1 Coin token on Lurker, and +1 Buy token on King's Court. Teacher is on the Tavern mat.
The trash contains these cards: King's Court x5, Tribute x2, Watchtower, Ambassador, Villa, Lurker x5
Your deck contains these cards in this order (starting with the top): Watchtower, Villa, King's Court x5, Tribute x2, Watchtower, Ambassador, Villa, Lurker x5 (the Lurkers start in your discard pile).
There are 2 empty supply piles (King's Court and Lurker) so the game hasn't ended. There are 7 Villas in the Supply.
Start of 1st Buy phase:
Alms for Villa.
Return to Action phase:
Play Villa (Draw Watchtower)
You now have 3 Actions, 1 Coin, 1 Buy.
loop:
Watchtower (Draw Villa, King's Court x5; -1 action)
King's Court (-1 action, +1 buy)
-King's Court (+3 buys)
--King's Court (+3 buys)
---King's Court (+3 buys)
----King's Court (+3 buys)
-----Villa (draw Tribute x2, Watchtower; +6 actions, +3 coins, +3 buys)
-----Tribute (draw Ambassador, Villa, Lurker x4; +6 coins) [because opponent reveals Estate and Copper every time]
-----Tribute (draw Lurker; +6 coins)
----Lurker (gain Lurker x3; reveal Watchtower to topdeck; +4 actions, +3 coins)
----Lurker (gain Lurker x2, Villa; topdeck; +3 actions, +3 coins)
---Lurker (gain Ambassador, Watchtower, Tribute; topdeck; +3 actions, +3 coins)
---Lurker (gain Tribute, King's Court x2; topdeck; +3 actions, +3 coins)
--Lurker (gain King's Court x3; topdeck; +3 actions, +3 coins)
--Ambassador (return Villa to Supply, opponent doesn't gain it because of Lighthouse)
hand at this point: Watchtower
buy Bonfire (-3 coins; -1 buy), trash King's Court, trash King's Court
buy Bonfire (-3 coins; -1 buy), trash King's Court, trash King's Court
buy Bonfire (-3 coins; -1 buy), trash King's Court, trash Villa
buy Bonfire (-3 coins; -1 buy), trash Tribute, trash Tribute
buy Bonfire (-3 coins; -1 buy), trash Lurker, trash Lurker
buy Bonfire (-3 coins; -1 buy), trash Lurker, trash Lurker
buy Bonfire (-3 coins; -1 buy), trash Lurker, trash Watchtower
buy Bonfire (-3 coins; -1 buy), trash Ambassador
buy Villa (+1 action; -4 coins; -1 buy), topdeck it with Watchtower for no real reason but to keep the loop the same every time
ending hand: Watchtower
ending deck: Villa, King's Court x5, Tribute x2, Watchtower, Ambassador, Villa, Lurker x5 [i.e. same as deck at the start of the loop]
ending trash: King's Court x5, Tribute x2, Watchtower, Ambassador, Villa, Lurker x5 [i.e. same as trash at the start of the loop]
Each time you get +23 actions, +16 buys, +30 coins
But you have to spend 2 actions, 9 buys and 28 coins.
end net result of the loop: +21 actions, +7 buys, +2 coins
repeat loop