ff9mapkit 1.0.0b3__py3-none-any.whl

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 (193) hide show
  1. ff9mapkit/__init__.py +18 -0
  2. ff9mapkit/__main__.py +36 -0
  3. ff9mapkit/_animdb.py +2994 -0
  4. ff9mapkit/_animdb_all.py +14125 -0
  5. ff9mapkit/_fieldtable.py +1516 -0
  6. ff9mapkit/_fieldtext.py +845 -0
  7. ff9mapkit/_held_poses.py +44 -0
  8. ff9mapkit/_itemdb.py +65 -0
  9. ff9mapkit/_modeldb.py +725 -0
  10. ff9mapkit/_narrowmap_data.py +10 -0
  11. ff9mapkit/_npcparams.py +634 -0
  12. ff9mapkit/_regen_animdb.py +72 -0
  13. ff9mapkit/_regen_animdb_all.py +66 -0
  14. ff9mapkit/_regen_fieldtable.py +95 -0
  15. ff9mapkit/_regen_fieldtext.py +66 -0
  16. ff9mapkit/_regen_modeldb.py +67 -0
  17. ff9mapkit/_regen_npcparams.py +123 -0
  18. ff9mapkit/_regen_scenedb.py +57 -0
  19. ff9mapkit/_scenedb.py +869 -0
  20. ff9mapkit/abilities.py +225 -0
  21. ff9mapkit/animations.py +120 -0
  22. ff9mapkit/archetypes.py +218 -0
  23. ff9mapkit/areatitle.py +76 -0
  24. ff9mapkit/battle/__init__.py +21 -0
  25. ff9mapkit/battle/abilityfeatures.py +294 -0
  26. ff9mapkit/battle/actiondelta.py +441 -0
  27. ff9mapkit/battle/aiauthor.py +305 -0
  28. ff9mapkit/battle/ailint.py +140 -0
  29. ff9mapkit/battle/aipatch.py +175 -0
  30. ff9mapkit/battle/battleai.py +148 -0
  31. ff9mapkit/battle/battlecsv.py +390 -0
  32. ff9mapkit/battle/battlepatch.py +395 -0
  33. ff9mapkit/battle/build.py +558 -0
  34. ff9mapkit/battle/camera_codec.py +332 -0
  35. ff9mapkit/battle/camera_data.py +128 -0
  36. ff9mapkit/battle/characterdelta.py +789 -0
  37. ff9mapkit/battle/event_data.py +72 -0
  38. ff9mapkit/battle/extract.py +540 -0
  39. ff9mapkit/battle/fbx.py +223 -0
  40. ff9mapkit/battle/reskin.py +149 -0
  41. ff9mapkit/battle/scene_codec.py +314 -0
  42. ff9mapkit/battle/scene_data.py +369 -0
  43. ff9mapkit/battle/scenelint.py +125 -0
  44. ff9mapkit/battle/seqasm.py +131 -0
  45. ff9mapkit/battle/seqauthor.py +220 -0
  46. ff9mapkit/battle/seqcodec.py +300 -0
  47. ff9mapkit/battle/seqdis.py +106 -0
  48. ff9mapkit/battle/seqpatch.py +137 -0
  49. ff9mapkit/battle_bgm.py +133 -0
  50. ff9mapkit/binutils.py +60 -0
  51. ff9mapkit/build.py +5445 -0
  52. ff9mapkit/campaign.py +1276 -0
  53. ff9mapkit/catalog.py +316 -0
  54. ff9mapkit/chain.py +358 -0
  55. ff9mapkit/cli.py +3114 -0
  56. ff9mapkit/config.py +360 -0
  57. ff9mapkit/content/__init__.py +13 -0
  58. ff9mapkit/content/areatitle.py +36 -0
  59. ff9mapkit/content/ate.py +118 -0
  60. ff9mapkit/content/camera.py +123 -0
  61. ff9mapkit/content/chest.py +186 -0
  62. ff9mapkit/content/choice.py +163 -0
  63. ff9mapkit/content/conductor.py +217 -0
  64. ff9mapkit/content/cutscene.py +290 -0
  65. ff9mapkit/content/encounter.py +41 -0
  66. ff9mapkit/content/entry_settle.py +50 -0
  67. ff9mapkit/content/equipment.py +93 -0
  68. ff9mapkit/content/event.py +191 -0
  69. ff9mapkit/content/gateway.py +101 -0
  70. ff9mapkit/content/inventory.py +59 -0
  71. ff9mapkit/content/itemdata.py +644 -0
  72. ff9mapkit/content/itemtext.py +168 -0
  73. ff9mapkit/content/jump.py +114 -0
  74. ff9mapkit/content/ladder.py +633 -0
  75. ff9mapkit/content/movement.py +53 -0
  76. ff9mapkit/content/music.py +97 -0
  77. ff9mapkit/content/npc.py +348 -0
  78. ff9mapkit/content/object.py +340 -0
  79. ff9mapkit/content/onentry.py +135 -0
  80. ff9mapkit/content/party.py +111 -0
  81. ff9mapkit/content/pathfind.py +138 -0
  82. ff9mapkit/content/platform.py +314 -0
  83. ff9mapkit/content/player.py +168 -0
  84. ff9mapkit/content/prop.py +75 -0
  85. ff9mapkit/content/region.py +340 -0
  86. ff9mapkit/content/reinit.py +59 -0
  87. ff9mapkit/content/savepoint.py +90 -0
  88. ff9mapkit/content/shop.py +178 -0
  89. ff9mapkit/content/sps_trigger.py +66 -0
  90. ff9mapkit/content/startup.py +71 -0
  91. ff9mapkit/content/synthesis.py +106 -0
  92. ff9mapkit/content/text.py +183 -0
  93. ff9mapkit/content/textcarry.py +290 -0
  94. ff9mapkit/content/verbatim.py +86 -0
  95. ff9mapkit/content/walkmesh_hotfix.py +38 -0
  96. ff9mapkit/data/__init__.py +48 -0
  97. ff9mapkit/data/_regen_provenance.py +142 -0
  98. ff9mapkit/data/provenance/blank.es.patch +1 -0
  99. ff9mapkit/data/provenance/blank.fr.patch +1 -0
  100. ff9mapkit/data/provenance/blank.gr.patch +1 -0
  101. ff9mapkit/data/provenance/blank.it.patch +1 -0
  102. ff9mapkit/data/provenance/blank.jp.patch +1 -0
  103. ff9mapkit/data/provenance/blank.uk.patch +1 -0
  104. ff9mapkit/data/provenance/blank.us.patch +1 -0
  105. ff9mapkit/data/provenance/manifest.json +65 -0
  106. ff9mapkit/data/provenance/region_template.patch +1 -0
  107. ff9mapkit/data/reference_arcs.toml +89 -0
  108. ff9mapkit/data/region_catalog.toml +593 -0
  109. ff9mapkit/deploystack.py +358 -0
  110. ff9mapkit/dialogue.py +803 -0
  111. ff9mapkit/eb/__init__.py +12 -0
  112. ff9mapkit/eb/_exprtable.py +59 -0
  113. ff9mapkit/eb/_membertable.py +38 -0
  114. ff9mapkit/eb/_optables.py +537 -0
  115. ff9mapkit/eb/_regen_optables.py +76 -0
  116. ff9mapkit/eb/cmdasm.py +323 -0
  117. ff9mapkit/eb/disasm.py +332 -0
  118. ff9mapkit/eb/edit.py +439 -0
  119. ff9mapkit/eb/exprasm.py +158 -0
  120. ff9mapkit/eb/model.py +178 -0
  121. ff9mapkit/eb/opcodes.py +463 -0
  122. ff9mapkit/eblint.py +177 -0
  123. ff9mapkit/editor/__init__.py +20 -0
  124. ff9mapkit/editor/app.py +950 -0
  125. ff9mapkit/editor/battle_forms.py +240 -0
  126. ff9mapkit/editor/breadcrumb.py +89 -0
  127. ff9mapkit/editor/dialogs.py +116 -0
  128. ff9mapkit/editor/feedback.py +208 -0
  129. ff9mapkit/editor/forms.py +632 -0
  130. ff9mapkit/editor/graphview.py +350 -0
  131. ff9mapkit/editor/jobs.py +342 -0
  132. ff9mapkit/editor/model.py +243 -0
  133. ff9mapkit/editor/picker.py +120 -0
  134. ff9mapkit/editor/theme.py +212 -0
  135. ff9mapkit/eventscan.py +1441 -0
  136. ff9mapkit/extract.py +2279 -0
  137. ff9mapkit/flags.py +693 -0
  138. ff9mapkit/forkreport.py +1383 -0
  139. ff9mapkit/hub.py +477 -0
  140. ff9mapkit/idgated.py +101 -0
  141. ff9mapkit/infohub.py +580 -0
  142. ff9mapkit/items.py +63 -0
  143. ff9mapkit/itemstats.py +346 -0
  144. ff9mapkit/journey.py +1902 -0
  145. ff9mapkit/keyitems.py +93 -0
  146. ff9mapkit/logic_add.py +632 -0
  147. ff9mapkit/logic_edit.py +728 -0
  148. ff9mapkit/logic_map.py +526 -0
  149. ff9mapkit/pack.py +175 -0
  150. ff9mapkit/playerswap.py +231 -0
  151. ff9mapkit/prop_archetypes.py +228 -0
  152. ff9mapkit/provision.py +282 -0
  153. ff9mapkit/refarc.py +825 -0
  154. ff9mapkit/save.py +337 -0
  155. ff9mapkit/save_items.py +1673 -0
  156. ff9mapkit/scene/__init__.py +11 -0
  157. ff9mapkit/scene/arena.py +63 -0
  158. ff9mapkit/scene/bgart.py +140 -0
  159. ff9mapkit/scene/bgi.py +732 -0
  160. ff9mapkit/scene/bgs.py +174 -0
  161. ff9mapkit/scene/bgx.py +185 -0
  162. ff9mapkit/scene/cam.py +345 -0
  163. ff9mapkit/scene/guide.py +311 -0
  164. ff9mapkit/scene/paint.py +506 -0
  165. ff9mapkit/scene/placeholder.py +107 -0
  166. ff9mapkit/sjbinary.py +285 -0
  167. ff9mapkit/sps/__init__.py +17 -0
  168. ff9mapkit/sps/author.py +294 -0
  169. ff9mapkit/sps/catalog.py +88 -0
  170. ff9mapkit/sps/codec.py +264 -0
  171. ff9mapkit/sps/edit.py +184 -0
  172. ff9mapkit/sps/lint.py +58 -0
  173. ff9mapkit/sps/render.py +116 -0
  174. ff9mapkit/sps/templates.py +47 -0
  175. ff9mapkit/sps/texture.py +131 -0
  176. ff9mapkit/walkmesh_hotfixes.py +163 -0
  177. ff9mapkit/workspace/__init__.py +18 -0
  178. ff9mapkit/workspace/battledoc.py +985 -0
  179. ff9mapkit/workspace/builddoc.py +607 -0
  180. ff9mapkit/workspace/forms_qt.py +586 -0
  181. ff9mapkit/workspace/importdoc.py +665 -0
  182. ff9mapkit/workspace/mapview.py +131 -0
  183. ff9mapkit/workspace/palette.py +85 -0
  184. ff9mapkit/workspace/savedoc.py +664 -0
  185. ff9mapkit/workspace/shell.py +6907 -0
  186. ff9mapkit/workspace/style.py +105 -0
  187. ff9mapkit/workspace/tuningdialog.py +223 -0
  188. ff9mapkit-1.0.0b3.dist-info/METADATA +155 -0
  189. ff9mapkit-1.0.0b3.dist-info/RECORD +193 -0
  190. ff9mapkit-1.0.0b3.dist-info/WHEEL +5 -0
  191. ff9mapkit-1.0.0b3.dist-info/entry_points.txt +5 -0
  192. ff9mapkit-1.0.0b3.dist-info/licenses/LICENSE +31 -0
  193. ff9mapkit-1.0.0b3.dist-info/top_level.txt +1 -0
@@ -0,0 +1,44 @@
1
+ """Generated by `tools/extract_attach_poses.py --build-kit` -- do not hand-edit.
2
+
3
+ HELD_POSES[(carrier_model_id, prop_model_id)] = (bone, held_pose, holder_pose): which bone a
4
+ character holds a prop at, the prop's held orientation, and the HOLDER's own holding pose --
5
+ harvested from every AttachObject in shipping fields. Powers `[[npc]] holds = "..."` (poses
6
+ the prop AND the holder). Provenance-clean (numeric ids only, no game bytes).
7
+ """
8
+
9
+ HELD_POSES = {
10
+ (8, 222): (16, 10359, 148), # VIV holds TKT
11
+ (66, 275): (26, 2471, 4696), # RAS holds HDB
12
+ (98, 243): (13, 4470, 3511), # ZDN holds SWD
13
+ (98, 277): (12, 10643, 200), # ZDN holds TUR
14
+ (108, 628): (11, 4353, 13372), # HUM holds LG1
15
+ (109, 243): (6, 4470, 3311), # MRC holds SWD
16
+ (117, 234): (17, 5010, 6535), # JJY holds CUP
17
+ (171, 489): (19, 8006, 2266), # TOT holds WRE
18
+ (173, 223): (14, 7077, 85), # BAR holds GRS
19
+ (173, 411): (14, 813, 85), # BAR holds BON
20
+ (189, 234): (7, 6868, 8116), # CSM holds CUP
21
+ (192, 223): (12, 935, 805), # FRJ holds GRS
22
+ (199, 258): (19, 13331, 2904), # MOG holds LTT
23
+ (204, 555): (16, 1894, 2978), # BTX holds STQ
24
+ (220, 258): (19, 9580, 2904), # MOG holds LTT
25
+ (306, 98): (21, 10633, 1484), # GRG holds ZDN
26
+ (368, 377): (29, 1894, 8344), # SBW holds LNW
27
+ (418, 226): (11, 3349, 3410), # TGR holds BLL
28
+ (422, 234): (11, 8238, 7285), # DOM holds CUP
29
+ (443, 258): (23, 13331, 7503), # EIK holds LTT
30
+ (551, 234): (11, 8238, 7285), # DOM holds CUP
31
+ (600, 277): (6, 4960, 2506), # CSM holds TUR
32
+ (658, 490): (25, 13160, 14367), # STN holds ZBR
33
+ (5464, 31): (15, 1027, 780), # BAK holds DGR
34
+ (5464, 35): (6, 1038, 780), # BAK holds DBR
35
+ (5467, 227): (13, 1880, 1321), # BLN holds BIN
36
+ (5467, 243): (14, 4470, 1953), # BLN holds SWD
37
+ (5467, 258): (14, 2479, 462), # BLN holds LTT
38
+ (5489, 243): (16, 4470, 2001), # STN holds SWD
39
+ (5492, 226): (11, 3349, 3414), # TGR holds BLL
40
+ (5492, 577): (11, 3349, 3414), # TGR holds BLL
41
+ (5492, 578): (11, 3349, 3410), # TGR holds BLL
42
+ (5492, 579): (11, 3349, 3410), # TGR holds BLL
43
+ (5501, 243): (14, 4470, 1192), # BAK holds SWD
44
+ }
ff9mapkit/_itemdb.py ADDED
@@ -0,0 +1,65 @@
1
+ """FF9 item id <-> name, baked from Memoria's open-source ``RegularItem`` enum (Memoria.Data) -- NOT
2
+ game data (it's the same id table Memoria publishes in source; see docs/PROVENANCE.md). Used by
3
+ :mod:`ff9mapkit.items` so authors can write ``give_item = ["Potion", 1]`` instead of memorizing 236.
4
+
5
+ Regenerate from a Memoria checkout by transcribing
6
+ ``Memoria/Assembly-CSharp/Memoria/Data/Battle/RegularItem.cs``.
7
+ """
8
+
9
+ from __future__ import annotations
10
+
11
+ # id -> canonical PascalCase name (weapons 0-87, armor/add-ons 88-223, gems 224-235, items 236-254).
12
+ ITEMS = {
13
+ 0: "Hammer", 1: "Dagger", 2: "MageMasher", 3: "MythrilDagger", 4: "Gladius", 5: "ZorlinShape",
14
+ 6: "Orichalcon", 7: "ButterflySword", 8: "TheOgre", 9: "Exploda", 10: "RuneTooth",
15
+ 11: "AngelBless", 12: "Sargatanas", 13: "Masamune", 14: "TheTower", 15: "UltimaWeapon",
16
+ 16: "Broadsword", 17: "IronSword", 18: "MythrilSword", 19: "BloodSword", 20: "IceBrand",
17
+ 21: "CoralSword", 22: "DiamondSword", 23: "FlameSaber", 24: "RuneBlade", 25: "Defender",
18
+ 26: "SaveTheQueen", 27: "UltimaSword", 28: "Excalibur", 29: "Ragnarok", 30: "ExcaliburII",
19
+ 31: "Javelin", 32: "MythrilSpear", 33: "Partisan", 34: "IceLance", 35: "Trident",
20
+ 36: "HeavyLance", 37: "Obelisk", 38: "HolyLance", 39: "KainLance", 40: "DragonHair",
21
+ 41: "CatClaws", 42: "PoisonKnuckles", 43: "MythrilClaws", 44: "ScissorFangs", 45: "DragonClaws",
22
+ 46: "TigerFangs", 47: "Avenger", 48: "KaiserKnuckles", 49: "DuelClaws", 50: "RuneClaws",
23
+ 51: "AirRacket", 52: "MultinaRacket", 53: "MagicRacket", 54: "MythrilRacket", 55: "PriestRacket",
24
+ 56: "TigerRacket", 57: "Rod", 58: "MythrilRod", 59: "StardustRod", 60: "HealingRod",
25
+ 61: "AsuraRod", 62: "WizardRod", 63: "WhaleWhisker", 64: "GolemFlute", 65: "LamiaFlute",
26
+ 66: "FairyFlute", 67: "Hamelin", 68: "SirenFlute", 69: "AngelFlute", 70: "MageStaff",
27
+ 71: "FlameStaff", 72: "IceStaff", 73: "LightningStaff", 74: "OakStaff", 75: "CypressPile",
28
+ 76: "OctagonRod", 77: "HighMageStaff", 78: "MaceOfZeus", 79: "Fork", 80: "NeedleFork",
29
+ 81: "MythrilFork", 82: "SilverFork", 83: "BistroFork", 84: "GastroFork", 85: "Pinwheel",
30
+ 86: "RisingSun", 87: "WingEdge", 88: "Wrist", 89: "LeatherWrist", 90: "GlassArmlet",
31
+ 91: "BoneWrist", 92: "MythrilArmlet", 93: "MagicArmlet", 94: "ChimeraArmlet", 95: "EgoistArmlet",
32
+ 96: "NKaiArmlet", 97: "JadeArmlet", 98: "ThiefGloves", 99: "DragonWrist", 100: "PowerWrist",
33
+ 101: "Bracer", 102: "BronzeGloves", 103: "SilverGloves", 104: "MythrilGloves",
34
+ 105: "ThunderGloves", 106: "DiamondGloves", 107: "VenetiaShield", 108: "DefenseGloves",
35
+ 109: "GenjiGloves", 110: "AegisGloves", 111: "Gauntlets", 112: "LeatherHat", 113: "StrawHat",
36
+ 114: "FeatherHat", 115: "SteepledHat", 116: "Headgear", 117: "MagusHat", 118: "Bandana",
37
+ 119: "MageHat", 120: "LamiaTiara", 121: "RitualHat", 122: "TwistHeadband", 123: "MantraBand",
38
+ 124: "DarkHat", 125: "GreenBeret", 126: "BlackHood", 127: "RedHat", 128: "GoldenHairpin",
39
+ 129: "Coronet", 130: "FlashHat", 131: "AdamanHat", 132: "ThiefHat", 133: "HolyMiter",
40
+ 134: "GoldenSkullcap", 135: "Circlet", 136: "RubberHelm", 137: "BronzeHelm", 138: "IronHelm",
41
+ 139: "Barbut", 140: "MythrilHelm", 141: "GoldHelm", 142: "CrossHelm", 143: "DiamondHelm",
42
+ 144: "PlatinumHelm", 145: "KaiserHelm", 146: "GenjiHelmet", 147: "GrandHelm", 148: "AlohaTshirt",
43
+ 149: "LeatherShirt", 150: "SilkShirt", 151: "LeatherPlate", 152: "BronzeVest", 153: "ChainPlate",
44
+ 154: "MythrilVest", 155: "AdamanVest", 156: "MagicianCloak", 157: "SurvivalVest",
45
+ 158: "Brigandine", 159: "JudoUniform", 160: "PowerVest", 161: "GaiaGear", 162: "DemonVest",
46
+ 163: "MinervaPlate", 164: "NinjaGear", 165: "DarkGear", 166: "RubberSuit", 167: "BraveSuit",
47
+ 168: "CottonRobe", 169: "SilkRobe", 170: "MagicianRobe", 171: "GluttonRobe", 172: "WhiteRobe",
48
+ 173: "BlackRobe", 174: "LightRobe", 175: "RobeOfLords", 176: "TinArmor", 177: "BronzeArmor",
49
+ 178: "LinenCuirass", 179: "ChainMail", 180: "MythrilArmor", 181: "PlateMail", 182: "GoldArmor",
50
+ 183: "ShieldArmor", 184: "DemonMail", 185: "DiamondArmor", 186: "PlatinaArmor",
51
+ 187: "CarabiniMail", 188: "DragonMail", 189: "GenjiArmor", 190: "Maximillian", 191: "GrandArmor",
52
+ 192: "DesertBoots", 193: "MagicianShoes", 194: "GerminasBoots", 195: "Sandals",
53
+ 196: "FeatherBoots", 197: "BattleBoots", 198: "RunningShoes", 199: "Anklet", 200: "PowerBelt",
54
+ 201: "BlackBelt", 202: "GlassBuckle", 203: "MadainRing", 204: "RosettaRing", 205: "ReflectRing",
55
+ 206: "CoralRing", 207: "PromistRing", 208: "RebirthRing", 209: "ProtectRing", 210: "PumicePiece",
56
+ 211: "Pumice", 212: "YellowScarf", 213: "GoldChoker", 214: "FairyEarrings", 215: "AngelEarrings",
57
+ 216: "PearlRouge", 217: "PearlArmlet", 218: "Cachusha", 219: "Barette", 220: "Extension",
58
+ 221: "Ribbon", 222: "MaidenPrayer", 223: "AncientAroma", 224: "Garnet", 225: "Amethyst",
59
+ 226: "Aquamarine", 227: "Diamond", 228: "Emerald", 229: "Moonstone", 230: "Ruby", 231: "Peridot",
60
+ 232: "Sapphire", 233: "Opal", 234: "Topaz", 235: "LapisLazuli", 236: "Potion", 237: "HiPotion",
61
+ 238: "Ether", 239: "Elixir", 240: "PhoenixDown", 241: "EchoScreen", 242: "Soft", 243: "Antidote",
62
+ 244: "EyeDrops", 245: "MagicTag", 246: "Vaccine", 247: "Remedy", 248: "Annoyntment",
63
+ 249: "PhoenixPinion", 250: "DarkMatter", 251: "GysahlGreens", 252: "DeadPepper", 253: "Tent",
64
+ 254: "Ore", 255: "NoItem",
65
+ }