
Iskhodnyy_kod_Doom
.pdfif (scale)
{
l.b.x = FixedMul(scale, l.b.x); l.b.y = FixedMul(scale, l.b.y);
}
if (angle)
AM_rotate(&l.b.x, &l.b.y, angle);
l.b.x += x; |
|
l.b.y += y; |
|
AM_drawMline(&l, color); |
|
} |
|
} |
|
void AM_drawPlayers(void) |
|
{ |
|
int |
i; |
player_t* |
p; |
static int |
their_colors[] = { GREENS, GRAYS, BROWNS, REDS }; |
int |
their_color = -1; |
int |
color; |
if (!netgame)
{
if (cheating) AM_drawLineCharacter
(cheat_player_arrow, NUMCHEATPLYRLINES, 0,
plr->mo->angle, WHITE, plr->mo->x, plr->mo->y);
else
AM_drawLineCharacter
(player_arrow, NUMPLYRLINES, 0, plr->mo->angle, WHITE, plr->mo->x, plr->mo->y);
return;
}
for (i=0;i<MAXPLAYERS;i++)
{
their_color++;
p = &players[i];
if ( (deathmatch && !singledemo) && p != plr) continue;
if (!playeringame[i]) continue;
if (p->powers[pw_invisibility]) color = 246; // *close* to black
else
color = their_colors[their_color];
AM_drawLineCharacter
(player_arrow, NUMPLYRLINES, 0, p->mo->angle,
color, p->mo->x, p->mo->y);
}
}
void AM_drawThings
( int colors,
int colorrange)
41
{
int |
i; |
mobj_t* |
t; |
for (i=0;i<numsectors;i++)
{
t = sectors[i].thinglist; while (t)
{
AM_drawLineCharacter
(thintriangle_guy, NUMTHINTRIANGLEGUYLINES,
16<<FRACBITS, t->angle, colors+lightlev, t->x, t->y);
t = t->snext;
}
}
}
void AM_drawMarks(void)
{
int i, fx, fy, w, h;
for (i=0;i<AM_NUMMARKPOINTS;i++)
{
if (markpoints[i].x != -1)
{
//w = SHORT(marknums[i]->width);
//h = SHORT(marknums[i]->height);
w |
= 5; |
// because something’s wrong with the wad, |
i |
guess |
||
h |
= 6; |
// |
because something’s wrong with the wad, |
i |
guess |
|
fx = CXMTOF(markpoints[i].x); |
|
|
||||
fy |
= CYMTOF(markpoints[i].y); |
|
|
|||
if |
(fx |
>= |
f_x && fx <= f_w - w && fy >= f_y && fy |
<= f_h - h) |
V_DrawPatch(fx, fy, FB, marknums[i]);
}
}
}
void AM_drawCrosshair(int color)
{
fb[(f_w*(f_h+1))/2] = color; // single point for now
}
void AM_Drawer (void)
{
if (!automapactive) return;
AM_clearFB(BACKGROUND); if (grid)
AM_drawGrid(GRIDCOLORS);
AM_drawWalls();
AM_drawPlayers();
if (cheating==2)
AM_drawThings(THINGCOLORS, THINGRANGE);
AM_drawCrosshair(XHAIRCOLORS);
AM_drawMarks();
V_MarkRect(f_x, f_y, f_w, f_h);
}
42

2.2 am map.h
// Emacs style mode select -*- C++ -*- //-----------------------------------------------------------------------------
//
//$Id:$
//Copyright (C) 1993-1996 by id Software, Inc.
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//
//DESCRIPTION:
//AutoMap module.
//-----------------------------------------------------------------------------
#ifndef |
__AMMAP_H__ |
#define |
__AMMAP_H__ |
// Used |
by ST StatusBar stuff. |
#define |
AM_MSGHEADER ((’a’<<24)+(’m’<<16)) |
#define |
AM_MSGENTERED (AM_MSGHEADER | (’e’<<8)) |
#define |
AM_MSGEXITED (AM_MSGHEADER | (’x’<<8)) |
// Called by main loop. |
|
boolean |
AM_Responder (event_t* ev); |
//Called by main loop. void AM_Ticker (void);
//Called by main loop,
//called instead of view drawer if automap active. void AM_Drawer (void);
//Called to force the automap to quit
//if the level is completed while it is up.
void AM_Stop (void);
#endif //-----------------------------------------------------------------------------
//
// $Log:$
//
//-----------------------------------------------------------------------------
3Initialisation/general code
3.1d englsh.h
// Emacs style mode select -*- C++ -*- //-----------------------------------------------------------------------------
//
// $Id:$
//
43
//Copyright (C) 1993-1996 by id Software, Inc.
//This program is free software; you can redistribute it and/or
//modify it under the terms of the GNU General Public License
//as published by the Free Software Foundation; either version 2
//of the License, or (at your option) any later version.
//
//This program is distributed in the hope that it will be useful,
//but WITHOUT ANY WARRANTY; without even the implied warranty of
//MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
//GNU General Public License for more details.
//
//DESCRIPTION:
//Printed strings for translation.
//English language support (default).
//-----------------------------------------------------------------------------
#ifndef __D_ENGLSH__ #define __D_ENGLSH__
// |
|
|
// |
Printed strings for translation |
|
// |
|
|
// |
|
|
// D_Main.C |
|
|
// |
|
|
#define D_DEVSTR |
"Development mode ON.\n" |
|
#define D_CDROM |
"CD-ROM Version: default.cfg from c:\\doomdata\n" |
|
// |
|
|
// |
M_Menu.C |
|
// |
|
|
#define PRESSKEY |
"press a key." |
|
#define PRESSYN |
"press y or n." |
|
#define QUITMSG |
"are you sure you want to\nquit this great game?" |
|
#define LOADNET |
"you can’t do load while in a net game!\n\n"PRESSKEY |
|
#define QLOADNET |
"you can’t quickload during a netgame!\n\n"PRESSKEY |
|
#define QSAVESPOT |
"you haven’t picked a quicksave slot yet!\n\n"PRESSKEY |
|
#define SAVEDEAD |
"you can’t save if you aren’t playing!\n\n"PRESSKEY |
|
#define QSPROMPT |
"quicksave over your game named\n\n’%s’?\n\n"PRESSYN |
|
#define QLPROMPT |
"do you want to quickload the game named\n\n’%s’?\n\n"PRESSYN |
|
#define NEWGAME |
\ |
|
"you can’t start a new game\n"\ |
||
"while in a network game.\n\n"PRESSKEY |
||
#define NIGHTMARE |
\ |
|
"are you sure? this skill level\n"\ |
||
"isn’t even remotely fair.\n\n"PRESSYN |
||
#define SWSTRING |
\ |
"this is the shareware version of doom.\n\n"\
"you need to order the entire trilogy.\n\n"PRESSKEY
#define MSGOFF |
"Messages OFF" |
|
#define MSGON |
"Messages ON" |
|
#define NETEND |
"you can’t end |
a netgame!\n\n"PRESSKEY |
#define ENDGAME |
"are you sure |
you want to end the game?\n\n"PRESSYN |
#define DOSY |
"(press y to quit)" |
|
#define DETAILHI |
"High detail" |
|
#define DETAILLO |
"Low detail" |
|
44
#define GAMMALVL0 #define GAMMALVL1 #define GAMMALVL2 #define GAMMALVL3 #define GAMMALVL4 #define EMPTYSTRING
//
// P_inter.C
//
#define GOTARMOR #define GOTMEGA #define GOTHTHBONUS #define GOTARMBONUS #define GOTSTIM #define GOTMEDINEED #define GOTMEDIKIT #define GOTSUPER
#define GOTBLUECARD #define GOTYELWCARD #define GOTREDCARD #define GOTBLUESKUL #define GOTYELWSKUL #define GOTREDSKULL
#define GOTINVUL #define GOTBERSERK #define GOTINVIS #define GOTSUIT #define GOTMAP #define GOTVISOR #define GOTMSPHERE
#define GOTCLIP #define GOTCLIPBOX #define GOTROCKET #define GOTROCKBOX #define GOTCELL #define GOTCELLBOX #define GOTSHELLS #define GOTSHELLBOX #define GOTBACKPACK
#define GOTBFG9000 #define GOTCHAINGUN #define GOTCHAINSAW #define GOTLAUNCHER #define GOTPLASMA #define GOTSHOTGUN #define GOTSHOTGUN2
//
// P_Doors.C
//
#define PD_BLUEO #define PD_REDO #define PD_YELLOWO #define PD_BLUEK #define PD_REDK #define PD_YELLOWK
//
// G_game.C
//
"Gamma correction OFF" "Gamma correction level 1" "Gamma correction level 2" "Gamma correction level 3" "Gamma correction level 4"
"empty slot"
"Picked up the armor." "Picked up the MegaArmor!"
"Picked up a health bonus." "Picked up an armor bonus."
"Picked up a stimpack."
"Picked up a medikit that you REALLY need!" "Picked up a medikit."
"Supercharge!"
"Picked up a blue keycard." "Picked up a yellow keycard."
"Picked up a red keycard." "Picked up a blue skull key." "Picked up a yellow skull key." "Picked up a red skull key."
"Invulnerability!"
"Berserk!"
"Partial Invisibility"
"Radiation Shielding Suit"
"Computer Area Map"
"Light Amplification Visor"
"MegaSphere!"
"Picked up a clip."
"Picked up a box of bullets." "Picked up a rocket."
"Picked up a box of rockets." "Picked up an energy cell."
"Picked up an energy cell pack." "Picked up 4 shotgun shells."
"Picked up a box of shotgun shells." "Picked up a backpack full of ammo!"
"You got the BFG9000! Oh, yes." "You got the chaingun!"
"A chainsaw! Find some meat!" "You got the rocket launcher!"
"You got the plasma gun!" "You got the shotgun!"
"You got the super shotgun!"
"You need a blue key to activate this object" "You need a red key to activate this object"
"You need a yellow key to activate this object" "You need a blue key to open this door"
"You need a red key to open this door"
"You need a yellow key to open this door"
45
#define GGSAVED
//
// HU_stuff.C
//
#define HUSTR_MSGU
#define HUSTR_E1M1 #define HUSTR_E1M2 #define HUSTR_E1M3 #define HUSTR_E1M4 #define HUSTR_E1M5 #define HUSTR_E1M6 #define HUSTR_E1M7 #define HUSTR_E1M8 #define HUSTR_E1M9
#define HUSTR_E2M1 #define HUSTR_E2M2 #define HUSTR_E2M3 #define HUSTR_E2M4 #define HUSTR_E2M5 #define HUSTR_E2M6 #define HUSTR_E2M7 #define HUSTR_E2M8 #define HUSTR_E2M9
#define HUSTR_E3M1 #define HUSTR_E3M2 #define HUSTR_E3M3 #define HUSTR_E3M4 #define HUSTR_E3M5 #define HUSTR_E3M6 #define HUSTR_E3M7 #define HUSTR_E3M8 #define HUSTR_E3M9
#define HUSTR_E4M1 #define HUSTR_E4M2 #define HUSTR_E4M3 #define HUSTR_E4M4 #define HUSTR_E4M5 #define HUSTR_E4M6 #define HUSTR_E4M7 #define HUSTR_E4M8 #define HUSTR_E4M9
#define HUSTR_1 #define HUSTR_2 #define HUSTR_3 #define HUSTR_4 #define HUSTR_5 #define HUSTR_6 #define HUSTR_7 #define HUSTR_8 #define HUSTR_9 #define HUSTR_10 #define HUSTR_11
#define HUSTR_12 #define HUSTR_13 #define HUSTR_14 #define HUSTR_15 #define HUSTR_16 #define HUSTR_17
"game saved."
"[Message unsent]"
"E1M1: Hangar"
"E1M2: Nuclear Plant"
"E1M3: Toxin Refinery"
"E1M4: Command Control"
"E1M5: Phobos Lab"
"E1M6: Central Processing"
"E1M7: Computer Station"
"E1M8: Phobos Anomaly"
"E1M9: Military Base"
"E2M1: Deimos Anomaly"
"E2M2: Containment Area"
"E2M3: Refinery"
"E2M4: Deimos Lab"
"E2M5: Command Center"
"E2M6: Halls of the Damned"
"E2M7: Spawning Vats"
"E2M8: Tower of Babel"
"E2M9: Fortress of Mystery"
"E3M1: Hell Keep"
"E3M2: Slough of Despair"
"E3M3: Pandemonium"
"E3M4: House of Pain"
"E3M5: Unholy Cathedral"
"E3M6: Mt. Erebus"
"E3M7: Limbo"
"E3M8: Dis"
"E3M9: Warrens"
"E4M1: Hell Beneath"
"E4M2: Perfect Hatred"
"E4M3: Sever The Wicked"
"E4M4: Unruly Evil"
"E4M5: They Will Repent"
"E4M6: Against Thee Wickedly"
"E4M7: And Hell Followed"
"E4M8: Unto The Cruel"
"E4M9: Fear"
"level 1: entryway" "level 2: underhalls" "level 3: the gantlet" "level 4: the focus"
"level 5: the waste tunnels" "level 6: the crusher" "level 7: dead simple" "level 8: tricks and traps" "level 9: the pit"
"level 10: refueling base" "level 11: ’o’ of destruction!"
"level 12: the factory" "level 13: downtown"
"level 14: the inmost dens" "level 15: industrial zone" "level 16: suburbs"
"level 17: tenements"
46
#define HUSTR_18 #define HUSTR_19 #define HUSTR_20
#define HUSTR_21 #define HUSTR_22 #define HUSTR_23 #define HUSTR_24 #define HUSTR_25 #define HUSTR_26 #define HUSTR_27 #define HUSTR_28 #define HUSTR_29 #define HUSTR_30
#define HUSTR_31 #define HUSTR_32
#define PHUSTR_1 #define PHUSTR_2 #define PHUSTR_3 #define PHUSTR_4 #define PHUSTR_5 #define PHUSTR_6 #define PHUSTR_7 #define PHUSTR_8 #define PHUSTR_9 #define PHUSTR_10 #define PHUSTR_11
#define PHUSTR_12 #define PHUSTR_13 #define PHUSTR_14 #define PHUSTR_15 #define PHUSTR_16 #define PHUSTR_17 #define PHUSTR_18 #define PHUSTR_19 #define PHUSTR_20
#define PHUSTR_21 #define PHUSTR_22 #define PHUSTR_23 #define PHUSTR_24 #define PHUSTR_25 #define PHUSTR_26 #define PHUSTR_27 #define PHUSTR_28 #define PHUSTR_29 #define PHUSTR_30
#define PHUSTR_31 #define PHUSTR_32
#define THUSTR_1 #define THUSTR_2 #define THUSTR_3 #define THUSTR_4 #define THUSTR_5 #define THUSTR_6 #define THUSTR_7 #define THUSTR_8 #define THUSTR_9 #define THUSTR_10 #define THUSTR_11
"level 18: the courtyard" "level 19: the citadel" "level 20: gotcha!"
"level 21: nirvana" "level 22: the catacombs"
"level 23: barrels o’ fun" "level 24: the chasm" "level 25: bloodfalls"
"level 26: the abandoned mines" "level 27: monster condo" "level 28: the spirit world" "level 29: the living end" "level 30: icon of sin"
"level 31: wolfenstein" "level 32: grosse"
"level 1: congo"
"level 2: well of souls" "level 3: aztec"
"level 4: caged" "level 5: ghost town"
"level 6: baron’s lair" "level 7: caughtyard" "level 8: realm"
"level 9: abattoire" "level 10: onslaught" "level 11: hunted"
"level 12: speed" "level 13: the crypt" "level 14: genesis" "level 15: the twilight" "level 16: the omen" "level 17: compound" "level 18: neurosphere" "level 19: nme"
"level 20: the death domain"
"level 21: slayer"
"level 22: impossible mission" "level 23: tombstone"
"level 24: the final frontier" "level 25: the temple of darkness" "level 26: bunker"
"level 27: anti-christ" "level 28: the sewers" "level 29: odyssey of noises"
"level 30: the gateway of hell"
"level 31: cyberden" "level 32: go 2 it"
"level 1: system control" "level 2: human bbq" "level 3: power control" "level 4: wormhole" "level 5: hanger"
"level 6: open season" "level 7: prison" "level 8: metal" "level 9: stronghold"
"level 10: redemption" "level 11: storage facility"
47
#define THUSTR_12 |
"level 12: crater" |
#define THUSTR_13 |
"level 13: nukage processing" |
#define THUSTR_14 |
"level 14: steel works" |
#define THUSTR_15 |
"level 15: dead zone" |
#define THUSTR_16 |
"level 16: deepest reaches" |
#define THUSTR_17 |
"level 17: processing area" |
#define THUSTR_18 |
"level 18: mill" |
#define THUSTR_19 |
"level 19: shipping/respawning" |
#define THUSTR_20 |
"level 20: central processing" |
#define THUSTR_21 |
"level 21: administration center" |
#define THUSTR_22 |
"level 22: habitat" |
#define THUSTR_23 |
"level 23: lunar mining project" |
#define THUSTR_24 |
"level 24: quarry" |
#define THUSTR_25 |
"level 25: baron’s den" |
#define THUSTR_26 |
"level 26: ballistyx" |
#define THUSTR_27 |
"level 27: mount pain" |
#define THUSTR_28 |
"level 28: heck" |
#define THUSTR_29 |
"level 29: river styx" |
#define THUSTR_30 |
"level 30: last call" |
#define THUSTR_31 |
"level 31: pharaoh" |
#define THUSTR_32 |
"level 32: caribbean" |
#define HUSTR_CHATMACRO1 |
"I’m ready to kick butt!" |
#define HUSTR_CHATMACRO2 |
"I’m OK." |
#define HUSTR_CHATMACRO3 |
"I’m not looking too good!" |
#define HUSTR_CHATMACRO4 |
"Help!" |
#define HUSTR_CHATMACRO5 |
"You suck!" |
#define HUSTR_CHATMACRO6 |
"Next time, scumbag..." |
#define HUSTR_CHATMACRO7 |
"Come here!" |
#define HUSTR_CHATMACRO8 |
"I’ll take care of it." |
#define HUSTR_CHATMACRO9 |
"Yes" |
#define HUSTR_CHATMACRO0 |
"No" |
#define HUSTR_TALKTOSELF1 |
"You mumble to yourself" |
#define HUSTR_TALKTOSELF2 |
"Who’s there?" |
#define HUSTR_TALKTOSELF3 |
"You scare yourself" |
#define HUSTR_TALKTOSELF4 |
"You start to rave" |
#define HUSTR_TALKTOSELF5 |
"You’ve lost it..." |
#define HUSTR_MESSAGESENT |
"[Message Sent]" |
//The following should NOT be changed unless it seems
//just AWFULLY necessary
#define HUSTR_PLRGREEN |
"Green: " |
|
#define HUSTR_PLRINDIGO |
"Indigo: " |
|
#define HUSTR_PLRBROWN |
"Brown: " |
|
#define HUSTR_PLRRED |
"Red: " |
|
#define HUSTR_KEYGREEN |
’g’ |
|
#define HUSTR_KEYINDIGO |
’i’ |
|
#define HUSTR_KEYBROWN |
’b’ |
|
#define HUSTR_KEYRED |
’r’ |
|
// |
|
|
// |
AM_map.C |
|
// |
|
|
#define AMSTR_FOLLOWON |
"Follow Mode ON" |
|
#define AMSTR_FOLLOWOFF |
"Follow Mode OFF" |
|
#define AMSTR_GRIDON |
"Grid ON" |
48
#define AMSTR_GRIDOFF |
"Grid OFF" |
|
#define AMSTR_MARKEDSPOT |
"Marked Spot" |
|
#define AMSTR_MARKSCLEARED |
"All Marks Cleared" |
|
// |
|
|
// |
ST_stuff.C |
|
// |
|
|
#define STSTR_MUS |
"Music Change" |
|
#define STSTR_NOMUS |
"IMPOSSIBLE SELECTION" |
|
#define STSTR_DQDON |
"Degreelessness Mode On" |
|
#define STSTR_DQDOFF |
"Degreelessness Mode Off" |
|
#define STSTR_KFAADDED |
"Very Happy Ammo Added" |
|
#define STSTR_FAADDED |
"Ammo (no keys) Added" |
|
#define STSTR_NCON |
"No Clipping Mode ON" |
|
#define STSTR_NCOFF |
"No Clipping Mode OFF" |
|
#define STSTR_BEHOLD |
"inVuln, Str, Inviso, Rad, Allmap, or Lite-amp" |
|
#define STSTR_BEHOLDX |
"Power-up Toggled" |
|
#define STSTR_CHOPPERS |
"... doesn’t suck - GM" |
|
#define STSTR_CLEV |
"Changing Level..." |
|
// |
|
|
// |
F_Finale.C |
|
// |
|
|
#define E1TEXT \
"Once you beat the big badasses and\n"\ "clean out the moon base you’re supposed\n"\ "to win, aren’t you? Aren’t you? Where’s\n"\ "your fat reward and ticket home? What\n"\ "the hell is this? It’s not supposed to\n"\ "end this way!\n"\
"\n" \
"It stinks like rotten meat, but looks\n"\ "like the lost Deimos base. Looks like\n"\ "you’re stuck on The Shores of Hell.\n"\ "The only way out is through.\n"\
"\n"\
"To continue the DOOM experience, play\n"\ "The Shores of Hell and its amazing\n"\ "sequel, Inferno!\n"
#define E2TEXT \
"You’ve done it! The hideous cyber-\n"\ "demon lord that ruled the lost Deimos\n"\ "moon base has been slain and you\n"\
"are triumphant! But ... where are\n"\ "you? You clamber to the edge of the\n"\ "moon and look down to see the awful\n"\ "truth.\n" \
"\n"\
"Deimos floats above Hell itself!\n"\ "You’ve never heard of anyone escaping\n"\ "from Hell, but you’ll make the bastards\n"\ "sorry they ever heard of you! Quickly,\n"\ "you rappel down to the surface of\n"\ "Hell.\n"\
"\n" \
"Now, it’s on to the final chapter of\n"\ "DOOM! -- Inferno."
49
#define E3TEXT \
"The loathsome spiderdemon that\n"\ "masterminded the invasion of the moon\n"\ "bases and caused so much death has had\n"\ "its ass kicked for all time.\n"\
"\n"\
"A hidden doorway opens and you enter.\n"\ "You’ve proven too tough for Hell to\n"\ "contain, and now Hell at last plays\n"\ "fair -- for you emerge from the door\n"\ "to see the green fields of Earth!\n"\ "Home at last.\n" \
"\n"\
"You wonder what’s been happening on\n"\ "Earth while you were battling evil\n"\ "unleashed. It’s good that no Hell-\n"\ "spawn could have come through that\n"\ "door with you ..."
#define E4TEXT \
"the spider mastermind must have sent forth\n"\ "its legions of hellspawn before your\n"\ "final confrontation with that terrible\n"\ "beast from hell. but you stepped forward\n"\ "and brought forth eternal damnation and\n"\ "suffering upon the horde as a true hero\n"\ "would in the face of something so evil.\n"\ "\n"\
"besides, someone was gonna pay for what\n"\ "happened to daisy, your pet rabbit.\n"\ "\n"\
"but now, you see spread before you more\n"\ "potential pain and gibbitude as a nation\n"\ "of demons run amok among our cities.\n"\ "\n"\
"next stop, hell on earth!"
// after level 6, put this:
#define C1TEXT \
"YOU HAVE ENTERED DEEPLY INTO THE INFESTED\n" \ "STARPORT. BUT SOMETHING IS WRONG. THE\n" \ "MONSTERS HAVE BROUGHT THEIR OWN REALITY\n" \ "WITH THEM, AND THE STARPORT’S TECHNOLOGY\n" \ "IS BEING SUBVERTED BY THEIR PRESENCE.\n" \ "\n"\
"AHEAD, YOU SEE AN OUTPOST OF HELL, A\n" \ "FORTIFIED ZONE. IF YOU CAN GET PAST IT,\n" \ "YOU CAN PENETRATE INTO THE HAUNTED HEART\n" \ "OF THE STARBASE AND FIND THE CONTROLLING\n" \ "SWITCH WHICH HOLDS EARTH’S POPULATION\n" \ "HOSTAGE."
// After level 11, put this:
#define C2TEXT \
"YOU HAVE WON! YOUR VICTORY HAS ENABLED\n" \ "HUMANKIND TO EVACUATE EARTH AND ESCAPE\n"\ "THE NIGHTMARE. NOW YOU ARE THE ONLY\n"\ "HUMAN LEFT ON THE FACE OF THE PLANET.\n"\ "CANNIBAL MUTATIONS, CARNIVOROUS ALIENS,\n"\
50