Made special replace tags / customized display text for battle abilities.

Co-authored-by: sigonasr2 <sigonasr2@gmail.com>
master
sigonasr2 2 years ago
parent a0651b308d
commit 0aac9f825f
  1. BIN
      C++ProjectTemplate
  2. 41
      battle.h
  3. 69
      main.cpp

Binary file not shown.

@ -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,

@ -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<typename T, typename F> 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<std::wstring>(PARTY_MEMBER_STATS[PARTY_MEMBER_ID[-CURRENT_TURN-1]]->obj->name))
.replace(baseStr.find(L"$POWER"),6,transform_to<std::wstring>(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<std::wstring>(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<std::wstring>(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<std::wstring>(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<std::wstring>(BATTLE_ENCOUNTER->objs[CURRENT_TURN]->obj->name))
.replace(baseStr.find(L"$POWER"),6,transform_to<std::wstring>((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<std::wstring>(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<std::wstring>((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<std::wstring>(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});

Loading…
Cancel
Save