generated from sigonasr2/CPlusPlusProjectTemplate
Healing reduction due to drought
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
ffdc088e24
commit
6a05a3e323
@ -14,6 +14,7 @@ using namespace olc;
|
|||||||
|
|
||||||
#define SKIP_INTRO true
|
#define SKIP_INTRO true
|
||||||
#define SKIP_CHAPTER1 true
|
#define SKIP_CHAPTER1 true
|
||||||
|
#define SKIP_BOSS true
|
||||||
#define SKIP_CHAPTER2 false
|
#define SKIP_CHAPTER2 false
|
||||||
#define SKIP_CHAPTER3 false
|
#define SKIP_CHAPTER3 false
|
||||||
|
|
||||||
@ -77,6 +78,7 @@ namespace cutscene{
|
|||||||
SHAKE,
|
SHAKE,
|
||||||
INVESTIGATE_X_X,
|
INVESTIGATE_X_X,
|
||||||
CHECK_COORDS,
|
CHECK_COORDS,
|
||||||
|
SPAWN_WORMS,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -109,6 +111,7 @@ namespace gameflag{
|
|||||||
TUTORIAL2_X_X,
|
TUTORIAL2_X_X,
|
||||||
CHECK_ROVER,
|
CHECK_ROVER,
|
||||||
NEXT_COORDS,
|
NEXT_COORDS,
|
||||||
|
COLLECTED_SILICON_2,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -129,7 +132,8 @@ class Seed{
|
|||||||
namespace reasoncode{
|
namespace reasoncode{
|
||||||
enum Code{
|
enum Code{
|
||||||
SEED_GROWTH,
|
SEED_GROWTH,
|
||||||
TREE_BURN
|
TREE_BURN,
|
||||||
|
DROUGHT
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -578,9 +582,11 @@ public:
|
|||||||
int MAIN_MENU_SELECTION=0;
|
int MAIN_MENU_SELECTION=0;
|
||||||
std::string MENU_OPTIONS[4]={"NEW GAME","CONTINUE","MUTE SOUND","EXIT"};
|
std::string MENU_OPTIONS[4]={"NEW GAME","CONTINUE","MUTE SOUND","EXIT"};
|
||||||
int BATTLE_REASON_CODE=-1;
|
int BATTLE_REASON_CODE=-1;
|
||||||
|
bool BATTLE_DROUGHT_ACTIVE=false;
|
||||||
|
|
||||||
Map*MAP_1=new Map("map1");
|
Map*MAP_1=new Map("map1");
|
||||||
Map*MAP_2=new Map("map2");
|
Map*MAP_2=new Map("map2");
|
||||||
|
Map*MAP_3=new Map("map3");
|
||||||
|
|
||||||
Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL,
|
Decal*DOME_DECAL,*FOOD_METER_DECAL,*OXYGEN_METER_DECAL,*PLANT_DECAL,
|
||||||
*PLAYER_DECAL,
|
*PLAYER_DECAL,
|
||||||
@ -594,6 +600,7 @@ public:
|
|||||||
std::vector<Encounter> ENCOUNTERS;
|
std::vector<Encounter> ENCOUNTERS;
|
||||||
Encounter ENCOUNTER_SPIDEY_1;
|
Encounter ENCOUNTER_SPIDEY_1;
|
||||||
Encounter ENCOUNTER_X_X;
|
Encounter ENCOUNTER_X_X;
|
||||||
|
Encounter ENCOUNTER_SANDWORM_1;
|
||||||
Encounter CURRENT_ENCOUNTER;
|
Encounter CURRENT_ENCOUNTER;
|
||||||
std::vector<WEATHER_POWER*>MOVESET_SPIDEY;
|
std::vector<WEATHER_POWER*>MOVESET_SPIDEY;
|
||||||
std::vector<WEATHER_POWER*>MOVESET_SANDWORM;
|
std::vector<WEATHER_POWER*>MOVESET_SANDWORM;
|
||||||
@ -649,6 +656,14 @@ public:
|
|||||||
if (SKIP_CHAPTER3) {
|
if (SKIP_CHAPTER3) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
if (SKIP_BOSS) {
|
||||||
|
GAME_FLAGS[gameflag::SLEEP]=true;
|
||||||
|
GAME_FLAGS[gameflag::FIRST_ENCOUNTER_X_X]=true;
|
||||||
|
GAME_FLAGS[gameflag::ANALYSIS_X_X]=true;
|
||||||
|
GAME_FLAGS[gameflag::TUTORIAL1_X_X]=true;
|
||||||
|
GAME_FLAGS[gameflag::TUTORIAL2_X_X]=true;
|
||||||
|
GAME_STATE=GAMEWORLD;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SONG_MAIN = sound::Wave("./assets/SeasonsOfLoneliness.wav");
|
SONG_MAIN = sound::Wave("./assets/SeasonsOfLoneliness.wav");
|
||||||
@ -882,6 +897,14 @@ public:
|
|||||||
ENCOUNTER_X_X.playerX=3;
|
ENCOUNTER_X_X.playerX=3;
|
||||||
ENCOUNTER_X_X.playerY=2;
|
ENCOUNTER_X_X.playerY=2;
|
||||||
ENCOUNTER_X_X.map=MAP_1;
|
ENCOUNTER_X_X.map=MAP_1;
|
||||||
|
ENCOUNTER_SANDWORM_1.entities.push_back(new Entity(SANDWORM_DECAL,"Sandworm",2,1,165,165,MOVESET_SANDWORM));
|
||||||
|
ENCOUNTER_SANDWORM_1.entities.push_back(new Entity(SANDWORM_DECAL,"Sandworm",3,4,165,165,MOVESET_SANDWORM));
|
||||||
|
ENCOUNTER_SANDWORM_1.entities.push_back(new Entity(SANDWORM_DECAL,"Sandworm",6,3,165,165,MOVESET_SANDWORM));
|
||||||
|
ENCOUNTER_SANDWORM_1.x=20-4;
|
||||||
|
ENCOUNTER_SANDWORM_1.y=73-3.5;
|
||||||
|
ENCOUNTER_SANDWORM_1.playerX=4;
|
||||||
|
ENCOUNTER_SANDWORM_1.playerY=3.5;
|
||||||
|
ENCOUNTER_SANDWORM_1.map=MAP_3;
|
||||||
//ENCOUNTERS.push_back(ENCOUNTER_X_X); //Activate at beginning of Chapter 2.
|
//ENCOUNTERS.push_back(ENCOUNTER_X_X); //Activate at beginning of Chapter 2.
|
||||||
|
|
||||||
BASE_OBJECTS["DOME"]=new ObjectLoadInfo(DOME_DECAL);
|
BASE_OBJECTS["DOME"]=new ObjectLoadInfo(DOME_DECAL);
|
||||||
@ -1200,11 +1223,19 @@ public:
|
|||||||
}
|
}
|
||||||
switch (CURRENT_CUTSCENE) {
|
switch (CURRENT_CUTSCENE) {
|
||||||
case cutscene::TRANSITION_CUTSCENE:{
|
case cutscene::TRANSITION_CUTSCENE:{
|
||||||
LoadMap(MAP_1);
|
if (GAME_FLAGS[gameflag::CHECK_ROVER]) {
|
||||||
PLAYER_COORDS[0]=40.5;
|
LoadMap(MAP_3);
|
||||||
PLAYER_COORDS[1]=37.5;
|
PLAYER_COORDS[0]=40.5;
|
||||||
fadeIn();
|
PLAYER_COORDS[1]=37.5;
|
||||||
EndCutscene();
|
fadeIn();
|
||||||
|
EndCutscene();
|
||||||
|
} else {
|
||||||
|
LoadMap(MAP_1);
|
||||||
|
PLAYER_COORDS[0]=40.5;
|
||||||
|
PLAYER_COORDS[1]=37.5;
|
||||||
|
fadeIn();
|
||||||
|
EndCutscene();
|
||||||
|
}
|
||||||
if (!GAME_FLAGS[gameflag::VISIT_BROKEN_ROVER]) {
|
if (!GAME_FLAGS[gameflag::VISIT_BROKEN_ROVER]) {
|
||||||
GAME_FLAGS[gameflag::VISIT_BROKEN_ROVER]=true;
|
GAME_FLAGS[gameflag::VISIT_BROKEN_ROVER]=true;
|
||||||
PlayCutscene(cutscene::WALK_TO_ROVER);
|
PlayCutscene(cutscene::WALK_TO_ROVER);
|
||||||
@ -1737,7 +1768,7 @@ public:
|
|||||||
PIXEL_EFFECT_TRANSPARENCY=(0.5*cos(((M_PI/(30.0*(ref->effectTime/120.0)))/2)*EFFECT_TIMER-M_PI)+0.5);
|
PIXEL_EFFECT_TRANSPARENCY=(0.5*cos(((M_PI/(30.0*(ref->effectTime/120.0)))/2)*EFFECT_TIMER-M_PI)+0.5);
|
||||||
if (EFFECT_TIMER==30&&ref->name.compare("Petal Storm")==0) {
|
if (EFFECT_TIMER==30&&ref->name.compare("Petal Storm")==0) {
|
||||||
int healPower=30;
|
int healPower=30;
|
||||||
int healRoll=healPower+rand()%ref->damageRoll*sign(healPower);
|
int healRoll=healPower+rand()%ref->damageRoll*sign(healPower)*(BATTLE_DROUGHT_ACTIVE?0.5:1);
|
||||||
if (BATTLE_CURRENT_TURN_ENTITY==-1) {
|
if (BATTLE_CURRENT_TURN_ENTITY==-1) {
|
||||||
effectRadius({(int)BATTLE_PLAYER_COORDS.x,(int)BATTLE_PLAYER_COORDS.y},ref,-healRoll,true);
|
effectRadius({(int)BATTLE_PLAYER_COORDS.x,(int)BATTLE_PLAYER_COORDS.y},ref,-healRoll,true);
|
||||||
} else {
|
} else {
|
||||||
@ -1757,7 +1788,7 @@ public:
|
|||||||
if (BATTLE_CURRENT_TURN_ENTITY==-1) {
|
if (BATTLE_CURRENT_TURN_ENTITY==-1) {
|
||||||
if (FOOD_REGEN_TURNS>0) {
|
if (FOOD_REGEN_TURNS>0) {
|
||||||
FOOD_REGEN_TURNS--;
|
FOOD_REGEN_TURNS--;
|
||||||
PLAYER_HP=std::clamp(PLAYER_HP+(int)(PLAYER_MAXHP*0.33),0,PLAYER_MAXHP);
|
PLAYER_HP=std::clamp(PLAYER_HP+(int)((PLAYER_MAXHP*0.33)*(BATTLE_DROUGHT_ACTIVE?0.5:1)),0,PLAYER_MAXHP);
|
||||||
CreateDisplayNumber((int)(-PLAYER_MAXHP*0.33),CURRENT_ENCOUNTER.x+CURRENT_ENCOUNTER.playerX,CURRENT_ENCOUNTER.y+CURRENT_ENCOUNTER.playerY,frameCount);
|
CreateDisplayNumber((int)(-PLAYER_MAXHP*0.33),CURRENT_ENCOUNTER.x+CURRENT_ENCOUNTER.playerX,CURRENT_ENCOUNTER.y+CURRENT_ENCOUNTER.playerY,frameCount);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -1797,6 +1828,10 @@ public:
|
|||||||
if (ref->burnTrees&&TREES.size()>0&&ref->treeBurnChance>range(0,1)){
|
if (ref->burnTrees&&TREES.size()>0&&ref->treeBurnChance>range(0,1)){
|
||||||
BATTLE_REASON_CODE=reasoncode::TREE_BURN;
|
BATTLE_REASON_CODE=reasoncode::TREE_BURN;
|
||||||
BATTLE_STATE=battle::WAIT_TURN_ANIMATION2;
|
BATTLE_STATE=battle::WAIT_TURN_ANIMATION2;
|
||||||
|
} else
|
||||||
|
if (ref==DROUGHT) {
|
||||||
|
BATTLE_REASON_CODE=reasoncode::DROUGHT;
|
||||||
|
BATTLE_STATE=battle::WAIT_TURN_ANIMATION2;
|
||||||
} else {
|
} else {
|
||||||
BATTLE_REASON_CODE=-1;
|
BATTLE_REASON_CODE=-1;
|
||||||
BATTLE_STATE=battle::DAMAGE_RESOLUTION;
|
BATTLE_STATE=battle::DAMAGE_RESOLUTION;
|
||||||
@ -1814,12 +1849,15 @@ public:
|
|||||||
case reasoncode::TREE_BURN:{
|
case reasoncode::TREE_BURN:{
|
||||||
applyPixelEffect(FIRESTORM_EFF,BATTLE_PLAYER_COORDS,0);
|
applyPixelEffect(FIRESTORM_EFF,BATTLE_PLAYER_COORDS,0);
|
||||||
}break;
|
}break;
|
||||||
|
case reasoncode::DROUGHT:{
|
||||||
|
applyPixelEffect(DROUGHT_EFF,BATTLE_PLAYER_COORDS,0);
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (EFFECT_TIMER==60) {
|
if (EFFECT_TIMER==60) {
|
||||||
switch (BATTLE_REASON_CODE) {
|
switch (BATTLE_REASON_CODE) {
|
||||||
case reasoncode::SEED_GROWTH:{
|
case reasoncode::SEED_GROWTH:{
|
||||||
int healAmt=-10*SEEDS.size();
|
int healAmt=-10*SEEDS.size()*(BATTLE_DROUGHT_ACTIVE?0.5:1);
|
||||||
CreateDisplayNumber(healAmt,BATTLE_PLAYER_COORDS.x,BATTLE_PLAYER_COORDS.y,frameCount);
|
CreateDisplayNumber(healAmt,BATTLE_PLAYER_COORDS.x,BATTLE_PLAYER_COORDS.y,frameCount);
|
||||||
PLAYER_HP=std::clamp(PLAYER_HP+healAmt*-1,0,PLAYER_MAXHP);
|
PLAYER_HP=std::clamp(PLAYER_HP+healAmt*-1,0,PLAYER_MAXHP);
|
||||||
addTrees(SEEDS.size());
|
addTrees(SEEDS.size());
|
||||||
@ -2153,6 +2191,35 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
|
case cutscene::SPAWN_WORMS:{
|
||||||
|
if (CUTSCENE_TIMER<60) {
|
||||||
|
if (frameCount%4==0) {
|
||||||
|
PLAYER_COORDS[1]+=0.25;
|
||||||
|
} else
|
||||||
|
if (frameCount%4==1) {
|
||||||
|
PLAYER_COORDS[1]+=0.25;
|
||||||
|
} else
|
||||||
|
if (frameCount%4==2) {
|
||||||
|
PLAYER_COORDS[1]-=0.25;
|
||||||
|
} else
|
||||||
|
if (frameCount%4==3) {
|
||||||
|
PLAYER_COORDS[1]-=0.25;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if (!messageBoxVisible) {
|
||||||
|
if (!CUTSCENE_FLAGS[0]) {
|
||||||
|
CUTSCENE_FLAGS[0]=true;
|
||||||
|
CUTSCENE_OBJS[1]=CreateObject({PLAYER_COORDS[0]-2,PLAYER_COORDS[1]-3},SANDWORM_DECAL,true);
|
||||||
|
CUTSCENE_OBJS[2]=CreateObject({PLAYER_COORDS[0]-3,PLAYER_COORDS[1]+1},SANDWORM_DECAL,true);
|
||||||
|
CUTSCENE_OBJS[3]=CreateObject({PLAYER_COORDS[0]+0,PLAYER_COORDS[1]-1},SANDWORM_DECAL,true);
|
||||||
|
DisplayMessageBox(30);
|
||||||
|
} else {
|
||||||
|
EndCutscene();
|
||||||
|
ENCOUNTERS.push_back(ENCOUNTER_SANDWORM_1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) {
|
if (GAME_STATE==CUTSCENE_3&&!SOUND_IS_PLAYING) {
|
||||||
@ -2223,11 +2290,22 @@ public:
|
|||||||
}break;
|
}break;
|
||||||
case COLLECTED_SILICON:{
|
case COLLECTED_SILICON:{
|
||||||
if (!messageBoxVisible) {
|
if (!messageBoxVisible) {
|
||||||
if (!GAME_FLAGS[gameflag::COLLECTED_SILICON_1]) {
|
if (CURRENT_MAP==MAP_3) {
|
||||||
GAME_FLAGS[gameflag::COLLECTED_SILICON_1]=true;
|
if (!GAME_FLAGS[gameflag::COLLECTED_SILICON_2]) {
|
||||||
DisplayMessageBox(15);
|
GAME_FLAGS[gameflag::COLLECTED_SILICON_2]=true;
|
||||||
|
DisplayMessageBox(29);
|
||||||
|
} else {
|
||||||
|
GAME_STATE=GAMEWORLD;
|
||||||
|
StartCutscene(cutscene::SPAWN_WORMS);
|
||||||
|
CUTSCENE_OBJS[0]=CreateObject({PLAYER_COORDS[0],PLAYER_COORDS[1]},PLAYER_DECAL,playerAnimDown,true);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
GAME_STATE=GAMEWORLD;
|
if (!GAME_FLAGS[gameflag::COLLECTED_SILICON_1]) {
|
||||||
|
GAME_FLAGS[gameflag::COLLECTED_SILICON_1]=true;
|
||||||
|
DisplayMessageBox(15);
|
||||||
|
} else {
|
||||||
|
GAME_STATE=GAMEWORLD;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
@ -2410,6 +2488,10 @@ public:
|
|||||||
DrawWrappedText({5,5},"The trees cause rampaging fires!",WIDTH-8,DARK_RED,{2,2});
|
DrawWrappedText({5,5},"The trees cause rampaging fires!",WIDTH-8,DARK_RED,{2,2});
|
||||||
DrawWrappedText({4,4},"The trees cause rampaging fires!",WIDTH-8,WHITE,{2,2});
|
DrawWrappedText({4,4},"The trees cause rampaging fires!",WIDTH-8,WHITE,{2,2});
|
||||||
}break;
|
}break;
|
||||||
|
case reasoncode::DROUGHT:{
|
||||||
|
DrawWrappedText({5,5},"A drought is active, causing healing to be reduced!",WIDTH-8,DARK_MAGENTA,{2,2});
|
||||||
|
DrawWrappedText({4,4},"A drought is active, causing healing to be reduced!",WIDTH-8,WHITE,{2,2});
|
||||||
|
}break;
|
||||||
}
|
}
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
@ -2859,9 +2941,8 @@ public:
|
|||||||
foodCount--;
|
foodCount--;
|
||||||
} else
|
} else
|
||||||
if (power->damage==-1001) {
|
if (power->damage==-1001) {
|
||||||
//Instead heal for their max health.
|
|
||||||
FOOD_REGEN_TURNS=4;
|
FOOD_REGEN_TURNS=4;
|
||||||
finalDamage=-PLAYER_MAXHP*0.33;
|
finalDamage=-PLAYER_MAXHP*0.33*(BATTLE_DROUGHT_ACTIVE?0.5:1);
|
||||||
foodCount--;
|
foodCount--;
|
||||||
}
|
}
|
||||||
PLAYER_HP=std::clamp(PLAYER_HP-finalDamage,0,PLAYER_MAXHP);
|
PLAYER_HP=std::clamp(PLAYER_HP-finalDamage,0,PLAYER_MAXHP);
|
||||||
@ -3075,7 +3156,7 @@ public:
|
|||||||
PLAYER_COORDS[1]=teleLoc.y+0.5;
|
PLAYER_COORDS[1]=teleLoc.y+0.5;
|
||||||
}
|
}
|
||||||
|
|
||||||
Object*CreateObject(vf2d pos,Decal*spr,int ,bool temporary=false) {
|
Object*CreateObject(vf2d pos,Decal*spr,bool temporary=false) {
|
||||||
Object*newobj;
|
Object*newobj;
|
||||||
OBJECTS.push_back(newobj=new Object(spr));
|
OBJECTS.push_back(newobj=new Object(spr));
|
||||||
newobj->x=pos.x;
|
newobj->x=pos.x;
|
||||||
|
Binary file not shown.
@ -107,4 +107,5 @@
|
|||||||
116;11;NADO
|
116;11;NADO
|
||||||
120;11;NADO
|
120;11;NADO
|
||||||
122;13;NADO
|
122;13;NADO
|
||||||
121;9;SILICON_PIECE
|
121;9;SILICON_PIECE
|
||||||
|
20;73;SILICON_PIECE
|
6
data.h
6
data.h
@ -115,6 +115,12 @@ SIGNS INDICATE TRACES OF SILICON LOCATION ::: SOUTHWEST)",//27
|
|||||||
R"(
|
R"(
|
||||||
$PLAYER
|
$PLAYER
|
||||||
Perfect! We can improve the tracking ability by collecting more of these! Then hopefully the signal will become strong enough...)",//28
|
Perfect! We can improve the tracking ability by collecting more of these! Then hopefully the signal will become strong enough...)",//28
|
||||||
|
R"(
|
||||||
|
$PLAYER
|
||||||
|
Well that was simpl-... Eh?)",//29
|
||||||
|
R"(
|
||||||
|
$PLAYER
|
||||||
|
Worms? Don't think they're here to play either.)",//30
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user