I've been recently working on adding cliffs too! In the map editor, I've added a new object type (cliff). Its non-walkable and is tileset specific. The color of the object in the map editor is orange.
The xml for the object includes a new field called iscliff. If this is set to true, then the object is considered a cliff in-game.
Thats as far as I have coded. I think the way cliffs should work is the following:
* Land based units below a cliff should not have vision of on top of the cliff
* Land based units on top of the cliff, should have normal vision
* Projectile units on top of the cliff can attack units on the bottom of cliff
* Units on bottom of cliff cannot attack units on top of cliff unless they get vision from another source
* Flying units' vision will not be effected
* If a unit is ontop of the cliff or a flying unit has vision, then units of the same team below the cliff can attack up the cliff
The above is for vision specific events only. If we want to get fancy, then we can give either a bonus for units attacking ontop of the cliff, or a debuf for units attacking below the cliff.
Anyways, seems like titi already has what I have coded, so maybe we can work on this together ... or if you already have this done, then I don't have to do anything