diff --git a/SeasonsOfLoneliness.cpp b/SeasonsOfLoneliness.cpp index 3077443..4db8411 100644 --- a/SeasonsOfLoneliness.cpp +++ b/SeasonsOfLoneliness.cpp @@ -16,7 +16,7 @@ using namespace olc; #define SKIP_CHAPTER1 true #define SKIP_BOSS true #define SKIP_SILICON2 true -#define SKIP_CHAPTER2 false +#define SKIP_CHAPTER2 true #define SKIP_CHAPTER3 false #define STARTING_MAP MAP_1 @@ -54,6 +54,7 @@ enum GAMESTATE{ LATER_THAT_NIGHTFADEIN, LATER_THAT_NIGHTWAIT, LATER_THAT_NIGHTFADEOUT, + CUTSCENE_5, //Third rover repaired. }; namespace cutscene{ @@ -83,6 +84,8 @@ namespace cutscene{ SPAWN_WORMS, CHECK_COORDS_2, MAP_TRANSITION, + CHECK_COORDS_3, + STORY_REVIEW, }; } @@ -117,6 +120,9 @@ namespace gameflag{ NEXT_COORDS, COLLECTED_SILICON_2, CHECK_ROVER_2, + COLLECTED_SILICON_3, + CHECK_ROVER_3, + STORY_REVIEW, }; } @@ -625,7 +631,7 @@ public: *NADO_DECAL,*SILICON_ROCK_DECAL,*PETAL_STORM_DECAL,*ROVER_DECAL,*X_X_DECAL, *LATER_THAT_NIGHT_DECAL,*SLEEP_DECAL,*SEED_DECAL,*TREE_DECAL,*X_X_UNCHARGED_DECAL, *SANDWORM_DECAL,*SNAKE_DECAL,*MOTH_DECAL,*FLASH_FLOOD_DECAL,*SUNNY_DAY_DECAL,*FIRESTORM_DECAL,*SOLARFLARE_DECAL, - *HP_REGEN_DECAL,*SLOWED_DECAL, *SPEED_DECAL,*HIDDEN_DECAL; + *HP_REGEN_DECAL,*SLOWED_DECAL, *SPEED_DECAL,*HIDDEN_DECAL,*BOOK_DECAL,*BOOK2_DECAL; std::map BASE_OBJECTS; std::vector ENCOUNTERS; Encounter ENCOUNTER_SPIDEY_1; @@ -685,12 +691,14 @@ public: GAME_STATE=GAMEWORLD; } if (SKIP_CHAPTER2||SKIP_CHAPTER3) { - + //GAME_FLAGS[gameflag::CHECK_ROVER_3]=true; + GAME_FLAGS[gameflag::COLLECTED_SILICON_3]=true; + GAME_FLAGS[gameflag::CHECK_ROVER_2]=true; } if (SKIP_CHAPTER3) { } - if (SKIP_BOSS) { + if (SKIP_CHAPTER2||SKIP_BOSS) { GAME_FLAGS[gameflag::SLEEP]=true; GAME_FLAGS[gameflag::FIRST_ENCOUNTER_X_X]=true; GAME_FLAGS[gameflag::ANALYSIS_X_X]=true; @@ -698,7 +706,7 @@ public: GAME_FLAGS[gameflag::TUTORIAL2_X_X]=true; GAME_STATE=GAMEWORLD; } - if (SKIP_SILICON2) { + if (SKIP_CHAPTER2||SKIP_SILICON2) { GAME_FLAGS[gameflag::CHECK_ROVER]=true; GAME_FLAGS[gameflag::NEXT_COORDS]=true; GAME_FLAGS[gameflag::COLLECTED_SILICON_2]=true; @@ -751,6 +759,8 @@ public: SLOWED_DECAL=new Decal(new Sprite("assets/slowed.png")); SPEED_DECAL=new Decal(new Sprite("assets/speedup.png")); HIDDEN_DECAL=new Decal(new Sprite("assets/hidden.png")); + BOOK_DECAL=new Decal(new Sprite("assets/book.png")); + BOOK2_DECAL=new Decal(new Sprite("assets/book2.png")); current_playerAnim->spr=PLAYER_DECAL; playerAnim->spr=PLAYER_DECAL; @@ -910,8 +920,6 @@ public: MOVESET_MEGAMOTH.push_back(POLLINATION); MOVESET_MEGAMOTH.push_back(GUST); MOVESET_MEGAMOTH.push_back(GUST); - MOVESET_MEGAMOTH.push_back(GUST); - MOVESET_MEGAMOTH.push_back(GUST); MOVESET_SANDWORM.push_back(SANDSTORM); MOVESET_SANDWORM.push_back(HEAT_WAVE); @@ -1039,7 +1047,14 @@ public: } }break; case GAME_OVER_TERMINAL:{ - fadeOut(); + if (textInd>=CONSOLE_REF_TEXT.length()) { + fadeOut(); + } + }break; + case CUTSCENE_5:{ + if (textInd>=CONSOLE_REF_TEXT.length()) { + fadeOut(); + } }break; } } @@ -1306,6 +1321,12 @@ public: GAME_STATE=GAMEWORLD; fadeIn(); }break; + case CUTSCENE_5:{ + EndCutscene(); + fadeIn(); + GAME_STATE=GAMEWORLD; + DisplayMessageBox(36); + }break; } switch (CURRENT_CUTSCENE) { case cutscene::TRANSITION_CUTSCENE:{ @@ -1353,18 +1374,19 @@ public: updatePlayerState(); fadeIn(); EndCutscene(); - if (GAME_FLAGS[gameflag::REST_IN_DOME]&&!GAME_FLAGS[gameflag::SLEEP]) { - GAME_FLAGS[gameflag::SLEEP]=true; + if (GAME_FLAGS[gameflag::CHECK_ROVER_3]&&!GAME_FLAGS[gameflag::STORY_REVIEW]) { + GAME_FLAGS[gameflag::STORY_REVIEW]=true; //20,2 - GAME_STATE=LATER_THAT_NIGHTFADEIN; - fadeOutCompleted(); - } + StartCutscene(cutscene::STORY_REVIEW); + CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,playerAnim,true); + CUTSCENE_OBJS[1]=CreateObject({20,2},SLEEP_DECAL,EMPTY_BED_ANIMATION,true); + } else if (GAME_FLAGS[gameflag::REST_IN_DOME]&&!GAME_FLAGS[gameflag::SLEEP]) { GAME_FLAGS[gameflag::SLEEP]=true; //20,2 GAME_STATE=LATER_THAT_NIGHTFADEIN; fadeOutCompleted(); - } + } else if (!GAME_FLAGS[gameflag::CHECK_ROVER]&&GAME_FLAGS[gameflag::TUTORIAL2_X_X]) { GAME_FLAGS[gameflag::CHECK_ROVER]=true; DisplayMessageBox(26); @@ -1390,6 +1412,11 @@ public: LoadMap(MAP_4); fadeIn(); }break; + case cutscene::CHECK_COORDS_3:{ + GAME_STATE=CUTSCENE_5; + ResetTerminal(STORY_TEXT6); + fadeIn(); + }break; } } @@ -2384,6 +2411,24 @@ public: } } }break; + case cutscene::CHECK_COORDS_3:{ + if (!messageBoxVisible) { + if (!CUTSCENE_FLAGS[0]) { + CUTSCENE_FLAGS[0]=true; + fadeOut(); + } + } + }break; + case cutscene::STORY_REVIEW:{ + if (!CUTSCENE_FLAGS[0]) { + if (MoveObjectTowardsPoint({19,2.5},CUTSCENE_OBJS[0],BOTH)) { + CUTSCENE_FLAGS[0]=true; + } + } else + if (!CUTSCENE_FLAGS[1]) { + DisplayMessageBox(38); + } + }break; } if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) { @@ -2396,6 +2441,7 @@ public: case CUTSCENE_1: case CUTSCENE_3: case CUTSCENE_4: + case CUTSCENE_5: case GAME_OVER_TERMINAL:{ if (GAME_STATE==CUTSCENE_3&&frameCount%4!=0) {break;} if (textInd=31&&PLAYER_COORDS[0]<=35&&PLAYER_COORDS[1]>=33&&PLAYER_COORDS[1]<=37) { + GAME_FLAGS[gameflag::CHECK_ROVER_3]=true; + DisplayMessageBox(35); + StartCutscene(cutscene::CHECK_COORDS_3); + CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,playerAnim,true); } if(WALK_STEPS++>60&&!IN_BATTLE_ENCOUNTER) { PLAYER_HP=std::clamp(PLAYER_HP+1,0,PLAYER_MAXHP); @@ -2555,6 +2614,7 @@ public: switch (GAME_STATE) { case CUTSCENE_1: case CUTSCENE_4: + case CUTSCENE_5: case GAME_OVER_TERMINAL:{ DrawStringDecal({16,16},CUTSCENE_CONSOLE_TEXT,GREEN,{1,1}); if (textInd