Könnte es sein, dass die Variablen "hp" und "mhp" beide ganzzahlig (Integer) sind?
In dem Fall ist es naheliegend, dass deine Division von zwei Integern zwangsläufig zu dem Ergebnis 0 führt falls der Zähler kleiner ist als der Nenner.
Versuch doch einmal die folgende Formel:
(b.mhp * 0.5) * (( (1.0 * a.hp) / a.mhp) + 0.5)