smrpgpatchbuilder 5.0.10__tar.gz → 6.1.0__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 (245) hide show
  1. {smrpgpatchbuilder-5.0.10/src/smrpgpatchbuilder.egg-info → smrpgpatchbuilder-6.1.0}/PKG-INFO +1 -1
  2. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/pyproject.toml +1 -1
  3. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/commands.py +114 -50
  4. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0/src/smrpgpatchbuilder.egg-info}/PKG-INFO +1 -1
  5. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/LICENSE +0 -0
  6. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/MANIFEST.in +0 -0
  7. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/README.md +0 -0
  8. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/setup.cfg +0 -0
  9. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/__init__.py +0 -0
  10. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/__init__.py +0 -0
  11. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/allies/__init__.py +0 -0
  12. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/allies/ally.py +0 -0
  13. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/allies/ally_collection.py +0 -0
  14. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/__init__.py +0 -0
  15. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/__init__.py +0 -0
  16. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/battle_targets.py +0 -0
  17. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/bonus_messages.py +0 -0
  18. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/flash_colours.py +0 -0
  19. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/layer_priority_type.py +0 -0
  20. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/mask_effects.py +0 -0
  21. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/message_type.py +0 -0
  22. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/origins.py +0 -0
  23. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/pause_until.py +0 -0
  24. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/shift_type.py +0 -0
  25. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/__init__.py +0 -0
  26. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/classes.py +0 -0
  27. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/wave_effect.py +0 -0
  28. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/__init__.py +0 -0
  29. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/commands.py +0 -0
  30. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/__init__.py +0 -0
  31. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/classes.py +0 -0
  32. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/__init__.py +0 -0
  33. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/monster_entrances.py +0 -0
  34. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/types.py +0 -0
  35. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/__init__.py +0 -0
  36. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/battle_dialog_collection.py +0 -0
  37. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/enums.py +0 -0
  38. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/__init__.py +0 -0
  39. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/classes.py +0 -0
  40. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/ids/__init__.py +0 -0
  41. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/ids/misc.py +0 -0
  42. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/music.py +0 -0
  43. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/types/__init__.py +0 -0
  44. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/battles/types/classes.py +0 -0
  45. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/characters/__init__.py +0 -0
  46. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/characters/classes.py +0 -0
  47. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/characters/constants.py +0 -0
  48. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/characters/enums.py +0 -0
  49. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/__init__.py +0 -0
  50. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/classes.py +0 -0
  51. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/formatter.py +0 -0
  52. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/__init__.py +0 -0
  53. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/dialog_bank_ids.py +0 -0
  54. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/misc.py +0 -0
  55. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/__init__.py +0 -0
  56. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/classes.py +0 -0
  57. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/dialogs/utils.py +0 -0
  58. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/enemies/__init__.py +0 -0
  59. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/enemies/classes.py +0 -0
  60. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/enemies/constants.py +0 -0
  61. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/enemies/enums.py +0 -0
  62. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/enemy_attacks/__init__.py +0 -0
  63. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/enemy_attacks/classes.py +0 -0
  64. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/enemy_attacks/constants.py +0 -0
  65. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/graphics/__init__.py +0 -0
  66. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/graphics/classes.py +0 -0
  67. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/items/__init__.py +0 -0
  68. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/items/classes.py +0 -0
  69. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/items/constants.py +0 -0
  70. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/items/encoding.py +0 -0
  71. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/items/enums.py +0 -0
  72. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/levels/classes.py +0 -0
  73. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/levels/room_collection.py +0 -0
  74. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/__init__.py +0 -0
  75. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/__init__.py +0 -0
  76. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/command_types.py +0 -0
  77. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/targets.py +0 -0
  78. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/__init__.py +0 -0
  79. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/classes.py +0 -0
  80. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/__init__.py +0 -0
  81. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/commands.py +0 -0
  82. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/__init__.py +0 -0
  83. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/classes.py +0 -0
  84. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/__init__.py +0 -0
  85. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/misc.py +0 -0
  86. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/monster_scripts/types.py +0 -0
  87. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/numbers/__init__.py +0 -0
  88. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/numbers/classes.py +0 -0
  89. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/__init__.py +0 -0
  90. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/__init__.py +0 -0
  91. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/__init__.py +0 -0
  92. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/sequence_speeds.py +0 -0
  93. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/__init__.py +0 -0
  94. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/classes.py +0 -0
  95. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/vram_priority.py +0 -0
  96. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/classes.py +0 -0
  97. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/__init__.py +0 -0
  98. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/commands.py +0 -0
  99. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/__init__.py +0 -0
  100. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/classes.py +0 -0
  101. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/__init__.py +0 -0
  102. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/misc.py +0 -0
  103. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/__init__.py +0 -0
  104. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/area_objects.py +0 -0
  105. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/colours.py +0 -0
  106. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/controller_inputs.py +0 -0
  107. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/coords.py +0 -0
  108. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/directions.py +0 -0
  109. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/intro_title_text.py +0 -0
  110. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/layers.py +0 -0
  111. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_rows.py +0 -0
  112. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_types.py +0 -0
  113. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/scenes.py +0 -0
  114. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/tutorials.py +0 -0
  115. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/__init__.py +0 -0
  116. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/area_object.py +0 -0
  117. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/battlefield.py +0 -0
  118. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/byte_var.py +0 -0
  119. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/colour.py +0 -0
  120. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/controller_input.py +0 -0
  121. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/coord.py +0 -0
  122. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/direction.py +0 -0
  123. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/flag.py +0 -0
  124. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/intro_title_text.py +0 -0
  125. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/layer.py +0 -0
  126. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/packet.py +0 -0
  127. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_row.py +0 -0
  128. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_type.py +0 -0
  129. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/party_character.py +0 -0
  130. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/scene.py +0 -0
  131. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/short_var.py +0 -0
  132. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/tutorial.py +0 -0
  133. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/__init__.py +0 -0
  134. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/classes.py +0 -0
  135. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/__init__.py +0 -0
  136. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/__init__.py +0 -0
  137. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/classes.py +0 -0
  138. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/__init__.py +0 -0
  139. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/misc.py +0 -0
  140. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/__init__.py +0 -0
  141. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/misc.py +0 -0
  142. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/scripts_common/__init__.py +0 -0
  143. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/scripts_common/classes.py +0 -0
  144. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/shops/__init__.py +0 -0
  145. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/shops/classes.py +0 -0
  146. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/__init__.py +0 -0
  147. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/__init__.py +0 -0
  148. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/damage_modifiers.py +0 -0
  149. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/timing_properties.py +0 -0
  150. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/__init__.py +0 -0
  151. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/classes.py +0 -0
  152. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/classes.py +0 -0
  153. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/enums.py +0 -0
  154. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/ids/__init__.py +0 -0
  155. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/spells/ids/misc.py +0 -0
  156. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/__init__.py +0 -0
  157. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/ally_palettes.py +0 -0
  158. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/collection.py +0 -0
  159. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/disassembler.py +0 -0
  160. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/exceptions.py +0 -0
  161. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/ids/__init__.py +0 -0
  162. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/ids/event_palettes.py +0 -0
  163. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/ids/misc.py +0 -0
  164. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/ids/sprite_palettes.py +0 -0
  165. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/palette.py +0 -0
  166. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/sprites/sprite.py +0 -0
  167. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/world_map_locations/__init__.py +0 -0
  168. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/datatypes/world_map_locations/classes.py +0 -0
  169. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/manage.py +0 -0
  170. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/allyassembler.py +0 -0
  171. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/allydisassembler.py +0 -0
  172. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/animationassembler.py +0 -0
  173. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/animationdisassembler.py +0 -0
  174. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/battleassembler.py +0 -0
  175. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/battledialogassembler.py +0 -0
  176. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/battledialogdisassembler.py +0 -0
  177. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/battledisassembler.py +0 -0
  178. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/bowser_tile_rearranger.py +0 -0
  179. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/comboassembler.py +0 -0
  180. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/combodisassembler.py +0 -0
  181. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/dialogassembler.py +0 -0
  182. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/dialogdisassembler.py +0 -0
  183. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/enemyassembler.py +0 -0
  184. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/enemyattackassembler.py +0 -0
  185. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/enemyattackdisassembler.py +0 -0
  186. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/enemydisassembler.py +0 -0
  187. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/eventassembler.py +0 -0
  188. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/eventconverter.py +0 -0
  189. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/eventidentifieraudit.py +0 -0
  190. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/eventpalettedisassembler.py +0 -0
  191. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/generatesample.py +0 -0
  192. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/graphicsassembler.py +0 -0
  193. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/graphicsdisassembler.py +0 -0
  194. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/input_file_parser.py +0 -0
  195. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/itemassembler.py +0 -0
  196. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/itemdisassembler.py +0 -0
  197. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/legacy/__init__.py +0 -0
  198. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/legacy/docstrings.py +0 -0
  199. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/legacy/eventdisassembler.py +0 -0
  200. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/legacy/eventtables.py +0 -0
  201. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/legacy/objectsequenceassembler.py +0 -0
  202. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/legacy/objectsequencedisassembler.py +0 -0
  203. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/legacy/objectsequencetables.py +0 -0
  204. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/make_seed.py +0 -0
  205. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/move_spell_gfx.py +0 -0
  206. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/npcmodelassembler.py +0 -0
  207. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/npcmodeldisassembler.py +0 -0
  208. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/objectassembler.py +0 -0
  209. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/objectdisassembler.py +0 -0
  210. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/packassembler.py +0 -0
  211. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/packdisassembler.py +0 -0
  212. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/packetassembler.py +0 -0
  213. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/packetdisassembler.py +0 -0
  214. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/palettebytes.py +0 -0
  215. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/partitionanalyzer.py +0 -0
  216. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/roomassembler.py +0 -0
  217. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/roomconverter.py +0 -0
  218. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/roomdisassembler.py +0 -0
  219. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/shopassembler.py +0 -0
  220. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/shopdisassembler.py +0 -0
  221. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/space_reassigner.py +0 -0
  222. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/spellassembler.py +0 -0
  223. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/spelldisassembler.py +0 -0
  224. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/spritepalettedisassembler.py +0 -0
  225. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/unused_gfx_finder.py +0 -0
  226. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/unused_gfx_remover old.py +0 -0
  227. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/unused_gfx_remover.py +0 -0
  228. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/variableparser.py +0 -0
  229. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/worldmaplocationassembler.py +0 -0
  230. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/commands/worldmaplocationdisassembler.py +0 -0
  231. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/management/django/settings.py +0 -0
  232. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/utils/disassembler_common.py +0 -0
  233. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/utils/npcs.py +0 -0
  234. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/utils/number.py +0 -0
  235. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder/utils/strings.py +0 -0
  236. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder.egg-info/SOURCES.txt +0 -0
  237. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder.egg-info/dependency_links.txt +0 -0
  238. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder.egg-info/requires.txt +0 -0
  239. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/smrpgpatchbuilder.egg-info/top_level.txt +0 -0
  240. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/tests/animations/test_animationscripts.py +0 -0
  241. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/tests/dialogs/__init__.py +0 -0
  242. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/tests/dialogs/test_formatter.py +0 -0
  243. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/tests/monsters/test_ai.py +0 -0
  244. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/tests/overworld/test_actionscripts.py +0 -0
  245. {smrpgpatchbuilder-5.0.10 → smrpgpatchbuilder-6.1.0}/src/tests/overworld/test_eventscripts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smrpgpatchbuilder
3
- Version: 5.0.10
3
+ Version: 6.1.0
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
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "smrpgpatchbuilder"
7
- version = "5.0.10"
7
+ version = "6.1.0"
8
8
  authors = [
9
9
  { name="pidgezero_one", email="s.kischak@gmail.com" },
10
10
  ]
@@ -2570,22 +2570,42 @@ class CopyVarToVar(UsableEventScriptCommand, EventScriptCommand):
2570
2570
 
2571
2571
 
2572
2572
  class DarkenLayersExceptPaletteRows(UsableEventScriptCommand, EventScriptCommand):
2573
- """Darken the level background and all NPCs except the palette rows whose bit is
2574
- set in `preserve_rows_mask`. The handler at $C0:4FD9 stores `fade_arg` into the
2575
- fade-depth control word ($318B / $318C / $318E) and `preserve_rows_mask` into the
2576
- palette-row exclusion bitmask ($003185). The palette processor at $C0:3AEE walks 8
2577
- rows and skips any row whose mask bit is set, leaving only the unmasked rows
2578
- darkened.
2579
-
2580
- **Important:** the mask targets palette rows, not NPC indices. When a room's
2581
- `ally_sprite_buffer_size` is increased (e.g. when the protagonist needs more VRAM
2582
- for tilemap molds), every NPC palette row shifts by the same delta, so this mask
2583
- must shift left by the same delta to keep targeting the same NPCs.
2584
-
2585
- Bit `n` of `preserve_rows_mask` corresponds to palette row `n`. Bit set = preserve
2586
- (skip darkening); bit clear = darken normally.
2587
-
2588
- The middle arg byte is filler, ignored by the handler.
2573
+ """Darken the level background and all NPCs except the OBJ palette rows listed
2574
+ in `preserve_rows`, ramping over `duration_frames` frames. The handler at
2575
+ $C0:4FD9 unpacks three bytes:
2576
+
2577
+ byte 2 (offset 0): low 6 bits fade depth ($318B);
2578
+ high 2 bits → bits 0-1 of duration counter
2579
+ byte 3 (offset 1): bits 2-9 of the duration counter
2580
+ byte 4 (offset 2): 8-bit OBJ palette-row exclusion mask ($003185)
2581
+
2582
+ The two duration-related bytes get combined as a 16-bit load and shifted right
2583
+ by 6, giving a 10-bit duration value written to $318C and $318E. The palette
2584
+ processor at $C0:3A44 decrements $318C each frame and ends the fade when it
2585
+ reaches zero.
2586
+
2587
+ The palette processor at $C0:3AEE walks 8 rows (the OBJ palette set, rows
2588
+ 8-15) and skips any row whose bit is set in the exclusion mask, leaving only
2589
+ the unmasked rows darkened. Mask bits correspond to:
2590
+
2591
+ bit 0 → MARIO_PALETTE (PaletteRow 8 — the player)
2592
+ bit 1 → NPC_PALETTE_ROW_1 (PaletteRow 9)
2593
+ bit 2 → NPC_PALETTE_ROW_2 (PaletteRow 10)
2594
+ bit 3 → NPC_PALETTE_ROW_3 (PaletteRow 11)
2595
+ bit 4 → NPC_PALETTE_ROW_4 (PaletteRow 12)
2596
+ bit 5 → NPC_PALETTE_ROW_5 (PaletteRow 13)
2597
+ bit 6 → NPC_PALETTE_ROW_6 (PaletteRow 14)
2598
+ bit 7 → NPC_PALETTE_ROW_7 (PaletteRow 15)
2599
+
2600
+ `fade_depth=50` (0x32) is treated as a sentinel "max" by the processor at
2601
+ $C0:3A4C — when the duration counter expires at this depth, the fade state is
2602
+ cleared completely instead of transitioning into "fade-out completed" mode.
2603
+
2604
+ **Note on ally-buffer growth:** when a room's `ally_sprite_buffer_size`
2605
+ increases (e.g. for non-Mario protagonists with tilemap molds), every NPC
2606
+ palette row shifts by the same delta, so the NPC entries in `preserve_rows`
2607
+ must shift forward by the same delta to keep targeting the same NPCs.
2608
+ `MARIO_PALETTE` does not shift.
2589
2609
 
2590
2610
  ## Lazy Shell command
2591
2611
  (not available in Lazy Shell)
@@ -2597,63 +2617,107 @@ class DarkenLayersExceptPaletteRows(UsableEventScriptCommand, EventScriptCommand
2597
2617
  5 bytes
2598
2618
 
2599
2619
  Args:
2600
- fade_arg (int): 8-bit fade-depth control. Low 6 bits → $318B (fade depth);
2601
- high 2 bits $318C / $318E (fade-mode bits).
2602
- filler (int): Ignored by the handler. Set to 0 unless preserving original
2603
- byte sequences.
2604
- preserve_rows_mask (int): 8-bit palette-row exclusion bitmask. Bit n set =
2605
- palette row n is preserved (not darkened).
2620
+ fade_depth (int): Color-subtraction intensity, 0-63. Higher = darker.
2621
+ Special value 50 (0x32) is the "max depth" sentinel that triggers
2622
+ full state-clear when the fade ends.
2623
+ duration_frames (int): How many frames the fade lasts, 0-1023.
2624
+ preserve_rows (list[PaletteRow]): Palette rows to preserve from the
2625
+ darken effect. Each entry must be `MARIO_PALETTE` or
2626
+ `NPC_PALETTE_ROW_1` through `NPC_PALETTE_ROW_7` (PaletteRow values
2627
+ 8-15). Empty list = darken all rows.
2606
2628
  identifier (str | None): Give this command a label if you want another
2607
2629
  command to jump to it.
2608
2630
  """
2609
2631
 
2610
2632
  _opcode = bytearray([0xFD, 0x8E])
2611
2633
  _size: int = 5
2612
- _fade_arg: UInt8
2613
- _filler: UInt8
2614
- _preserve_rows_mask: UInt8
2634
+ _OBJ_PALETTE_BASE = 8 # PaletteRow(8) = MARIO_PALETTE = bit 0 of the mask.
2635
+ _MAX_FADE_DEPTH = 0x3F # 6-bit field
2636
+ _MAX_DURATION = 0x3FF # 10-bit field
2637
+ _fade_depth: UInt8
2638
+ _duration_frames: UInt16
2639
+ _preserve_rows: list[PaletteRow]
2615
2640
 
2616
2641
  @property
2617
- def fade_arg(self) -> UInt8:
2618
- """8-bit fade-depth control: low 6 bits → fade depth, high 2 bits → fade mode."""
2619
- return self._fade_arg
2642
+ def fade_depth(self) -> UInt8:
2643
+ """Color-subtraction intensity, 0-63. 50 (0x32) is the max-depth sentinel."""
2644
+ return self._fade_depth
2620
2645
 
2621
- def set_fade_arg(self, fade_arg: int) -> None:
2622
- """Set the 8-bit fade-depth control byte."""
2623
- self._fade_arg = UInt8(fade_arg)
2646
+ def set_fade_depth(self, fade_depth: int) -> None:
2647
+ """Set the fade depth (0-63)."""
2648
+ if not 0 <= fade_depth <= self._MAX_FADE_DEPTH:
2649
+ raise InvalidCommandArgumentException(
2650
+ f"DarkenLayersExceptPaletteRows fade_depth must be 0-{self._MAX_FADE_DEPTH}; "
2651
+ f"got {fade_depth}"
2652
+ )
2653
+ self._fade_depth = UInt8(fade_depth)
2624
2654
 
2625
2655
  @property
2626
- def filler(self) -> UInt8:
2627
- """Filler byte ignored by the handler at $C0:4FD9."""
2628
- return self._filler
2656
+ def duration_frames(self) -> UInt16:
2657
+ """Fade duration in frames, 0-1023."""
2658
+ return self._duration_frames
2629
2659
 
2630
- def set_filler(self, filler: int) -> None:
2631
- """Set the filler byte (no effect in-game)."""
2632
- self._filler = UInt8(filler)
2660
+ def set_duration_frames(self, duration_frames: int) -> None:
2661
+ """Set the fade duration in frames (0-1023)."""
2662
+ if not 0 <= duration_frames <= self._MAX_DURATION:
2663
+ raise InvalidCommandArgumentException(
2664
+ f"DarkenLayersExceptPaletteRows duration_frames must be 0-{self._MAX_DURATION}; "
2665
+ f"got {duration_frames}"
2666
+ )
2667
+ self._duration_frames = UInt16(duration_frames)
2668
+
2669
+ @property
2670
+ def preserve_rows(self) -> list[PaletteRow]:
2671
+ """Palette rows that the fade should preserve. Always sorted ascending."""
2672
+ return sorted(self._preserve_rows)
2673
+
2674
+ def set_preserve_rows(self, preserve_rows: list[PaletteRow | int]) -> None:
2675
+ """Set the palette rows to preserve. Each entry must be a PaletteRow in
2676
+ the OBJ range (8-15)."""
2677
+ rows: list[PaletteRow] = []
2678
+ seen: set[int] = set()
2679
+ for r in preserve_rows:
2680
+ row = PaletteRow(r)
2681
+ if not (
2682
+ self._OBJ_PALETTE_BASE <= row <= self._OBJ_PALETTE_BASE + 7
2683
+ ):
2684
+ raise InvalidCommandArgumentException(
2685
+ f"DarkenLayersExceptPaletteRows preserve_rows entries must be "
2686
+ f"MARIO_PALETTE or NPC_PALETTE_ROW_1 through NPC_PALETTE_ROW_7 "
2687
+ f"(PaletteRow {self._OBJ_PALETTE_BASE} through "
2688
+ f"{self._OBJ_PALETTE_BASE + 7}); got PaletteRow {int(row)}"
2689
+ )
2690
+ if int(row) not in seen:
2691
+ rows.append(row)
2692
+ seen.add(int(row))
2693
+ self._preserve_rows = rows
2633
2694
 
2634
2695
  @property
2635
2696
  def preserve_rows_mask(self) -> UInt8:
2636
- """8-bit palette-row exclusion mask. Bit n set = preserve palette row n."""
2637
- return self._preserve_rows_mask
2638
-
2639
- def set_preserve_rows_mask(self, preserve_rows_mask: int) -> None:
2640
- """Set the 8-bit palette-row exclusion mask."""
2641
- self._preserve_rows_mask = UInt8(preserve_rows_mask)
2697
+ """The 8-bit bitmask written to $003185 (derived from `preserve_rows`)."""
2698
+ mask = 0
2699
+ for row in self._preserve_rows:
2700
+ mask |= 1 << (int(row) - self._OBJ_PALETTE_BASE)
2701
+ return UInt8(mask)
2642
2702
 
2643
2703
  def __init__(
2644
2704
  self,
2645
- fade_arg: int,
2646
- preserve_rows_mask: int,
2647
- filler: int = 0,
2705
+ fade_depth: int,
2706
+ duration_frames: int,
2707
+ preserve_rows: list[PaletteRow | int],
2648
2708
  identifier: str | None = None,
2649
2709
  ) -> None:
2650
2710
  super().__init__(identifier)
2651
- self.set_fade_arg(fade_arg)
2652
- self.set_filler(filler)
2653
- self.set_preserve_rows_mask(preserve_rows_mask)
2711
+ self.set_fade_depth(fade_depth)
2712
+ self.set_duration_frames(duration_frames)
2713
+ self.set_preserve_rows(preserve_rows)
2654
2714
 
2655
2715
  def render(self, *args) -> bytearray:
2656
- return super().render(self.fade_arg, self.filler, self.preserve_rows_mask)
2716
+ # The handler reads byte 2 (low 6 bits = depth, high 2 bits = duration[0:2])
2717
+ # and byte 3 (duration[2:10]), so re-pack here.
2718
+ byte_2 = ((self._duration_frames & 0x03) << 6) | (self._fade_depth & 0x3F)
2719
+ byte_3 = (self._duration_frames >> 2) & 0xFF
2720
+ return super().render(UInt8(byte_2), UInt8(byte_3), self.preserve_rows_mask)
2657
2721
 
2658
2722
 
2659
2723
  class StoreBytesTo0335And0556(UsableEventScriptCommand, EventScriptCommand):
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smrpgpatchbuilder
3
- Version: 5.0.10
3
+ Version: 6.1.0
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