pmdsky-debug-py 10.0.24__py3-none-any.whl → 10.0.26__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.
@@ -1 +1 @@
1
- RELEASE = "v0.10.0+0363689f5d"
1
+ RELEASE = "v0.10.0+9a6fbc4328"
pmdsky_debug_py/eu.py CHANGED
@@ -1785,7 +1785,7 @@ class EuArm9Functions:
1785
1785
  [0x200EB48],
1786
1786
  None,
1787
1787
  "TestItemAiFlag",
1788
- "Used to check the AI flags for an item. Tests bit 7 if r1 is 0, bit 6 if r1 is 1, bit\n5 otherwise.\n\nr0: item ID\nr1: bit_id\nreturn: bool",
1788
+ "Returns a boolean indicating whether the item is consumable, throwable at an ally, or throwable at an enemy, depending on item_flag.\nThe table used for this is inaccessible in the code, as it is loaded from a file in the ROM at runtime.\nBit 7 in the table corresponds to ITEM_FLAG_CONSUMABLE, bit 6 to ITEM_FLAG_THROWABLE_AT_ALLY, and bit 5 to ITEM_FLAG_THROWABLE_AT_ENEMY.\n\nr0: item_id enum\nr1: item_flag enum. Function will test a different allowed AI action depending on the value.\nreturn: bool",
1789
1789
  None,
1790
1790
  )
1791
1791
 
@@ -24188,6 +24188,15 @@ class EuOverlay29Functions:
24188
24188
  None,
24189
24189
  )
24190
24190
 
24191
+ SetDecoyAiTracker = Symbol(
24192
+ [0x1F3C4],
24193
+ [0x22FBF44],
24194
+ None,
24195
+ "SetDecoyAiTracker",
24196
+ "If there is a decoy on the floor that the entity can see, sets the entity's decoy_ai_tracker to 1 or 2,\ndepending on whether the attacker who caused the decoy status is on the team or not, respectively.\n\nr0: Entity pointer",
24197
+ None,
24198
+ )
24199
+
24191
24200
  CheckSpawnThreshold = Symbol(
24192
24201
  [0x1F478],
24193
24202
  [0x22FBFF8],
@@ -24602,6 +24611,33 @@ class EuOverlay29Functions:
24602
24611
  None,
24603
24612
  )
24604
24613
 
24614
+ CheckVariousStatuses2 = Symbol(
24615
+ [0x246C4],
24616
+ [0x2301244],
24617
+ None,
24618
+ "CheckVariousStatuses2",
24619
+ "Returns 0 if none of these conditions holds for the given entity:\nblinded (checked only if blind_check == 1),\nasleep, paused, infatuated, wrapping, wrapped, biding, petrified, or terrified.\n\nr0: Entity pointer\nr1: If true, return 1 if entity is blinded\nreturn: bool",
24620
+ None,
24621
+ )
24622
+
24623
+ CheckVariousConditions = Symbol(
24624
+ [0x249EC],
24625
+ [0x230156C],
24626
+ None,
24627
+ "CheckVariousConditions",
24628
+ "Returns 0 if none of these conditions holds for the given entity: is a rescue client,\ndoesn’t gain experience (a mission client/story teammate?), is a terrified non-team-leader,\nmeets any of the conditions in CheckVariousStatuses2 (with blind_check = 0), is charging a two-turn move.\n\nr0: Entity pointer\nreturn: bool",
24629
+ None,
24630
+ )
24631
+
24632
+ CheckVariousStatuses = Symbol(
24633
+ [0x24B5C],
24634
+ [0x23016DC],
24635
+ None,
24636
+ "CheckVariousStatuses",
24637
+ "Returns 0 if none of these conditions holds for the given entity: asleep, frozen, petrified, biding.\n\nr0: Entity pointer\nreturn: bool",
24638
+ None,
24639
+ )
24640
+
24605
24641
  CanMonsterMoveInDirection = Symbol(
24606
24642
  [0x24D24],
24607
24643
  [0x23018A4],
@@ -24827,6 +24863,15 @@ class EuOverlay29Functions:
24827
24863
  None,
24828
24864
  )
24829
24865
 
24866
+ MonsterCanThrowItems = Symbol(
24867
+ [0x26214],
24868
+ [0x2302D94],
24869
+ None,
24870
+ "MonsterCanThrowItems",
24871
+ "Returns a boolean indicating whether or not the given monster can throw items based on its monster id.\n\nr0: Monster pointer\nreturn: bool",
24872
+ None,
24873
+ )
24874
+
24830
24875
  UpdateStateFlags = Symbol(
24831
24876
  [0x2626C],
24832
24877
  [0x2302DEC],
@@ -25358,6 +25403,33 @@ class EuOverlay29Functions:
25358
25403
  None,
25359
25404
  )
25360
25405
 
25406
+ AiDecideUseItem = Symbol(
25407
+ [0x32808],
25408
+ [0x230F388],
25409
+ None,
25410
+ "AiDecideUseItem",
25411
+ "Decides whether or not an AI should use its held item and updates its action_data fields accordingly.\n\nr0: Entity pointer",
25412
+ None,
25413
+ )
25414
+
25415
+ GetPossibleAiThrownItemDirections = Symbol(
25416
+ [0x32CA4],
25417
+ [0x230F824],
25418
+ None,
25419
+ "GetPossibleAiThrownItemDirections",
25420
+ "If the entity can throw an item at a target in a certain direction,\nadds that direction to AI_THROWN_ITEM_DIRECTIONS and the probability of throwing it to AI_THROWN_ITEM_PROBABILITIES (if it is not already present).\nThe size of the arrays will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\nThe caller function will select the direction to throw the item by iterating through the array(s), rolling the probability, and then throwing in that direction if the roll succeeds.\nNothing will be thrown if all rolls fail.\n\nr0: Entity pointer\nr1: Integer in {1, 2}. If 1, target allies; if 2, target enemies.\nr2: Item struct pointer\nr3: If false, will call GetAiUseItemProbability to get the probability of throwing in a certain direction.\nIf true, the added probability will always be 100.",
25421
+ None,
25422
+ )
25423
+
25424
+ GetPossibleAiArcItemTargets = Symbol(
25425
+ [0x32F20],
25426
+ [0x230FAA0],
25427
+ None,
25428
+ "GetPossibleAiArcItemTargets",
25429
+ "Gets the positions of all targets that an AI can hit with an item thrown in an arc, such as a Gravelerock.\nThe number of positions in the array will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\n\nr0: Entity pointer\nr1: Item struct pointer\nr2: [output] Array of size 20 for storing position structs\nr3: If false, will roll GetAiUseItemProbability every time a position is checked and not add it if it rolls false.",
25430
+ None,
25431
+ )
25432
+
25361
25433
  TryNonLeaderItemPickUp = Symbol(
25362
25434
  [0x33058],
25363
25435
  [0x230FBD8],
@@ -26924,6 +26996,15 @@ class EuOverlay29Functions:
26924
26996
  None,
26925
26997
  )
26926
26998
 
26999
+ IsChargingAnyTwoTurnMove = Symbol(
27000
+ [0x48504],
27001
+ [0x2325084],
27002
+ None,
27003
+ "IsChargingAnyTwoTurnMove",
27004
+ "Returns a boolean indicating whether or not the given entity is charging any two-turn move.\n\nr0: Entity pointer\nr1: Unused boolean which was supposed to make function return true if the entity is under the effect of Charge (the Electric-type move).\n However, the conditional which uses this boolean will never be activated, as the loop will always terminate before getting to it.\nreturn: bool",
27005
+ None,
27006
+ )
27007
+
26927
27008
  HasMaxGinsengBoost99 = Symbol(
26928
27009
  [0x48680],
26929
27010
  [0x2325200],
@@ -29959,6 +30040,15 @@ class EuOverlay29Data:
29959
30040
  "struct exclusive_item_effect_id_8[8]",
29960
30041
  )
29961
30042
 
30043
+ AI_THROWN_ITEM_ACTION_CHOICE_COUNT = Symbol(
30044
+ [0x7777C],
30045
+ [0x23542FC],
30046
+ 0x4,
30047
+ "AI_THROWN_ITEM_ACTION_CHOICE_COUNT",
30048
+ "[Runtime] Used to store the number of positions output by GetPossibleAiArcItemTargets and the number of directions/probabilities output by GetPossibleAiThrownItemDirections.",
30049
+ "uint32_t",
30050
+ )
30051
+
29962
30052
  EXCL_ITEM_EFFECTS_EVASION_BOOST = Symbol(
29963
30053
  [0x77790],
29964
30054
  [0x2354310],
@@ -31695,6 +31785,33 @@ class EuRamData:
31695
31785
  "struct loaded_attack_sprite_data*",
31696
31786
  )
31697
31787
 
31788
+ AI_THROWN_ITEM_DIRECTION_IS_USED = Symbol(
31789
+ [0x37D5D0],
31790
+ [0x237D5D0],
31791
+ 0x8,
31792
+ "AI_THROWN_ITEM_DIRECTION_IS_USED",
31793
+ "[Runtime] Used in GetPossibleAiThrownItemDirections to indicate whether a certain direction enum value is already being used or not.",
31794
+ "bool[8]",
31795
+ )
31796
+
31797
+ AI_THROWN_ITEM_DIRECTIONS = Symbol(
31798
+ [0x37D5D8],
31799
+ [0x237D5D8],
31800
+ 0x20,
31801
+ "AI_THROWN_ITEM_DIRECTIONS",
31802
+ "[Runtime] Used to store the directions output by GetPossibleAiThrownItemDirections.",
31803
+ "uint32_t[8]",
31804
+ )
31805
+
31806
+ AI_THROWN_ITEM_PROBABILITIES = Symbol(
31807
+ [0x37D5F8],
31808
+ [0x237D5F8],
31809
+ 0x20,
31810
+ "AI_THROWN_ITEM_PROBABILITIES",
31811
+ "[Runtime] Used to store the probabilities matching the directions in THROWN_ITEM_DIRECTIONS.",
31812
+ "uint32_t[8]",
31813
+ )
31814
+
31698
31815
  ROLLOUT_ICE_BALL_MISSED = Symbol(
31699
31816
  None,
31700
31817
  None,
@@ -1739,7 +1739,7 @@ class EuItcmArm9Functions:
1739
1739
  None,
1740
1740
  None,
1741
1741
  "TestItemAiFlag",
1742
- "Used to check the AI flags for an item. Tests bit 7 if r1 is 0, bit 6 if r1 is 1, bit\n5 otherwise.\n\nr0: item ID\nr1: bit_id\nreturn: bool",
1742
+ "Returns a boolean indicating whether the item is consumable, throwable at an ally, or throwable at an enemy, depending on item_flag.\nThe table used for this is inaccessible in the code, as it is loaded from a file in the ROM at runtime.\nBit 7 in the table corresponds to ITEM_FLAG_CONSUMABLE, bit 6 to ITEM_FLAG_THROWABLE_AT_ALLY, and bit 5 to ITEM_FLAG_THROWABLE_AT_ENEMY.\n\nr0: item_id enum\nr1: item_flag enum. Function will test a different allowed AI action depending on the value.\nreturn: bool",
1743
1743
  None,
1744
1744
  )
1745
1745
 
@@ -23613,6 +23613,15 @@ class EuItcmOverlay29Functions:
23613
23613
  None,
23614
23614
  )
23615
23615
 
23616
+ SetDecoyAiTracker = Symbol(
23617
+ None,
23618
+ None,
23619
+ None,
23620
+ "SetDecoyAiTracker",
23621
+ "If there is a decoy on the floor that the entity can see, sets the entity's decoy_ai_tracker to 1 or 2,\ndepending on whether the attacker who caused the decoy status is on the team or not, respectively.\n\nr0: Entity pointer",
23622
+ None,
23623
+ )
23624
+
23616
23625
  CheckSpawnThreshold = Symbol(
23617
23626
  None,
23618
23627
  None,
@@ -24027,6 +24036,33 @@ class EuItcmOverlay29Functions:
24027
24036
  None,
24028
24037
  )
24029
24038
 
24039
+ CheckVariousStatuses2 = Symbol(
24040
+ None,
24041
+ None,
24042
+ None,
24043
+ "CheckVariousStatuses2",
24044
+ "Returns 0 if none of these conditions holds for the given entity:\nblinded (checked only if blind_check == 1),\nasleep, paused, infatuated, wrapping, wrapped, biding, petrified, or terrified.\n\nr0: Entity pointer\nr1: If true, return 1 if entity is blinded\nreturn: bool",
24045
+ None,
24046
+ )
24047
+
24048
+ CheckVariousConditions = Symbol(
24049
+ None,
24050
+ None,
24051
+ None,
24052
+ "CheckVariousConditions",
24053
+ "Returns 0 if none of these conditions holds for the given entity: is a rescue client,\ndoesn’t gain experience (a mission client/story teammate?), is a terrified non-team-leader,\nmeets any of the conditions in CheckVariousStatuses2 (with blind_check = 0), is charging a two-turn move.\n\nr0: Entity pointer\nreturn: bool",
24054
+ None,
24055
+ )
24056
+
24057
+ CheckVariousStatuses = Symbol(
24058
+ None,
24059
+ None,
24060
+ None,
24061
+ "CheckVariousStatuses",
24062
+ "Returns 0 if none of these conditions holds for the given entity: asleep, frozen, petrified, biding.\n\nr0: Entity pointer\nreturn: bool",
24063
+ None,
24064
+ )
24065
+
24030
24066
  CanMonsterMoveInDirection = Symbol(
24031
24067
  None,
24032
24068
  None,
@@ -24252,6 +24288,15 @@ class EuItcmOverlay29Functions:
24252
24288
  None,
24253
24289
  )
24254
24290
 
24291
+ MonsterCanThrowItems = Symbol(
24292
+ None,
24293
+ None,
24294
+ None,
24295
+ "MonsterCanThrowItems",
24296
+ "Returns a boolean indicating whether or not the given monster can throw items based on its monster id.\n\nr0: Monster pointer\nreturn: bool",
24297
+ None,
24298
+ )
24299
+
24255
24300
  UpdateStateFlags = Symbol(
24256
24301
  None,
24257
24302
  None,
@@ -24783,6 +24828,33 @@ class EuItcmOverlay29Functions:
24783
24828
  None,
24784
24829
  )
24785
24830
 
24831
+ AiDecideUseItem = Symbol(
24832
+ None,
24833
+ None,
24834
+ None,
24835
+ "AiDecideUseItem",
24836
+ "Decides whether or not an AI should use its held item and updates its action_data fields accordingly.\n\nr0: Entity pointer",
24837
+ None,
24838
+ )
24839
+
24840
+ GetPossibleAiThrownItemDirections = Symbol(
24841
+ None,
24842
+ None,
24843
+ None,
24844
+ "GetPossibleAiThrownItemDirections",
24845
+ "If the entity can throw an item at a target in a certain direction,\nadds that direction to AI_THROWN_ITEM_DIRECTIONS and the probability of throwing it to AI_THROWN_ITEM_PROBABILITIES (if it is not already present).\nThe size of the arrays will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\nThe caller function will select the direction to throw the item by iterating through the array(s), rolling the probability, and then throwing in that direction if the roll succeeds.\nNothing will be thrown if all rolls fail.\n\nr0: Entity pointer\nr1: Integer in {1, 2}. If 1, target allies; if 2, target enemies.\nr2: Item struct pointer\nr3: If false, will call GetAiUseItemProbability to get the probability of throwing in a certain direction.\nIf true, the added probability will always be 100.",
24846
+ None,
24847
+ )
24848
+
24849
+ GetPossibleAiArcItemTargets = Symbol(
24850
+ None,
24851
+ None,
24852
+ None,
24853
+ "GetPossibleAiArcItemTargets",
24854
+ "Gets the positions of all targets that an AI can hit with an item thrown in an arc, such as a Gravelerock.\nThe number of positions in the array will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\n\nr0: Entity pointer\nr1: Item struct pointer\nr2: [output] Array of size 20 for storing position structs\nr3: If false, will roll GetAiUseItemProbability every time a position is checked and not add it if it rolls false.",
24855
+ None,
24856
+ )
24857
+
24786
24858
  TryNonLeaderItemPickUp = Symbol(
24787
24859
  None,
24788
24860
  None,
@@ -26349,6 +26421,15 @@ class EuItcmOverlay29Functions:
26349
26421
  None,
26350
26422
  )
26351
26423
 
26424
+ IsChargingAnyTwoTurnMove = Symbol(
26425
+ None,
26426
+ None,
26427
+ None,
26428
+ "IsChargingAnyTwoTurnMove",
26429
+ "Returns a boolean indicating whether or not the given entity is charging any two-turn move.\n\nr0: Entity pointer\nr1: Unused boolean which was supposed to make function return true if the entity is under the effect of Charge (the Electric-type move).\n However, the conditional which uses this boolean will never be activated, as the loop will always terminate before getting to it.\nreturn: bool",
26430
+ None,
26431
+ )
26432
+
26352
26433
  HasMaxGinsengBoost99 = Symbol(
26353
26434
  None,
26354
26435
  None,
@@ -29281,6 +29362,15 @@ class EuItcmOverlay29Data:
29281
29362
  "struct exclusive_item_effect_id_8[8]",
29282
29363
  )
29283
29364
 
29365
+ AI_THROWN_ITEM_ACTION_CHOICE_COUNT = Symbol(
29366
+ None,
29367
+ None,
29368
+ None,
29369
+ "AI_THROWN_ITEM_ACTION_CHOICE_COUNT",
29370
+ "[Runtime] Used to store the number of positions output by GetPossibleAiArcItemTargets and the number of directions/probabilities output by GetPossibleAiThrownItemDirections.",
29371
+ "uint32_t",
29372
+ )
29373
+
29284
29374
  EXCL_ITEM_EFFECTS_EVASION_BOOST = Symbol(
29285
29375
  None,
29286
29376
  None,
@@ -30973,6 +31063,33 @@ class EuItcmRamData:
30973
31063
  "struct loaded_attack_sprite_data*",
30974
31064
  )
30975
31065
 
31066
+ AI_THROWN_ITEM_DIRECTION_IS_USED = Symbol(
31067
+ None,
31068
+ None,
31069
+ None,
31070
+ "AI_THROWN_ITEM_DIRECTION_IS_USED",
31071
+ "[Runtime] Used in GetPossibleAiThrownItemDirections to indicate whether a certain direction enum value is already being used or not.",
31072
+ "bool[8]",
31073
+ )
31074
+
31075
+ AI_THROWN_ITEM_DIRECTIONS = Symbol(
31076
+ None,
31077
+ None,
31078
+ None,
31079
+ "AI_THROWN_ITEM_DIRECTIONS",
31080
+ "[Runtime] Used to store the directions output by GetPossibleAiThrownItemDirections.",
31081
+ "uint32_t[8]",
31082
+ )
31083
+
31084
+ AI_THROWN_ITEM_PROBABILITIES = Symbol(
31085
+ None,
31086
+ None,
31087
+ None,
31088
+ "AI_THROWN_ITEM_PROBABILITIES",
31089
+ "[Runtime] Used to store the probabilities matching the directions in THROWN_ITEM_DIRECTIONS.",
31090
+ "uint32_t[8]",
31091
+ )
31092
+
30976
31093
  ROLLOUT_ICE_BALL_MISSED = Symbol(
30977
31094
  None,
30978
31095
  None,
pmdsky_debug_py/jp.py CHANGED
@@ -1785,7 +1785,7 @@ class JpArm9Functions:
1785
1785
  [0x200EAD0],
1786
1786
  None,
1787
1787
  "TestItemAiFlag",
1788
- "Used to check the AI flags for an item. Tests bit 7 if r1 is 0, bit 6 if r1 is 1, bit\n5 otherwise.\n\nr0: item ID\nr1: bit_id\nreturn: bool",
1788
+ "Returns a boolean indicating whether the item is consumable, throwable at an ally, or throwable at an enemy, depending on item_flag.\nThe table used for this is inaccessible in the code, as it is loaded from a file in the ROM at runtime.\nBit 7 in the table corresponds to ITEM_FLAG_CONSUMABLE, bit 6 to ITEM_FLAG_THROWABLE_AT_ALLY, and bit 5 to ITEM_FLAG_THROWABLE_AT_ENEMY.\n\nr0: item_id enum\nr1: item_flag enum. Function will test a different allowed AI action depending on the value.\nreturn: bool",
1789
1789
  None,
1790
1790
  )
1791
1791
 
@@ -24179,6 +24179,15 @@ class JpOverlay29Functions:
24179
24179
  None,
24180
24180
  )
24181
24181
 
24182
+ SetDecoyAiTracker = Symbol(
24183
+ None,
24184
+ None,
24185
+ None,
24186
+ "SetDecoyAiTracker",
24187
+ "If there is a decoy on the floor that the entity can see, sets the entity's decoy_ai_tracker to 1 or 2,\ndepending on whether the attacker who caused the decoy status is on the team or not, respectively.\n\nr0: Entity pointer",
24188
+ None,
24189
+ )
24190
+
24182
24191
  CheckSpawnThreshold = Symbol(
24183
24192
  [0x1F1E0],
24184
24193
  [0x22FCAC0],
@@ -24593,6 +24602,33 @@ class JpOverlay29Functions:
24593
24602
  None,
24594
24603
  )
24595
24604
 
24605
+ CheckVariousStatuses2 = Symbol(
24606
+ [0x2431C],
24607
+ [0x2301BFC],
24608
+ None,
24609
+ "CheckVariousStatuses2",
24610
+ "Returns 0 if none of these conditions holds for the given entity:\nblinded (checked only if blind_check == 1),\nasleep, paused, infatuated, wrapping, wrapped, biding, petrified, or terrified.\n\nr0: Entity pointer\nr1: If true, return 1 if entity is blinded\nreturn: bool",
24611
+ None,
24612
+ )
24613
+
24614
+ CheckVariousConditions = Symbol(
24615
+ [0x24644],
24616
+ [0x2301F24],
24617
+ None,
24618
+ "CheckVariousConditions",
24619
+ "Returns 0 if none of these conditions holds for the given entity: is a rescue client,\ndoesn’t gain experience (a mission client/story teammate?), is a terrified non-team-leader,\nmeets any of the conditions in CheckVariousStatuses2 (with blind_check = 0), is charging a two-turn move.\n\nr0: Entity pointer\nreturn: bool",
24620
+ None,
24621
+ )
24622
+
24623
+ CheckVariousStatuses = Symbol(
24624
+ [0x247B4],
24625
+ [0x2302094],
24626
+ None,
24627
+ "CheckVariousStatuses",
24628
+ "Returns 0 if none of these conditions holds for the given entity: asleep, frozen, petrified, biding.\n\nr0: Entity pointer\nreturn: bool",
24629
+ None,
24630
+ )
24631
+
24596
24632
  CanMonsterMoveInDirection = Symbol(
24597
24633
  [0x2497C],
24598
24634
  [0x230225C],
@@ -24657,8 +24693,8 @@ class JpOverlay29Functions:
24657
24693
  )
24658
24694
 
24659
24695
  GetTreatmentBetweenMonsters = Symbol(
24660
- [0x24F1C],
24661
- [0x23027FC],
24696
+ [0x253EC],
24697
+ [0x2302CCC],
24662
24698
  None,
24663
24699
  "GetTreatmentBetweenMonsters",
24664
24700
  "Called to check if a monster should treat another as an ally, enemy, or ignore it.\n(Examples of the 'ignore' case: target is a shopkeeper, there is a decoy on the floor, etc.)\n\nr0: Pointer to entity 1\nr1: Pointer to entity 2\nr2: If false, return TREATMENT_IGNORE if entity 2 is invisible and entity 1 cannot see invisible monsters\nr3: If true, return TREATMENT_IGNORE if entity 1 is a team member and entity 2 has the STATUS_PETRIFIED status\nreturn: Treatment that monster 1 should apply to monster 2",
@@ -24818,6 +24854,15 @@ class JpOverlay29Functions:
24818
24854
  None,
24819
24855
  )
24820
24856
 
24857
+ MonsterCanThrowItems = Symbol(
24858
+ [0x25FD8],
24859
+ [0x23038B8],
24860
+ None,
24861
+ "MonsterCanThrowItems",
24862
+ "Returns a boolean indicating whether or not the given monster can throw items based on its monster id.\n\nr0: Monster pointer\nreturn: bool",
24863
+ None,
24864
+ )
24865
+
24821
24866
  UpdateStateFlags = Symbol(
24822
24867
  [0x26030],
24823
24868
  [0x2303910],
@@ -25349,6 +25394,33 @@ class JpOverlay29Functions:
25349
25394
  None,
25350
25395
  )
25351
25396
 
25397
+ AiDecideUseItem = Symbol(
25398
+ [0x32570],
25399
+ [0x230FE50],
25400
+ None,
25401
+ "AiDecideUseItem",
25402
+ "Decides whether or not an AI should use its held item and updates its action_data fields accordingly.\n\nr0: Entity pointer",
25403
+ None,
25404
+ )
25405
+
25406
+ GetPossibleAiThrownItemDirections = Symbol(
25407
+ [0x32A0C],
25408
+ [0x23102EC],
25409
+ None,
25410
+ "GetPossibleAiThrownItemDirections",
25411
+ "If the entity can throw an item at a target in a certain direction,\nadds that direction to AI_THROWN_ITEM_DIRECTIONS and the probability of throwing it to AI_THROWN_ITEM_PROBABILITIES (if it is not already present).\nThe size of the arrays will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\nThe caller function will select the direction to throw the item by iterating through the array(s), rolling the probability, and then throwing in that direction if the roll succeeds.\nNothing will be thrown if all rolls fail.\n\nr0: Entity pointer\nr1: Integer in {1, 2}. If 1, target allies; if 2, target enemies.\nr2: Item struct pointer\nr3: If false, will call GetAiUseItemProbability to get the probability of throwing in a certain direction.\nIf true, the added probability will always be 100.",
25412
+ None,
25413
+ )
25414
+
25415
+ GetPossibleAiArcItemTargets = Symbol(
25416
+ [0x32C88],
25417
+ [0x2310568],
25418
+ None,
25419
+ "GetPossibleAiArcItemTargets",
25420
+ "Gets the positions of all targets that an AI can hit with an item thrown in an arc, such as a Gravelerock.\nThe number of positions in the array will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\n\nr0: Entity pointer\nr1: Item struct pointer\nr2: [output] Array of size 20 for storing position structs\nr3: If false, will roll GetAiUseItemProbability every time a position is checked and not add it if it rolls false.",
25421
+ None,
25422
+ )
25423
+
25352
25424
  TryNonLeaderItemPickUp = Symbol(
25353
25425
  [0x32DC0],
25354
25426
  [0x23106A0],
@@ -26745,8 +26817,8 @@ class JpOverlay29Functions:
26745
26817
  )
26746
26818
 
26747
26819
  GetAiUseItemProbability = Symbol(
26748
- [0x41858],
26749
- [0x231F138],
26820
+ [0x41C28],
26821
+ [0x231F508],
26750
26822
  None,
26751
26823
  "GetAiUseItemProbability",
26752
26824
  "Called to get the probability of an item being used or thrown by an AI on the current turn.\n\nr0: Pointer to either the user if it is an item used by the AI or the target if it is an item thrown by the AI\nr1: Pointer to item\nr2: Size-2 bitvector: if bit 0 is set, the AI is throwing the item. If bit 1 is set, it is targeting an ally with the item.\nreturn: Integer in range [0, 100]",
@@ -26754,8 +26826,8 @@ class JpOverlay29Functions:
26754
26826
  )
26755
26827
 
26756
26828
  IsAdjacentToEnemy = Symbol(
26757
- [0x420EC],
26758
- [0x231F9CC],
26829
+ [0x424BC],
26830
+ [0x231FD9C],
26759
26831
  None,
26760
26832
  "IsAdjacentToEnemy",
26761
26833
  "Called to check if a hostile entity is present in any of the tiles adjacent to an entity.\n\nr0: Pointer to entity\nreturn: True if yes, false if no",
@@ -26915,6 +26987,15 @@ class JpOverlay29Functions:
26915
26987
  None,
26916
26988
  )
26917
26989
 
26990
+ IsChargingAnyTwoTurnMove = Symbol(
26991
+ [0x481CC],
26992
+ [0x2325AAC],
26993
+ None,
26994
+ "IsChargingAnyTwoTurnMove",
26995
+ "Returns a boolean indicating whether or not the given entity is charging any two-turn move.\n\nr0: Entity pointer\nr1: Unused boolean which was supposed to make function return true if the entity is under the effect of Charge (the Electric-type move).\n However, the conditional which uses this boolean will never be activated, as the loop will always terminate before getting to it.\nreturn: bool",
26996
+ None,
26997
+ )
26998
+
26918
26999
  HasMaxGinsengBoost99 = Symbol(
26919
27000
  [0x48348],
26920
27001
  [0x2325C28],
@@ -29852,6 +29933,15 @@ class JpOverlay29Data:
29852
29933
  "struct exclusive_item_effect_id_8[8]",
29853
29934
  )
29854
29935
 
29936
+ AI_THROWN_ITEM_ACTION_CHOICE_COUNT = Symbol(
29937
+ [0x7709C],
29938
+ [0x235497C],
29939
+ None,
29940
+ "AI_THROWN_ITEM_ACTION_CHOICE_COUNT",
29941
+ "[Runtime] Used to store the number of positions output by GetPossibleAiArcItemTargets and the number of directions/probabilities output by GetPossibleAiThrownItemDirections.",
29942
+ "uint32_t",
29943
+ )
29944
+
29855
29945
  EXCL_ITEM_EFFECTS_EVASION_BOOST = Symbol(
29856
29946
  [0x770B0],
29857
29947
  [0x2354990],
@@ -31583,6 +31673,33 @@ class JpRamData:
31583
31673
  "struct loaded_attack_sprite_data*",
31584
31674
  )
31585
31675
 
31676
+ AI_THROWN_ITEM_DIRECTION_IS_USED = Symbol(
31677
+ None,
31678
+ None,
31679
+ None,
31680
+ "AI_THROWN_ITEM_DIRECTION_IS_USED",
31681
+ "[Runtime] Used in GetPossibleAiThrownItemDirections to indicate whether a certain direction enum value is already being used or not.",
31682
+ "bool[8]",
31683
+ )
31684
+
31685
+ AI_THROWN_ITEM_DIRECTIONS = Symbol(
31686
+ None,
31687
+ None,
31688
+ None,
31689
+ "AI_THROWN_ITEM_DIRECTIONS",
31690
+ "[Runtime] Used to store the directions output by GetPossibleAiThrownItemDirections.",
31691
+ "uint32_t[8]",
31692
+ )
31693
+
31694
+ AI_THROWN_ITEM_PROBABILITIES = Symbol(
31695
+ None,
31696
+ None,
31697
+ None,
31698
+ "AI_THROWN_ITEM_PROBABILITIES",
31699
+ "[Runtime] Used to store the probabilities matching the directions in THROWN_ITEM_DIRECTIONS.",
31700
+ "uint32_t[8]",
31701
+ )
31702
+
31586
31703
  ROLLOUT_ICE_BALL_MISSED = Symbol(
31587
31704
  None,
31588
31705
  None,
@@ -1739,7 +1739,7 @@ class JpItcmArm9Functions:
1739
1739
  None,
1740
1740
  None,
1741
1741
  "TestItemAiFlag",
1742
- "Used to check the AI flags for an item. Tests bit 7 if r1 is 0, bit 6 if r1 is 1, bit\n5 otherwise.\n\nr0: item ID\nr1: bit_id\nreturn: bool",
1742
+ "Returns a boolean indicating whether the item is consumable, throwable at an ally, or throwable at an enemy, depending on item_flag.\nThe table used for this is inaccessible in the code, as it is loaded from a file in the ROM at runtime.\nBit 7 in the table corresponds to ITEM_FLAG_CONSUMABLE, bit 6 to ITEM_FLAG_THROWABLE_AT_ALLY, and bit 5 to ITEM_FLAG_THROWABLE_AT_ENEMY.\n\nr0: item_id enum\nr1: item_flag enum. Function will test a different allowed AI action depending on the value.\nreturn: bool",
1743
1743
  None,
1744
1744
  )
1745
1745
 
@@ -23613,6 +23613,15 @@ class JpItcmOverlay29Functions:
23613
23613
  None,
23614
23614
  )
23615
23615
 
23616
+ SetDecoyAiTracker = Symbol(
23617
+ None,
23618
+ None,
23619
+ None,
23620
+ "SetDecoyAiTracker",
23621
+ "If there is a decoy on the floor that the entity can see, sets the entity's decoy_ai_tracker to 1 or 2,\ndepending on whether the attacker who caused the decoy status is on the team or not, respectively.\n\nr0: Entity pointer",
23622
+ None,
23623
+ )
23624
+
23616
23625
  CheckSpawnThreshold = Symbol(
23617
23626
  None,
23618
23627
  None,
@@ -24027,6 +24036,33 @@ class JpItcmOverlay29Functions:
24027
24036
  None,
24028
24037
  )
24029
24038
 
24039
+ CheckVariousStatuses2 = Symbol(
24040
+ None,
24041
+ None,
24042
+ None,
24043
+ "CheckVariousStatuses2",
24044
+ "Returns 0 if none of these conditions holds for the given entity:\nblinded (checked only if blind_check == 1),\nasleep, paused, infatuated, wrapping, wrapped, biding, petrified, or terrified.\n\nr0: Entity pointer\nr1: If true, return 1 if entity is blinded\nreturn: bool",
24045
+ None,
24046
+ )
24047
+
24048
+ CheckVariousConditions = Symbol(
24049
+ None,
24050
+ None,
24051
+ None,
24052
+ "CheckVariousConditions",
24053
+ "Returns 0 if none of these conditions holds for the given entity: is a rescue client,\ndoesn’t gain experience (a mission client/story teammate?), is a terrified non-team-leader,\nmeets any of the conditions in CheckVariousStatuses2 (with blind_check = 0), is charging a two-turn move.\n\nr0: Entity pointer\nreturn: bool",
24054
+ None,
24055
+ )
24056
+
24057
+ CheckVariousStatuses = Symbol(
24058
+ None,
24059
+ None,
24060
+ None,
24061
+ "CheckVariousStatuses",
24062
+ "Returns 0 if none of these conditions holds for the given entity: asleep, frozen, petrified, biding.\n\nr0: Entity pointer\nreturn: bool",
24063
+ None,
24064
+ )
24065
+
24030
24066
  CanMonsterMoveInDirection = Symbol(
24031
24067
  None,
24032
24068
  None,
@@ -24252,6 +24288,15 @@ class JpItcmOverlay29Functions:
24252
24288
  None,
24253
24289
  )
24254
24290
 
24291
+ MonsterCanThrowItems = Symbol(
24292
+ None,
24293
+ None,
24294
+ None,
24295
+ "MonsterCanThrowItems",
24296
+ "Returns a boolean indicating whether or not the given monster can throw items based on its monster id.\n\nr0: Monster pointer\nreturn: bool",
24297
+ None,
24298
+ )
24299
+
24255
24300
  UpdateStateFlags = Symbol(
24256
24301
  None,
24257
24302
  None,
@@ -24783,6 +24828,33 @@ class JpItcmOverlay29Functions:
24783
24828
  None,
24784
24829
  )
24785
24830
 
24831
+ AiDecideUseItem = Symbol(
24832
+ None,
24833
+ None,
24834
+ None,
24835
+ "AiDecideUseItem",
24836
+ "Decides whether or not an AI should use its held item and updates its action_data fields accordingly.\n\nr0: Entity pointer",
24837
+ None,
24838
+ )
24839
+
24840
+ GetPossibleAiThrownItemDirections = Symbol(
24841
+ None,
24842
+ None,
24843
+ None,
24844
+ "GetPossibleAiThrownItemDirections",
24845
+ "If the entity can throw an item at a target in a certain direction,\nadds that direction to AI_THROWN_ITEM_DIRECTIONS and the probability of throwing it to AI_THROWN_ITEM_PROBABILITIES (if it is not already present).\nThe size of the arrays will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\nThe caller function will select the direction to throw the item by iterating through the array(s), rolling the probability, and then throwing in that direction if the roll succeeds.\nNothing will be thrown if all rolls fail.\n\nr0: Entity pointer\nr1: Integer in {1, 2}. If 1, target allies; if 2, target enemies.\nr2: Item struct pointer\nr3: If false, will call GetAiUseItemProbability to get the probability of throwing in a certain direction.\nIf true, the added probability will always be 100.",
24846
+ None,
24847
+ )
24848
+
24849
+ GetPossibleAiArcItemTargets = Symbol(
24850
+ None,
24851
+ None,
24852
+ None,
24853
+ "GetPossibleAiArcItemTargets",
24854
+ "Gets the positions of all targets that an AI can hit with an item thrown in an arc, such as a Gravelerock.\nThe number of positions in the array will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\n\nr0: Entity pointer\nr1: Item struct pointer\nr2: [output] Array of size 20 for storing position structs\nr3: If false, will roll GetAiUseItemProbability every time a position is checked and not add it if it rolls false.",
24855
+ None,
24856
+ )
24857
+
24786
24858
  TryNonLeaderItemPickUp = Symbol(
24787
24859
  None,
24788
24860
  None,
@@ -26349,6 +26421,15 @@ class JpItcmOverlay29Functions:
26349
26421
  None,
26350
26422
  )
26351
26423
 
26424
+ IsChargingAnyTwoTurnMove = Symbol(
26425
+ None,
26426
+ None,
26427
+ None,
26428
+ "IsChargingAnyTwoTurnMove",
26429
+ "Returns a boolean indicating whether or not the given entity is charging any two-turn move.\n\nr0: Entity pointer\nr1: Unused boolean which was supposed to make function return true if the entity is under the effect of Charge (the Electric-type move).\n However, the conditional which uses this boolean will never be activated, as the loop will always terminate before getting to it.\nreturn: bool",
26430
+ None,
26431
+ )
26432
+
26352
26433
  HasMaxGinsengBoost99 = Symbol(
26353
26434
  None,
26354
26435
  None,
@@ -29281,6 +29362,15 @@ class JpItcmOverlay29Data:
29281
29362
  "struct exclusive_item_effect_id_8[8]",
29282
29363
  )
29283
29364
 
29365
+ AI_THROWN_ITEM_ACTION_CHOICE_COUNT = Symbol(
29366
+ None,
29367
+ None,
29368
+ None,
29369
+ "AI_THROWN_ITEM_ACTION_CHOICE_COUNT",
29370
+ "[Runtime] Used to store the number of positions output by GetPossibleAiArcItemTargets and the number of directions/probabilities output by GetPossibleAiThrownItemDirections.",
29371
+ "uint32_t",
29372
+ )
29373
+
29284
29374
  EXCL_ITEM_EFFECTS_EVASION_BOOST = Symbol(
29285
29375
  None,
29286
29376
  None,
@@ -30973,6 +31063,33 @@ class JpItcmRamData:
30973
31063
  "struct loaded_attack_sprite_data*",
30974
31064
  )
30975
31065
 
31066
+ AI_THROWN_ITEM_DIRECTION_IS_USED = Symbol(
31067
+ None,
31068
+ None,
31069
+ None,
31070
+ "AI_THROWN_ITEM_DIRECTION_IS_USED",
31071
+ "[Runtime] Used in GetPossibleAiThrownItemDirections to indicate whether a certain direction enum value is already being used or not.",
31072
+ "bool[8]",
31073
+ )
31074
+
31075
+ AI_THROWN_ITEM_DIRECTIONS = Symbol(
31076
+ None,
31077
+ None,
31078
+ None,
31079
+ "AI_THROWN_ITEM_DIRECTIONS",
31080
+ "[Runtime] Used to store the directions output by GetPossibleAiThrownItemDirections.",
31081
+ "uint32_t[8]",
31082
+ )
31083
+
31084
+ AI_THROWN_ITEM_PROBABILITIES = Symbol(
31085
+ None,
31086
+ None,
31087
+ None,
31088
+ "AI_THROWN_ITEM_PROBABILITIES",
31089
+ "[Runtime] Used to store the probabilities matching the directions in THROWN_ITEM_DIRECTIONS.",
31090
+ "uint32_t[8]",
31091
+ )
31092
+
30976
31093
  ROLLOUT_ICE_BALL_MISSED = Symbol(
30977
31094
  None,
30978
31095
  None,
pmdsky_debug_py/na.py CHANGED
@@ -1785,7 +1785,7 @@ class NaArm9Functions:
1785
1785
  [0x200EAA0],
1786
1786
  None,
1787
1787
  "TestItemAiFlag",
1788
- "Used to check the AI flags for an item. Tests bit 7 if r1 is 0, bit 6 if r1 is 1, bit\n5 otherwise.\n\nr0: item ID\nr1: bit_id\nreturn: bool",
1788
+ "Returns a boolean indicating whether the item is consumable, throwable at an ally, or throwable at an enemy, depending on item_flag.\nThe table used for this is inaccessible in the code, as it is loaded from a file in the ROM at runtime.\nBit 7 in the table corresponds to ITEM_FLAG_CONSUMABLE, bit 6 to ITEM_FLAG_THROWABLE_AT_ALLY, and bit 5 to ITEM_FLAG_THROWABLE_AT_ENEMY.\n\nr0: item_id enum\nr1: item_flag enum. Function will test a different allowed AI action depending on the value.\nreturn: bool",
1789
1789
  None,
1790
1790
  )
1791
1791
 
@@ -24186,6 +24186,15 @@ class NaOverlay29Functions:
24186
24186
  None,
24187
24187
  )
24188
24188
 
24189
+ SetDecoyAiTracker = Symbol(
24190
+ [0x1F2F8],
24191
+ [0x22FB538],
24192
+ None,
24193
+ "SetDecoyAiTracker",
24194
+ "If there is a decoy on the floor that the entity can see, sets the entity's decoy_ai_tracker to 1 or 2,\ndepending on whether the attacker who caused the decoy status is on the team or not, respectively.\n\nr0: Entity pointer",
24195
+ None,
24196
+ )
24197
+
24189
24198
  CheckSpawnThreshold = Symbol(
24190
24199
  [0x1F3AC],
24191
24200
  [0x22FB5EC],
@@ -24600,6 +24609,33 @@ class NaOverlay29Functions:
24600
24609
  None,
24601
24610
  )
24602
24611
 
24612
+ CheckVariousStatuses2 = Symbol(
24613
+ [0x245D8],
24614
+ [0x2300818],
24615
+ None,
24616
+ "CheckVariousStatuses2",
24617
+ "Returns 0 if none of these conditions holds for the given entity:\nblinded (checked only if blind_check == 1),\nasleep, paused, infatuated, wrapping, wrapped, biding, petrified, or terrified.\n\nr0: Entity pointer\nr1: If true, return 1 if entity is blinded\nreturn: bool",
24618
+ None,
24619
+ )
24620
+
24621
+ CheckVariousConditions = Symbol(
24622
+ [0x24900],
24623
+ [0x2300B40],
24624
+ None,
24625
+ "CheckVariousConditions",
24626
+ "Returns 0 if none of these conditions holds for the given entity: is a rescue client,\ndoesn’t gain experience (a mission client/story teammate?), is a terrified non-team-leader,\nmeets any of the conditions in CheckVariousStatuses2 (with blind_check = 0), is charging a two-turn move.\n\nr0: Entity pointer\nreturn: bool",
24627
+ None,
24628
+ )
24629
+
24630
+ CheckVariousStatuses = Symbol(
24631
+ [0x24A70],
24632
+ [0x2300CB0],
24633
+ None,
24634
+ "CheckVariousStatuses",
24635
+ "Returns 0 if none of these conditions holds for the given entity: asleep, frozen, petrified, biding.\n\nr0: Entity pointer\nreturn: bool",
24636
+ None,
24637
+ )
24638
+
24603
24639
  CanMonsterMoveInDirection = Symbol(
24604
24640
  [0x24C38],
24605
24641
  [0x2300E78],
@@ -24664,8 +24700,8 @@ class NaOverlay29Functions:
24664
24700
  )
24665
24701
 
24666
24702
  GetTreatmentBetweenMonsters = Symbol(
24667
- [0x2533C],
24668
- [0x230157C],
24703
+ [0x2551C],
24704
+ [0x230175C],
24669
24705
  None,
24670
24706
  "GetTreatmentBetweenMonsters",
24671
24707
  "Called to check if a monster should treat another as an ally, enemy, or ignore it.\n(Examples of the 'ignore' case: target is a shopkeeper, there is a decoy on the floor, etc.)\n\nr0: Pointer to entity 1\nr1: Pointer to entity 2\nr2: If false, return TREATMENT_IGNORE if entity 2 is invisible and entity 1 cannot see invisible monsters\nr3: If true, return TREATMENT_IGNORE if entity 1 is a team member and entity 2 has the STATUS_PETRIFIED status\nreturn: Treatment that monster 1 should apply to monster 2",
@@ -24825,6 +24861,15 @@ class NaOverlay29Functions:
24825
24861
  None,
24826
24862
  )
24827
24863
 
24864
+ MonsterCanThrowItems = Symbol(
24865
+ [0x26128],
24866
+ [0x2302368],
24867
+ None,
24868
+ "MonsterCanThrowItems",
24869
+ "Returns a boolean indicating whether or not the given monster can throw items based on its monster id.\n\nr0: Monster pointer\nreturn: bool",
24870
+ None,
24871
+ )
24872
+
24828
24873
  UpdateStateFlags = Symbol(
24829
24874
  [0x26180],
24830
24875
  [0x23023C0],
@@ -25356,6 +25401,33 @@ class NaOverlay29Functions:
25356
25401
  None,
25357
25402
  )
25358
25403
 
25404
+ AiDecideUseItem = Symbol(
25405
+ [0x326D4],
25406
+ [0x230E914],
25407
+ None,
25408
+ "AiDecideUseItem",
25409
+ "Decides whether or not an AI should use its held item and updates its action_data fields accordingly.\n\nr0: Entity pointer",
25410
+ None,
25411
+ )
25412
+
25413
+ GetPossibleAiThrownItemDirections = Symbol(
25414
+ [0x32B70],
25415
+ [0x230EDB0],
25416
+ None,
25417
+ "GetPossibleAiThrownItemDirections",
25418
+ "If the entity can throw an item at a target in a certain direction,\nadds that direction to AI_THROWN_ITEM_DIRECTIONS and the probability of throwing it to AI_THROWN_ITEM_PROBABILITIES (if it is not already present).\nThe size of the arrays will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\nThe caller function will select the direction to throw the item by iterating through the array(s), rolling the probability, and then throwing in that direction if the roll succeeds.\nNothing will be thrown if all rolls fail.\n\nr0: Entity pointer\nr1: Integer in {1, 2}. If 1, target allies; if 2, target enemies.\nr2: Item struct pointer\nr3: If false, will call GetAiUseItemProbability to get the probability of throwing in a certain direction.\nIf true, the added probability will always be 100.",
25419
+ None,
25420
+ )
25421
+
25422
+ GetPossibleAiArcItemTargets = Symbol(
25423
+ [0x32DEC],
25424
+ [0x230F02C],
25425
+ None,
25426
+ "GetPossibleAiArcItemTargets",
25427
+ "Gets the positions of all targets that an AI can hit with an item thrown in an arc, such as a Gravelerock.\nThe number of positions in the array will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\n\nr0: Entity pointer\nr1: Item struct pointer\nr2: [output] Array of size 20 for storing position structs\nr3: If false, will roll GetAiUseItemProbability every time a position is checked and not add it if it rolls false.",
25428
+ None,
25429
+ )
25430
+
25359
25431
  TryNonLeaderItemPickUp = Symbol(
25360
25432
  [0x32F24],
25361
25433
  [0x230F164],
@@ -26752,8 +26824,8 @@ class NaOverlay29Functions:
26752
26824
  )
26753
26825
 
26754
26826
  GetAiUseItemProbability = Symbol(
26755
- [0x41C78],
26756
- [0x231DEB8],
26827
+ [0x41E1C],
26828
+ [0x231E05C],
26757
26829
  None,
26758
26830
  "GetAiUseItemProbability",
26759
26831
  "Called to get the probability of an item being used or thrown by an AI on the current turn.\n\nr0: Pointer to either the user if it is an item used by the AI or the target if it is an item thrown by the AI\nr1: Pointer to item\nr2: Size-2 bitvector: if bit 0 is set, the AI is throwing the item. If bit 1 is set, it is targeting an ally with the item.\nreturn: Integer in range [0, 100]",
@@ -26761,8 +26833,8 @@ class NaOverlay29Functions:
26761
26833
  )
26762
26834
 
26763
26835
  IsAdjacentToEnemy = Symbol(
26764
- [0x4250C],
26765
- [0x231E74C],
26836
+ [0x426B0],
26837
+ [0x231E8F0],
26766
26838
  None,
26767
26839
  "IsAdjacentToEnemy",
26768
26840
  "Called to check if a hostile entity is present in any of the tiles adjacent to an entity.\n\nr0: Pointer to entity\nreturn: True if yes, false if no",
@@ -26922,6 +26994,15 @@ class NaOverlay29Functions:
26922
26994
  None,
26923
26995
  )
26924
26996
 
26997
+ IsChargingAnyTwoTurnMove = Symbol(
26998
+ [0x483DC],
26999
+ [0x232461C],
27000
+ None,
27001
+ "IsChargingAnyTwoTurnMove",
27002
+ "Returns a boolean indicating whether or not the given entity is charging any two-turn move.\n\nr0: Entity pointer\nr1: Unused boolean which was supposed to make function return true if the entity is under the effect of Charge (the Electric-type move).\n However, the conditional which uses this boolean will never be activated, as the loop will always terminate before getting to it.\nreturn: bool",
27003
+ None,
27004
+ )
27005
+
26925
27006
  HasMaxGinsengBoost99 = Symbol(
26926
27007
  [0x48558],
26927
27008
  [0x2324798],
@@ -29957,6 +30038,15 @@ class NaOverlay29Data:
29957
30038
  "struct exclusive_item_effect_id_8[8]",
29958
30039
  )
29959
30040
 
30041
+ AI_THROWN_ITEM_ACTION_CHOICE_COUNT = Symbol(
30042
+ [0x774BC],
30043
+ [0x23536FC],
30044
+ None,
30045
+ "AI_THROWN_ITEM_ACTION_CHOICE_COUNT",
30046
+ "[Runtime] Used to store the number of positions output by GetPossibleAiArcItemTargets and the number of directions/probabilities output by GetPossibleAiThrownItemDirections.",
30047
+ "uint32_t",
30048
+ )
30049
+
29960
30050
  EXCL_ITEM_EFFECTS_EVASION_BOOST = Symbol(
29961
30051
  [0x774D0],
29962
30052
  [0x2353710],
@@ -31693,6 +31783,33 @@ class NaRamData:
31693
31783
  "struct loaded_attack_sprite_data*",
31694
31784
  )
31695
31785
 
31786
+ AI_THROWN_ITEM_DIRECTION_IS_USED = Symbol(
31787
+ None,
31788
+ None,
31789
+ None,
31790
+ "AI_THROWN_ITEM_DIRECTION_IS_USED",
31791
+ "[Runtime] Used in GetPossibleAiThrownItemDirections to indicate whether a certain direction enum value is already being used or not.",
31792
+ "bool[8]",
31793
+ )
31794
+
31795
+ AI_THROWN_ITEM_DIRECTIONS = Symbol(
31796
+ None,
31797
+ None,
31798
+ None,
31799
+ "AI_THROWN_ITEM_DIRECTIONS",
31800
+ "[Runtime] Used to store the directions output by GetPossibleAiThrownItemDirections.",
31801
+ "uint32_t[8]",
31802
+ )
31803
+
31804
+ AI_THROWN_ITEM_PROBABILITIES = Symbol(
31805
+ None,
31806
+ None,
31807
+ None,
31808
+ "AI_THROWN_ITEM_PROBABILITIES",
31809
+ "[Runtime] Used to store the probabilities matching the directions in THROWN_ITEM_DIRECTIONS.",
31810
+ "uint32_t[8]",
31811
+ )
31812
+
31696
31813
  ROLLOUT_ICE_BALL_MISSED = Symbol(
31697
31814
  [0x37CA69],
31698
31815
  [0x237CA69],
@@ -1739,7 +1739,7 @@ class NaItcmArm9Functions:
1739
1739
  None,
1740
1740
  None,
1741
1741
  "TestItemAiFlag",
1742
- "Used to check the AI flags for an item. Tests bit 7 if r1 is 0, bit 6 if r1 is 1, bit\n5 otherwise.\n\nr0: item ID\nr1: bit_id\nreturn: bool",
1742
+ "Returns a boolean indicating whether the item is consumable, throwable at an ally, or throwable at an enemy, depending on item_flag.\nThe table used for this is inaccessible in the code, as it is loaded from a file in the ROM at runtime.\nBit 7 in the table corresponds to ITEM_FLAG_CONSUMABLE, bit 6 to ITEM_FLAG_THROWABLE_AT_ALLY, and bit 5 to ITEM_FLAG_THROWABLE_AT_ENEMY.\n\nr0: item_id enum\nr1: item_flag enum. Function will test a different allowed AI action depending on the value.\nreturn: bool",
1743
1743
  None,
1744
1744
  )
1745
1745
 
@@ -23613,6 +23613,15 @@ class NaItcmOverlay29Functions:
23613
23613
  None,
23614
23614
  )
23615
23615
 
23616
+ SetDecoyAiTracker = Symbol(
23617
+ None,
23618
+ None,
23619
+ None,
23620
+ "SetDecoyAiTracker",
23621
+ "If there is a decoy on the floor that the entity can see, sets the entity's decoy_ai_tracker to 1 or 2,\ndepending on whether the attacker who caused the decoy status is on the team or not, respectively.\n\nr0: Entity pointer",
23622
+ None,
23623
+ )
23624
+
23616
23625
  CheckSpawnThreshold = Symbol(
23617
23626
  None,
23618
23627
  None,
@@ -24027,6 +24036,33 @@ class NaItcmOverlay29Functions:
24027
24036
  None,
24028
24037
  )
24029
24038
 
24039
+ CheckVariousStatuses2 = Symbol(
24040
+ None,
24041
+ None,
24042
+ None,
24043
+ "CheckVariousStatuses2",
24044
+ "Returns 0 if none of these conditions holds for the given entity:\nblinded (checked only if blind_check == 1),\nasleep, paused, infatuated, wrapping, wrapped, biding, petrified, or terrified.\n\nr0: Entity pointer\nr1: If true, return 1 if entity is blinded\nreturn: bool",
24045
+ None,
24046
+ )
24047
+
24048
+ CheckVariousConditions = Symbol(
24049
+ None,
24050
+ None,
24051
+ None,
24052
+ "CheckVariousConditions",
24053
+ "Returns 0 if none of these conditions holds for the given entity: is a rescue client,\ndoesn’t gain experience (a mission client/story teammate?), is a terrified non-team-leader,\nmeets any of the conditions in CheckVariousStatuses2 (with blind_check = 0), is charging a two-turn move.\n\nr0: Entity pointer\nreturn: bool",
24054
+ None,
24055
+ )
24056
+
24057
+ CheckVariousStatuses = Symbol(
24058
+ None,
24059
+ None,
24060
+ None,
24061
+ "CheckVariousStatuses",
24062
+ "Returns 0 if none of these conditions holds for the given entity: asleep, frozen, petrified, biding.\n\nr0: Entity pointer\nreturn: bool",
24063
+ None,
24064
+ )
24065
+
24030
24066
  CanMonsterMoveInDirection = Symbol(
24031
24067
  None,
24032
24068
  None,
@@ -24252,6 +24288,15 @@ class NaItcmOverlay29Functions:
24252
24288
  None,
24253
24289
  )
24254
24290
 
24291
+ MonsterCanThrowItems = Symbol(
24292
+ None,
24293
+ None,
24294
+ None,
24295
+ "MonsterCanThrowItems",
24296
+ "Returns a boolean indicating whether or not the given monster can throw items based on its monster id.\n\nr0: Monster pointer\nreturn: bool",
24297
+ None,
24298
+ )
24299
+
24255
24300
  UpdateStateFlags = Symbol(
24256
24301
  None,
24257
24302
  None,
@@ -24783,6 +24828,33 @@ class NaItcmOverlay29Functions:
24783
24828
  None,
24784
24829
  )
24785
24830
 
24831
+ AiDecideUseItem = Symbol(
24832
+ None,
24833
+ None,
24834
+ None,
24835
+ "AiDecideUseItem",
24836
+ "Decides whether or not an AI should use its held item and updates its action_data fields accordingly.\n\nr0: Entity pointer",
24837
+ None,
24838
+ )
24839
+
24840
+ GetPossibleAiThrownItemDirections = Symbol(
24841
+ None,
24842
+ None,
24843
+ None,
24844
+ "GetPossibleAiThrownItemDirections",
24845
+ "If the entity can throw an item at a target in a certain direction,\nadds that direction to AI_THROWN_ITEM_DIRECTIONS and the probability of throwing it to AI_THROWN_ITEM_PROBABILITIES (if it is not already present).\nThe size of the arrays will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\nThe caller function will select the direction to throw the item by iterating through the array(s), rolling the probability, and then throwing in that direction if the roll succeeds.\nNothing will be thrown if all rolls fail.\n\nr0: Entity pointer\nr1: Integer in {1, 2}. If 1, target allies; if 2, target enemies.\nr2: Item struct pointer\nr3: If false, will call GetAiUseItemProbability to get the probability of throwing in a certain direction.\nIf true, the added probability will always be 100.",
24846
+ None,
24847
+ )
24848
+
24849
+ GetPossibleAiArcItemTargets = Symbol(
24850
+ None,
24851
+ None,
24852
+ None,
24853
+ "GetPossibleAiArcItemTargets",
24854
+ "Gets the positions of all targets that an AI can hit with an item thrown in an arc, such as a Gravelerock.\nThe number of positions in the array will be stored in AI_THROWN_ITEM_ACTION_CHOICE_COUNT.\n\nr0: Entity pointer\nr1: Item struct pointer\nr2: [output] Array of size 20 for storing position structs\nr3: If false, will roll GetAiUseItemProbability every time a position is checked and not add it if it rolls false.",
24855
+ None,
24856
+ )
24857
+
24786
24858
  TryNonLeaderItemPickUp = Symbol(
24787
24859
  None,
24788
24860
  None,
@@ -26349,6 +26421,15 @@ class NaItcmOverlay29Functions:
26349
26421
  None,
26350
26422
  )
26351
26423
 
26424
+ IsChargingAnyTwoTurnMove = Symbol(
26425
+ None,
26426
+ None,
26427
+ None,
26428
+ "IsChargingAnyTwoTurnMove",
26429
+ "Returns a boolean indicating whether or not the given entity is charging any two-turn move.\n\nr0: Entity pointer\nr1: Unused boolean which was supposed to make function return true if the entity is under the effect of Charge (the Electric-type move).\n However, the conditional which uses this boolean will never be activated, as the loop will always terminate before getting to it.\nreturn: bool",
26430
+ None,
26431
+ )
26432
+
26352
26433
  HasMaxGinsengBoost99 = Symbol(
26353
26434
  None,
26354
26435
  None,
@@ -29281,6 +29362,15 @@ class NaItcmOverlay29Data:
29281
29362
  "struct exclusive_item_effect_id_8[8]",
29282
29363
  )
29283
29364
 
29365
+ AI_THROWN_ITEM_ACTION_CHOICE_COUNT = Symbol(
29366
+ None,
29367
+ None,
29368
+ None,
29369
+ "AI_THROWN_ITEM_ACTION_CHOICE_COUNT",
29370
+ "[Runtime] Used to store the number of positions output by GetPossibleAiArcItemTargets and the number of directions/probabilities output by GetPossibleAiThrownItemDirections.",
29371
+ "uint32_t",
29372
+ )
29373
+
29284
29374
  EXCL_ITEM_EFFECTS_EVASION_BOOST = Symbol(
29285
29375
  None,
29286
29376
  None,
@@ -30973,6 +31063,33 @@ class NaItcmRamData:
30973
31063
  "struct loaded_attack_sprite_data*",
30974
31064
  )
30975
31065
 
31066
+ AI_THROWN_ITEM_DIRECTION_IS_USED = Symbol(
31067
+ None,
31068
+ None,
31069
+ None,
31070
+ "AI_THROWN_ITEM_DIRECTION_IS_USED",
31071
+ "[Runtime] Used in GetPossibleAiThrownItemDirections to indicate whether a certain direction enum value is already being used or not.",
31072
+ "bool[8]",
31073
+ )
31074
+
31075
+ AI_THROWN_ITEM_DIRECTIONS = Symbol(
31076
+ None,
31077
+ None,
31078
+ None,
31079
+ "AI_THROWN_ITEM_DIRECTIONS",
31080
+ "[Runtime] Used to store the directions output by GetPossibleAiThrownItemDirections.",
31081
+ "uint32_t[8]",
31082
+ )
31083
+
31084
+ AI_THROWN_ITEM_PROBABILITIES = Symbol(
31085
+ None,
31086
+ None,
31087
+ None,
31088
+ "AI_THROWN_ITEM_PROBABILITIES",
31089
+ "[Runtime] Used to store the probabilities matching the directions in THROWN_ITEM_DIRECTIONS.",
31090
+ "uint32_t[8]",
31091
+ )
31092
+
30976
31093
  ROLLOUT_ICE_BALL_MISSED = Symbol(
30977
31094
  None,
30978
31095
  None,
@@ -14555,6 +14555,11 @@ class Overlay29FunctionsProtocol(Protocol):
14555
14555
  None,
14556
14556
  ]
14557
14557
 
14558
+ SetDecoyAiTracker: Symbol[
14559
+ Optional[list[int]],
14560
+ None,
14561
+ ]
14562
+
14558
14563
  CheckSpawnThreshold: Symbol[
14559
14564
  Optional[list[int]],
14560
14565
  None,
@@ -14785,6 +14790,21 @@ class Overlay29FunctionsProtocol(Protocol):
14785
14790
  None,
14786
14791
  ]
14787
14792
 
14793
+ CheckVariousStatuses2: Symbol[
14794
+ Optional[list[int]],
14795
+ None,
14796
+ ]
14797
+
14798
+ CheckVariousConditions: Symbol[
14799
+ Optional[list[int]],
14800
+ None,
14801
+ ]
14802
+
14803
+ CheckVariousStatuses: Symbol[
14804
+ Optional[list[int]],
14805
+ None,
14806
+ ]
14807
+
14788
14808
  CanMonsterMoveInDirection: Symbol[
14789
14809
  Optional[list[int]],
14790
14810
  None,
@@ -14910,6 +14930,11 @@ class Overlay29FunctionsProtocol(Protocol):
14910
14930
  None,
14911
14931
  ]
14912
14932
 
14933
+ MonsterCanThrowItems: Symbol[
14934
+ Optional[list[int]],
14935
+ None,
14936
+ ]
14937
+
14913
14938
  UpdateStateFlags: Symbol[
14914
14939
  Optional[list[int]],
14915
14940
  None,
@@ -15205,6 +15230,21 @@ class Overlay29FunctionsProtocol(Protocol):
15205
15230
  None,
15206
15231
  ]
15207
15232
 
15233
+ AiDecideUseItem: Symbol[
15234
+ Optional[list[int]],
15235
+ None,
15236
+ ]
15237
+
15238
+ GetPossibleAiThrownItemDirections: Symbol[
15239
+ Optional[list[int]],
15240
+ None,
15241
+ ]
15242
+
15243
+ GetPossibleAiArcItemTargets: Symbol[
15244
+ Optional[list[int]],
15245
+ None,
15246
+ ]
15247
+
15208
15248
  TryNonLeaderItemPickUp: Symbol[
15209
15249
  Optional[list[int]],
15210
15250
  None,
@@ -16075,6 +16115,11 @@ class Overlay29FunctionsProtocol(Protocol):
16075
16115
  None,
16076
16116
  ]
16077
16117
 
16118
+ IsChargingAnyTwoTurnMove: Symbol[
16119
+ Optional[list[int]],
16120
+ None,
16121
+ ]
16122
+
16078
16123
  HasMaxGinsengBoost99: Symbol[
16079
16124
  Optional[list[int]],
16080
16125
  None,
@@ -17708,6 +17753,11 @@ class Overlay29DataProtocol(Protocol):
17708
17753
  Optional[int],
17709
17754
  ]
17710
17755
 
17756
+ AI_THROWN_ITEM_ACTION_CHOICE_COUNT: Symbol[
17757
+ Optional[list[int]],
17758
+ Optional[int],
17759
+ ]
17760
+
17711
17761
  EXCL_ITEM_EFFECTS_EVASION_BOOST: Symbol[
17712
17762
  Optional[list[int]],
17713
17763
  Optional[int],
@@ -18778,6 +18828,21 @@ class RamDataProtocol(Protocol):
18778
18828
  Optional[int],
18779
18829
  ]
18780
18830
 
18831
+ AI_THROWN_ITEM_DIRECTION_IS_USED: Symbol[
18832
+ Optional[list[int]],
18833
+ Optional[int],
18834
+ ]
18835
+
18836
+ AI_THROWN_ITEM_DIRECTIONS: Symbol[
18837
+ Optional[list[int]],
18838
+ Optional[int],
18839
+ ]
18840
+
18841
+ AI_THROWN_ITEM_PROBABILITIES: Symbol[
18842
+ Optional[list[int]],
18843
+ Optional[int],
18844
+ ]
18845
+
18781
18846
  ROLLOUT_ICE_BALL_MISSED: Symbol[
18782
18847
  Optional[list[int]],
18783
18848
  Optional[int],
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: pmdsky-debug-py
3
- Version: 10.0.24
3
+ Version: 10.0.26
4
4
  Summary: pmdsky-debug symbols for Python.
5
5
  Author-email: Marco 'Capypara' Köpcke <hello@capypara.de>
6
6
  License: MIT
@@ -0,0 +1,14 @@
1
+ pmdsky_debug_py/__init__.py,sha256=xvXjdxEqeoQaaS6ssZYVI9jARzv5M4q6FNwA3Z6fOw4,1831
2
+ pmdsky_debug_py/_release.py,sha256=IFmu9W2IMKCDipnYJVJtJyx6_Ik0aBzcRvtPqW5QajM,31
3
+ pmdsky_debug_py/eu.py,sha256=XxKfSOvehHFSEobRMQt37k9UtKGBOoIIs0YIcXnGa1g,1107715
4
+ pmdsky_debug_py/eu_itcm.py,sha256=xnArhVivFjYBiHJmpuAWUT6m_D7Kqeiqqo7njyE3xtE,1057806
5
+ pmdsky_debug_py/jp.py,sha256=0NhVX2F27mwxBw3xH8QE83kh1YfhGARSCd54ezbGCsc,1104177
6
+ pmdsky_debug_py/jp_itcm.py,sha256=n9GHMXvzYgz9qvXU3ZG2eE4EbnsMfPgrpS9JZqPVZQY,1057796
7
+ pmdsky_debug_py/na.py,sha256=8ad9tV1lGMK5fyeuuMdpPOf5irZLdxpxvsIK7gLfhhA,1108723
8
+ pmdsky_debug_py/na_itcm.py,sha256=f3EOGphMf1_71Fv7_GjvSaIulIOJkVIkFevAfO80cUQ,1057826
9
+ pmdsky_debug_py/protocol.py,sha256=RHgZ9O1kK7TELA3kzsPRQWSmhWdqza5C5orxh0al0wo,326510
10
+ pmdsky_debug_py/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
+ pmdsky_debug_py-10.0.26.dist-info/METADATA,sha256=bUPxFmXfxGtZgOBhCuJBB4sar_rX3874BnS2K73cFCU,1374
12
+ pmdsky_debug_py-10.0.26.dist-info/WHEEL,sha256=UvcQYKBHoFqaQd6LKyqHw9fxEolWLQnlzP0h_LgJAfI,91
13
+ pmdsky_debug_py-10.0.26.dist-info/top_level.txt,sha256=cqvpcJbud2s8IyBAc1MfCySwniko_6qO5LWSSxNIoXI,16
14
+ pmdsky_debug_py-10.0.26.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: setuptools (73.0.1)
2
+ Generator: setuptools (74.0.0)
3
3
  Root-Is-Purelib: true
4
4
  Tag: py3-none-any
5
5
 
@@ -1,14 +0,0 @@
1
- pmdsky_debug_py/__init__.py,sha256=xvXjdxEqeoQaaS6ssZYVI9jARzv5M4q6FNwA3Z6fOw4,1831
2
- pmdsky_debug_py/_release.py,sha256=4TcfztC8mVpEEIVFvmmRFV8Lpc7VdWWT8ENJQdnk6Fs,31
3
- pmdsky_debug_py/eu.py,sha256=K6UXvAxST5LHTpwvvn1r8cZNU5B1kX50Pkp8jvj5P_0,1101892
4
- pmdsky_debug_py/eu_itcm.py,sha256=K7kzXjZEJxR6KzOF6XEEPDUoVRITgomdhMgU3TlQwNc,1052140
5
- pmdsky_debug_py/jp.py,sha256=lx2AkWautzJxGPiJ0KvOJvqIminRMAXzsDSBa5J1gMY,1098403
6
- pmdsky_debug_py/jp_itcm.py,sha256=sLfkbfD-s8Wur8J2F7rVIsYUOkzEm-PVA3AVv6SIsaI,1052130
7
- pmdsky_debug_py/na.py,sha256=KLdF3-dJONPSrhtzuriA_ED_n0p9E3kcdJmUfkjOWfE,1102937
8
- pmdsky_debug_py/na_itcm.py,sha256=_ETqTwiDhEXf--oYREnlgrbCRYxTsG6GLZKU_JFKsLM,1052160
9
- pmdsky_debug_py/protocol.py,sha256=1sfuOEO4hj3qoao_pKshyM2AYbAxQW1P10u_34HCLy8,325324
10
- pmdsky_debug_py/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
11
- pmdsky_debug_py-10.0.24.dist-info/METADATA,sha256=6awy1b6GZsQi-tWlOI_lwh_L2edW8TZWeZbvDlEMTZ8,1374
12
- pmdsky_debug_py-10.0.24.dist-info/WHEEL,sha256=Mdi9PDNwEZptOjTlUcAth7XJDFtKrHYaQMPulZeBCiQ,91
13
- pmdsky_debug_py-10.0.24.dist-info/top_level.txt,sha256=cqvpcJbud2s8IyBAc1MfCySwniko_6qO5LWSSxNIoXI,16
14
- pmdsky_debug_py-10.0.24.dist-info/RECORD,,