protected void update(L2Character actor, L2Character target) { // update status once in 4 tries if (target == character && System.nanoTime() % 4 == 0) return; character = target; if (target == null) return; isMage = false; isBalanced = false; isArcher = false; isFighter = false; double multi = (double) target.getMAtk(null, null) / target.getPAtk(null); if (multi > 1.5) { isMage = true; } else if (multi > 0.8) { isBalanced = true; } else { L2Weapon weapon = target.getActiveWeaponItem(); if (weapon != null && weapon.getItemType().isBowType()) isArcher = true; else isFighter = true; } isCanceled = target.getBuffCount() < 4; isSlower = target.getRunSpeed() < actor.getRunSpeed() - 3; isMagicResistant = target.getMDef(null, null) * 1.2 > actor.getMAtk(null, null); }