mirror of
https://github.com/MarioSpore/Grinch-AP.git
synced 2025-10-21 20:21:32 -06:00

* Secret Feature * Fixes * Fixes and unit tests * renaming some variables * Fix the thing * unit test for elevator egg * Docstring * reword * Fix duplicate locations I think? * Remove debug thing * Add the tests back lol * Make it so that you can exclude an egg to disable it * Improve hint text for easter eggs * Update worlds/witness/options.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * Update worlds/witness/player_logic.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * Update worlds/witness/options.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * Update worlds/witness/player_logic.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * Update worlds/witness/rules.py Co-authored-by: Scipio Wright <scipiowright@gmail.com> * Update test_easter_egg_shuffle.py * This was actually not necessary, since this is the Egg requirements, nothing to do with location names * Move one of them * Improve logic * Lol * Moar * Adjust unit tests * option docstring adjustment * Recommend door shuffle * Don't overlap IDs * Option description idk * Change the way the difficulties work to reward playing higher modes * Fix merge * add some stuff to generate_data_file (this file is not imported during gen, don't review it :D) * oop * space * This can be earlier than I thought, apparently. * buffer * Comment * Make sure the option is VERY visible * Some mypy stuff * apparently ruff wants this * . * durinig * Update options.py * Explain the additional effects of each difficulty * Fix logic of flood room secret * Add Southern Peninsula Area * oop --------- Co-authored-by: Scipio Wright <scipiowright@gmail.com>
55 lines
1.8 KiB
Python
55 lines
1.8 KiB
Python
from collections import defaultdict
|
|
|
|
from data import static_logic as static_witness_logic
|
|
|
|
if __name__ == "__main__":
|
|
with open("data/APWitnessData.h", "w") as datafile:
|
|
datafile.write("""# pragma once
|
|
|
|
# include <map>
|
|
# include <set>
|
|
# include <string>
|
|
|
|
""")
|
|
|
|
area_to_location_ids = defaultdict(list)
|
|
area_to_entity_ids = defaultdict(list)
|
|
|
|
for entity_id, entity_object in static_witness_logic.ENTITIES_BY_HEX.items():
|
|
location_id = entity_object["id"]
|
|
|
|
area = entity_object["area"]["name"]
|
|
area_to_entity_ids[area].append(entity_id)
|
|
|
|
if location_id is None:
|
|
continue
|
|
|
|
area_to_location_ids[area].append(str(location_id))
|
|
|
|
datafile.write("inline std::map<std::string, std::set<int64_t>> areaNameToLocationIDs = {\n")
|
|
datafile.write(
|
|
"\n".join(
|
|
'\t{"' + area + '", { ' + ", ".join(location_ids) + " }},"
|
|
for area, location_ids in area_to_location_ids.items()
|
|
)
|
|
)
|
|
datafile.write("\n};\n\n")
|
|
|
|
datafile.write("inline std::map<std::string, std::set<int64_t>> areaNameToEntityIDs = {\n")
|
|
datafile.write(
|
|
"\n".join(
|
|
'\t{"' + area + '", { ' + ", ".join(entity_ids) + " }},"
|
|
for area, entity_ids in area_to_entity_ids.items()
|
|
)
|
|
)
|
|
datafile.write("\n};\n\n")
|
|
|
|
datafile.write("inline std::map<int, std::string> entityToName = {")
|
|
datafile.write(
|
|
"\n".join(
|
|
"\t{ " + entity_hex + ', "' + entity_object["checkName"] + '" },'
|
|
for entity_hex, entity_object in static_witness_logic.ENTITIES_BY_HEX.items()
|
|
)
|
|
)
|
|
datafile.write("\n};\n\n")
|