diff --git a/SeasonsOfLoneliness.cpp b/SeasonsOfLoneliness.cpp index da5cd3a..77ae7f9 100644 --- a/SeasonsOfLoneliness.cpp +++ b/SeasonsOfLoneliness.cpp @@ -123,13 +123,17 @@ class Entity{ int y; std::string name; WEATHER_POWER*selectedMove; - Entity(Decal*spr,std::string name,int x,int y,int hp,int maxhp,bool isAlly=false) { + std::vector moveSet; + bool turnComplete=false; + bool slowed=false; + Entity(Decal*spr,std::string name,int x,int y,int hp,int maxhp,std::vectormoveset) { this->spr=spr; this->name=name; this->x=x; this->y=y; this->hp=hp; this->maxhp=maxhp; + this->moveSet=moveSet; } }; @@ -210,7 +214,7 @@ public: WEATHER_POWER*METEOR_STORM = new WEATHER_POWER("Meteor Storm","Larger space rocks. 120+60d",&POWER_METEOR_STORM_ANIMATION,&POWER_METEOR_STORM_ANIMATION,120,60,140,Pixel(89, 4, 33,255),Pixel(130, 56, 1,255)); WEATHER_POWER*SNOWSTORM = new WEATHER_POWER("Snowstorm","Slows down targets and causes rapid temperature drops. 15+10d",&POWER_SNOWSTORM_ANIMATION,&POWER_SNOWSTORM_ANIMATION,15,10,140,Pixel(183, 196, 194,255),Pixel(222, 255, 254,255)); WEATHER_POWER*SANDSTORM = new WEATHER_POWER("Sandstorm","",&POWER_HAILSTORM_ANIMATION,&POWER_HAILSTORM_ANIMATION,5,10,64,Pixel(93, 161, 163,255),Pixel(72, 160, 212,255)); - WEATHER_POWER*PETAL_BLOSSOM = new WEATHER_POWER("Petal Blossom","",&POWER_HAILSTORM_ANIMATION,&POWER_HAILSTORM_ANIMATION,8,20,164,Pixel(93, 161, 163,255),Pixel(72, 160, 212,255)); + WEATHER_POWER*SEED_STORM = new WEATHER_POWER("Seed Storm","",&POWER_HAILSTORM_ANIMATION,&POWER_HAILSTORM_ANIMATION,8,20,164,Pixel(93, 161, 163,255),Pixel(72, 160, 212,255)); WEATHER_POWER*AVALANCHE = new WEATHER_POWER("Avalanche","",&POWER_HAILSTORM_ANIMATION,&POWER_HAILSTORM_ANIMATION,15,10,200,Pixel(93, 161, 163,255),Pixel(72, 160, 212,255)); bool IN_BATTLE_ENCOUNTER = false; int BATTLE_ENTRY_TIMER = 0; @@ -228,6 +232,8 @@ public: int BATTLE_CARD_SELECTION_IND=0; int PLAYER_SELECTED_TARGET=-1; + std::vectorMOVESET_SPIDEY; + Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL, *PLAYER_DECAL, @@ -237,6 +243,7 @@ public: std::vector ENCOUNTERS; Encounter ENCOUNTER_SPIDEY_1; Encounter CURRENT_ENCOUNTER; + std::vector turnOrder; bool OnUserCreate() override { @@ -330,9 +337,13 @@ public: HURRICANE->playerOwnCount=1; METEOR_RAIN->playerOwnCount=5; - ENCOUNTER_SPIDEY_1.entities.push_back(*new Entity(SPIDEY_DECAL,"Spidey",2,3,80,80,false)); - ENCOUNTER_SPIDEY_1.entities.push_back(*new Entity(SPIDEY_DECAL,"Spidey",4,4,80,80,false)); - ENCOUNTER_SPIDEY_1.entities.push_back(*new Entity(SPIDEY_DECAL,"Spidey",6,2,80,80,false)); + MOVESET_SPIDEY.push_back(SANDSTORM); + MOVESET_SPIDEY.push_back(SEED_STORM); + MOVESET_SPIDEY.push_back(AVALANCHE); + + ENCOUNTER_SPIDEY_1.entities.push_back(*new Entity(SPIDEY_DECAL,"Spidey",2,3,80,80,MOVESET_SPIDEY)); + ENCOUNTER_SPIDEY_1.entities.push_back(*new Entity(SPIDEY_DECAL,"Spidey",4,4,80,80,MOVESET_SPIDEY)); + ENCOUNTER_SPIDEY_1.entities.push_back(*new Entity(SPIDEY_DECAL,"Spidey",6,2,80,80,MOVESET_SPIDEY)); ENCOUNTER_SPIDEY_1.x=79; ENCOUNTER_SPIDEY_1.y=47; ENCOUNTERS.push_back(ENCOUNTER_SPIDEY_1); @@ -397,6 +408,50 @@ public: } } }break; + case battle::PLAYER_TARGET_SELECTION:{ + BATTLE_STATE=battle::ENEMY_SELECTION; + for (int i=0;i0) { + CURRENT_ENCOUNTER.entities[i].selectedMove=CURRENT_ENCOUNTER.entities[i].moveSet[rand()%CURRENT_ENCOUNTER.entities[i].moveSet.size()]; + CURRENT_ENCOUNTER.entities[i].turnComplete=false; + } + } + BATTLE_STATE=battle::MOVE_RESOLUTION; + //Seed Storm has prio. + if (BATTLE_CARD_SELECTION_IND!=-1&&BATTLE_CARD_SELECTION->name.compare("Seed Storm")==0) { + turnOrder.push_back(-1); + BATTLE_CARD_SELECTION_IND=-1; + } + for (int i=0;i0&&!CURRENT_ENCOUNTER.entities[i].turnComplete&& + CURRENT_ENCOUNTER.entities[i].selectedMove->name.compare("Seed Storm")) { + turnOrder.push_back(i); + CURRENT_ENCOUNTER.entities[i].turnComplete=true; + } + } + //Otherwise, every enemy has a chance to go before the player unless they are slowed, then they always go after. + for (int i=0;i0&&!ent.turnComplete&& + !ent.slowed&&rand()%2==0) { + turnOrder.push_back(i); + ent.turnComplete=true; + } + } + if (BATTLE_CARD_SELECTION_IND!=-1) { + turnOrder.push_back(-1); + BATTLE_CARD_SELECTION_IND=-1; + } + //Finally, any enemies that haven't gone will now go. + for (int i=0;i0&&!ent.turnComplete) { + turnOrder.push_back(i); + ent.turnComplete=true; + } + } + BATTLE_STATE=battle::PERFORM_TURN; + }break; } } @@ -456,7 +511,7 @@ public: } }break; case battle::PLAYER_TARGET_SELECTION:{ - if (GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed||GetKey(W).bReleased||GetKey(UP).bReleased||GetKey(NP8).bReleased) { + if (GetKey(D).bPressed||GetKey(RIGHT).bPressed||GetKey(NP6).bPressed) { while (true) { PLAYER_SELECTED_TARGET=(PLAYER_SELECTED_TARGET+1)%CURRENT_ENCOUNTER.entities.size(); if (CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET].hp>0) { @@ -464,7 +519,11 @@ public: } } } - if (GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed||GetKey(S).bReleased||GetKey(DOWN).bReleased||GetKey(NP5).bReleased||GetKey(NP2).bReleased) { + if (GetKey(W).bPressed||GetKey(UP).bPressed||GetKey(NP8).bPressed) { + PLAYER_SELECTED_TARGET=-1; + BATTLE_STATE=battle::PLAYER_SELECTION; + } + if (GetKey(A).bPressed||GetKey(LEFT).bPressed||GetKey(NP4).bPressed) { while (true) { if (--PLAYER_SELECTED_TARGET<0) { PLAYER_SELECTED_TARGET=CURRENT_ENCOUNTER.entities.size()-1; @@ -884,6 +943,8 @@ public: if (PLAYER_SELECTED_TARGET>=0) { DrawWrappedText({5,5},"Target "+CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET].name+" "+(char)('A'+PLAYER_SELECTED_TARGET)+" with "+BATTLE_CARD_SELECTION->name,WIDTH-8,BLACK,{2,2}); DrawWrappedText({4,4},"Target "+CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET].name+" "+(char)('A'+PLAYER_SELECTED_TARGET)+" with "+BATTLE_CARD_SELECTION->name,WIDTH-8,WHITE,{2,2}); + DrawStringDecal({WIDTH-GetTextSize(" Back").x-1,HEIGHT-GetTextSize(" Back").y-1}," Back",BLACK,{1,1}); + DrawStringDecal({WIDTH-GetTextSize(" Back").x-2,HEIGHT-GetTextSize(" Back").y-2}," Back",GREEN,{1,1}); } }break; } diff --git a/Seasons_of_Loneliness b/Seasons_of_Loneliness index 2df6f38..b4f3588 100755 Binary files a/Seasons_of_Loneliness and b/Seasons_of_Loneliness differ