PyLibMS 3.2.3__tar.gz → 3.2.5__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 (70) hide show
  1. {pylibms-3.2.3 → pylibms-3.2.5}/PKG-INFO +6 -4
  2. {pylibms-3.2.3 → pylibms-3.2.5}/PyLibMS.egg-info/PKG-INFO +6 -4
  3. {pylibms-3.2.3 → pylibms-3.2.5}/README.md +5 -3
  4. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/section/atr1.py +6 -1
  5. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/tag/io/param_io.py +5 -4
  6. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/tag/io/tag_io.py +1 -1
  7. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/tag/lms_tag.py +12 -8
  8. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/msbp.py +1 -1
  9. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/msbpread.py +0 -1
  10. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/definitions/tags.py +1 -1
  11. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/Tomodachi Life.yaml +47 -47
  12. {pylibms-3.2.3 → pylibms-3.2.5}/pyproject.toml +1 -1
  13. {pylibms-3.2.3 → pylibms-3.2.5}/LICENSE +0 -0
  14. {pylibms-3.2.3 → pylibms-3.2.5}/MANIFEST.in +0 -0
  15. {pylibms-3.2.3 → pylibms-3.2.5}/PyLibMS.egg-info/SOURCES.txt +0 -0
  16. {pylibms-3.2.3 → pylibms-3.2.5}/PyLibMS.egg-info/dependency_links.txt +0 -0
  17. {pylibms-3.2.3 → pylibms-3.2.5}/PyLibMS.egg-info/requires.txt +0 -0
  18. {pylibms-3.2.3 → pylibms-3.2.5}/PyLibMS.egg-info/top_level.txt +0 -0
  19. {pylibms-3.2.3 → pylibms-3.2.5}/lms/__init__.py +0 -0
  20. {pylibms-3.2.3 → pylibms-3.2.5}/lms/common/__init__.py +0 -0
  21. {pylibms-3.2.3 → pylibms-3.2.5}/lms/common/lms_datatype.py +0 -0
  22. {pylibms-3.2.3 → pylibms-3.2.5}/lms/common/lms_exceptions.py +0 -0
  23. {pylibms-3.2.3 → pylibms-3.2.5}/lms/common/lms_fileinfo.py +0 -0
  24. {pylibms-3.2.3 → pylibms-3.2.5}/lms/common/stream/fileinfo.py +0 -0
  25. {pylibms-3.2.3 → pylibms-3.2.5}/lms/common/stream/hashtable.py +0 -0
  26. {pylibms-3.2.3 → pylibms-3.2.5}/lms/common/stream/section.py +0 -0
  27. {pylibms-3.2.3 → pylibms-3.2.5}/lms/fileio/encoding.py +0 -0
  28. {pylibms-3.2.3 → pylibms-3.2.5}/lms/fileio/io.py +0 -0
  29. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/__init__.py +0 -0
  30. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/definitions/__init__.py +0 -0
  31. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/definitions/field/__init__.py +0 -0
  32. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/definitions/field/io.py +0 -0
  33. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/definitions/field/lms_field.py +0 -0
  34. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/definitions/lms_messagetext.py +0 -0
  35. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/msbt.py +0 -0
  36. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/msbtentry.py +0 -0
  37. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/msbtio.py +0 -0
  38. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/section/__init__.py +0 -0
  39. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/section/tsy1.py +0 -0
  40. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/section/txt2.py +0 -0
  41. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/tag/__init__.py +0 -0
  42. {pylibms-3.2.3 → pylibms-3.2.5}/lms/message/tag/lms_tagexceptions.py +0 -0
  43. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/__init__.py +0 -0
  44. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/definitions/__init__.py +0 -0
  45. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/definitions/attribute.py +0 -0
  46. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/definitions/color.py +0 -0
  47. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/definitions/style.py +0 -0
  48. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/definitions/tag.py +0 -0
  49. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/section/ali2.py +0 -0
  50. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/section/ati2.py +0 -0
  51. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/section/clr1.py +0 -0
  52. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/section/string.py +0 -0
  53. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/section/syl3.py +0 -0
  54. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/section/tag2.py +0 -0
  55. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/section/tgg2.py +0 -0
  56. {pylibms-3.2.3 → pylibms-3.2.5}/lms/project/section/tgp2.py +0 -0
  57. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/__init__.py +0 -0
  58. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/config.py +0 -0
  59. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/definitions/__init__.py +0 -0
  60. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/definitions/attribute.py +0 -0
  61. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/definitions/value.py +0 -0
  62. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/Badge Arcade.yaml +0 -0
  63. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/Brain Age Concentration Training.yaml +0 -0
  64. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/Kirby Planet Robobot.yaml +0 -0
  65. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/Super Mario 3D Land.yaml +0 -0
  66. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/Super Mario 3D World + Bowsers Fury.yaml +0 -0
  67. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/Super Mario Odyssey.yaml +0 -0
  68. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/The Legend of Zelda Echos of Wisdom.yaml +0 -0
  69. {pylibms-3.2.3 → pylibms-3.2.5}/lms/titleconfig/presets/The Legend of Zelda a Link Between Worlds.yaml +0 -0
  70. {pylibms-3.2.3 → pylibms-3.2.5}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyLibMS
3
- Version: 3.2.3
3
+ Version: 3.2.5
4
4
  Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
5
5
  Author: AbdyyEee
6
6
  License: Copyright 2025 AbdyyEee
@@ -25,8 +25,8 @@ PylibMS is a library built in Python 3.10+ for the libMessageStudio (LMS) propri
25
25
  * Full reading and writing of MSBT files.
26
26
  * Full reading of MSBP files.
27
27
  * Supports encoded/decoded attributes
28
- * Supporting encoded/decoded tags 1:1 with Nintendos offical tool and BB code Syntax.
29
- * Additonal tag manipulation.
28
+ * Supporting encoded/decoded tags 1:1 with Nintendo's official tool and BB code Syntax.
29
+ * Additional tag manipulation.
30
30
 
31
31
  This library is designed to support LMS revision 3.0 and above, with the associated file formats used across the following Nintendo platforms:
32
32
  * Wii (Specific titles only)
@@ -35,6 +35,8 @@ This library is designed to support LMS revision 3.0 and above, with the associa
35
35
  * Mobile (Specific titles only)
36
36
  * Nintendo Switch
37
37
 
38
+ MSBF is in current in the works.
39
+
38
40
  # Features and Usage
39
41
  Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations and examples.
40
42
  ## Reading
@@ -57,7 +59,7 @@ To add or edit Preset, you may create an issue with the relevant `yaml` file and
57
59
  ```
58
60
  pip install PylibMS
59
61
  ```
60
- [Pip Page](https://pypi.org/project/PyLibMS/0.6/)
62
+ [Pip Page](https://pypi.org/project/PyLibMS/)
61
63
 
62
64
  # Build Instructions
63
65
  Python version must be `>=3.12.`
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: PyLibMS
3
- Version: 3.2.3
3
+ Version: 3.2.5
4
4
  Summary: Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF.
5
5
  Author: AbdyyEee
6
6
  License: Copyright 2025 AbdyyEee
@@ -25,8 +25,8 @@ PylibMS is a library built in Python 3.10+ for the libMessageStudio (LMS) propri
25
25
  * Full reading and writing of MSBT files.
26
26
  * Full reading of MSBP files.
27
27
  * Supports encoded/decoded attributes
28
- * Supporting encoded/decoded tags 1:1 with Nintendos offical tool and BB code Syntax.
29
- * Additonal tag manipulation.
28
+ * Supporting encoded/decoded tags 1:1 with Nintendo's official tool and BB code Syntax.
29
+ * Additional tag manipulation.
30
30
 
31
31
  This library is designed to support LMS revision 3.0 and above, with the associated file formats used across the following Nintendo platforms:
32
32
  * Wii (Specific titles only)
@@ -35,6 +35,8 @@ This library is designed to support LMS revision 3.0 and above, with the associa
35
35
  * Mobile (Specific titles only)
36
36
  * Nintendo Switch
37
37
 
38
+ MSBF is in current in the works.
39
+
38
40
  # Features and Usage
39
41
  Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations and examples.
40
42
  ## Reading
@@ -57,7 +59,7 @@ To add or edit Preset, you may create an issue with the relevant `yaml` file and
57
59
  ```
58
60
  pip install PylibMS
59
61
  ```
60
- [Pip Page](https://pypi.org/project/PyLibMS/0.6/)
62
+ [Pip Page](https://pypi.org/project/PyLibMS/)
61
63
 
62
64
  # Build Instructions
63
65
  Python version must be `>=3.12.`
@@ -4,8 +4,8 @@ PylibMS is a library built in Python 3.10+ for the libMessageStudio (LMS) propri
4
4
  * Full reading and writing of MSBT files.
5
5
  * Full reading of MSBP files.
6
6
  * Supports encoded/decoded attributes
7
- * Supporting encoded/decoded tags 1:1 with Nintendos offical tool and BB code Syntax.
8
- * Additonal tag manipulation.
7
+ * Supporting encoded/decoded tags 1:1 with Nintendo's official tool and BB code Syntax.
8
+ * Additional tag manipulation.
9
9
 
10
10
  This library is designed to support LMS revision 3.0 and above, with the associated file formats used across the following Nintendo platforms:
11
11
  * Wii (Specific titles only)
@@ -14,6 +14,8 @@ This library is designed to support LMS revision 3.0 and above, with the associa
14
14
  * Mobile (Specific titles only)
15
15
  * Nintendo Switch
16
16
 
17
+ MSBF is in current in the works.
18
+
17
19
  # Features and Usage
18
20
  Simple preview of the library is below. See [the wiki](https://github.com/AbdyyEee/PylibMS/wiki) for more explanations and examples.
19
21
  ## Reading
@@ -36,7 +38,7 @@ To add or edit Preset, you may create an issue with the relevant `yaml` file and
36
38
  ```
37
39
  pip install PylibMS
38
40
  ```
39
- [Pip Page](https://pypi.org/project/PyLibMS/0.6/)
41
+ [Pip Page](https://pypi.org/project/PyLibMS/)
40
42
 
41
43
  # Build Instructions
42
44
  Python version must be `>=3.12.`
@@ -39,6 +39,11 @@ def read_encoded_atr1(reader: FileReader, section_size: int) -> ATR1Data:
39
39
 
40
40
 
41
41
  def read_decoded_atr1(reader: FileReader, config: AttributeConfig) -> ATR1Data:
42
+ # String table as a list is not necessary for decoded attributes
43
+ # It is easier to save all changes from the user by when writing
44
+ # to recreate the table from all the string parameters in every attribute
45
+ string_table = None
46
+
42
47
  section_start = reader.tell()
43
48
 
44
49
  attr_count = reader.read_uint32()
@@ -63,7 +68,7 @@ def read_decoded_atr1(reader: FileReader, config: AttributeConfig) -> ATR1Data:
63
68
 
64
69
  attributes.append(LMS_FieldMap(attribute))
65
70
 
66
- return ATR1Data(attributes, size_per_attribute, None)
71
+ return ATR1Data(attributes, size_per_attribute, string_table)
67
72
 
68
73
 
69
74
  def write_encoded_atr1(
@@ -13,10 +13,11 @@ TAG_PADDING_BYTE = b"\xcd"
13
13
 
14
14
  def read_encoded_parameters(
15
15
  reader: FileReader, parameter_size: int
16
- ) -> list[str] | None:
16
+ ) -> list[int] | None:
17
+
17
18
  hex_parameters = reader.read_bytes(parameter_size).hex().upper()
18
19
  encoded_parameters = [
19
- f"{hex_parameters[i : i + 2]}" for i in range(0, len(hex_parameters), 2)
20
+ int(f"{hex_parameters[i : i + 2]}", 16) for i in range(0, len(hex_parameters), 2)
20
21
  ]
21
22
  return encoded_parameters
22
23
 
@@ -42,10 +43,10 @@ def read_decoded_parameters(
42
43
  return LMS_FieldMap(parameters)
43
44
 
44
45
 
45
- def write_encoded_parameters(writer: FileWriter, parameters: list[str]) -> None:
46
+ def write_encoded_parameters(writer: FileWriter, parameters: list[int]) -> None:
46
47
  writer.write_uint16(len(parameters))
47
48
  for param in parameters:
48
- writer.write_bytes(bytes.fromhex(param))
49
+ writer.write_bytes(int.to_bytes(param, 1))
49
50
 
50
51
 
51
52
  def write_decoded_parameters(
@@ -92,7 +92,7 @@ def _read_decoded_tag(
92
92
  return LMS_DecodedTag(definition, parameters)
93
93
 
94
94
 
95
- def write_tag(writer: FileWriter, tag: LMS_EncodedTag | LMS_DecodedTag) -> None:
95
+ def write_tag(writer: FileWriter, tag: LMS_ControlTag) -> None:
96
96
  start_indicator, close_indicator = get_tag_indicator(
97
97
  writer.encoding, writer.is_big_endian
98
98
  )
@@ -5,7 +5,7 @@ from lms.message.definitions.field.lms_field import LMS_FieldMap
5
5
  from lms.message.tag.lms_tagexceptions import LMS_InvalidTagFormatError
6
6
  from lms.titleconfig.definitions.tags import TagConfig, TagDefinition
7
7
 
8
- TAG_PADDING_CHAR = "CD"
8
+ TAG_PADDING_CHAR = 0xCD
9
9
 
10
10
 
11
11
  class LMS_EncodedTag:
@@ -25,7 +25,7 @@ class LMS_EncodedTag:
25
25
  self,
26
26
  group_id: int,
27
27
  tag_index: int,
28
- parameters: list[str] | None = None,
28
+ parameters: list[int] | None = None,
29
29
  is_fallback: bool = False,
30
30
  is_closing: bool = False,
31
31
  ):
@@ -50,13 +50,13 @@ class LMS_EncodedTag:
50
50
  return self._tag_index
51
51
 
52
52
  @property
53
- def parameters(self) -> list[str] | None:
54
- """The list of hex string parameters."""
53
+ def parameters(self) -> list[int] | None:
54
+ """The list of parameters."""
55
55
  return self._parameters
56
56
 
57
57
  @property
58
58
  def is_fallback(self) -> bool:
59
- """Determines if the tag is a fallback tag."""
59
+ """Determines if the tag is a fallback tag. Fallback tags have a '!' prefix before the group index."""
60
60
  return self._is_fallback
61
61
 
62
62
  @property
@@ -73,7 +73,8 @@ class LMS_EncodedTag:
73
73
  if self._parameters is None:
74
74
  return f"[{self.group_id}:{self.tag_index}]"
75
75
 
76
- parameters = "-".join(self._parameters)
76
+ # 02x format to convert any int to hexadecimal uppercase
77
+ parameters = "-".join(format(param, "02x").upper() for param in self._parameters)
77
78
  return f"[{fallback_prefix}{self.group_id}:{self.tag_index} {parameters}]"
78
79
 
79
80
  @classmethod
@@ -103,10 +104,13 @@ class LMS_EncodedTag:
103
104
 
104
105
  if not cls.PARAMETER_FORMAT.match(param_str):
105
106
  raise LMS_InvalidTagFormatError(
106
- f"Malformed parameters located in tag: '{tag}'"
107
+ f"Parameters located in the tag '{tag}'. Ensure all parameters are separated by dashes."
107
108
  )
108
109
 
109
- parameters = [param.strip().upper() for param in param_str.split("-")]
110
+ try:
111
+ parameters = [int(param.strip().upper()) for param in param_str.split("-")]
112
+ except ValueError:
113
+ raise LMS_InvalidTagFormatError(f"Malformed parameters in tag '{tag}'. Ensure all the parameters are integers.")
110
114
 
111
115
  # Ensure 0xCD padding is added
112
116
  if len(parameters) % 2 == 1:
@@ -12,7 +12,7 @@ class MSBP:
12
12
  https://nintendo-formats.com/libs/lms/msbp.html.
13
13
  """
14
14
 
15
- MAGIC = "MsjPrjBn"
15
+ MAGIC = "MsgPrjBn"
16
16
 
17
17
  def __init__(
18
18
  self,
@@ -15,7 +15,6 @@ from lms.project.section.syl3 import read_styles
15
15
  from lms.project.section.tag2 import read_tag2
16
16
  from lms.project.section.tgg2 import read_tgg2
17
17
  from lms.project.section.tgp2 import read_tgp2
18
- from PylibMS.lms.project.definitions.color import LMS_Color
19
18
 
20
19
  __all__ = ["read_msbp", "read_msbp_path"]
21
20
 
@@ -56,7 +56,7 @@ class TagConfig:
56
56
 
57
57
  @dataclass(frozen=True)
58
58
  class TagDefinition:
59
- """Class that represents a signle definition in the tag config."""
59
+ """Class that represents a single definition in the tag config."""
60
60
 
61
61
  group_name: str
62
62
  group_id: int
@@ -4295,7 +4295,7 @@ attribute_definitions:
4295
4295
  description: ''
4296
4296
  definitions:
4297
4297
  - name: FileID
4298
- description: ''
4298
+ description: 'The ID (located in the filename) of for the texture of the item.'
4299
4299
  datatype: int16
4300
4300
  - name: RegionJP
4301
4301
  description: 'Flag that determines if the item is enabled for Japenese regions of the game.'
@@ -4322,28 +4322,28 @@ attribute_definitions:
4322
4322
  - Disable
4323
4323
  - Enable
4324
4324
  - name: Price
4325
- description: ''
4325
+ description: 'The price of the item in the JP version.'
4326
4326
  datatype: uint32
4327
4327
  - name: PriceUS
4328
- description: ''
4328
+ description: 'The price of the item in the US version.'
4329
4329
  datatype: uint32
4330
4330
  - name: PriceEU
4331
- description: ''
4331
+ description: 'The price of the item in the EU version.'
4332
4332
  datatype: uint32
4333
4333
  - name: PriceKR
4334
- description: ''
4334
+ description: 'The price of the item in the KR version.'
4335
4335
  datatype: uint32
4336
4336
  - name: Shop
4337
- description: ''
4338
- datatype: uint8
4337
+ description: 'Determines if the item can be sold at the shop.'
4338
+ datatype: bool
4339
4339
  - name: Mii
4340
4340
  description: ''
4341
- datatype: uint8
4341
+ datatype: bool
4342
4342
  - name: Food_FirstDaily
4343
4343
  description: ''
4344
4344
  datatype: uint8
4345
4345
  - name: BoxSize
4346
- description: ''
4346
+ description: 'How large the the item texture will appear when displayed.'
4347
4347
  datatype: list
4348
4348
  list_items:
4349
4349
  - BoxSize_None
@@ -4351,7 +4351,7 @@ attribute_definitions:
4351
4351
  - BoxSize_Small
4352
4352
  - BoxSize_Big
4353
4353
  - name: Effect
4354
- description: ''
4354
+ description: 'The steam effect of the item.'
4355
4355
  datatype: list
4356
4356
  list_items:
4357
4357
  - None
@@ -4359,7 +4359,7 @@ attribute_definitions:
4359
4359
  - Steam01
4360
4360
  - Steam02
4361
4361
  - name: Food_Type_JP
4362
- description: ''
4362
+ description: 'The food type of the item for the JP version.'
4363
4363
  datatype: list
4364
4364
  list_items:
4365
4365
  - Japanese
@@ -4368,7 +4368,7 @@ attribute_definitions:
4368
4368
  - Dessert
4369
4369
  - Drink
4370
4370
  - name: Food_Type_USEU
4371
- description: ''
4371
+ description: 'The food type of the item for both EU and US versions.'
4372
4372
  datatype: list
4373
4373
  list_items:
4374
4374
  - MainDishes
@@ -4376,7 +4376,7 @@ attribute_definitions:
4376
4376
  - Refreshments
4377
4377
  - Drinks
4378
4378
  - name: Food_Type_KR
4379
- description: ''
4379
+ description: 'The food type of the item for the KR version.'
4380
4380
  datatype: list
4381
4381
  list_items:
4382
4382
  - Korean
@@ -4392,7 +4392,7 @@ attribute_definitions:
4392
4392
  - Quantity_Mid
4393
4393
  - Quantity_High
4394
4394
  - name: Food_Season
4395
- description: ''
4395
+ description: 'Determines which season the item falls into.'
4396
4396
  datatype: list
4397
4397
  list_items:
4398
4398
  - Season_None
@@ -4401,94 +4401,94 @@ attribute_definitions:
4401
4401
  - Season_Autumn
4402
4402
  - Season_Winter
4403
4403
  - name: Food_Attr_Sweet
4404
- description: ''
4404
+ description: 'Flag that determines if the food is considered sweet.'
4405
4405
  datatype: bool
4406
4406
  - name: Food_Attr_Spicy
4407
- description: ''
4407
+ description: 'Flag that determines if the food is considered spicy.'
4408
4408
  datatype: bool
4409
4409
  - name: Food_Attr_Salty
4410
- description: ''
4410
+ description: 'Flag that determines if the food is considered salty.'
4411
4411
  datatype: bool
4412
4412
  - name: Food_Attr_Sour
4413
- description: ''
4413
+ description: 'Flag that determines if the food is considered sour.'
4414
4414
  datatype: bool
4415
4415
  - name: Food_Attr_Oily
4416
- description: ''
4416
+ description: 'Flag that determines if the food is considered oily.'
4417
4417
  datatype: bool
4418
4418
  - name: Food_Attr_Cool
4419
- description: ''
4419
+ description: 'Flag that determines if the food is considered cool.'
4420
4420
  datatype: bool
4421
4421
  - name: Food_Attr_Hot
4422
- description: ''
4422
+ description: 'Flag that determines if the food is considered hot.'
4423
4423
  datatype: bool
4424
4424
  - name: Food_Attr_Awful
4425
- description: ''
4425
+ description: 'Flag that determines if the food is considered dog water.'
4426
4426
  datatype: bool
4427
4427
  - name: Food_Attr_Confectionery
4428
- description: ''
4428
+ description: 'Flag that determines if the food is considered a confectionery.'
4429
4429
  datatype: bool
4430
4430
  - name: Food_Attr_Fruit
4431
- description: ''
4431
+ description: 'Flag that determines if the food is a fruit or has fruits as a main ingredient..'
4432
4432
  datatype: bool
4433
4433
  - name: Food_Attr_Vegetable
4434
- description: ''
4434
+ description: 'Flag that determines if the food is a vegetable or has vegetables as a main ingredient.'
4435
4435
  datatype: bool
4436
4436
  - name: Food_Attr_Rice
4437
- description: ''
4437
+ description: 'Flag that determines if the food is rice or has rice as a main ingredient.'
4438
4438
  datatype: bool
4439
4439
  - name: Food_Attr_Bread
4440
- description: ''
4440
+ description: 'Flag that determines if the food is bread or has bread as a main ingredient.'
4441
4441
  datatype: bool
4442
4442
  - name: Food_Attr_Meat
4443
- description: ''
4443
+ description: 'Flag that determines if the food is meat or has meat as a main ingredient.'
4444
4444
  datatype: bool
4445
4445
  - name: Food_Attr_Fish
4446
- description: ''
4446
+ description: 'Flag that determines if the food is fish or has fish as a main ingredient.'
4447
4447
  datatype: bool
4448
4448
  - name: Food_Attr_Egg
4449
- description: ''
4449
+ description: 'Flag that determines if the food is egg or has egg as a main ingredient.'
4450
4450
  datatype: bool
4451
4451
  - name: Food_Attr_Japanese
4452
- description: ''
4452
+ description: 'Flag that determines if the food considered Japanese.'
4453
4453
  datatype: bool
4454
4454
  - name: Food_Attr_Western
4455
- description: ''
4455
+ description: 'Flag that determines if the food is considered western.'
4456
4456
  datatype: bool
4457
4457
  - name: Food_Attr_Chinese
4458
- description: ''
4458
+ description: 'Flag that determines if the food is considered Chinese.'
4459
4459
  datatype: bool
4460
4460
  - name: Food_Attr_Italian
4461
- description: ''
4461
+ description: 'Flag that determines if the food is considered Italian.'
4462
4462
  datatype: bool
4463
4463
  - name: Food_Attr_Noodle
4464
- description: ''
4464
+ description: 'Flag that determines if the food has noodles as a main ingredient.'
4465
4465
  datatype: bool
4466
4466
  - name: Food_Attr_Luxury
4467
- description: ''
4467
+ description: 'Flag that determines if the food is considered luxurious'
4468
4468
  datatype: bool
4469
4469
  - name: Food_Attr_American
4470
- description: ''
4470
+ description: 'Flag that determines if the food is considered American.'
4471
4471
  datatype: bool
4472
4472
  - name: Food_Attr_Asian
4473
- description: ''
4473
+ description: 'Flag that determines if the food is considered Asian.'
4474
4474
  datatype: bool
4475
4475
  - name: Food_Attr_British
4476
- description: ''
4476
+ description: 'Flag that determines if the food is considered British.'
4477
4477
  datatype: bool
4478
4478
  - name: Food_Attr_French
4479
- description: ''
4479
+ description: 'Flag that determines if the food is considered French.'
4480
4480
  datatype: bool
4481
4481
  - name: Food_Attr_German
4482
- description: ''
4482
+ description: 'Flag that determines if the food is considered German.'
4483
4483
  datatype: bool
4484
4484
  - name: Food_Attr_Spanish
4485
- description: ''
4485
+ description: 'Flag that determines if the food is considered Spanish.'
4486
4486
  datatype: bool
4487
4487
  - name: Food_Attr_Junk
4488
- description: ''
4488
+ description: 'Flag that determines if the food is considered as junk food.'
4489
4489
  datatype: bool
4490
4490
  - name: Food_Attr_Korean
4491
- description: ''
4491
+ description: 'Flag that determines if the food is considered Korean.'
4492
4492
  datatype: bool
4493
4493
  - name: Food_NTR_ID
4494
4494
  description: ''
@@ -4574,7 +4574,7 @@ attribute_definitions:
4574
4574
  - '14'
4575
4575
  - '15'
4576
4576
  - name: Food_Se_Type
4577
- description: ''
4577
+ description: 'The sound effect played when the food is consumed.'
4578
4578
  datatype: list
4579
4579
  list_items:
4580
4580
  - SE_MII_DRINK
@@ -4598,7 +4598,7 @@ attribute_definitions:
4598
4598
  description: ''
4599
4599
  datatype: uint8
4600
4600
  - name: Treasure_Type
4601
- description: ''
4601
+ description: 'The type the treasure falls into.'
4602
4602
  datatype: list
4603
4603
  list_items:
4604
4604
  - TreasureToken
@@ -4636,7 +4636,7 @@ attribute_definitions:
4636
4636
  description: ''
4637
4637
  datatype: int32
4638
4638
  - name: Food_FirstCatalog
4639
- description: ''
4639
+ description: 'Flag that determines if the food will be displayed on the first shop event played on a new save.'
4640
4640
  datatype: bool
4641
4641
  - name: ForIslanderOnly
4642
4642
  description: ''
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "PyLibMS"
7
- version = "3.2.3"
7
+ version = "3.2.5"
8
8
  requires-python = ">=3.12"
9
9
  description = "Python library built for the libMessageStudio (LMS) proprietary file formats from Nintendo. Supports MSBT, MSBP, and MSBF."
10
10
  readme = "README.md"
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes