I don't know enough about C++ to track this down any further.
Life taps seem to be assigning the targets HP to the caster as well. So everytime the lifetap changes the mob's HP the casters is changed to the same value, including 0HP aka death.
This seems to be located in:
Code:
void Client::Damage and void NPC::Damage
but I havn't figured out what code is the actual problem.