Esempio n. 1
0
  @Override
  public void hit(final Mob attacker, final Mob victim) {
    super.hit(attacker, victim);
    // System.out.println("In hit ytmejkot");

    if (!attacker.isNPC()) {
      return; // this should be an NPC!
    }

    NPC npc = (NPC) attacker;

    CombatStyle style = CombatStyle.MELEE;

    int maxHit;
    int damage;
    int randomHit;
    int hitDelay;
    boolean blockAnimation;
    final int hit;

    switch (style) {
      default:
      case MELEE:
        Animation anim = attacker.getAttackAnimation();
        attacker.playAnimation(anim);

        hitDelay = 1;
        blockAnimation = true;
        maxHit = npc.getCombatDefinition().getMaxHit();
        damage =
            damage(
                maxHit,
                attacker,
                victim,
                attacker.getCombatState().getAttackType(),
                Skills.ATTACK,
                Prayers.PROTECT_FROM_MELEE,
                false,
                false);
        randomHit = random.nextInt(damage < 1 ? 1 : damage + 1);
        if (randomHit > victim.getSkills().getLevel(Skills.HITPOINTS)) {
          randomHit = victim.getSkills().getLevel(Skills.HITPOINTS);
        }
        hit = randomHit;
        break;
    }

    attacker.getCombatState().setAttackDelay(5);
    attacker.getCombatState().setSpellDelay(5);

    World.getWorld()
        .submit(
            new Tickable(hitDelay) {
              @Override
              public void execute() {
                victim.inflictDamage(new Hit(hit), attacker);
                smite(attacker, victim, hit);
                recoil(attacker, victim, hit);
                this.stop();
              }
            });
    vengeance(attacker, victim, hit, 1);

    victim.getActiveCombatAction().defend(attacker, victim, blockAnimation);
  }