There is a LOT more to damage then what you have listed. You need to follow the logic. If you notice we have a CAP of 100 listed in damage().
This is direct from damage()
/* Set the maximum damage per round and subtract the hit points */
dam = MAX(MIN(dam, 100), 0);
GET_HIT(victim) -= dam;
This is not including what is in void hit() at the bottom of that procedure.