mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2024-11-16 19:47:35 +01:00
add subgroups for fishing rods to encounter json
This commit is contained in:
parent
74477471a6
commit
c73e20b6af
@ -8,25 +8,33 @@
|
||||
"type": "land_mons",
|
||||
"encounter_rates": [
|
||||
20, 20, 10, 10, 10, 10, 5, 5, 4, 4, 1, 1
|
||||
]
|
||||
],
|
||||
"groups": {}
|
||||
},
|
||||
{
|
||||
"type": "water_mons",
|
||||
"encounter_rates": [
|
||||
60, 30, 5, 4, 1
|
||||
]
|
||||
],
|
||||
"groups": {}
|
||||
},
|
||||
{
|
||||
"type": "rock_smash_mons",
|
||||
"encounter_rates": [
|
||||
60, 30, 5, 4, 1
|
||||
]
|
||||
],
|
||||
"groups": {}
|
||||
},
|
||||
{
|
||||
"type": "fishing_mons",
|
||||
"encounter_rates": [
|
||||
70, 30, 60, 20, 20, 40, 40, 15, 4, 1
|
||||
]
|
||||
],
|
||||
"groups": {
|
||||
"old_rod": [0, 1],
|
||||
"good_rod": [2, 3, 4],
|
||||
"super_rod": [5, 6, 7, 8, 9]
|
||||
}
|
||||
}
|
||||
],
|
||||
"encounters": [
|
||||
|
@ -3,13 +3,25 @@
|
||||
## for wild_encounter_group in wild_encounter_groups
|
||||
{% if wild_encounter_group.for_maps %}
|
||||
## for wild_encounter_field in wild_encounter_group.fields
|
||||
{% if isEmpty(wild_encounter_field.groups) %}
|
||||
## for encounter_rate in wild_encounter_field.encounter_rates
|
||||
{% if trackVar(encounter_rate, 100) %}
|
||||
{% if loop.index == 0 %}
|
||||
#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} {{ encounter_rate }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ loop.index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_SLOT_{{ 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) }}_SLOT_{{ getVar(wild_encounter_field.type) }})
|
||||
{% else %}
|
||||
## for field_subgroup_key, field_subgroup_subarray in wild_encounter_field.groups
|
||||
## for field_subgroup_index in field_subgroup_subarray
|
||||
{% if loop.index == 0 %}
|
||||
#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ field_subgroup_index }} {{ at(wild_encounter_field.encounter_rates, field_subgroup_index) }} {% else %}#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ field_subgroup_index }} ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ getVar("previous_slot") }} + {{ at(wild_encounter_field.encounter_rates, field_subgroup_index) }}{% endif %}{{ setVarInt(concat(wild_encounter_field.type, field_subgroup_key), field_subgroup_index) }}{{ setVarInt("previous_slot", field_subgroup_index) }}
|
||||
## endfor
|
||||
#define ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_TOTAL (ENCOUNTER_CHANCE_{{ upper(wild_encounter_field.type) }}_{{ upper(field_subgroup_key) }}_SLOT_{{ getVar(concat(wild_encounter_field.type, field_subgroup_key)) }})
|
||||
## endfor
|
||||
{% endif %}
|
||||
## endfor
|
||||
{% endif %}
|
||||
|
||||
|
||||
|
||||
## for encounter in wild_encounter_group.encounters
|
||||
{% if existsIn(encounter, "land_mons") %}
|
||||
|
@ -197,34 +197,35 @@ enum
|
||||
static u8 ChooseWildMonIndex_Fishing(u8 rod)
|
||||
{
|
||||
u8 wildMonIndex = 0;
|
||||
u8 rand = Random() % ENCOUNTER_CHANCE_FISHING_MONS_TOTAL;
|
||||
u8 rand = Random() % max(max(ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_TOTAL, ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_TOTAL),
|
||||
ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_TOTAL);
|
||||
|
||||
switch (rod)
|
||||
{
|
||||
case OLD_ROD:
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_0)
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_OLD_ROD_SLOT_0)
|
||||
wildMonIndex = 0;
|
||||
else
|
||||
wildMonIndex = 1;
|
||||
break;
|
||||
case GOOD_ROD:
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2)
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2)
|
||||
wildMonIndex = 2;
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3)
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_2 && rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3)
|
||||
wildMonIndex = 3;
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_4)
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_3 && rand < ENCOUNTER_CHANCE_FISHING_MONS_GOOD_ROD_SLOT_4)
|
||||
wildMonIndex = 4;
|
||||
break;
|
||||
case SUPER_ROD:
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5)
|
||||
if (rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5)
|
||||
wildMonIndex = 5;
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6)
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_5 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6)
|
||||
wildMonIndex = 6;
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7)
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_6 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7)
|
||||
wildMonIndex = 7;
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8)
|
||||
if (rand >= ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_7 && rand < ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8)
|
||||
wildMonIndex = 8;
|
||||
if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SLOT_8)
|
||||
if (rand == ENCOUNTER_CHANCE_FISHING_MONS_SUPER_ROD_SLOT_8)
|
||||
wildMonIndex = 9;
|
||||
break;
|
||||
}
|
||||
|
@ -65,21 +65,6 @@ int main(int argc, char *argv[])
|
||||
return get_custom_var(key);
|
||||
});
|
||||
|
||||
env.add_callback("trackVar", 2, [](Arguments& args) {
|
||||
static int counter = 0;
|
||||
|
||||
int addValue = args.at(0)->get<int>();
|
||||
int checkValue = args.at(1)->get<int>();
|
||||
|
||||
bool over = false;
|
||||
|
||||
counter = (counter + addValue) % (checkValue + 1);
|
||||
|
||||
if (counter <= addValue) over = true;
|
||||
|
||||
return over;
|
||||
});
|
||||
|
||||
env.add_callback("concat", 2, [](Arguments& args) {
|
||||
string first = args.at(0)->get<string>();
|
||||
string second = args.at(1)->get<string>();
|
||||
@ -106,6 +91,11 @@ int main(int argc, char *argv[])
|
||||
return rawValue.substr(0, i);
|
||||
});
|
||||
|
||||
// single argument is a json object
|
||||
env.add_callback("isEmpty", 1, [](Arguments& args) {
|
||||
return args.at(0)->empty();
|
||||
});
|
||||
|
||||
try
|
||||
{
|
||||
env.write_with_json_file(templateFilepath, jsonfilepath, outputFilepath);
|
||||
|
Loading…
Reference in New Issue
Block a user