smrpgpatchbuilder 7.1.13__tar.gz → 7.1.16__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.
Files changed (254) hide show
  1. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/MANIFEST.in +1 -0
  2. {smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder.egg-info → smrpgpatchbuilder-7.1.16}/PKG-INFO +41 -40
  3. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/README.md +38 -38
  4. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/pyproject.toml +8 -4
  5. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/graphics/classes.py +0 -1
  6. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/classes.py +20 -3
  7. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/enums.py +9 -1
  8. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16/src/smrpgpatchbuilder.egg-info}/PKG-INFO +41 -40
  9. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder.egg-info/SOURCES.txt +1 -77
  10. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder.egg-info/requires.txt +2 -0
  11. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/manage.py +0 -15
  12. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/allyassembler.py +0 -126
  13. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/allydisassembler.py +0 -381
  14. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/animationassembler.py +0 -71
  15. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/animationdisassembler.py +0 -3623
  16. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/battleassembler.py +0 -73
  17. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/battledialogassembler.py +0 -73
  18. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/battledialogdisassembler.py +0 -134
  19. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/battledisassembler.py +0 -727
  20. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/bowser_tile_rearranger.py +0 -308
  21. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/comboassembler.py +0 -220
  22. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/combodisassembler.py +0 -209
  23. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/dialogassembler.py +0 -66
  24. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/dialogdisassembler.py +0 -261
  25. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/enemyassembler.py +0 -134
  26. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/enemyattackassembler.py +0 -71
  27. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/enemyattackdisassembler.py +0 -203
  28. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/enemydisassembler.py +0 -592
  29. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/eventassembler.py +0 -83
  30. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/eventconverter.py +0 -2183
  31. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/eventidentifieraudit.py +0 -8
  32. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/eventpalettedisassembler.py +0 -132
  33. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/generatesample.py +0 -142
  34. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/graphicsassembler.py +0 -71
  35. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/graphicsdisassembler.py +0 -566
  36. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/input_file_parser.py +0 -519
  37. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/itemassembler.py +0 -124
  38. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/itemdisassembler.py +0 -612
  39. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/__init__.py +0 -0
  40. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/docstrings.py +0 -202
  41. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/eventdisassembler.py +0 -2011
  42. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/eventtables.py +0 -1261
  43. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/objectsequenceassembler.py +0 -13
  44. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/objectsequencedisassembler.py +0 -1353
  45. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/legacy/objectsequencetables.py +0 -61
  46. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/make_seed.py +0 -78
  47. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/move_spell_gfx.py +0 -157
  48. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/npcmodelassembler.py +0 -16
  49. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/npcmodeldisassembler.py +0 -99
  50. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/objectassembler.py +0 -34
  51. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/objectdisassembler.py +0 -759
  52. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/packassembler.py +0 -184
  53. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/packdisassembler.py +0 -365
  54. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/packetassembler.py +0 -71
  55. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/packetdisassembler.py +0 -169
  56. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/palettebytes.py +0 -542
  57. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/partitionanalyzer.py +0 -93
  58. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/roomassembler.py +0 -140
  59. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/roomconverter.py +0 -550
  60. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/roomdisassembler.py +0 -1060
  61. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/shopassembler.py +0 -171
  62. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/shopdisassembler.py +0 -181
  63. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/space_reassigner.py +0 -240
  64. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/spellassembler.py +0 -71
  65. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/spelldisassembler.py +0 -380
  66. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/spritepalettedisassembler.py +0 -127
  67. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/unused_gfx_finder.py +0 -64
  68. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/unused_gfx_remover old.py +0 -261
  69. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/unused_gfx_remover.py +0 -267
  70. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/variableparser.py +0 -54
  71. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/worldmaplocationassembler.py +0 -171
  72. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/commands/worldmaplocationdisassembler.py +0 -349
  73. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/management/django/settings.py +0 -17
  74. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/utils/disassembler_common.py +0 -264
  75. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/utils/npcs.py +0 -7
  76. smrpgpatchbuilder-7.1.13/src/smrpgpatchbuilder/utils/strings.py +0 -7
  77. smrpgpatchbuilder-7.1.13/src/tests/animations/test_animationscripts.py +0 -1893
  78. smrpgpatchbuilder-7.1.13/src/tests/dialogs/__init__.py +0 -0
  79. smrpgpatchbuilder-7.1.13/src/tests/dialogs/test_formatter.py +0 -346
  80. smrpgpatchbuilder-7.1.13/src/tests/levels/__init__.py +0 -0
  81. smrpgpatchbuilder-7.1.13/src/tests/levels/test_room_collection.py +0 -87
  82. smrpgpatchbuilder-7.1.13/src/tests/minecart/test_minecart.py +0 -88
  83. smrpgpatchbuilder-7.1.13/src/tests/monsters/test_ai.py +0 -385
  84. smrpgpatchbuilder-7.1.13/src/tests/overworld/test_actionscripts.py +0 -1928
  85. smrpgpatchbuilder-7.1.13/src/tests/overworld/test_eventscripts.py +0 -2387
  86. smrpgpatchbuilder-7.1.13/src/tests/scripts_common/test_script_helpers.py +0 -45
  87. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/LICENSE +0 -0
  88. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/setup.cfg +0 -0
  89. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/__init__.py +0 -0
  90. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/__init__.py +0 -0
  91. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/allies/__init__.py +0 -0
  92. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/allies/ally.py +0 -0
  93. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/allies/ally_collection.py +0 -0
  94. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/__init__.py +0 -0
  95. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/__init__.py +0 -0
  96. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/battle_targets.py +0 -0
  97. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/bonus_messages.py +0 -0
  98. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/flash_colours.py +0 -0
  99. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/layer_priority_type.py +0 -0
  100. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/mask_effects.py +0 -0
  101. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/message_type.py +0 -0
  102. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/origins.py +0 -0
  103. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/pause_until.py +0 -0
  104. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/shift_type.py +0 -0
  105. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/__init__.py +0 -0
  106. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/classes.py +0 -0
  107. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/wave_effect.py +0 -0
  108. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/__init__.py +0 -0
  109. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/commands.py +0 -0
  110. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/__init__.py +0 -0
  111. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/classes.py +0 -0
  112. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/__init__.py +0 -0
  113. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/monster_entrances.py +0 -0
  114. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/types.py +0 -0
  115. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/__init__.py +0 -0
  116. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/battle_dialog_collection.py +0 -0
  117. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/enums.py +0 -0
  118. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/__init__.py +0 -0
  119. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/classes.py +0 -0
  120. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/ids/__init__.py +0 -0
  121. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/ids/misc.py +0 -0
  122. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/music.py +0 -0
  123. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/types/__init__.py +0 -0
  124. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/battles/types/classes.py +0 -0
  125. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/characters/__init__.py +0 -0
  126. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/characters/classes.py +0 -0
  127. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/characters/constants.py +0 -0
  128. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/characters/enums.py +0 -0
  129. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/__init__.py +0 -0
  130. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/classes.py +0 -0
  131. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/formatter.py +0 -0
  132. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/__init__.py +0 -0
  133. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/dialog_bank_ids.py +0 -0
  134. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/misc.py +0 -0
  135. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/__init__.py +0 -0
  136. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/classes.py +0 -0
  137. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/dialogs/utils.py +0 -0
  138. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemies/__init__.py +0 -0
  139. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemies/classes.py +0 -0
  140. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemies/constants.py +0 -0
  141. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemies/enums.py +0 -0
  142. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemy_attacks/__init__.py +0 -0
  143. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemy_attacks/classes.py +0 -0
  144. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/enemy_attacks/constants.py +0 -0
  145. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/graphics/__init__.py +0 -0
  146. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/__init__.py +0 -0
  147. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/constants.py +0 -0
  148. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/items/encoding.py +0 -0
  149. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/levels/classes.py +0 -0
  150. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/levels/room_collection.py +0 -0
  151. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/__init__.py +0 -0
  152. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/_vanilla_block.py +0 -0
  153. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/classes.py +0 -0
  154. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/constants.py +0 -0
  155. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/minecart/lz3.py +0 -0
  156. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/__init__.py +0 -0
  157. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/__init__.py +0 -0
  158. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/command_types.py +0 -0
  159. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/targets.py +0 -0
  160. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/__init__.py +0 -0
  161. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/classes.py +0 -0
  162. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/__init__.py +0 -0
  163. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/commands.py +0 -0
  164. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/__init__.py +0 -0
  165. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/classes.py +0 -0
  166. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/__init__.py +0 -0
  167. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/misc.py +0 -0
  168. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/monster_scripts/types.py +0 -0
  169. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/numbers/__init__.py +0 -0
  170. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/numbers/classes.py +0 -0
  171. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/__init__.py +0 -0
  172. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/__init__.py +0 -0
  173. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/__init__.py +0 -0
  174. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/sequence_speeds.py +0 -0
  175. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/__init__.py +0 -0
  176. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/classes.py +0 -0
  177. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/vram_priority.py +0 -0
  178. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/classes.py +0 -0
  179. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/__init__.py +0 -0
  180. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/commands.py +0 -0
  181. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/__init__.py +0 -0
  182. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/classes.py +0 -0
  183. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/__init__.py +0 -0
  184. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/misc.py +0 -0
  185. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/__init__.py +0 -0
  186. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/area_objects.py +0 -0
  187. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/colours.py +0 -0
  188. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/controller_inputs.py +0 -0
  189. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/coords.py +0 -0
  190. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/directions.py +0 -0
  191. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/intro_title_text.py +0 -0
  192. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/layers.py +0 -0
  193. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_rows.py +0 -0
  194. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_types.py +0 -0
  195. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/scenes.py +0 -0
  196. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/tutorials.py +0 -0
  197. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/__init__.py +0 -0
  198. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/area_object.py +0 -0
  199. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/battlefield.py +0 -0
  200. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/byte_var.py +0 -0
  201. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/colour.py +0 -0
  202. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/controller_input.py +0 -0
  203. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/coord.py +0 -0
  204. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/direction.py +0 -0
  205. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/flag.py +0 -0
  206. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/intro_title_text.py +0 -0
  207. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/layer.py +0 -0
  208. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/packet.py +0 -0
  209. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_row.py +0 -0
  210. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_type.py +0 -0
  211. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/party_character.py +0 -0
  212. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/scene.py +0 -0
  213. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/short_var.py +0 -0
  214. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/tutorial.py +0 -0
  215. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/__init__.py +0 -0
  216. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/classes.py +0 -0
  217. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/__init__.py +0 -0
  218. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/commands.py +0 -0
  219. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/__init__.py +0 -0
  220. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/classes.py +0 -0
  221. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/__init__.py +0 -0
  222. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/misc.py +0 -0
  223. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/__init__.py +0 -0
  224. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/misc.py +0 -0
  225. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/scripts_common/__init__.py +0 -0
  226. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/scripts_common/classes.py +0 -0
  227. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/shops/__init__.py +0 -0
  228. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/shops/classes.py +0 -0
  229. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/__init__.py +0 -0
  230. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/__init__.py +0 -0
  231. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/damage_modifiers.py +0 -0
  232. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/timing_properties.py +0 -0
  233. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/__init__.py +0 -0
  234. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/classes.py +0 -0
  235. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/classes.py +0 -0
  236. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/enums.py +0 -0
  237. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/ids/__init__.py +0 -0
  238. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/spells/ids/misc.py +0 -0
  239. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/__init__.py +0 -0
  240. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ally_palettes.py +0 -0
  241. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/collection.py +0 -0
  242. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/disassembler.py +0 -0
  243. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/exceptions.py +0 -0
  244. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ids/__init__.py +0 -0
  245. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ids/event_palettes.py +0 -0
  246. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ids/misc.py +0 -0
  247. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/ids/sprite_palettes.py +0 -0
  248. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/palette.py +0 -0
  249. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/sprites/sprite.py +0 -0
  250. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/world_map_locations/__init__.py +0 -0
  251. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/datatypes/world_map_locations/classes.py +0 -0
  252. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder/utils/number.py +0 -0
  253. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder.egg-info/dependency_links.txt +0 -0
  254. {smrpgpatchbuilder-7.1.13 → smrpgpatchbuilder-7.1.16}/src/smrpgpatchbuilder.egg-info/top_level.txt +0 -0
@@ -1,3 +1,4 @@
1
1
  global-exclude __pycache__
2
2
  global-exclude *.py[cod]
3
3
  prune src/disassembler_output
4
+ prune src/tests
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smrpgpatchbuilder
3
- Version: 7.1.13
3
+ Version: 7.1.16
4
4
  Summary: Patchable base class support for some SMRPG concepts similar to their definitions in Lazy Shell
5
5
  Author-email: pidgezero_one <s.kischak@gmail.com>
6
6
  License-Expression: MIT
@@ -11,7 +11,8 @@ Classifier: Operating System :: OS Independent
11
11
  Requires-Python: >=3.12
12
12
  Description-Content-Type: text/markdown
13
13
  License-File: LICENSE
14
- Requires-Dist: Django>=5.1
14
+ Provides-Extra: cli
15
+ Requires-Dist: Django>=5.1; extra == "cli"
15
16
  Dynamic: license-file
16
17
 
17
18
  # SMRPG Patch Builder
@@ -100,7 +101,7 @@ Make sure that even if you don't rename any variables, **do not delete any lines
100
101
 
101
102
  Run
102
103
  ```bash
103
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py variableparser
104
+ PYTHONPATH=src python manage.py variableparser
104
105
  ```
105
106
  in the root folder of this repo. It will create files in `./src/disassembler_output/variables` that define Python variables according to the names you gave in Step 1. Everything else you disassemble will be using these.
106
107
 
@@ -108,10 +109,10 @@ in the root folder of this repo. It will create files in `./src/disassembler_out
108
109
 
109
110
  Disassemble items, spells, monster attacks, and packets by running:
110
111
  ```bash
111
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py itemdisassembler --rom "/path/to/your/smrpg/rom"
112
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemyattackdisassembler --rom "/path/to/your/smrpg/rom"
113
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spelldisassembler --rom "/path/to/your/smrpg/rom"
114
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packetdisassembler --rom "/path/to/your/smrpg/rom"
112
+ PYTHONPATH=src python manage.py itemdisassembler --rom "/path/to/your/smrpg/rom"
113
+ PYTHONPATH=src python manage.py enemyattackdisassembler --rom "/path/to/your/smrpg/rom"
114
+ PYTHONPATH=src python manage.py spelldisassembler --rom "/path/to/your/smrpg/rom"
115
+ PYTHONPATH=src python manage.py packetdisassembler --rom "/path/to/your/smrpg/rom"
115
116
  ```
116
117
 
117
118
  These will produce:
@@ -126,7 +127,7 @@ It is important to do these next because other things will use these. Event scri
126
127
 
127
128
  Disassemble monsters:
128
129
  ```bash
129
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemydisassembler --rom "/path/to/your/smrpg/rom"
130
+ PYTHONPATH=src python manage.py enemydisassembler --rom "/path/to/your/smrpg/rom"
130
131
  ```
131
132
 
132
133
  These will produce `./src/disassembler_output/enemies/enemies.py`. It is important to do this now because other data types (battle animations, monster AI, battle packs) depend on this data.
@@ -141,11 +142,11 @@ Now you can disassemble whatever else you want. There are no more dependencies.
141
142
 
142
143
  Disassemble:
143
144
  ```bash
144
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py eventconverter --rom "path/to/your/smrpg/rom" # be warned, this will probably take a few hours
145
+ PYTHONPATH=src python manage.py eventconverter --rom "path/to/your/smrpg/rom" # be warned, this will probably take a few hours
145
146
  ```
146
147
  Assemble:
147
148
  ```bash
148
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py eventassembler -r path/to/your/smrpg/rom -t -b
149
+ PYTHONPATH=src python manage.py eventassembler -r path/to/your/smrpg/rom -t -b
149
150
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
150
151
  ```
151
152
  Writes to:
@@ -261,11 +262,11 @@ Notes:
261
262
 
262
263
  Disassemble:
263
264
  ```bash
264
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py animationdisassembler --rom "path/to/your/smrpg/rom"
265
+ PYTHONPATH=src python manage.py animationdisassembler --rom "path/to/your/smrpg/rom"
265
266
  ```
266
267
  Assemble:
267
268
  ```bash
268
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py animationassembler -r path/to/your/smrpg/rom -t -b
269
+ PYTHONPATH=src python manage.py animationassembler -r path/to/your/smrpg/rom -t -b
269
270
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
270
271
  ```
271
272
  Writes to:
@@ -330,11 +331,11 @@ This is still easily the most volatile part of the game that this repo lets you
330
331
 
331
332
  Disassemble:
332
333
  ```bash
333
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemydisassembler --rom "path/to/your/smrpg/rom"
334
+ PYTHONPATH=src python manage.py enemydisassembler --rom "path/to/your/smrpg/rom"
334
335
  ```
335
336
  Assemble:
336
337
  ```bash
337
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemyassembler -r path/to/your/smrpg/rom -t -b
338
+ PYTHONPATH=src python manage.py enemyassembler -r path/to/your/smrpg/rom -t -b
338
339
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
339
340
  ```
340
341
  Writes to:
@@ -404,11 +405,11 @@ This was based off of the battle disassembler that patcdr made in smrpg randomiz
404
405
 
405
406
  Disassemble:
406
407
  ```bash
407
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py battledisassembler --rom "path/to/your/smrpg/rom"
408
+ PYTHONPATH=src python manage.py battledisassembler --rom "path/to/your/smrpg/rom"
408
409
  ```
409
410
  Assemble:
410
411
  ```bash
411
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py battleassembler -r path/to/your/smrpg/rom -t -b
412
+ PYTHONPATH=src python manage.py battleassembler -r path/to/your/smrpg/rom -t -b
412
413
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
413
414
  ```
414
415
  Writes to:
@@ -462,11 +463,11 @@ You can Ctrl+F the name of a command in Lazy Shell in src/smrpgpatchbuilder/data
462
463
 
463
464
  Disassemble:
464
465
  ```bash
465
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemyattackdisassembler --rom "path/to/your/smrpg/rom"
466
+ PYTHONPATH=src python manage.py enemyattackdisassembler --rom "path/to/your/smrpg/rom"
466
467
  ```
467
468
  Assemble:
468
469
  ```bash
469
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemyattackassembler -r path/to/your/smrpg/rom -t -b
470
+ PYTHONPATH=src python manage.py enemyattackassembler -r path/to/your/smrpg/rom -t -b
470
471
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
471
472
  ```
472
473
  Writes to:
@@ -482,11 +483,11 @@ The disassembler creates an `EnemyAttackCollection` (in the same file) that inst
482
483
 
483
484
  Disassemble:
484
485
  ```bash
485
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
486
+ PYTHONPATH=src python manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
486
487
  ```
487
488
  Assemble:
488
489
  ```bash
489
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spellassembler -r path/to/your/smrpg/rom -t -b
490
+ PYTHONPATH=src python manage.py spellassembler -r path/to/your/smrpg/rom -t -b
490
491
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
491
492
  ```
492
493
  Writes to:
@@ -502,11 +503,11 @@ The disassembler creates a `SpellCollection` (in the same file) that instantiate
502
503
 
503
504
  Disassemble:
504
505
  ```bash
505
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
506
+ PYTHONPATH=src python manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
506
507
  ```
507
508
  Assemble:
508
509
  ```bash
509
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spellassembler -r path/to/your/smrpg/rom -t -b
510
+ PYTHONPATH=src python manage.py spellassembler -r path/to/your/smrpg/rom -t -b
510
511
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
511
512
  ```
512
513
  Writes to:
@@ -577,11 +578,11 @@ The assembler can rename your characters, but be aware that it will not change t
577
578
 
578
579
  Disassemble:
579
580
  ```bash
580
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py itemdisassembler --rom "path/to/your/smrpg/rom"
581
+ PYTHONPATH=src python manage.py itemdisassembler --rom "path/to/your/smrpg/rom"
581
582
  ```
582
583
  Assemble:
583
584
  ```bash
584
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py itemassembler -r path/to/your/smrpg/rom -t -b
585
+ PYTHONPATH=src python manage.py itemassembler -r path/to/your/smrpg/rom -t -b
585
586
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
586
587
  ```
587
588
  Writes to:
@@ -662,11 +663,11 @@ The disassembler creates an `ItemCollection` (in the same file) that instantiate
662
663
 
663
664
  Disassemble:
664
665
  ```bash
665
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py graphicsdisassembler --rom "path/to/your/smrpg/rom"
666
+ PYTHONPATH=src python manage.py graphicsdisassembler --rom "path/to/your/smrpg/rom"
666
667
  ```
667
668
  Assemble:
668
669
  ```bash
669
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py graphicsassembler -r path/to/your/smrpg/rom -t -b
670
+ PYTHONPATH=src python manage.py graphicsassembler -r path/to/your/smrpg/rom -t -b
670
671
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
671
672
  ```
672
673
  Writes to:
@@ -722,11 +723,11 @@ Disassembly will produce a `SpriteCollection`. If you want to import your sprite
722
723
 
723
724
  Disassemble:
724
725
  ```bash
725
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py shopdisassembler --rom "path/to/your/smrpg/rom"
726
+ PYTHONPATH=src python manage.py shopdisassembler --rom "path/to/your/smrpg/rom"
726
727
  ```
727
728
  Assemble:
728
729
  ```bash
729
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py shopassembler -r path/to/your/smrpg/rom -t -b
730
+ PYTHONPATH=src python manage.py shopassembler -r path/to/your/smrpg/rom -t -b
730
731
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
731
732
  ```
732
733
  Writes to:
@@ -758,11 +759,11 @@ shops[SH06_FROG_COIN_EMPORIUM] = Shop(
758
759
 
759
760
  Disassemble:
760
761
  ```bash
761
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py dialogdisassembler --rom "path/to/your/smrpg/rom"
762
+ PYTHONPATH=src python manage.py dialogdisassembler --rom "path/to/your/smrpg/rom"
762
763
  ```
763
764
  Assemble:
764
765
  ```bash
765
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py dialogassembler -r path/to/your/smrpg/rom -t -b
766
+ PYTHONPATH=src python manage.py dialogassembler -r path/to/your/smrpg/rom -t -b
766
767
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
767
768
  ```
768
769
  Writes to:
@@ -809,11 +810,11 @@ Your ROM also uses a customizable compression table which gets written to `disas
809
810
 
810
811
  Disassemble:
811
812
  ```bash
812
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py battledialogdisassembler --rom "path/to/your/smrpg/rom"
813
+ PYTHONPATH=src python manage.py battledialogdisassembler --rom "path/to/your/smrpg/rom"
813
814
  ```
814
815
  Assemble:
815
816
  ```bash
816
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py battledialogassembler -r path/to/your/smrpg/rom -t -b
817
+ PYTHONPATH=src python manage.py battledialogassembler -r path/to/your/smrpg/rom -t -b
817
818
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
818
819
  ```
819
820
  Writes to:
@@ -831,11 +832,11 @@ The disassembler creates a `BattleDialogCollection` (in the same file). If you w
831
832
 
832
833
  Disassemble:
833
834
  ```bash
834
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packdisassembler --rom "path/to/your/smrpg/rom"
835
+ PYTHONPATH=src python manage.py packdisassembler --rom "path/to/your/smrpg/rom"
835
836
  ```
836
837
  Assemble:
837
838
  ```bash
838
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packassembler -r path/to/your/smrpg/rom -t -b
839
+ PYTHONPATH=src python manage.py packassembler -r path/to/your/smrpg/rom -t -b
839
840
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
840
841
  ```
841
842
  Writes to:
@@ -902,14 +903,14 @@ The room disassembler handles loading events, loading music, event tiles, exit f
902
903
 
903
904
  Disassemble:
904
905
  ```bash
905
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py roomdisassembler --rom "path/to/your/smrpg/rom" --large-partition-table
906
+ PYTHONPATH=src python manage.py roomdisassembler --rom "path/to/your/smrpg/rom" --large-partition-table
906
907
  # The --large-partition-table argument can be included or omitted.
907
908
  # If included, it will try to read partitions from 0x1DEBE0 instead of 0x1DDE00.
908
909
  # You should only use this if you've already assembled your rooms before such that the partitions have moved here.
909
910
  ```
910
911
  Assemble:
911
912
  ```bash
912
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py roomassembler -r path/to/your/smrpg/rom -t -b --large-partition-table
913
+ PYTHONPATH=src python manage.py roomassembler -r path/to/your/smrpg/rom -t -b --large-partition-table
913
914
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
914
915
  # The --large-partition-table argument can be included or omitted.
915
916
  # If included, it will write partitions from 0x1DEBE0 instead of 0x1DDE00.
@@ -1160,11 +1161,11 @@ Here are some things to be aware of:
1160
1161
 
1161
1162
  Disassemble:
1162
1163
  ```bash
1163
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packetdisassembler --rom "path/to/your/smrpg/rom"
1164
+ PYTHONPATH=src python manage.py packetdisassembler --rom "path/to/your/smrpg/rom"
1164
1165
  ```
1165
1166
  Assemble:
1166
1167
  ```bash
1167
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packetassembler -r path/to/your/smrpg/rom -t -b
1168
+ PYTHONPATH=src python manage.py packetassembler -r path/to/your/smrpg/rom -t -b
1168
1169
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
1169
1170
  ```
1170
1171
  Writes to:
@@ -1192,11 +1193,11 @@ The disassembler produces a list of 255 packet definitions and a PacketCollectio
1192
1193
 
1193
1194
  Disassemble:
1194
1195
  ```bash
1195
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py worldmaplocationdisassembler --rom "path/to/your/smrpg/rom"
1196
+ PYTHONPATH=src python manage.py worldmaplocationdisassembler --rom "path/to/your/smrpg/rom"
1196
1197
  ```
1197
1198
  Assemble:
1198
1199
  ```bash
1199
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py worldmaplocationassembler -r path/to/your/smrpg/rom -t -b
1200
+ PYTHONPATH=src python manage.py worldmaplocationassembler -r path/to/your/smrpg/rom -t -b
1200
1201
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
1201
1202
  ```
1202
1203
  Writes to:
@@ -84,7 +84,7 @@ Make sure that even if you don't rename any variables, **do not delete any lines
84
84
 
85
85
  Run
86
86
  ```bash
87
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py variableparser
87
+ PYTHONPATH=src python manage.py variableparser
88
88
  ```
89
89
  in the root folder of this repo. It will create files in `./src/disassembler_output/variables` that define Python variables according to the names you gave in Step 1. Everything else you disassemble will be using these.
90
90
 
@@ -92,10 +92,10 @@ in the root folder of this repo. It will create files in `./src/disassembler_out
92
92
 
93
93
  Disassemble items, spells, monster attacks, and packets by running:
94
94
  ```bash
95
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py itemdisassembler --rom "/path/to/your/smrpg/rom"
96
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemyattackdisassembler --rom "/path/to/your/smrpg/rom"
97
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spelldisassembler --rom "/path/to/your/smrpg/rom"
98
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packetdisassembler --rom "/path/to/your/smrpg/rom"
95
+ PYTHONPATH=src python manage.py itemdisassembler --rom "/path/to/your/smrpg/rom"
96
+ PYTHONPATH=src python manage.py enemyattackdisassembler --rom "/path/to/your/smrpg/rom"
97
+ PYTHONPATH=src python manage.py spelldisassembler --rom "/path/to/your/smrpg/rom"
98
+ PYTHONPATH=src python manage.py packetdisassembler --rom "/path/to/your/smrpg/rom"
99
99
  ```
100
100
 
101
101
  These will produce:
@@ -110,7 +110,7 @@ It is important to do these next because other things will use these. Event scri
110
110
 
111
111
  Disassemble monsters:
112
112
  ```bash
113
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemydisassembler --rom "/path/to/your/smrpg/rom"
113
+ PYTHONPATH=src python manage.py enemydisassembler --rom "/path/to/your/smrpg/rom"
114
114
  ```
115
115
 
116
116
  These will produce `./src/disassembler_output/enemies/enemies.py`. It is important to do this now because other data types (battle animations, monster AI, battle packs) depend on this data.
@@ -125,11 +125,11 @@ Now you can disassemble whatever else you want. There are no more dependencies.
125
125
 
126
126
  Disassemble:
127
127
  ```bash
128
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py eventconverter --rom "path/to/your/smrpg/rom" # be warned, this will probably take a few hours
128
+ PYTHONPATH=src python manage.py eventconverter --rom "path/to/your/smrpg/rom" # be warned, this will probably take a few hours
129
129
  ```
130
130
  Assemble:
131
131
  ```bash
132
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py eventassembler -r path/to/your/smrpg/rom -t -b
132
+ PYTHONPATH=src python manage.py eventassembler -r path/to/your/smrpg/rom -t -b
133
133
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
134
134
  ```
135
135
  Writes to:
@@ -245,11 +245,11 @@ Notes:
245
245
 
246
246
  Disassemble:
247
247
  ```bash
248
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py animationdisassembler --rom "path/to/your/smrpg/rom"
248
+ PYTHONPATH=src python manage.py animationdisassembler --rom "path/to/your/smrpg/rom"
249
249
  ```
250
250
  Assemble:
251
251
  ```bash
252
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py animationassembler -r path/to/your/smrpg/rom -t -b
252
+ PYTHONPATH=src python manage.py animationassembler -r path/to/your/smrpg/rom -t -b
253
253
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
254
254
  ```
255
255
  Writes to:
@@ -314,11 +314,11 @@ This is still easily the most volatile part of the game that this repo lets you
314
314
 
315
315
  Disassemble:
316
316
  ```bash
317
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemydisassembler --rom "path/to/your/smrpg/rom"
317
+ PYTHONPATH=src python manage.py enemydisassembler --rom "path/to/your/smrpg/rom"
318
318
  ```
319
319
  Assemble:
320
320
  ```bash
321
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemyassembler -r path/to/your/smrpg/rom -t -b
321
+ PYTHONPATH=src python manage.py enemyassembler -r path/to/your/smrpg/rom -t -b
322
322
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
323
323
  ```
324
324
  Writes to:
@@ -388,11 +388,11 @@ This was based off of the battle disassembler that patcdr made in smrpg randomiz
388
388
 
389
389
  Disassemble:
390
390
  ```bash
391
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py battledisassembler --rom "path/to/your/smrpg/rom"
391
+ PYTHONPATH=src python manage.py battledisassembler --rom "path/to/your/smrpg/rom"
392
392
  ```
393
393
  Assemble:
394
394
  ```bash
395
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py battleassembler -r path/to/your/smrpg/rom -t -b
395
+ PYTHONPATH=src python manage.py battleassembler -r path/to/your/smrpg/rom -t -b
396
396
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
397
397
  ```
398
398
  Writes to:
@@ -446,11 +446,11 @@ You can Ctrl+F the name of a command in Lazy Shell in src/smrpgpatchbuilder/data
446
446
 
447
447
  Disassemble:
448
448
  ```bash
449
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemyattackdisassembler --rom "path/to/your/smrpg/rom"
449
+ PYTHONPATH=src python manage.py enemyattackdisassembler --rom "path/to/your/smrpg/rom"
450
450
  ```
451
451
  Assemble:
452
452
  ```bash
453
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py enemyattackassembler -r path/to/your/smrpg/rom -t -b
453
+ PYTHONPATH=src python manage.py enemyattackassembler -r path/to/your/smrpg/rom -t -b
454
454
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
455
455
  ```
456
456
  Writes to:
@@ -466,11 +466,11 @@ The disassembler creates an `EnemyAttackCollection` (in the same file) that inst
466
466
 
467
467
  Disassemble:
468
468
  ```bash
469
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
469
+ PYTHONPATH=src python manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
470
470
  ```
471
471
  Assemble:
472
472
  ```bash
473
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spellassembler -r path/to/your/smrpg/rom -t -b
473
+ PYTHONPATH=src python manage.py spellassembler -r path/to/your/smrpg/rom -t -b
474
474
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
475
475
  ```
476
476
  Writes to:
@@ -486,11 +486,11 @@ The disassembler creates a `SpellCollection` (in the same file) that instantiate
486
486
 
487
487
  Disassemble:
488
488
  ```bash
489
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
489
+ PYTHONPATH=src python manage.py spelldisassembler --rom "path/to/your/smrpg/rom"
490
490
  ```
491
491
  Assemble:
492
492
  ```bash
493
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py spellassembler -r path/to/your/smrpg/rom -t -b
493
+ PYTHONPATH=src python manage.py spellassembler -r path/to/your/smrpg/rom -t -b
494
494
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
495
495
  ```
496
496
  Writes to:
@@ -561,11 +561,11 @@ The assembler can rename your characters, but be aware that it will not change t
561
561
 
562
562
  Disassemble:
563
563
  ```bash
564
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py itemdisassembler --rom "path/to/your/smrpg/rom"
564
+ PYTHONPATH=src python manage.py itemdisassembler --rom "path/to/your/smrpg/rom"
565
565
  ```
566
566
  Assemble:
567
567
  ```bash
568
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py itemassembler -r path/to/your/smrpg/rom -t -b
568
+ PYTHONPATH=src python manage.py itemassembler -r path/to/your/smrpg/rom -t -b
569
569
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
570
570
  ```
571
571
  Writes to:
@@ -646,11 +646,11 @@ The disassembler creates an `ItemCollection` (in the same file) that instantiate
646
646
 
647
647
  Disassemble:
648
648
  ```bash
649
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py graphicsdisassembler --rom "path/to/your/smrpg/rom"
649
+ PYTHONPATH=src python manage.py graphicsdisassembler --rom "path/to/your/smrpg/rom"
650
650
  ```
651
651
  Assemble:
652
652
  ```bash
653
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py graphicsassembler -r path/to/your/smrpg/rom -t -b
653
+ PYTHONPATH=src python manage.py graphicsassembler -r path/to/your/smrpg/rom -t -b
654
654
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
655
655
  ```
656
656
  Writes to:
@@ -706,11 +706,11 @@ Disassembly will produce a `SpriteCollection`. If you want to import your sprite
706
706
 
707
707
  Disassemble:
708
708
  ```bash
709
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py shopdisassembler --rom "path/to/your/smrpg/rom"
709
+ PYTHONPATH=src python manage.py shopdisassembler --rom "path/to/your/smrpg/rom"
710
710
  ```
711
711
  Assemble:
712
712
  ```bash
713
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py shopassembler -r path/to/your/smrpg/rom -t -b
713
+ PYTHONPATH=src python manage.py shopassembler -r path/to/your/smrpg/rom -t -b
714
714
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
715
715
  ```
716
716
  Writes to:
@@ -742,11 +742,11 @@ shops[SH06_FROG_COIN_EMPORIUM] = Shop(
742
742
 
743
743
  Disassemble:
744
744
  ```bash
745
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py dialogdisassembler --rom "path/to/your/smrpg/rom"
745
+ PYTHONPATH=src python manage.py dialogdisassembler --rom "path/to/your/smrpg/rom"
746
746
  ```
747
747
  Assemble:
748
748
  ```bash
749
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py dialogassembler -r path/to/your/smrpg/rom -t -b
749
+ PYTHONPATH=src python manage.py dialogassembler -r path/to/your/smrpg/rom -t -b
750
750
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
751
751
  ```
752
752
  Writes to:
@@ -793,11 +793,11 @@ Your ROM also uses a customizable compression table which gets written to `disas
793
793
 
794
794
  Disassemble:
795
795
  ```bash
796
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py battledialogdisassembler --rom "path/to/your/smrpg/rom"
796
+ PYTHONPATH=src python manage.py battledialogdisassembler --rom "path/to/your/smrpg/rom"
797
797
  ```
798
798
  Assemble:
799
799
  ```bash
800
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py battledialogassembler -r path/to/your/smrpg/rom -t -b
800
+ PYTHONPATH=src python manage.py battledialogassembler -r path/to/your/smrpg/rom -t -b
801
801
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
802
802
  ```
803
803
  Writes to:
@@ -815,11 +815,11 @@ The disassembler creates a `BattleDialogCollection` (in the same file). If you w
815
815
 
816
816
  Disassemble:
817
817
  ```bash
818
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packdisassembler --rom "path/to/your/smrpg/rom"
818
+ PYTHONPATH=src python manage.py packdisassembler --rom "path/to/your/smrpg/rom"
819
819
  ```
820
820
  Assemble:
821
821
  ```bash
822
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packassembler -r path/to/your/smrpg/rom -t -b
822
+ PYTHONPATH=src python manage.py packassembler -r path/to/your/smrpg/rom -t -b
823
823
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
824
824
  ```
825
825
  Writes to:
@@ -886,14 +886,14 @@ The room disassembler handles loading events, loading music, event tiles, exit f
886
886
 
887
887
  Disassemble:
888
888
  ```bash
889
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py roomdisassembler --rom "path/to/your/smrpg/rom" --large-partition-table
889
+ PYTHONPATH=src python manage.py roomdisassembler --rom "path/to/your/smrpg/rom" --large-partition-table
890
890
  # The --large-partition-table argument can be included or omitted.
891
891
  # If included, it will try to read partitions from 0x1DEBE0 instead of 0x1DDE00.
892
892
  # You should only use this if you've already assembled your rooms before such that the partitions have moved here.
893
893
  ```
894
894
  Assemble:
895
895
  ```bash
896
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py roomassembler -r path/to/your/smrpg/rom -t -b --large-partition-table
896
+ PYTHONPATH=src python manage.py roomassembler -r path/to/your/smrpg/rom -t -b --large-partition-table
897
897
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
898
898
  # The --large-partition-table argument can be included or omitted.
899
899
  # If included, it will write partitions from 0x1DEBE0 instead of 0x1DDE00.
@@ -1144,11 +1144,11 @@ Here are some things to be aware of:
1144
1144
 
1145
1145
  Disassemble:
1146
1146
  ```bash
1147
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packetdisassembler --rom "path/to/your/smrpg/rom"
1147
+ PYTHONPATH=src python manage.py packetdisassembler --rom "path/to/your/smrpg/rom"
1148
1148
  ```
1149
1149
  Assemble:
1150
1150
  ```bash
1151
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py packetassembler -r path/to/your/smrpg/rom -t -b
1151
+ PYTHONPATH=src python manage.py packetassembler -r path/to/your/smrpg/rom -t -b
1152
1152
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
1153
1153
  ```
1154
1154
  Writes to:
@@ -1176,11 +1176,11 @@ The disassembler produces a list of 255 packet definitions and a PacketCollectio
1176
1176
 
1177
1177
  Disassemble:
1178
1178
  ```bash
1179
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py worldmaplocationdisassembler --rom "path/to/your/smrpg/rom"
1179
+ PYTHONPATH=src python manage.py worldmaplocationdisassembler --rom "path/to/your/smrpg/rom"
1180
1180
  ```
1181
1181
  Assemble:
1182
1182
  ```bash
1183
- PYTHONPATH=src python src/smrpgpatchbuilder/manage.py worldmaplocationassembler -r path/to/your/smrpg/rom -t -b
1183
+ PYTHONPATH=src python manage.py worldmaplocationassembler -r path/to/your/smrpg/rom -t -b
1184
1184
  # -r generates a ROM patch, -t generates a text file, -b generates a FlexHEX .bin
1185
1185
  ```
1186
1186
  Writes to:
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "smrpgpatchbuilder"
7
- version = "7.1.13"
7
+ version = "7.1.16"
8
8
  authors = [
9
9
  { name="pidgezero_one", email="s.kischak@gmail.com" },
10
10
  ]
@@ -17,9 +17,11 @@ classifiers = [
17
17
  ]
18
18
  license = "MIT"
19
19
  license-files = ["LICEN[CS]E*"]
20
- dependencies=[
21
- "Django>=5.1"
22
- ]
20
+ dependencies=[]
21
+
22
+ [project.optional-dependencies]
23
+ # Only the dis/assembler CLIs (run from a repo checkout) need Django.
24
+ cli = ["Django>=5.1"]
23
25
 
24
26
  [project.urls]
25
27
  Homepage = "https://github.com/pidgezero-one/smrpgpatchbuilder"
@@ -28,6 +30,8 @@ Issues = "https://github.com/pidgezero-one/smrpgpatchbuilder/issues"
28
30
  [tool.setuptools.packages.find]
29
31
  where = ["src"]
30
32
  include = ["smrpgpatchbuilder*"]
33
+ # CLI dis/assemblers are a repo-checkout workflow, not part of the importable API.
34
+ exclude = ["smrpgpatchbuilder.management*"]
31
35
 
32
36
  [tool.pytest.ini_options]
33
37
  addopts = "-v -s"
@@ -1,4 +1,3 @@
1
- from django.core.management.base import BaseCommand
2
1
  import math, functools, copy, string, random
3
2
 
4
3
  from smrpgpatchbuilder.datatypes.sprites.ids.misc import (
@@ -212,6 +212,10 @@ class Item:
212
212
  """Update the effect type"""
213
213
  self._effect_type = effect_type
214
214
 
215
+ def _effect_type_byte(self) -> int:
216
+ """The value of item stat byte 1's effect type bits."""
217
+ return int(self._effect_type or 0)
218
+
215
219
  @property
216
220
  def inflict_type(self) -> InflictFunction | None:
217
221
  """The function that determines infliction logic"""
@@ -466,9 +470,7 @@ class Item:
466
470
  val |= 1 << 7
467
471
  data += ByteField(val).as_bytes()
468
472
 
469
- val = 0
470
- if self.effect_type is not None:
471
- val = self.effect_type
473
+ val = self._effect_type_byte()
472
474
  if self.overworld_menu_behaviour == OverworldMenuBehaviour.LEAD_TO_FP:
473
475
  val |= 1 << 5
474
476
  if self.overworld_menu_fill_hp:
@@ -533,6 +535,21 @@ ItemT = TypeVar("ItemT", bound=Item)
533
535
  class Equipment(Item):
534
536
  """Base class for weapons, armor, and accessories."""
535
537
 
538
+ def _effect_type_byte(self) -> int:
539
+ """Always both, for every equip.
540
+
541
+ The equip routine at $C2:BAE8 ORs byte 7 into the status immunity byte
542
+ when PROTECTION is set and ORs byte 8 into the enhancement byte when
543
+ INFLICTION is set, as two independent BIT tests. Either bit with an empty
544
+ source byte ORs in zero, so enabling both unconditionally costs nothing
545
+ and removes the failure mode entirely: any code that later adds a status
546
+ immunity or a temp buff to an equip just works, with nothing to remember.
547
+
548
+ NULLIFICATION is not representable here because it is never tested on the
549
+ equip path.
550
+ """
551
+ return int(EffectType.PROTECTION | EffectType.INFLICTION)
552
+
536
553
  def set_speed(self, speed: int) -> None:
537
554
  """Modify the base speed increase for this equip."""
538
555
  assert -128 <= speed <= 127
@@ -30,7 +30,15 @@ class ItemTypeValue(enum.IntEnum):
30
30
  ACCESSORY = 0b10
31
31
  ITEM = 0b11
32
32
 
33
- class EffectType(enum.IntEnum):
33
+ class EffectType(enum.IntFlag):
34
+ """Item stat byte 1. This is a bitfield, not a set of mutually exclusive
35
+ choices: the equip routine at $C2:BAE8 tests PROTECTION and INFLICTION with
36
+ two independent BIT instructions, so PROTECTION | INFLICTION grants both
37
+ status immunity (item byte 7) and permanent stat buffs (item byte 8).
38
+
39
+ NULLIFICATION is never tested on the equip path; it only applies to
40
+ consumables."""
41
+
34
42
  INFLICTION = 0x02
35
43
  PROTECTION = 0x01
36
44
  NULLIFICATION = 0x04