Пример #1
0
  @Override
  public PilotingRollData checkGetUp(MoveStep step, EntityMovementType moveType) {

    PilotingRollData roll = super.checkGetUp(step, moveType);

    if (roll.getValue() != TargetRoll.CHECK_FALSE) {
      addStandingPenalties(roll);
    }

    return roll;
  }
Пример #2
0
  public void addStandingPenalties(PilotingRollData roll) {

    if (hasQuirk(OptionsConstants.QUIRK_NEG_NO_ARMS)) {
      roll.addModifier(2, "no/minimal arms");
      return;
    }

    if (game.getOptions().booleanOption(OptionsConstants.ADVGRNDMOV_TACOPS_ATTEMPTING_STAND)) {
      int[] locsToCheck = new int[2];

      locsToCheck[0] = Mech.LOC_RARM;
      locsToCheck[1] = Mech.LOC_LARM;

      for (int i = 0; i < locsToCheck.length; i++) {
        int loc = locsToCheck[i];
        if (isLocationBad(loc)) {
          roll.addModifier(2, getLocationName(loc) + " destroyed");
        } else {
          // check for damaged hip actuators
          if (!hasWorkingSystem(Mech.ACTUATOR_HAND, loc)) {
            roll.addModifier(1, getLocationName(loc) + " hand Actuator missing/destroyed");
          } else if (!hasWorkingSystem(Mech.ACTUATOR_LOWER_ARM, loc)) {
            roll.addModifier(1, getLocationName(loc) + " lower Actuator missing/destroyed");
          } else if (!hasWorkingSystem(Mech.ACTUATOR_UPPER_ARM, loc)) {
            roll.addModifier(1, getLocationName(loc) + " upper ctuator missing/destroyed");
          } else if (!hasWorkingSystem(Mech.ACTUATOR_SHOULDER, loc)) {
            roll.addModifier(1, getLocationName(loc) + " shoulder Actuator missing/destroyed");
          }
        }
      }
    }
  }
Пример #3
0
  /** Add in any piloting skill mods */
  @Override
  public PilotingRollData addEntityBonuses(PilotingRollData roll) {
    int[] locsToCheck = new int[2];

    locsToCheck[0] = Mech.LOC_RLEG;
    locsToCheck[1] = Mech.LOC_LLEG;

    if (hasFunctionalLegAES()) {
      roll.addModifier(-2, "AES bonus");
    }

    for (int i = 0; i < locsToCheck.length; i++) {
      int loc = locsToCheck[i];

      if (isLocationBad(loc)) {
        roll.addModifier(5, getLocationName(loc) + " destroyed");
      } else {
        // check for damaged hip actuators
        if (getBadCriticals(CriticalSlot.TYPE_SYSTEM, Mech.ACTUATOR_HIP, loc) > 0) {
          roll.addModifier(2, getLocationName(loc) + " Hip Actuator destroyed");
          if (!game.getOptions().booleanOption(OptionsConstants.ADVGRNDMOV_TACOPS_LEG_DAMAGE)) {
            continue;
          }
        }
        // upper leg actuators?
        if (getBadCriticals(CriticalSlot.TYPE_SYSTEM, Mech.ACTUATOR_UPPER_LEG, loc) > 0) {
          roll.addModifier(1, getLocationName(loc) + " Upper Leg Actuator destroyed");
        }
        // lower leg actuators?
        if (getBadCriticals(CriticalSlot.TYPE_SYSTEM, Mech.ACTUATOR_LOWER_LEG, loc) > 0) {
          roll.addModifier(1, getLocationName(loc) + " Lower Leg Actuator destroyed");
        }
        // foot actuators?
        if (getBadCriticals(CriticalSlot.TYPE_SYSTEM, Mech.ACTUATOR_FOOT, loc) > 0) {
          roll.addModifier(1, getLocationName(loc) + " Foot Actuator destroyed");
        }
      }
    }

    return super.addEntityBonuses(roll);
  }