Пример #1
0
  @Override
  public void onStart(BuffInfo info) {
    final L2Character target = info.getEffected();
    if ((target == null) || target.isDead() || target.isDoor()) {
      return;
    }

    double amount = 0;
    final double power = _power;
    final boolean full = (power == 100.0);

    amount = full ? target.getMaxMp() : (target.getMaxMp() * power) / 100.0;
    // Prevents overheal and negative amount
    amount = Math.max(Math.min(amount, target.getMaxRecoverableMp() - target.getCurrentMp()), 0);
    if (amount != 0) {
      target.setCurrentMp(amount + target.getCurrentMp());
    }
    SystemMessage sm;
    if (info.getEffector().getObjectId() != target.getObjectId()) {
      sm = SystemMessage.getSystemMessage(SystemMessageId.S2_MP_HAS_BEEN_RESTORED_BY_C1);
      sm.addCharName(info.getEffector());
    } else {
      sm = SystemMessage.getSystemMessage(SystemMessageId.S1_MP_HAS_BEEN_RESTORED);
    }
    sm.addInt((int) amount);
    target.sendPacket(sm);
  }