Exemple #1
0
/* deal with a new player command in countryside mode */
void p_country_process(void)
{
    int no_op;

    drawvision(Player.x,Player.y);
    do {
        no_op = FALSE;
        Cmd = mgetc();
        clear_if_necessary();
        switch (Cmd) {
        case ' ':
        case 13:
            no_op = TRUE;
            break;
        case 7:
            wizard();
            break; /* ^g */
        case 12:
            xredraw();
            no_op = TRUE;
            break; /* ^l */
#if !defined(WIN32)
        case 16:
            bufferprint();
            no_op = TRUE;
            break; /* ^p */
#else
        case 15:
            bufferprint();
            no_op = TRUE;
            break; /* ^o */
#endif
        case 18:
            redraw();
            no_op = TRUE;
            break; /* ^r */
        case 23:
            if (gamestatusp(CHEATED)) drawscreen();
            break; /* ^w */
        case 24:
            if (gamestatusp(CHEATED) ||
                    Player.rank[ADEPT]) wish(1);
            break; /* ^x */
        case 'd':
            drop();
            break;
        case 'e':
            eat();
            break;
        case 'i':
            do_inventory_control();
            break;
        case 's':
            countrysearch();
            break;
        case 'x':
            examine();
            break;
        case 'E':
            dismount_steed();
            break;
        case 'H':
            hunt(Country[Player.x][Player.y].current_terrain_type);
            break;
        case 'I':
            if (! optionp(TOPINV)) top_inventory_control();
            else {
                menuclear();
                display_possessions();
                inventory_control();
            }
            break;
        case 'O':
            setoptions();
            break;
        case 'P':
            show_license();
            break; /* actually show_license is in file.c */
        case 'Q':
            quit();
            break;
        case 'R':
            rename_player();
            break;
        case 'S':
            save(FALSE);
            break;
        case 'V':
            version();
            break;
        case '>':
            enter_site(Country[Player.x][Player.y].base_terrain_type);
            break;
        case '#':
            if (gamestatusp(CHEATED)) editstats();
            break; /* RAC - char editor */
        case '/':
            charid();
            no_op = TRUE;
            break;
        case '?':
            help();
            no_op = TRUE;
            break;
        case '4':
        case 'h':
            movepincountry(-1,0);
            break;
        case '2':
        case 'j':
            movepincountry(0,1);
            break;
        case '8':
        case 'k':
            movepincountry(0,-1);
            break;
        case '6':
        case 'l':
            movepincountry(1,0);
            break;
        case '1':
        case 'b':
            movepincountry(-1,1);
            break;
        case '3':
        case 'n':
            movepincountry(1,1);
            break;
        case '7':
        case 'y':
            movepincountry(-1,-1);
            break;
        case '9':
        case 'u':
            movepincountry(1,-1);
            break;
        default:
            commanderror();
            no_op = TRUE;
            break;
        }
    } while (no_op);
    screencheck(Player.x,Player.y);
}
void IntroScreen()
{
#define MAX_TITLES 7
#define MAX_CREDIT_LENGTH 400
	
#define CREDIT_REDFLASH 0
	
	//#define PROMPT_TEXT_SPACE_X_OFFSETFROMLEFT 16
	//#define PROMPT_TEXT_SPACE_Y_OFFSETFROMTOP 4
	//#define PROMPT_TEXT_WIDTH	46
	//#define PROMPT_TEXT_HEIGHT 15
	
	RECT boxrect;
	int creditcounter;
	int numevents;
	int key;
	int i;
	
	char *agencystring = "T H E    A G E N C Y";
	char * loadingstring ="STANDBY FOR LOGIN...";
	
	char titles[MAX_TITLES][MAX_CREDIT_LENGTH] = {
		"Every country, whether sooner or later,",
			"Communication, Expression, Freedom;",
			"So that the society can better be harnessed",
			"The United States of America",
			"Perhaps the greatest testament to secrecy",
			"Within the dark and silent walls, deep below ground,",
			"Those who have known its power have respectfully called it..."
			
	};
	
	char subtitles[MAX_TITLES][MAX_CREDIT_LENGTH] = {
		"has had to rely on the strength of secrecy.",
			"these principles have been silently put aside...",
			"for the real work to be done.",
			"is no exception.",
			"can be found here, in Virginia...",
			"lies America's most secretive government branch.",
			""
			
	} ; 
	
	
	COORD dutydrawcoords;
	COORD namedrawcoords;
	COORD boxsize = {PROMPT_TEXT_WIDTH, PROMPT_TEXT_HEIGHT};
	COORD boxstart = {PROMPT_TEXT_SPACE_X_OFFSETFROMLEFT, PROMPT_TEXT_SPACE_Y_OFFSETFROMTOP};
	COORD zeroed = {0,0};
	
	
	LoopSong(globals.musiclist.songs[INTRO_SONG]);
	
	boxrect.left = PROMPT_TEXT_SPACE_X_OFFSETFROMLEFT;
	boxrect.top = PROMPT_TEXT_SPACE_Y_OFFSETFROMTOP;
	boxrect.right = PROMPT_TEXT_SPACE_X_OFFSETFROMLEFT+PROMPT_TEXT_WIDTH;
	boxrect.bottom = PROMPT_TEXT_SPACE_Y_OFFSETFROMTOP + PROMPT_TEXT_HEIGHT;
	
	for (creditcounter = 0; creditcounter < MAX_TITLES; creditcounter++){

			numevents = checkforinput();
			if (numevents > 1)
			{
				for (i = 1; i <= numevents; i++)
				{
					key = getinput(i);
					if(key == VK_ESCAPE){
						FLUSH;
			clearinputrecords();
						return;
					}
				}
			}
			FLUSH;
			clearinputrecords();
		
		ClearRect(boxrect);
		dutydrawcoords = retrieveTextCenter(titles[creditcounter]);
		dutydrawcoords.Y --;
		namedrawcoords = retrieveTextCenter(subtitles[creditcounter]);
		RED;
		setcursor(dutydrawcoords.X, dutydrawcoords.Y);
		bufferprint(1, titles[creditcounter]);
		setcursor(dutydrawcoords.X, dutydrawcoords.Y);
		LRED;
		bufferprint(1, titles[creditcounter]);
		Sleep(1000);
		RED;
		setcursor(namedrawcoords.X, namedrawcoords.Y);
		bufferprint(1, subtitles[creditcounter]);
		setcursor(namedrawcoords.X, namedrawcoords.Y);
		LRED;
		bufferprint(1, subtitles[creditcounter]);
		
		Sleep(3500);
		
		RED;
		setcursor(dutydrawcoords.X, dutydrawcoords.Y);
		printf(titles[creditcounter]);
		setcursor(dutydrawcoords.X, dutydrawcoords.Y);
		RED;
		setcursor(namedrawcoords.X, namedrawcoords.Y);
		printf(subtitles[creditcounter]);
		setcursor(namedrawcoords.X, namedrawcoords.Y);
		Sleep(80);
		setcursor(namedrawcoords.X, namedrawcoords.Y);
		cleartext(subtitles[creditcounter]);
		setcursor(dutydrawcoords.X, dutydrawcoords.Y);
		cleartext(titles[creditcounter]);
		Sleep(1000);
		
	}
	
	dutydrawcoords = retrieveTextCenter(agencystring);
	RED;
	setcursor(dutydrawcoords.X, dutydrawcoords.Y);
	printf(agencystring);
	LRED;
	Sleep(150);
	setcursor(dutydrawcoords.X, dutydrawcoords.Y);
	printf(agencystring);
	Sleep(2000);
	RED;
	setcursor(dutydrawcoords.X, dutydrawcoords.Y);
	printf(agencystring);
	Sleep(150);
	cls();
		dutydrawcoords = retrieveTextCenter(loadingstring);
	RED;
	setcursor(dutydrawcoords.X, dutydrawcoords.Y);
	printf(loadingstring);
	LRED;
	Sleep(150);
	setcursor(dutydrawcoords.X, dutydrawcoords.Y);
	printf(loadingstring);
	Sleep(2000);
	RED;
	setcursor(dutydrawcoords.X, dutydrawcoords.Y);
	printf(loadingstring);
	Sleep(150);
	cls();
}
Exemple #3
0
/* deal with a new player command in dungeon or city mode*/
void p_process(void)
{
    static int searchval=0;

    if (Player.status[BERSERK])
        if (goberserk()) {
            setgamestatus(SKIP_PLAYER);
            drawvision(Player.x,Player.y);
        }
    if (! gamestatusp(SKIP_PLAYER)) {
        if (searchval > 0) {
            searchval--;
            if (searchval == 0) resetgamestatus(FAST_MOVE);
        }
        drawvision(Player.x,Player.y);
        if (! gamestatusp(FAST_MOVE)) {
            searchval = 0;
            Cmd = mgetc();
            clear_if_necessary();
        }
        Command_Duration = 0;
        switch (Cmd) {
        case ' ':
        case 13:
            setgamestatus(SKIP_MONSTERS);
            break; /*no op on space or return*/
        case 6:
            abortshadowform();
            break; /* ^f */
        case 7:
            wizard();
            break; /* ^g */
        case 4:
            player_dump();
            break; /* ^d */
        case 9:
            display_pack();
            morewait();
            xredraw();
            break; /* ^i */
        case 11:
            if (gamestatusp(CHEATED)) frobgamestatus();
            break;
        case 12:
            xredraw();
            setgamestatus(SKIP_MONSTERS);
            break; /* ^l */
#if !defined(WIN32)
        case 16:
            bufferprint();
            setgamestatus(SKIP_MONSTERS);
            break; /* ^p */
#else
        case 15:
            bufferprint();
            setgamestatus(SKIP_MONSTERS);
            break; /* ^o */
#endif
        case 18:
            redraw();
            setgamestatus(SKIP_MONSTERS);
            break; /* ^r */
        case 23:
            if (gamestatusp(CHEATED)) drawscreen();
            break; /* ^w */
        case 24: /* ^x */
            if (gamestatusp(CHEATED) ||
                    Player.rank[ADEPT])
                wish(1);
            Command_Duration = 5;
            break;
        case 'a':
            zapwand();
            Command_Duration = Player.speed*8/5;
            break;
        case 'c':
            closedoor();
            Command_Duration = Player.speed*2/5;
            break;
        case 'd':
            drop();
            Command_Duration = Player.speed*5/5;
            break;
        case 'e':
            eat();
            Command_Duration = 30;
            break;
        case 'f':
            fire();
            Command_Duration = Player.speed*5/5;
            break;
        case 'g':
            pickup();
            Command_Duration = Player.speed*10/5;
            break;
        case 'i':
            do_inventory_control();
            break;
        case 'm':
            magic();
            Command_Duration = 12;
            break;
        case 'o':
            opendoor();
            Command_Duration = Player.speed*5/5;
            break;
        case 'p':
            pickpocket();
            Command_Duration = Player.speed*20/5;
            break;
        case 'q':
            quaff();
            Command_Duration = 10;
            break;
        case 'r':
            peruse();
            Command_Duration = 20;
            break;
        case 's':
            search(&searchval);
            Command_Duration = 20;
            break;
        case 't':
            talk();
            Command_Duration = 10;
            break;
        case 'v':
            vault();
            Command_Duration = Player.speed*10/5;
            break;
        case 'x':
            examine();
            Command_Duration = 1;
            break;
        case 'z':
            bash_location();
            Command_Duration = Player.speed*10/5;
            break;
        case 'A':
            activate();
            Command_Duration = 10;
            break;
        case 'C':
            callitem();
            break;
        case 'D':
            disarm();
            Command_Duration = 30;
            break;
        case 'E':
            dismount_steed();
            Command_Duration = Player.speed*10/5;
            break;
        case 'F':
            tacoptions();
            break;
        case 'G':
            give();
            Command_Duration = 10;
            break;
        case 'I':
            if (! optionp(TOPINV)) top_inventory_control();
            else {
                display_possessions();
                inventory_control();
            }
            break;
        case 'M':
            city_move();
            Command_Duration = 10;
            break;
        case 'O':
            setoptions();
#if defined(WIN32)
            show_screen();
            xredraw();
#endif
            break;
        case 'P':
            show_license();
            break; /* actually show_license is in file.c */
        case 'Q':
            quit();
            break;
        case 'R':
            rename_player();
            break;
        case 'S':
            save(FALSE);
            break;
        case 'T':
            tunnel();
            Command_Duration =  Player.speed*30/5;
            break;
        case 'V':
            version();
            break;
        case 'Z':
            bash_item();
            Command_Duration = Player.speed*10/5;
            break;
        case '.':
            rest();
            Command_Duration = 10;
            break;
        case ',':
            Command_Duration = 10;
            nap();
            break;
        case '>':
            downstairs();
            break;
        case '<':
            upstairs();
            break;
        case '@':
            p_movefunction(Level->site[Player.x][Player.y].p_locf);
            Command_Duration = 5;
            break;
        case '#':
            if (gamestatusp(CHEATED)) editstats();
            break; /* RAC - char editor */
        case '/':
            charid();
            setgamestatus(SKIP_MONSTERS);
            break;
        case '?':
            help();
            setgamestatus(SKIP_MONSTERS);
            break;
        case '4':
        case 'h':
            moveplayer(-1,0);
            Command_Duration = Player.speed*5/5;
            break;
        case '2':
        case 'j':
            moveplayer(0,1);
            Command_Duration = Player.speed*5/5;
            break;
        case '8':
        case 'k':
            moveplayer(0,-1);
            Command_Duration = Player.speed*5/5;
            break;
        case '6':
        case 'l':
            moveplayer(1,0);
            Command_Duration = Player.speed*5/5;
            break;
        case '1':
        case 'b':
            moveplayer(-1,1);
            Command_Duration = Player.speed*5/5;
            break;
        case '3':
        case 'n':
            moveplayer(1,1);
            Command_Duration = Player.speed*5/5;
            break;
        case '7':
        case 'y':
            moveplayer(-1,-1);
            Command_Duration = Player.speed*5/5;
            break;
        case '9':
        case 'u':
            moveplayer(1,-1);
            Command_Duration = Player.speed*5/5;
            break;
        case '5':
            setgamestatus(SKIP_MONSTERS); /* don't do anything; a dummy turn */
            Cmd = mgetc();
            while ((Cmd != ESCAPE) &&
                    ((Cmd < '1') || (Cmd > '9') || (Cmd=='5'))) {
                print3("Run in keypad direction [ESCAPE to abort]: ");
                Cmd = mgetc();
            }
            if (Cmd != ESCAPE) 
                setgamestatus(FAST_MOVE);
            else
                clearmsg3();
            break;
        case 'H':
            setgamestatus(FAST_MOVE);
            Cmd = 'h';
            moveplayer(-1,0);
            Command_Duration = Player.speed*4/5;
            break;
        case 'J':
            setgamestatus(FAST_MOVE);
            Cmd = 'j';
            moveplayer(0,1);
            Command_Duration = Player.speed*4/5;
            break;
        case 'K':
            setgamestatus(FAST_MOVE);
            Cmd = 'k';
            moveplayer(0,-1);
            Command_Duration = Player.speed*4/5;
            break;
        case 'L':
            setgamestatus(FAST_MOVE);
            Cmd = 'l';
            moveplayer(1,0);
            Command_Duration = Player.speed*4/5;
            break;
        case 'B':
            setgamestatus(FAST_MOVE);
            Cmd = 'b';
            moveplayer(-1,1);
            Command_Duration = Player.speed*4/5;
            break;
        case 'N':
            setgamestatus(FAST_MOVE);
            Cmd = 'n';
            moveplayer(1,1);
            Command_Duration = Player.speed*4/5;
            break;
        case 'Y':
            setgamestatus(FAST_MOVE);
            Cmd = 'y';
            moveplayer(-1,-1);
            Command_Duration = Player.speed*4/5;
            break;
        case 'U':
            setgamestatus(FAST_MOVE);
            Cmd = 'u';
            moveplayer(1,-1);
            Command_Duration = Player.speed*4/5;
            break;
        default:
            commanderror();
            setgamestatus(SKIP_MONSTERS);
            break;
        }
    }
    if (Current_Environment != E_COUNTRYSIDE) roomcheck();
    screencheck(Player.x,Player.y);
}
void CreditScreen()
{
#define MAX_DUTIES 21
#define MAX_CREDIT_LENGTH 400
	
#define CREDIT_REDFLASH 0
#define CREDIT_GREENFADE 1
	
	//#define PROMPT_TEXT_SPACE_X_OFFSETFROMLEFT 16
	//#define PROMPT_TEXT_SPACE_Y_OFFSETFROMTOP 4
	//#define PROMPT_TEXT_WIDTH	46
	//#define PROMPT_TEXT_HEIGHT 15
	
	RECT boxrect;
	int creditcounter;
	char duties[MAX_DUTIES][MAX_CREDIT_LENGTH] = {
		"THE AGENCY",
			"Based On \"The Agency\" Espionage Universe", 
			"Designer",
			"Lead Programmer",
			"Glamour Model",
			"Box / Manual Design",
			"Special Thanks To:", 
			"Special Thanks To:",
			"We Extend A Special Thank You To:",
			"We Extend A Special Thank You To:",
			"We Extend A Special Thank You To:",
			"Vorpal Design Group is a small west-coast game design group centered around the intelligence and military gaming enthusiast.",
			"The Agency is an original concept created by Charles Cox. For franchising information, and for info on how you can become a part of The Agency Universe, please contact Charles Cox, President of VDG at: [email protected]",
			"We will be bringing The Agency : Razor One to you in full 3d very soon. Please stay tuned to the company that brings the intelligence and military world to your computer:",
			"Vorpal",
			"VDG   ",
			"Charles Cox",
			"Wyatt Jackson",
			"Eddy Irwin",
			"Jennifer Dygert",
			"THANKS FOR PLAYING!"
	};
	
	char names[MAX_DUTIES][MAX_CREDIT_LENGTH] = {
		"RAZOR ONE",
			"By Charles Cox", 
			"Charles Cox",
			"Charles Cox",
			"Charlie \"Flowers\" From Jersey City",
			"Charles Cox",
			"Wyatt Jackson (Dr. J)",
			"\"Fast\" Eddy Irwin From Jersey City",
			"\"Big\" Bird",
			"Big \"Bird\"",
			"Bert \"and\" Ernie",
			"",
			"",
			"",
			"Design Group",
			"   IS",
			"President, CEO, Lead Designer",
			"Programmer",
			"Programmer / Designer",
			"Craft Services",
			"PRESS A KEY TO RETURN."
	} ; 
	
	int styles[MAX_DUTIES] = {
		CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_GREENFADE,
			CREDIT_GREENFADE,
			CREDIT_GREENFADE,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
			CREDIT_REDFLASH,
	};
	
	COORD dutydrawcoords;
	COORD namedrawcoords;
	COORD boxsize = {PROMPT_TEXT_WIDTH, PROMPT_TEXT_HEIGHT};
	COORD boxstart = {PROMPT_TEXT_SPACE_X_OFFSETFROMLEFT, PROMPT_TEXT_SPACE_Y_OFFSETFROMTOP};
	COORD zeroed = {0,0};
	
	
	boxrect.left = PROMPT_TEXT_SPACE_X_OFFSETFROMLEFT;
	boxrect.top = PROMPT_TEXT_SPACE_Y_OFFSETFROMTOP;
	boxrect.right = PROMPT_TEXT_SPACE_X_OFFSETFROMLEFT+PROMPT_TEXT_WIDTH;
	boxrect.bottom = PROMPT_TEXT_SPACE_Y_OFFSETFROMTOP + PROMPT_TEXT_HEIGHT;
	
	
	LoopSong(globals.musiclist.songs[CREDITS_SONG]);
	
	styles[MAX_DUTIES - 1] = CREDIT_REDFLASH; //THE LAST CREDIT MUST ALWAYS BE REDFLASH.
	
	GREEN;
	printgraphic(globals.graphicslist, zeroed,  PROMPT_GRAPHIC_ID);
	for (creditcounter = 0; creditcounter < MAX_DUTIES; creditcounter++){
		if (styles[creditcounter] == CREDIT_REDFLASH)
		{
			ClearRect(boxrect);
			dutydrawcoords = retrieveTextCenter(duties[creditcounter]);
			dutydrawcoords.Y --;
			namedrawcoords = retrieveTextCenter(names[creditcounter]);
			RED;
			setcursor(dutydrawcoords.X, dutydrawcoords.Y);
			bufferprint(1, duties[creditcounter]);
			setcursor(dutydrawcoords.X, dutydrawcoords.Y);
			LRED;
			bufferprint(1, duties[creditcounter]);
			Sleep(200);
			RED;
			setcursor(namedrawcoords.X, namedrawcoords.Y);
			bufferprint(1, names[creditcounter]);
			setcursor(namedrawcoords.X, namedrawcoords.Y);
			LRED;
			bufferprint(1, names[creditcounter]);
			if (creditcounter < MAX_DUTIES - 1)
			{
				Sleep(3500);
				
				RED;
				setcursor(dutydrawcoords.X, dutydrawcoords.Y);
				printf(duties[creditcounter]);
				setcursor(dutydrawcoords.X, dutydrawcoords.Y);
				RED;
				setcursor(namedrawcoords.X, namedrawcoords.Y);
				printf(names[creditcounter]);
				setcursor(namedrawcoords.X, namedrawcoords.Y);
				Sleep(80);
				setcursor(namedrawcoords.X, namedrawcoords.Y);
				cleartext(names[creditcounter]);
				setcursor(dutydrawcoords.X, dutydrawcoords.Y);
				cleartext(duties[creditcounter]);
				Sleep(1000);
			}
			else{
				FLUSH;
				clearinputrecords();
				waitforkey();
				StopSong();
				cls();
				return;
			}
		}
		else if (styles[creditcounter] == CREDIT_GREENFADE)
		{
			ClearRect(boxrect);
			GREEN;
			
			printwordwrapcoordinate(duties[creditcounter], boxsize, boxstart);
			Sleep(80);
			LGREEN;
			
			printwordwrapcoordinate(duties[creditcounter], boxsize, boxstart);
			Sleep(10000);
			GREEN;
			
			printwordwrapcoordinate(duties[creditcounter], boxsize, boxstart);
			Sleep(80);
			ClearRect(boxrect);
			Sleep(1000);
		}
	}
	
}