コード例 #1
0
ファイル: game.cpp プロジェクト: pr0gr4m/TeamNoru
void gameScreen(void)
{
	int ch;
	setCursorType();
	mapDraw(nStage);

	while (1)
	{
		ch = _getch();
		if (ch == 0 || ch == 224)
		{
			ch = _getch();
			switch (ch)
			{
			case UP: case DOWN:
			case LEFT: case RIGHT:
				Move(ch);
				break;
			}
		}
		else
		{
			switch (ch)
			{
			case 'm': case 'M':
				chooseMenu();
				clrscr();
				mapDraw(nStage);
			}
		}
	}
}
コード例 #2
0
ファイル: game.cpp プロジェクト: pr0gr4m/TeamNoru
void Move(int dir)
{
	int dx = 0, dy = 0;

	switch (dir)
	{
	case LEFT:
		dx = -1;
		break;
	case RIGHT:
		dx = 1;
		break;
	case UP:
		dy = -1;
		break;
	case DOWN:
		dy = 1;
		break;
	}

	int nxt = map[nStage][ny + dy][nx + dx];

	if (nxt != 1)
	{
		if (nxt == 2)
		{	// 이전 맵으로
			map[nStage][ny][nx] = 0;
			if (nStage == 1)
				nx = 19, ny = 23;
			else if (nStage == 2)
				nx = 38, ny = 5;
			else if (nStage == 3)
				nx = 38, ny = 3;
			else if (nStage == 4)
				nx = 34, ny = 22;
			else if (nStage == 5)
				nx = 37, ny = 1;
			else if (nStage == 6)
				nx = 19, ny = 1;
			else if (nStage == 7)
				nx = 5, ny = 2;
			nStage--;
			if (nStage == 6)
				nStage = 3;
			map[nStage][ny][nx] = 9;
			clrscr();
			mapDraw(nStage);
		}
		else if (nxt == 3)
		{	// 다음 맵으로
			map[nStage][ny][nx] = 0;
			if (nStage == 0)
				nx = 1, ny = 21;
			else if (nStage == 1)
				nx = 1, ny = 9;
			else if (nStage == 2)
				nx = 2, ny = 21;
			else if (nStage == 3)
				nx = 2, ny = 19;
			else if (nStage == 4)
				nx = 19, ny = 22;
			else if (nStage == 5)
				nx = 1, ny = 4;
			nStage++;
			map[nStage][ny][nx] = 9;
			clrscr();
			mapDraw(nStage);
		}
		else if (nxt == 4)
		{
			if (nStage == 0)
			{
				// 첫 번째 맵의 5번째 줄에 있는 npc
				if (ny + dy == 5)
					n1.Dialogue();
				else if (ny + dy == 14)
					n2.Dialogue();
				else if (ny + dy == 16)
					n5.Dialogue();
				else if (ny + dy == 6)
					n6.Dialogue();
			}
			else if (nStage == 1)
			{
				n2.Dialogue();
				map[1][21][34] = 0;
				gotoxy(70, 21);
				std::cout << "  ";
				map[0][14][4] = 4;
			}
			else if (nStage == 2)
			{
				n3.Dialogue();
			}
			else if (nStage == 3)
			{
				if (ny + dy == 2)
				{	// 숨겨진 맵으로
					n4.Dialogue();	// 다른 npc로 변경
					map[nStage][ny][nx] = 0;
					map[nStage][2][4] = 0;
					nx = 38, ny = 3;
					nStage = 7;
					map[nStage][ny][nx] = 9;
					map[nStage][1][38] = 4;
					clrscr();
					mapDraw(nStage);
				}
			}
			else if (nStage == 4)
			{
				n5.Dialogue();
				map[4][21][21] = 0;
				gotoxy(44, 21);
				std::cout << "  ";
				map[0][16][28] = 4;
			}
			else if (nStage == 5)
			{
				n6.Dialogue();
				map[5][13][8] = 0;
				gotoxy(18, 13);
				std::cout << "  ";
				map[0][6][12] = 4;
			}
			else if (nStage == 6)
			{
				n7.Dialogue();
				map[6][ny][nx] = 0;
				nx = 32, ny = 14;
				map[6][ny][nx] = 9;
				clrscr();
				mapDraw(nStage);
			}
			else if (nStage == 7)
			{
				n4.Dialogue();
			}
			// npc와 대화
			return;
		}
		else if (nxt == 5)
		{
			// 아이템 습득
			if (nStage == 0)
				p.item_list[0] = 1;
			else if (nStage == 1)
				p.item_list[4] += 1;
			else if (nStage == 2)
				p.item_list[6] += 1;
			else if (nStage == 3)
				p.item_list[5] += 1;
			else if (nStage == 5)
				p.item_list[6] += 1;
			else if (nStage == 6)
				p.item_list[3] = 1;
			else if (nStage == 7)
			{
				if (ny + dy == 16)
					p.item_list[1] = 1;
				else
					p.item_list[2] = 1;
			}
			map[nStage][ny + dy][nx + dx] = 0;
			gotoxy((ny + dy) * 2 + 2, nx + dx);
			std::cout << "  ";
			return;
		}
		else if (nxt == 6)
		{
			// 몬스터 만남
			HighMonster m(20, 30, AGGR);
			Battle b(m);
			clrscr();
			map[nStage][ny + dy][nx + dx] = 0;
			mapDraw(nStage);

			return;
		}
		else if (nxt == 7)
		{
			// 주유소
			gotoxy(5, 35);
			std::cout << "체력과 기력이 회복되었다!";
			getKey();
			p.HealHP(10000);
			p.HealAP(1000);
			gotoxy(5, 35);
			std::cout << "                         ";
			if (!RandInt(20))
			{
				p.sk_list[3] = 1;
				gotoxy(5, 35);
				std::cout << "몰아치기Lv1 스킬을 습득하였다!";
				getKey();
				gotoxy(5, 35);
				std::cout << "                              ";
			}
			return;
		}
		else if (nxt == 8)
		{
			gotoxy(5, 35);
			std::cout << "심상치 않은 기운이 느껴지는 구체다..";
			getKey();
			gotoxy(5, 36);
			std::cout << "이것에서 발산되는 기운 때문에 몬스터가 생기는듯 하다.";
			getKey();
			gotoxy(5, 37);
			std::cout << "내일의 안녕을 위하여!!!";
			getKey();
			
			BossMonster boss;
			Battle b(boss);
			clrscr();

			map[nStage][ny][nx] = 0;
			nx = 5, ny = 12;
			map[nStage][ny][nx] = 9;
			clrscr();
			mapDraw(nStage);

			gotoxy(5, 35);
			std::cout << "..!! 보스를 잡았지만 갇혔다?!";
			getKey();
			gotoxy(5, 35);
			std::cout << "                              ";

			// 보스
			return;
		}
		else if (nxt == 10)
		{
			gotoxy(5, 35);
			std::cout << "..!! 비밀 문을 찾았다!!";
			getKey();
			map[nStage][ny][nx] = 0;
			nStage = 0, nx = 1, ny = 1;
			map[nStage][ny][nx] = 9;

			char buf[BUF_LEN];

			std::ifstream ep(end_file, std::ios::in | std::ios::binary);
			if (!ep.is_open())
			{
				std::cerr << "파일 오픈 실패." << std::endl << "ASCII 폴더와 텍스트 파일을 확인해 주십시오." << std::endl;
				exit(1);
			}

			bigConsoleSize();
			std::memset(buf, 0, BUF_LEN);
			while (!ep.eof())
			{
				ep.read((char*)buf, BUF_LEN - 1);
				buf[BUF_LEN - 1] = 0;
				std::cout << buf;
				std::memset(buf, 0, BUF_LEN);
			}
			ep.close();
			std::cin.get();

			setConsoleSize();
			mapDraw(nStage);
		}
		else
		{
			gotoxy(nx * 2 + 2, ny);
			std::cout << "  ";
			map[nStage][ny][nx] = 0;
			nx += dx;
			ny += dy;
			map[nStage][ny][nx] = 9;
			gotoxy(nx * 2 + 2, ny);
			std::cout << "P";
			if (nStage != 0 && nStage != 7 && !RandInt(30))		// 1/30 확률
			{
				if (nStage >= 1 && nStage <= 3)
				{
					int rand_mon = RandInt(3);
					if (rand_mon == 1)
					{
						LowMonster m(nStage * (RandInt(3) + 1), nStage * 10, AGGR);
						Battle b(m);
						clrscr();
						mapDraw(nStage);
					}
					else if (rand_mon == 2)
					{
						LowMonster m(nStage * (RandInt(3) + 1), nStage * 5, DEFN);
						Battle b(m);
						clrscr();
						mapDraw(nStage);
					}
					else
					{
						LowMonster m(nStage * (RandInt(3) + 1));
						Battle b(m);
						clrscr();
						mapDraw(nStage);
					}
					if (!RandInt(10))	// 1 / 10 확률로
					{
						p.sk_list[0] = 1;
						gotoxy(5, 35);
						std::cout << "강타Lv1 스킬을 얻었다!";
						getKey();
						gotoxy(5, 35);
						std::cout << "                      ";
					}
				}
				else if (nStage >= 4 && nStage <= 6)
				{
					int rand_mon = RandInt(3);
					if (rand_mon == 1)
					{
						HighMonster m(nStage * (RandInt(3) + 1), nStage * 20, AGGR);
						Battle b(m);
						clrscr();
						mapDraw(nStage);
					}
					else if (rand_mon == 2)
					{
						HighMonster m(nStage * (RandInt(3) + 1), nStage * 15, DEFN);
						Battle b(m);
						clrscr();
						mapDraw(nStage);
					}
					else
					{
						HighMonster m(nStage * (RandInt(3) + 1));
						Battle b(m);
						clrscr();
						mapDraw(nStage);
					}
					if (!RandInt(10))	// 1 / 10 확률로
					{
						p.sk_list[1] = 1;
						gotoxy(5, 35);
						std::cout << "강타Lv2 스킬을 얻었다!";
						getKey();
						gotoxy(5, 35);
						std::cout << "                      ";
					}
					else if (!RandInt(20))	// 9/200 확률로
					{
						p.sk_list[2] = 1;
						gotoxy(5, 35);
						std::cout << "강타Lv3 스킬을 얻었다!";
						getKey();
						gotoxy(5, 35);
						std::cout << "                      ";
					}
				}
			}
			return;
		}
	}
}
コード例 #3
0
int main(int argc, char **argv) {
	int iItemToPlace = ITEM_ORE_STONE;
	int iInventoryOffset = 0;
	int iInventoryPointer = 0;
	int iInventorySelection = -1;
	int iLookX = 0;
	int iLookY = 0;
	int iNewX = 0;
	int iNewY = 0;
	int iSelect = 0;
	TCOD_key_t tKey;
	char cCharCode;

	bool bTurnOver = false;

	globalsInit();

	TCOD_console_set_custom_font("terminal8x8_gs_ro.png", TCOD_FONT_TYPE_GREYSCALE | TCOD_FONT_LAYOUT_ASCII_INROW, 16, 16);
	TCOD_console_init_root(100, 75, "RogueCraft", false);
	TCOD_console_set_background_color(NULL, TCOD_black);
	TCOD_console_set_foreground_color(NULL, TCOD_light_grey);

	g_tcodMap = TCOD_map_new(DEF_WORLD_X, DEF_WORLD_Y);

	mapClear();
	generateBSPtoMap(true);
	itemPopulate(ITEM_ORE_IRON, 0, 45, 100);
	itemPopulate(ITEM_ORE_COPPER, 0, 35, 100);
	itemPopulate(ITEM_ORE_STONE_WEAK, 0, 25, 100);

	/* Populate a torch ... or three. */
	itemPopulate(25, 1, 35, 100);
	mapRemapLight(25);

	playerInit();

	TCOD_map_compute_fov(g_tcodMap, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, (int)g_ego.m_fFOVDistance, true, FOV_SHADOW);
	iNewX = g_ego.m_stats.m_iWorldX;
	iNewY = g_ego.m_stats.m_iWorldY;

	/* Debug code for inventory management */
	inventoryAdd(&g_ego.m_inventory, 30, 1);
	inventoryAdd(&g_ego.m_inventory, 31, 1);

	g_iGameMode = MODE_INTRO;

	npcPopulate(1, 1, 55, 100);

	while (!TCOD_console_is_window_closed()) {
		tKey = TCOD_console_check_for_keypress(TCOD_KEY_PRESSED);
		cCharCode = tolower(tKey.c);

		/* Global inputs */
		switch (tKey.vk) {
			case TCODK_ESCAPE:
				if (g_iGameMode != MODE_GAME && g_iGameMode != MODE_INTRO) {
					if (g_iGameMode == MODE_LOOK) {
						iNewX = g_ego.m_stats.m_iWorldX;
						iNewY = g_ego.m_stats.m_iWorldY;
						TCOD_console_put_char(NULL, iLookX, iLookY, 0, TCOD_BKGND_NONE);
					}
					g_iGameMode = MODE_GAME;
					inventoryClear();
				}
				else {
					TCOD_console_delete(NULL);
					SDL_Quit();
					return 1;
				}
				break;
			case TCODK_PRINTSCREEN:
				TCOD_sys_save_screenshot(NULL);
				break;
			case TCODK_KP1:
				iNewX--;
				iNewY++;
				break;
			case TCODK_KP2:
				iNewY++;
				break;
			case TCODK_KP3:
				iNewX++;
				iNewY++;
				break;
			case TCODK_KP4:
				iNewX--;
				break;
			case TCODK_KP6:
				iNewX++;
				break;
			case TCODK_KP7:
				iNewX--;
				iNewY--;
				break;
			case TCODK_KP8:
				iNewY--;
				break;
			case TCODK_KP9:
				iNewX++;
				iNewY--;
				break;
			default:
				break;
		}

		/* Mode inputs */
		switch (g_iGameMode) {
			case MODE_INTRO:
				TCOD_console_clear(NULL);
				scene_intro();
				scene_intro_input(tKey, cCharCode);
				break;
			case MODE_GAME:
				mapDraw();
				inventoryDrawBorder();
				playerStatsList();
				consoleDraw();
				consoleInputDraw();

				TCOD_console_put_char(NULL, 76, 33 + iInventoryPointer, 16, TCOD_BKGND_NONE);
				TCOD_console_put_char(NULL, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, '@', TCOD_BKGND_NONE);
				iInventorySelection = inventoryList(&g_ego.m_inventory, iInventoryPointer, iInventoryOffset);
				TCOD_console_print_left(NULL, 78, 31, TCOD_BKGND_NONE, "Inventory");

				if (tKey.vk >= TCODK_KP1 && tKey.vk <= TCODK_KP9) {
					if (iNewX >= 0 && iNewX < DEF_WORLD_X && iNewY >= 0 && iNewY < DEF_WORLD_Y) {
						if (g_npcMap[iNewX][iNewY] == NULL) {
							if (g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bWalkable) {
								g_ego.m_stats.m_iWorldX = iNewX;
								g_ego.m_stats.m_iWorldY = iNewY;
								TCOD_console_put_char(NULL, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, ' ', TCOD_BKGND_NONE);
								g_itemData[g_iWorld[iNewX][iNewY]].m_vFunc(ACT_WALK_ONTO, iNewX, iNewY, NULL);
							}
							else {
								g_itemData[g_iWorld[iNewX][iNewY]].m_vFunc(ACT_WALK_INTO, iNewX, iNewY, NULL);
								iNewX = g_ego.m_stats.m_iWorldX;
								iNewY = g_ego.m_stats.m_iWorldY;
								mapMakeFOV();
								inventoryClear();
							}
						}
						else {
							/* We've bumped into an NPC. */
							g_npcMap[iNewX][iNewY]->m_vFunc(ACT_WALK_INTO, iNewX, iNewY, g_npcMap[iNewX][iNewY]);
							iNewX = g_ego.m_stats.m_iWorldX;
							iNewY = g_ego.m_stats.m_iWorldY;
						}
						TCOD_map_compute_fov(g_tcodMap, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, (int)g_ego.m_fFOVDistance, true, FOV_SHADOW);
						TCOD_map_set_properties(g_tcodMap, iNewX, iNewY, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bTransparent, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bWalkable);
						TCOD_map_copy(g_tcodMap, g_tcodLightmap);
						mapRemapLight(25);
						playerCalcVisibility();
						bTurnOver = true;
					}
				}

				switch (cCharCode) {
					case 'q': /* Place block (why q?) */
						g_iGameMode = MODE_BLOCK;
						consoleAdd("Place where?");
						break;
					case 'o': /* Open something */
						g_iGameMode = MODE_OPEN;
						consoleAdd("Open where?");
						break;
					case 'l': /* Look around */
						g_iGameMode = MODE_LOOK;
						iLookX = g_ego.m_stats.m_iWorldX;
						iLookY = g_ego.m_stats.m_iWorldY;
						iNewX = iLookX;
						iNewY = iLookY;
						playerLook(iLookX, iLookY);
						inventoryClear();
						iInventoryOffset = 0;
						iInventoryPointer = 0;
						consoleAdd("Looking around...");
						break;
					case 'e': /* Equip selected item in inventory */
						g_itemData[iInventorySelection].m_vFunc(ACT_EQUIP, 0, 0,(void *)(iInventorySelection));
						break;
					case 'd': /* Dequip an item */
						g_iGameMode = MODE_DEQUIP;
						consoleAdd("Remove what?");
						break;
					case 14: /* Up arrow (move inventory pointer) */
						if (iInventoryPointer > 0) {
							TCOD_console_put_char(NULL, 76, 33 + iInventoryPointer, 32, TCOD_BKGND_NONE);
							iInventoryPointer--;
						}
						else
							iInventoryOffset--;
						break;
					case 17: /* Down arrow (move inventory pointer) */
						if (iInventoryPointer < 9) {
							TCOD_console_put_char(NULL, 76, 33 + iInventoryPointer, 32, TCOD_BKGND_NONE);
							iInventoryPointer++;
						}
						else
							iInventoryOffset++;
						break;
					case 64: /* Space */
						g_iGameMode = MODE_CONSOLE_INPUT;
						break;
					default:
						break;
				}
				break;
			case MODE_BLOCK:
				if (tKey.vk >= TCODK_KP1 && tKey.vk <= TCODK_KP9) {
					if (iNewX >= 0 && iNewX < DEF_WORLD_X && iNewY >= 0 && iNewY < DEF_WORLD_Y) {
						g_itemData[iItemToPlace].m_vFunc(ACT_PLACE_ONTO, iNewX, iNewY, (void *)iItemToPlace);
						mapMakeFOV();
						g_iGameMode = MODE_GAME;
						TCOD_map_compute_fov(g_tcodMap, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, (int)g_ego.m_fFOVDistance, true, FOV_SHADOW);
						TCOD_map_set_properties(g_tcodMap, iNewX, iNewY, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bTransparent, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bWalkable);
						TCOD_map_copy(g_tcodMap, g_tcodLightmap);
						mapRemapLight(25);
						playerCalcVisibility();
						bTurnOver = true;
					}
				}
				else {
					if (cCharCode == '1')
						iItemToPlace = ITEM_ORE_STONE;
					if (cCharCode == '2')
						iItemToPlace = ITEM_ORE_IRON;
					if (cCharCode == '3')
						iItemToPlace = ITEM_ORE_COPPER;
					if (cCharCode == '4')
						iItemToPlace = ITEM_ORE_SILVER;
					if (cCharCode == '5')
						iItemToPlace = ITEM_ORE_GOLD;
				}
				break;
			case MODE_OPEN:
				if (tKey.vk >= TCODK_KP1 && tKey.vk <= TCODK_KP9) {
					if (iNewX >= 0 && iNewX < DEF_WORLD_X && iNewY >= 0 && iNewY < DEF_WORLD_Y) {
						g_itemData[g_iWorld[iNewX][iNewY]].m_vFunc(ACT_OPEN, iNewX, iNewY, NULL);
						mapMakeFOV();
						g_iGameMode = MODE_GAME;
						TCOD_map_compute_fov(g_tcodMap, g_ego.m_stats.m_iWorldX, g_ego.m_stats.m_iWorldY, (int)g_ego.m_fFOVDistance, true, FOV_SHADOW);
						TCOD_map_set_properties(g_tcodMap, iNewX, iNewY, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bTransparent, g_itemData[g_iWorld[iNewX][iNewY]].m_stats.m_bWalkable);
						TCOD_map_copy(g_tcodMap, g_tcodLightmap);
						mapRemapLight(25);
						playerCalcVisibility();
						bTurnOver = true;
					}
				}
				break;
			case MODE_DEQUIP:
				switch (cCharCode) {
					case '1':
						iSelect = g_ego.m_equipment.m_iHand_L;
						g_ego.m_equipment.m_iHand_L = ITEM_NOTHING;
						break;
					case '2':
						iSelect = g_ego.m_equipment.m_iHand_R;
						g_ego.m_equipment.m_iHand_R = ITEM_NOTHING;
						break;
					case '3':
						iSelect = g_ego.m_equipment.m_iHead;
						g_ego.m_equipment.m_iHead = ITEM_NOTHING;
						break;
					case '4':
						iSelect = g_ego.m_equipment.m_iEar_L;
						g_ego.m_equipment.m_iEar_L = ITEM_NOTHING;
						break;
					case '5':
						iSelect = g_ego.m_equipment.m_iEar_R;
						g_ego.m_equipment.m_iEar_R = ITEM_NOTHING;
						break;
					case '6':
						iSelect = g_ego.m_equipment.m_iFace;
						g_ego.m_equipment.m_iFace = ITEM_NOTHING;
						break;
					case '7':
						iSelect = g_ego.m_equipment.m_iNeck;
						g_ego.m_equipment.m_iNeck = ITEM_NOTHING;
						break;
					case '8':
						iSelect = g_ego.m_equipment.m_iBack;
						g_ego.m_equipment.m_iBack = ITEM_NOTHING;
						break;
					case '9':
						iSelect = g_ego.m_equipment.m_iChest;
						g_ego.m_equipment.m_iChest = ITEM_NOTHING;
						break;
					case '0':
						iSelect = g_ego.m_equipment.m_iHands;
						g_ego.m_equipment.m_iHands = ITEM_NOTHING;
						break;
					case 'a':
						iSelect = g_ego.m_equipment.m_iWaist;
						g_ego.m_equipment.m_iWaist = ITEM_NOTHING;
						break;
					case 'b':
						iSelect = g_ego.m_equipment.m_iLegs;
						g_ego.m_equipment.m_iLegs = ITEM_NOTHING;
						break;
					case 'c':
						iSelect = g_ego.m_equipment.m_iFeet;
						g_ego.m_equipment.m_iFeet = ITEM_NOTHING;
						break;
					default:
						break;
				}
				if (iSelect != 0) {
					g_itemData[iSelect].m_vFunc(ACT_DEQUIP, 0, 0,(void *)(iSelect));
					g_iGameMode = MODE_GAME;
				}
				break;
			case MODE_LOOK:
				if (tKey.vk >= TCODK_KP1 && tKey.vk <= TCODK_KP9) {
					if (iNewX >= 0 && iNewX < DEF_WORLD_X && iNewY >= 0 && iNewY < DEF_WORLD_Y) {
						TCOD_console_put_char(NULL, iLookX, iLookY, 0, TCOD_BKGND_NONE);
						iLookX = iNewX;
						iLookY = iNewY;
						playerLook(iLookX, iLookY);
						inventoryClear();
						iInventoryOffset = 0;
						iInventoryPointer = 0;
					}
				}
				TCOD_console_put_char(NULL, iLookX, iLookY, 4, TCOD_BKGND_NONE);
				iInventorySelection = inventoryList(&g_itemLook, iInventoryPointer, iInventoryOffset);
				playerLook(iLookX, iLookY);
				break;
			case MODE_CONSOLE_INPUT:
				switch (tKey.vk) {
					case TCODK_ENTER:
						consoleAdd(g_cConsoleInput);
						consoleInputClear();
						g_iGameMode = MODE_GAME;
						break;
					case TCODK_BACKSPACE:
						consoleInputDel();
						break;
					default:
						if (cCharCode >= 32 && cCharCode <= 126)
							consoleInputAdd(cCharCode);
						break;
				}
				break;
			default:
				break;
		}

		if (bTurnOver) {
			npcExecute(&g_npcList);
			bTurnOver = false;
		}

		TCOD_console_flush();
	}
	return 1;
}