smrpgpatchbuilder 4.1.6__tar.gz → 4.1.8__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-4.1.6/src/smrpgpatchbuilder.egg-info → smrpgpatchbuilder-4.1.8}/PKG-INFO +1 -1
  2. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/pyproject.toml +1 -1
  3. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/__init__.py +1 -0
  4. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/classes.py +17 -1
  5. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/formatter.py +80 -0
  6. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8/src/smrpgpatchbuilder.egg-info}/PKG-INFO +1 -1
  7. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/LICENSE +0 -0
  8. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/MANIFEST.in +0 -0
  9. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/README.md +0 -0
  10. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/setup.cfg +0 -0
  11. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/__init__.py +0 -0
  12. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/__init__.py +0 -0
  13. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/allies/__init__.py +0 -0
  14. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/allies/ally.py +0 -0
  15. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/allies/ally_collection.py +0 -0
  16. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/__init__.py +0 -0
  17. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/__init__.py +0 -0
  18. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/battle_targets.py +0 -0
  19. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/bonus_messages.py +0 -0
  20. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/flash_colours.py +0 -0
  21. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/layer_priority_type.py +0 -0
  22. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/mask_effects.py +0 -0
  23. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/message_type.py +0 -0
  24. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/origins.py +0 -0
  25. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/pause_until.py +0 -0
  26. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/shift_type.py +0 -0
  27. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/__init__.py +0 -0
  28. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/types/classes.py +0 -0
  29. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/arguments/wave_effect.py +0 -0
  30. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/__init__.py +0 -0
  31. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/commands.py +0 -0
  32. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/__init__.py +0 -0
  33. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/commands/types/classes.py +0 -0
  34. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/__init__.py +0 -0
  35. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/ids/monster_entrances.py +0 -0
  36. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battle_animation_scripts/types.py +0 -0
  37. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/__init__.py +0 -0
  38. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/battle_dialog_collection.py +0 -0
  39. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/enums.py +0 -0
  40. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/__init__.py +0 -0
  41. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/formations_packs/types/classes.py +0 -0
  42. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/ids/__init__.py +0 -0
  43. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/ids/misc.py +0 -0
  44. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/music.py +0 -0
  45. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/types/__init__.py +0 -0
  46. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/battles/types/classes.py +0 -0
  47. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/characters/__init__.py +0 -0
  48. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/characters/classes.py +0 -0
  49. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/characters/constants.py +0 -0
  50. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/characters/enums.py +0 -0
  51. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/ids/__init__.py +0 -0
  52. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/ids/dialog_bank_ids.py +0 -0
  53. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/ids/misc.py +0 -0
  54. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/__init__.py +0 -0
  55. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/ids/types/classes.py +0 -0
  56. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/dialogs/utils.py +0 -0
  57. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/enemies/__init__.py +0 -0
  58. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/enemies/classes.py +0 -0
  59. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/enemies/constants.py +0 -0
  60. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/enemies/enums.py +0 -0
  61. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/enemy_attacks/__init__.py +0 -0
  62. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/enemy_attacks/classes.py +0 -0
  63. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/enemy_attacks/constants.py +0 -0
  64. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/graphics/__init__.py +0 -0
  65. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/graphics/classes.py +0 -0
  66. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/items/__init__.py +0 -0
  67. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/items/classes.py +0 -0
  68. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/items/constants.py +0 -0
  69. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/items/encoding.py +0 -0
  70. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/items/enums.py +0 -0
  71. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/levels/classes.py +0 -0
  72. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/levels/room_collection.py +0 -0
  73. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/__init__.py +0 -0
  74. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/__init__.py +0 -0
  75. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/command_types.py +0 -0
  76. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/targets.py +0 -0
  77. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/__init__.py +0 -0
  78. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/arguments/types/classes.py +0 -0
  79. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/__init__.py +0 -0
  80. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/commands.py +0 -0
  81. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/__init__.py +0 -0
  82. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/commands/types/classes.py +0 -0
  83. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/__init__.py +0 -0
  84. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/ids/misc.py +0 -0
  85. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/monster_scripts/types.py +0 -0
  86. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/numbers/__init__.py +0 -0
  87. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/numbers/classes.py +0 -0
  88. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/__init__.py +0 -0
  89. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/__init__.py +0 -0
  90. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/__init__.py +0 -0
  91. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/sequence_speeds.py +0 -0
  92. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/__init__.py +0 -0
  93. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/types/classes.py +0 -0
  94. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/arguments/vram_priority.py +0 -0
  95. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/classes.py +0 -0
  96. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/__init__.py +0 -0
  97. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/commands.py +0 -0
  98. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/__init__.py +0 -0
  99. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/commands/types/classes.py +0 -0
  100. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/__init__.py +0 -0
  101. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/action_scripts/ids/misc.py +0 -0
  102. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/__init__.py +0 -0
  103. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/area_objects.py +0 -0
  104. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/colours.py +0 -0
  105. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/controller_inputs.py +0 -0
  106. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/coords.py +0 -0
  107. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/directions.py +0 -0
  108. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/intro_title_text.py +0 -0
  109. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/layers.py +0 -0
  110. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_rows.py +0 -0
  111. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/palette_types.py +0 -0
  112. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/scenes.py +0 -0
  113. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/tutorials.py +0 -0
  114. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/__init__.py +0 -0
  115. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/area_object.py +0 -0
  116. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/battlefield.py +0 -0
  117. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/byte_var.py +0 -0
  118. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/colour.py +0 -0
  119. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/controller_input.py +0 -0
  120. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/coord.py +0 -0
  121. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/direction.py +0 -0
  122. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/flag.py +0 -0
  123. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/intro_title_text.py +0 -0
  124. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/layer.py +0 -0
  125. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/packet.py +0 -0
  126. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_row.py +0 -0
  127. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/palette_type.py +0 -0
  128. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/party_character.py +0 -0
  129. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/scene.py +0 -0
  130. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/short_var.py +0 -0
  131. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/arguments/types/tutorial.py +0 -0
  132. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/__init__.py +0 -0
  133. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/classes.py +0 -0
  134. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/__init__.py +0 -0
  135. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/commands.py +0 -0
  136. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/__init__.py +0 -0
  137. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/commands/types/classes.py +0 -0
  138. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/__init__.py +0 -0
  139. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/event_scripts/ids/misc.py +0 -0
  140. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/__init__.py +0 -0
  141. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/overworld_scripts/ids/misc.py +0 -0
  142. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/scripts_common/__init__.py +0 -0
  143. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/scripts_common/classes.py +0 -0
  144. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/shops/__init__.py +0 -0
  145. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/shops/classes.py +0 -0
  146. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/__init__.py +0 -0
  147. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/arguments/__init__.py +0 -0
  148. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/arguments/damage_modifiers.py +0 -0
  149. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/arguments/timing_properties.py +0 -0
  150. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/__init__.py +0 -0
  151. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/arguments/types/classes.py +0 -0
  152. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/classes.py +0 -0
  153. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/enums.py +0 -0
  154. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/ids/__init__.py +0 -0
  155. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/spells/ids/misc.py +0 -0
  156. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/__init__.py +0 -0
  157. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/ally_palettes.py +0 -0
  158. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/collection.py +0 -0
  159. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/disassembler.py +0 -0
  160. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/exceptions.py +0 -0
  161. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/ids/__init__.py +0 -0
  162. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/ids/event_palettes.py +0 -0
  163. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/ids/misc.py +0 -0
  164. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/ids/sprite_palettes.py +0 -0
  165. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/palette.py +0 -0
  166. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/sprites/sprite.py +0 -0
  167. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/world_map_locations/__init__.py +0 -0
  168. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/datatypes/world_map_locations/classes.py +0 -0
  169. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/manage.py +0 -0
  170. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/allyassembler.py +0 -0
  171. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/allydisassembler.py +0 -0
  172. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/animationassembler.py +0 -0
  173. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/animationdisassembler.py +0 -0
  174. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/battleassembler.py +0 -0
  175. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/battledialogassembler.py +0 -0
  176. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/battledialogdisassembler.py +0 -0
  177. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/battledisassembler.py +0 -0
  178. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/bowser_tile_rearranger.py +0 -0
  179. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/comboassembler.py +0 -0
  180. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/combodisassembler.py +0 -0
  181. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/dialogassembler.py +0 -0
  182. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/dialogdisassembler.py +0 -0
  183. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/enemyassembler.py +0 -0
  184. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/enemyattackassembler.py +0 -0
  185. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/enemyattackdisassembler.py +0 -0
  186. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/enemydisassembler.py +0 -0
  187. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/eventassembler.py +0 -0
  188. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/eventconverter.py +0 -0
  189. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/eventidentifieraudit.py +0 -0
  190. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/eventpalettedisassembler.py +0 -0
  191. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/generatesample.py +0 -0
  192. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/graphicsassembler.py +0 -0
  193. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/graphicsdisassembler.py +0 -0
  194. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/input_file_parser.py +0 -0
  195. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/itemassembler.py +0 -0
  196. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/itemdisassembler.py +0 -0
  197. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/legacy/__init__.py +0 -0
  198. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/legacy/docstrings.py +0 -0
  199. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/legacy/eventdisassembler.py +0 -0
  200. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/legacy/eventtables.py +0 -0
  201. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/legacy/objectsequenceassembler.py +0 -0
  202. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/legacy/objectsequencedisassembler.py +0 -0
  203. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/legacy/objectsequencetables.py +0 -0
  204. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/make_seed.py +0 -0
  205. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/move_spell_gfx.py +0 -0
  206. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/npcmodelassembler.py +0 -0
  207. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/npcmodeldisassembler.py +0 -0
  208. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/objectassembler.py +0 -0
  209. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/objectdisassembler.py +0 -0
  210. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/packassembler.py +0 -0
  211. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/packdisassembler.py +0 -0
  212. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/packetassembler.py +0 -0
  213. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/packetdisassembler.py +0 -0
  214. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/palettebytes.py +0 -0
  215. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/partitionanalyzer.py +0 -0
  216. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/roomassembler.py +0 -0
  217. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/roomconverter.py +0 -0
  218. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/roomdisassembler.py +0 -0
  219. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/shopassembler.py +0 -0
  220. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/shopdisassembler.py +0 -0
  221. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/space_reassigner.py +0 -0
  222. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/spellassembler.py +0 -0
  223. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/spelldisassembler.py +0 -0
  224. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/spritepalettedisassembler.py +0 -0
  225. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/unused_gfx_finder.py +0 -0
  226. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/unused_gfx_remover old.py +0 -0
  227. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/unused_gfx_remover.py +0 -0
  228. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/variableparser.py +0 -0
  229. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/worldmaplocationassembler.py +0 -0
  230. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/commands/worldmaplocationdisassembler.py +0 -0
  231. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/management/django/settings.py +0 -0
  232. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/utils/disassembler_common.py +0 -0
  233. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/utils/npcs.py +0 -0
  234. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/utils/number.py +0 -0
  235. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder/utils/strings.py +0 -0
  236. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder.egg-info/SOURCES.txt +0 -0
  237. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder.egg-info/dependency_links.txt +0 -0
  238. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder.egg-info/requires.txt +0 -0
  239. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/smrpgpatchbuilder.egg-info/top_level.txt +0 -0
  240. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/tests/animations/test_animationscripts.py +0 -0
  241. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/tests/dialogs/__init__.py +0 -0
  242. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/tests/dialogs/test_formatter.py +0 -0
  243. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/tests/monsters/test_ai.py +0 -0
  244. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/tests/overworld/test_actionscripts.py +0 -0
  245. {smrpgpatchbuilder-4.1.6 → smrpgpatchbuilder-4.1.8}/src/tests/overworld/test_eventscripts.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smrpgpatchbuilder
3
- Version: 4.1.6
3
+ Version: 4.1.8
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 = "4.1.6"
7
+ version = "4.1.8"
8
8
  authors = [
9
9
  { name="pidgezero_one", email="s.kischak@gmail.com" },
10
10
  ]
@@ -1,6 +1,7 @@
1
1
  from .formatter import (
2
2
  calculate_text_width,
3
3
  center_lines,
4
+ center_marked_lines,
4
5
  format_dialog,
5
6
  format_wish,
6
7
  validate_dialog,
@@ -1,5 +1,7 @@
1
1
  """Base classes related to dialogs and dialog collections"""
2
2
 
3
+ import re
4
+
3
5
  from smrpgpatchbuilder.datatypes.dialogs.ids.misc import (
4
6
  DIALOG_BANK_22_BEGINS,
5
7
  DIALOG_BANK_22_ENDS,
@@ -15,7 +17,7 @@ from smrpgpatchbuilder.datatypes.scripts_common.classes import (
15
17
  from .ids.dialog_bank_ids import (
16
18
  DIALOG_BANK_22,
17
19
  )
18
- from .formatter import center_lines, format_dialog
20
+ from .formatter import center_lines, center_marked_lines, format_dialog
19
21
  from .utils import compress, COMPRESSION_TABLE
20
22
 
21
23
  class Dialog:
@@ -160,6 +162,16 @@ class DialogCollection:
160
162
  self._unused_ranges = [] # Reset unused ranges tracking
161
163
  new_pointer_table: list[int] = [-1] * 4096
162
164
 
165
+ # Convert mid-dialog standalone [await] (0x00 = null terminator) to
166
+ # [await][page]\n (0x03) so the game continues to the next page instead
167
+ # of treating it as end-of-dialog.
168
+ _mid_await = re.compile(r'\[await\](?!\[page\]|\[pause\]|\n|$)')
169
+ for bank_idx, bank_strings in enumerate(self._raw_data):
170
+ for str_idx, s in enumerate(bank_strings):
171
+ self._raw_data[bank_idx][str_idx] = _mid_await.sub(
172
+ '[await][page]\n', s
173
+ )
174
+
163
175
  # Process [center] tags: auto-format line breaks and add centering padding
164
176
  for bank_idx, bank_strings in enumerate(self._raw_data):
165
177
  for str_idx, s in enumerate(bank_strings):
@@ -168,6 +180,10 @@ class DialogCollection:
168
180
  s = format_dialog(s)
169
181
  s = center_lines(s)
170
182
  self._raw_data[bank_idx][str_idx] = s
183
+ elif "\n[center]" in s:
184
+ s = format_dialog(s)
185
+ s = center_marked_lines(s)
186
+ self._raw_data[bank_idx][str_idx] = s
171
187
 
172
188
  compressed_text = [
173
189
  [compress(d, self.compression_table) for d in self._raw_data[0]],
@@ -113,6 +113,12 @@ def _tokenize(text: str, widths: tuple[int, ...] = VANILLA_DIALOG_FONT_WIDTHS) -
113
113
  cursor += len(delay_match.group())
114
114
  continue
115
115
 
116
+ # 1b. Match [center] as a zero-width marker token
117
+ if text[cursor:cursor + 8] == "[center]":
118
+ tokens.append(Token(text="[center]", width_px=0))
119
+ cursor += 8
120
+ continue
121
+
116
122
  # 2. Match control tokens (longest first)
117
123
  matched = False
118
124
  for ctrl in _CONTROL_TOKENS:
@@ -326,6 +332,9 @@ def format_dialog(
326
332
  result = "".join(output_parts)
327
333
 
328
334
  if has_center:
335
+ # Trim trailing spaces before newlines, control tokens, and end of string.
336
+ # Centered text pads from the left; trailing spaces waste dialog space.
337
+ result = re.sub(r' +(?=\n|\[(?:await|page|end|select)|$)', '', result)
329
338
  result = "[center]" + result
330
339
 
331
340
  return result
@@ -488,6 +497,77 @@ def format_wish(
488
497
  return text
489
498
 
490
499
 
500
+ def center_marked_lines(
501
+ text: str,
502
+ char_widths: tuple[int, ...] | None = None,
503
+ left_margin: int | None = None,
504
+ ) -> str:
505
+ """Center only lines that begin with [center], leaving other lines untouched.
506
+
507
+ For each line (split by bare \\n) that starts with ``[center]``:
508
+ 1. Strip the ``[center]`` marker
509
+ 2. Trim trailing spaces from the line content
510
+ 3. Calculate content width and add leading-space padding to center it
511
+
512
+ Lines without ``[center]`` are passed through unchanged.
513
+
514
+ Args:
515
+ text: The dialog string with \\n line breaks already inserted.
516
+ char_widths: Font width table. Defaults to VANILLA_DIALOG_FONT_WIDTHS.
517
+ left_margin: Left margin in pixels. Defaults to DEFAULT_LEFT_MARGIN.
518
+
519
+ Returns:
520
+ The text with per-line centering applied where marked.
521
+ """
522
+ if char_widths is None:
523
+ char_widths = VANILLA_DIALOG_FONT_WIDTHS
524
+ if left_margin is None:
525
+ left_margin = DEFAULT_LEFT_MARGIN
526
+
527
+ space_width = _calculate_char_width(" ", char_widths)
528
+ available_width = (CANVAS_WIDTH - left_margin) - (left_margin + 1)
529
+
530
+ # Tokenize so we can split on bare \n while preserving control tokens
531
+ tokens = _tokenize(text, char_widths)
532
+
533
+ # Split tokens into lines at bare \n boundaries
534
+ lines: list[list[Token]] = [[]]
535
+ for tok in tokens:
536
+ if tok.is_line_break and not tok.is_await:
537
+ lines.append([])
538
+ elif tok.is_page_break or (tok.is_line_break and tok.is_await):
539
+ lines[-1].append(tok)
540
+ lines.append([])
541
+ else:
542
+ lines[-1].append(tok)
543
+
544
+ result_parts: list[str] = []
545
+ for line_tokens in lines:
546
+ # Check if line starts with [center] (skipping leading spaces)
547
+ line_str = "".join(t.text for t in line_tokens)
548
+ if line_str.lstrip(" ").startswith("[center]"):
549
+ # Strip [center] marker
550
+ center_pos = line_str.index("[center]")
551
+ line_content = line_str[center_pos + len("[center]"):]
552
+ # Trim trailing spaces before any control token or end
553
+ line_content = re.sub(
554
+ r' +(?=\n|\[(?:await|page|end|select)|$)', '', line_content
555
+ )
556
+ # Calculate centering padding from the stripped content
557
+ content_tokens = _tokenize(line_content, char_widths)
558
+ content_width = sum(t.width_px for t in content_tokens)
559
+ remaining = available_width - content_width
560
+ if remaining > 0 and space_width > 0:
561
+ pad_spaces = math.floor((remaining / 2) / space_width)
562
+ else:
563
+ pad_spaces = 0
564
+ result_parts.append(" " * pad_spaces + line_content)
565
+ else:
566
+ result_parts.append(line_str)
567
+
568
+ return "\n".join(result_parts)
569
+
570
+
491
571
  def calculate_text_width(
492
572
  text: str,
493
573
  char_widths: tuple[int, ...] | None = None,
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: smrpgpatchbuilder
3
- Version: 4.1.6
3
+ Version: 4.1.8
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