diff --git a/SeasonsOfLoneliness.cpp b/SeasonsOfLoneliness.cpp index 37df19d..37d0e36 100644 --- a/SeasonsOfLoneliness.cpp +++ b/SeasonsOfLoneliness.cpp @@ -385,6 +385,7 @@ public: Animation CONSUME_SNACK_ANIMATION; Animation CONSUME_MEAL_ANIMATION; Animation NADO_ANIMATION; + Animation PETAL_STORM_ANIMATION; ParticleEffect*HAILSTORM_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{4,4},{-2,0.5},{-0.5,2},Pixel(143, 242, 255,255),Pixel(255,255,255,255),300,Pixel(220, 226, 227,0)); ParticleEffect*HURRICANE_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{2,2},{-4,1},{-1,4},Pixel(225, 248, 252,64),Pixel(255,255,255,128),300,Pixel(220, 226, 227,0)); ParticleEffect*METEOR_RAIN_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{3,3},{6,6},{-1,0.2},{-0.2,1},Pixel(46, 31, 31,255),Pixel(43, 31, 46,255),50,Pixel(30, 10, 36,0)); @@ -394,6 +395,7 @@ public: ParticleEffect*SEED_STORM_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{2,2},{-0.5,-1},{0.5,-0.2},Pixel(65, 98, 66,130),Pixel(65, 117, 60,210),100,Pixel(70, 158, 62,0)); ParticleEffect*AVALANCHE_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{8,8},{-4,2},{4,4},Pixel(143, 242, 255,255),Pixel(255,255,255,255),300,Pixel(220, 226, 227,0)); ParticleEffect*CONSUME_SNACK_EFF = new ParticleEffect({0,0},{64,64},{64,64},{64,64},{1,1},{2,2},{-0.1,-0.5},{0.1,-0.05},Pixel(255,255,255,130),Pixel(255,255,255,210),30,Pixel(147, 161, 90,0)); //Used for CONSUME_MEAL too. + ParticleEffect*PETAL_STORM_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{3,3},{-4,0.6},{4,2},Pixel(127, 27, 130,130),Pixel(227, 218, 227,240),160,Pixel(147, 161, 90,0)); WEATHER_POWER*HAILSTORM = new WEATHER_POWER("Hailstorm","Causes a flurry of hard cold rocks to be unleashed in target area. 60+30d",&POWER_HAILSTORM_ANIMATION,&POWER_HAILSTORM_ANIMATION,60,30,160,Pixel(72, 160, 212,255),Pixel(93, 161, 163,255),120,HAILSTORM_EFF); WEATHER_POWER*HURRICANE = new WEATHER_POWER("Hurricane","Causes heavy winds, scattering seeds, heavy rain. 20+10d",&POWER_HURRICANE_ANIMATION,&POWER_HURRICANE_ANIMATION,20,10,200,Pixel(99, 148, 132,255),Pixel(121, 132, 140,255),120,HURRICANE_EFF); WEATHER_POWER*METEOR_RAIN = new WEATHER_POWER("Meteor Rain","Causes space rocks to fall on target area. 50+50d",&POWER_METEOR_SHOWER_ANIMATION,&POWER_METEOR_SHOWER_ANIMATION,50,50,96,Pixel(96, 86, 153,255),Pixel(170, 103, 201,255),120,METEOR_STORM_EFF); @@ -404,12 +406,14 @@ public: 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),120,AVALANCHE_EFF); WEATHER_POWER*CONSUME_SNACK = new WEATHER_POWER("Snack","Restores 33% health for 5 turns. If battle ends before effect ends, food is not consumed.",&CONSUME_SNACK_ANIMATION,&CONSUME_SNACK_ANIMATION,-1001,1,200,Pixel(147, 173, 66,255),Pixel(255, 188, 3,255),120,CONSUME_SNACK_EFF); WEATHER_POWER*CONSUME_MEAL = new WEATHER_POWER("Meal","Restores all health. Increases Maximum Health by 5.",&CONSUME_MEAL_ANIMATION,&CONSUME_MEAL_ANIMATION,-1002,1,200,Pixel(147, 173, 66,255),Pixel(255, 188, 3,255),120,CONSUME_SNACK_EFF); + WEATHER_POWER*PETAL_STORM = new WEATHER_POWER("Petal Storm","Places seeds, causes minor healing. 20+20d",&PETAL_STORM_ANIMATION,&PETAL_STORM_ANIMATION,20,20,110,Pixel(189, 132, 189,255),Pixel(235, 75, 235,255),120,PETAL_STORM_EFF); bool IN_BATTLE_ENCOUNTER = false; int BATTLE_ENTRY_TIMER = 0; int EFFECT_TIMER = 0; - #define WEATHER_POWER_COUNT 7 //Number of powers that are in the game. Update storage array accordingly. + #define WEATHER_POWER_COUNT 8 //Number of powers that are in the game. Update storage array accordingly. WEATHER_POWER*WEATHER_POWERS[WEATHER_POWER_COUNT] = { HAILSTORM, + PETAL_STORM, HURRICANE, METEOR_RAIN, METEOR_STORM, @@ -442,6 +446,7 @@ public: std::string TERMINAL_INPUT=""; std::string PLAYER_NAME="..."; std::vectorZONES; + std::vectorCOLLECTED_ITEMS; Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL, @@ -449,7 +454,7 @@ public: *WEATHERNODE_EFFECT_DECAL,*POWER_HAILSTORM_DECAL,*POWER_HURRICANE_DECAL,*POWER_METEOR_SHOWER_DECAL,*POWER_METEOR_STORM_DECAL,*POWER_SNOWSTORM_DECAL, *SPIDEY_DECAL,*TARGETING_CIRCLE,*TARGETING_RANGE_CIRCLE,*HEALTHBAR_DECAL, *CONSUME_SNACK_DECAL,*CONSUME_MEAL_DECAL,*COMPUTER_DECAL,*BROKEN_ROVER_DECAL, - *NADO_DECAL; + *NADO_DECAL,*SILICON_ROCK_DECAL,*PETAL_STORM_DECAL; std::map BASE_OBJECTS; std::vector ENCOUNTERS; Encounter ENCOUNTER_SPIDEY_1; @@ -493,6 +498,8 @@ public: COMPUTER_DECAL=new Decal(new Sprite("assets/computerSystem.png")); BROKEN_ROVER_DECAL=new Decal(new Sprite("assets/brokenROVER.png")); NADO_DECAL=new Decal(new Sprite("assets/nado.png")); + SILICON_ROCK_DECAL=new Decal(new Sprite("assets/siliconPiece.png")); + PETAL_STORM_DECAL=new Decal(new Sprite("assets/petalstorm_icon.png")); current_playerAnim.spr=PLAYER_DECAL; playerAnim.spr=PLAYER_DECAL; @@ -601,6 +608,7 @@ public: BASE_OBJECTS["COMPUTER"]=new ObjectLoadInfo(COMPUTER_DECAL); BASE_OBJECTS["BROKEN_ROVER"]=new ObjectLoadInfo(BROKEN_ROVER_DECAL); BASE_OBJECTS["NADO"]=new ObjectLoadInfo(NADO_DECAL,&NADO_ANIMATION,Pixel(153, 137, 75,230)); + BASE_OBJECTS["SILICON_PIECE"]=new ObjectLoadInfo(SILICON_ROCK_DECAL); Zone*SILICON_DEPOSIT_ZONE = new Zone({109,7},{26,9},{0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{3,3},{-30,-3},{30,3},Pixel(133, 98, 66,180),Pixel(220, 120, 90,230),300,Pixel(87, 78, 69,64)); @@ -1028,6 +1036,7 @@ public: int amountGained=rand()%4+2; HAILSTORM->playerOwnCount+=amountGained; std::cout<<"Increased HAILSTORM power inventory count by "<x,obj->y}); OBJECTS.erase(OBJECTS.begin()+i--); delete obj; performCropUpdate(8); @@ -1037,6 +1046,7 @@ public: int amountGained=rand()%4+2; HURRICANE->playerOwnCount+=amountGained; std::cout<<"Increased HURRICANE power inventory count by "<x,obj->y}); OBJECTS.erase(OBJECTS.begin()+i--); delete obj; performCropUpdate(8); @@ -1046,6 +1056,7 @@ public: int amountGained=rand()%4+2; METEOR_RAIN->playerOwnCount+=amountGained; std::cout<<"Increased METEORSHOWER power inventory count by "<x,obj->y}); OBJECTS.erase(OBJECTS.begin()+i--); delete obj; performCropUpdate(8); @@ -1055,6 +1066,7 @@ public: int amountGained=rand()%4+2; METEOR_STORM->playerOwnCount+=amountGained; std::cout<<"Increased METEORSTORM power inventory count by "<x,obj->y}); OBJECTS.erase(OBJECTS.begin()+i--); delete obj; performCropUpdate(8); @@ -1064,6 +1076,7 @@ public: int amountGained=rand()%4+2; SNOWSTORM->playerOwnCount+=amountGained; std::cout<<"Increased SNOWSTORM power inventory count by "<x,obj->y}); OBJECTS.erase(OBJECTS.begin()+i--); delete obj; performCropUpdate(8); @@ -1860,30 +1873,42 @@ public: } y++; } else { - Object*obj = new Object(); std::stringstream split1(data.substr(0,data.find(';'))); - split1>>obj->x; std::stringstream split2(data.substr(data.find(';')+1,data.find(';',data.find(";")+1)-(data.find(';')+1))); - split2>>obj->y; - std::string split3 = data.substr(data.find(';',data.find(";")+1)+1,data.length()-(data.find(';',data.find(";")+1)+1)); - if (split3.compare("NULL")!=0) { - obj->spr=BASE_OBJECTS[split3]->spr; - obj->col=BASE_OBJECTS[split3]->col; - if (BASE_OBJECTS[split3]->hasanim) { - obj->hasAnim=true; - obj->anim=BASE_OBJECTS[split3]->anim; - } else - if (BASE_OBJECTS[split3]->hascut){ - obj->hascut=true; - obj->spos=BASE_OBJECTS[split3]->spos; - obj->size=BASE_OBJECTS[split3]->size; + int x,y; + split1>>x; + split2>>y; + bool alreadyCollected=false; + for (int i=0;ispr=NULL; } - obj->name=split3; - printf("Loaded object %s: (%f,%f)\n",split3.c_str(),obj->x,obj->y); - OBJECTS.push_back(obj); + if (!alreadyCollected) { + Object*obj = new Object(); + obj->x=x; + obj->y=y; + std::string split3 = data.substr(data.find(';',data.find(";")+1)+1,data.length()-(data.find(';',data.find(";")+1)+1)); + if (split3.compare("NULL")!=0) { + obj->spr=BASE_OBJECTS[split3]->spr; + obj->col=BASE_OBJECTS[split3]->col; + if (BASE_OBJECTS[split3]->hasanim) { + obj->hasAnim=true; + obj->anim=BASE_OBJECTS[split3]->anim; + } else + if (BASE_OBJECTS[split3]->hascut){ + obj->hascut=true; + obj->spos=BASE_OBJECTS[split3]->spos; + obj->size=BASE_OBJECTS[split3]->size; + } + } else { + obj->spr=NULL; + } + obj->name=split3; + printf("Loaded object %s: (%f,%f)\n",split3.c_str(),obj->x,obj->y); + OBJECTS.push_back(obj); + } } } } diff --git a/Seasons_of_Loneliness b/Seasons_of_Loneliness index 3ab5329..f92ac1b 100755 Binary files a/Seasons_of_Loneliness and b/Seasons_of_Loneliness differ diff --git a/assets/maps/map1 b/assets/maps/map1 index f645aca..9aa24fd 100644 --- a/assets/maps/map1 +++ b/assets/maps/map1 @@ -92,4 +92,5 @@ 122;10;NADO 116;11;NADO 120;11;NADO -122;13;NADO \ No newline at end of file +122;13;NADO +121;9;SILICON_PIECE \ No newline at end of file diff --git a/assets/petalstorm_icon.png b/assets/petalstorm_icon.png new file mode 100644 index 0000000..e049ce3 Binary files /dev/null and b/assets/petalstorm_icon.png differ diff --git a/assets/siliconPiece.png b/assets/siliconPiece.png new file mode 100644 index 0000000..4ec9cd0 Binary files /dev/null and b/assets/siliconPiece.png differ diff --git a/ideas b/ideas index 2b5e31c..0e3ea2e 100644 --- a/ideas +++ b/ideas @@ -81,5 +81,37 @@ a little baffled." "Winds" - Winds interact with Seeds and Fire. "Petal Storm" - A petal storm causes Seeds to scatter and minor damage. "" + + + +========================== + +After repairing R.O.V.E.Rs identification system one GPS link is reestablished however, weather conditions are not ideal and will need to rest for the next cycle. + +"Well, I guess it's time to take a nap while waiting." + +The player is then left with the option of exploring or resting. +Upon entering the dome, the player may interact with the bed to rest. + + + +cut-out to GPS communication terminal announcing location of R.O.V.E.R link 2. +(Output coordinates with invading boss's tag included. +Ex. X.X+138, X.X+117) + +Boss X.X invades dome, causing loud shakes to be heard just outside. +Wakes up Player. + +"Of course now would be a GREAT time for an invasion." + + + +A card shrine appears in the house, giving you access to Petal Storm. + +Once the fight begins a tutorial is initiated for how to use it. + + ============== -Go the whole game nameless (Do not farm food) \ No newline at end of file +Go the whole game nameless (Do not farm food) + +