Advertisement
Guest User

Untitled

a guest
May 19th, 2019
95
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 35.91 KB | None | 0 0
  1. #include <iostream>
  2. #include <conio.h>
  3. #include<windows.h>
  4. using namespace std;
  5.  
  6. struct player
  7. {
  8. char sprite[17] = { '_','_','_','|','O','-','o','|','/','|','_','_','_','|','\\','|','|' };
  9. int Hrp = 10, dir2 = 0;
  10. int Hcp = 14, dir = 0, lvldir = 0, templvldir = 0;
  11. int orientation = 0;
  12. char healthbar = { '-' };
  13. int heart = 3;
  14. int health = 100;
  15. int money = 0;
  16. int kills = 0;
  17. int reward = 0;
  18. int level = 1;
  19. int levelct = 0;
  20. int reset = 0;
  21. char interact_draw[12] = { '[','E',']',' ','I','n','t','e','r','a','c','t' };
  22. int interact = 0, interact_trigger = 0;
  23. char pickup_draw[10] = { '[','S',']',' ','P','i','c','k','u','p' };
  24. int pickup = 0, pickup_trigger = 0, portalgo = 0, portal_trigger = 0;
  25. int jump = 0, jump_trigger = 0, gravity = 0;
  26. char portinter_draw[10] = { '[','I',']',' ','P','o','r','t','a','l' };
  27. };
  28.  
  29. struct npcs
  30. {
  31. //Random NPC
  32. int NPC_rp = 15;
  33. int NPC_cp = 40;
  34. char Rsprite[18] = { '_','_','_','|','O','_','o','|','/','|','_','_','_','|','\\','|','|', '-' };
  35. int NPC_Rand = 0;
  36. int NPC_Rand_terminate = 0;
  37.  
  38. //Enemy NPC
  39. int Erp = 15;
  40. int Ecp = 70;
  41. char esprite[17] = { '_','\\','_','|','@','-','@','|','c','|','_','_','_','|','c','|','|' };
  42. char epistol[3] = { '-','-','-' };
  43. int NPC_En = 0;
  44. int NPC_En_terminate = 0;
  45. int En_aggro = 0;
  46.  
  47. //Enemy Dog
  48. int Drp = 15;
  49. int Dcp = 57;
  50. char dsprite[11] = { '-', '-','-','_','_','_','/','/','\\', '-', '-' };
  51. int En_D = 0;
  52. int En_D_terminate = 0;
  53. int En_D_aggro = 0;
  54. int Ddmg = 0;
  55.  
  56. //Enemy Slime
  57. int SLrp = 15;
  58. int SLcp = 60;
  59. char Ssprite[15] = { '_', '_', '_', '_', '|', '@', '@', '|', '|', '_', '_', '_', '_', '|' };
  60. int En_Sl = 0;
  61. int En_Sl_terminate = 0;
  62. int En_Sl_aggro;
  63. int Sldmg = 0;
  64.  
  65. //Shop NPC
  66. int Srp = 15;
  67. int Scp = 40;
  68. char interaction22[17] = { 'H','e','l','l','o',' ','T','r','a','v','e','l','l','e','r','!','\0' };
  69. int NPC_Shop;
  70. int NPC_Shop_terminate = 0;
  71.  
  72. //NPC chat dialogs
  73. char interaction1[26] = { 'H','E','L','P','!',' ','P','l','e','a','s','e',' ','h','e','l','p',' ','i','m',' ','h','u','r','t', '!' };
  74. char interaction2[48] = { 'A',' ','r','o','b','o','t',' ','c','a','m','e',' ','a','n','d',' ','k','i','d','n','a','p','p','e','d',' ','m','y',' ','d','a','u','g','h','t','e','r','!' };
  75. char interaction3[29] = { 'U','s','e',' ','t','h','e',' ','p','i','s','t','o','l',' ','o','n',' ','t','h','e',' ','g','r','o', 'u','n','d', '\0' };
  76. char interaction4[12] = { 'M','r',' ','H','o','u', 'o', 'u', 'o', 'i' , 'n' , '\0' };
  77. char interaction5[11] = { 'E','N','E','M','Y',' ','R', 'O', 'B', 'O', 'T' };
  78. char interaction6[29] = { 'T','H','A','N','K',' ','Y','O','U','!',' ','Y','o','u',' ','s','a','v','e','d',' ','m','y',' ','g', 'i', 'r', 'l','!' };
  79. char interaction7[20] = { 'H','e','r','e',' ','i','s',' ','y','o','u','r',' ','r','e','w','a','r','d','.' };
  80. };
  81.  
  82. struct items
  83. {
  84. char inventory_draw[2] = { '_', '|' };
  85. int inventory = 0;
  86. char pistol_draw[3] = { '-', '-', '-' };
  87. int pistol = 0;
  88. char sword_draw[5] = { '+','-','/','-','\\' };
  89. int sword = 0;
  90. int swordtrigger = 0;
  91. };
  92.  
  93. struct attack
  94. {
  95. int Brp = 0, Bcp = 0, firetrigger = 0, damage = 0, bulletpos = 0, Bdir = 0, Bdir2 = 0;
  96. char Bsprite = '-';
  97. int En_Brp = 0, En_Bcp = 0, En_firetrigger = 0, En_damage = 0, En_bulletpos = 0, En_Bdir = 0, En_Bdir2 = 0;
  98. char En_Bsprite = 'o';
  99. };
  100.  
  101. struct objects
  102. {
  103. char portsprite = 177;
  104. int portrp = 15;
  105. int portcp = 78;
  106. int portalcheck = 0;
  107. };
  108.  
  109. struct Elevator
  110. {
  111. char elvsprite = '@';
  112. int elvrp = 18, elvdir = 0;
  113. int elvcp = 171;
  114. int trigelv = 0;
  115. int elvcount = 0;
  116. int elvstep = 0;
  117. };
  118.  
  119. class Doggie
  120. {
  121. public:
  122. //Enemy Dog
  123. int Drp = 15;
  124. int Dcp = 57, Ddir = 0;
  125. char dsprite[11] = { '-', '-','-','_','_','_','/','/','\\', '-', '-' };
  126. int En_D = 1;
  127. int En_D_terminate = 0;
  128. int En_D_aggro = 0;
  129. int Ddmg = 0;
  130. int Dcount = 0;
  131. int change = 1;
  132.  
  133. void movedoggie()
  134. {
  135. if (En_D != 0)
  136. {
  137. Ddir = 0;
  138. Dcount++;
  139. if (Dcount % 4 == 0)
  140. {
  141. Dcp--, Ddir = -1;
  142. }
  143. }
  144.  
  145. }
  146. void setdoggie(char game[][80])
  147. {
  148. if (En_D == 1)
  149. {
  150. game[Drp][Dcp - Ddir] = ' ';
  151. game[Drp][Dcp + 1 - Ddir] = ' ';
  152. game[Drp][Dcp + 2 - Ddir] = ' ';
  153. game[Drp][Dcp + 3 - Ddir] = ' ';
  154. game[Drp][Dcp + 4 - Ddir] = ' ';
  155. game[Drp][Dcp + 5 - Ddir] = ' ';
  156. game[Drp][Dcp + 6 - Ddir] = ' ';
  157. game[Drp + 1][Dcp + 3 - Ddir] = ' ';
  158. //game[d[1].Drp + 1][z.Dcp + 4] = z.dsprite[8]; (when running)
  159. game[Drp + 1][Dcp + 5 - Ddir] = ' ';
  160. //game[d[1].Drp + 1][z.Dcp + 6] = z.dsprite[10]; (when running)
  161.  
  162. //Doggie Enemy
  163. game[Drp][Dcp] = dsprite[0]; //nose
  164. game[Drp][Dcp + 1] = dsprite[1]; //face
  165. game[Drp][Dcp + 2] = dsprite[2]; //ears
  166. game[Drp][Dcp + 3] = dsprite[3]; //body
  167. game[Drp][Dcp + 4] = dsprite[4]; //body
  168. game[Drp][Dcp + 5] = dsprite[5]; //body
  169. game[Drp][Dcp + 6] = dsprite[6]; //body
  170. game[Drp + 1][Dcp + 3] = dsprite[7]; //left leg
  171. //game[d[1].Drp + 1][z.Dcp + 4] = z.dsprite[8]; (when running)
  172. game[Drp + 1][Dcp + 5] = dsprite[9]; // right leg
  173. //game[d[1].Drp + 1][z.Dcp + 6] = z.dsprite[10]; (when running)
  174. }
  175. }
  176. };
  177.  
  178. class EnemyNPC
  179. {
  180. public:
  181. //Enemy NPC
  182. int Erp = 15;
  183. int Ecp = 70;
  184. char esprite[17] = { '_','\\','_','|','@','-','@','|','c','|','_','_','_','|','c','|','|' };
  185. char epistol[3] = { '-','-','-' };
  186. int NPC_En = 0;
  187. int NPC_En_terminate = 0;
  188. int En_aggro = 0;
  189. };
  190.  
  191. void controller(char game[][80], char keyB, player &x, items &i, attack &a, Elevator&e)
  192. {
  193. if (keyB == 'a' || keyB == 'A')
  194. {
  195.  
  196. x.orientation = 1;
  197. if (game[x.Hrp + 1][x.Hcp - 3] != '#')
  198. {
  199. if (x.level < 4)
  200. {
  201. x.Hcp--, x.dir = -1;
  202. }
  203. else
  204. {
  205. if (x.level == 4)
  206. {
  207. if (x.lvldir >= 101)
  208. {
  209. x.Hcp--, x.dir = -1;
  210. x.templvldir++;
  211. }
  212. else if (x.lvldir != 0)
  213. {
  214. x.lvldir--;
  215. }
  216. }
  217. else if (x.lvldir != 0)
  218. {
  219. x.lvldir--;
  220. }
  221. }
  222. }
  223. }
  224. if (keyB == 'd' || keyB == 'D')
  225. {
  226. x.orientation = 0;
  227. if (game[x.Hrp + 1][x.Hcp + 7] != '#')
  228. {
  229. if (x.level < 4)
  230. {
  231. x.Hcp++, x.dir = 1;
  232. }
  233. else
  234. {
  235. if (x.level == 4)
  236. {
  237. if (x.lvldir < 101)
  238. {
  239. x.lvldir++;
  240. }
  241. else
  242. {
  243. x.Hcp++, x.dir = 1;
  244. }
  245. }
  246. else
  247. {
  248. x.lvldir++;
  249. }
  250. }
  251. }
  252. }
  253. if (keyB == 'w' || keyB == 'W' || keyB == 32)
  254. {
  255. if (x.gravity == 0)
  256. {
  257. if (x.jump_trigger == 0 && game[x.Hrp + 4][x.Hcp] == '#' || game[x.Hrp + 4][x.Hcp] == '@')
  258. {
  259. x.jump_trigger = 1;
  260. }
  261. }
  262. }
  263. if (keyB == 'x' || keyB == 'X')
  264. {
  265. if (i.pistol == 1 || i.sword == 1)
  266. {
  267. if (game[x.Hrp + 1][x.Hcp + 7] != '#')
  268. {
  269. if (a.firetrigger == 0)
  270. {
  271. a.Brp = x.Hrp + 2, a.Bcp = x.Hcp + 7;
  272. if (game[x.Hrp][x.Hcp + 1] != '#')
  273. {
  274. a.firetrigger = 1;
  275. }
  276. }
  277. }
  278. }
  279. }
  280. if (keyB == 'e' || keyB == 'E' || keyB == 13)
  281. {
  282. if (x.Hcp > 20)
  283. {
  284. x.interact++;
  285. }
  286. }
  287. if (keyB == 's' || keyB == 'S')
  288. {
  289. if (x.pickup_trigger == 1)
  290. {
  291. x.pickup = 1;
  292. }
  293. }
  294.  
  295. if (keyB == 'i' || keyB == 'I')
  296. {
  297. if (x.portal_trigger == 1)
  298. {
  299. x.portalgo = 1;
  300. }
  301. }
  302. }
  303.  
  304. void setlevels(char game[][80], char lvl[][400], player &x, Elevator &e, Doggie d[])
  305. {
  306.  
  307. for (int i = 0; i < 20; i++)
  308. for (int j = 0; j < 400; j++)
  309. lvl[i][j] = ' ';
  310. for (int i = 0; i < 80; i++)
  311. lvl[0][i] = ' ';
  312.  
  313. if (x.level == 1)
  314. {
  315. d[1].movedoggie();
  316. d[1].setdoggie(game);
  317. if (d[2].change == 1)
  318. {
  319. d[2].Dcp = 40;
  320. d[2].change = 0;
  321. }
  322. d[2].movedoggie();
  323. d[2].setdoggie(game);
  324. }
  325.  
  326. if (x.level == 4)
  327. {
  328. e.trigelv = 1;
  329.  
  330. if (e.trigelv == 1)
  331. {
  332. //erase elv
  333. lvl[e.elvrp + e.elvdir][e.elvcp] = ' ';
  334. lvl[e.elvrp + e.elvdir][e.elvcp + 1] = ' ';
  335. lvl[e.elvrp + e.elvdir][e.elvcp + 2] = ' ';
  336. lvl[e.elvrp + e.elvdir][e.elvcp + 3] = ' ';
  337.  
  338. //draw elv
  339. lvl[e.elvrp][e.elvcp] = e.elvsprite;
  340. lvl[e.elvrp][e.elvcp + 1] = e.elvsprite;
  341. lvl[e.elvrp][e.elvcp + 2] = e.elvsprite;
  342. lvl[e.elvrp][e.elvcp + 3] = e.elvsprite;
  343. }
  344. for (int i = 40; i < 70; i++)
  345. {
  346. lvl[14][i] = '#';
  347. }
  348.  
  349. int g = 0;
  350. for (int i = 1; i < 5; i++)
  351. {
  352. lvl[14 + i][40 - g] = '#';
  353. lvl[14 + i][40 - (g + 1)] = '#';
  354. lvl[14 + i][40 - (g + 2)] = '#';
  355. lvl[14 + i][40 - (g + 3)] = '#';
  356. g += 3;
  357. }
  358.  
  359.  
  360. for (int i = 100; i < 130; i++)
  361. {
  362. lvl[14][i] = '#';
  363. }
  364. for (int i = 141; i < 171; i++)
  365. {
  366. lvl[9][i] = '#';
  367. }
  368.  
  369. g = 0;
  370. for (int i = 1; i < 5; i++)
  371. {
  372. lvl[14 + i][100 - g] = '#';
  373. lvl[14 + i][100 - (g + 1)] = '#';
  374. lvl[14 + i][100 - (g + 2)] = '#';
  375. lvl[14 + i][100 - (g + 3)] = '#';
  376. g += 3;
  377. }
  378.  
  379. g = 0;
  380. for (int i = 1; i < 5; i++)
  381. {
  382. lvl[9 + i][141 - g] = '#';
  383. lvl[9 + i][141 - (g + 1)] = '#';
  384. lvl[9 + i][141 - (g + 2)] = '#';
  385. lvl[9 + i][141 - (g + 3)] = '#';
  386. g += 3;
  387. }
  388.  
  389. for (int i = 1; i < 19; i++)
  390. {
  391. for (int j = 1; j < 79; j++)
  392. {
  393. game[i][j] = lvl[i][j + x.lvldir];
  394. }
  395. }
  396. }
  397. }
  398.  
  399. void setplayer(char game[][80], player &x)
  400. {
  401. if (x.level > 1 && x.reset == 1)
  402. {
  403. game[x.Hrp][x.Hcp] = ' '; //head
  404. game[x.Hrp][x.Hcp + 1] = ' '; //head
  405. game[x.Hrp][x.Hcp + 2] = ' '; //head
  406. game[x.Hrp + 1][x.Hcp - 1] = ' '; //head
  407. game[x.Hrp + 1][x.Hcp] = ' '; //left eye
  408. game[x.Hrp + 1][x.Hcp + 1] = ' '; //mouth
  409. game[x.Hrp + 1][x.Hcp + 2] = ' '; //right eye
  410. game[x.Hrp + 1][x.Hcp + 3] = ' '; //head
  411. game[x.Hrp + 2][x.Hcp - 2] = ' '; //left arm
  412. game[x.Hrp + 2][x.Hcp - 1] = ' '; //body
  413. game[x.Hrp + 2][x.Hcp] = ' '; //body
  414. game[x.Hrp + 2][x.Hcp + 1] = ' '; //body
  415. game[x.Hrp + 2][x.Hcp + 2] = ' '; //body
  416. game[x.Hrp + 2][x.Hcp + 3] = ' '; //body
  417. game[x.Hrp + 3][x.Hcp] = ' '; //left leg
  418. game[x.Hrp + 3][x.Hcp + 2] = ' '; //right leg
  419. game[x.Hrp + 2 - x.dir2][x.Hcp + 4 - x.dir] = ' ';
  420. game[x.Hrp + 2 - x.dir2][x.Hcp + 5 - x.dir] = ' ';
  421. game[x.Hrp + 2 - x.dir2][x.Hcp + 6 - x.dir] = ' ';
  422. x.Hrp = 10, x.Hcp = 14;
  423. x.reset = 0;
  424. }
  425. game[x.Hrp - x.dir2][x.Hcp - x.dir] = ' '; //head
  426. game[x.Hrp - x.dir2][x.Hcp + 1 - x.dir] = ' '; //head
  427. game[x.Hrp - x.dir2][x.Hcp + 2 - x.dir] = ' '; //head
  428. game[x.Hrp + 1 - x.dir2][x.Hcp - 1 - x.dir] = ' '; //head
  429. game[x.Hrp + 1 - x.dir2][x.Hcp - x.dir] = ' '; //left eye
  430. game[x.Hrp + 1 - x.dir2][x.Hcp + 1 - x.dir] = ' '; //mouth
  431. game[x.Hrp + 1 - x.dir2][x.Hcp + 2 - x.dir] = ' '; //right eye
  432. game[x.Hrp + 1 - x.dir2][x.Hcp + 3 - x.dir] = ' '; //head
  433. game[x.Hrp + 2 - x.dir2][x.Hcp - 2 - x.dir] = ' '; //left arm
  434. game[x.Hrp + 2 - x.dir2][x.Hcp - 1 - x.dir] = ' '; //body
  435. game[x.Hrp + 2 - x.dir2][x.Hcp - x.dir] = ' '; //body
  436. game[x.Hrp + 2 - x.dir2][x.Hcp + 1 - x.dir] = ' '; //body
  437. game[x.Hrp + 2 - x.dir2][x.Hcp + 2 - x.dir] = ' '; //body
  438. game[x.Hrp + 2 - x.dir2][x.Hcp + 3 - x.dir] = ' '; //body
  439. game[x.Hrp + 3 - x.dir2][x.Hcp - x.dir] = ' '; //left leg
  440. game[x.Hrp + 3 - x.dir2][x.Hcp + 2 - x.dir] = ' '; //right leg
  441. game[x.Hrp][x.Hcp] = x.sprite[0]; //head
  442. game[x.Hrp][x.Hcp + 1] = x.sprite[1]; //head
  443. game[x.Hrp][x.Hcp + 2] = x.sprite[2]; //head
  444. game[x.Hrp + 1][x.Hcp - 1] = x.sprite[3]; //head
  445. if (x.orientation == 0)
  446. {
  447. game[x.Hrp + 1][x.Hcp] = x.sprite[4]; //left eye
  448. }
  449. else
  450. {
  451. game[x.Hrp + 1][x.Hcp] = x.sprite[6]; //left eye
  452. }
  453. game[x.Hrp + 1][x.Hcp + 1] = x.sprite[5]; //mouth
  454. if (x.orientation == 0)
  455. {
  456. game[x.Hrp + 1][x.Hcp + 2] = x.sprite[6]; //right eye
  457. }
  458. else
  459. {
  460. game[x.Hrp + 1][x.Hcp + 2] = x.sprite[4]; //right eye
  461. }
  462. game[x.Hrp + 1][x.Hcp + 3] = x.sprite[7]; //head
  463. game[x.Hrp + 2][x.Hcp - 2] = x.sprite[8]; //left arm
  464. game[x.Hrp + 2][x.Hcp - 1] = x.sprite[9]; //body
  465. game[x.Hrp + 2][x.Hcp] = x.sprite[10]; //body
  466. game[x.Hrp + 2][x.Hcp + 1] = x.sprite[11]; //body
  467. game[x.Hrp + 2][x.Hcp + 2] = x.sprite[12]; //body
  468. game[x.Hrp + 2][x.Hcp + 3] = x.sprite[13]; //body
  469. game[x.Hrp + 3][x.Hcp] = x.sprite[15]; //left leg
  470. game[x.Hrp + 3][x.Hcp + 2] = x.sprite[16]; //right leg
  471.  
  472. //Left overs fix
  473. if (game[x.Hrp + 2][x.Hcp + 7] == '-')
  474. {
  475. game[x.Hrp + 2][x.Hcp + 7] = ' ';
  476. }
  477. if (game[x.Hrp + 3][x.Hcp + 3] == '|')
  478. {
  479. game[x.Hrp + 3][x.Hcp + 3] = ' ';
  480. }
  481. if (game[x.Hrp + 3][x.Hcp - 1] == '|')
  482. {
  483. game[x.Hrp + 3][x.Hcp - 1] = ' ';
  484. }
  485. if (game[x.Hrp + 2][x.Hcp - 3] == '/')
  486. {
  487. game[x.Hrp + 2][x.Hcp - 3] = ' ';
  488. }
  489. if (game[x.Hrp + 3][x.Hcp + 1] == '|')
  490. {
  491. game[x.Hrp + 3][x.Hcp + 1] = ' ';
  492. }
  493. }
  494.  
  495. void inventory(char game[][80], player &x, items &i, attack &a)
  496. {
  497. for (int i = 50; i < 73; i++)
  498. {
  499. game[1][i] = '_';
  500. game[3][i] = '_';
  501. }
  502. for (int i = 2; i < 4; i++)
  503. {
  504. game[i][49] = '|';
  505. game[i][55] = '|';
  506. game[i][61] = '|';
  507. game[i][67] = '|';
  508. game[i][73] = '|';
  509. }
  510. if (i.pistol == 1)
  511. {
  512. game[2][51] = i.pistol_draw[0];
  513. game[2][52] = i.pistol_draw[1];
  514. game[2][53] = i.pistol_draw[2];
  515.  
  516. game[x.Hrp + 2 - x.dir2][x.Hcp + 4 - x.dir] = ' ';
  517. game[x.Hrp + 2 - x.dir2][x.Hcp + 5 - x.dir] = ' ';
  518. game[x.Hrp + 2 - x.dir2][x.Hcp + 6 - x.dir] = ' ';
  519. game[x.Hrp + 2][x.Hcp + 4] = i.pistol_draw[0];
  520. game[x.Hrp + 2][x.Hcp + 5] = i.pistol_draw[1];
  521. game[x.Hrp + 2][x.Hcp + 6] = i.pistol_draw[2];
  522. a.Bsprite = '>';
  523. game[a.Brp][a.Bcp - a.Bdir] = ' ';
  524. game[a.Brp][a.Bcp] = a.Bsprite;
  525. }
  526. if (i.sword == 1)
  527. {
  528. game[x.Hrp + 2 - x.dir2][x.Hcp + 4 - x.dir] = ' ';
  529. game[x.Hrp + 2 - x.dir2][x.Hcp + 5 - x.dir] = ' ';
  530. game[x.Hrp + 2 - x.dir2][x.Hcp + 6 - x.dir] = ' ';
  531. game[x.Hrp + 2][x.Hcp + 4] = i.sword_draw[0];
  532. game[x.Hrp + 2][x.Hcp + 5] = i.sword_draw[1];
  533. game[x.Hrp + 2][x.Hcp + 6] = i.sword_draw[1];
  534. a.Bsprite = ')';
  535. game[a.Brp][a.Bcp - a.Bdir] = ' ';
  536. game[a.Brp][a.Bcp + 1 - a.Bdir] = ' ';
  537. game[a.Brp][a.Bcp] = a.Bsprite;
  538. game[a.Brp][a.Bcp + 1] = a.Bsprite;
  539. }
  540. if (i.pistol != 1 && i.sword != 1)
  541. {
  542. game[x.Hrp + 2 - x.dir2][x.Hcp + 4 - x.dir] = ' '; //right arm
  543. }
  544. if (i.pistol != 1 && i.sword != 1)
  545. {
  546. game[x.Hrp + 2][x.Hcp + 4] = x.sprite[14]; //right arm
  547. }
  548. }
  549.  
  550. void npc(char game[][80], player &x, npcs &z)
  551. {
  552. int ct = 0;
  553. if (z.NPC_Rand == 1)
  554. {
  555. game[z.NPC_rp][z.NPC_cp] = z.Rsprite[0]; //head
  556. game[z.NPC_rp][z.NPC_cp + 1] = z.Rsprite[1]; //head
  557. game[z.NPC_rp][z.NPC_cp + 2] = z.Rsprite[2]; //head
  558. game[z.NPC_rp + 1][z.NPC_cp - 1] = z.Rsprite[3]; //head
  559. game[z.NPC_rp + 1][z.NPC_cp] = z.Rsprite[4]; //left eye
  560. game[z.NPC_rp + 1][z.NPC_cp + 1] = z.Rsprite[5]; //mouth
  561. game[z.NPC_rp + 1][z.NPC_cp + 2] = z.Rsprite[6]; //right eye
  562. game[z.NPC_rp + 1][z.NPC_cp + 3] = z.Rsprite[7]; //head
  563. game[z.NPC_rp + 2][z.NPC_cp - 2] = z.Rsprite[8]; //left arm
  564. game[z.NPC_rp + 2][z.NPC_cp - 1] = z.Rsprite[9]; //body
  565. game[z.NPC_rp + 2][z.NPC_cp] = z.Rsprite[10]; //body
  566. game[z.NPC_rp + 2][z.NPC_cp + 1] = z.Rsprite[11]; //body
  567. game[z.NPC_rp + 2][z.NPC_cp + 2] = z.Rsprite[12]; //body
  568. game[z.NPC_rp + 2][z.NPC_cp + 3] = z.Rsprite[13]; //body
  569. game[z.Srp + 2][z.Scp + 4] = z.Rsprite[14]; //right arm
  570. game[z.NPC_rp + 3][z.NPC_cp] = z.Rsprite[15]; //left leg
  571. game[z.NPC_rp + 3][z.NPC_cp + 2] = z.Rsprite[16]; //right leg
  572. game[z.NPC_rp + 3][z.NPC_cp - 3] = z.Rsprite[17]; //thingy
  573. for (int i = z.NPC_cp - 4; i < z.NPC_cp + 7; i++)
  574. {
  575. game[z.NPC_rp - 2][i] = z.interaction4[0 + ct];
  576. ct++;
  577. }
  578. }
  579. if (z.NPC_En == 1)
  580. {
  581. game[z.Erp][z.Ecp] = z.esprite[0]; //head
  582. game[z.Erp][z.Ecp + 1] = z.esprite[1]; //antenna left
  583. game[z.Erp][z.Ecp + 2] = z.esprite[2]; //head
  584. game[z.Erp + 1][z.Ecp - 1] = z.esprite[3]; //head
  585. game[z.Erp + 1][z.Ecp] = z.esprite[4]; //left eye
  586. game[z.Erp + 1][z.Ecp + 1] = z.esprite[5]; //mouth
  587. game[z.Erp + 1][z.Ecp + 2] = z.esprite[6]; //right eye
  588. game[z.Erp + 1][z.Ecp + 3] = z.esprite[7]; //head
  589. game[z.Erp + 2][z.Ecp - 2] = z.esprite[8]; //left arm
  590. game[z.Erp + 2][z.Ecp - 1] = z.esprite[9]; //body
  591. game[z.Erp + 2][z.Ecp] = z.esprite[10]; //body
  592. game[z.Erp + 2][z.Ecp + 1] = z.esprite[11]; //body
  593. game[z.Erp + 2][z.Ecp + 2] = z.esprite[12]; //body
  594. game[z.Erp + 2][z.Ecp + 3] = z.esprite[13]; //body
  595. game[z.Erp + 2][z.Ecp + 4] = z.esprite[14]; //right arm
  596. game[z.Erp + 3][z.Ecp] = z.esprite[15]; //left leg
  597. game[z.Erp + 3][z.Ecp + 2] = z.esprite[16]; //right leg
  598. game[z.Erp + 2][z.Ecp - 3] = z.epistol[0];
  599. game[z.Erp + 2][z.Ecp - 4] = z.epistol[1];
  600. game[z.Erp + 2][z.Ecp - 5] = z.epistol[2];
  601. game[z.Erp - 1][z.Ecp - 1] = x.healthbar;
  602. game[z.Erp - 1][z.Ecp] = x.healthbar;
  603. game[z.Erp - 1][z.Ecp + 1] = x.healthbar;
  604. game[z.Erp - 1][z.Ecp + 2] = x.healthbar;
  605. game[z.Erp - 1][z.Ecp + 3] = x.healthbar;
  606. }
  607. if (z.En_D == 1)
  608. {
  609. //Doggie Enemy
  610. game[z.Drp][z.Dcp] = z.dsprite[0]; //nose
  611. game[z.Drp][z.Dcp + 1] = z.dsprite[1]; //face
  612. game[z.Drp][z.Dcp + 2] = z.dsprite[2]; //ears
  613. game[z.Drp][z.Dcp + 3] = z.dsprite[3]; //body
  614. game[z.Drp][z.Dcp + 4] = z.dsprite[4]; //body
  615. game[z.Drp][z.Dcp + 5] = z.dsprite[5]; //body
  616. game[z.Drp][z.Dcp + 6] = z.dsprite[6]; //body
  617. game[z.Drp + 1][z.Dcp + 3] = z.dsprite[7]; //left leg
  618. //game[z.Drp + 1][z.Dcp + 4] = z.dsprite[8]; (when running)
  619. game[z.Drp + 1][z.Dcp + 5] = z.dsprite[9]; // right leg
  620. //game[z.Drp + 1][z.Dcp + 6] = z.dsprite[10]; (when running)
  621. game[z.Drp - 1][z.Dcp] = x.healthbar;
  622. game[z.Drp - 1][z.Dcp + 1] = x.healthbar;
  623. game[z.Drp - 1][z.Dcp + 2] = x.healthbar;
  624. }
  625. if (z.En_Sl == 1)
  626. {
  627. //Enemy Slime
  628. game[z.SLrp][z.SLcp + 1] = z.Ssprite[0]; //body
  629. game[z.SLrp][z.SLcp + 2] = z.Ssprite[1]; //body
  630. game[z.SLrp][z.SLcp + 3] = z.Ssprite[2]; //body
  631. game[z.SLrp][z.SLcp + 4] = z.Ssprite[3]; //body
  632. game[z.SLrp + 1][z.SLcp] = z.Ssprite[4]; //body
  633. game[z.SLrp + 1][z.SLcp + 1] = z.Ssprite[5]; //left eye
  634. game[z.SLrp + 1][z.SLcp + 3] = z.Ssprite[6]; //right eye
  635. game[z.SLrp + 1][z.SLcp + 5] = z.Ssprite[7]; //body
  636. game[z.SLrp + 2][z.SLcp] = z.Ssprite[8]; //body
  637. game[z.SLrp + 2][z.SLcp + 1] = z.Ssprite[9]; //body
  638. game[z.SLrp + 2][z.SLcp + 2] = z.Ssprite[10]; //mouth
  639. game[z.SLrp + 2][z.SLcp + 3] = z.Ssprite[11]; //body
  640. game[z.SLrp + 2][z.SLcp + 4] = z.Ssprite[12]; //body
  641. game[z.SLrp + 2][z.SLcp + 5] = z.Ssprite[13]; //body
  642. game[z.SLrp + 2][z.SLcp + 6] = z.Ssprite[14]; //body
  643. }
  644. if (z.NPC_Shop == 1)
  645. {
  646. game[z.Srp][z.Scp] = x.sprite[0]; //head
  647. game[z.Srp][z.Scp + 1] = x.sprite[1]; //head
  648. game[z.Srp][z.Scp + 2] = x.sprite[2]; //head
  649. game[z.Srp + 1][z.Scp - 1] = x.sprite[3]; //head
  650. game[z.Srp + 1][z.Scp] = x.sprite[4]; //left eye
  651. game[z.Srp + 1][z.Scp + 1] = x.sprite[5]; //mouth
  652. game[z.Srp + 1][z.Scp + 2] = x.sprite[6]; //right eye
  653. game[z.Srp + 1][z.Scp + 3] = x.sprite[7]; //head
  654. game[z.Srp + 2][z.Scp - 2] = x.sprite[8]; //left arm
  655. game[z.Srp + 2][z.Scp - 1] = x.sprite[9]; //body
  656. game[z.Srp + 2][z.Scp] = x.sprite[10]; //body
  657. game[z.Srp + 2][z.Scp + 1] = x.sprite[11]; //body
  658. game[z.Srp + 2][z.Scp + 2] = x.sprite[12]; //body
  659. game[z.Srp + 2][z.Scp + 3] = x.sprite[13]; //body
  660. game[z.Srp + 2][z.Scp + 4] = x.sprite[14]; //right arm
  661. game[z.Srp + 3][z.Scp] = x.sprite[15]; //left leg
  662. game[z.Srp + 3][z.Scp + 2] = x.sprite[16]; //right leg
  663. }
  664. if (z.NPC_Rand_terminate == 1)
  665. {
  666. game[z.NPC_rp][z.NPC_cp] = ' '; //head
  667. game[z.NPC_rp][z.NPC_cp + 1] = ' '; //head
  668. game[z.NPC_rp][z.NPC_cp + 2] = ' '; //head
  669. game[z.NPC_rp + 1][z.NPC_cp - 1] = ' '; //head
  670. game[z.NPC_rp + 1][z.NPC_cp] = ' '; //left eye
  671. game[z.NPC_rp + 1][z.NPC_cp + 1] = ' '; //mouth
  672. game[z.NPC_rp + 1][z.NPC_cp + 2] = ' '; //right eye
  673. game[z.NPC_rp + 1][z.NPC_cp + 3] = ' '; //head
  674. game[z.NPC_rp + 2][z.NPC_cp - 2] = ' '; //left arm
  675. game[z.NPC_rp + 2][z.NPC_cp - 1] = ' '; //body
  676. game[z.NPC_rp + 2][z.NPC_cp] = ' '; //body
  677. game[z.NPC_rp + 2][z.NPC_cp + 1] = ' '; //body
  678. game[z.NPC_rp + 2][z.NPC_cp + 2] = ' '; //body
  679. game[z.NPC_rp + 2][z.NPC_cp + 3] = ' '; //body
  680. game[z.NPC_rp + 2][z.NPC_cp + 4] = ' '; //right arm
  681. game[z.NPC_rp + 3][z.NPC_cp] = ' '; //left leg
  682. game[z.NPC_rp + 3][z.NPC_cp + 2] = ' '; //right leg
  683. game[z.NPC_rp + 3][z.NPC_cp - 3] = ' '; //thingy
  684. for (int i = z.NPC_cp - 4; i < z.NPC_cp + 7; i++)
  685. {
  686. game[z.NPC_rp - 2][i] = ' ';
  687. ct++;
  688. }
  689. }
  690. if (z.NPC_En_terminate == 1)
  691. {
  692. game[z.Erp][z.Ecp] = ' '; //head
  693. game[z.Erp][z.Ecp + 1] = ' '; //antenna left
  694. game[z.Erp][z.Ecp + 2] = ' '; //head
  695. game[z.Erp + 1][z.Ecp - 1] = ' '; //head
  696. game[z.Erp + 1][z.Ecp] = ' '; //left eye
  697. game[z.Erp + 1][z.Ecp + 1] = ' '; //mouth
  698. game[z.Erp + 1][z.Ecp + 2] = ' '; //right eye
  699. game[z.Erp + 1][z.Ecp + 3] = ' '; //head
  700. game[z.Erp + 2][z.Ecp - 2] = ' '; //left arm
  701. game[z.Erp + 2][z.Ecp - 1] = ' '; //body
  702. game[z.Erp + 2][z.Ecp] = ' '; //body
  703. game[z.Erp + 2][z.Ecp + 1] = ' '; //body
  704. game[z.Erp + 2][z.Ecp + 2] = ' '; //body
  705. game[z.Erp + 2][z.Ecp + 3] = ' '; //body
  706. game[z.Erp + 2][z.Ecp + 4] = ' '; //right arm
  707. game[z.Erp + 3][z.Ecp] = ' '; //left leg
  708. game[z.Erp + 3][z.Ecp + 2] = ' '; //right leg
  709. game[z.Erp + 2][z.Ecp - 3] = ' ';
  710. game[z.Erp + 2][z.Ecp - 4] = ' ';
  711. game[z.Erp + 2][z.Ecp - 5] = ' ';
  712. game[z.Erp - 1][z.Ecp - 1] = ' ';
  713. game[z.Erp - 1][z.Ecp] = ' ';
  714. game[z.Erp - 1][z.Ecp + 1] = ' ';
  715. game[z.Erp - 1][z.Ecp + 2] = ' ';
  716. game[z.Erp - 1][z.Ecp + 3] = ' ';
  717. }
  718. if (z.En_D_terminate == 1)
  719. {
  720. //Doggie Enemy
  721. game[z.Drp][z.Dcp] = ' ';
  722. game[z.Drp][z.Dcp + 1] = ' ';
  723. game[z.Drp][z.Dcp + 2] = ' ';
  724. game[z.Drp][z.Dcp + 3] = ' ';
  725. game[z.Drp][z.Dcp + 4] = ' ';
  726. game[z.Drp][z.Dcp + 5] = ' ';
  727. game[z.Drp][z.Dcp + 6] = ' ';
  728. game[z.Drp + 1][z.Dcp + 3] = ' ';
  729. //game[z.Drp + 1][z.Dcp + 4] = ' ';
  730. game[z.Drp + 1][z.Dcp + 5] = ' ';
  731. //game[z.Drp + 1][z.Dcp + 6] = ' ';
  732. }
  733. if (z.En_Sl_terminate == 1)
  734. {
  735. //Enemy Slime
  736. game[z.SLrp][z.SLcp + 1] = ' ';
  737. game[z.SLrp][z.SLcp + 2] = ' ';
  738. game[z.SLrp][z.SLcp + 3] = ' ';
  739. game[z.SLrp][z.SLcp + 4] = ' ';
  740. game[z.SLrp + 1][z.SLcp] = ' ';
  741. game[z.SLrp + 1][z.SLcp + 1] = ' ';
  742. game[z.SLrp + 1][z.SLcp + 3] = ' ';
  743. game[z.SLrp + 1][z.SLcp + 5] = ' ';
  744. game[z.SLrp + 2][z.SLcp] = ' ';
  745. game[z.SLrp + 2][z.SLcp + 1] = ' ';
  746. game[z.SLrp + 2][z.SLcp + 2] = ' ';
  747. game[z.SLrp + 2][z.SLcp + 3] = ' ';
  748. game[z.SLrp + 2][z.SLcp + 4] = ' ';
  749. game[z.SLrp + 2][z.SLcp + 5] = ' ';
  750. game[z.SLrp + 2][z.SLcp + 6] = ' ';
  751. }
  752. }
  753.  
  754. void elv(char lvl[][400], Elevator &e)
  755. {
  756. if (e.trigelv == 1)
  757. {
  758. //erase elv
  759. lvl[e.elvrp + e.elvdir][e.elvcp] = ' ';
  760. lvl[e.elvrp + e.elvdir][e.elvcp + 1] = ' ';
  761. lvl[e.elvrp + e.elvdir][e.elvcp + 2] = ' ';
  762. lvl[e.elvrp + e.elvdir][e.elvcp + 3] = ' ';
  763.  
  764. //draw elv
  765. lvl[e.elvrp][e.elvcp] = e.elvsprite;
  766. lvl[e.elvrp][e.elvcp + 1] = e.elvsprite;
  767. lvl[e.elvrp][e.elvcp + 2] = e.elvsprite;
  768. lvl[e.elvrp][e.elvcp + 3] = e.elvsprite;
  769. }
  770. }
  771.  
  772. void elevmove(char game[][80], char lvl[][400], player &x, Elevator &e)
  773. {
  774. if (e.trigelv != 0)
  775. {
  776. if (e.elvstep == 0)
  777. {
  778. e.elvdir = 0;
  779. e.elvcount++;
  780. if (e.elvcount % 4 == 0)
  781. {
  782. if (e.elvrp != 18)
  783. {
  784. if (game[x.Hrp + 4][x.Hcp + 2] == '@')
  785. {
  786. x.Hrp++, x.dir2 = 1;
  787. }
  788. e.elvrp++;
  789. e.elvdir = 1;
  790. }
  791. else
  792. {
  793. e.elvstep = 1;
  794. e.elvcount = 0;
  795. }
  796. }
  797. }
  798. if (e.elvstep == 1)
  799. {
  800. e.elvdir = 0;
  801. e.elvcount++;
  802. if (e.elvcount % 4 == 0)
  803. {
  804. if (e.elvrp != 9)
  805. {
  806. if (game[x.Hrp + 4][x.Hcp + 2] == '@')
  807. {
  808. x.Hrp--, x.dir2 = -1;
  809. }
  810. e.elvrp--;
  811. e.elvdir = -1;
  812. }
  813. else
  814. {
  815. e.elvstep = 2;
  816. e.elvcount = 1;
  817. }
  818. }
  819. }
  820. if (e.elvstep == 2)
  821. {
  822. e.elvdir = 0;
  823. e.elvcount++;
  824. if (e.elvcount % 4 == 0)
  825. {
  826. e.elvstep = 3;
  827. e.elvcount = 0;
  828. }
  829. }
  830. if (e.elvstep == 3)
  831. {
  832. e.elvdir = 0;
  833. e.elvcount++;
  834. if (e.elvcount % 4 == 0)
  835. {
  836. e.elvstep = 4;
  837. e.elvcount = 0;
  838. }
  839. }
  840. if (e.elvstep == 4)
  841. {
  842. e.elvdir = 0;
  843. e.elvcount++;
  844. if (e.elvcount % 4 == 0)
  845. {
  846. e.elvstep = 0;
  847. e.elvcount = 1;
  848. }
  849. }
  850. }
  851. }
  852.  
  853. void setnpc(char game[][80], player &x, npcs &z, attack &a, objects &k)
  854. {
  855. if (x.level == 1)
  856. {
  857. z.NPC_Rand = 1;
  858. }
  859. if (x.level == 2)
  860. {
  861. z.NPC_Rand_terminate = 1;
  862. z.NPC_En = 1;
  863. if (a.En_firetrigger == 1 && z.NPC_En_terminate == 0)
  864. {
  865. game[a.En_Brp - a.En_Bdir2][a.En_Bcp - a.En_Bdir] = ' ';
  866. game[a.En_Brp][a.En_Bcp] = a.En_Bsprite;
  867. }
  868. else if (z.NPC_En_terminate == 1)
  869. {
  870. x.lvldir = 0;
  871. x.level++;
  872. x.reset = 1;
  873. }
  874. }
  875. if (x.level == 3)
  876. {
  877. z.NPC_Rand_terminate = 0;
  878. k.portalcheck = 1;
  879. }
  880.  
  881. if (x.level == 4)
  882. {
  883. z.NPC_Rand_terminate = 1;
  884. }
  885. }
  886.  
  887. void enemycontrol(char game[][80], player &x, npcs &z, attack &a, int &En_bulletpos)
  888. {
  889. if (x.Hcp > 20 && z.NPC_En == 1)
  890. {
  891. if (a.En_firetrigger == 0)
  892. {
  893. a.En_Brp = z.Erp + 2, a.En_Bcp = z.Ecp - 6;
  894. if (game[a.En_Brp][a.En_Bcp - 1] != '#')
  895. {
  896. a.En_firetrigger = 1;
  897. }
  898. }
  899. }
  900. if (a.En_firetrigger == 1)
  901. {
  902. if (game[a.En_Brp][a.En_Bcp - 1] != '#')
  903. {
  904. En_bulletpos--, a.En_Bdir = -1;
  905. if (game[a.En_Brp][a.En_Bcp - 1] == game[x.Hrp + 2][x.Hcp + 5])
  906. {
  907. a.En_damage = 1;
  908. a.En_firetrigger = 0;
  909. game[a.En_Brp][a.En_Bcp] = ' ';
  910. En_bulletpos = z.Ecp - 6;
  911. }
  912. }
  913. else
  914. {
  915. a.En_firetrigger = 0;
  916. game[a.En_Brp][a.En_Bcp] = ' ';
  917. En_bulletpos = z.Ecp - 6;
  918. }
  919. }
  920. }
  921.  
  922. void damage(char game[][80], player &x, npcs &z, attack &a)
  923. {
  924. //Player's defense (default damage take is set to 37, use if functions for different eneymies to change that)
  925. if (x.heart == 3)
  926. {
  927. game[0][2] = x.healthbar;
  928. game[0][3] = x.healthbar;
  929. game[0][4] = x.healthbar;
  930. }
  931. if (a.En_damage == 1)
  932. {
  933. x.health -= 37;
  934. a.En_damage = 0;
  935. }
  936. if (x.health < 0 && x.heart == 3)
  937. {
  938. x.health = 100;
  939. x.heart--;
  940. game[0][2] = ' ';
  941. game[0][3] = x.healthbar;
  942. game[0][4] = x.healthbar;
  943. }
  944. if (x.health < 0 && x.heart == 2)
  945. {
  946. x.health = 100;
  947. x.heart--;
  948. game[0][2] = ' ';
  949. game[0][3] = ' ';
  950. game[0][4] = x.healthbar;
  951. }
  952. if (x.health < 0 && x.heart == 1)
  953. {
  954. x.heart = 0;
  955. }
  956. if (a.damage == 1 && z.NPC_En_terminate == 0)
  957. {
  958. game[z.Erp - 1][z.Ecp - 1] = ' ';
  959. game[z.Erp - 1][z.Ecp] = x.healthbar;
  960. game[z.Erp - 1][z.Ecp + 1] = x.healthbar;
  961. game[z.Erp - 1][z.Ecp + 2] = x.healthbar;
  962. game[z.Erp - 1][z.Ecp + 3] = x.healthbar;
  963. }
  964. if (a.damage == 2 && z.NPC_En_terminate == 0)
  965. {
  966. game[z.Erp - 1][z.Ecp - 1] = ' ';
  967. game[z.Erp - 1][z.Ecp] = ' ';
  968. game[z.Erp - 1][z.Ecp + 1] = x.healthbar;
  969. game[z.Erp - 1][z.Ecp + 2] = x.healthbar;
  970. game[z.Erp - 1][z.Ecp + 3] = x.healthbar;
  971. }
  972. if (a.damage == 3 && z.NPC_En_terminate == 0)
  973. {
  974. game[z.Erp - 1][z.Ecp - 1] = ' ';
  975. game[z.Erp - 1][z.Ecp] = ' ';
  976. game[z.Erp - 1][z.Ecp + 1] = ' ';
  977. game[z.Erp - 1][z.Ecp + 2] = x.healthbar;
  978. game[z.Erp - 1][z.Ecp + 3] = x.healthbar;
  979. }
  980. if (a.damage == 4 && z.NPC_En_terminate == 0)
  981. {
  982. game[z.Erp - 1][z.Ecp - 1] = ' ';
  983. game[z.Erp - 1][z.Ecp] = ' ';
  984. game[z.Erp - 1][z.Ecp + 1] = ' ';
  985. game[z.Erp - 1][z.Ecp + 2] = ' ';
  986. game[z.Erp - 1][z.Ecp + 3] = x.healthbar;
  987. }
  988. if (a.damage >= 5 && z.NPC_En_terminate == 0)
  989. {
  990. game[a.En_Brp][a.En_Bcp] = ' ';
  991. z.NPC_En_terminate = 1;
  992. a.damage = 0;
  993. x.money += 50;
  994. x.kills++;
  995. x.reward = 1;
  996. }
  997. //Enemy Doggie Damage
  998. if (z.Ddmg == 1 && z.En_D_terminate == 0)
  999. {
  1000. game[z.Drp - 1][z.Dcp] = ' ';
  1001. game[z.Drp - 1][z.Dcp + 1] = x.healthbar;
  1002. game[z.Drp - 1][z.Dcp + 2] = x.healthbar;
  1003. }
  1004. if (z.Ddmg == 2 && z.En_D_terminate == 0)
  1005. {
  1006. game[z.Drp - 1][z.Dcp] = ' ';
  1007. game[z.Drp - 1][z.Dcp + 1] = ' ';
  1008. game[z.Drp - 1][z.Dcp + 2] = x.healthbar;
  1009. }
  1010. if (z.Ddmg >= 3 && z.En_D_terminate == 0)
  1011. {
  1012. z.En_D_terminate = 1;
  1013. z.Ddmg = 0;
  1014. x.money += 20;
  1015. x.kills++;
  1016. x.reward = 1;
  1017. }
  1018. }
  1019.  
  1020. void playerattack(char game[][80], player &x, npcs &z, items &i, attack &a, int &bulletpos)
  1021. {
  1022. if (a.firetrigger == 1)
  1023. {
  1024. if (game[a.Brp][a.Bcp + 1] != '#')
  1025. {
  1026. bulletpos++, a.Bdir = 1;
  1027. if (game[a.Brp][a.Bcp] == z.epistol[2])
  1028. {
  1029. if (i.pistol == 1)
  1030. {
  1031. a.damage++;
  1032. }
  1033. if (i.sword == 1)
  1034. {
  1035. a.damage += 2;
  1036. }
  1037. a.firetrigger = 0;
  1038. game[a.Brp][a.Bcp] = ' ';
  1039. bulletpos = x.Hcp + 7;
  1040. }
  1041. }
  1042. else
  1043. {
  1044. a.firetrigger = 0;
  1045. game[a.Brp][a.Bcp] = ' ';
  1046. bulletpos = x.Hcp + 7;
  1047. }
  1048. }
  1049. }
  1050.  
  1051. void pickup(char game[][80], player &x, npcs z, items &i)
  1052. {
  1053. int ct = 0, picked = 0;
  1054. if (x.Hcp > 60 && x.Hcp < 80 && x.level == 1)
  1055. {
  1056. x.pickup_trigger = 1;
  1057. for (int i = 65; i < 75; i++)
  1058. {
  1059. game[16][i] = x.pickup_draw[0 + ct];
  1060. ct++;
  1061. }
  1062. }
  1063. if (x.level == 1)
  1064. {
  1065. game[18][70] = i.pistol_draw[0];
  1066. game[18][71] = i.pistol_draw[1];
  1067. game[18][72] = i.pistol_draw[2];
  1068. }
  1069. if (x.pickup == 1)
  1070. {
  1071. picked = 1;
  1072. //pistol = 1;
  1073. i.pistol = 1;
  1074. x.pickup = 0;
  1075. }
  1076. if (picked == 1)
  1077. {
  1078. x.pickup_trigger = 0;
  1079. game[18][70] = ' ';
  1080. game[18][71] = ' ';
  1081. game[18][72] = ' ';
  1082. for (int i = 65; i < 75; i++)
  1083. {
  1084. game[16][i] = ' ';
  1085. ct++;
  1086. }
  1087. if (x.level == 1)
  1088. {
  1089. x.level = 2;
  1090. x.reset = 1;
  1091. }
  1092. }
  1093. }
  1094.  
  1095. void interact(char game[][80], player &x, npcs z, objects &k)
  1096. {
  1097. int ct = 0;
  1098. int ct2 = 0;
  1099. if (x.level == 1)
  1100. {
  1101. if (x.Hcp > 25 && x.Hcp < 50)
  1102. {
  1103. for (int i = z.NPC_cp - 5; i < z.NPC_cp + 7; i++)
  1104. {
  1105. game[z.NPC_rp - 1][i] = x.interact_draw[0 + ct2];
  1106. ct2++;
  1107. }
  1108. for (int i = 15; i < 65; i++)
  1109. {
  1110. game[7][i] = '-';
  1111. game[9][i] = '-';
  1112. }
  1113. game[8][15] = '>';
  1114. if (x.interact == 0)
  1115. {
  1116. for (int i = 17; i < 43; i++)
  1117. {
  1118. game[8][i] = z.interaction1[0 + ct];
  1119. ct++;
  1120. }
  1121. }
  1122. else if (x.interact == 1)
  1123. {
  1124. for (int i = 17; i < 65; i++)
  1125. {
  1126. game[8][i] = z.interaction2[0 + ct];
  1127. ct++;
  1128. }
  1129. }
  1130. else if (x.interact == 2)
  1131. {
  1132. for (int i = 17; i < 46; i++)
  1133. {
  1134. game[8][i] = z.interaction3[0 + ct];
  1135. ct++;
  1136. for (int j = 46; j < 65; j++)
  1137. {
  1138. game[8][j] = ' ';
  1139. }
  1140. }
  1141. }
  1142. }
  1143. else
  1144. {
  1145. x.interact = 0;
  1146. for (int i = z.NPC_cp - 5; i < z.NPC_cp + 7; i++)
  1147. {
  1148. game[z.NPC_rp - 1][i] = ' ';
  1149. }
  1150. for (int i = 15; i < 65; i++)
  1151. {
  1152. game[7][i] = ' ';
  1153. }
  1154. for (int i = 15; i < 65; i++)
  1155. {
  1156. game[9][i] = ' ';
  1157. }
  1158. game[8][15] = ' ';
  1159. for (int i = 15; i < 65; i++)
  1160. {
  1161. game[8][i] = ' ';
  1162. ct++;
  1163. }
  1164. }
  1165. }
  1166. if (x.level == 3)
  1167. {
  1168. if (x.Hcp > 25 && x.Hcp < 50)
  1169. {
  1170. for (int i = z.NPC_cp - 5; i < z.NPC_cp + 7; i++)
  1171. {
  1172. game[z.NPC_rp - 1][i] = x.interact_draw[0 + ct2];
  1173. ct2++;
  1174. }
  1175. for (int i = 15; i < 65; i++)
  1176. {
  1177. game[7][i] = '-';
  1178. }
  1179. for (int i = 15; i < 65; i++)
  1180. {
  1181. game[9][i] = '-';
  1182. }
  1183. game[8][15] = '>';
  1184. if (x.interact == 0)
  1185. {
  1186. for (int i = 17; i < 46; i++)
  1187. {
  1188. game[8][i] = z.interaction6[0 + ct];
  1189. ct++;
  1190. }
  1191. }
  1192. else if (x.interact == 1)
  1193. {
  1194. if (x.reward == 1)
  1195. {
  1196. x.money += 500;
  1197. x.reward = 0;
  1198. }
  1199. for (int i = 17; i < 37; i++)
  1200. {
  1201. game[8][i] = z.interaction7[0 + ct];
  1202. ct++;
  1203. }
  1204. for (int j = 37; j < 65; j++)
  1205. {
  1206. game[8][j] = ' ';
  1207. }
  1208. }
  1209. }
  1210. else
  1211. {
  1212. x.interact = 0;
  1213. for (int i = z.NPC_cp - 5; i < z.NPC_cp + 7; i++)
  1214. {
  1215. game[z.NPC_rp - 1][i] = ' ';
  1216. }
  1217. for (int i = 15; i < 65; i++)
  1218. {
  1219. game[7][i] = ' ';
  1220. }
  1221. for (int i = 15; i < 65; i++)
  1222. {
  1223. game[9][i] = ' ';
  1224. }
  1225. game[8][15] = ' ';
  1226. for (int i = 15; i < 65; i++)
  1227. {
  1228. game[8][i] = ' ';
  1229. ct++;
  1230. }
  1231. }
  1232. if (x.Hcp >= k.portcp - 8)
  1233. {
  1234. ct2 = 0;
  1235. x.portal_trigger = 1;
  1236. for (int i = 68; i < 78; i++)
  1237. {
  1238. game[14][i] = x.portinter_draw[0 + ct2];
  1239. ct2++;
  1240. }
  1241. }
  1242. else
  1243. {
  1244. ct2 = 0;
  1245. x.portal_trigger = 0;
  1246. for (int i = 68; i < 78; i++)
  1247. {
  1248. game[14][i] = ' ';
  1249. ct2++;
  1250. }
  1251. }
  1252. }
  1253. }
  1254.  
  1255. void jump(player &x, Elevator &e, char game[][80])
  1256. {
  1257. if (game[x.Hrp + 4][x.Hcp] != '#' && game[x.Hrp + 4][x.Hcp] != '@')
  1258. {
  1259. if (x.jump_trigger == 0)
  1260. {
  1261. x.gravity++;
  1262.  
  1263. if ((x.gravity %= 2) == 0)
  1264. {
  1265. x.Hrp++, x.dir2 = 1;
  1266. }
  1267. }
  1268. else
  1269. {
  1270. x.gravity = 0;
  1271. }
  1272. }
  1273. else
  1274. {
  1275. x.gravity = 0;
  1276. }
  1277. if (game[x.Hrp - 1][x.Hcp] != '#')
  1278. {
  1279. if (x.jump_trigger == 1)
  1280. {
  1281. x.jump++;
  1282.  
  1283. if (x.jump == 2)
  1284. {
  1285. x.Hrp--, x.dir2 = -1;
  1286. }
  1287. if (x.jump == 4)
  1288. {
  1289. x.Hrp--, x.dir2 = -1;
  1290. }
  1291. if (x.jump == 6)
  1292. {
  1293. x.Hrp--, x.dir2 = -1;
  1294. x.jump_trigger++;
  1295. }
  1296. }
  1297. if (x.jump_trigger == 2)
  1298. {
  1299. x.jump++;
  1300. if (x.jump == 9)
  1301. {
  1302. x.jump_trigger = 0;
  1303. x.jump = 0;
  1304. }
  1305.  
  1306. }
  1307. }
  1308. else
  1309. {
  1310. x.jump_trigger = 0;
  1311. }
  1312. }
  1313.  
  1314. void setportal(char game[][80], objects &k, player &x)
  1315. {
  1316.  
  1317. if (x.portalgo == 1)
  1318. {
  1319. x.portal_trigger = 0;
  1320. k.portalcheck = 0;
  1321. x.portalgo = 0;
  1322.  
  1323. //erase
  1324. game[k.portrp + 1][k.portcp] = ' ';
  1325. game[k.portrp + 2][k.portcp] = ' ';
  1326. game[k.portrp + 3][k.portcp] = ' ';
  1327. game[k.portrp + 1][k.portcp - 1] = ' ';
  1328. game[k.portrp + 2][k.portcp - 1] = ' ';
  1329. game[k.portrp + 3][k.portcp - 1] = ' ';
  1330. game[k.portrp + 1][k.portcp - 2] = ' ';
  1331. game[k.portrp + 2][k.portcp - 2] = ' ';
  1332. game[k.portrp + 3][k.portcp - 2] = ' ';
  1333. game[k.portrp + 1][k.portcp - 3] = ' ';
  1334. game[k.portrp + 2][k.portcp - 3] = ' ';
  1335. game[k.portrp + 3][k.portcp - 3] = ' ';
  1336.  
  1337. x.level++;
  1338. x.reset = 1;
  1339. x.lvldir = 0;
  1340. }
  1341.  
  1342.  
  1343. if (k.portalcheck == 1)
  1344. {
  1345. game[k.portrp + 1][k.portcp] = k.portsprite;
  1346. game[k.portrp + 2][k.portcp] = k.portsprite;
  1347. game[k.portrp + 3][k.portcp] = k.portsprite;
  1348. game[k.portrp + 1][k.portcp - 1] = k.portsprite;
  1349. game[k.portrp + 2][k.portcp - 1] = k.portsprite;
  1350. game[k.portrp + 3][k.portcp - 1] = k.portsprite;
  1351. game[k.portrp + 1][k.portcp - 2] = k.portsprite;
  1352. game[k.portrp + 2][k.portcp - 2] = k.portsprite;
  1353. game[k.portrp + 3][k.portcp - 2] = k.portsprite;
  1354. game[k.portrp + 1][k.portcp - 3] = k.portsprite;
  1355. game[k.portrp + 2][k.portcp - 3] = k.portsprite;
  1356. game[k.portrp + 3][k.portcp - 3] = k.portsprite;
  1357. }
  1358. }
  1359.  
  1360. void setmap(char map[][80], char lvl[][400], player &x)
  1361. {
  1362. for (int i = 0; i < 20; i++)
  1363. for (int j = 0; j < 80; j++)
  1364. map[i][j] = ' ';
  1365. for (int i = 0; i < 80; i++)
  1366. map[0][i] = ' ';
  1367. for (int i = 1; i < 20; i++)
  1368. map[i][0] = '#';
  1369. for (int i = 0; i < 80; i++)
  1370. map[19][i] = '#';
  1371. for (int i = 1; i < 20; i++)
  1372. map[i][79] = '#';
  1373. }
  1374.  
  1375. void printgame(char map[][80], char lvl[][400], player &x, Elevator &e, Doggie d[])
  1376. {
  1377. system("cls");
  1378.  
  1379. if (x.heart != 0)
  1380. {
  1381. cout << " FLOOR: " << x.level; cout << " GOLD: " << x.money; cout << " KILLED: " << x.kills; cout << " HP: " << x.health; cout << " LIVES:"; cout << d[1].Dcp;
  1382. for (int i = 0; i < 20; i++)
  1383. {
  1384. for (int j = 0; j < 80; j++)
  1385.  
  1386. cout << map[i][j];
  1387. cout << "\n";
  1388. }
  1389. }
  1390. else
  1391. {
  1392. cout << "You died!";
  1393. }
  1394. cout.flush();
  1395. Sleep(10);
  1396. }
  1397.  
  1398. int main()
  1399. {
  1400. char view[20][80];
  1401. char lvl[20][400];
  1402. player x; npcs z; items i; attack a; objects k;
  1403. Elevator e;
  1404. Doggie d[5];
  1405. i.pistol_draw[0] = 203; i.pistol_draw[1] = 205; i.pistol_draw[2] = 196;
  1406. i.sword_draw[1] = 196;
  1407. x.healthbar = 03;
  1408. z.Rsprite[4] = 169, z.Rsprite[6] = 170, z.Rsprite[17] = 244;
  1409. z.epistol[0] = 203; z.epistol[1] = 205; z.epistol[2] = 196;
  1410. z.esprite[1] = 203; z.esprite[15] = 244; z.esprite[16] = 244;
  1411. d[1].dsprite[1] = 205, d[1].dsprite[2] = 202, d[1].dsprite[7] = 173, d[1].dsprite[8] = 173, d[1].dsprite[9] = 173, d[1].dsprite[10] = 173;
  1412. d[2].dsprite[1] = 205, d[2].dsprite[2] = 202, d[2].dsprite[7] = 173, d[2].dsprite[8] = 173, d[2].dsprite[9] = 173, d[2].dsprite[10] = 173;
  1413. z.Ssprite[10] = 196;
  1414. setmap(view, lvl, x);
  1415. printgame(view, lvl, x, e, d);
  1416. for (;;)
  1417. {
  1418. x.dir = 0, x.dir2 = 0;
  1419. a.Bdir = 0, a.Bdir2 = 0, a.En_Bdir = 0, a.En_Bdir2 = 0;
  1420. for (; !_kbhit();)
  1421. {
  1422. setlevels(view, lvl, x, e, d);
  1423. setnpc(view, x, z, a, k);
  1424. //setdoggie(view, x, d);
  1425. npc(view, x, z);
  1426. playerattack(view, x, z, i, a, a.Bcp);
  1427. damage(view, x, z, a);
  1428. setportal(view, k, x);
  1429. jump(x, e, view);
  1430. elevmove(view, lvl, x, e);
  1431. setplayer(view, x);
  1432. interact(view, x, z, k);
  1433. inventory(view, x, i, a);
  1434. pickup(view, x, z, i);
  1435. elv(lvl, e);
  1436. //d[1].movedoggie();
  1437. printgame(view, lvl, x, e, d);
  1438. enemycontrol(view, x, z, a, a.En_Bcp);
  1439. }
  1440. char kb = _getch();
  1441. controller(view, kb, x, i, a, e);
  1442. setplayer(view, x);
  1443. inventory(view, x, i, a);
  1444. setnpc(view, x, z, a, k);
  1445. }
  1446.  
  1447. system("pause");
  1448. return 0;
  1449. }
  1450.  
  1451. //fix:
  1452. //multi bullets
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement