replace item names with IDs in config.json

This commit is contained in:
Martin Michelsen
2026-02-07 22:34:45 -08:00
parent e9dfa5d1de
commit 8065300fae
5 changed files with 646 additions and 736 deletions
+4 -4
View File
@@ -92,7 +92,7 @@ struct ItemData {
// C = stack size (for tools)
// D = DEF bonus
// E = EVP bonus
// F = armor/shield/unit flags (40=present; low 4 bits are present color)
// F = armor/shield/unit flags (40=wrapped; low 4 bits are present color)
// G = weapon grind
// H = mag DEF
// I = mag POW
@@ -101,12 +101,12 @@ struct ItemData {
// L = mag level
// M = meseta amount
// N = present color (weapon only; for other types this is in the flags field)
// P = mag flags (40=present, 04=has left pb, 02=has right pb, 01=has center pb)
// P = mag flags (40=wrapped, 04=has left pb, 02=has right pb, 01=has center pb)
// Q = mag IQ
// R = unit modifier (little-endian)
// S = weapon flags (80=unidentified, 40=present) and special (low 6 bits)
// S = weapon flags (80=unidentified, 40=wrapped) and special (low 6 bits)
// T = slot count
// U = tool flags (40=present; unused if item is stackable)
// U = tool flags (40=wrapped; unused if item is stackable)
// V = mag color
// W = photon blasts
// X = kill count (big-endian; high bit always set)
+59 -24
View File
@@ -50,7 +50,8 @@ CheatFlags::CheatFlags(const phosg::JSON& json) : CheatFlags() {
this->warp = enabled_keys.count("Warp");
}
ServerState::QuestF960Result::QuestF960Result(const phosg::JSON& json, shared_ptr<const ItemNameIndex> name_index) {
ServerState::QuestF960Result::QuestF960Result(
const phosg::JSON& json, shared_ptr<const ItemNameIndex> name_index, const ItemData::StackLimits& limits) {
static const array<string, 7> day_names = {
"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"};
this->meseta_cost = json.get_int("MesetaCost", 0);
@@ -58,11 +59,15 @@ ServerState::QuestF960Result::QuestF960Result(const phosg::JSON& json, shared_pt
this->probability_upgrade = json.get_int("ProbabilityUpgrade", 0);
for (size_t day = 0; day < 7; day++) {
for (const auto& item_it : json.get_list(day_names[day])) {
try {
this->results[day].emplace_back(name_index->parse_item_description(item_it->as_string()));
} catch (const exception& e) {
config_log.warning_f(
"Cannot parse item description \"{}\": {} (skipping entry)", item_it->as_string(), e.what());
if (item_it->is_int()) {
this->results[day].emplace_back(ItemData::from_primary_identifier(limits, item_it->as_int()));
} else {
try {
this->results[day].emplace_back(name_index->parse_item_description(item_it->as_string()));
} catch (const exception& e) {
config_log.warning_f(
"Cannot parse item description \"{}\": {} (skipping entry)", item_it->as_string(), e.what());
}
}
}
}
@@ -1408,15 +1413,32 @@ void ServerState::load_config_late() {
for (size_t trap_type = 0; trap_type < 5; trap_type++) {
auto& trap_card_ids = this->ep3_trap_card_ids[trap_type];
for (const auto& card_it : ep3_trap_cards_json.at(trap_type)->as_list()) {
const string& card_name = card_it->as_string();
try {
const auto& card = this->ep3_card_index->definition_for_name_normalized(card_name);
if (card->def.type != Episode3::CardType::ASSIST) {
throw runtime_error(std::format("Ep3 card \"{}\" in trap card list is not an assist card", card_name));
if (card_it->is_int()) {
int64_t card_id = card_it->as_int();
try {
const auto& card = this->ep3_card_index->definition_for_id(card_id);
if (card->def.type != Episode3::CardType::ASSIST) {
throw runtime_error(std::format(
"Ep3 card \"{}\" ({:04X}) in trap card list is not an assist card",
card->def.en_name.decode(), card->def.card_id));
}
trap_card_ids.emplace_back(card->def.card_id);
} catch (const out_of_range&) {
throw runtime_error(std::format("Ep3 card {:04X} in trap card list does not exist", card_id));
}
} else {
const string& card_name = card_it->as_string();
try {
const auto& card = this->ep3_card_index->definition_for_name_normalized(card_name);
if (card->def.type != Episode3::CardType::ASSIST) {
throw runtime_error(std::format(
"Ep3 card \"{}\" ({:04X}) in trap card list is not an assist card",
card->def.en_name.decode(), card->def.card_id));
}
trap_card_ids.emplace_back(card->def.card_id);
} catch (const out_of_range&) {
throw runtime_error(std::format("Ep3 card \"{}\" in trap card list does not exist", card_name));
}
trap_card_ids.emplace_back(card->def.card_id);
} catch (const out_of_range&) {
throw runtime_error(std::format("Ep3 card \"{}\" in trap card list does not exist", card_name));
}
}
}
@@ -1438,10 +1460,15 @@ void ServerState::load_config_late() {
for (const auto& difficulty_it : type_it->as_list()) {
auto& difficulty_res = type_res.emplace_back();
for (const auto& item_it : difficulty_it->as_list()) {
try {
difficulty_res.emplace_back(this->parse_item_description(Version::BB_V4, item_it->as_string()));
} catch (const exception& e) {
config_log.warning_f("Cannot parse item description \"{}\": {} (skipping entry)", item_it->as_string(), e.what());
if (item_it->is_int()) {
difficulty_res.emplace_back(ItemData::from_primary_identifier(
*this->item_stack_limits(Version::BB_V4), item_it->as_int()));
} else {
try {
difficulty_res.emplace_back(this->parse_item_description(Version::BB_V4, item_it->as_string()));
} catch (const exception& e) {
config_log.warning_f("Cannot parse item description \"{}\": {} (skipping entry)", item_it->as_string(), e.what());
}
}
}
}
@@ -1452,20 +1479,28 @@ void ServerState::load_config_late() {
for (const auto& it : this->config_json->get_list("QuestF95FResultItems")) {
auto& list = it->as_list();
size_t price = list.at(0)->as_int();
try {
const auto& desc = list.at(1);
if (desc->is_int()) {
this->quest_F95F_results.emplace_back(make_pair(
price, this->parse_item_description(Version::BB_V4, list.at(1)->as_string())));
} catch (const exception& e) {
config_log.warning_f("Cannot parse item description \"{}\": {} (skipping entry)", list.at(1)->as_string(), e.what());
price, ItemData::from_primary_identifier(*this->item_stack_limits(Version::BB_V4), desc->as_int())));
} else {
try {
this->quest_F95F_results.emplace_back(make_pair(
price, this->parse_item_description(Version::BB_V4, list.at(1)->as_string())));
} catch (const exception& e) {
config_log.warning_f("Cannot parse item description \"{}\": {} (skipping entry)", list.at(1)->as_string(), e.what());
}
}
}
} catch (const out_of_range&) {
}
try {
auto name_index = this->item_name_index(Version::BB_V4);
auto stack_limits = this->item_stack_limits(Version::BB_V4);
this->quest_F960_failure_results = QuestF960Result(
this->config_json->at("QuestF960FailureResultItems"), this->item_name_index(Version::BB_V4));
this->config_json->at("QuestF960FailureResultItems"), name_index, *stack_limits);
for (const auto& it : this->config_json->get_list("QuestF960SuccessResultItems")) {
this->quest_F960_success_results.emplace_back(*it, this->item_name_index(Version::BB_V4));
this->quest_F960_success_results.emplace_back(*it, name_index, *stack_limits);
}
} catch (const out_of_range&) {
}
+2 -1
View File
@@ -232,7 +232,8 @@ struct ServerState : public std::enable_shared_from_this<ServerState> {
std::array<std::vector<ItemData>, 7> results;
QuestF960Result() = default;
QuestF960Result(const phosg::JSON& json, std::shared_ptr<const ItemNameIndex> name_index);
QuestF960Result(
const phosg::JSON& json, std::shared_ptr<const ItemNameIndex> name_index, const ItemData::StackLimits& limits);
};
// Indexed as [type][difficulty][random_choice]
+491 -657
View File
File diff suppressed because it is too large Load Diff
+90 -50
View File
@@ -280,80 +280,120 @@
{"MesetaLimit": 999999, "ToolLimits": [10, 10, 1, 10, 10, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 99, 1]}, // XB
{"MesetaLimit": 999999, "ToolLimits": [10, 10, 1, 10, 10, 10, 10, 10, 10, 1, 1, 1, 1, 1, 1, 1, 99, 1]}, // BB
],
"QuestF95EResultItems": [
[
["009000", "009001", "009002", "009003", "009004", "009005", "009006", "009007", "009008", "00B400", "01014E", "010307", "010341", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["00B900", "003400", "000901", "009002", "009007", "002C00", "002D00", "010235", "000106", "000105", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["00B600", "008A01", "001001", "001002", "001003", "001004", "001005", "001006", "002700", "000107", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["00B700", "001001", "001002", "001003", "001004", "001005", "001006", "002900", "008A00", "008A02", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
[0x00900000, 0x00900100, 0x00900200, 0x00900300, 0x00900400, 0x00900500,
0x00900600, 0x00900700, 0x00900800, 0x00B40000, 0x01014E00, 0x01030700,
0x01034100, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000],
[0x00B90000, 0x00340000, 0x00090100, 0x00900200, 0x00900700, 0x002C0000,
0x002D0000, 0x01023500, 0x00010600, 0x00010500, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000],
[0x00B60000, 0x008A0100, 0x00100100, 0x00100200, 0x00100300, 0x00100400,
0x00100500, 0x00100600, 0x00270000, 0x00010700, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000],
[0x00B70000, 0x00100100, 0x00100200, 0x00100300, 0x00100400, 0x00100500,
0x00100600, 0x00290000, 0x008A0000, 0x008A0200, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000],
], [
["01028B", "010228", "010134", "010303", "01030B", "031807", "005500", "010329", "01032F", "01032C", "010323", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["01028C", "010215", "01028A", "010140", "010344", "010346", "010345", "010347", "031807", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["00CB00", "003A00", "008C02", "01022B", "005000", "000B06", "000A06", "000A04", "005500", "002300", "003B00", "031807", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["005100", "010352", "010320", "01033E", "010229", "031807", "000B04", "000A06", "005600", "003B00", "002300", "000A05", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
[0x01028B00, 0x01022800, 0x01013400, 0x01030300, 0x01030B00, 0x03180700,
0x00550000, 0x01032900, 0x01032F00, 0x01032C00, 0x01032300, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000, 0x04000000],
[0x01028C00, 0x01021500, 0x01028A00, 0x01014000, 0x01034400, 0x01034600,
0x01034500, 0x01034700, 0x03180700, 0x04000000, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000],
[0x00CB0000, 0x003A0000, 0x008C0200, 0x01022B00, 0x00500000, 0x000B0600,
0x000A0600, 0x000A0400, 0x00550000, 0x00230000, 0x003B0000, 0x03180700,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000],
[0x00510000, 0x01035200, 0x01032000, 0x01033E00, 0x01022900, 0x03180700,
0x000B0400, 0x000A0600, 0x00560000, 0x003B0000, 0x00230000, 0x000A0500,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000],
], [
["010132", "002F01", "00B300", "005E00", "000E02", "002E00", "009500", "009A00", "002F00", "01031B", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["00C000", "00D200", "008D00", "01012E", "008B00", "000907", "004E00", "006D00", "001500", "008B02", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["00AA00", "010141", "010151", "010223", "003F00", "004100", "000507", "000506", "000505", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
["00AF00", "004300", "010351", "00CD00", "009900", "006C00", "004500", "006B00", "001200", "006500", "010229", "001300", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000", "040000"],
[0x01013200, 0x002F0100, 0x00B30000, 0x005E0000, 0x000E0200, 0x002E0000,
0x00950000, 0x009A0000, 0x002F0000, 0x01031B00, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000],
[0x00C00000, 0x00D20000, 0x008D0000, 0x01012E00, 0x008B0000, 0x00090700,
0x004E0000, 0x006D0000, 0x00150000, 0x008B0200, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000],
[0x00AA0000, 0x01014100, 0x01015100, 0x01022300, 0x003F0000, 0x00410000,
0x00050700, 0x00050600, 0x00050500, 0x04000000, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000],
[0x00AF0000, 0x00430000, 0x01035100, 0x00CD0000, 0x00990000, 0x006C0000,
0x00450000, 0x006B0000, 0x00120000, 0x00650000, 0x01022900, 0x00130000,
0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000, 0x04000000,
0x04000000, 0x04000000, 0x04000000],
], [], [
["00BA00", "000D03", "004301", "000708", "004201", "00C900", "031000", "010295", "01028F", "010291"],
["00BB00", "000D03", "00B700", "004201", "000708", "00C900", "010136", "01028A", "010299", "010351", "01035B", "010352", "031000", "03180A"],
["00BA00", "00B400", "000D03", "00B600", "00B300", "000708", "004301", "00C900", "010136", "01028A", "010299", "010285", "010348", "010351", "01035B", "010352", "031000"],
["00BA00", "00B400", "000D03", "00B600", "00B300", "000708", "004301", "00C900", "010136", "01028A", "010299", "010285", "010348", "010351", "01035B", "010352"],
[0x00BA0000, 0x000D0300, 0x00430100, 0x00070800, 0x00420100, 0x00C90000,
0x03100000, 0x01029500, 0x01028F00, 0x01029100],
[0x00BB0000, 0x000D0300, 0x00B70000, 0x00420100, 0x00070800, 0x00C90000,
0x01013600, 0x01028A00, 0x01029900, 0x01035100, 0x01035B00, 0x01035200,
0x03100000, 0x03180A00],
[0x00BA0000, 0x00B40000, 0x000D0300, 0x00B60000, 0x00B30000, 0x00070800,
0x00430100, 0x00C90000, 0x01013600, 0x01028A00, 0x01029900, 0x01028500,
0x01034800, 0x01035100, 0x01035B00, 0x01035200, 0x03100000],
[0x00BA0000, 0x00B40000, 0x000D0300, 0x00B60000, 0x00B30000, 0x00070800,
0x00430100, 0x00C90000, 0x01013600, 0x01028A00, 0x01029900, 0x01028500,
0x01034800, 0x01035100, 0x01035B00, 0x01035200],
],
],
"QuestF95FResultItems": [
[0, "000100"], // Unused
[10, "00D500"],
[15, "000A07"],
[20, "010157"],
[0, 0x00010000], // Unused
[10, 0x00D50000],
[15, 0x000A0700],
[20, 0x01015700],
],
"QuestF960SuccessResultItems": [
{
"MesetaCost": 1000,
"BaseProbability": 0x0A3D70A3, // 4%
"ProbabilityUpgrade": 0x0A3D70A3, // 4%
"Sunday": ["God/Power", "Cure/Poison", "Cure/Paralysis", "Cure/Slow", "Cure/Confuse", "Cure/Freeze", "Cure/Shock", "Tablet"],
"Monday": ["Three Seals", "God/Mind", "God/Arm", "Hero/Ability", "HP/Revival", "PB/Create", "Devil/Battle", "Cure/Slow"],
"Tuesday": ["God/HP", "God/Body", "PB/Create", "Cure/Poison", "Cure/Paralysis", "Cure/Freeze"],
"Wednesday": ["God/Legs", "Hero/Ability", "TP/Revival", "Devil/Battle", "Cure/Slow", "Tablet"],
"Thursday": ["God/TP", "Hero/Ability", "HP/Revival", "God/Technique", "Cure/Shock"],
"Friday": ["God/Luck", "TP/Revival", "PB/Create", "Devil/Battle", "Cure/Paralysis", "Cure/Slow", "Cure/Shock", "Tablet"],
"Saturday": ["Three Seals", "Hero/Ability", "God/Ability", "HP/Revival", "PB/Create", "Cure/Poison", "Cure/Paralysis", "Cure/Freeze"],
"Sunday": [0x01030300, 0x01034200, 0x01034300, 0x01034400, 0x01034500, 0x01034600, 0x01034700, 0x03180000],
"Monday": [0x01028D00, 0x01030700, 0x01030B00, 0x01031F00, 0x01033500, 0x01033B00, 0x01034000, 0x01034400],
"Tuesday": [0x01031300, 0x01031B00, 0x01033B00, 0x01034200, 0x01034300, 0x01034600],
"Wednesday": [0x01030F00, 0x01031F00, 0x01033800, 0x01034000, 0x01034400, 0x03180000],
"Thursday": [0x01031700, 0x01031F00, 0x01033500, 0x01033E00, 0x01034700],
"Friday": [0x01031D00, 0x01033800, 0x01033B00, 0x01034000, 0x01034300, 0x01034400, 0x01034700, 0x03180000],
"Saturday": [0x01028D00, 0x01031F00, 0x01032000, 0x01033500, 0x01033B00, 0x01034200, 0x01034300, 0x01034600],
}, {
"MesetaCost": 10000,
"BaseProbability": 0x0A3D70A3, // 4%
"ProbabilityUpgrade": 0x0A3D70A3, // 4%
"Sunday": ["Kaladbolg", "Durandal", "Blade Dance", "M&A60 Vise", "H&S25 Justice", "L&K14 Combat", "Club of Laconium", "Photon Claw", "Silence Claw", "Stag Cutlery", "Holy Ray", "Ancient Saber", "Elysion", "Twin Psychogun", "Guilty Light", "Red Scorpio", "DB's Saber", "DF Field", "Morning Prayer", "S-Parts ver1.16", "Standstill Shield", "Kasami Bracer", "Secure Feet", "AddSlot", "Photon Crystal", "Dragon Scale", "Rappy's Beak"],
"Monday": ["Kaladbolg", "Flowen's Sword", "Last Survivor", "Dragon Slayer", "Rianov 303SNR", "H&S25 Justice", "L&K14 Combat", "Crush Bullet", "Meteor Smash", "Final Impact", "Club of Zumiuran", "Brave Hammer", "Alive Aqhu", "Ice Staff:Dagon", "Double Saber", "Elysion", "Red Saber", "Meteor Cudgel", "Red Sword", "Panzer Faust", "Plantain Leaf", "Fatsia", "Sange", "Kamui", "Talis", "DB's Saber", "Guardianna", "Regenerate Gear", "DB's Shield", "AddSlot", "Photon Crystal", "Dragon Scale", "Rappy's Beak"],
"Tuesday": ["Blade Dance", "Bloody Art", "Cross Scar", "Brionac", "Diska of Braveman", "M&A60 Vise", "Club of Laconium", "Mace of Adaman", "Twin Brand", "Brave Knuckle", "Angry Fist", "God Hand", "Red Dagger", "Maser Beam", "Asuka", "Talis", "DB's Saber", "Red Coat", "Secret Gear", "Regenerate Gear", "Black Ring", "AddSlot", "Photon Crystal", "Dragon Scale", "Rappy's Beak"],
"Wednesday": ["Bloody Art", "Brionac", "Vjaya", "Rianov 303SNR", "Battle Verge", "Brave Hammer", "Alive Aqhu", "Soul Banish", "Red Partisan", "Yasminkov 2000H", "Yasminkov 7000V", "Maser Beam", "Musashi", "Yamato", "Zanba", "Ruby Bullet", "Sacred Guard", "S-Parts ver1.16", "S-Parts ver2.01", "Light Relief", "Attribute Wall", "AddSlot", "Photon Crystal", "Dragon Scale", "Rappy's Beak"],
"Thursday": ["Gae Bolg", "Slicer of Assassin", "Diska of Liberator", "Diska of Braveman", "Varista", "M&A60 Vise", "Mace of Adaman", "Battle Verge", "Fire Scepter:Agni", "Ice Staff:Dagon", "Storm Wand:Indra", "Twin Brand", "Spread Needle", "Holy Ray", "Inferno Bazooka", "Victor Axe", "Flight Cutter", "Red Slicer", "Branch of Pakupaku", "Heart of Poumn", "Photon Launcher", "Guilty Light", "Talis", "Demolition Comet", "Ruby Bullet", "Guard Wave", "DF Field", "Luminous Field", "Morning Prayer", "Red Coat", "Infantry Mantle", "Regenerate Gear", "AddSlot", "Photon Crystal", "Dragon Scale", "Rappy's Beak"],
"Friday": ["Varista", "Custom Ray ver.OO", "Bravace", "Visk-235W", "Rianov 303SNR", "M&A60 Vise", "H&S25 Justice", "Crush Bullet", "Club of Laconium", "Fire Scepter:Agni", "Victor Axe", "Caduceus", "Sting Tip", "Ancient Saber", "Red Saber", "Red Handgun", "Twin Psychogun", "Fatsia", "The Sigh of a God", "Guilty Light", "Talis", "Mahu", "Graviton Plate", "Attribute Plate", "Aura Field", "Electro Frame", "Sacred Cloth", "Smoking Plate", "Red Coat", "AddSlot", "Photon Crystal", "Dragon Scale", "Rappy's Beak"],
"Saturday": ["Kaladbolg", "Varista", "Visk-235W", "Wals-MK2", "Justy-23ST", "Rianov 303SNR", "Club of Zumiuran", "Storm Wand:Indra", "Double Saber", "Caduceus", "Sting Tip", "Suppressed Gun", "Ancient Saber", "Twin Psychogun", "Red Mechgun", "Windmill", "Plantain Leaf", "Fatsia", "Revival Garment", "Spirit Garment", "Stink Frame", "D-Parts ver1.01", "D-Parts ver2.10", "Sense Plate", "Graviton Plate", "Custom Frame ver.OO", "AddSlot", "Photon Crystal", "Dragon Scale", "Rappy's Beak"],
"Sunday": [0x00010600, 0x00010700, 0x00080500, 0x00080600, 0x00080700, 0x000D0000, 0x000D0100, 0x00100700, 0x00490000, 0x00010500, 0x01013700, 0x01034500, 0x01034400, 0x01034300, 0x01034600, 0x01034200, 0x03100200, 0x03180200, 0x03180700, 0x030B0000],
"Monday": [0x00020500, 0x00020600, 0x00020700, 0x00070800, 0x00080600, 0x000E0000, 0x00090500, 0x00090600, 0x00090700, 0x00560000, 0x00560100, 0x00010500, 0x01022600, 0x01034000, 0x01031F00],
"Tuesday": [0x00030600, 0x006D0000, 0x01022200, 0x01027B00, 0x03100200, 0x03180200, 0x03180700],
"Wednesday": [0x00040600, 0x00890000, 0x00890100, 0x00070800, 0x000B0400, 0x000B0500, 0x000B0600, 0x01021600, 0x01021800, 0x01021900, 0x01021E00, 0x01033800, 0x01031F00, 0x01030F00, 0x03100200, 0x03180700],
"Thursday": [0x00100700, 0x00050500, 0x00050600, 0x00050700, 0x00060500, 0x000B0400, 0x000C0400, 0x000C0500, 0x000C0600, 0x00200000, 0x008B0000, 0x01013700, 0x01014000, 0x01015300, 0x01022200, 0x01033500, 0x01034600, 0x030F0000, 0x03100200, 0x03180200, 0x030B0300, 0x030B0600],
"Friday": [0x00060500, 0x00060600, 0x00060700, 0x00070500, 0x00070800, 0x00080500, 0x000A0400, 0x00220000, 0x00230000, 0x00560100, 0x008C0000, 0x008C0100, 0x00490000, 0x01013100, 0x01013200, 0x01013300, 0x01013400, 0x01014000, 0x01033800, 0x01034700, 0x01034400, 0x01031D00, 0x03100200, 0x03180200, 0x030B0400],
"Saturday": [0x000E0000, 0x00260000, 0x00070600, 0x00070700, 0x00070800, 0x00270000, 0x01012700, 0x01034300, 0x01033900, 0x01033B00, 0x030B0000],
}, {
"MesetaCost": 100000,
"BaseProbability": 0x0A3D70A3, // 4%
"ProbabilityUpgrade": 0x0A3D70A3, // 4%
"Sunday": ["Zero Divide", "Asteron Belt", "Raikiri", "Skyly Card", "Purplenum Card", "Oran Card", "Guren", "Black Odoshi Red Nimaidou", "V101"],
"Monday": ["Earth Wand Brownie", "Viridia Card", "Greenill Card", "Yellowboze Card", "Yunchang", "Black Odoshi Domaru", "Revival Cuirass", "Gratia", "Regenerate Gear B.P.", "Honeycomb Reflector", "V501", "Heavenly/Battle"],
"Tuesday": ["Zero Divide", "Asteron Belt", "Phoenix Claw", "Skyly Card", "Pinkal Card", "Whitill Card", "Morning Glory", "Ignition Cloak", "Bunny Ears", "Cat Ears", "V502", "Smartlink"],
"Wednesday": ["Phoenix Claw", "Bluefull Card", "Purplenum Card", "Pinkal Card", "Morning Glory", "Cannon Rouge", "Clio", "Morning Prayer", "Sacred Guard", "Honeycomb Reflector", "Heavenly/Legs"],
"Thursday": ["Asteron Belt", "Earth Wand Brownie", "Phoenix Claw", "Raikiri", "Greenill Card", "Redria Card", "Whitill Card", "Flamberge", "Cannon Rouge", "Glide Divine", "Star Cuirass", "Stink Shield"],
"Friday": ["Zero Divide", "Phoenix Claw", "Raikiri", "Power Maser", "Viridia Card", "Yellowboze Card", "Ophelie Seize", "Black Odoshi Domaru", "Black Odoshi Red Nimaidou"],
"Saturday": ["Earth Wand Brownie", "Bluefull Card", "Redria Card", "Oran Card", "Kusanagi", "Honeycomb Reflector"],
"Sunday": [0x00010500, 0x00270000, 0x002C0000, 0x00030500, 0x00030800, 0x00040800, 0x00100700, 0x000E0100, 0x000D0100, 0x000D0000, 0x00B60000, 0x00080600, 0x00080500, 0x00130000, 0x008B0100, 0x008B0200, 0x000A0400, 0x00930200, 0x00930900, 0x01012A00, 0x01021700, 0x01013A00, 0x01022B00, 0x01022900, 0x01023500, 0x01034900, 0x01034700, 0x01034300, 0x01034600, 0x01033200, 0x030F0000, 0x03100200],
"Monday": [0x00010500, 0x00010600, 0x002C0000, 0x002D0000, 0x00020700, 0x00020500, 0x00020600, 0x00340000, 0x00BA0000, 0x000E0000, 0x002E0000, 0x008A0200, 0x008A0000, 0x00080600, 0x00080700, 0x00090500, 0x00090600, 0x004E0000, 0x000C0700, 0x00920000, 0x008C0000, 0x01014C00, 0x01013800, 0x01028500, 0x01029200, 0x01022200, 0x01028800, 0x01034A00, 0x01035300, 0x01031F00, 0x01034400, 0x01030B00, 0x03100200, 0x030B0600],
"Tuesday": [0x00010500, 0x00030700, 0x00030600, 0x00030500, 0x00030800, 0x00040500, 0x00040800, 0x00050700, 0x00940000, 0x000D0300, 0x00890200, 0x000F0100, 0x000F0200, 0x000F0000, 0x00080500, 0x000A0500, 0x000A0400, 0x00930200, 0x008C0000, 0x00930500, 0x01014600, 0x01014000, 0x01021F00, 0x01028B00, 0x01028C00, 0x01034B00, 0x01033B00, 0x01034300, 0x01035100, 0x03100200, 0x030B0100],
"Wednesday": [0x00970000, 0x00030600, 0x00040600, 0x00040500, 0x00110100, 0x003E0000, 0x00940000, 0x000D0300, 0x006A0000, 0x00A30000, 0x006B0000, 0x006D0000, 0x00C00000, 0x00C30000, 0x000B0400, 0x000B0500, 0x01013700, 0x01021700, 0x01021800, 0x01021E00, 0x01021600, 0x01029200, 0x030F0000],
"Thursday": [0x00B90000, 0x00200000, 0x00040700, 0x00040800, 0x00050500, 0x00050600, 0x00050700, 0x003F0000, 0x00410000, 0x009A0000, 0x00690000, 0x000D0300, 0x00A30000, 0x00120000, 0x00130000, 0x00080500, 0x00140000, 0x00C00000, 0x00C50000, 0x00680000, 0x000C0400, 0x000C0500, 0x000C0600, 0x000C0700, 0x008C0000, 0x01012A00, 0x00930600, 0x01012900, 0x01013500, 0x01012B00, 0x01029900, 0x01033400, 0x01033300, 0x01034700, 0x01031700, 0x01031F00, 0x030F0000, 0x030B0300, 0x030B0400],
"Friday": [0x002D0000, 0x00200000, 0x00030800, 0x000D0300, 0x00060500, 0x00060700, 0x00AF0000, 0x00440000, 0x00070500, 0x00080600, 0x00090500, 0x006D0100, 0x008B0100, 0x00220000, 0x000C0400, 0x005B0000, 0x01012500, 0x01013200, 0x01013100, 0x01012400, 0x01014800, 0x01013800, 0x01013A00, 0x01033B00, 0x01033800, 0x01034000],
"Saturday": [0x00010600, 0x00B40000, 0x00060500, 0x00260000, 0x00070500, 0x00070600, 0x00070700, 0x00490000, 0x004C0000, 0x00500000, 0x00230000, 0x00220000, 0x00560000, 0x00560100, 0x000C0700, 0x00930600, 0x00930700, 0x01011E00, 0x01011F00, 0x01012400, 0x01011C00, 0x01012300, 0x01011B00, 0x01011D00, 0x01029200, 0x01033B00, 0x01034600, 0x01034200, 0x01032000, 0x03100200, 0x030F0000],
},
],
"QuestF960FailureResultItems": {
"Sunday": ["Monomate x1", "Dimate x1", "Trimate x1", "Monofluid x1", "Difluid x1", "Trifluid x1", "Sol Atomizer x1", "Moon Atomizer x1", "Antidote x1", "Antiparalysis x1", "Telepipe x1", "Trap Vision x1"],
"Monday": ["Monomate x1", "Dimate x1", "Trimate x1", "Monofluid x1", "Difluid x1", "Trifluid x1", "Sol Atomizer x1", "Moon Atomizer x1", "Antidote x1", "Antiparalysis x1", "Telepipe x1", "Trap Vision x1"],
"Tuesday": ["Monomate x1", "Dimate x1", "Trimate x1", "Monofluid x1", "Difluid x1", "Trifluid x1", "Sol Atomizer x1", "Moon Atomizer x1", "Antidote x1", "Antiparalysis x1", "Telepipe x1", "Trap Vision x1"],
"Wednesday": ["Monomate x1", "Dimate x1", "Trimate x1", "Monofluid x1", "Difluid x1", "Trifluid x1", "Sol Atomizer x1", "Moon Atomizer x1", "Antidote x1", "Antiparalysis x1", "Telepipe x1", "Trap Vision x1"],
"Thursday": ["Monomate x1", "Dimate x1", "Trimate x1", "Monofluid x1", "Difluid x1", "Trifluid x1", "Sol Atomizer x1", "Moon Atomizer x1", "Antidote x1", "Antiparalysis x1", "Telepipe x1", "Trap Vision x1"],
"Friday": ["Monomate x1", "Dimate x1", "Trimate x1", "Monofluid x1", "Difluid x1", "Trifluid x1", "Sol Atomizer x1", "Moon Atomizer x1", "Antidote x1", "Antiparalysis x1", "Telepipe x1", "Trap Vision x1"],
"Saturday": ["Monomate x1", "Dimate x1", "Trimate x1", "Monofluid x1", "Difluid x1", "Trifluid x1", "Sol Atomizer x1", "Moon Atomizer x1", "Antidote x1", "Antiparalysis x1", "Telepipe x1", "Trap Vision x1"],
"QuestF960FailureResultItems": { // Items given when all tiers failed to give a prize
"Sunday": [0x03000000, 0x03000100, 0x03000200, 0x03010000, 0x03010100, 0x03010200, 0x03030000, 0x03040000, 0x03060000, 0x03060100, 0x03070000, 0x03080000],
"Monday": [0x03000000, 0x03000100, 0x03000200, 0x03010000, 0x03010100, 0x03010200, 0x03030000, 0x03040000, 0x03060000, 0x03060100, 0x03070000, 0x03080000],
"Tuesday": [0x03000000, 0x03000100, 0x03000200, 0x03010000, 0x03010100, 0x03010200, 0x03030000, 0x03040000, 0x03060000, 0x03060100, 0x03070000, 0x03080000],
"Wednesday": [0x03000000, 0x03000100, 0x03000200, 0x03010000, 0x03010100, 0x03010200, 0x03030000, 0x03040000, 0x03060000, 0x03060100, 0x03070000, 0x03080000],
"Thursday": [0x03000000, 0x03000100, 0x03000200, 0x03010000, 0x03010100, 0x03010200, 0x03030000, 0x03040000, 0x03060000, 0x03060100, 0x03070000, 0x03080000],
"Friday": [0x03000000, 0x03000100, 0x03000200, 0x03010000, 0x03010100, 0x03010200, 0x03030000, 0x03040000, 0x03060000, 0x03060100, 0x03070000, 0x03080000],
"Saturday": [0x03000000, 0x03000100, 0x03000200, 0x03010000, 0x03010100, 0x03010200, 0x03030000, 0x03040000, 0x03060000, 0x03060100, 0x03070000, 0x03080000],
},
"BBGlobalEXPMultiplier": 1,
"BBEXPShareMultiplier": 0.5,