예제 #1
0
    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);
    }