From 4594c955b4f2145891d6728b84e33489ee352a3a Mon Sep 17 00:00:00 2001 From: garak Date: Mon, 1 Jul 2019 23:47:45 -0400 Subject: [PATCH] create defines to support encounter index ratios --- src/data/wild_encounters.json.txt | 4 ++-- src/wild_encounter.c | 8 ++++---- tools/jsonproc/jsonproc.cpp | 9 ++++++++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/data/wild_encounters.json.txt b/src/data/wild_encounters.json.txt index 3fb42c4041..30b05360c9 100755 --- a/src/data/wild_encounters.json.txt +++ b/src/data/wild_encounters.json.txt @@ -5,9 +5,9 @@ ## for wild_encounter_field in wild_encounter_group.fields ## for encounter_rate in wild_encounter_field.encounter_rates {% if trackVar(encounter_rate, 100) %} -#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_INDEX_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_INDEX_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_INDEX_{{ subtract(loop.index, 1) }} + {{ encounter_rate }}{% endif %} +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_INDEX_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_INDEX_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_INDEX_{{ subtract(loop.index, 1) }} + {{ encounter_rate }}{% endif %} {{ setVarInt(wild_encounter_field.type, loop.index) }} ## endfor - +#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_INDEX_{{ getVar(wild_encounter_field.type) }}) ## endfor {% endif %} diff --git a/src/wild_encounter.c b/src/wild_encounter.c index f8031c4517..5a11396d98 100644 --- a/src/wild_encounter.c +++ b/src/wild_encounter.c @@ -105,7 +105,7 @@ static bool8 CheckFeebas(void) if (y >= gRoute119WaterTileData[3 * 2 + 0] && y <= gRoute119WaterTileData[3 * 2 + 1]) route119Section = 2; - if (Random() % 100 > 49) + if (Random() % 100 > 49) // 50% chance of encountering Feebas return FALSE; FeebasSeedRng(gSaveBlock1Ptr->easyChatPairs[0].unk2); @@ -143,7 +143,7 @@ static void FeebasSeedRng(u16 seed) static u8 ChooseWildMonIndex_Land(void) { - u8 rand = Random() % 100; + u8 rand = Random() % ENCOUNTER_CHANCE_LAND_MONS_TOTAL; if (rand < ENCOUNTER_CHANCE_LAND_MONS_INDEX_0) return 0; @@ -173,7 +173,7 @@ static u8 ChooseWildMonIndex_Land(void) static u8 ChooseWildMonIndex_WaterRock(void) { - u8 rand = Random() % 100; + u8 rand = Random() % ENCOUNTER_CHANCE_WATER_MONS_TOTAL; if (rand < ENCOUNTER_CHANCE_WATER_MONS_INDEX_0) return 0; @@ -197,7 +197,7 @@ enum static u8 ChooseWildMonIndex_Fishing(u8 rod) { u8 wildMonIndex = 0; - u8 rand = Random() % 100; + u8 rand = Random() % ENCOUNTER_CHANCE_FISHING_MONS_TOTAL; switch (rod) { diff --git a/tools/jsonproc/jsonproc.cpp b/tools/jsonproc/jsonproc.cpp index c0d6e9434c..15eae9dcb3 100755 --- a/tools/jsonproc/jsonproc.cpp +++ b/tools/jsonproc/jsonproc.cpp @@ -5,7 +5,7 @@ #include #include -using std::string; +using std::string; using std::to_string; #include using namespace inja; @@ -53,6 +53,13 @@ int main(int argc, char *argv[]) return ""; }); + env.add_callback("setVarInt", 2, [=](Arguments& args) { + string key = args.at(0)->get(); + string value = to_string(args.at(1)->get()); + set_custom_var(key, value); + return ""; + }); + env.add_callback("getVar", 1, [=](Arguments& args) { string key = args.at(0)->get(); return get_custom_var(key);