Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ffc script StageSelect{
- void run(){
- G[G_MIRROR] = 0;
- int numstages;
- int position;
- int cursorx;
- int cursory;
- int xanchor = 64;
- int yanchor = 16;
- int xoffset;
- int yoffset;
- int inputtimer;
- int BishopElizabeth[] = "Bishop Elizabeth";
- int CardinalGabriel[] = "Cardinal Gabriel";
- int DeaconIsaac[] = "Deacon Isaac";
- int CountDominicus[] = "Count Dominicus";
- int DukeFerdinand[] = "Duke Ferdinand";
- int LadyImelda[] = "Lady Imelda";
- int SaintNicholas[] = "Saint Nicholas";
- int TheVatican[] = "The Vatican";
- int StageTiles[] = {TIL_WATERSTAGE, TIL_FIRESTAGE, TIL_MIRRORSTAGE, TIL_VATICANSTAGE, TIL_MIDDLESTAGE, TIL_SANTASTAGE, TIL_BATSTAGE, TIL_ILLUSIONSTAGE, TIL_FLESHSTAGE};
- int StagesDisplayed[9];
- if(Game->Counter[CR_SCRIPT1] >= 6)
- G[G_SANTA_OPEN] = I_TRUE;
- StagesDisplayed[4] = 1; //This "stage" is the player tile. Always visible, but never selectible.
- for(int i = 0; i <3; i++){ //First 3 stages are 1-3 in stage list
- StagesDisplayed[i] = 1;
- }
- if(BossesDefeated() >= 3){ //Subsequent 3 stages are 6-8 in stage list
- for(int i = 6; i <9; i++){
- StagesDisplayed[i] = 1;
- }
- }
- if(BossesDefeated() >= 6){ //Vatican is 3 in stage list
- StagesDisplayed[3] = 1;
- }
- if(G[G_SANTA_OPEN] == I_TRUE){ //Santa is 5 in stage list
- StagesDisplayed[5] = 1;
- }
- while(true){
- //Draw the stages
- for(int i = 0; i < SizeOfArray(StagesDisplayed); i++){
- if(StagesDisplayed[i] == 1){
- xoffset = GetXOffset(i);
- yoffset = GetYOffset(i);
- if(!StSelStageComplete(i))
- Screen->DrawTile(6, xanchor+xoffset, yanchor+yoffset, StageTiles[i], 2, 2, 7, -1, -1, 0, 0, 0, 0, true, OP_OPAQUE); //Stage Tile
- else
- 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
- Screen->DrawTile(6, xanchor+xoffset, yanchor+yoffset, TIL_STAGESELECT_FRAME, 2, 2, 7, -1, -1, 0, 0, 0, 0, true, OP_OPAQUE); //Stage frame
- }
- }
- //Cursor position and drawing
- if(Link->PressRight && inputtimer == 0){
- do{
- position++;
- if(position >8)
- position -= 9;
- if(position <0)
- position += 9;
- }
- while(StagesDisplayed[position] == 0 || position == 4);
- inputtimer = 4;
- Game->PlaySound(5);
- }
- if(Link->PressLeft&& inputtimer == 0){
- do{
- position--;
- if(position >8)
- position -= 9;
- if(position <0)
- position += 9;
- }
- while(StagesDisplayed[position] == 0 || position == 4);
- inputtimer = 4;
- Game->PlaySound(5);
- }
- if(Link->PressDown&& inputtimer == 0){
- do{
- position += 3;
- if(position >8)
- position -= 9;
- if(position <0)
- position += 9;
- }
- while(StagesDisplayed[position] == 0 || position == 4);
- inputtimer = 4;
- Game->PlaySound(5);
- }
- if(Link->PressUp&& inputtimer == 0){
- do{
- position -= 3;
- if(position >8)
- position -= 9;
- if(position <0)
- position += 9;
- }
- while(StagesDisplayed[position] == 0 || position == 4);
- inputtimer = 4;
- Game->PlaySound(5);
- }
- xoffset = GetXOffset(position);
- yoffset = GetYOffset(position);
- 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
- if(position == 0)
- Screen->DrawString(6, xanchor+7, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, BishopElizabeth, OP_OPAQUE);
- else if(position == 1)
- Screen->DrawString(6, xanchor+4, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, CardinalGabriel, OP_OPAQUE);
- else if(position == 2)
- Screen->DrawString(6, xanchor+16, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, DeaconIsaac, OP_OPAQUE);
- else if(position == 3)
- Screen->DrawString(6, xanchor+16, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, TheVatican, OP_OPAQUE);
- else if(position == 5)
- Screen->DrawString(6, xanchor+16, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, SaintNicholas, OP_OPAQUE);
- else if(position == 6)
- Screen->DrawString(6, xanchor+6, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, CountDominicus, OP_OPAQUE);
- else if(position == 7)
- Screen->DrawString(6, xanchor+10, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, DukeFerdinand, OP_OPAQUE);
- else if(position == 8)
- Screen->DrawString(6, xanchor+18, 160, FONT_Z1, 0x01, 0x00, TF_NORMAL, LadyImelda, OP_OPAQUE);
- if(Link->PressA && inputtimer == 0){
- //Actual selection and stage teleport goes here
- //Game->PlaySound(7);
- //Some kind of animation plays here?
- int warpdmap;
- int warpscreen;
- if(position == 0){ //Water
- warpdmap = 1;
- warpscreen = 0x43;
- }
- if(position == 1){ //Fire
- warpdmap = 2;
- warpscreen = 0x55;
- }
- if(position == 2){ //Mirror
- warpdmap = 3;
- warpscreen = 0x73;
- }
- if(position == 3){ //Vatican
- warpdmap = 10;
- warpscreen = 0x63;
- }
- if(position == 5){ //Santa
- warpdmap = 3;
- warpscreen = 0x73;
- }
- if(position == 6){ //Bat
- warpdmap = 5;
- warpscreen = 0x63;
- }
- if(position == 7){ //Illusion
- warpdmap = 4;
- warpscreen = 0x74;
- }
- if(position == 8){ //Flesh
- warpdmap = 9;
- warpscreen = 0x52;
- }
- Screen->SetSideWarp(0, warpscreen, warpdmap, WT_IWARPWAVE);
- this->Data = 1730;
- }
- if(inputtimer >0)
- inputtimer--;
- Waitframe();
- }
- }
- bool StSelStageComplete(int rawstagenumber){ //returns an event index based on a stage select stage number
- int adjustedstagenumber;
- if(rawstagenumber == 4){
- if(BossesDefeated() >=3)
- return true;
- else
- return false;
- }
- if(rawstagenumber == 3)
- adjustedstagenumber = 6;
- else if(rawstagenumber == 5)
- adjustedstagenumber = 7;
- else if(rawstagenumber > 5)
- adjustedstagenumber = rawstagenumber-3;
- else
- adjustedstagenumber = rawstagenumber;
- if(StoryEvents[adjustedstagenumber] == SPG_COMPLETE)
- return true;
- return false;
- }
- int GetXOffset(int stagenumber){
- int xoffset;
- int yoffset;
- if(BossesDefeated() <3){
- if(stagenumber == 0){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 1){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 2){
- xoffset = 1;
- yoffset = 1;
- }
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- else if(BossesDefeated() < 6){
- if(stagenumber == 0){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 1){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 2){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 3){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 4){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 5){
- xoffset = 1;
- yoffset = 1;
- }
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- else if(BossesDefeated() >= 6 && G[G_SANTA_OPEN] == I_FALSE){
- if(stagenumber == 0){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 1){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 2){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 3){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 4){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 5){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 6){
- xoffset = 1;
- yoffset = 1;
- }
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- else if(BossesDefeated() >= 6 && G[G_SANTA_OPEN] == I_TRUE){
- int xoffset;
- int yoffset;
- if(stagenumber == 0){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 1){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 2){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 3){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 4){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 5){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 6){
- xoffset = 1;
- yoffset = 1;
- }
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- return xoffset;
- }
- int GetYOffset(int stagenumber){
- int xoffset;
- int yoffset;
- if(BossesDefeated() <3){
- if(stagenumber == 0){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48+48;
- }
- if(stagenumber == 1){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- if(stagenumber == 2){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48+48;
- }
- if(stagenumber == 4){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- }
- else if(BossesDefeated() < 6){
- if(stagenumber == 0){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48+20;
- }
- if(stagenumber == 1){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- if(stagenumber == 2){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48+20;
- }
- if(stagenumber == 4){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- if(stagenumber == 6){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48-20;
- }
- if(stagenumber == 7){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- if(stagenumber == 8){
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48-20;
- }
- //xoffset = (stagenumber*48) % 144;
- //yoffset = Floor(stagenumber/3)*48;
- }
- else if(BossesDefeated() >= 6 && G[G_SANTA_OPEN] == I_FALSE){
- if(stagenumber == 0){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 1){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 2){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 3){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 4){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 5){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 6){
- xoffset = 1;
- yoffset = 1;
- }
- xoffset = (stagenumber*48) % 144;
- yoffset = Floor(stagenumber/3)*48;
- }
- else if(BossesDefeated() >= 6 && G[G_SANTA_OPEN] == I_TRUE){
- int xoffset;
- int yoffset;
- if(stagenumber == 0){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 1){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 2){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 3){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 4){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 5){
- xoffset = 1;
- yoffset = 1;
- }
- if(stagenumber == 6){
- xoffset = 1;
- yoffset = 1;
- }
- xoffset = (stagenumber*48) % 144;
- //yoffset = Floor(stagenumber/3)*48;
- }
- return yoffset;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement