diff --git a/C++ProjectTemplate b/C++ProjectTemplate index 23b5b0d..8663ee3 100755 Binary files a/C++ProjectTemplate and b/C++ProjectTemplate differ diff --git a/battle.h b/battle.h index 9092fc6..fc1f027 100644 --- a/battle.h +++ b/battle.h @@ -5,6 +5,47 @@ #include "pixelGameEngine.h" using namespace olc; +enum class BattleMoveName{ + TESTMOVE1, + TESTMOVE2, + TESTMOVE3, + BASH, + BASH_CHANGE, + DEFEND, + 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, +}; + enum class Resistance{ WET, DRY, diff --git a/main.cpp b/main.cpp index 3a13fa0..ad43c56 100644 --- a/main.cpp +++ b/main.cpp @@ -33,46 +33,6 @@ enum{ SIGMA=Σ, }; -enum class BattleMoveName{ - TESTMOVE1, - TESTMOVE2, - TESTMOVE3, - BASH, - DEFEND, - 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, -}; - template inline T transform_to( F str ) noexcept{if (str.empty()) return {}; return { std::begin(str), std::end(str) };}; class Map{ @@ -976,7 +936,7 @@ This is a test message that lets us trigger straight from a cutscene! Cool!)"), } if (ACTIONKEYPRESSED) { ITEM_REQUIRES_EQUIPPING=true; - PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove=MOVELIST[BattleMoveName::BASH]; + PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove=MOVELIST[BattleMoveName::BASH_CHANGE]; SetupTargetSelect(); } }break; @@ -1352,14 +1312,30 @@ This is a test message that lets us trigger straight from a cutscene! Cool!)"), std::wstring label=L""; if (CURRENT_TURN<0) { std::wstring baseStr = PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->attackMsg; - label=baseStr.replace(baseStr.find(L"$USER"),5,transform_to(PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->obj->name)) - .replace(baseStr.find(L"$POWER"),6,transform_to(PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->name)+L" "+((PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->grade!=0)?std::wstring(1,PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->grade):L"")); + label=baseStr; + if (label.find(L"$USER")!=std::string::npos) { + label=label.replace(label.find(L"$USER"),5,transform_to(PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->obj->name)); + } + if (label.find(L"$POWER")!=std::string::npos) { + label=label.replace(label.find(L"$POWER"),6,transform_to(PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->name)+L" "+((PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->grade!=0)?std::wstring(1,PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->selectedMove->grade):L"")); + } + if (label.find(L"$ITEM")!=std::string::npos) { + label=label.replace(label.find(L"$ITEM"),5,transform_to(PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->equipment[EquipSlot::WEAPON]->name)); + } } else { std::wstring baseStr = BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove->attackMsg; - label=baseStr.replace(baseStr.find(L"$USER"),5,transform_to(BATTLE_ENCOUNTER->objs[CURRENT_TURN]->obj->name)) - .replace(baseStr.find(L"$POWER"),6,transform_to((BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove->grade!=0)?std::wstring(1,BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove->grade):L"")); + label=baseStr; + if (label.find(L"$USER")!=std::string::npos) { + label=label.replace(label.find(L"$USER"),5,transform_to(BATTLE_ENCOUNTER->objs[CURRENT_TURN]->obj->name)); + } + if (label.find(L"$POWER")!=std::string::npos) { + label=label.replace(label.find(L"$POWER"),6,transform_to((BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove->grade!=0)?std::wstring(1,BATTLE_ENCOUNTER->objs[CURRENT_TURN]->selectedMove->grade):L"")); + } + if (label.find(L"$ITEM")!=std::string::npos) { + label=label.replace(label.find(L"$ITEM"),5,transform_to(BATTLE_ENCOUNTER->objs[CURRENT_TURN]->equipment[EquipSlot::WEAPON]->name)); + } } - DrawFancyStringDecal({2,2},Wrap(label,ScreenWidth()-2,false,{2,2}),WHITE,{2,2}); + DrawFancyStringDecal({2,2},Wrap(label,ScreenWidth()-2,false,{1,2}),WHITE,{1,2}); } if (BATTLE_STATE!=BattleState::MOVE_CAMERA) { SetDrawTarget(layer::INTERFACE); @@ -1896,6 +1872,7 @@ This is a test message that lets us trigger straight from a cutscene! Cool!)"), MOVELIST[BattleMoveName::TESTMOVE2]=new Battle::Move("Test Move 2","An attack",40,10,ㅍ 0,1,0,false,{0,0,0,0}); MOVELIST[BattleMoveName::TESTMOVE3]=new Battle::Move("Test Move 3","An attack",25,5,ㅍ 0,3,0,false,{0,0,20,0}); MOVELIST[BattleMoveName::BASH]=new Battle::Move("Bash","Regular attack.",5,5,ㅍ 0,1,0,false,{0,0,0,0}); + MOVELIST[BattleMoveName::BASH_CHANGE]=new Battle::Move(MOVELIST[BattleMoveName::BASH]->name,"Regular attack.",MOVELIST[BattleMoveName::BASH]->baseDmg,MOVELIST[BattleMoveName::BASH]->randomDmg,ㅍ MOVELIST[BattleMoveName::BASH]->PPCost,MOVELIST[BattleMoveName::BASH]->range,MOVELIST[BattleMoveName::BASH]->composition,L"$USER equipped the $ITEM instead and attacks.",MOVELIST[BattleMoveName::BASH]->eff,MOVELIST[BattleMoveName::BASH]->pctDamage,MOVELIST[BattleMoveName::BASH]->properties); MOVELIST[BattleMoveName::DEFEND]=new Battle::Move("Defend","Defend.",0,0,ㅍ 0,1,5*60,true,{0,0,0,0}); MOVELIST[BattleMoveName::HAILSTORM_A]=new Battle::Move("Hailstorm","Causes heavy ice rocks to crash",ALPHA,40,20,ㅍ 4,4,0,false,{0,0,20,0}); MOVELIST[BattleMoveName::HAILSTORM_B]=new Battle::Move("Hailstorm","Causes heavy ice rocks to crash",BETA,80,20,ㅍ 12,4,0,false,{0,0,20,0});