Marathon 2 (Macintosh)

The second entry of the Marathon series. The story is a continuation of the first game's, the engine was tweaked a little bit, and the game lacks any music aside from the opening screens.

General
The beta copy expiration message is still from Marathon.

Messages for Cheaters
Three terminals in the game display messages that can only be seen in-game through the use of third party cheating utilities. All three terminals display normal messages when accessed without cheating.



You cheater. Quit cheating and play for real!



This is the second message of the second terminal in the level "What About Bob?"

Atc &33c.3ckl2

That's cool how you just walked through that door, but I still won't let you leave.

The first message displays this on the second terminal in "Curiouser and Curiouser..."



Cheaters don't really win, and winners don't really cheat, Unless you're talking politics.

The fourth terminal in "Eat It, Vid Boi!" displays this as its first message.

Developer Message
A developer message exists in Marathon 2 for those using ResEdit. However, it is also shorter than the one from Marathon.

Here we are again, guys.

Nobody here has slept very much recently or eaten anything besides pizza or burritos in a few weeks, but we hope you like what we ended up with.

I don't have much to say, and I won't be fool enough to give away my email address again, but I figured everyone would be disappointed if there wasn't some inane little message here.

So.

Keep your heads up and your fingers off the Caps Lock key. See you at MacWorld.

Jason, Ryan, Greg, Mark and Rob

Map Messages
Several levels contain hidden messages in the map geometry that cannot be seen without using a level editor. One level has multiple hidden messages. The original capitalization of the text has been preserved.

Uncompiled Source Code
Two terminals in the game display pieces of its source code along with some dialogue. Although the source code has since been officially released, these messages were displayed in-game before then.

li5%!_data(*li!$ne_in ary, "endpoint &%d not in polygon &%d (fro &%d)", endpoint_index, polygon_iing the shipd. ndex, polyg't believe everython_index));nS_TRANSPARENT(line)) {polygon= get_polygon_data(*polygon_index); case _clockwise_bias Tycho is infiltrating the ship. Don't believe everything you read. /* loif (*polygon_indor (index=0;index< polygon->vertex_count && p polygon_index, polygTycho is infiltrat3on_index));nS_TRANSPARENT(line)) {polygon= get_polygon_data(*polygon_index); indexes[index]!=endpoint_ index;+'index);vasse tyc!=cool polygon->vertex_courcate our endpo n->adjacent_polygon_indexesuct line_data * line;struct wor ld_point2d *vertex;long cross_product;olygon-t, csprintf(tempo switch (bias){ You were inadvertently transported to an abandoned and unimportant section of the ship, but the Pfhor followed you anyway. Someone's after you, personally. One word; two syllables; rhymes with Psycho. dex!=NONE){strex]; /* loif (*polygon_indor (index=0; indexvertex_count && p The humans sustained heavy losses while you were gone and our defenses are falling apart, but the evacuation is not yet complete. li5%!_data(*li!$ne_in
 * line_E_I>endpoint_
 * polygon_index= polygo

The second terminal in the level "Sorry Don't Make It So" displays this message.

Yt-c469d02l;12 ary, "endpoint &%d not in polygon &%d (from &%d)", endpoint_index, polygon_iing the shipd. ndex, polyg't believe everython_index));nS_TRANSPARENT(line)) {polygon= get_polygon_data(*polygon_index); case _clockwise_bias Finish me. I won't be like Leela. Get out of here and find the human leader, Blake. /* loif (*polygon_indor (index=0;index< polygon->vertex_count && p polygon_index, polygTycho is infiltrat3on_index));nS_TRANSPARENT(line)) {polygon= get_polygon_data(*polygon_index) Yt-c469d02l;12

This message is displayed by the first terminal in "Begging For Mercy Makes Me Angry!"

struct line_data *line; struct world_point2d *vertex; long cross_product; line= get_line_data(*line_index); if (*polygon_index!=NONE && LINE_IS_TRANSPARENT(line)) {       polygon= get_polygon_data(*polygon_index); /* locate our endpoint in this polygon */ for (index=0;indexvertex_count && polygon->endpoint_indexes[index]!=endpoint_index;++index); vassert(index!=polygon->vertex_count, csprintf(temporary, "endpoint #%d not in polygon #%d (from #%d)", endpoint_index, polygon_index, polygon_index)); switch (bias) {               case _clockwise_bias: index= WRAP_HIGH(index, polygon->vertex_count-1); break; case _counterclockwise_bias: index= WRAP_LOW(index, polygon->vertex_count-1); break;
 * line_index= polygon->line_indexes[index];
 * side_index= polygon->side_indexes[index];
 * polygon_index= polygon->adjacent_polygon_indexes[index];

Compare the previous two messages with this section of "render.c" from the game's source code.