@Override public PilotingRollData checkGetUp(MoveStep step, EntityMovementType moveType) { PilotingRollData roll = super.checkGetUp(step, moveType); if (roll.getValue() != TargetRoll.CHECK_FALSE) { addStandingPenalties(roll); } return roll; }
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"); } } } } }
/** 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); }