diff --git a/C++ProjectTemplate b/C++ProjectTemplate index 8769497..dc452da 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/ideas b/ideas index 0f48f5d..22d6a4c 100644 --- a/ideas +++ b/ideas @@ -148,4 +148,14 @@ If you take damage, you will lose health at a tick rate of 2 per frame. (It take If your health falls below zero, you start bleeding health at a rate of +1 for every 20 health missing from your current health. -If your health falls below your negative max health, you start bleeding health at a rate of +1 for every 10 health missing from your current health. \ No newline at end of file +If your health falls below your negative max health, you start bleeding health at a rate of +1 for every 10 health missing from your current health. + +==================== + +Target Selection + +When a move is selected, we'll visually display the tiles that are in range. If units are in range, you can toggle between them. +If no units are in range, you can perform the move, but no one will get hurt. Once a target is selected, if the move does not have a +channel time, it will be immediately performed. Otherwise the channel will begin for that player. + +Channels will be displayed in lieu of the ATB meter while channeling is happening. \ No newline at end of file diff --git a/main.cpp b/main.cpp index 54123c6..0ea4d28 100644 --- a/main.cpp +++ b/main.cpp @@ -307,6 +307,7 @@ namespace Battle{ class Move{ public: std::string name; + std::string desc; std::arraycomposition; int baseDmg; //The base damage of the attack. int randomDmg; //Additional random roll damage to add onto the base damage. @@ -315,10 +316,16 @@ namespace Battle{ //Properties order is WET, DRY, COLD, HEAT int PPCost=0; int grade=0; //If the name of a move name match, then the grade helps sort it into the same category on menus. - Move(std::string name,int baseDmg,int randomDmg,int PPCost,std::arraycomposition,bool pctDamage=false,std::vector> properties={}) - :Move(name,0,baseDmg,randomDmg,PPCost,composition,pctDamage,properties){}; - Move(std::string name,int grade,int baseDmg,int randomDmg,int PPCost,std::arraycomposition,bool pctDamage=false,std::vector> properties={}) - :name(name),grade(grade),randomDmg(randomDmg),baseDmg(baseDmg),composition(composition),pctDamage(pctDamage),properties(properties){} + 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. + //Assumes friendly is false. + Move(std::string name,std::string desc,int baseDmg,int randomDmg,int PPCost,int range,std::arraycomposition,bool pctDamage=false,std::vector> properties={}) + :Move(name,desc,0,baseDmg,randomDmg,PPCost,range,0,false,composition,pctDamage,properties){}; + Move(std::string name,std::string desc,int baseDmg,int randomDmg,int PPCost,int range,int channelTime,bool friendly,std::arraycomposition,bool pctDamage=false,std::vector> properties={}) + :Move(name,desc,0,baseDmg,randomDmg,PPCost,range,channelTime,friendly,composition,pctDamage,properties){}; + Move(std::string name,std::string desc,int grade,int baseDmg,int randomDmg,int PPCost,int range,int channelTime,bool friendly,std::arraycomposition,bool pctDamage=false,std::vector> properties={}) + :name(name),grade(grade),desc(desc),randomDmg(randomDmg),baseDmg(baseDmg),range(range),friendly(friendly),channelTime(channelTime),composition(composition),pctDamage(pctDamage),properties(properties){} }; } @@ -1515,6 +1522,10 @@ goes on a very long time, I hope you can understand this is only for testing pur if (BATTLE_STATE==BattleState::POWER_SELECT||BATTLE_STATE==BattleState::GRADE_SELECT) { SetDrawTarget(layer::INTERFACE); DrawDialogBox({1,1},{(int)(WIDTH/2),HEIGHT/4},Pixel(70, 33, 105,128),Pixel(62, 54, 69,128),Pixel(185, 148, 255,128)); + DrawDialogBox({WIDTH-(int)(WIDTH/2.5)-2,1},{(int)(WIDTH/2.5),HEIGHT/4},Pixel(70, 33, 105,128),Pixel(62, 54, 69,128),Pixel(185, 148, 255,128)); + DrawDialogBox({WIDTH-WIDTH/3-2,HEIGHT/4+2},{(int)(WIDTH/6),HEIGHT/8},Pixel(70, 33, 105,128),Pixel(62, 54, 69,128),Pixel(185, 148, 255,128)); + DrawDialogBox({WIDTH-WIDTH/3+WIDTH/6-1,HEIGHT/4+2},{(int)(WIDTH/6),HEIGHT/8},Pixel(70, 33, 105,128),Pixel(62, 54, 69,128),Pixel(185, 148, 255,128)); + DrawDialogBox({WIDTH-WIDTH/3+WIDTH/6-1,HEIGHT/4+HEIGHT/8+3},{(int)(WIDTH/6),HEIGHT/8},Pixel(70, 33, 105,128),Pixel(62, 54, 69,128),Pixel(185, 148, 255,128)); int counter=0; int displayLimit=0; for (int i=0;i