To be more specific:
onUnitMove() is definitely the function you need in this case. For your mod you want your own custom CvEventManager.py file and change that function.
Inside of there right now all it does is unpack the arguments passed into the function into things we can understand (like pPlot and pUnit) and prints out the fact that the unit moved.
pPlot and pUnit are objects which have their own functions that can be called. To identify the plot (aka Tile or Square, though "Plot" is the correct term) you can get the X and Y coordinates by calling pPlot.getX() and pPlot.getY(). You could say something like:
Code:
if (pPlot.getX() == 10 and pPlot.getY() == 5):
blah
"blah" being the code you want to execute if the plot matches what you're looking for. In this case we want to give the unit experience, which is pretty easy to do. We can just call the changeExperience() function on the pUnit object we have.
Code:
if (pPlot.getX() == 10 and pPlot.getY() == 5):
pUnit.changeExperience(10,100)
I'm not exactly sure on what all the arguments are but I'm fairly confident the first one is how much experience you're adding (or subtracting, in the case of a negative number) to the unit and the second is the MAXIMUM value it can have. I believe this is used when fighting Animal and Barbarian units since you can get a max of 5 and 10 against them, respectively.
And that's it. Only a two-line change to get the XP mod working.