Skip to content

Possible error in handling Code 21 mission failure #445

@rnyoakum

Description

@rnyoakum

There is a single code 21 error case, able to occur during lunar LEM activities:

per: 5100
code: 21
val: 50
xtra: 0
fail: 98
text: RETROROCKET FAILURE, COMPLEX PROBLEM. REPAIR UNSUCCESSFUL, PERMANENT LOSS OF SEVERAL MANEUVERING JETS.

The FailEval function doesn't explicitly handle this code; it gets dumped into the default failure along with the error codes that aren't implemented. This means it's treated as a minor problem and the mission continues.

    case 1:
    case 8:
    case 10:
    case 11:
    case 14:
    case 21:
    case 27:
    case 28:
    case 29:
    default:
        FNote = 0;
        Mev[STEP].StepInfo = 50;

        if (Mev[STEP].fgoto == -1) {
            Mev[STEP].trace = 0x7F;
        } else {
            Mev[STEP].trace = STEP + 1;
        }

        break;  // nothing : continue steps

What makes this notable is that there are two error codes (0 and 20) which are "minor problem, mission continues" effects and they are explicitly handled.

    case 0:   // Failure has no effect on Mission
    case 20:   // don't want to test for crew experience
        FNote = 0;
        Mev[STEP].StepInfo = 50;

        if (Mev[STEP].fgoto == -1) {
            Mev[STEP].trace = 0x7F;
        } else {
            Mev[STEP].trace = STEP + 1;
        }

        break;

The error should either be explicitly handled along with codes 0 and 20, or it should have an effect defined. Thoughts?

Metadata

Metadata

Assignees

No one assigned

    Labels

    BugAn issue that causes a crash or an invalid or undesirable game state.

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions