Letos will most likely start using Dark Magic at the beginning of the battle, which means that the Spellcasting he has developed won't work for some time (that is, your friend's build isn't ideal, considering the endgame - level 20).
Try to delay the decisive battle as much as possible.
Perhaps a good move would be to develop Eternal Light, as well as Dwarven Luck.
You don't have to be afraid of the ranged units at all, since Warlocks don't have good ranged units (compared, for example, to the High Elves). You can try to destroy the ammunition cart, and the Witches will run out of shots.
You need to look for Crystals and Mercury first, otherwise you have to sacrifice someone in the early stages (for me, it's the Berserkers).
And finally, the Dwarves can really win!
My main advice is to develop Defense to the last.
The trick is that with the Resurrection Rune, if you have 2 Harpooners left, they can use this rune to resurrect so many people that even the Necromancers would be envious (and without losing the hero's turn), so the Dark Elves should spend their turn to finish off the miserable remnants of the Harpooners. They attack them, and are surprised, because there is still 1 Harpooner left, who has to be hit again. Otherwise, they will be resurrected, and a lot of turns will be wasted.
It turned out a bit chaotic, but I have to go