fix exact rate hint in drop tables
This commit is contained in:
+5
-4
@@ -704,9 +704,12 @@ string RareItemSet::serialize_html(
|
|||||||
|
|
||||||
auto frac = phosg::reduce_fraction<uint64_t>(spec.probability, 0x100000000);
|
auto frac = phosg::reduce_fraction<uint64_t>(spec.probability, 0x100000000);
|
||||||
|
|
||||||
|
std::string exact_token = std::format("Exact rate: {} / {}", frac.first, frac.second);
|
||||||
if (common_item_set && type_def && type_def->rt_index != 0xFF) {
|
if (common_item_set && type_def && type_def->rt_index != 0xFF) {
|
||||||
auto table = common_item_set->get_table(episode, mode, difficulty, section_id);
|
auto table = common_item_set->get_table(episode, mode, difficulty, section_id);
|
||||||
frac.first *= table->enemy_type_drop_probs.at(type_def->rt_index);
|
uint8_t dar = table->enemy_type_drop_probs.at(type_def->rt_index);
|
||||||
|
exact_token += std::format(" (DAR: {}%)", dar);
|
||||||
|
frac.first *= dar;
|
||||||
frac.second *= 100;
|
frac.second *= 100;
|
||||||
frac = phosg::reduce_fraction<uint64_t>(frac.first, frac.second);
|
frac = phosg::reduce_fraction<uint64_t>(frac.first, frac.second);
|
||||||
}
|
}
|
||||||
@@ -736,9 +739,7 @@ string RareItemSet::serialize_html(
|
|||||||
string denom_token = (floor(denom) == denom)
|
string denom_token = (floor(denom) == denom)
|
||||||
? std::format("1 / {:.0f}", denom)
|
? std::format("1 / {:.0f}", denom)
|
||||||
: std::format("1 / {:.02f}", denom);
|
: std::format("1 / {:.02f}", denom);
|
||||||
tokens.emplace_back(std::format(
|
tokens.emplace_back(std::format("<span class=\"rate\" title=\"{}\">{}</span>", exact_token, denom_token));
|
||||||
"<span class=\"rate\" title=\"Exact rate: {} / {}\">{}</span>",
|
|
||||||
frac.first, frac.second, denom_token));
|
|
||||||
}
|
}
|
||||||
if (!blocks.empty()) {
|
if (!blocks.empty()) {
|
||||||
blocks.emplace_back(phosg::join(tokens, "<br />"));
|
blocks.emplace_back(phosg::join(tokens, "<br />"));
|
||||||
|
|||||||
Reference in New Issue
Block a user