#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::arraycomposition={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 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