Alright, spent some time today reworking the Leash mechanic (Know more now than I did last time I tried this

).
While it can still be done using python, it can also be set via
Promotion. This makes leashes a MUCH more accessible mechanic, and allows us to utilize it on a scale that would have otherwise required quite a bit of python.
So, how does it work? Quite simple, really. There's only one new xml tag, iLeashRange. This can be positive or negative, and stacks. The actual plot the unit is leashed to will be the plot it's on when it gains it's first Leash promotion; So long as it is already leashed, adding a new promotion will just affect range,
not the location of the leash. That aspect was rather uncooperative for a while, but it works now.
How do promotions interact with each other? They are 100% stackable. Only the first promotion will set the leash plot, and losing the last will remove it. This means that you can have a chain of promotions allowing a larger and larger leash centered on the same plot, or even have a promotion which serves to SHRINK the leash down.... Think I'll do something along those lines for Acheron if he's damaged.
What can we do with this? For one thing, expect Minotaurs to initially be leashed to a one-tile range around their dungeon... Once the unit is older, they gain a new promotion expanding the leash. Will have a few stages, and then will have the leash removed... Likely about 100 turns old at that point. Nice little buffer period where they only terrorize the immediate vicinity of their dungeon.
Another use: Mana Guardians. 1 tile leash, this way they can actually patrol the mana and actively guard it.
Edit: Don't have a screenshot of the display on the promotion, but it reads: "Leash Range : X". Only description I could come up with that is clear, and accomodates negative values.