generated from sigonasr2/CPlusPlusProjectTemplate
Include new enemies, attacks, powers
Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
This commit is contained in:
parent
aed5838d91
commit
9dd28d3593
@ -17,7 +17,7 @@ using namespace olc;
|
|||||||
#define SKIP_CHAPTER2 false
|
#define SKIP_CHAPTER2 false
|
||||||
#define SKIP_CHAPTER3 false
|
#define SKIP_CHAPTER3 false
|
||||||
|
|
||||||
#define STARTING_MAP "assets/maps/map1"
|
#define STARTING_MAP MAP_1
|
||||||
#define STARTING_STATE CUTSCENE_3
|
#define STARTING_STATE CUTSCENE_3
|
||||||
#define MOVE_SPD 0.075
|
#define MOVE_SPD 0.075
|
||||||
#define PLAYER_X 14
|
#define PLAYER_X 14
|
||||||
@ -251,6 +251,14 @@ class Object{
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class Map{
|
||||||
|
public:
|
||||||
|
std::string filename;
|
||||||
|
Map(std::string filepath) {
|
||||||
|
this->filename=filepath;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
class ParticleEffect{
|
class ParticleEffect{
|
||||||
public:
|
public:
|
||||||
vf2d effectPos;
|
vf2d effectPos;
|
||||||
@ -351,6 +359,7 @@ class Encounter{
|
|||||||
float playerX,playerY;
|
float playerX,playerY;
|
||||||
std::vector<Entity*> entities;
|
std::vector<Entity*> entities;
|
||||||
std::vector<int> turnOrder;
|
std::vector<int> turnOrder;
|
||||||
|
Map*map;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Zone{
|
class Zone{
|
||||||
@ -461,6 +470,8 @@ public:
|
|||||||
Animation*PETAL_STORM_ANIMATION=new Animation();
|
Animation*PETAL_STORM_ANIMATION=new Animation();
|
||||||
Animation*SLEEP_ANIMATION=new Animation();
|
Animation*SLEEP_ANIMATION=new Animation();
|
||||||
Animation*EMPTY_BED_ANIMATION=new Animation();
|
Animation*EMPTY_BED_ANIMATION=new Animation();
|
||||||
|
Animation*POWER_FLASHFLOOD_ANIMATION=new Animation();
|
||||||
|
Animation*POWER_SUNNYDAY_ANIMATION=new 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*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*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));
|
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));
|
||||||
@ -477,11 +488,18 @@ public:
|
|||||||
ParticleEffect*SUMMON_MINION_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{4,4},{12,12},{0,-6},{0,-20},Pixel(223, 242, 0,130),Pixel(223, 255, 114,210),50,Pixel(70, 158, 62,0));
|
ParticleEffect*SUMMON_MINION_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{4,4},{12,12},{0,-6},{0,-20},Pixel(223, 242, 0,130),Pixel(223, 255, 114,210),50,Pixel(70, 158, 62,0));
|
||||||
ParticleEffect*SEED_OF_LIFE_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{2,2},{2,2},{-1,-2},{1,-0.2},Pixel(65, 98, 66,210),Pixel(65, 117, 60,255),140,Pixel(70, 158, 62,0));
|
ParticleEffect*SEED_OF_LIFE_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{2,2},{2,2},{-1,-2},{1,-0.2},Pixel(65, 98, 66,210),Pixel(65, 117, 60,255),140,Pixel(70, 158, 62,0));
|
||||||
ParticleEffect*FIRESTORM_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{4,4},{12,12},{-12,-8},{12,-4},Pixel(209, 90, 69,130),Pixel(209, 141, 69,255),140,Pixel(255, 0, 0,32));
|
ParticleEffect*FIRESTORM_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{4,4},{12,12},{-12,-8},{12,-4},Pixel(209, 90, 69,130),Pixel(209, 141, 69,255),140,Pixel(255, 0, 0,32));
|
||||||
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);
|
ParticleEffect*ACID_RAIN_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{2,2},{-4,1},{-1,4},Pixel(117, 125, 57,128),Pixel(224, 245, 66,210),300,Pixel(220, 226, 227,0));
|
||||||
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);
|
ParticleEffect*DROUGHT_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{2,2},{-1,-4},{1,-0.5},Pixel(217, 79, 33,128),Pixel(217, 162, 33,210),70,Pixel(217, 204, 173,64));
|
||||||
WEATHER_POWER*METEOR_RAIN = new WEATHER_POWER("Meteor Rain","Causes fiery 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);
|
ParticleEffect*HEAT_WAVE_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{4,4},{12,12},{-8,4},{-4,8},Pixel(209, 90, 69,130),Pixel(209, 141, 69,255),80,Pixel(255, 0, 0,0));
|
||||||
|
ParticleEffect*TORNADO_EFF = new ParticleEffect({0,0},{64,64},{0,0},{64,64},{1,2},{3,20},{-14,2},{14,12},Pixel(168, 155, 146,196),Pixel(196, 194, 192,220),45,Pixel(255, 0, 0,0));
|
||||||
|
ParticleEffect*GUST_EFF = new ParticleEffect({0,0},{64,64},{0,0},{64,64},{1,2},{3,20},{-6,1},{6,6},Pixel(168, 155, 146,196),Pixel(196, 194, 192,220),20,Pixel(255, 0, 0,0));
|
||||||
|
ParticleEffect*FLASH_FLOOD_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{2,2},{-4,1},{-1,4},Pixel(8, 54, 204,64),Pixel(255,255,255,128),500,Pixel(220, 226, 227,0));
|
||||||
|
ParticleEffect*SUNNYDAY_EFF = new ParticleEffect({0,0},{WIDTH,HEIGHT},{0,0},{WIDTH,HEIGHT},{1,1},{4,4},{0,-2},{0,-6},Pixel(209, 207, 113,130),Pixel(255, 255, 255,210),50,Pixel(70, 158, 62,0));
|
||||||
|
WEATHER_POWER*HAILSTORM = new WEATHER_POWER("Hailstorm","Causes a flurry of hard cold rocks to be unleashed in target area. 60+1d30",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+1d10",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 fiery space rocks to fall on target area. 50+1d50",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);
|
||||||
WEATHER_POWER*METEOR_STORM = new WEATHER_POWER("Meteor Storm","Larger burning 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),120,METEOR_RAIN_EFF);
|
WEATHER_POWER*METEOR_STORM = new WEATHER_POWER("Meteor Storm","Larger burning 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),120,METEOR_RAIN_EFF);
|
||||||
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),120,SNOWSTORM_EFF);
|
WEATHER_POWER*SNOWSTORM = new WEATHER_POWER("Snowstorm","Slows down targets and causes rapid temperature drops. 15+1d10",POWER_SNOWSTORM_ANIMATION,POWER_SNOWSTORM_ANIMATION,15,10,140,Pixel(183, 196, 194,255),Pixel(222, 255, 254,255),120,SNOWSTORM_EFF);
|
||||||
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),120,SANDSTORM_EFF);
|
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),120,SANDSTORM_EFF);
|
||||||
WEATHER_POWER*SEED_STORM = new WEATHER_POWER("Seed Storm","",POWER_HAILSTORM_ANIMATION,POWER_HAILSTORM_ANIMATION,-10,15,30,Pixel(93, 161, 163,255),Pixel(72, 160, 212,255),120,SEED_STORM_EFF);
|
WEATHER_POWER*SEED_STORM = new WEATHER_POWER("Seed Storm","",POWER_HAILSTORM_ANIMATION,POWER_HAILSTORM_ANIMATION,-10,15,30,Pixel(93, 161, 163,255),Pixel(72, 160, 212,255),120,SEED_STORM_EFF);
|
||||||
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*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);
|
||||||
@ -492,7 +510,14 @@ public:
|
|||||||
WEATHER_POWER*SUMMON_MINIONS = new WEATHER_POWER("Summon Minions","",POWER_HAILSTORM_ANIMATION,POWER_HAILSTORM_ANIMATION,-75,15,255,Pixel(57, 92, 63,255),Pixel(95, 232, 119,255),120,SUMMON_MINION_EFF);
|
WEATHER_POWER*SUMMON_MINIONS = new WEATHER_POWER("Summon Minions","",POWER_HAILSTORM_ANIMATION,POWER_HAILSTORM_ANIMATION,-75,15,255,Pixel(57, 92, 63,255),Pixel(95, 232, 119,255),120,SUMMON_MINION_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_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*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);
|
WEATHER_POWER*PETAL_STORM = new WEATHER_POWER("Petal Storm","Places seeds, causes minor healing. 20+1d20",PETAL_STORM_ANIMATION,PETAL_STORM_ANIMATION,20,20,110,Pixel(189, 132, 189,255),Pixel(235, 75, 235,255),120,PETAL_STORM_EFF);
|
||||||
|
WEATHER_POWER*ACID_RAIN = new WEATHER_POWER("Acid Rain","",POWER_HURRICANE_ANIMATION,POWER_HURRICANE_ANIMATION,20,10,150,Pixel(99, 148, 132,255),Pixel(121, 132, 140,255),120,ACID_RAIN_EFF);
|
||||||
|
WEATHER_POWER*DROUGHT = new WEATHER_POWER("Drought","Halves healing effects for the next turn.",POWER_HURRICANE_ANIMATION,POWER_HURRICANE_ANIMATION,8,3,150,Pixel(99, 148, 132,255),Pixel(121, 132, 140,255),120,DROUGHT_EFF);
|
||||||
|
WEATHER_POWER*HEAT_WAVE = new WEATHER_POWER("Heat Wave","",POWER_HURRICANE_ANIMATION,POWER_HURRICANE_ANIMATION,25,10,150,Pixel(99, 148, 132,255),Pixel(121, 132, 140,255),120,HEAT_WAVE_EFF);
|
||||||
|
WEATHER_POWER*TORNADO = new WEATHER_POWER("Tornado","",POWER_HURRICANE_ANIMATION,POWER_HURRICANE_ANIMATION,30,10,150,Pixel(99, 148, 132,255),Pixel(121, 132, 140,255),120,TORNADO_EFF);
|
||||||
|
WEATHER_POWER*GUST = new WEATHER_POWER("Gust","",POWER_HURRICANE_ANIMATION,POWER_HURRICANE_ANIMATION,15,10,150,Pixel(99, 148, 132,255),Pixel(121, 132, 140,255),120,GUST_EFF);
|
||||||
|
WEATHER_POWER*FLASH_FLOOD = new WEATHER_POWER("Flash Flood","Causes massive seed growth and heavy damage. 30+1d20",POWER_FLASHFLOOD_ANIMATION,POWER_FLASHFLOOD_ANIMATION,30,20,200,Pixel(27, 41, 87,255),Pixel(138, 161, 237,255),120,FLASH_FLOOD_EFF);
|
||||||
|
WEATHER_POWER*SUNNY_DAY = new WEATHER_POWER("Sunny Day","Fertilize soil, multiplying seed growth and causing trees to drop seeds. 10+1d10",POWER_SUNNYDAY_ANIMATION,POWER_SUNNYDAY_ANIMATION,10,10,200,Pixel(27, 41, 87,255),Pixel(138, 161, 237,255),120,SUNNYDAY_EFF);
|
||||||
bool IN_BATTLE_ENCOUNTER = false;
|
bool IN_BATTLE_ENCOUNTER = false;
|
||||||
int BATTLE_ENTRY_TIMER = 0;
|
int BATTLE_ENTRY_TIMER = 0;
|
||||||
int EFFECT_TIMER = 0;
|
int EFFECT_TIMER = 0;
|
||||||
@ -540,19 +565,26 @@ public:
|
|||||||
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;
|
||||||
|
|
||||||
|
Map*MAP_1=new Map("map1");
|
||||||
|
Map*MAP_2=new Map("map2");
|
||||||
|
|
||||||
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,
|
||||||
*WEATHERNODE_EFFECT_DECAL,*POWER_HAILSTORM_DECAL,*POWER_HURRICANE_DECAL,*POWER_METEOR_SHOWER_DECAL,*POWER_METEOR_STORM_DECAL,*POWER_SNOWSTORM_DECAL,
|
*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,
|
*SPIDEY_DECAL,*TARGETING_CIRCLE,*TARGETING_RANGE_CIRCLE,*HEALTHBAR_DECAL,
|
||||||
*CONSUME_SNACK_DECAL,*CONSUME_MEAL_DECAL,*COMPUTER_DECAL,*BROKEN_ROVER_DECAL,
|
*CONSUME_SNACK_DECAL,*CONSUME_MEAL_DECAL,*COMPUTER_DECAL,*BROKEN_ROVER_DECAL,
|
||||||
*NADO_DECAL,*SILICON_ROCK_DECAL,*PETAL_STORM_DECAL,*ROVER_DECAL,*X_X_DECAL,
|
*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;
|
*LATER_THAT_NIGHT_DECAL,*SLEEP_DECAL,*SEED_DECAL,*TREE_DECAL,*X_X_UNCHARGED_DECAL,
|
||||||
|
*SANDWORM_DECAL,*SNAKE_DECAL,*MOTH_DECAL,*FLASH_FLOOD_DECAL;
|
||||||
std::map<std::string,ObjectLoadInfo*> BASE_OBJECTS;
|
std::map<std::string,ObjectLoadInfo*> BASE_OBJECTS;
|
||||||
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 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_SNAKE;
|
||||||
|
std::vector<WEATHER_POWER*>MOVESET_MOTH;
|
||||||
std::vector<WEATHER_POWER*>MOVESET_X_X;
|
std::vector<WEATHER_POWER*>MOVESET_X_X;
|
||||||
std::vector<WEATHER_POWER*>MOVESET_XMINION;
|
std::vector<WEATHER_POWER*>MOVESET_XMINION;
|
||||||
std::vector<Seed*>SEEDS;
|
std::vector<Seed*>SEEDS;
|
||||||
@ -563,6 +595,8 @@ public:
|
|||||||
float audioLevel=0.6;
|
float audioLevel=0.6;
|
||||||
int SEED_COUNT=0;
|
int SEED_COUNT=0;
|
||||||
vf2d BATTLE_PLAYER_COORDS;
|
vf2d BATTLE_PLAYER_COORDS;
|
||||||
|
|
||||||
|
Map*CURRENT_MAP=MAP_1;
|
||||||
|
|
||||||
|
|
||||||
sound::Wave SONG_MAIN;
|
sound::Wave SONG_MAIN;
|
||||||
@ -637,6 +671,11 @@ public:
|
|||||||
SLEEP_DECAL=new Decal(new Sprite("assets/sleep.png"));
|
SLEEP_DECAL=new Decal(new Sprite("assets/sleep.png"));
|
||||||
SEED_DECAL=new Decal(new Sprite("assets/seed.png"));
|
SEED_DECAL=new Decal(new Sprite("assets/seed.png"));
|
||||||
TREE_DECAL=new Decal(new Sprite("assets/tree.png"));
|
TREE_DECAL=new Decal(new Sprite("assets/tree.png"));
|
||||||
|
SANDWORM_DECAL=new Decal(new Sprite("assets/sandworm.png"));
|
||||||
|
MOTH_DECAL=new Decal(new Sprite("assets/moth.png"));
|
||||||
|
SNAKE_DECAL=new Decal(new Sprite("assets/snake.png"));
|
||||||
|
FLASH_FLOOD_DECAL=new Decal(new Sprite("assets/flashflood_icon.png"));
|
||||||
|
SUNNY_DAY_DECAL=new Decal(new Sprite("assets/sunny_day.png"));
|
||||||
|
|
||||||
current_playerAnim->spr=PLAYER_DECAL;
|
current_playerAnim->spr=PLAYER_DECAL;
|
||||||
playerAnim->spr=PLAYER_DECAL;
|
playerAnim->spr=PLAYER_DECAL;
|
||||||
@ -733,6 +772,16 @@ public:
|
|||||||
EMPTY_BED_ANIMATION->frames.push_back({0,0});
|
EMPTY_BED_ANIMATION->frames.push_back({0,0});
|
||||||
EMPTY_BED_ANIMATION->skip_frames=1;
|
EMPTY_BED_ANIMATION->skip_frames=1;
|
||||||
EMPTY_BED_ANIMATION->height=64;
|
EMPTY_BED_ANIMATION->height=64;
|
||||||
|
POWER_FLASHFLOOD_ANIMATION->spr=FLASH_FLOOD_DECAL;
|
||||||
|
for (int i=0;i<3;i++) {
|
||||||
|
POWER_FLASHFLOOD_ANIMATION->frames.push_back({i*32,0});
|
||||||
|
}
|
||||||
|
POWER_FLASHFLOOD_ANIMATION->skip_frames=nodeAnimationSkipFrames;
|
||||||
|
POWER_SUNNYDAY_ANIMATION->spr=SUNNY_DAY_DECAL;
|
||||||
|
for (int i=0;i<3;i++) {
|
||||||
|
POWER_SUNNYDAY_ANIMATION->frames.push_back({i*32,0});
|
||||||
|
}
|
||||||
|
POWER_SUNNYDAY_ANIMATION->skip_frames=nodeAnimationSkipFrames;
|
||||||
|
|
||||||
HAILSTORM->playerOwnCount=3;
|
HAILSTORM->playerOwnCount=3;
|
||||||
HURRICANE->playerOwnCount=1;
|
HURRICANE->playerOwnCount=1;
|
||||||
@ -749,6 +798,17 @@ public:
|
|||||||
MOVESET_SPIDEY.push_back(SEED_STORM);
|
MOVESET_SPIDEY.push_back(SEED_STORM);
|
||||||
MOVESET_SPIDEY.push_back(AVALANCHE);
|
MOVESET_SPIDEY.push_back(AVALANCHE);
|
||||||
|
|
||||||
|
MOVESET_MOTH.push_back(GUST);
|
||||||
|
MOVESET_MOTH.push_back(GUST);
|
||||||
|
MOVESET_MOTH.push_back(TORNADO);
|
||||||
|
|
||||||
|
MOVESET_SANDWORM.push_back(SANDSTORM);
|
||||||
|
MOVESET_SANDWORM.push_back(HEAT_WAVE);
|
||||||
|
MOVESET_SANDWORM.push_back(DROUGHT);
|
||||||
|
|
||||||
|
MOVESET_SNAKE.push_back(ACID_RAIN);
|
||||||
|
MOVESET_SNAKE.push_back(SANDSTORM);
|
||||||
|
|
||||||
MOVESET_X_X.push_back(LIGHT_STORM);
|
MOVESET_X_X.push_back(LIGHT_STORM);
|
||||||
MOVESET_X_X.push_back(SEED_BULLET);
|
MOVESET_X_X.push_back(SEED_BULLET);
|
||||||
MOVESET_X_X.push_back(SEED_OF_LIFE);
|
MOVESET_X_X.push_back(SEED_OF_LIFE);
|
||||||
@ -775,6 +835,7 @@ public:
|
|||||||
ENCOUNTER_SPIDEY_1.y=47;
|
ENCOUNTER_SPIDEY_1.y=47;
|
||||||
ENCOUNTER_SPIDEY_1.playerX=4;
|
ENCOUNTER_SPIDEY_1.playerX=4;
|
||||||
ENCOUNTER_SPIDEY_1.playerY=3;
|
ENCOUNTER_SPIDEY_1.playerY=3;
|
||||||
|
ENCOUNTER_SPIDEY_1.map=MAP_1;
|
||||||
ENCOUNTERS.push_back(ENCOUNTER_SPIDEY_1);
|
ENCOUNTERS.push_back(ENCOUNTER_SPIDEY_1);
|
||||||
ENCOUNTER_X_X.entities.push_back(new Entity(X_X_DECAL,"X_X",3,2.5,590,590,MOVESET_X_X,{2,2},true));
|
ENCOUNTER_X_X.entities.push_back(new Entity(X_X_DECAL,"X_X",3,2.5,590,590,MOVESET_X_X,{2,2},true));
|
||||||
ENCOUNTER_X_X.entities.push_back(new Entity(X_X_DECAL,"X Minion",1,4,0,80,MOVESET_XMINION,{0.7,0.7}));
|
ENCOUNTER_X_X.entities.push_back(new Entity(X_X_DECAL,"X Minion",1,4,0,80,MOVESET_XMINION,{0.7,0.7}));
|
||||||
@ -784,6 +845,7 @@ public:
|
|||||||
ENCOUNTER_X_X.y=35;
|
ENCOUNTER_X_X.y=35;
|
||||||
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;
|
||||||
//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);
|
||||||
@ -1098,7 +1160,7 @@ public:
|
|||||||
}
|
}
|
||||||
switch (CURRENT_CUTSCENE) {
|
switch (CURRENT_CUTSCENE) {
|
||||||
case cutscene::TRANSITION_CUTSCENE:{
|
case cutscene::TRANSITION_CUTSCENE:{
|
||||||
LoadMap("assets/maps/map1");
|
LoadMap(MAP_1);
|
||||||
PLAYER_COORDS[0]=40.5;
|
PLAYER_COORDS[0]=40.5;
|
||||||
PLAYER_COORDS[1]=37.5;
|
PLAYER_COORDS[1]=37.5;
|
||||||
fadeIn();
|
fadeIn();
|
||||||
@ -1119,7 +1181,7 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
LoadMap("assets/maps/map2");
|
LoadMap(MAP_2);
|
||||||
TeleportToMapFileCoords(8,17);
|
TeleportToMapFileCoords(8,17);
|
||||||
fadeIn();
|
fadeIn();
|
||||||
EndCutscene();
|
EndCutscene();
|
||||||
@ -1186,7 +1248,7 @@ public:
|
|||||||
ResetTerminal(STORY_TEXT2);
|
ResetTerminal(STORY_TEXT2);
|
||||||
}break;
|
}break;
|
||||||
case cutscene::CUTSCENE_4:{
|
case cutscene::CUTSCENE_4:{
|
||||||
LoadMap("assets/maps/map2");
|
LoadMap(MAP_2);
|
||||||
PLAYER_COORDS[0]=16;
|
PLAYER_COORDS[0]=16;
|
||||||
PLAYER_COORDS[1]=6;
|
PLAYER_COORDS[1]=6;
|
||||||
}break;
|
}break;
|
||||||
@ -1415,10 +1477,10 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!IN_BATTLE_ENCOUNTER&&MAP_NAME.compare("assets/maps/map1")==0) {
|
if (!IN_BATTLE_ENCOUNTER) {
|
||||||
for (int i=0;i<ENCOUNTERS.size();i++) {
|
for (int i=0;i<ENCOUNTERS.size();i++) {
|
||||||
Encounter enc = ENCOUNTERS[i];
|
Encounter enc = ENCOUNTERS[i];
|
||||||
if (collidesWithPlayer(enc)) {
|
if (enc.map==CURRENT_MAP&&collidesWithPlayer(enc)) {
|
||||||
for (int i=0;i<WEATHER_POWER_COUNT;i++) {
|
for (int i=0;i<WEATHER_POWER_COUNT;i++) {
|
||||||
if (WEATHER_POWERS[i]->name.compare("Snack")==0||WEATHER_POWERS[i]->name.compare("Meal")==0) {
|
if (WEATHER_POWERS[i]->name.compare("Snack")==0||WEATHER_POWERS[i]->name.compare("Meal")==0) {
|
||||||
WEATHER_POWERS[i]->playerOwnCount=foodCount;
|
WEATHER_POWERS[i]->playerOwnCount=foodCount;
|
||||||
@ -2325,24 +2387,26 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
for (auto&enc:ENCOUNTERS) {
|
for (auto&enc:ENCOUNTERS) {
|
||||||
int targetX=-1,targetY=-1;
|
if (enc.map==CURRENT_MAP) {
|
||||||
for (auto&ent:enc.entities) {
|
int targetX=-1,targetY=-1;
|
||||||
if (BATTLE_STATE==battle::PLAYER_TARGET_SELECTION&&PLAYER_SELECTED_TARGET>=0&&CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->hp>0&&CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->x==ent->x&&CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->y==ent->y) {
|
for (auto&ent:enc.entities) {
|
||||||
DrawDecal({(enc.x+ent->x-PLAYER_COORDS[0])*32+WIDTH/2,(enc.y+ent->y-PLAYER_COORDS[1])*32+HEIGHT/2},TARGETING_CIRCLE,{(float)(ent->spr->sprite->width*ent->sprScale.x/32),(float)(ent->spr->sprite->height*ent->sprScale.y/32)},{255,210,0,255});
|
if (BATTLE_STATE==battle::PLAYER_TARGET_SELECTION&&PLAYER_SELECTED_TARGET>=0&&CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->hp>0&&CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->x==ent->x&&CURRENT_ENCOUNTER.entities[PLAYER_SELECTED_TARGET]->y==ent->y) {
|
||||||
DrawDecal({(enc.x+ent->x-PLAYER_COORDS[0])*32+WIDTH/2,(enc.y+ent->y-PLAYER_COORDS[1])*32+HEIGHT/2},ent->spr,ent->sprScale,{(uint8_t)((0.5*(float)sin(frameCount*4/60.0)+0.5)*80+175),(uint8_t)((0.5*(float)sin(frameCount*4/60.0)+0.5)*80+175),(uint8_t)((0.5*(float)sin(frameCount*4/60.0)+0.5)*80+175),255});
|
DrawDecal({(enc.x+ent->x-PLAYER_COORDS[0])*32+WIDTH/2,(enc.y+ent->y-PLAYER_COORDS[1])*32+HEIGHT/2},TARGETING_CIRCLE,{(float)(ent->spr->sprite->width*ent->sprScale.x/32),(float)(ent->spr->sprite->height*ent->sprScale.y/32)},{255,210,0,255});
|
||||||
targetX=ent->x;targetY=ent->y;
|
DrawDecal({(enc.x+ent->x-PLAYER_COORDS[0])*32+WIDTH/2,(enc.y+ent->y-PLAYER_COORDS[1])*32+HEIGHT/2},ent->spr,ent->sprScale,{(uint8_t)((0.5*(float)sin(frameCount*4/60.0)+0.5)*80+175),(uint8_t)((0.5*(float)sin(frameCount*4/60.0)+0.5)*80+175),(uint8_t)((0.5*(float)sin(frameCount*4/60.0)+0.5)*80+175),255});
|
||||||
} else {
|
targetX=ent->x;targetY=ent->y;
|
||||||
if (ent->hp>0) {//Outside battles.
|
} else {
|
||||||
DrawDecal({(enc.x+ent->x-PLAYER_COORDS[0])*32+WIDTH/2,(enc.y+ent->y-PLAYER_COORDS[1])*32+HEIGHT/2},ent->spr,ent->sprScale);
|
if (ent->hp>0) {//Outside battles.
|
||||||
}
|
DrawDecal({(enc.x+ent->x-PLAYER_COORDS[0])*32+WIDTH/2,(enc.y+ent->y-PLAYER_COORDS[1])*32+HEIGHT/2},ent->spr,ent->sprScale);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (ent->hp>0) {
|
||||||
|
DrawHealthbar({(enc.x+ent->x-PLAYER_COORDS[0])*32+WIDTH/2,(enc.y+ent->y-PLAYER_COORDS[1])*32+HEIGHT/2+ent->spr->sprite->height*ent->sprScale.y+2},ent->spr->sprite->width*ent->sprScale.x,(float)ent->hp/ent->maxhp,BLACK);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if (ent->hp>0) {
|
if (targetX!=-1&&targetY!=-1) {
|
||||||
DrawHealthbar({(enc.x+ent->x-PLAYER_COORDS[0])*32+WIDTH/2,(enc.y+ent->y-PLAYER_COORDS[1])*32+HEIGHT/2+ent->spr->sprite->height*ent->sprScale.y+2},ent->spr->sprite->width*ent->sprScale.x,(float)ent->hp/ent->maxhp,BLACK);
|
DrawDecal({(enc.x+targetX-PLAYER_COORDS[0])*32+enc.entities[PLAYER_SELECTED_TARGET]->spr->sprite->width/2*enc.entities[PLAYER_SELECTED_TARGET]->sprScale.x+WIDTH/2-BATTLE_CARD_SELECTION->range,(enc.y+targetY-PLAYER_COORDS[1])*32+enc.entities[PLAYER_SELECTED_TARGET]->spr->sprite->height/2*enc.entities[PLAYER_SELECTED_TARGET]->sprScale.y+HEIGHT/2-BATTLE_CARD_SELECTION->range},TARGETING_RANGE_CIRCLE,{(float)(BATTLE_CARD_SELECTION->range*2/32.0),(float)(BATTLE_CARD_SELECTION->range*2/32.0)},{255,60,0,(uint8_t)((0.5*(float)sin(frameCount*4/60.0)+0.5)*100)});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (targetX!=-1&&targetY!=-1) {
|
|
||||||
DrawDecal({(enc.x+targetX-PLAYER_COORDS[0])*32+enc.entities[PLAYER_SELECTED_TARGET]->spr->sprite->width/2*enc.entities[PLAYER_SELECTED_TARGET]->sprScale.x+WIDTH/2-BATTLE_CARD_SELECTION->range,(enc.y+targetY-PLAYER_COORDS[1])*32+enc.entities[PLAYER_SELECTED_TARGET]->spr->sprite->height/2*enc.entities[PLAYER_SELECTED_TARGET]->sprScale.y+HEIGHT/2-BATTLE_CARD_SELECTION->range},TARGETING_RANGE_CIRCLE,{(float)(BATTLE_CARD_SELECTION->range*2/32.0),(float)(BATTLE_CARD_SELECTION->range*2/32.0)},{255,60,0,(uint8_t)((0.5*(float)sin(frameCount*4/60.0)+0.5)*100)});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2444,10 +2508,10 @@ public:
|
|||||||
messageBoxRefText=split3;
|
messageBoxRefText=split3;
|
||||||
}
|
}
|
||||||
|
|
||||||
void LoadMap(char*mapName) {
|
void LoadMap(Map*map) {
|
||||||
std::ifstream f(mapName);
|
std::ifstream f("assets/maps/"+map->filename);
|
||||||
std::string data;
|
std::string data;
|
||||||
MAP_NAME=mapName;
|
CURRENT_MAP=map;
|
||||||
MAP_WIDTH=MAP_HEIGHT=-1;
|
MAP_WIDTH=MAP_HEIGHT=-1;
|
||||||
if (MAP!=NULL) {
|
if (MAP!=NULL) {
|
||||||
for (int y=0;y<MAP_HEIGHT;y++) {
|
for (int y=0;y<MAP_HEIGHT;y++) {
|
||||||
@ -2671,7 +2735,7 @@ public:
|
|||||||
for (int i=0;i<CURRENT_ENCOUNTER.entities.size();i++) {
|
for (int i=0;i<CURRENT_ENCOUNTER.entities.size();i++) {
|
||||||
finalDamage=power->damage+rand()%power->damageRoll*sign(power->damage);
|
finalDamage=power->damage+rand()%power->damageRoll*sign(power->damage);
|
||||||
Entity*ent=CURRENT_ENCOUNTER.entities[i];
|
Entity*ent=CURRENT_ENCOUNTER.entities[i];
|
||||||
if (distancetoCoords({(float)((ent->x+CURRENT_ENCOUNTER.x)*32),(float)((ent->y+CURRENT_ENCOUNTER.y)*32)},coords*32)<=power->range) {
|
if (distancetoCoords({(float)((ent->x+CURRENT_ENCOUNTER.x)*32)+ent->spr->sprite->width/2,(float)((ent->y+CURRENT_ENCOUNTER.y)*32)+ent->spr->sprite->height/2},coords*32)<=power->range) {
|
||||||
ent->hp=std::clamp(ent->hp-finalDamage,0,ent->maxhp);
|
ent->hp=std::clamp(ent->hp-finalDamage,0,ent->maxhp);
|
||||||
CreateDisplayNumber(finalDamage,ent->x+CURRENT_ENCOUNTER.x+ent->spr->sprite->width*ent->sprScale.x/2/32,ent->y+CURRENT_ENCOUNTER.y+ent->spr->sprite->height*ent->sprScale.y/2/32,frameCount);
|
CreateDisplayNumber(finalDamage,ent->x+CURRENT_ENCOUNTER.x+ent->spr->sprite->width*ent->sprScale.x/2/32,ent->y+CURRENT_ENCOUNTER.y+ent->spr->sprite->height*ent->sprScale.y/2/32,frameCount);
|
||||||
ent->damageFrame=frameCount;
|
ent->damageFrame=frameCount;
|
||||||
@ -2685,7 +2749,7 @@ public:
|
|||||||
finalDamage=power->damage+rand()%power->damageRoll*sign(power->damage);
|
finalDamage=power->damage+rand()%power->damageRoll*sign(power->damage);
|
||||||
Entity*ent=CURRENT_ENCOUNTER.entities[i];
|
Entity*ent=CURRENT_ENCOUNTER.entities[i];
|
||||||
std::cout<<"Distance was "<<distancetoCoords({(float)((ent->x+CURRENT_ENCOUNTER.x)*32),(float)((ent->y+CURRENT_ENCOUNTER.y)*32)},coords*32)<<"\n";
|
std::cout<<"Distance was "<<distancetoCoords({(float)((ent->x+CURRENT_ENCOUNTER.x)*32),(float)((ent->y+CURRENT_ENCOUNTER.y)*32)},coords*32)<<"\n";
|
||||||
if (ent->hp>0&&distancetoCoords({(float)((ent->x+CURRENT_ENCOUNTER.x)*32),(float)((ent->y+CURRENT_ENCOUNTER.y)*32)},coords*32)<=power->range) {
|
if (ent->hp>0&&distancetoCoords({(float)((ent->x+CURRENT_ENCOUNTER.x)*32)+ent->spr->sprite->width/2,(float)((ent->y+CURRENT_ENCOUNTER.y)*32)+ent->spr->sprite->height/2},coords*32)<=power->range) {
|
||||||
ent->hp=std::clamp(ent->hp-finalDamage,0,ent->maxhp);
|
ent->hp=std::clamp(ent->hp-finalDamage,0,ent->maxhp);
|
||||||
CreateDisplayNumber(finalDamage,ent->x+CURRENT_ENCOUNTER.x+ent->spr->sprite->width*ent->sprScale.x/2/32,ent->y+CURRENT_ENCOUNTER.y+ent->spr->sprite->height*ent->sprScale.y/2/32,frameCount);
|
CreateDisplayNumber(finalDamage,ent->x+CURRENT_ENCOUNTER.x+ent->spr->sprite->width*ent->sprScale.x/2/32,ent->y+CURRENT_ENCOUNTER.y+ent->spr->sprite->height*ent->sprScale.y/2/32,frameCount);
|
||||||
ent->damageFrame=frameCount;
|
ent->damageFrame=frameCount;
|
||||||
|
Binary file not shown.
BIN
assets/flashflood_icon.png
Normal file
BIN
assets/flashflood_icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
BIN
assets/moth.png
Normal file
BIN
assets/moth.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
BIN
assets/sandworm.png
Normal file
BIN
assets/sandworm.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 878 B |
BIN
assets/snake.png
Normal file
BIN
assets/snake.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.0 KiB |
BIN
assets/sunny_day.png
Normal file
BIN
assets/sunny_day.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 13 KiB |
3
ideas
3
ideas
@ -121,3 +121,6 @@ Once the fight begins a tutorial is initiated for how to use it.
|
|||||||
Go the whole game nameless (Do not farm food)
|
Go the whole game nameless (Do not farm food)
|
||||||
|
|
||||||
|
|
||||||
|
Flash Flood (Massive set of Seeds)
|
||||||
|
Solar Flare (Extremely powerful beam of death.)
|
||||||
|
Heat Wave (Sets things on fire and causes good damage.)
|
Loading…
x
Reference in New Issue
Block a user