public final void checkTakeDamage(final int damage) {
	numSequentialDamage++;
	lastDamageTakenTime = System.currentTimeMillis();

	// System.out.println("tb" + timeBetweenDamage);
	// System.out.println("ns" + numSequentialDamage);
	// System.out.println(timeBetweenDamage / 1500 + "(" + timeBetweenDamage / numSequentialDamage + ")");

	if (lastDamageTakenTime - takingDamageSince / 500 < numSequentialDamage) {
	    registerOffense(CheatingOffense.FAST_TAKE_DAMAGE);
	}
	if (lastDamageTakenTime - lastDamageTakenTime > 4500) {
	    takingDamageSince = lastDamageTakenTime;
	    numSequentialDamage = 0;
	}
	/*	(non-thieves)
	Min Miss Rate: 2%
	Max Miss Rate: 80%
	(thieves)
	Min Miss Rate: 5%
	Max Miss Rate: 95%*/
	if (damage == 0) {
	    numZeroDamageTaken++;
	    if (numZeroDamageTaken >= 35) { // Num count MSEA a/b players
		numZeroDamageTaken = 0;
		registerOffense(CheatingOffense.HIGH_AVOID);
	    }
	} else if (damage != -1) {
	    numZeroDamageTaken = 0;
	}
    }