Advertisement
Guest User

Untitled

a guest
Jan 18th, 2019
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.83 KB | None | 0 0
  1. ffc script StageSelect{
  2. void run(){
  3. G[G_MIRROR] = 0;
  4. int numstages;
  5. int position;
  6. int cursorx;
  7. int cursory;
  8. int xanchor = 64;
  9. int yanchor = 16;
  10. int xoffset;
  11. int yoffset;
  12. int inputtimer;
  13. int BishopElizabeth[] = "Bishop Elizabeth";
  14. int CardinalGabriel[] = "Cardinal Gabriel";
  15. int DeaconIsaac[] = "Deacon Isaac";
  16. int CountDominicus[] = "Count Dominicus";
  17. int DukeFerdinand[] = "Duke Ferdinand";
  18. int LadyImelda[] = "Lady Imelda";
  19. int SaintNicholas[] = "Saint Nicholas";
  20. int TheVatican[] = "The Vatican";
  21. int StageTiles[] = {TIL_WATERSTAGE, TIL_FIRESTAGE, TIL_MIRRORSTAGE, TIL_VATICANSTAGE, TIL_MIDDLESTAGE, TIL_SANTASTAGE, TIL_BATSTAGE, TIL_ILLUSIONSTAGE, TIL_FLESHSTAGE};
  22. int StagesDisplayed[9];
  23. if(Game->Counter[CR_SCRIPT1] >= 6)
  24. G[G_SANTA_OPEN] = I_TRUE;
  25. StagesDisplayed[4] = 1; //This "stage" is the player tile. Always visible, but never selectible.
  26. for(int i = 0; i <3; i++){ //First 3 stages are 1-3 in stage list
  27. StagesDisplayed[i] = 1;
  28. }
  29. if(BossesDefeated() >= 3){ //Subsequent 3 stages are 6-8 in stage list
  30. for(int i = 6; i <9; i++){
  31. StagesDisplayed[i] = 1;
  32. }
  33. }
  34. if(BossesDefeated() >= 6){ //Vatican is 3 in stage list
  35. StagesDisplayed[3] = 1;
  36. }
  37. if(G[G_SANTA_OPEN] == I_TRUE){ //Santa is 5 in stage list
  38. StagesDisplayed[5] = 1;
  39. }
  40. while(true){
  41. //Draw the stages
  42. for(int i = 0; i < SizeOfArray(StagesDisplayed); i++){
  43. if(StagesDisplayed[i] == 1){
  44. xoffset = GetXOffset(i);
  45. yoffset = GetYOffset(i);
  46.  
  47. if(!StSelStageComplete(i))
  48. Screen->DrawTile(6, xanchor+xoffset, yanchor+yoffset, StageTiles[i], 2, 2, 7, -1, -1, 0, 0, 0, 0, true, OP_OPAQUE); //Stage Tile
  49. else
  50. Screen->DrawTile(6, xanchor+xoffset, yanchor+yoffset, StageTiles[i]+40, 2, 2, 7, -1, -1, 0, 0, 0, 0, true, OP_OPAQUE); //Stage Tile, boss beat
  51. Screen->DrawTile(6, xanchor+xoffset, yanchor+yoffset, TIL_STAGESELECT_FRAME, 2, 2, 7, -1, -1, 0, 0, 0, 0, true, OP_OPAQUE); //Stage frame
  52.  
  53. }
  54. }
  55.  
  56. //Cursor position and drawing
  57. if(Link->PressRight && inputtimer == 0){
  58. do{
  59. position++;
  60. if(position >8)
  61. position -= 9;
  62. if(position <0)
  63. position += 9;
  64. }
  65. while(StagesDisplayed[position] == 0 || position == 4);
  66. inputtimer = 4;
  67. Game->PlaySound(5);
  68. }
  69. if(Link->PressLeft&& inputtimer == 0){
  70. do{
  71. position--;
  72. if(position >8)
  73. position -= 9;
  74. if(position <0)
  75. position += 9;
  76. }
  77. while(StagesDisplayed[position] == 0 || position == 4);
  78. inputtimer = 4;
  79. Game->PlaySound(5);
  80. }
  81. if(Link->PressDown&& inputtimer == 0){
  82. do{
  83. position += 3;
  84. if(position >8)
  85. position -= 9;
  86. if(position <0)
  87. position += 9;
  88. }
  89. while(StagesDisplayed[position] == 0 || position == 4);
  90. inputtimer = 4;
  91. Game->PlaySound(5);
  92. }
  93. if(Link->PressUp&& inputtimer == 0){
  94. do{
  95. position -= 3;
  96. if(position >8)
  97. position -= 9;
  98. if(position <0)
  99. position += 9;
  100. }
  101. while(StagesDisplayed[position] == 0 || position == 4);
  102. inputtimer = 4;
  103. Game->PlaySound(5);
  104. }
  105. xoffset = GetXOffset(position);
  106. yoffset = GetYOffset(position);
  107. Screen->DrawCombo(7, xanchor+xoffset, yanchor+yoffset, CMB_STAGESELECT_SELECTOR, 2, 2, 8, -1, -1, 0, 0, 0, 0, 0, true, OP_OPAQUE); //Draw cursor
  108.  
  109. if(position == 0)
  110. Screen->DrawString(6, xanchor+7, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, BishopElizabeth, OP_OPAQUE);
  111. else if(position == 1)
  112. Screen->DrawString(6, xanchor+4, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, CardinalGabriel, OP_OPAQUE);
  113. else if(position == 2)
  114. Screen->DrawString(6, xanchor+16, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, DeaconIsaac, OP_OPAQUE);
  115. else if(position == 3)
  116. Screen->DrawString(6, xanchor+16, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, TheVatican, OP_OPAQUE);
  117. else if(position == 5)
  118. Screen->DrawString(6, xanchor+16, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, SaintNicholas, OP_OPAQUE);
  119. else if(position == 6)
  120. Screen->DrawString(6, xanchor+6, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, CountDominicus, OP_OPAQUE);
  121. else if(position == 7)
  122. Screen->DrawString(6, xanchor+10, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, DukeFerdinand, OP_OPAQUE);
  123. else if(position == 8)
  124. Screen->DrawString(6, xanchor+18, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, LadyImelda, OP_OPAQUE);
  125.  
  126. if(Link->PressA && inputtimer == 0){
  127. //Actual selection and stage teleport goes here
  128. //Game->PlaySound(7);
  129. //Some kind of animation plays here?
  130. int warpdmap;
  131. int warpscreen;
  132. if(position == 0){ //Water
  133. warpdmap = 1;
  134. warpscreen = 0x43;
  135. }
  136. if(position == 1){ //Fire
  137. warpdmap = 2;
  138. warpscreen = 0x55;
  139. }
  140. if(position == 2){ //Mirror
  141. warpdmap = 3;
  142. warpscreen = 0x73;
  143. }
  144. if(position == 3){ //Vatican
  145. warpdmap = 10;
  146. warpscreen = 0x63;
  147. }
  148. if(position == 5){ //Santa
  149. warpdmap = 3;
  150. warpscreen = 0x73;
  151. }
  152. if(position == 6){ //Bat
  153. warpdmap = 5;
  154. warpscreen = 0x63;
  155. }
  156. if(position == 7){ //Illusion
  157. warpdmap = 4;
  158. warpscreen = 0x74;
  159. }
  160. if(position == 8){ //Flesh
  161. warpdmap = 9;
  162. warpscreen = 0x52;
  163. }
  164. Screen->SetSideWarp(0, warpscreen, warpdmap, WT_IWARPWAVE);
  165. this->Data = 1730;
  166. }
  167. if(inputtimer >0)
  168. inputtimer--;
  169. Waitframe();
  170. }
  171. }
  172. bool StSelStageComplete(int rawstagenumber){ //returns an event index based on a stage select stage number
  173. int adjustedstagenumber;
  174. if(rawstagenumber == 4){
  175. if(BossesDefeated() >=3)
  176. return true;
  177. else
  178. return false;
  179. }
  180. if(rawstagenumber == 3)
  181. adjustedstagenumber = 6;
  182. else if(rawstagenumber == 5)
  183. adjustedstagenumber = 7;
  184. else if(rawstagenumber > 5)
  185. adjustedstagenumber = rawstagenumber-3;
  186. else
  187. adjustedstagenumber = rawstagenumber;
  188. if(StoryEvents[adjustedstagenumber] == SPG_COMPLETE)
  189. return true;
  190. return false;
  191. }
  192. int GetXOffset(int stagenumber){
  193. int xoffset;
  194. int yoffset;
  195. if(BossesDefeated() <3){
  196. if(stagenumber == 0){
  197. xoffset = 1;
  198. yoffset = 1;
  199. }
  200. if(stagenumber == 1){
  201. xoffset = 1;
  202. yoffset = 1;
  203. }
  204. if(stagenumber == 2){
  205. xoffset = 1;
  206. yoffset = 1;
  207. }
  208. xoffset = (stagenumber*48) % 144;
  209. yoffset = Floor(stagenumber/3)*48;
  210.  
  211. }
  212. else if(BossesDefeated() < 6){
  213. if(stagenumber == 0){
  214. xoffset = 1;
  215. yoffset = 1;
  216. }
  217. if(stagenumber == 1){
  218. xoffset = 1;
  219. yoffset = 1;
  220. }
  221. if(stagenumber == 2){
  222. xoffset = 1;
  223. yoffset = 1;
  224. }
  225. if(stagenumber == 3){
  226. xoffset = 1;
  227. yoffset = 1;
  228. }
  229. if(stagenumber == 4){
  230. xoffset = 1;
  231. yoffset = 1;
  232. }
  233. if(stagenumber == 5){
  234. xoffset = 1;
  235. yoffset = 1;
  236. }
  237. xoffset = (stagenumber*48) % 144;
  238. yoffset = Floor(stagenumber/3)*48;
  239. }
  240. else if(BossesDefeated() >= 6 && G[G_SANTA_OPEN] == I_FALSE){
  241. if(stagenumber == 0){
  242. xoffset = 1;
  243. yoffset = 1;
  244. }
  245. if(stagenumber == 1){
  246. xoffset = 1;
  247. yoffset = 1;
  248. }
  249. if(stagenumber == 2){
  250. xoffset = 1;
  251. yoffset = 1;
  252. }
  253. if(stagenumber == 3){
  254. xoffset = 1;
  255. yoffset = 1;
  256. }
  257. if(stagenumber == 4){
  258. xoffset = 1;
  259. yoffset = 1;
  260. }
  261. if(stagenumber == 5){
  262. xoffset = 1;
  263. yoffset = 1;
  264. }
  265. if(stagenumber == 6){
  266. xoffset = 1;
  267. yoffset = 1;
  268. }
  269. xoffset = (stagenumber*48) % 144;
  270. yoffset = Floor(stagenumber/3)*48;
  271. }
  272. else if(BossesDefeated() >= 6 && G[G_SANTA_OPEN] == I_TRUE){
  273. int xoffset;
  274. int yoffset;
  275. if(stagenumber == 0){
  276. xoffset = 1;
  277. yoffset = 1;
  278. }
  279. if(stagenumber == 1){
  280. xoffset = 1;
  281. yoffset = 1;
  282. }
  283. if(stagenumber == 2){
  284. xoffset = 1;
  285. yoffset = 1;
  286. }
  287. if(stagenumber == 3){
  288. xoffset = 1;
  289. yoffset = 1;
  290. }
  291. if(stagenumber == 4){
  292. xoffset = 1;
  293. yoffset = 1;
  294. }
  295. if(stagenumber == 5){
  296. xoffset = 1;
  297. yoffset = 1;
  298. }
  299. if(stagenumber == 6){
  300. xoffset = 1;
  301. yoffset = 1;
  302. }
  303. xoffset = (stagenumber*48) % 144;
  304. yoffset = Floor(stagenumber/3)*48;
  305. }
  306. return xoffset;
  307. }
  308. int GetYOffset(int stagenumber){
  309. int xoffset;
  310. int yoffset;
  311. if(BossesDefeated() <3){
  312. if(stagenumber == 0){
  313. xoffset = (stagenumber*48) % 144;
  314. yoffset = Floor(stagenumber/3)*48+48;
  315. }
  316. if(stagenumber == 1){
  317. xoffset = (stagenumber*48) % 144;
  318. yoffset = Floor(stagenumber/3)*48;
  319. }
  320. if(stagenumber == 2){
  321. xoffset = (stagenumber*48) % 144;
  322. yoffset = Floor(stagenumber/3)*48+48;
  323. }
  324. if(stagenumber == 4){
  325. xoffset = (stagenumber*48) % 144;
  326. yoffset = Floor(stagenumber/3)*48;
  327. }
  328.  
  329. }
  330. else if(BossesDefeated() < 6){
  331. if(stagenumber == 0){
  332. xoffset = (stagenumber*48) % 144;
  333. yoffset = Floor(stagenumber/3)*48+20;
  334. }
  335. if(stagenumber == 1){
  336. xoffset = (stagenumber*48) % 144;
  337. yoffset = Floor(stagenumber/3)*48;
  338. }
  339. if(stagenumber == 2){
  340. xoffset = (stagenumber*48) % 144;
  341. yoffset = Floor(stagenumber/3)*48+20;
  342. }
  343. if(stagenumber == 4){
  344. xoffset = (stagenumber*48) % 144;
  345. yoffset = Floor(stagenumber/3)*48;
  346. }
  347. if(stagenumber == 6){
  348. xoffset = (stagenumber*48) % 144;
  349. yoffset = Floor(stagenumber/3)*48-20;
  350. }
  351. if(stagenumber == 7){
  352. xoffset = (stagenumber*48) % 144;
  353. yoffset = Floor(stagenumber/3)*48;
  354. }
  355. if(stagenumber == 8){
  356. xoffset = (stagenumber*48) % 144;
  357. yoffset = Floor(stagenumber/3)*48-20;
  358. }
  359. //xoffset = (stagenumber*48) % 144;
  360. //yoffset = Floor(stagenumber/3)*48;
  361. }
  362. else if(BossesDefeated() >= 6 && G[G_SANTA_OPEN] == I_FALSE){
  363. if(stagenumber == 0){
  364. xoffset = 1;
  365. yoffset = 1;
  366. }
  367. if(stagenumber == 1){
  368. xoffset = 1;
  369. yoffset = 1;
  370. }
  371. if(stagenumber == 2){
  372. xoffset = 1;
  373. yoffset = 1;
  374. }
  375. if(stagenumber == 3){
  376. xoffset = 1;
  377. yoffset = 1;
  378. }
  379. if(stagenumber == 4){
  380. xoffset = 1;
  381. yoffset = 1;
  382. }
  383. if(stagenumber == 5){
  384. xoffset = 1;
  385. yoffset = 1;
  386. }
  387. if(stagenumber == 6){
  388. xoffset = 1;
  389. yoffset = 1;
  390. }
  391. xoffset = (stagenumber*48) % 144;
  392. yoffset = Floor(stagenumber/3)*48;
  393. }
  394. else if(BossesDefeated() >= 6 && G[G_SANTA_OPEN] == I_TRUE){
  395. int xoffset;
  396. int yoffset;
  397. if(stagenumber == 0){
  398. xoffset = 1;
  399. yoffset = 1;
  400. }
  401. if(stagenumber == 1){
  402. xoffset = 1;
  403. yoffset = 1;
  404. }
  405. if(stagenumber == 2){
  406. xoffset = 1;
  407. yoffset = 1;
  408. }
  409. if(stagenumber == 3){
  410. xoffset = 1;
  411. yoffset = 1;
  412. }
  413. if(stagenumber == 4){
  414. xoffset = 1;
  415. yoffset = 1;
  416. }
  417. if(stagenumber == 5){
  418. xoffset = 1;
  419. yoffset = 1;
  420. }
  421. if(stagenumber == 6){
  422. xoffset = 1;
  423. yoffset = 1;
  424. }
  425. xoffset = (stagenumber*48) % 144;
  426. //yoffset = Floor(stagenumber/3)*48;
  427. }
  428. return yoffset;
  429. }
  430. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement