Exemplo n.º 1
0
  private void hit(
      Subject targetSubject, Attack attack, double damageModifier, boolean criticalHit) {
    double typeModifier = attack.getAttackModifier(targetSubject);
    double STAB = 1;
    if (attack.getType().is(type.getType())) {
      STAB = 1.5;
    }
    double randNumber = dice.nextInt(151) / 1000 + 0.85;
    boolean superEffective = false;
    boolean notEffective = false;
    if (typeModifier == 2.0) {
      superEffective = true;
    } else if (typeModifier == 0.5) {
      notEffective = true;
    }
    int offence = 1;
    int defence = 1;

    offence = (attack.isPracticalAttack()) ? getPracticalOffence() : getTheoreticalOffence();
    defence =
        (attack.isPracticalDefence())
            ? targetSubject.getPracticalDefence()
            : targetSubject.getTheoreticalDefence();

    int damage =
        (int)
            Math.floor(
                ((2 * level + 10)
                            * attack.getDamage()
                            * offence
                            * damageAndHpMultiplier
                            / 250
                            / defence
                        + 2)
                    * damageModifier
                    * randNumber
                    * STAB
                    * typeModifier);

    String combatText =
        String.format("%s bruker %s! (%d skade)", nickname, attack.getName(), damage);

    if (criticalHit) {
      combatText += " (kritisk treff!)";
    }
    if (superEffective) {
      combatText += " (kjempeeffektivt!)";
    } else if (notEffective) {
      combatText += " (ikke så veldig effektivt!)";
    }

    DisplayText.add(nickname, combatText);

    targetSubject.takeDamage(damage);
  }
Exemplo n.º 2
0
  public void drawInfo(Graphics g, Image background) {
    g.drawImage(background, 48, 48, null);
    drawBig(g, new Vector(118, 140));
    String nameString =
        (getNickName().equals(getName()))
            ? getName()
            : String.format("%s (%s)", getNickName(), getName());
    g.drawString(nameString, 206, 136);
    g.drawString("Type: " + getType(), 206, 166);
    g.drawString("Level: " + getLevel(), 206, 186);
    g.drawString(String.format("Helse: %d / %d", getHealth(), getTotalHealth()), 206, 206);
    g.drawString(
        String.format("Studiepoeng: %d / %d", getExperience(), getNextLevelExperience()), 150, 255);
    g.drawString("Fart: " + getSpeed(), 150, 275);
    g.drawString("Treffsikkerhet: " + getAccuracy(), 150, 295);
    g.drawString("Unnvikelsesevne: " + getEvasion(), 150, 315);
    g.drawString("Praktisk styrke: " + getPracticalOffence(), 150, 335);
    g.drawString("Teoretisk styrke: " + getTheoreticalOffence(), 150, 355);
    g.drawString("Praktisk forsvar: " + getPracticalDefence(), 150, 375);
    g.drawString("Teoretisk forsvar: " + getTheoreticalDefence(), 150, 395);

    for (int i = 0; i < attacks.size(); i++) {
      int baseX = 0;
      int baseY = 0;

      switch (i) {
        case 0:
          baseX = 337;
          baseY = 150;
          break;
        case 1:
          baseX = 337;
          baseY = 288;
          break;
        case 2:
          baseX = 432;
          baseY = 169;
          break;
        case 3:
          baseX = 432;
          baseY = 302;
          break;
      }
      Attack attack = attacks.get(i);
      g.drawLine(baseX - 3, baseY + 2, baseX + 83, baseY + 2);
      g.drawString(attack.getName(), baseX + 2, baseY - 3);
      g.drawString("Skade: " + attack.getDamage(), baseX, baseY + 20);
      g.drawString((attack.isPracticalAttack()) ? "Praktisk" : "Teoretisk", baseX, baseY + 40);
      g.drawString("Treffevne: " + attack.getAccuracyBonus(), baseX, baseY + 60);
      g.drawString("" + attack.getType(), baseX, baseY + 80);
    }
  }
Exemplo n.º 3
0
 public void attack(Subject targetSubject, int attackNumber) {
   Attack attack = attacks.get(attackNumber);
   int hitModifier =
       dice.nextInt(100) + attack.getAccuracyBonus() + getAccuracy() - targetSubject.getEvasion();
   if (hitModifier >= 95) {
     hit(targetSubject, attack, 2, true);
   } else if (hitModifier >= 15) {
     hit(targetSubject, attack, 1, false);
   } else {
     DisplayText.add(
         nickname, String.format("%s brukte %s, men bommet", nickname, attack.getName()));
   }
 }