You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
SeasonI/battle.h

87 lines
1.8 KiB

#ifndef BATTLE_H
#define BATTLE_H
#include "effect.h"
#include "pixelGameEngine.h"
#include "battleproperty.h"
using namespace olc;
enum class BattleMoveName{
TESTMOVE1,
TESTMOVE2,
TESTMOVE3,
BASH,
BASH_CHANGE,
DEFEND,
EQUIP_ARMOR,
CONSUMABLE,
CONSUMABLE_ENEMY,
HAILSTORM_A,
HAILSTORM_B,
HAILSTORM_G,
HAILSTORM_O,
HURRICANE_A,
HURRICANE_B,
HURRICANE_G,
HURRICANE_O,
METEORRAIN_A,
METEORRAIN_B,
METEORRAIN_G,
METEORRAIN_O,
PKFREEZE_A,
PKFREEZE_B,
PKFREEZE_G,
PKFREEZE_O,
PKSHIELD_A,
PKSHIELD_B,
PKSHIELD_O,
PKSHIELD_S,
PKLIFEUP_A,
PKLIFEUP_B,
PKLIFEUP_G,
PKLIFEUP_O,
PKFUN_A,
PKFUN_B,
PKFUN_G,
PKFUN_O,
PKFIRE_A,
PKFIRE_B,
PKFIRE_G,
PKFIRE_O,
FREEZE_PACKET,
};
enum class Resistance{
WET,
DRY,
COLD,
HEAT,
};
namespace Battle{
struct Move{
std::string name="";
std::string desc="";
char grade=0; //If the name of a move name match, then the grade helps sort it into the same category on menus.
int baseDmg=10; //The base damage of the attack.
int randomDmg=5; //Additional random roll damage to add onto the base damage.
int PPCost=0;
int range=1; //The range of this ability in tiles.
int channelTime=0; //The amount of frames to channel the spell.
bool friendly=false; //Target allies instead.
std::array<int,4>composition={0,0,0,0};
std::string attackMsg="$USER uses $POWER";
Effect*eff=nullptr;
bool pctDamage=false; //Uses % damage for the base damage instead of flat damage.
std::map<Property,int> properties={}; //The int is used to determine the chance of something occurring.
//Properties order is WET, DRY, COLD, HEAT
bool overworld=false; //Whether or not a move can be used on the overworld.
std::string GetPowerName() {
if (grade!=0) {
return name+" "+grade;
} else {
return name;
}
}
};
}
#endif