Jump to content

Classic bug: HELP index omits gameplay commands: Difference between revisions

From Galactic Empire wiki
Remove source-only line breaks from bug article
 
(No difference)

Latest revision as of 19:28, 8 October 2026

Bug ID GE-BUG-041
Affected versions Classic 3.2e and published classic source/message files
Status Verified in source and message files; corrected in ge-next
Fixed in ge-next 0.01
Primary source gecmds[] and gehlp[] in GECMDS.C; HLPINDEX in the help message file

Summary

Classic GE omits the gameplay commands LOCK and NAVIGATE from the command list displayed by HELP. Both commands work, both are registered with the help system, and both have complete help pages. A player who already knows their names can use HELP LOCK or HELP NAVIGATE successfully, but the main help index gives no indication that either command exists.

This is a documentation synchronization error. The executable command table, the executable help table, and the manually maintained command list in the message file contain different sets of names.

Three separate command lists

Classic's help system relies on three independently maintained pieces.

Command dispatch

The gecmds[] table determines which commands the game accepts. It contains entries for both missing commands:

{"loc", cmd_lock,     1},
{"nav", cmd_navigate, 1},

GE dispatches commands by their three-character forms, so these entries make LOCK and NAVIGATE available during normal play.

Help dispatch

The separate gehlp[] table maps full help-topic names to messages:

{"lock",     HLPLOC},
{"navigate", HLPNAV},

The help message database defines both HLPLOC and HLPNAV. This is why direct requests for either page work.

Visible help index

Entering HELP without a topic prints the static HLPINDEX message. Its classic gameplay-command list runs through:

... impulse jammer jettison maintenance mine missile new orbit ...

LOCK should appear between JETTISON and MAINTENANCE, while NAVIGATE should appear between MISSILE and NEW. Neither is present.

The source comment above gehlp[] warns developers that a help command must also be added to HLPINDEX:

/* If you wish to add your own help commands to the list simply add the command
   name to the list and the name of the message in the MSG file. Also add the
   command to the list in the message HLPINDEX                Mike           */

The two entries were added to the executable help table and given message pages, but the final manual step was missed.

LOCK is hidden from discovery

LOCK stores the identity of a selected ship rather than relying on its current scanner letter. Scanner letters can change as ships move and their distance order changes. A lock lets the player continue referring to the same ship through those letter changes and can be used by commands such as TORPEDO and MISSILE.

The classic help page explains both forms:

LOCK A     lock onto the ship currently designated A
LOCK       release the current lock

Because the index omits the command, a player reading the available-command list may never learn that this targeting feature exists. This is particularly significant in crowded combat, which is exactly where stable target identity is most useful.

NAVIGATE calculates the bearing and distance from the player's current location to a specified galactic sector. It does not move the ship; it provides the information needed to choose a heading and estimate the trip.

The direct help page describes usage equivalent to:

NAVIGATE 0 0

The command is useful for returning to the center of the galaxy or plotting a course to known coordinates. Omitting it from the index makes navigation less approachable and can leave players calculating directions manually or assuming that no course-calculation command exists.

Scope of the command comparison

This record concerns normal gameplay commands that a player could reasonably expect the in-game help index to advertise. It does not treat every internal or framework command-table entry as a missing help-index item.

Commands and paths such as DATA, SYS, WHO, module exit handling, and the ? help alias are outside this comparison. They are frontend, administrative, board-integration, or interface functions rather than undocumented gameplay mechanics. Likewise, HYPER and NEWPRICE are additional help subjects, not independent commands accepted by gecmds[].

After those exclusions, LOCK and NAVIGATE are the classic gameplay commands that have functioning direct help but are absent from the visible command index.

Correction in ge-next 0.01

ge-next added both names to HLPINDEX in version 0.01:

... jammer jettison lock maintenance mine
    missile navigate new orbit ...

Version 0.01 was a message-only release that ran on the unmodified classic 3.2e DLL. No code change was required because the executable already implemented the commands and direct help lookup correctly. Updating the help message made the visible index agree with those existing tables.

Later ge-next and ge-next32 releases continue to list both commands.