mettagrid 0.2.0.19__tar.gz → 0.2.0.21__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of mettagrid might be problematic. Click here for more details.

Files changed (870) hide show
  1. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/MODULE.bazel +8 -0
  2. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/PKG-INFO +1 -1
  3. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/bindings/mettagrid_c.cpp +111 -4
  4. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/bindings/mettagrid_c.hpp +5 -1
  5. mettagrid-0.2.0.21/cpp/include/mettagrid/actions/resource_mod.hpp +194 -0
  6. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/core/grid_object.hpp +2 -1
  7. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/chest.hpp +67 -49
  8. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/chest_config.hpp +17 -11
  9. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/mettagrid.egg-info/PKG-INFO +1 -1
  10. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/mettagrid.egg-info/SOURCES.txt +8 -0
  11. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/bindings/bindings.nim +1 -0
  12. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/hHmLTy7slXTOej6opPqWpz.json +29 -29
  13. mettagrid-0.2.0.21/nim/mettascope/data/fidget/hHmLTy7slXTOej6opPqWpz.lastModified +1 -0
  14. mettagrid-0.2.0.21/nim/mettascope/data/objects/assembler.png +0 -0
  15. mettagrid-0.2.0.21/nim/mettascope/data/objects/charger.png +0 -0
  16. mettagrid-0.2.0.21/nim/mettascope/data/objects/chest.png +0 -0
  17. mettagrid-0.2.0.21/nim/mettascope/data/objects/chest_carbon.png +0 -0
  18. mettagrid-0.2.0.21/nim/mettascope/data/objects/chest_germanium.png +0 -0
  19. mettagrid-0.2.0.21/nim/mettascope/data/objects/chest_oxygen.png +0 -0
  20. mettagrid-0.2.0.21/nim/mettascope/data/objects/chest_silicon.png +0 -0
  21. mettagrid-0.2.0.21/nim/mettascope/data/resources/heart.png +0 -0
  22. mettagrid-0.2.0.21/nim/mettascope/data/resources/oxygen.png +0 -0
  23. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/actions.nim +48 -47
  24. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/common.nim +32 -1
  25. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/pathfinding.nim +49 -17
  26. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/timeline.nim +16 -19
  27. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/worldmap.nim +41 -18
  28. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/builder/building.py +21 -10
  29. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/config/mettagrid_c_config.py +27 -2
  30. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/config/mettagrid_config.py +21 -5
  31. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/core.py +9 -6
  32. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mettagrid_c.pyi +21 -1
  33. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mettascope.py +36 -7
  34. mettagrid-0.2.0.21/python/src/mettagrid/renderer/miniscope/info_panels.py +131 -0
  35. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/miniscope/interactive.py +14 -4
  36. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/renderer/test_miniscope.py +24 -12
  37. mettagrid-0.2.0.21/tests/test_chest.py +182 -0
  38. mettagrid-0.2.0.21/tests/test_grid_objects_properties.py +362 -0
  39. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_mettagrid.cpp +157 -2
  40. mettagrid-0.2.0.21/tests/test_resource_mod.py +680 -0
  41. mettagrid-0.2.0.21/tests/test_resource_mod_config.py +127 -0
  42. mettagrid-0.2.0.19/nim/mettascope/data/fidget/hHmLTy7slXTOej6opPqWpz.lastModified +0 -1
  43. mettagrid-0.2.0.19/nim/mettascope/data/objects/assembler.png +0 -0
  44. mettagrid-0.2.0.19/nim/mettascope/data/objects/charger.png +0 -0
  45. mettagrid-0.2.0.19/nim/mettascope/data/objects/chest.png +0 -0
  46. mettagrid-0.2.0.19/nim/mettascope/data/resources/heart.png +0 -0
  47. mettagrid-0.2.0.19/nim/mettascope/data/resources/oxygen.png +0 -0
  48. mettagrid-0.2.0.19/python/src/mettagrid/renderer/miniscope/info_panels.py +0 -157
  49. mettagrid-0.2.0.19/tests/test_chest.py +0 -89
  50. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/.bazelrc +0 -0
  51. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/.clang-format +0 -0
  52. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/.clang-tidy +0 -0
  53. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/.gitignore +0 -0
  54. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/BUILD.bazel +0 -0
  55. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/CPPLINT.cfg +0 -0
  56. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/LICENSE +0 -0
  57. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/MANIFEST.in +0 -0
  58. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/Makefile +0 -0
  59. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/README.md +0 -0
  60. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/bazel_build.py +0 -0
  61. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/benchmarks/BUILD +0 -0
  62. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/benchmarks/test_mettagrid_env_benchmark.cpp +0 -0
  63. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/benchmarks/test_mettagrid_env_benchmark.py +0 -0
  64. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/README.md +0 -0
  65. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/boxout.map +0 -0
  66. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/choose_wisely.map +0 -0
  67. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/corners.map +0 -0
  68. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/corridors.map +0 -0
  69. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/cylinder.map +0 -0
  70. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/cylinder_easy.map +0 -0
  71. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/easy_memory.map +0 -0
  72. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/emptyspace_outofsight.map +0 -0
  73. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/hall_of_mirrors.map +0 -0
  74. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/hard_memory.map +0 -0
  75. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/honeypot.map +0 -0
  76. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/journey_home.map +0 -0
  77. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/knotty.map +0 -0
  78. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/labyrinth.map +0 -0
  79. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/little_landmark_easy.map +0 -0
  80. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/little_landmark_hard.map +0 -0
  81. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/lobster_legs.map +0 -0
  82. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/lobster_legs_cues.map +0 -0
  83. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/medium_memory.map +0 -0
  84. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/memory3.map +0 -0
  85. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/memory_palace.map +0 -0
  86. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/memory_swirls.map +0 -0
  87. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/memory_swirls_hard.map +0 -0
  88. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/obstacles0.map +0 -0
  89. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/obstacles1.map +0 -0
  90. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/obstacles2.map +0 -0
  91. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/obstacles3.map +0 -0
  92. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/passing_things.map +0 -0
  93. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/radial_large.map +0 -0
  94. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/radial_maze.map +0 -0
  95. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/radial_mini.map +0 -0
  96. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/radial_small.map +0 -0
  97. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/rooms.map +0 -0
  98. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/spacey_memory.map +0 -0
  99. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/spiral_chamber.map +0 -0
  100. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/swirls.map +0 -0
  101. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/tease.map +0 -0
  102. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/tease_small.map +0 -0
  103. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/thecube.map +0 -0
  104. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/venture_out.map +0 -0
  105. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/walkaround.map +0 -0
  106. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/walls_outofsight.map +0 -0
  107. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/walls_withinsight.map +0 -0
  108. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/wanderout.map +0 -0
  109. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/which_way.map +0 -0
  110. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/navigation_sequence/you_shall_not_pass.map +0 -0
  111. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/object_use/shoot_out.map +0 -0
  112. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/object_use/swap_in.map +0 -0
  113. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/configs/maps/object_use/swap_out.map +0 -0
  114. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/BUILD.bazel +0 -0
  115. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/README.md +0 -0
  116. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/action_handler.hpp +0 -0
  117. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/attack.hpp +0 -0
  118. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/change_color.hpp +0 -0
  119. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/change_glyph.hpp +0 -0
  120. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/get_output.hpp +0 -0
  121. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/move.hpp +0 -0
  122. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/noop.hpp +0 -0
  123. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/orientation.hpp +0 -0
  124. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/put_recipe_items.hpp +0 -0
  125. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/rotate.hpp +0 -0
  126. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/actions/swap.hpp +0 -0
  127. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/config/mettagrid_config.hpp +0 -0
  128. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/core/event.hpp +0 -0
  129. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/core/grid.hpp +0 -0
  130. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/core/hash.hpp +0 -0
  131. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/core/types.hpp +0 -0
  132. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/agent.hpp +0 -0
  133. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/agent_config.hpp +0 -0
  134. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/assembler.hpp +0 -0
  135. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/assembler_config.hpp +0 -0
  136. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/constants.hpp +0 -0
  137. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/converter.hpp +0 -0
  138. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/converter_config.hpp +0 -0
  139. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/has_inventory.hpp +0 -0
  140. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/inventory.hpp +0 -0
  141. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/inventory_config.hpp +0 -0
  142. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/production_handler.hpp +0 -0
  143. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/recipe.hpp +0 -0
  144. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/usable.hpp +0 -0
  145. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/objects/wall.hpp +0 -0
  146. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/renderer/hermes.hpp +0 -0
  147. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/systems/clipper.hpp +0 -0
  148. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/systems/clipper_config.hpp +0 -0
  149. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/systems/observation_encoder.hpp +0 -0
  150. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/systems/packed_coordinate.hpp +0 -0
  151. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/cpp/include/mettagrid/systems/stats_tracker.hpp +0 -0
  152. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/demo.py +0 -0
  153. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/demos/README.md +0 -0
  154. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/demos/demo_train_gym.py +0 -0
  155. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/demos/demo_train_pettingzoo.py +0 -0
  156. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/demos/demo_train_puffer.py +0 -0
  157. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/ensure_mettascope.py +0 -0
  158. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/lint/BUILD +0 -0
  159. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/lint/README.md +0 -0
  160. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/lint/clang_tidy.bzl +0 -0
  161. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/lint/clang_tidy_wrapper.sh +0 -0
  162. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/mettagrid.egg-info/dependency_links.txt +0 -0
  163. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/mettagrid.egg-info/entry_points.txt +0 -0
  164. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/mettagrid.egg-info/requires.txt +0 -0
  165. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/mettagrid.egg-info/top_level.txt +0 -0
  166. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/migrate_to_toplevel.py +0 -0
  167. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/AGENTS.md +0 -0
  168. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/README.md +0 -0
  169. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/__init__.py +0 -0
  170. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/bindings/__init__.py +0 -0
  171. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/cors_http_server.py +0 -0
  172. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/arrow.png +0 -0
  173. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack1.png +0 -0
  174. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack2.png +0 -0
  175. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack3.png +0 -0
  176. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack4.png +0 -0
  177. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack5.png +0 -0
  178. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack6.png +0 -0
  179. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack7.png +0 -0
  180. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack8.png +0 -0
  181. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack9.png +0 -0
  182. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/attack_nearest.png +0 -0
  183. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/converting.png +0 -0
  184. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/get_items.png +0 -0
  185. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/attack.png +0 -0
  186. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/attack_nearest.png +0 -0
  187. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/change_color.png +0 -0
  188. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/get_items.png +0 -0
  189. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/move.png +0 -0
  190. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/noop.png +0 -0
  191. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/put_items.png +0 -0
  192. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/rotate.png +0 -0
  193. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/swap.png +0 -0
  194. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/icons/unknown.png +0 -0
  195. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/put_items.png +0 -0
  196. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/swap.png +0 -0
  197. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/thoughts.png +0 -0
  198. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/thoughts_lightning.png +0 -0
  199. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/actions/unknown.png +0 -0
  200. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/agent.e.png +0 -0
  201. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/agent.n.png +0 -0
  202. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/agent.s.png +0 -0
  203. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/agent.w.png +0 -0
  204. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/footprints.png +0 -0
  205. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/frozen.png +0 -0
  206. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/future_arrow.png +0 -0
  207. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/past_arrow.png +0 -0
  208. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/agents/path.png +0 -0
  209. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/crosshair.png +0 -0
  210. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/dash.png +0 -0
  211. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/effects/halo.png +0 -0
  212. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/alien.png +0 -0
  213. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/angry.png +0 -0
  214. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/down.png +0 -0
  215. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/happy.png +0 -0
  216. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/left.png +0 -0
  217. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/love.png +0 -0
  218. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/poo.png +0 -0
  219. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/right.png +0 -0
  220. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/sad.png +0 -0
  221. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/skull.png +0 -0
  222. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/sparkle.png +0 -0
  223. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/emoji/up.png +0 -0
  224. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/fonts/IBMPlexMono-Regular.ttf +0 -0
  225. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/fonts/IBMPlexSans-Bold.ttf +0 -0
  226. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/fonts/IBMPlexSans-Regular.ttf +0 -0
  227. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/fonts/NotoSansJP-Regular.ttf +0 -0
  228. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/fonts/jsMath-cmbx10.ttf +0 -0
  229. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/05bab347bacaede7606b8e59426dc42b155a8fd6.png +0 -0
  230. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/11f0598c7a572fe7461bc54b07423b7b5e3e7a60.png +0 -0
  231. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/42480bc49710a5f0ebfafe1e1a7785068db37106.png +0 -0
  232. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/621976c3803ef1eea0c316c0e86e1bc31bd6dba4.png +0 -0
  233. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/79d04b14381789498b35cbd1ae05eb578ededb5f.png +0 -0
  234. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/7b2b3374ea1a80648e8c68a472dcbba188af3e8e.png +0 -0
  235. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/86e7f3e8b46af021592fa055ecb606c6b0825c12.png +0 -0
  236. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/ac4765273b78fb68ac1e913e54c54224b7f6f215.png +0 -0
  237. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/b765480fbb089bf76a68424612eeb48ddd95ccc7.png +0 -0
  238. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/eb9f0db464f0f04a52566cd211a561f76d1bcc2a.png +0 -0
  239. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fidget/images/f10e39779ee551c9d46a527d2ea2a67f434f2867.png +0 -0
  240. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/fonts/Inter-Regular.ttf +0 -0
  241. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/info.png +0 -0
  242. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/meta_grid_icon.png +0 -0
  243. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/minimapPip.png +0 -0
  244. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/agent.png +0 -0
  245. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/altar.png +0 -0
  246. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/armory.png +0 -0
  247. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/block.png +0 -0
  248. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/carbon_ex_dep.png +0 -0
  249. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/carbon_extractor.png +0 -0
  250. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/clay_oven.png +0 -0
  251. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/converter.png +0 -0
  252. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/empty.png +0 -0
  253. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/factory.png +0 -0
  254. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/floor.png +0 -0
  255. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/generator.png +0 -0
  256. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/generator_blue.png +0 -0
  257. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/generator_green.png +0 -0
  258. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/generator_red.png +0 -0
  259. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/geranium_extractor.png +0 -0
  260. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/germanium_ex_dep.png +0 -0
  261. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/germanium_extractor.png +0 -0
  262. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/ice_tower.png +0 -0
  263. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/ice_vase.png +0 -0
  264. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/lab.png +0 -0
  265. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/lasery.png +0 -0
  266. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/mine.png +0 -0
  267. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/mine_blue.png +0 -0
  268. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/mine_green.png +0 -0
  269. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/mine_red-1.png +0 -0
  270. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/mine_red.png +0 -0
  271. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/oxygen_ex_dep.png +0 -0
  272. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/oxygen_extractor.png +0 -0
  273. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/palm_tree.png +0 -0
  274. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/silicon_ex_dep.png +0 -0
  275. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/silicon_extractor.png +0 -0
  276. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/temple.png +0 -0
  277. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/unknown.png +0 -0
  278. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.0.png +0 -0
  279. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.e.png +0 -0
  280. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.fill.png +0 -0
  281. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.n.png +0 -0
  282. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.ne.png +0 -0
  283. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.ns.png +0 -0
  284. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.nse.png +0 -0
  285. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.nw.png +0 -0
  286. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.nwe.png +0 -0
  287. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.nws.png +0 -0
  288. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.nwse.png +0 -0
  289. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.png +0 -0
  290. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.s.png +0 -0
  291. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.se.png +0 -0
  292. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.w.png +0 -0
  293. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.we.png +0 -0
  294. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.ws.png +0 -0
  295. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wall.wse.png +0 -0
  296. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/water_well.png +0 -0
  297. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/weaving_loom.png +0 -0
  298. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/objects/wheat_field.png +0 -0
  299. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/replays/pens.json.z +0 -0
  300. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/agent_id.png +0 -0
  301. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/armor.png +0 -0
  302. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/battery.blue.png +0 -0
  303. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/battery.green.png +0 -0
  304. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/battery.png +0 -0
  305. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/battery.red.png +0 -0
  306. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/battery_blue.png +0 -0
  307. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/battery_green.png +0 -0
  308. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/battery_red.png +0 -0
  309. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/blue_gem.png +0 -0
  310. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/blueprint.png +0 -0
  311. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/bread.png +0 -0
  312. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/carbon.png +0 -0
  313. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/coal.png +0 -0
  314. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/coconut.png +0 -0
  315. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/copper_ore.png +0 -0
  316. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/diamond.png +0 -0
  317. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/energy.png +0 -0
  318. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/germanium.png +0 -0
  319. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/gold_ore.png +0 -0
  320. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/green_gem.png +0 -0
  321. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/ice_granade.png +0 -0
  322. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/iron_ore.png +0 -0
  323. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/laser.png +0 -0
  324. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/lizard_hide.png +0 -0
  325. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/oil.png +0 -0
  326. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/ore.blue.png +0 -0
  327. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/ore.green.png +0 -0
  328. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/ore.png +0 -0
  329. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/ore.red.png +0 -0
  330. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/ore_blue.png +0 -0
  331. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/ore_green.png +0 -0
  332. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/ore_red.png +0 -0
  333. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/palm_fiber.png +0 -0
  334. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/red_gem.png +0 -0
  335. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/reward.png +0 -0
  336. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/salt_water.png +0 -0
  337. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/sand.png +0 -0
  338. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/silicon.png +0 -0
  339. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/sisal.png +0 -0
  340. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/snake_skin.png +0 -0
  341. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/snow_ball.png +0 -0
  342. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/star.png +0 -0
  343. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/stone.png +0 -0
  344. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/straw_hat.png +0 -0
  345. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/turtle_shell.png +0 -0
  346. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/unknown.png +0 -0
  347. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/water.png +0 -0
  348. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/wheat.png +0 -0
  349. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/yellow_gem.png +0 -0
  350. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/resources/yucca_fiber.png +0 -0
  351. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/selection.png +0 -0
  352. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/target.png +0 -0
  353. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/tile.png +0 -0
  354. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/attack.png +0 -0
  355. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/attack_nearest.png +0 -0
  356. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/change_color.png +0 -0
  357. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/frozen.png +0 -0
  358. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/get_items.png +0 -0
  359. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/invalid.png +0 -0
  360. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/move.png +0 -0
  361. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/move_8way.png +0 -0
  362. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/move_cardinal.png +0 -0
  363. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/noop.png +0 -0
  364. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/put_items.png +0 -0
  365. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/rotate.png +0 -0
  366. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/swap.png +0 -0
  367. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/trace/unknown.png +0 -0
  368. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/view/grid.png +0 -0
  369. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/data/white.png +0 -0
  370. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/mettascope.nimble +0 -0
  371. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/agenttable.nim +0 -0
  372. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/agenttraces.nim +0 -0
  373. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/envconfig.nim +0 -0
  374. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/footer.nim +0 -0
  375. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/minimap.nim +0 -0
  376. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/objectinfo.nim +0 -0
  377. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/panels.nim +0 -0
  378. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/replays.nim +0 -0
  379. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/settings.nim +0 -0
  380. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/shell.html +0 -0
  381. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/sim.nim +0 -0
  382. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope/utils.nim +0 -0
  383. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope.nim +0 -0
  384. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/nim/mettascope/src/mettascope.nims +0 -0
  385. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/pyproject.toml +0 -0
  386. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/README.md +0 -0
  387. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/__init__.py +0 -0
  388. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/builder/__init__.py +0 -0
  389. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/builder/empty_converters.py +0 -0
  390. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/builder/envs.py +0 -0
  391. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/config/__init__.py +0 -0
  392. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/config/config.py +0 -0
  393. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/demo.py +0 -0
  394. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/envs/__init__.py +0 -0
  395. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/envs/gym_env.py +0 -0
  396. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/envs/gym_wrapper.py +0 -0
  397. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/envs/mettagrid_env.py +0 -0
  398. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/envs/pettingzoo_env.py +0 -0
  399. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/envs/puffer_base.py +0 -0
  400. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/map_builder/__init__.py +0 -0
  401. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/map_builder/ascii.py +0 -0
  402. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/map_builder/assembler_map_builder.py +0 -0
  403. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/map_builder/map_builder.py +0 -0
  404. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/map_builder/maze.py +0 -0
  405. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/map_builder/perimeter_incontext.py +0 -0
  406. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/map_builder/random.py +0 -0
  407. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/map_builder/utils.py +0 -0
  408. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/__init__.py +0 -0
  409. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/load.py +0 -0
  410. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/mapgen.py +0 -0
  411. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/mapgen_ascii.py +0 -0
  412. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/random/float.py +0 -0
  413. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/random/int.py +0 -0
  414. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scene.py +0 -0
  415. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/ascii.py +0 -0
  416. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/auto.py +0 -0
  417. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/bsp.py +0 -0
  418. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/convchain.py +0 -0
  419. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/copy_grid.py +0 -0
  420. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/README.md +0 -0
  421. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_choice.yaml +0 -0
  422. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_double_pillar.yaml +0 -0
  423. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_feature_with_door.yaml +0 -0
  424. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_flooded_fountain.yaml +0 -0
  425. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_single_pillar.yaml +0 -0
  426. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/amcnicky_arrival_underground_garden.yaml +0 -0
  427. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/angelslayer_arrival_pentagon.yaml +0 -0
  428. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/co_arrival_square_in_a_square_in_a_square.yaml +0 -0
  429. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/co_arrival_two_rings.yaml +0 -0
  430. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_hothouse.yaml +0 -0
  431. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_planthouse.yaml +0 -0
  432. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/denvon_arrival_waterhouse.yaml +0 -0
  433. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/doesnt_arrival_eight_statues.yaml +0 -0
  434. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dolorous_arrival_somebody's_watching_me.yaml +0 -0
  435. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_boxes_within_box.yaml +0 -0
  436. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_boxorama.yaml +0 -0
  437. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_line_fractal.yaml +0 -0
  438. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_long_road.yaml +0 -0
  439. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_radiant.yaml +0 -0
  440. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_rooms_a.yaml +0 -0
  441. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_rooms_with_view.yaml +0 -0
  442. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_shelter.yaml +0 -0
  443. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_snail.yaml +0 -0
  444. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_ternary.yaml +0 -0
  445. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_three_bigger_balls.yaml +0 -0
  446. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_three_smaller_balls.yaml +0 -0
  447. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_a.yaml +0 -0
  448. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_b.yaml +0 -0
  449. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_c.yaml +0 -0
  450. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_d.yaml +0 -0
  451. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_e.yaml +0 -0
  452. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_f.yaml +0 -0
  453. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_g.yaml +0 -0
  454. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_h.yaml +0 -0
  455. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_i.yaml +0 -0
  456. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_j.yaml +0 -0
  457. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_tiny_k.yaml +0 -0
  458. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_triangle_fractal.yaml +0 -0
  459. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_arrival_windows_large_door.yaml +0 -0
  460. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dpeg_chamrin_arrival_tetris.yaml +0 -0
  461. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_angles.yaml +0 -0
  462. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_boulevard.yaml +0 -0
  463. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/dysonsfear_arrival_nine_rooms.yaml +0 -0
  464. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ebering_hopf_link.yaml +0 -0
  465. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ebering_trefoil_3fold.yaml +0 -0
  466. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ebering_trefoil_twist.yaml +0 -0
  467. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_druids_welcome.yaml +0 -0
  468. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_tree_alley.yaml +0 -0
  469. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_water_cross.yaml +0 -0
  470. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/eino_arrival_water_star.yaml +0 -0
  471. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_blinker_ship.yaml +0 -0
  472. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_huge.yaml +0 -0
  473. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_large.yaml +0 -0
  474. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_medium.yaml +0 -0
  475. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/erik_arrival_triangle_small.yaml +0 -0
  476. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/giann_bridges.yaml +0 -0
  477. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/giann_forest_graveyard.yaml +0 -0
  478. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/giann_horns.yaml +0 -0
  479. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/giann_wishing_wells.yaml +0 -0
  480. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/grunt_arrival_crossed_arrows.yaml +0 -0
  481. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/grunt_arrival_lava_bath.yaml +0 -0
  482. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ldierk_walled_garden.yaml +0 -0
  483. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ldierk_walled_garden_2.yaml +0 -0
  484. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_cross.yaml +0 -0
  485. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_funnel.yaml +0 -0
  486. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lemuel_arrival_lava_pool.yaml +0 -0
  487. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_chessboard.yaml +0 -0
  488. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_flooded_house.yaml +0 -0
  489. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_lavapool.yaml +0 -0
  490. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_maybe_door_vault.yaml +0 -0
  491. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lightli_arrival_statue_moat.yaml +0 -0
  492. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lightli_iron_boxes.yaml +0 -0
  493. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/lightli_molten_gateway.yaml +0 -0
  494. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_grand_opening.yaml +0 -0
  495. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_los_fun.yaml +0 -0
  496. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_refuge.yaml +0 -0
  497. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/matt_arrival_spirals.yaml +0 -0
  498. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_diagonal_passages.yaml +0 -0
  499. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_doors.yaml +0 -0
  500. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_four_houses.yaml +0 -0
  501. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_open_corners.yaml +0 -0
  502. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_plants_in_alcoves.yaml +0 -0
  503. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_pointy.yaml +0 -0
  504. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_radiant_lines.yaml +0 -0
  505. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_three_doors.yaml +0 -0
  506. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_up_and_down.yaml +0 -0
  507. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/minmay_arrival_wavy_path.yaml +0 -0
  508. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_arrow.yaml +0 -0
  509. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue.yaml +0 -0
  510. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue_2.yaml +0 -0
  511. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/mrwooster_arrival_statue_3.yaml +0 -0
  512. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_large.yaml +0 -0
  513. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_med.yaml +0 -0
  514. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_door_cone_small.yaml +0 -0
  515. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ms813_arrival_square_statues.yaml +0 -0
  516. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/mushboom_english_gardens.yaml +0 -0
  517. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ncdulo_halloftheorcs.yaml +0 -0
  518. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ncdulo_lavacross.yaml +0 -0
  519. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ncdulo_smallfort.yaml +0 -0
  520. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ncdulo_watergridlock.yaml +0 -0
  521. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/ncdulo_wetmaze.yaml +0 -0
  522. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_crosshair.yaml +0 -0
  523. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_depleted_hourglass.yaml +0 -0
  524. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/nzn_arrival_water_spiral.yaml +0 -0
  525. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/onia_arrival_mini_spirals.yaml +0 -0
  526. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/onia_arrival_pyramid.yaml +0 -0
  527. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/pf_arrival_petrified_forest.yaml +0 -0
  528. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_basics.yaml +0 -0
  529. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_conway.yaml +0 -0
  530. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_dodecagon.yaml +0 -0
  531. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_heroes.yaml +0 -0
  532. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_radial01.yaml +0 -0
  533. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_radial02.yaml +0 -0
  534. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/psy_arrival_whirlpool.yaml +0 -0
  535. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/reono_arrival_forest_river.yaml +0 -0
  536. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/reono_arrival_mine.yaml +0 -0
  537. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/roderic_chinese_lattice_arrival.yaml +0 -0
  538. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/roderic_crossed_star.yaml +0 -0
  539. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/roderic_dead_forest.yaml +0 -0
  540. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_a.yaml +0 -0
  541. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_b.yaml +0 -0
  542. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_c.yaml +0 -0
  543. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_d.yaml +0 -0
  544. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/saegor_arrival_simple_e.yaml +0 -0
  545. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_checkerplants.yaml +0 -0
  546. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_forest.yaml +0 -0
  547. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_gate.yaml +0 -0
  548. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_hexagon.yaml +0 -0
  549. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_simple_crosswalls.yaml +0 -0
  550. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_simple_fountains.yaml +0 -0
  551. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/scummos_arrival_star.yaml +0 -0
  552. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/spicycebolla_green_bress_n_ham.yaml +0 -0
  553. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/spicycebolla_green_bress_n_ham_2.yaml +0 -0
  554. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_a.yaml +0 -0
  555. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_b.yaml +0 -0
  556. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_c.yaml +0 -0
  557. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_d.yaml +0 -0
  558. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_e.yaml +0 -0
  559. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/tarquinn_simple_flora_water_f.yaml +0 -0
  560. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/wander_arrival_chamber.yaml +0 -0
  561. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/wander_arrival_desolate.yaml +0 -0
  562. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/wheals_arrival_linesprint.yaml +0 -0
  563. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/wheals_arrival_shading.yaml +0 -0
  564. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/convchain/zelgadis_glass_arrival_small.yaml +0 -0
  565. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_choice.yaml +0 -0
  566. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_double_pillar.yaml +0 -0
  567. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_feature_with_door.yaml +0 -0
  568. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_flooded_fountain.yaml +0 -0
  569. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_single_pillar.yaml +0 -0
  570. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/amcnicky_arrival_underground_garden.yaml +0 -0
  571. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/co_arrival_square_in_a_square_in_a_square.yaml +0 -0
  572. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/co_arrival_two_rings.yaml +0 -0
  573. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_hothouse.yaml +0 -0
  574. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_planthouse.yaml +0 -0
  575. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/denvon_arrival_waterhouse.yaml +0 -0
  576. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/doesnt_arrival_eight_statues.yaml +0 -0
  577. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dolorous_arrival_somebody's_watching_me.yaml +0 -0
  578. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_boxes_within_box.yaml +0 -0
  579. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_boxorama.yaml +0 -0
  580. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_line_fractal.yaml +0 -0
  581. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_long_road.yaml +0 -0
  582. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_radiant.yaml +0 -0
  583. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_rooms_a.yaml +0 -0
  584. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_rooms_with_view.yaml +0 -0
  585. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_shelter.yaml +0 -0
  586. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_snail.yaml +0 -0
  587. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_ternary.yaml +0 -0
  588. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_three_bigger_balls.yaml +0 -0
  589. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_three_smaller_balls.yaml +0 -0
  590. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_a.yaml +0 -0
  591. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_b.yaml +0 -0
  592. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_c.yaml +0 -0
  593. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_d.yaml +0 -0
  594. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_e.yaml +0 -0
  595. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_f.yaml +0 -0
  596. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_g.yaml +0 -0
  597. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_h.yaml +0 -0
  598. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_i.yaml +0 -0
  599. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_j.yaml +0 -0
  600. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_tiny_k.yaml +0 -0
  601. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_triangle_fractal.yaml +0 -0
  602. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_arrival_windows_large_door.yaml +0 -0
  603. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dpeg_chamrin_arrival_tetris.yaml +0 -0
  604. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_angles.yaml +0 -0
  605. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_boulevard.yaml +0 -0
  606. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/dysonsfear_arrival_nine_rooms.yaml +0 -0
  607. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ebering_hopf_link.yaml +0 -0
  608. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ebering_trefoil_3fold.yaml +0 -0
  609. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ebering_trefoil_twist.yaml +0 -0
  610. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_druids_welcome.yaml +0 -0
  611. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_tree_alley.yaml +0 -0
  612. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_water_cross.yaml +0 -0
  613. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/eino_arrival_water_star.yaml +0 -0
  614. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_blinker_ship.yaml +0 -0
  615. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_huge.yaml +0 -0
  616. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_large.yaml +0 -0
  617. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_medium.yaml +0 -0
  618. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/erik_arrival_triangle_small.yaml +0 -0
  619. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/giann_bridges.yaml +0 -0
  620. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/giann_forest_graveyard.yaml +0 -0
  621. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/giann_horns.yaml +0 -0
  622. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/giann_wishing_wells.yaml +0 -0
  623. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/grunt_arrival_crossed_arrows.yaml +0 -0
  624. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/grunt_arrival_lava_bath.yaml +0 -0
  625. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ldierk_walled_garden.yaml +0 -0
  626. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ldierk_walled_garden_2.yaml +0 -0
  627. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_cross.yaml +0 -0
  628. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_funnel.yaml +0 -0
  629. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lemuel_arrival_lava_pool.yaml +0 -0
  630. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_chessboard.yaml +0 -0
  631. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_flooded_house.yaml +0 -0
  632. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_lavapool.yaml +0 -0
  633. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_maybe_door_vault.yaml +0 -0
  634. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lightli_arrival_statue_moat.yaml +0 -0
  635. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lightli_iron_boxes.yaml +0 -0
  636. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/lightli_molten_gateway.yaml +0 -0
  637. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_grand_opening.yaml +0 -0
  638. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_refuge.yaml +0 -0
  639. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/matt_arrival_spirals.yaml +0 -0
  640. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_diagonal_passages.yaml +0 -0
  641. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_doors.yaml +0 -0
  642. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_four_houses.yaml +0 -0
  643. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_open_corners.yaml +0 -0
  644. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_plants_in_alcoves.yaml +0 -0
  645. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_pointy.yaml +0 -0
  646. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_radiant_lines.yaml +0 -0
  647. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_three_doors.yaml +0 -0
  648. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_up_and_down.yaml +0 -0
  649. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/minmay_arrival_wavy_path.yaml +0 -0
  650. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_arrow.yaml +0 -0
  651. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue.yaml +0 -0
  652. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue_2.yaml +0 -0
  653. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/mrwooster_arrival_statue_3.yaml +0 -0
  654. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_large.yaml +0 -0
  655. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_med.yaml +0 -0
  656. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_door_cone_small.yaml +0 -0
  657. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ms813_arrival_square_statues.yaml +0 -0
  658. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/mushboom_english_gardens.yaml +0 -0
  659. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ncdulo_halloftheorcs.yaml +0 -0
  660. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ncdulo_lavacross.yaml +0 -0
  661. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ncdulo_smallfort.yaml +0 -0
  662. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ncdulo_watergridlock.yaml +0 -0
  663. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/ncdulo_wetmaze.yaml +0 -0
  664. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_crosshair.yaml +0 -0
  665. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_depleted_hourglass.yaml +0 -0
  666. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/nzn_arrival_water_spiral.yaml +0 -0
  667. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/onia_arrival_mini_spirals.yaml +0 -0
  668. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/onia_arrival_pyramid.yaml +0 -0
  669. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/pf_arrival_petrified_forest.yaml +0 -0
  670. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_basics.yaml +0 -0
  671. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_conway.yaml +0 -0
  672. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_dodecagon.yaml +0 -0
  673. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_heroes.yaml +0 -0
  674. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_radial01.yaml +0 -0
  675. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_radial02.yaml +0 -0
  676. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/psy_arrival_whirlpool.yaml +0 -0
  677. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/reono_arrival_forest_river.yaml +0 -0
  678. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/reono_arrival_mine.yaml +0 -0
  679. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/roderic_chinese_lattice_arrival.yaml +0 -0
  680. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/roderic_crossed_star.yaml +0 -0
  681. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/roderic_dead_forest.yaml +0 -0
  682. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_a.yaml +0 -0
  683. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_b.yaml +0 -0
  684. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_c.yaml +0 -0
  685. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_d.yaml +0 -0
  686. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/saegor_arrival_simple_e.yaml +0 -0
  687. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_checkerplants.yaml +0 -0
  688. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_forest.yaml +0 -0
  689. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_gate.yaml +0 -0
  690. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_hexagon.yaml +0 -0
  691. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_simple_crosswalls.yaml +0 -0
  692. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_simple_fountains.yaml +0 -0
  693. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/scummos_arrival_star.yaml +0 -0
  694. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/spicycebolla_green_bress_n_ham.yaml +0 -0
  695. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/spicycebolla_green_bress_n_ham_2.yaml +0 -0
  696. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_a.yaml +0 -0
  697. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_b.yaml +0 -0
  698. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_c.yaml +0 -0
  699. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_d.yaml +0 -0
  700. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_e.yaml +0 -0
  701. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/tarquinn_simple_flora_water_f.yaml +0 -0
  702. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/wander_arrival_chamber.yaml +0 -0
  703. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/wander_arrival_desolate.yaml +0 -0
  704. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/wheals_arrival_linesprint.yaml +0 -0
  705. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/wheals_arrival_shading.yaml +0 -0
  706. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/dcss/wfc/zelgadis_glass_arrival_small.yaml +0 -0
  707. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/grid_altars.py +0 -0
  708. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/inline_ascii.py +0 -0
  709. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/layout.py +0 -0
  710. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/make_connected.py +0 -0
  711. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/maze.py +0 -0
  712. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/mean_distance.py +0 -0
  713. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/mirror.py +0 -0
  714. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/multi_left_and_right.py +0 -0
  715. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/nop.py +0 -0
  716. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/radial_maze.py +0 -0
  717. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/random.py +0 -0
  718. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/random_dcss_scene.py +0 -0
  719. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/random_objects.py +0 -0
  720. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/random_scene.py +0 -0
  721. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/random_yaml_scene.py +0 -0
  722. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/remove_agents.py +0 -0
  723. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/room_grid.py +0 -0
  724. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/spiral.py +0 -0
  725. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/transplant_scene.py +0 -0
  726. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/varied_terrain.py +0 -0
  727. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/wfc.py +0 -0
  728. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/scenes/yaml.py +0 -0
  729. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/tools/dcss_import.py +0 -0
  730. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/tools/gen.py +0 -0
  731. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/tools/gen_scene.py +0 -0
  732. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/tools/view.py +0 -0
  733. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/types.py +0 -0
  734. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/utils/ascii_grid.py +0 -0
  735. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/utils/draw.py +0 -0
  736. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/utils/make_scene_config.py +0 -0
  737. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/utils/pattern.py +0 -0
  738. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/utils/show.py +0 -0
  739. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/utils/storable_map.py +0 -0
  740. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/mapgen/utils/thumbnail.py +0 -0
  741. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/nim/__init__.py +0 -0
  742. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/profiling/__init__.py +0 -0
  743. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/profiling/memory_monitor.py +0 -0
  744. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/profiling/stopwatch.py +0 -0
  745. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/profiling/system_monitor.py +0 -0
  746. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/py.typed +0 -0
  747. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/Inter-Regular.ttf +0 -0
  748. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/altar.png +0 -0
  749. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/atlas.json +0 -0
  750. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/atlas.png +0 -0
  751. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/converter.png +0 -0
  752. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/generator.png +0 -0
  753. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/items.png +0 -0
  754. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/monsters.png +0 -0
  755. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/ore-0.png +0 -0
  756. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/ore-1.png +0 -0
  757. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/ore-2.png +0 -0
  758. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/ore-3.png +0 -0
  759. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/ore-4.png +0 -0
  760. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/ore-5.png +0 -0
  761. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/ore-6.png +0 -0
  762. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/puffer_chars.png +0 -0
  763. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/assets/wall.png +0 -0
  764. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/miniscope/__init__.py +0 -0
  765. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/miniscope/buffer.py +0 -0
  766. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/renderer/miniscope/renderer.py +0 -0
  767. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/test_support/__init__.py +0 -0
  768. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/test_support/actions.py +0 -0
  769. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/test_support/mapgen.py +0 -0
  770. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/test_support/observation_helper.py +0 -0
  771. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/test_support/orientation.py +0 -0
  772. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/test_support/token_types.py +0 -0
  773. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/types.py +0 -0
  774. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/util/__init__.py +0 -0
  775. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/util/debug.py +0 -0
  776. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/util/dict_utils.py +0 -0
  777. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/util/diversity.py +0 -0
  778. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/util/grid_object_formatter.py +0 -0
  779. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/util/module.py +0 -0
  780. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/util/replay_writer.py +0 -0
  781. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/python/src/mettagrid/util/stats_writer.py +0 -0
  782. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/scripts/build_asan.sh +0 -0
  783. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/scripts/test_leaks.sh +0 -0
  784. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/setup.cfg +0 -0
  785. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/test_pointer_init +0 -0
  786. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/test_pointer_init.cpp +0 -0
  787. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/test_uninitialized.cpp +0 -0
  788. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/test_uninitialized.o +0 -0
  789. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/BUILD +0 -0
  790. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/__init__.py +0 -0
  791. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/cpplint.sh +0 -0
  792. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/map_builder/__init__.py +0 -0
  793. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/map_builder/test_ascii.py +0 -0
  794. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/map_builder/test_map_builder.py +0 -0
  795. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/map_builder/test_maze.py +0 -0
  796. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/map_builder/test_polymorphic_serialization.py +0 -0
  797. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/map_builder/test_random.py +0 -0
  798. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/map_builder/test_utils.py +0 -0
  799. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/__init__.py +0 -0
  800. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/random/test_float.py +0 -0
  801. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/random/test_int.py +0 -0
  802. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/fixtures/dir1/1.yaml +0 -0
  803. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/fixtures/dir1/2.yaml +0 -0
  804. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/fixtures/test.map +0 -0
  805. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/fixtures/test.yaml +0 -0
  806. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_ascii.py +0 -0
  807. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_auto.py +0 -0
  808. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_bsp.py +0 -0
  809. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_convchain.py +0 -0
  810. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_inline_ascii.py +0 -0
  811. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_layout.py +0 -0
  812. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_make_connected.py +0 -0
  813. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_maze.py +0 -0
  814. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_mean_distance.py +0 -0
  815. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_mirror.py +0 -0
  816. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_multi_left_and_right.py +0 -0
  817. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_nop.py +0 -0
  818. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_radial_maze.py +0 -0
  819. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_random.py +0 -0
  820. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_random_dcss_scene.py +0 -0
  821. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_random_objects.py +0 -0
  822. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_random_scene.py +0 -0
  823. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_random_yaml_scene.py +0 -0
  824. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_remove_agents.py +0 -0
  825. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_room_grid.py +0 -0
  826. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_wfc.py +0 -0
  827. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/scenes/test_yaml.py +0 -0
  828. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/test_mapgen.py +0 -0
  829. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/test_scene.py +0 -0
  830. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/test_validate_all_ascii_maps.py +0 -0
  831. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/utils/test_pattern.py +0 -0
  832. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/mapgen/utils/test_storable_map_io.py +0 -0
  833. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/profiling/test_memory_monitor.py +0 -0
  834. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/profiling/test_stopwatch.py +0 -0
  835. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/profiling/test_system_monitor.py +0 -0
  836. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/run_test.py +0 -0
  837. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_action_compatibility.py +0 -0
  838. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_actions.py +0 -0
  839. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_agent_resource_sharing.py +0 -0
  840. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_assembler_partial_usage.py +0 -0
  841. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_attack_resource_exception.py +0 -0
  842. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_buffer_reuse.py +0 -0
  843. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_buffers.py +0 -0
  844. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_clipper.cpp +0 -0
  845. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_converter.py +0 -0
  846. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_diversity.py +0 -0
  847. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_env_config_serialization.py +0 -0
  848. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_env_map.py +0 -0
  849. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_forbidden_imports.py +0 -0
  850. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_global_obs_config.py +0 -0
  851. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_global_observations.py +0 -0
  852. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_grid_object.cpp +0 -0
  853. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_gym_env.py +0 -0
  854. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_interactive.py +0 -0
  855. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_inventory_regeneration.py +0 -0
  856. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_leaks.py +0 -0
  857. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_mettagrid.py +0 -0
  858. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_move.py +0 -0
  859. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_new_env_hierarchy.py +0 -0
  860. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_observations.cpp +0 -0
  861. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_observations.py +0 -0
  862. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_pettingzoo_env.py +0 -0
  863. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_pufferlib_integration.py +0 -0
  864. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_resource_loss.py +0 -0
  865. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_rewards.py +0 -0
  866. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_rotate.py +0 -0
  867. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_set_inventory.py +0 -0
  868. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_stats_tracker.cpp +0 -0
  869. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_tags.py +0 -0
  870. {mettagrid-0.2.0.19 → mettagrid-0.2.0.21}/tests/test_visitation_counts.py +0 -0
@@ -37,3 +37,11 @@ bazel_dep(name = "google_benchmark", version = "1.9.4")
37
37
 
38
38
  # Abseil (dependency of some Google libraries)
39
39
  bazel_dep(name = "abseil-cpp", version = "20250814.0")
40
+
41
+ # make compile_commands.json with: bazel run @hedron_compile_commands//:refresh_all
42
+ bazel_dep(name = "hedron_compile_commands", version = "")
43
+ git_override(
44
+ module_name = "hedron_compile_commands",
45
+ remote = "https://github.com/hedronvision/bazel-compile-commands-extractor.git",
46
+ commit = "abb61a688167623088f8768cc9264798df6a9d10",
47
+ )
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mettagrid
3
- Version: 0.2.0.19
3
+ Version: 0.2.0.21
4
4
  Summary: A fast grid-based open-ended MARL environment
5
5
  Author-email: David Bloomin <daveey@gmail.com>
6
6
  License-Expression: MIT
@@ -8,12 +8,14 @@
8
8
  #include <iostream>
9
9
  #include <numeric>
10
10
  #include <random>
11
+ #include <unordered_set>
11
12
 
12
13
  #include "actions/action_handler.hpp"
13
14
  #include "actions/attack.hpp"
14
15
  #include "actions/change_color.hpp"
15
16
  #include "actions/change_glyph.hpp"
16
17
  #include "actions/get_output.hpp"
18
+ #include "actions/resource_mod.hpp"
17
19
  #include "actions/move.hpp"
18
20
  #include "actions/noop.hpp"
19
21
  #include "actions/put_recipe_items.hpp"
@@ -26,6 +28,7 @@
26
28
  #include "objects/agent.hpp"
27
29
  #include "objects/assembler.hpp"
28
30
  #include "objects/assembler_config.hpp"
31
+ #include "objects/chest.hpp"
29
32
  #include "objects/constants.hpp"
30
33
  #include "objects/converter.hpp"
31
34
  #include "objects/converter_config.hpp"
@@ -106,6 +109,9 @@ MettaGrid::MettaGrid(const GameConfig& game_config, const py::list map, unsigned
106
109
  _action_handlers.push_back(std::make_unique<Swap>(*action_config));
107
110
  } else if (action_name == "change_color") {
108
111
  _action_handlers.push_back(std::make_unique<ChangeColor>(*action_config));
112
+ } else if (action_name == "resource_mod") {
113
+ auto modify_config = std::static_pointer_cast<const ResourceModConfig>(action_config);
114
+ _action_handlers.push_back(std::make_unique<ResourceMod>(*modify_config, action_name));
109
115
  } else {
110
116
  throw std::runtime_error("Unknown action: " + action_name);
111
117
  }
@@ -461,7 +467,7 @@ void MettaGrid::_step(Actions actions) {
461
467
  }
462
468
 
463
469
  // Tolerate invalid action arguments
464
- if (arg > _max_action_args[action_idx]) {
470
+ if (arg < 0 || arg > _max_action_args[action_idx]) {
465
471
  _handle_invalid_action(agent_idx, "action.invalid_arg", action, arg);
466
472
  continue;
467
473
  }
@@ -678,16 +684,37 @@ py::tuple MettaGrid::step(const py::array_t<ActionType, py::array::c_style> acti
678
684
  return py::make_tuple(_observations, _rewards, _terminals, _truncations, py::dict());
679
685
  }
680
686
 
681
- py::dict MettaGrid::grid_objects(int min_row, int max_row, int min_col, int max_col) {
687
+ py::dict MettaGrid::grid_objects(int min_row, int max_row, int min_col, int max_col, const py::list& ignore_types) {
682
688
  py::dict objects;
683
689
 
684
690
  // Determine if bounding box filtering is enabled
685
691
  bool use_bounds = (min_row >= 0 && max_row >= 0 && min_col >= 0 && max_col >= 0);
686
692
 
693
+ // Convert ignore_types list (type names) to type IDs for O(1) integer comparison
694
+ std::unordered_set<TypeId> ignore_type_ids;
695
+ for (const auto& item : ignore_types) {
696
+ std::string type_name = item.cast<std::string>();
697
+ // Find the type_id for this type_name
698
+ for (size_t type_id = 0; type_id < object_type_names.size(); ++type_id) {
699
+ if (object_type_names[type_id] == type_name) {
700
+ ignore_type_ids.insert(static_cast<TypeId>(type_id));
701
+ break;
702
+ }
703
+ }
704
+ }
705
+ bool use_type_filter = !ignore_type_ids.empty();
706
+
687
707
  for (unsigned int obj_id = 1; obj_id < _grid->objects.size(); obj_id++) {
688
708
  auto obj = _grid->object(obj_id);
689
709
  if (!obj) continue;
690
710
 
711
+ // Filter by type_id if specified (fast integer comparison)
712
+ if (use_type_filter) {
713
+ if (ignore_type_ids.find(obj->type_id) != ignore_type_ids.end()) {
714
+ continue;
715
+ }
716
+ }
717
+
691
718
  // Filter by bounding box if specified
692
719
  if (use_bounds) {
693
720
  if (obj->location.r < min_row || obj->location.r >= max_row ||
@@ -699,6 +726,8 @@ py::dict MettaGrid::grid_objects(int min_row, int max_row, int min_col, int max_
699
726
  py::dict obj_dict;
700
727
  obj_dict["id"] = obj_id;
701
728
  obj_dict["type"] = obj->type_id;
729
+ obj_dict["type_id"] = obj->type_id;
730
+ obj_dict["type_name"] = object_type_names[obj->type_id];
702
731
  // Location here is defined as XYZ coordinates specifically to be used by MettaScope.
703
732
  // We define that for location: x is column, y is row, and z is layer.
704
733
  // Note: it might be different for matrix computations.
@@ -727,10 +756,17 @@ py::dict MettaGrid::grid_objects(int min_row, int max_row, int min_col, int max_
727
756
  if (auto* agent = dynamic_cast<Agent*>(obj)) {
728
757
  obj_dict["orientation"] = static_cast<int>(agent->orientation);
729
758
  obj_dict["group_id"] = agent->group;
759
+ obj_dict["group_name"] = agent->group_name;
730
760
  obj_dict["is_frozen"] = !!agent->frozen;
731
761
  obj_dict["freeze_remaining"] = agent->frozen;
732
762
  obj_dict["freeze_duration"] = agent->freeze_duration;
733
763
  obj_dict["color"] = agent->color;
764
+ obj_dict["glyph"] = agent->glyph;
765
+ obj_dict["agent_id"] = agent->agent_id;
766
+ obj_dict["action_failure_penalty"] = agent->action_failure_penalty;
767
+ obj_dict["current_stat_reward"] = agent->current_stat_reward;
768
+ obj_dict["prev_action_name"] = agent->prev_action_name;
769
+ obj_dict["steps_without_motion"] = agent->steps_without_motion;
734
770
 
735
771
  // We made resource limits more complicated than this, and need to review how to expose them.
736
772
  // py::dict resource_limits_dict;
@@ -738,7 +774,6 @@ py::dict MettaGrid::grid_objects(int min_row, int max_row, int min_col, int max_
738
774
  // resource_limits_dict[py::int_(resource)] = quantity;
739
775
  // }
740
776
  // obj_dict["resource_limits"] = resource_limits_dict;
741
- obj_dict["agent_id"] = agent->agent_id;
742
777
  }
743
778
 
744
779
  if (auto* converter = dynamic_cast<Converter*>(obj)) {
@@ -760,6 +795,76 @@ py::dict MettaGrid::grid_objects(int min_row, int max_row, int min_col, int max_
760
795
  obj_dict["output_resources"] = output_resources_dict;
761
796
  }
762
797
 
798
+ // Add assembler-specific info
799
+ if (auto* assembler = dynamic_cast<Assembler*>(obj)) {
800
+ obj_dict["cooldown_remaining"] = assembler->cooldown_remaining();
801
+ obj_dict["cooldown_duration"] = assembler->cooldown_duration;
802
+ obj_dict["cooldown_progress"] = assembler->cooldown_progress();
803
+ obj_dict["is_clipped"] = assembler->is_clipped;
804
+ obj_dict["clip_immune"] = assembler->clip_immune;
805
+ obj_dict["uses_count"] = assembler->uses_count;
806
+ obj_dict["max_uses"] = assembler->max_uses;
807
+ obj_dict["allow_partial_usage"] = assembler->allow_partial_usage;
808
+ obj_dict["exhaustion"] = assembler->exhaustion;
809
+ obj_dict["cooldown_multiplier"] = assembler->cooldown_multiplier;
810
+
811
+ // Add current recipe information
812
+ const Recipe* current_recipe = assembler->get_current_recipe();
813
+ if (current_recipe) {
814
+ py::dict input_resources_dict;
815
+ for (const auto& [resource, quantity] : current_recipe->input_resources) {
816
+ input_resources_dict[py::int_(resource)] = quantity;
817
+ }
818
+ obj_dict["current_recipe_inputs"] = input_resources_dict;
819
+
820
+ py::dict output_resources_dict;
821
+ for (const auto& [resource, quantity] : current_recipe->output_resources) {
822
+ output_resources_dict[py::int_(resource)] = quantity;
823
+ }
824
+ obj_dict["current_recipe_outputs"] = output_resources_dict;
825
+ obj_dict["current_recipe_cooldown"] = current_recipe->cooldown;
826
+ }
827
+
828
+ // Add all recipes information
829
+ const std::vector<std::shared_ptr<Recipe>>& active_recipes = assembler->is_clipped ? assembler->unclip_recipes : assembler->recipes;
830
+ py::list recipes_list;
831
+ for (size_t i = 0; i < active_recipes.size(); ++i) {
832
+ if (active_recipes[i]) {
833
+ py::dict recipe_dict;
834
+ recipe_dict["pattern_index"] = static_cast<int>(i);
835
+
836
+ py::dict input_resources_dict;
837
+ for (const auto& [resource, quantity] : active_recipes[i]->input_resources) {
838
+ input_resources_dict[py::int_(resource)] = quantity;
839
+ }
840
+ recipe_dict["input_resources"] = input_resources_dict;
841
+
842
+ py::dict output_resources_dict;
843
+ for (const auto& [resource, quantity] : active_recipes[i]->output_resources) {
844
+ output_resources_dict[py::int_(resource)] = quantity;
845
+ }
846
+ recipe_dict["output_resources"] = output_resources_dict;
847
+ recipe_dict["cooldown"] = active_recipes[i]->cooldown;
848
+
849
+ recipes_list.append(recipe_dict);
850
+ }
851
+ }
852
+ obj_dict["recipes"] = recipes_list;
853
+ }
854
+
855
+ // Add chest-specific info
856
+ if (auto* chest = dynamic_cast<Chest*>(obj)) {
857
+ obj_dict["resource_type"] = static_cast<int>(chest->resource_type);
858
+ obj_dict["max_inventory"] = chest->max_inventory;
859
+
860
+ // Convert position_deltas map to dict
861
+ py::dict position_deltas_dict;
862
+ for (const auto& [pos, delta] : chest->position_deltas) {
863
+ position_deltas_dict[py::int_(pos)] = delta;
864
+ }
865
+ obj_dict["position_deltas"] = position_deltas_dict;
866
+ }
867
+
763
868
  objects[py::int_(obj_id)] = obj_dict;
764
869
  }
765
870
 
@@ -913,7 +1018,8 @@ PYBIND11_MODULE(mettagrid_c, m) {
913
1018
  py::arg("min_row") = -1,
914
1019
  py::arg("max_row") = -1,
915
1020
  py::arg("min_col") = -1,
916
- py::arg("max_col") = -1)
1021
+ py::arg("max_col") = -1,
1022
+ py::arg("ignore_types") = py::list())
917
1023
  .def("action_names", &MettaGrid::action_names)
918
1024
  .def_property_readonly("map_width", &MettaGrid::map_width)
919
1025
  .def_property_readonly("map_height", &MettaGrid::map_height)
@@ -956,6 +1062,7 @@ PYBIND11_MODULE(mettagrid_c, m) {
956
1062
  bind_action_config(m);
957
1063
  bind_attack_action_config(m);
958
1064
  bind_change_glyph_action_config(m);
1065
+ bind_resource_mod_config(m);
959
1066
  bind_global_obs_config(m);
960
1067
  bind_clipper_config(m);
961
1068
  bind_game_config(m);
@@ -73,7 +73,11 @@ public:
73
73
  const py::array_t<TruncationType, py::array::c_style>& truncations,
74
74
  const py::array_t<RewardType, py::array::c_style>& rewards);
75
75
  void validate_buffers();
76
- py::dict grid_objects(int min_row = -1, int max_row = -1, int min_col = -1, int max_col = -1);
76
+ py::dict grid_objects(int min_row = -1,
77
+ int max_row = -1,
78
+ int min_col = -1,
79
+ int max_col = -1,
80
+ const py::list& ignore_types = py::list());
77
81
  py::list action_names();
78
82
 
79
83
  GridCoord map_width();
@@ -0,0 +1,194 @@
1
+ #ifndef PACKAGES_METTAGRID_CPP_INCLUDE_METTAGRID_ACTIONS_RESOURCE_MOD_HPP_
2
+ #define PACKAGES_METTAGRID_CPP_INCLUDE_METTAGRID_ACTIONS_RESOURCE_MOD_HPP_
3
+
4
+ #include <pybind11/pybind11.h>
5
+ #include <pybind11/stl.h>
6
+
7
+ #include <cmath>
8
+ #include <map>
9
+ #include <limits>
10
+ #include <stdexcept>
11
+ #include <string>
12
+ #include <vector>
13
+
14
+ #include "actions/action_handler.hpp"
15
+ #include "core/grid.hpp"
16
+ #include "core/grid_object.hpp"
17
+ #include "core/types.hpp"
18
+ #include "objects/agent.hpp"
19
+ #include "objects/converter.hpp"
20
+
21
+ struct ResourceModConfig : public ActionConfig {
22
+ std::map<InventoryItem, InventoryProbability> modifies;
23
+ GridCoord agent_radius;
24
+ GridCoord converter_radius;
25
+ bool scales;
26
+
27
+ ResourceModConfig(const std::map<InventoryItem, InventoryQuantity>& required_resources = {},
28
+ const std::map<InventoryItem, InventoryProbability>& consumed_resources = {},
29
+ const std::map<InventoryItem, InventoryProbability>& modifies = {},
30
+ GridCoord agent_radius = 0,
31
+ GridCoord converter_radius = 0,
32
+ bool scales = false)
33
+ : ActionConfig(required_resources, consumed_resources),
34
+ modifies(modifies),
35
+ agent_radius(agent_radius),
36
+ converter_radius(converter_radius),
37
+ scales(scales) {
38
+ // Validate modifies values for finiteness and magnitude
39
+ for (const auto& [item, value] : modifies) {
40
+ if (!std::isfinite(value)) {
41
+ throw std::invalid_argument("ResourceModConfig: modifies values must be finite");
42
+ }
43
+ // Check that absolute value when rounded up doesn't exceed 255
44
+ // (since inventories are uint8_t and deltas are int16_t)
45
+ if (std::ceil(std::abs(value)) > 255) {
46
+ throw std::invalid_argument("ResourceModConfig: modifies values must have |ceil(value)| <= 255");
47
+ }
48
+ }
49
+ }
50
+ };
51
+
52
+ class ResourceMod : public ActionHandler {
53
+ public:
54
+ explicit ResourceMod(const ResourceModConfig& cfg, const std::string& name = "resource_mod")
55
+ : ActionHandler(cfg, name),
56
+ _modifies(cfg.modifies),
57
+ _agent_radius(cfg.agent_radius),
58
+ _converter_radius(cfg.converter_radius),
59
+ _scales(cfg.scales) {}
60
+
61
+ unsigned char max_arg() const override {
62
+ return std::numeric_limits<unsigned char>::max();
63
+ }
64
+
65
+ protected:
66
+ bool _handle_action(Agent& actor, ActionArg /* arg */) override {
67
+ // Center AoE on actor's position
68
+ int center_row = static_cast<int>(actor.location.r);
69
+ int center_col = static_cast<int>(actor.location.c);
70
+
71
+ std::vector<Agent*> affected_agents;
72
+ std::vector<Converter*> affected_converters;
73
+
74
+ // Find all agents within agent_radius of the center
75
+ // radius=0 means skip agents entirely
76
+ if (_agent_radius > 0) {
77
+ for (int dr = -static_cast<int>(_agent_radius); dr <= static_cast<int>(_agent_radius); ++dr) {
78
+ for (int dc = -static_cast<int>(_agent_radius); dc <= static_cast<int>(_agent_radius); ++dc) {
79
+ // Manhattan distance
80
+ if (std::abs(dr) + std::abs(dc) > static_cast<int>(_agent_radius)) {
81
+ continue;
82
+ }
83
+
84
+ int target_row = center_row + dr;
85
+ int target_col = center_col + dc;
86
+
87
+ if (target_row >= 0 && target_row < static_cast<int>(_grid->height) &&
88
+ target_col >= 0 && target_col < static_cast<int>(_grid->width)) {
89
+ GridLocation loc(target_row, target_col, GridLayer::AgentLayer);
90
+ GridObject* obj = _grid->object_at(loc);
91
+ if (obj != nullptr) {
92
+ Agent* agent = static_cast<Agent*>(obj);
93
+ affected_agents.push_back(agent);
94
+ }
95
+ }
96
+ }
97
+ }
98
+ }
99
+
100
+ // Find all converters within converter_radius of the center
101
+ // radius=0 means skip converters entirely
102
+ if (_converter_radius > 0) {
103
+ for (int dr = -static_cast<int>(_converter_radius); dr <= static_cast<int>(_converter_radius); ++dr) {
104
+ for (int dc = -static_cast<int>(_converter_radius); dc <= static_cast<int>(_converter_radius); ++dc) {
105
+ // Manhattan distance
106
+ if (std::abs(dr) + std::abs(dc) > static_cast<int>(_converter_radius)) {
107
+ continue;
108
+ }
109
+
110
+ int target_row = center_row + dr;
111
+ int target_col = center_col + dc;
112
+
113
+ if (target_row >= 0 && target_row < static_cast<int>(_grid->height) &&
114
+ target_col >= 0 && target_col < static_cast<int>(_grid->width)) {
115
+ GridLocation loc(target_row, target_col, GridLayer::ObjectLayer);
116
+ GridObject* obj = _grid->object_at(loc);
117
+ if (obj != nullptr) {
118
+ Converter* converter = dynamic_cast<Converter*>(obj);
119
+ if (converter != nullptr) {
120
+ affected_converters.push_back(converter);
121
+ }
122
+ }
123
+ }
124
+ }
125
+ }
126
+ }
127
+
128
+ // No targets found - still consume resources and succeed
129
+ if (affected_agents.empty() && affected_converters.empty()) {
130
+ return true;
131
+ }
132
+
133
+ // Calculate total number of affected targets for scaling
134
+ size_t total_affected = affected_agents.size() + affected_converters.size();
135
+
136
+ // Apply modifications to all targets
137
+ for (const auto& [item, amount] : _modifies) {
138
+ InventoryProbability effective_amount = amount;
139
+
140
+ // Scale by number of targets if scales flag is true
141
+ if (_scales && total_affected > 1) {
142
+ effective_amount = amount / static_cast<float>(total_affected);
143
+ }
144
+
145
+ // Apply to agents - compute delta independently for each target
146
+ for (Agent* agent : affected_agents) {
147
+ InventoryDelta delta = compute_probabilistic_delta(effective_amount);
148
+ if (delta != 0) {
149
+ agent->update_inventory(item, delta);
150
+ }
151
+ }
152
+
153
+ // Apply to converters - compute delta independently for each target
154
+ for (Converter* converter : affected_converters) {
155
+ InventoryDelta delta = compute_probabilistic_delta(effective_amount);
156
+ if (delta != 0) {
157
+ converter->update_inventory(item, delta);
158
+ }
159
+ }
160
+ }
161
+
162
+ return true;
163
+ }
164
+
165
+ private:
166
+ std::map<InventoryItem, InventoryProbability> _modifies;
167
+ GridCoord _agent_radius;
168
+ GridCoord _converter_radius;
169
+ bool _scales;
170
+ };
171
+
172
+ namespace py = pybind11;
173
+
174
+ inline void bind_resource_mod_config(py::module& m) {
175
+ py::class_<ResourceModConfig, ActionConfig, std::shared_ptr<ResourceModConfig>>(m, "ResourceModConfig")
176
+ .def(py::init<const std::map<InventoryItem, InventoryQuantity>&,
177
+ const std::map<InventoryItem, InventoryProbability>&,
178
+ const std::map<InventoryItem, InventoryProbability>&,
179
+ GridCoord,
180
+ GridCoord,
181
+ bool>(),
182
+ py::arg("required_resources") = std::map<InventoryItem, InventoryQuantity>(),
183
+ py::arg("consumed_resources") = std::map<InventoryItem, InventoryProbability>(),
184
+ py::arg("modifies") = std::map<InventoryItem, InventoryProbability>(),
185
+ py::arg("agent_radius") = 0,
186
+ py::arg("converter_radius") = 0,
187
+ py::arg("scales") = false)
188
+ .def_readwrite("modifies", &ResourceModConfig::modifies)
189
+ .def_readwrite("agent_radius", &ResourceModConfig::agent_radius)
190
+ .def_readwrite("converter_radius", &ResourceModConfig::converter_radius)
191
+ .def_readwrite("scales", &ResourceModConfig::scales);
192
+ }
193
+
194
+ #endif // PACKAGES_METTAGRID_CPP_INCLUDE_METTAGRID_ACTIONS_RESOURCE_MOD_HPP_
@@ -1,11 +1,12 @@
1
1
  #ifndef PACKAGES_METTAGRID_CPP_INCLUDE_METTAGRID_CORE_GRID_OBJECT_HPP_
2
2
  #define PACKAGES_METTAGRID_CPP_INCLUDE_METTAGRID_CORE_GRID_OBJECT_HPP_
3
3
 
4
- #include <cstdint>
5
4
  #include <span>
6
5
  #include <string>
7
6
  #include <vector>
8
7
 
8
+ #include <cstdint>
9
+
9
10
  #include "objects/constants.hpp"
10
11
  #include "core/types.hpp"
11
12
 
@@ -46,57 +46,71 @@ private:
46
46
  return -1; // Agent is not adjacent
47
47
  }
48
48
 
49
- // Check if the given position index is a deposit position
50
- bool is_deposit_position(int position_index) const {
51
- return deposit_positions.find(position_index) != deposit_positions.end();
52
- }
53
-
54
- // Check if the given position index is a withdrawal position
55
- bool is_withdrawal_position(int position_index) const {
56
- return withdrawal_positions.find(position_index) != withdrawal_positions.end();
57
- }
49
+ // Transfer resources based on position delta
50
+ // Positive delta = deposit from agent to chest
51
+ // Negative delta = withdraw from chest to agent
52
+ bool transfer_resource(Agent& agent, int delta) {
53
+ if (delta > 0) {
54
+ // Deposit: agent -> chest
55
+ int agent_amount = static_cast<int>(agent.inventory.amount(resource_type));
56
+ int transfer_amount = std::min(delta, agent_amount);
57
+ if (transfer_amount == 0) {
58
+ return false;
59
+ }
58
60
 
59
- // Deposit a resource from agent to chest
60
- bool deposit_resource(Agent& agent) {
61
- // Check if agent has the required resource
62
- if (agent.inventory.amount(resource_type) == 0) {
63
- return false;
64
- }
61
+ // Check if chest has space (unless max_inventory is unlimited)
62
+ if (max_inventory >= 0) {
63
+ int current_amount = static_cast<int>(inventory.amount(resource_type));
64
+ int available_space = max_inventory - current_amount;
65
+ transfer_amount = std::min(transfer_amount, available_space);
66
+
67
+ if (transfer_amount == 0) {
68
+ // Chest is full, destroy the resource from agent
69
+ agent.update_inventory(resource_type, -delta);
70
+ stats_tracker->add("chest." + stats_tracker->resource_name(resource_type) + ".destroyed", delta);
71
+ return true;
72
+ }
73
+ }
65
74
 
66
- InventoryDelta deposited = update_inventory(resource_type, 1);
67
- if (deposited == 1) {
68
- agent.update_inventory(resource_type, -1);
69
- stats_tracker->incr("chest." + stats_tracker->resource_name(resource_type) + ".deposited");
70
- stats_tracker->incr("chest." + stats_tracker->resource_name(resource_type) + ".amount");
75
+ // Transfer from agent to chest
76
+ InventoryDelta deposited = update_inventory(resource_type, transfer_amount);
77
+ agent.update_inventory(resource_type, -transfer_amount);
78
+ stats_tracker->add("chest." + stats_tracker->resource_name(resource_type) + ".deposited", transfer_amount);
79
+ stats_tracker->set("chest." + stats_tracker->resource_name(resource_type) + ".amount", inventory.amount(resource_type));
80
+
81
+ // If we couldn't transfer the full delta due to max_inventory, destroy the rest
82
+ int destroyed = delta - transfer_amount;
83
+ if (destroyed > 0) {
84
+ agent.update_inventory(resource_type, -destroyed);
85
+ stats_tracker->add("chest." + stats_tracker->resource_name(resource_type) + ".destroyed", destroyed);
86
+ }
71
87
  return true;
72
- }
73
- // Chest couldn't accept the resource, give it back to agent
74
- return false;
75
- }
88
+ } else if (delta < 0) {
89
+ // Withdraw: chest -> agent
90
+ int chest_amount = static_cast<int>(inventory.amount(resource_type));
91
+ int withdraw_amount = std::min(-delta, chest_amount);
92
+ if (withdraw_amount == 0) {
93
+ return false;
94
+ }
76
95
 
77
- // Withdraw a resource from chest to agent
78
- bool withdraw_resource(Agent& agent) {
79
- // Check if chest has the required resource
80
- if (inventory.amount(resource_type) == 0) {
96
+ // Transfer from chest to agent
97
+ InventoryDelta withdrawn = agent.update_inventory(resource_type, withdraw_amount);
98
+ if (withdrawn > 0) {
99
+ update_inventory(resource_type, -withdrawn);
100
+ stats_tracker->add("chest." + stats_tracker->resource_name(resource_type) + ".withdrawn", withdrawn);
101
+ stats_tracker->set("chest." + stats_tracker->resource_name(resource_type) + ".amount", inventory.amount(resource_type));
102
+ return true;
103
+ }
81
104
  return false;
82
105
  }
83
-
84
- InventoryDelta withdrawn = agent.update_inventory(resource_type, 1);
85
- if (withdrawn == 1) {
86
- update_inventory(resource_type, -1);
87
- stats_tracker->incr("chest." + stats_tracker->resource_name(resource_type) + ".withdrawn");
88
- stats_tracker->add("chest." + stats_tracker->resource_name(resource_type) + ".amount", -1);
89
- return true;
90
- }
91
- // Agent couldn't accept the resource, give it back to chest
92
- return false;
106
+ return false; // delta == 0, no-op
93
107
  }
94
108
 
95
109
  public:
96
110
  // Configuration
97
111
  InventoryItem resource_type;
98
- std::set<int> deposit_positions;
99
- std::set<int> withdrawal_positions;
112
+ std::map<int, int> position_deltas; // position_index -> delta
113
+ int max_inventory; // Maximum inventory (-1 = unlimited)
100
114
 
101
115
  // Grid access for finding agent positions
102
116
  class Grid* grid;
@@ -105,11 +119,15 @@ public:
105
119
  : GridObject(),
106
120
  HasInventory(InventoryConfig()), // Chests have nothing to configure in their inventory. Yet.
107
121
  resource_type(cfg.resource_type),
108
- deposit_positions(cfg.deposit_positions),
109
- withdrawal_positions(cfg.withdrawal_positions),
122
+ position_deltas(cfg.position_deltas),
123
+ max_inventory(cfg.max_inventory),
110
124
  stats_tracker(stats_tracker),
111
125
  grid(nullptr) {
112
126
  GridObject::init(cfg.type_id, cfg.type_name, GridLocation(r, c, GridLayer::ObjectLayer), cfg.tag_ids);
127
+ // Set initial inventory
128
+ if (cfg.initial_inventory > 0) {
129
+ update_inventory(cfg.resource_type, cfg.initial_inventory);
130
+ }
113
131
  }
114
132
 
115
133
  virtual ~Chest() = default;
@@ -130,14 +148,14 @@ public:
130
148
  return false;
131
149
  }
132
150
 
133
- // Check if agent is in a valid position for deposit or withdrawal
134
- if (is_deposit_position(agent_position_index)) {
135
- return deposit_resource(actor);
136
- } else if (is_withdrawal_position(agent_position_index)) {
137
- return withdraw_resource(actor);
138
- } else {
139
- return false;
151
+ // Check if there's a configured delta for this position
152
+ auto it = position_deltas.find(agent_position_index);
153
+ if (it == position_deltas.end()) {
154
+ return false; // No action configured for this position
140
155
  }
156
+
157
+ int delta = it->second;
158
+ return transfer_resource(actor, delta);
141
159
  }
142
160
 
143
161
  virtual std::vector<PartialObservationToken> obs_features() const override {
@@ -4,6 +4,7 @@
4
4
  #include <pybind11/pybind11.h>
5
5
  #include <pybind11/stl.h>
6
6
 
7
+ #include <map>
7
8
  #include <set>
8
9
 
9
10
  #include "core/grid_object.hpp"
@@ -13,35 +14,40 @@ struct ChestConfig : public GridObjectConfig {
13
14
  ChestConfig(TypeId type_id,
14
15
  const std::string& type_name,
15
16
  InventoryItem resource_type,
16
- const std::set<int>& deposit_positions,
17
- const std::set<int>& withdrawal_positions,
17
+ const std::map<int, int>& position_deltas,
18
+ int initial_inventory = 0,
19
+ int max_inventory = 255,
18
20
  const std::vector<int>& tag_ids = {})
19
21
  : GridObjectConfig(type_id, type_name, tag_ids),
20
22
  resource_type(resource_type),
21
- deposit_positions(deposit_positions),
22
- withdrawal_positions(withdrawal_positions) {}
23
+ position_deltas(position_deltas),
24
+ initial_inventory(initial_inventory),
25
+ max_inventory(max_inventory) {}
23
26
 
24
27
  InventoryItem resource_type;
25
- std::set<int> deposit_positions;
26
- std::set<int> withdrawal_positions;
28
+ std::map<int, int> position_deltas; // position_index -> delta (positive = deposit amount, negative = withdraw amount)
29
+ int initial_inventory; // Initial amount of resource_type in the chest
30
+ int max_inventory; // Maximum inventory (-1 = unlimited)
27
31
  };
28
32
 
29
33
  namespace py = pybind11;
30
34
 
31
35
  inline void bind_chest_config(py::module& m) {
32
36
  py::class_<ChestConfig, GridObjectConfig, std::shared_ptr<ChestConfig>>(m, "ChestConfig")
33
- .def(py::init<TypeId, const std::string&, InventoryItem, const std::set<int>&, const std::set<int>&, const std::vector<int>&>(),
37
+ .def(py::init<TypeId, const std::string&, InventoryItem, const std::map<int, int>&, int, int, const std::vector<int>&>(),
34
38
  py::arg("type_id"),
35
39
  py::arg("type_name"),
36
40
  py::arg("resource_type"),
37
- py::arg("deposit_positions"),
38
- py::arg("withdrawal_positions"),
41
+ py::arg("position_deltas"),
42
+ py::arg("initial_inventory") = 0,
43
+ py::arg("max_inventory") = 255,
39
44
  py::arg("tag_ids") = std::vector<int>())
40
45
  .def_readwrite("type_id", &ChestConfig::type_id)
41
46
  .def_readwrite("type_name", &ChestConfig::type_name)
42
47
  .def_readwrite("resource_type", &ChestConfig::resource_type)
43
- .def_readwrite("deposit_positions", &ChestConfig::deposit_positions)
44
- .def_readwrite("withdrawal_positions", &ChestConfig::withdrawal_positions)
48
+ .def_readwrite("position_deltas", &ChestConfig::position_deltas)
49
+ .def_readwrite("initial_inventory", &ChestConfig::initial_inventory)
50
+ .def_readwrite("max_inventory", &ChestConfig::max_inventory)
45
51
  .def_readwrite("tag_ids", &ChestConfig::tag_ids);
46
52
  }
47
53