In general, this is not directed at you, Redeemer, I don't get it why people think a good movement code can be achieved with a few lines of code in a few hours/ days.
Having now written my own accurate 3D collision systems from scratch in pure C, I understand perfectly how complex they can be. Nonetheless, I am extremely displeased with the way this system works. It is inaccurate and unreliable, and as stated, it is buggy as well. The enemies teleport not because I am moving them through any external method at all, but simply because I have added the GLIDE flag to my c_move call, which somehow causes them to "end up in unexpected places" just as the manual describes.
It was a Bug when it occured, you was able to shot
the enemy infinite without killing it.
I suppose it was a Bug in the way, the Hitpoints were taken.
Probably they were compared to zero rather >= zero, so that
the enemy health became negative values in rare occasions.
Or the trigger for the get-killed sequence was programmed to allow some situations to not be activated when enemyhealth was >= zero... Dont know the code, so dont really matter...
Anyway, in rare situations an (always different) enemy became immortal.
That is utterly impossible, and I will go so far as to say it is your imagination. I am aware of such simple yet fatal logical mistakes and made sure to implement safe logic in these potentially volatile situations. I have thoroughly tested and debugged my logic and your statement is both unfounded and untrue, as well as damaging to my reputation as a programmer.
... you do realize of course that the enemy begins flashing as it gets more damaged? You have to keep shooting it for it to die, you know.