Use the icon, border color, and grade icon data from external shn files
@ -1,3 +1,4 @@
|
|||||||
|
#define OLC_PGE_HEADLESS
|
||||||
#define OLC_PGE_APPLICATION
|
#define OLC_PGE_APPLICATION
|
||||||
#include "olcPixelGameEngine.h"
|
#include "olcPixelGameEngine.h"
|
||||||
#define OLC_PGEX_QUICKGUI
|
#define OLC_PGEX_QUICKGUI
|
||||||
@ -13,75 +14,25 @@ int PANEL_HEIGHT=240;
|
|||||||
|
|
||||||
class FiestaCraftingCalculator : public olc::PixelGameEngine
|
class FiestaCraftingCalculator : public olc::PixelGameEngine
|
||||||
{
|
{
|
||||||
enum Image{
|
|
||||||
PRODUCTION,
|
|
||||||
COLLECTIBLE,
|
|
||||||
COLLECTIBLE2
|
|
||||||
};
|
|
||||||
|
|
||||||
enum Grade{
|
|
||||||
GRADE_NONE,
|
|
||||||
GRADEL,
|
|
||||||
GRADEM,
|
|
||||||
GRADEH,
|
|
||||||
GRADE1,
|
|
||||||
GRADE2,
|
|
||||||
GRADE3,
|
|
||||||
GRADE4,
|
|
||||||
GRADE5,
|
|
||||||
};
|
|
||||||
|
|
||||||
struct ItemData{
|
struct ItemData{
|
||||||
std::string name;
|
std::string name;
|
||||||
Pixel borderCol;
|
Pixel borderCol;
|
||||||
vi2d tilesheetPos={0,0};
|
vi2d tilesheetPos={0,0};
|
||||||
Image img=COLLECTIBLE;
|
std::pair<std::string,int> img;
|
||||||
Grade grade=GRADE_NONE;
|
std::pair<std::string,int> grade;
|
||||||
void DrawIcon(PixelGameEngine*pge,vf2d pos){
|
void DrawIcon(PixelGameEngine*pge,vf2d pos){
|
||||||
Renderable*r=nullptr;
|
Renderable*r=FilePathToImage[img.first];
|
||||||
switch(img){
|
tilesheetPos={img.second%7,img.second/7};
|
||||||
case PRODUCTION:{
|
|
||||||
r=&FiestaCraftingCalculator::ProdIcon;
|
|
||||||
}break;
|
|
||||||
case COLLECTIBLE:{
|
|
||||||
r=&FiestaCraftingCalculator::CollectibleIcons;
|
|
||||||
}break;
|
|
||||||
case COLLECTIBLE2:{
|
|
||||||
r=&FiestaCraftingCalculator::CollectibleIcons2;
|
|
||||||
}break;
|
|
||||||
}
|
|
||||||
pge->DrawPartialDecal(pos,{32,32},r->Decal(),tilesheetPos*32,{32,32});
|
pge->DrawPartialDecal(pos,{32,32},r->Decal(),tilesheetPos*32,{32,32});
|
||||||
switch(grade){
|
if(grade.first!="-"){
|
||||||
case GRADEL:{
|
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),vi2d{grade.second%7,grade.second/7}*32,{32,32});
|
||||||
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),{0,0},{32,32});
|
|
||||||
}break;
|
|
||||||
case GRADEM:{
|
|
||||||
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),{32,0},{32,32});
|
|
||||||
}break;
|
|
||||||
case GRADEH:{
|
|
||||||
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),{64,0},{32,32});
|
|
||||||
}break;
|
|
||||||
case GRADE1:{
|
|
||||||
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),{96,0},{32,32});
|
|
||||||
}break;
|
|
||||||
case GRADE2:{
|
|
||||||
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),{0,32},{32,32});
|
|
||||||
}break;
|
|
||||||
case GRADE3:{
|
|
||||||
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),{32,32},{32,32});
|
|
||||||
}break;
|
|
||||||
case GRADE4:{
|
|
||||||
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),{64,32},{32,32});
|
|
||||||
}break;
|
|
||||||
case GRADE5:{
|
|
||||||
pge->DrawPartialDecal(pos,FiestaCraftingCalculator::GradeIcons.Decal(),{96,32},{32,32});
|
|
||||||
}break;
|
|
||||||
}
|
}
|
||||||
pge->DrawRectDecal(pos,{32,32},borderCol);
|
pge->DrawRectDecal(pos,{32,32},borderCol);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
static std::map<std::string,ItemData>IDToName;
|
static std::map<std::string,ItemData>IDToName;
|
||||||
|
static std::map<std::string,Renderable*>FilePathToImage;
|
||||||
|
|
||||||
class Recipe{
|
class Recipe{
|
||||||
public:
|
public:
|
||||||
@ -112,6 +63,11 @@ class FiestaCraftingCalculator : public olc::PixelGameEngine
|
|||||||
static std::vector<Recipe>ScrollProdRecipes;
|
static std::vector<Recipe>ScrollProdRecipes;
|
||||||
static std::vector<Recipe>CompRecipes;
|
static std::vector<Recipe>CompRecipes;
|
||||||
static std::vector<Recipe>DecompRecipes;
|
static std::vector<Recipe>DecompRecipes;
|
||||||
|
static std::map<int,Recipe*> PotionProdRecipeLink;
|
||||||
|
static std::map<int,Recipe*> StoneProdRecipeLink;
|
||||||
|
static std::map<int,Recipe*> ScrollProdRecipeLink;
|
||||||
|
static std::map<int,Recipe*> CompRecipeLink;
|
||||||
|
static std::map<int,Recipe*> DecompRecipeLink;
|
||||||
class Calculator{
|
class Calculator{
|
||||||
Manager manager;
|
Manager manager;
|
||||||
vf2d displayPos={10,10};
|
vf2d displayPos={10,10};
|
||||||
@ -349,6 +305,13 @@ public:
|
|||||||
|
|
||||||
std::string column="";
|
std::string column="";
|
||||||
std::vector<std::string>data;
|
std::vector<std::string>data;
|
||||||
|
//HACK ALERT! If the number of recipes for any of these exceeds 300, a reallocation occurs and all pointers move...
|
||||||
|
//We need to keep this number high enough to avoid ever reallocating.
|
||||||
|
StoneProdRecipes.reserve(300);
|
||||||
|
PotionProdRecipes.reserve(300);
|
||||||
|
ScrollProdRecipes.reserve(300);
|
||||||
|
CompRecipes.reserve(300);
|
||||||
|
DecompRecipes.reserve(300);
|
||||||
for(int i=0;i<fileContents.size();i++){
|
for(int i=0;i<fileContents.size();i++){
|
||||||
if(fileContents[i]=='\t'){
|
if(fileContents[i]=='\t'){
|
||||||
data.push_back(column);
|
data.push_back(column);
|
||||||
@ -364,22 +327,28 @@ public:
|
|||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
|
Recipe r(data);
|
||||||
switch(stoi(data[21])){
|
switch(stoi(data[21])){
|
||||||
case 0:{
|
case 0:{
|
||||||
StoneProdRecipes.push_back(Recipe(data));
|
StoneProdRecipes.push_back(r);
|
||||||
|
StoneProdRecipeLink[stoi(data[0])]=&(*std::prev(StoneProdRecipes.end()));
|
||||||
}break;
|
}break;
|
||||||
case 1:{
|
case 1:{
|
||||||
PotionProdRecipes.push_back(Recipe(data));
|
PotionProdRecipes.push_back(r);
|
||||||
|
PotionProdRecipeLink[stoi(data[0])]=&(*std::prev(PotionProdRecipes.end()));
|
||||||
}break;
|
}break;
|
||||||
case 2:{
|
case 2:{
|
||||||
ScrollProdRecipes.push_back(Recipe(data));
|
ScrollProdRecipes.push_back(r);
|
||||||
|
ScrollProdRecipeLink[stoi(data[0])]=&(*std::prev(ScrollProdRecipes.end()));
|
||||||
}break;
|
}break;
|
||||||
//For some reason 3 is skipped in the game's data.
|
//For some reason 3 is skipped in the game's data.
|
||||||
case 4:{
|
case 4:{
|
||||||
CompRecipes.push_back(Recipe(data));
|
CompRecipes.push_back(r);
|
||||||
|
CompRecipeLink[stoi(data[0])]=&(*std::prev(CompRecipes.end()));
|
||||||
}break;
|
}break;
|
||||||
case 5:{
|
case 5:{
|
||||||
DecompRecipes.push_back(Recipe(data));
|
DecompRecipes.push_back(r);
|
||||||
|
DecompRecipeLink[stoi(data[0])]=&(*std::prev(DecompRecipes.end()));
|
||||||
}break;
|
}break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -390,6 +359,56 @@ public:
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
file=std::ifstream("assets/Produce.txt");
|
||||||
|
fileContents=slurp(file);
|
||||||
|
column="";
|
||||||
|
data.clear();
|
||||||
|
for(int i=0;i<fileContents.size();i++){
|
||||||
|
if(fileContents[i]=='\t'){
|
||||||
|
data.push_back(column);
|
||||||
|
column="";
|
||||||
|
} else
|
||||||
|
if(fileContents[i]=='\n'){
|
||||||
|
data.push_back(column);
|
||||||
|
column="";
|
||||||
|
if(data.size()!=27){
|
||||||
|
std::cout<<"Data size was "<<data.size()<<"! Expected 27 columns..."<<std::endl;
|
||||||
|
for(int i=0;i<data.size();i++){
|
||||||
|
std::cout<<"Col "<<i+1<<":"<<data[i]<<std::endl;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
Recipe r(data);
|
||||||
|
int index=stoi(data[0]);
|
||||||
|
Recipe*foundRecipe;
|
||||||
|
if(StoneProdRecipeLink.find(index)!=StoneProdRecipeLink.end()){
|
||||||
|
foundRecipe=StoneProdRecipeLink[index];
|
||||||
|
} else
|
||||||
|
if(PotionProdRecipeLink.find(index)!=PotionProdRecipeLink.end()){
|
||||||
|
foundRecipe=PotionProdRecipeLink[index];
|
||||||
|
} else
|
||||||
|
if(ScrollProdRecipeLink.find(index)!=ScrollProdRecipeLink.end()){
|
||||||
|
foundRecipe=ScrollProdRecipeLink[index];
|
||||||
|
} else
|
||||||
|
if(CompRecipeLink.find(index)!=CompRecipeLink.end()){
|
||||||
|
foundRecipe=CompRecipeLink[index];
|
||||||
|
} else
|
||||||
|
if(DecompRecipeLink.find(index)!=DecompRecipeLink.end()){
|
||||||
|
foundRecipe=DecompRecipeLink[index];
|
||||||
|
}
|
||||||
|
ItemData&item=IDToName[foundRecipe->ProduceIndex];
|
||||||
|
item.borderCol={uint8_t(stoi(data[8])),uint8_t(stoi(data[9])),uint8_t(stoi(data[10]))};
|
||||||
|
item.img={data[3],stoi(data[2])};
|
||||||
|
item.grade={data[5],stoi(data[4])};
|
||||||
|
}
|
||||||
|
data.clear();
|
||||||
|
} else {
|
||||||
|
column+=fileContents[i];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
std::sort(StoneProdRecipes.begin(),StoneProdRecipes.end(),[](Recipe&r1,Recipe&r2){return r1.requiredExp<r2.requiredExp;});
|
std::sort(StoneProdRecipes.begin(),StoneProdRecipes.end(),[](Recipe&r1,Recipe&r2){return r1.requiredExp<r2.requiredExp;});
|
||||||
std::sort(PotionProdRecipes.begin(),PotionProdRecipes.end(),[](Recipe&r1,Recipe&r2){return r1.requiredExp<r2.requiredExp;});
|
std::sort(PotionProdRecipes.begin(),PotionProdRecipes.end(),[](Recipe&r1,Recipe&r2){return r1.requiredExp<r2.requiredExp;});
|
||||||
std::sort(ScrollProdRecipes.begin(),ScrollProdRecipes.end(),[](Recipe&r1,Recipe&r2){return r1.requiredExp<r2.requiredExp;});
|
std::sort(ScrollProdRecipes.begin(),ScrollProdRecipes.end(),[](Recipe&r1,Recipe&r2){return r1.requiredExp<r2.requiredExp;});
|
||||||
@ -415,6 +434,11 @@ public:
|
|||||||
PlusBackIcon.Load("assets/button_plus_mask.png",nullptr,true);
|
PlusBackIcon.Load("assets/button_plus_mask.png",nullptr,true);
|
||||||
calculators.push_back(new Calculator());
|
calculators.push_back(new Calculator());
|
||||||
|
|
||||||
|
FilePathToImage["Cllct000"]=&CollectibleIcons;
|
||||||
|
FilePathToImage["QstItem000"]=&CollectibleIcons2;
|
||||||
|
FilePathToImage["Prdct000"]=&ProductionIcons;
|
||||||
|
FilePathToImage["ItemGrade"]=&GradeIcons;
|
||||||
|
|
||||||
AddButton=new Button(manager,"Add Panel",{PROGRAM_WIDTH-256,float(ScreenHeight()-Karen.Sprite()->height-240)},{172,36},{2,2});
|
AddButton=new Button(manager,"Add Panel",{PROGRAM_WIDTH-256,float(ScreenHeight()-Karen.Sprite()->height-240)},{172,36},{2,2});
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -462,189 +486,13 @@ std::vector<FiestaCraftingCalculator::Recipe> FiestaCraftingCalculator::StonePro
|
|||||||
std::vector<FiestaCraftingCalculator::Recipe> FiestaCraftingCalculator::ScrollProdRecipes;
|
std::vector<FiestaCraftingCalculator::Recipe> FiestaCraftingCalculator::ScrollProdRecipes;
|
||||||
std::vector<FiestaCraftingCalculator::Recipe> FiestaCraftingCalculator::CompRecipes;
|
std::vector<FiestaCraftingCalculator::Recipe> FiestaCraftingCalculator::CompRecipes;
|
||||||
std::vector<FiestaCraftingCalculator::Recipe> FiestaCraftingCalculator::DecompRecipes;
|
std::vector<FiestaCraftingCalculator::Recipe> FiestaCraftingCalculator::DecompRecipes;
|
||||||
std::map<std::string,FiestaCraftingCalculator::ItemData>FiestaCraftingCalculator::IDToName={
|
std::map<int,FiestaCraftingCalculator::Recipe*> FiestaCraftingCalculator::PotionProdRecipeLink;
|
||||||
{"El1",{"Elrue [1]",{0,0,0},{6,2},PRODUCTION,GRADE1}},
|
std::map<int,FiestaCraftingCalculator::Recipe*> FiestaCraftingCalculator::StoneProdRecipeLink;
|
||||||
{"El2",{"Elrue [2]",{0,0,0},{6,2},PRODUCTION,GRADE2}},
|
std::map<int,FiestaCraftingCalculator::Recipe*> FiestaCraftingCalculator::ScrollProdRecipeLink;
|
||||||
{"El3",{"Elrue [3]",{0,0,0},{6,2},PRODUCTION,GRADE3}},
|
std::map<int,FiestaCraftingCalculator::Recipe*> FiestaCraftingCalculator::CompRecipeLink;
|
||||||
{"El4",{"Elrue [4]",{0,0,0},{6,2},PRODUCTION,GRADE4}},
|
std::map<int,FiestaCraftingCalculator::Recipe*> FiestaCraftingCalculator::DecompRecipeLink;
|
||||||
{"El5",{"Elrue [5]",{0,0,0},{6,2},PRODUCTION,GRADE5}},
|
std::map<std::string,Renderable*>FiestaCraftingCalculator::FilePathToImage;
|
||||||
{"Lix1",{"Lix [1]",{0,0,0},{1,3},PRODUCTION,GRADE1}},
|
std::map<std::string,FiestaCraftingCalculator::ItemData>FiestaCraftingCalculator::IDToName;
|
||||||
{"Lix2",{"Lix [2]",{0,0,0},{1,3},PRODUCTION,GRADE2}},
|
|
||||||
{"Lix3",{"Lix [3]",{0,0,0},{1,3},PRODUCTION,GRADE3}},
|
|
||||||
{"Lix4",{"Lix [4]",{0,0,0},{1,3},PRODUCTION,GRADE4}},
|
|
||||||
{"Lix5",{"Lix [5]",{0,0,0},{1,3},PRODUCTION,GRADE5}},
|
|
||||||
{"Xir1",{"Xir [1]",{0,0,0},{4,3},PRODUCTION,GRADE1}},
|
|
||||||
{"Xir2",{"Xir [2]",{0,0,0},{4,3},PRODUCTION,GRADE2}},
|
|
||||||
{"Xir3",{"Xir [3]",{0,0,0},{4,3},PRODUCTION,GRADE3}},
|
|
||||||
{"Xir4",{"Xir [4]",{0,0,0},{4,3},PRODUCTION,GRADE4}},
|
|
||||||
{"Xir5",{"Xir [5]",{0,0,0},{4,3},PRODUCTION,GRADE5}},
|
|
||||||
{"BestLowHpPotion",{"HP Potion (Tier 1)",{0,0,0},{0,0},PRODUCTION}},
|
|
||||||
{"LowHpPotion",{"HP Potion (Tier 2)",{0,0,0},{0,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorHpPotion",{"HP Potion (Tier 3)",{0,0,0},{1,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighHpPotion",{"HP Potion (Tier 4)",{0,0,0},{1,0},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighHpPotion",{"HP Potion (Tier 5)",{0,0,0},{2,0},PRODUCTION}},
|
|
||||||
{"BestLowSpPotion",{"SP Potion (Tier 1)",{0,0,0},{3,0},PRODUCTION}},
|
|
||||||
{"LowSpPotion",{"SP Potion (Tier 2)",{0,0,0},{3,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorSpPotion",{"SP Potion (Tier 3)",{0,0,0},{4,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighSpPotion",{"SP Potion (Tier 4)",{0,0,0},{4,0},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighSpPotion",{"SP Potion (Tier 5)",{0,0,0},{5,0},PRODUCTION}},
|
|
||||||
{"BestLowConHPPotion",{"HP Regeneration Potion (Tier 1)",{0,0,0},{0,0},PRODUCTION}},
|
|
||||||
{"LowConHPPotion",{"HP Regeneration Potion (Tier 2)",{0,0,0},{0,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorConHPPotion",{"HP Regeneration Potion (Tier 3)",{0,0,0},{1,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighConHPPotion",{"HP Regeneration Potion (Tier 4)",{0,0,0},{1,0},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighConHPPotion",{"HP Regeneration Potion (Tier 5)",{0,0,0},{2,0},PRODUCTION}},
|
|
||||||
{"BestLowConSPPotion",{"SP Regeneration Potion (Tier 1)",{0,0,0},{3,0},PRODUCTION}},
|
|
||||||
{"LowConSPPotion",{"SP Regeneration Potion (Tier 2)",{0,0,0},{3,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorConSPPotion",{"SP Regeneration Potion (Tier 3)",{0,0,0},{4,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighConSPPotion",{"SP Regeneration Potion (Tier 4)",{0,0,0},{4,0},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighConSPPotion",{"SP Regeneration Potion (Tier 5)",{0,0,0},{5,0},PRODUCTION}},
|
|
||||||
{"BestLowTHScroll",{"Aim(Tier 1)",{0,0,0},{4,1},PRODUCTION}},
|
|
||||||
{"LowTHScroll",{"Aim(Tier 2)",{0,0,0},{4,1},PRODUCTION,GRADEL}},
|
|
||||||
{"NorTHScroll",{"Aim(Tier 3)",{0,0,0},{4,1},PRODUCTION,GRADEM}},
|
|
||||||
{"HighTHScroll",{"Aim(Tier 4)",{0,0,0},{4,1},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighTHScroll",{"Aim(Tier 5)",{0,0,0},{4,1},PRODUCTION}},
|
|
||||||
{"BestLowTBScroll",{"Nature's Agility (Tier 1)",{0,0,0},{5,1},PRODUCTION}},
|
|
||||||
{"LowTBScroll",{"Nature's Agility (Tier 2)",{0,0,0},{5,1},PRODUCTION,GRADEL}},
|
|
||||||
{"NorTBScroll",{"Nature's Agility (Tier 3)",{0,0,0},{5,1},PRODUCTION,GRADEM}},
|
|
||||||
{"HighTBScroll",{"Nature's Agility (Tier 4)",{0,0,0},{5,1},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighTBScroll",{"Nature's Agility (Tier 5)",{0,0,0},{5,1},PRODUCTION}},
|
|
||||||
{"BestLowMRScroll",{"Magical Defense (Tier 1)",{0,0,0},{6,1},PRODUCTION}},
|
|
||||||
{"LowMRScroll",{"Magical Defense (Tier 2)",{0,0,0},{6,1},PRODUCTION,GRADEL}},
|
|
||||||
{"NorMRScroll",{"Magical Defense (Tier 3)",{0,0,0},{6,1},PRODUCTION,GRADEM}},
|
|
||||||
{"HighMRScroll",{"Magical Defense (Tier 4)",{0,0,0},{6,1},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighMRScroll",{"Magical Defense (Tier 5)",{0,0,0},{6,1},PRODUCTION}},
|
|
||||||
{"BestLowACScroll",{"Shield Increase (Tier 1)",{0,0,0},{6,1},PRODUCTION}},
|
|
||||||
{"LowACScroll",{"Shield Increase (Tier 2)",{0,0,0},{6,1},PRODUCTION,GRADEL}},
|
|
||||||
{"NorACScroll",{"Shield Increase (Tier 3)",{0,0,0},{6,1},PRODUCTION,GRADEM}},
|
|
||||||
{"HighACScroll",{"Shield Increase (Tier 4)",{0,0,0},{6,1},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighACScroll",{"Shield Increase (Tier 5)",{0,0,0},{6,1},PRODUCTION}},
|
|
||||||
{"BestLowMaxHPScroll",{"Vitality (Tier 1)",{0,0,0},{0,2},PRODUCTION}},
|
|
||||||
{"LowMaxHPScroll",{"Vitality (Tier 2)",{0,0,0},{0,2},PRODUCTION,GRADEL}},
|
|
||||||
{"NorMaxHPScroll",{"Vitality (Tier 3)",{0,0,0},{0,2},PRODUCTION,GRADEM}},
|
|
||||||
{"HighMaxHPScroll",{"Vitality (Tier 4)",{0,0,0},{0,2},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighMaxHPScroll",{"Vitality (Tier 5)",{0,0,0},{0,2},PRODUCTION}},
|
|
||||||
{"BestLowMaxSPScroll",{"Mentality (Tier 1)",{0,0,0},{1,2},PRODUCTION}},
|
|
||||||
{"LowMaxSPScroll",{"Mentality (Tier 2)",{0,0,0},{1,2},PRODUCTION,GRADEL}},
|
|
||||||
{"NorMaxSPScroll",{"Mentality (Tier 3)",{0,0,0},{1,2},PRODUCTION,GRADEM}},
|
|
||||||
{"HighMaxSPScroll",{"Mentality (Tier 4)",{0,0,0},{1,2},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighMaxSPScroll",{"Mentality (Tier 5)",{0,0,0},{1,2},PRODUCTION}},
|
|
||||||
{"NorMSScroll",{"Speed Increase (Tier 3)",{0,0,0},{1,2},PRODUCTION,GRADEM}},
|
|
||||||
{"LowMSScroll",{"Speed Increase (Tier 2)",{0,0,0},{1,2},PRODUCTION,GRADEL}},
|
|
||||||
{"HighMSScroll",{"Speed Increase (Tier 4)",{0,0,0},{1,2},PRODUCTION,GRADEH}},
|
|
||||||
{"BestMSScroll",{"Speed Increase (Tier 5)",{0,0,0},{1,2},PRODUCTION}},
|
|
||||||
{"BestLowMSScroll",{"Speed Increase (Tier 1)",{0,0,0},{1,2},PRODUCTION}},
|
|
||||||
{"LowPsnResiPotion",{"Antitoxin (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorPsnResiPotion",{"Antitoxin (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighPsnResiPotion",{"Antitoxin (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}},
|
|
||||||
{"LowDssResiPotion",{"Antibiotic (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorDssResiPotion",{"Antibiotic (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighDssResiPotion",{"Antibiotic (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}},
|
|
||||||
{"LowCurResiPotion",{"Bless (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorCurResiPotion",{"Bless (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighCurResiPotion",{"Bless (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}},
|
|
||||||
{"LowPsnCurPotion",{"Antidote (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorPsnCurPotion",{"Antidote (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighPsnCurPotion",{"Antidote (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}},
|
|
||||||
{"LowDssCurPotion",{"Cure (Tier 1)",{0,0,0},{6,0},PRODUCTION,GRADEL}},
|
|
||||||
{"NorDssCurPotion",{"Cure (Tier 2)",{0,0,0},{7,0},PRODUCTION,GRADEM}},
|
|
||||||
{"HighDssCurPotion",{"Cure (Tier 3)",{0,0,0},{0,1},PRODUCTION,GRADEH}},
|
|
||||||
{"BestLowCurScroll",{"Divine Magic (Tier 1)",{0,0,0},{2,2},PRODUCTION}},
|
|
||||||
{"LowCurScroll",{"Divine Magic (Tier 2)",{0,0,0},{2,2},PRODUCTION,GRADEL}},
|
|
||||||
{"NorCurScroll",{"Divine Magic (Tier 3)",{0,0,0},{2,2},PRODUCTION,GRADEM}},
|
|
||||||
{"HighCurScroll",{"Divine Magic (Tier 4)",{0,0,0},{2,2},PRODUCTION,GRADEH}},
|
|
||||||
{"BestHighCurScroll",{"Divine Magic (Tier 5)",{0,0,0},{2,2},PRODUCTION}},
|
|
||||||
{"NorBeastLeather",{"Beast Leather (Normal Quality)",{255,255,0},{7,1}}},
|
|
||||||
{"HighBeastLeather",{"Beast Leather (High Quality)",{0,255,0},{0,2}}},
|
|
||||||
{"BeastHead",{"Beast Head",{0,255,255},{1,2}}},
|
|
||||||
{"NorBeastTooth",{"Beast Dogtooth (Normal Quality)",{255,255,0},{5,1}}},
|
|
||||||
{"HighBeastTooth",{"Beast Dogtooth (High Quality)",{0,255,0},{6,1}}},
|
|
||||||
{"NorBrokenBone",{"Bone (Normal Quality)",{255,255,0},{4,0}}},
|
|
||||||
{"HighBrokenBone",{"Bone (High Quality)",{0,255,0},{4,0}}},
|
|
||||||
{"BestBrokenBone",{"Bone (Highest Quality)",{0,255,255},{4,0}}},
|
|
||||||
{"NorCleanWater",{"Spirit's Nectar (Normal Quality)",{255,255,0},{7,5}}},
|
|
||||||
{"HighCleanWater",{"Spirit's Nectar (High Quality)",{0,255,0},{0,6}}},
|
|
||||||
{"BestCleanWater",{"Spirit's Nectar (Highest Quality)",{0,255,255},{0,6}}},
|
|
||||||
{"IronBadge",{"Iron Badge",{255,255,0},{2,4}}},
|
|
||||||
{"NorCopperOre",{"Copper Ore (Normal Quality)",{255,255,0},{4,4}}},
|
|
||||||
{"HighCopperOre",{"Copper Ore (High Quality)",{0,255,0},{5,4}}},
|
|
||||||
{"NorGemDust",{"Gem Dust (Normal Quality)",{255,255,0},{6,0}}},
|
|
||||||
{"HighGemDust",{"Gem Dust (High Quality)",{0,255,0},{6,0}}},
|
|
||||||
{"BestGemDust",{"Gem Dust (Highest Quality)",{0,255,255},{6,0}}},
|
|
||||||
{"Violet",{"Vilolet",{0,0,0},{1,1},COLLECTIBLE2}},
|
|
||||||
{"Ramsear",{"Ramsear",{0,0,0},{1,1},COLLECTIBLE2}},
|
|
||||||
{"Salvia",{"Eucalyptus",{255,255,255},{5,7}}},
|
|
||||||
{"LowGoldOre",{"Gold Ore (Low Quality)",{255,255,255},{1,6}}},
|
|
||||||
{"NorGoldOre",{"Gold Ore (Normal Quality)",{255,255,0},{2,6}}},
|
|
||||||
{"HighGoldOre",{"Gold Ore (High Quality)",{0,255,0},{3,6}}},
|
|
||||||
{"NorKylinLeather",{"Summoned Beast Leather (Normal Quality)",{255,255,0},{3,2}}},
|
|
||||||
{"HighKylinLeather",{"Summoned Beast Leather (High Quality)",{0,255,0},{4,2}}},
|
|
||||||
{"KylinTooth",{"Summoned Beast's Tooth",{0,255,0},{7,2}}},
|
|
||||||
{"MermaidScale",{"Mermaid's Scale",{0,0,0},{2,3}}},
|
|
||||||
{"KylinFighterTail",{"Summoned Beast Fighter's Tail",{255,255,0},{6,2}}},
|
|
||||||
{"NorMagicCrystal",{"Magic Crystal (Normal Quality)",{255,255,0},{4,5}}},
|
|
||||||
{"HighMagicCrystal",{"Magic Crystal (High Quality)",{0,255,0},{5,5}}},
|
|
||||||
{"BestMagicCrystal",{"Magic Crystal (Highest Quality)",{0,255,255},{5,5}}},
|
|
||||||
{"NorMeat",{"Meat (Normal Quality)",{255,255,0},{1,0}}},
|
|
||||||
{"HighMeat",{"Meat (High Quality)",{0,255,0},{1,0}}},
|
|
||||||
{"BestMeat",{"Meat (Highest Quality)",{0,255,255},{1,0}}},
|
|
||||||
{"NorMushrooms",{"Mushroom (Normal Quality)",{255,255,0},{4,3}}},
|
|
||||||
{"HighMushrooms",{"Mushroom (High Quality)",{0,255,0},{4,3}}},
|
|
||||||
{"BestMushrooms",{"Mushroom (Highest Quality)",{0,255,255},{4,3}}},
|
|
||||||
{"NorPledge",{"Sign (Normal Quality)",{255,255,0},{3,0}}},
|
|
||||||
{"HighPledge",{"Sign (High Quality)",{0,255,0},{3,0}}},
|
|
||||||
{"BestPledge",{"Sign (Highest Quality)",{0,255,255},{3,0}}},
|
|
||||||
{"Rosemary",{"Rosemary",{0,255,0},{4,7}}},
|
|
||||||
{"Basil",{"Basil",{0,255,255},{5,7}}},
|
|
||||||
{"Marigold",{"Marigold",{0,0,255},{6,7}}},
|
|
||||||
{"LowSilverOre",{"Silver Ore (Low Quality)",{255,255,255},{6,4}}},
|
|
||||||
{"NorSilverOre",{"Silver Ore (Normal Quality)",{255,255,0},{7,4}}},
|
|
||||||
{"HighSilverOre",{"Silver Ore (High Quality)",{0,255,0},{0,5}}},
|
|
||||||
{"NorSkin",{"Leather (Normal Quality)",{255,255,0},{5,0}}},
|
|
||||||
{"HighSkin",{"Leather (High Quality)",{0,255,0},{5,0}}},
|
|
||||||
{"BestSkin",{"Leather (Highest Quality)",{0,255,255},{5,0}}},
|
|
||||||
{"NorSoulDust",{"Soul Dust (Normal Quality)",{255,255,0},{2,1}}},
|
|
||||||
{"HighSoulDust",{"Soul Dust (High Quality)",{0,255,0},{2,1}}},
|
|
||||||
{"BestSoulDust",{"Soul Dust (Highest Quality)",{0,255,255},{2,1}}},
|
|
||||||
{"NorSpiritDust",{"Spirit Dust (Normal Quality)",{255,255,0},{0,0}}},
|
|
||||||
{"HighSpiritDust",{"Spirit Dust (High Quality)",{0,255,0},{0,0}}},
|
|
||||||
{"BestSpiritDust",{"Spirit Dust (Highest Quality)",{0,255,255},{0,0}}},
|
|
||||||
{"NorToadStool",{"Toadstool (Normal Quality)",{255,255,0},{3,3}}},
|
|
||||||
{"HighToadStool",{"Toadstool (High Quality)",{0,255,0},{3,3}}},
|
|
||||||
{"BestToadStool",{"Toadstool (Highest Quality)",{0,255,255},{3,3}}},
|
|
||||||
{"Ruby",{"Ruby",{255,255,0},{2,5}}},
|
|
||||||
{"Sapphire",{"Sapphire",{0,255,0},{4,6}}},
|
|
||||||
{"NorWoodSab",{"Sap (Normal Quality)",{255,255,0},{6,6}}},
|
|
||||||
{"HighWoodSab",{"Sap (High Quality)",{0,255,0},{7,6}}},
|
|
||||||
{"BestWoodSab",{"Sap (Highest Quality)",{0,255,255},{0,7}}},
|
|
||||||
{"LowBeastLeather",{"Beast Leather (Low Quality)",{255,255,255},{7,1}}},
|
|
||||||
{"LowBeastTooth",{"Beast Dogtooth (Low Quality)",{255,255,255},{4,1}}},
|
|
||||||
{"LowBrokenBone",{"Bone (Low Quality)",{255,255,255},{4,0}}},
|
|
||||||
{"LowCleanWater",{"Spirit's Nectar (Low Quality)",{255,255,255},{6,5}}},
|
|
||||||
{"CommanderBadge",{"Master Commander's Badge",{255,255,255},{1,4}}},
|
|
||||||
{"LowCopperOre",{"Copper Ore (Low Quality)",{255,255,255},{3,4}}},
|
|
||||||
{"LowGemDust",{"Gem Dust (Low Quality)",{255,255,255},{6,0}}},
|
|
||||||
{"Geranium",{"Geranium",{0,0,0},{1,1},COLLECTIBLE2}},
|
|
||||||
{"LowKylinLeather",{"Summoned Beast Leather (Low Quality)",{255,255,255},{2,2}}},
|
|
||||||
{"KylinTail",{"Summoned Beast's Tail",{255,255,255},{5,2}}},
|
|
||||||
{"LowMagicCrystal",{"Magic Crystal (Low Quality)",{255,255,255},{3,5}}},
|
|
||||||
{"LowMeat",{"Meat (Low Quality)",{255,255,255},{1,0}}},
|
|
||||||
{"LowMushrooms",{"Mushroom (Low Quality)",{255,255,255},{4,3}}},
|
|
||||||
{"LowPledge",{"Sign (Low Quality)",{255,255,255},{3,0}}},
|
|
||||||
{"Sage",{"Sage",{255,255,0},{3,7}}},
|
|
||||||
{"LowSkin",{"Leather (Low Quality)",{255,255,255},{5,0}}},
|
|
||||||
{"LowSoulDust",{"Soul Dust (Low Quality)",{255,255,255},{2,1}}},
|
|
||||||
{"LowSpiritDust",{"Spirit Dust (Low Quality)",{255,255,255},{0,0}}},
|
|
||||||
{"LowToadStool",{"Toadstool (Low Quality)",{255,255,255},{3,3}}},
|
|
||||||
{"Topaz",{"Topaz",{255,255,255},{1,5}}},
|
|
||||||
{"LowWoodSab",{"Sap (Low Quality)",{255,255,255},{5,6}}},
|
|
||||||
{"LowSlimeJelly",{"Slime Jelly (Low Quality)",{255,255,255},{0,3}}},
|
|
||||||
{"HighSlimeJelly",{"Slime Jelly (High Quality)",{255,255,0},{1,3}}},
|
|
||||||
{"Converter1",{"Alchemy Stone[1]",{255,255,255},{4,2},PRODUCTION}},
|
|
||||||
{"Converter3",{"Alchemy Stone[3]",{0,255,0},{4,2},PRODUCTION}},
|
|
||||||
{"Converter5",{"Alchemy Stone[5]",{0,255,255},{4,2},PRODUCTION}},
|
|
||||||
{"Converter2",{"Alchemy Stone[2]",{255,255,0},{4,2},PRODUCTION}},
|
|
||||||
{"Converter4",{"Alchemy Stone[4]",{0,255,255},{4,2},PRODUCTION}},
|
|
||||||
};
|
|
||||||
std::vector<FiestaCraftingCalculator::Calculator*>FiestaCraftingCalculator::calculators;
|
std::vector<FiestaCraftingCalculator::Calculator*>FiestaCraftingCalculator::calculators;
|
||||||
bool FiestaCraftingCalculator::Calculator::disabledAllCalculators=false;
|
bool FiestaCraftingCalculator::Calculator::disabledAllCalculators=false;
|
||||||
int main()
|
int main()
|
||||||
|
Before Width: | Height: | Size: 97 KiB After Width: | Height: | Size: 97 KiB |
Before Width: | Height: | Size: 4.7 KiB After Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 95 KiB |