isaacscript-common 6.13.0 → 6.16.0

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 (144) hide show
  1. package/dist/callbacks/postGridEntityCustomCollision.d.ts +2 -0
  2. package/dist/callbacks/postGridEntityCustomCollision.d.ts.map +1 -0
  3. package/dist/callbacks/postGridEntityCustomCollision.lua +71 -0
  4. package/dist/callbacks/postGridEntityCustomRender.lua +0 -7
  5. package/dist/callbacks/postGridEntityCustomUpdate.lua +0 -7
  6. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.d.ts +6 -0
  7. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.d.ts.map +1 -0
  8. package/dist/callbacks/subscriptions/postGridEntityCustomBroken.lua +29 -0
  9. package/dist/callbacks/subscriptions/postGridEntityCustomCollision.d.ts +6 -0
  10. package/dist/callbacks/subscriptions/postGridEntityCustomCollision.d.ts.map +1 -0
  11. package/dist/callbacks/subscriptions/postGridEntityCustomCollision.lua +29 -0
  12. package/dist/enums/ModCallbackCustom.d.ts +96 -62
  13. package/dist/enums/ModCallbackCustom.d.ts.map +1 -1
  14. package/dist/enums/ModCallbackCustom.lua +64 -60
  15. package/dist/enums/private/SerializationBrand.d.ts +1 -1
  16. package/dist/enums/private/SerializationBrand.lua +1 -1
  17. package/dist/features/customGridEntity.d.ts +7 -3
  18. package/dist/features/customGridEntity.d.ts.map +1 -1
  19. package/dist/features/customGridEntity.lua +67 -7
  20. package/dist/features/extraConsoleCommands/exports.d.ts +4 -3
  21. package/dist/features/extraConsoleCommands/exports.d.ts.map +1 -1
  22. package/dist/features/extraConsoleCommands/exports.lua +4 -3
  23. package/dist/features/extraConsoleCommands/init.lua +1 -0
  24. package/dist/functions/collectibles.d.ts +6 -2
  25. package/dist/functions/collectibles.d.ts.map +1 -1
  26. package/dist/functions/collectibles.lua +4 -2
  27. package/dist/functions/color.d.ts +20 -14
  28. package/dist/functions/color.d.ts.map +1 -1
  29. package/dist/functions/color.lua +78 -73
  30. package/dist/functions/deepCopy.d.ts.map +1 -1
  31. package/dist/functions/deepCopy.lua +22 -1
  32. package/dist/functions/gridEntities.d.ts +2 -36
  33. package/dist/functions/gridEntities.d.ts.map +1 -1
  34. package/dist/functions/gridEntities.lua +2 -78
  35. package/dist/functions/isaacAPIClass.d.ts +1 -1
  36. package/dist/functions/isaacAPIClass.d.ts.map +1 -1
  37. package/dist/functions/itemPool.d.ts +10 -0
  38. package/dist/functions/itemPool.d.ts.map +1 -0
  39. package/dist/functions/itemPool.lua +116 -0
  40. package/dist/functions/kColor.d.ts +20 -14
  41. package/dist/functions/kColor.d.ts.map +1 -1
  42. package/dist/functions/kColor.lua +65 -60
  43. package/dist/functions/mergeTests.lua +2 -2
  44. package/dist/functions/npcs.d.ts +1 -29
  45. package/dist/functions/npcs.d.ts.map +1 -1
  46. package/dist/functions/npcs.lua +0 -45
  47. package/dist/functions/projectiles.d.ts +32 -0
  48. package/dist/functions/projectiles.d.ts.map +1 -0
  49. package/dist/functions/projectiles.lua +73 -0
  50. package/dist/functions/random.d.ts +1 -1
  51. package/dist/functions/random.lua +1 -1
  52. package/dist/functions/rng.d.ts +11 -15
  53. package/dist/functions/rng.d.ts.map +1 -1
  54. package/dist/functions/rng.lua +32 -52
  55. package/dist/functions/rockAlt.d.ts +48 -0
  56. package/dist/functions/rockAlt.d.ts.map +1 -0
  57. package/dist/functions/rockAlt.lua +365 -0
  58. package/dist/functions/saveFile.d.ts +8 -7
  59. package/dist/functions/saveFile.d.ts.map +1 -1
  60. package/dist/functions/saveFile.lua +10 -96
  61. package/dist/functions/serialization.d.ts +26 -7
  62. package/dist/functions/serialization.d.ts.map +1 -1
  63. package/dist/functions/serialization.lua +51 -19
  64. package/dist/functions/table.d.ts +2 -2
  65. package/dist/functions/table.lua +2 -2
  66. package/dist/functions/trinketGive.d.ts +13 -0
  67. package/dist/functions/trinketGive.d.ts.map +1 -1
  68. package/dist/functions/trinketGive.lua +16 -0
  69. package/dist/functions/tstlClass.d.ts +1 -1
  70. package/dist/functions/tstlClass.d.ts.map +1 -1
  71. package/dist/functions/vector.d.ts +21 -14
  72. package/dist/functions/vector.d.ts.map +1 -1
  73. package/dist/functions/vector.lua +58 -54
  74. package/dist/index.d.ts +2 -0
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.lua +16 -0
  77. package/dist/initCustomCallbacks.d.ts.map +1 -1
  78. package/dist/initCustomCallbacks.lua +3 -0
  79. package/dist/interfaces/AddCallbackParameterCustom.d.ts +4 -0
  80. package/dist/interfaces/AddCallbackParameterCustom.d.ts.map +1 -1
  81. package/dist/objects/callbackRegisterFunctions.d.ts.map +1 -1
  82. package/dist/objects/callbackRegisterFunctions.lua +6 -0
  83. package/dist/objects/isaacAPIClassTypeToFunctions.d.ts +12 -0
  84. package/dist/objects/isaacAPIClassTypeToFunctions.d.ts.map +1 -0
  85. package/dist/objects/isaacAPIClassTypeToFunctions.lua +25 -0
  86. package/dist/types/{private/IsaacAPIClass.d.ts → IsaacAPIClass.d.ts} +0 -0
  87. package/dist/types/IsaacAPIClass.d.ts.map +1 -0
  88. package/dist/types/{private/IsaacAPIClass.lua → IsaacAPIClass.lua} +0 -0
  89. package/dist/types/{private/SerializedIsaacAPIClass.d.ts → SerializedIsaacAPIClass.d.ts} +0 -0
  90. package/dist/types/SerializedIsaacAPIClass.d.ts.map +1 -0
  91. package/dist/types/{private/SerializedIsaacAPIClass.lua → SerializedIsaacAPIClass.lua} +0 -0
  92. package/dist/types/{private/TSTLClass.d.ts → TSTLClass.d.ts} +0 -0
  93. package/dist/types/TSTLClass.d.ts.map +1 -0
  94. package/dist/types/{private/TSTLClass.lua → TSTLClass.lua} +0 -0
  95. package/package.json +2 -2
  96. package/src/callbacks/postGridEntityCustomCollision.ts +74 -0
  97. package/src/callbacks/postGridEntityCustomRender.ts +1 -17
  98. package/src/callbacks/postGridEntityCustomUpdate.ts +1 -17
  99. package/src/callbacks/subscriptions/postGridEntityCustomBroken.ts +41 -0
  100. package/src/callbacks/subscriptions/postGridEntityCustomCollision.ts +43 -0
  101. package/src/enums/ModCallbackCustom.ts +38 -2
  102. package/src/enums/private/SerializationBrand.ts +1 -1
  103. package/src/features/customGridEntity.ts +78 -2
  104. package/src/features/extraConsoleCommands/exports.ts +4 -3
  105. package/src/features/extraConsoleCommands/init.ts +1 -0
  106. package/src/features/extraConsoleCommands/listCommands.ts +2 -2
  107. package/src/functions/collectibles.ts +6 -2
  108. package/src/functions/color.ts +89 -87
  109. package/src/functions/deepCopy.ts +15 -2
  110. package/src/functions/gridEntities.ts +2 -77
  111. package/src/functions/isaacAPIClass.ts +1 -1
  112. package/src/functions/itemPool.ts +153 -0
  113. package/src/functions/kColor.ts +87 -84
  114. package/src/functions/mergeTests.ts +2 -2
  115. package/src/functions/npcs.ts +1 -58
  116. package/src/functions/projectiles.ts +78 -0
  117. package/src/functions/random.ts +1 -1
  118. package/src/functions/rng.ts +45 -65
  119. package/src/functions/rockAlt.ts +396 -0
  120. package/src/functions/saveFile.ts +13 -119
  121. package/src/functions/serialization.ts +81 -25
  122. package/src/functions/table.ts +2 -2
  123. package/src/functions/trinketGive.ts +21 -0
  124. package/src/functions/tstlClass.ts +1 -1
  125. package/src/functions/vector.ts +78 -74
  126. package/src/index.ts +2 -0
  127. package/src/initCustomCallbacks.ts +2 -0
  128. package/src/interfaces/AddCallbackParameterCustom.ts +4 -0
  129. package/src/objects/callbackRegisterFunctions.ts +6 -0
  130. package/src/objects/isaacAPIClassTypeToFunctions.ts +63 -0
  131. package/src/types/{private/IsaacAPIClass.ts → IsaacAPIClass.ts} +0 -0
  132. package/src/types/{private/SerializedIsaacAPIClass.ts → SerializedIsaacAPIClass.ts} +0 -0
  133. package/src/types/{private/TSTLClass.ts → TSTLClass.ts} +0 -0
  134. package/dist/objects/isaacAPIClassTypeToCopyFunction.d.ts +0 -6
  135. package/dist/objects/isaacAPIClassTypeToCopyFunction.d.ts.map +0 -1
  136. package/dist/objects/isaacAPIClassTypeToCopyFunction.lua +0 -13
  137. package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts +0 -5
  138. package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.d.ts.map +0 -1
  139. package/dist/objects/serializedIsaacAPIClassTypeToIdentityFunction.lua +0 -13
  140. package/dist/types/private/IsaacAPIClass.d.ts.map +0 -1
  141. package/dist/types/private/SerializedIsaacAPIClass.d.ts.map +0 -1
  142. package/dist/types/private/TSTLClass.d.ts.map +0 -1
  143. package/src/objects/isaacAPIClassTypeToCopyFunction.ts +0 -18
  144. package/src/objects/serializedIsaacAPIClassTypeToIdentityFunction.ts +0 -14
@@ -56,124 +56,128 @@ ____exports.ModCallbackCustom.POST_GRID_ENTITY_BROKEN = 23
56
56
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_BROKEN] = "POST_GRID_ENTITY_BROKEN"
57
57
  ____exports.ModCallbackCustom.POST_GRID_ENTITY_COLLISION = 24
58
58
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_COLLISION] = "POST_GRID_ENTITY_COLLISION"
59
- ____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER = 25
59
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN = 25
60
+ ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_BROKEN] = "POST_GRID_ENTITY_CUSTOM_BROKEN"
61
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION = 26
62
+ ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_COLLISION] = "POST_GRID_ENTITY_CUSTOM_COLLISION"
63
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER = 27
60
64
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_RENDER] = "POST_GRID_ENTITY_CUSTOM_RENDER"
61
- ____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE = 26
65
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE = 28
62
66
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_CUSTOM_UPDATE] = "POST_GRID_ENTITY_CUSTOM_UPDATE"
63
- ____exports.ModCallbackCustom.POST_GRID_ENTITY_INIT = 27
67
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_INIT = 29
64
68
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_INIT] = "POST_GRID_ENTITY_INIT"
65
- ____exports.ModCallbackCustom.POST_GRID_ENTITY_REMOVE = 28
69
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_REMOVE = 30
66
70
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_REMOVE] = "POST_GRID_ENTITY_REMOVE"
67
- ____exports.ModCallbackCustom.POST_GRID_ENTITY_RENDER = 29
71
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_RENDER = 31
68
72
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_RENDER] = "POST_GRID_ENTITY_RENDER"
69
- ____exports.ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED = 30
73
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED = 32
70
74
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_STATE_CHANGED] = "POST_GRID_ENTITY_STATE_CHANGED"
71
- ____exports.ModCallbackCustom.POST_GRID_ENTITY_UPDATE = 31
75
+ ____exports.ModCallbackCustom.POST_GRID_ENTITY_UPDATE = 33
72
76
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_GRID_ENTITY_UPDATE] = "POST_GRID_ENTITY_UPDATE"
73
- ____exports.ModCallbackCustom.POST_HOLY_MANTLE_REMOVED = 32
77
+ ____exports.ModCallbackCustom.POST_HOLY_MANTLE_REMOVED = 34
74
78
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_HOLY_MANTLE_REMOVED] = "POST_HOLY_MANTLE_REMOVED"
75
- ____exports.ModCallbackCustom.POST_ITEM_DISCHARGE = 33
79
+ ____exports.ModCallbackCustom.POST_ITEM_DISCHARGE = 35
76
80
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ITEM_DISCHARGE] = "POST_ITEM_DISCHARGE"
77
- ____exports.ModCallbackCustom.POST_ITEM_PICKUP = 34
81
+ ____exports.ModCallbackCustom.POST_ITEM_PICKUP = 36
78
82
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ITEM_PICKUP] = "POST_ITEM_PICKUP"
79
- ____exports.ModCallbackCustom.POST_KNIFE_INIT_LATE = 35
83
+ ____exports.ModCallbackCustom.POST_KNIFE_INIT_LATE = 37
80
84
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_KNIFE_INIT_LATE] = "POST_KNIFE_INIT_LATE"
81
- ____exports.ModCallbackCustom.POST_LASER_INIT_LATE = 36
85
+ ____exports.ModCallbackCustom.POST_LASER_INIT_LATE = 38
82
86
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_LASER_INIT_LATE] = "POST_LASER_INIT_LATE"
83
- ____exports.ModCallbackCustom.POST_NEW_LEVEL_REORDERED = 37
87
+ ____exports.ModCallbackCustom.POST_NEW_LEVEL_REORDERED = 39
84
88
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_LEVEL_REORDERED] = "POST_NEW_LEVEL_REORDERED"
85
- ____exports.ModCallbackCustom.POST_NEW_ROOM_EARLY = 38
89
+ ____exports.ModCallbackCustom.POST_NEW_ROOM_EARLY = 40
86
90
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_ROOM_EARLY] = "POST_NEW_ROOM_EARLY"
87
- ____exports.ModCallbackCustom.POST_NEW_ROOM_REORDERED = 39
91
+ ____exports.ModCallbackCustom.POST_NEW_ROOM_REORDERED = 41
88
92
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NEW_ROOM_REORDERED] = "POST_NEW_ROOM_REORDERED"
89
- ____exports.ModCallbackCustom.POST_NPC_INIT_LATE = 40
93
+ ____exports.ModCallbackCustom.POST_NPC_INIT_LATE = 42
90
94
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_INIT_LATE] = "POST_NPC_INIT_LATE"
91
- ____exports.ModCallbackCustom.POST_NPC_STATE_CHANGED = 41
95
+ ____exports.ModCallbackCustom.POST_NPC_STATE_CHANGED = 43
92
96
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_NPC_STATE_CHANGED] = "POST_NPC_STATE_CHANGED"
93
- ____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED = 42
97
+ ____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED = 44
94
98
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED] = "POST_PEFFECT_UPDATE_REORDERED"
95
- ____exports.ModCallbackCustom.POST_PICKUP_COLLECT = 43
99
+ ____exports.ModCallbackCustom.POST_PICKUP_COLLECT = 45
96
100
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_COLLECT] = "POST_PICKUP_COLLECT"
97
- ____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST = 44
101
+ ____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST = 46
98
102
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_FIRST] = "POST_PICKUP_INIT_FIRST"
99
- ____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE = 45
103
+ ____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE = 47
100
104
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_INIT_LATE] = "POST_PICKUP_INIT_LATE"
101
- ____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED = 46
105
+ ____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED = 48
102
106
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PICKUP_STATE_CHANGED] = "POST_PICKUP_STATE_CHANGED"
103
- ____exports.ModCallbackCustom.POST_PIT_RENDER = 47
107
+ ____exports.ModCallbackCustom.POST_PIT_RENDER = 49
104
108
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PIT_RENDER] = "POST_PIT_RENDER"
105
- ____exports.ModCallbackCustom.POST_PIT_UPDATE = 48
109
+ ____exports.ModCallbackCustom.POST_PIT_UPDATE = 50
106
110
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PIT_UPDATE] = "POST_PIT_UPDATE"
107
- ____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH = 49
111
+ ____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH = 51
108
112
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_HEALTH] = "POST_PLAYER_CHANGE_HEALTH"
109
- ____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE = 50
113
+ ____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE = 52
110
114
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_CHANGE_TYPE] = "POST_PLAYER_CHANGE_TYPE"
111
- ____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED = 51
115
+ ____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED = 53
112
116
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED] = "POST_PLAYER_COLLECTIBLE_ADDED"
113
- ____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED = 52
117
+ ____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED = 54
114
118
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_COLLECTIBLE_REMOVED] = "POST_PLAYER_COLLECTIBLE_REMOVED"
115
- ____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE = 53
119
+ ____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE = 55
116
120
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_FATAL_DAMAGE] = "POST_PLAYER_FATAL_DAMAGE"
117
- ____exports.ModCallbackCustom.POST_PLAYER_INIT_FIRST = 54
121
+ ____exports.ModCallbackCustom.POST_PLAYER_INIT_FIRST = 56
118
122
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_INIT_FIRST] = "POST_PLAYER_INIT_FIRST"
119
- ____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE = 55
123
+ ____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE = 57
120
124
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_INIT_LATE] = "POST_PLAYER_INIT_LATE"
121
- ____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED = 56
125
+ ____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED = 58
122
126
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_RENDER_REORDERED] = "POST_PLAYER_RENDER_REORDERED"
123
- ____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED = 57
127
+ ____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED = 59
124
128
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PLAYER_UPDATE_REORDERED] = "POST_PLAYER_UPDATE_REORDERED"
125
- ____exports.ModCallbackCustom.POST_POOP_RENDER = 58
129
+ ____exports.ModCallbackCustom.POST_POOP_RENDER = 60
126
130
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_POOP_RENDER] = "POST_POOP_RENDER"
127
- ____exports.ModCallbackCustom.POST_POOP_UPDATE = 59
131
+ ____exports.ModCallbackCustom.POST_POOP_UPDATE = 61
128
132
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_POOP_UPDATE] = "POST_POOP_UPDATE"
129
- ____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER = 60
133
+ ____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER = 62
130
134
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PRESSURE_PLATE_RENDER] = "POST_PRESSURE_PLATE_RENDER"
131
- ____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE = 61
135
+ ____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE = 63
132
136
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PRESSURE_PLATE_UPDATE] = "POST_PRESSURE_PLATE_UPDATE"
133
- ____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE = 62
137
+ ____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE = 64
134
138
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PROJECTILE_INIT_LATE] = "POST_PROJECTILE_INIT_LATE"
135
- ____exports.ModCallbackCustom.POST_PURCHASE = 63
139
+ ____exports.ModCallbackCustom.POST_PURCHASE = 65
136
140
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_PURCHASE] = "POST_PURCHASE"
137
- ____exports.ModCallbackCustom.POST_ROCK_RENDER = 64
141
+ ____exports.ModCallbackCustom.POST_ROCK_RENDER = 66
138
142
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROCK_RENDER] = "POST_ROCK_RENDER"
139
- ____exports.ModCallbackCustom.POST_ROCK_UPDATE = 65
143
+ ____exports.ModCallbackCustom.POST_ROCK_UPDATE = 67
140
144
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROCK_UPDATE] = "POST_ROCK_UPDATE"
141
- ____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED = 66
145
+ ____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED = 68
142
146
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_ROOM_CLEAR_CHANGED] = "POST_ROOM_CLEAR_CHANGED"
143
- ____exports.ModCallbackCustom.POST_SACRIFICE = 67
147
+ ____exports.ModCallbackCustom.POST_SACRIFICE = 69
144
148
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SACRIFICE] = "POST_SACRIFICE"
145
- ____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED = 68
149
+ ____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED = 70
146
150
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_ANIMATION_CHANGED] = "POST_SLOT_ANIMATION_CHANGED"
147
- ____exports.ModCallbackCustom.POST_SLOT_DESTROYED = 69
151
+ ____exports.ModCallbackCustom.POST_SLOT_DESTROYED = 71
148
152
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_DESTROYED] = "POST_SLOT_DESTROYED"
149
- ____exports.ModCallbackCustom.POST_SLOT_INIT = 70
153
+ ____exports.ModCallbackCustom.POST_SLOT_INIT = 72
150
154
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_INIT] = "POST_SLOT_INIT"
151
- ____exports.ModCallbackCustom.POST_SLOT_RENDER = 71
155
+ ____exports.ModCallbackCustom.POST_SLOT_RENDER = 73
152
156
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_RENDER] = "POST_SLOT_RENDER"
153
- ____exports.ModCallbackCustom.POST_SLOT_UPDATE = 72
157
+ ____exports.ModCallbackCustom.POST_SLOT_UPDATE = 74
154
158
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SLOT_UPDATE] = "POST_SLOT_UPDATE"
155
- ____exports.ModCallbackCustom.POST_SPIKES_RENDER = 73
159
+ ____exports.ModCallbackCustom.POST_SPIKES_RENDER = 75
156
160
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SPIKES_RENDER] = "POST_SPIKES_RENDER"
157
- ____exports.ModCallbackCustom.POST_SPIKES_UPDATE = 74
161
+ ____exports.ModCallbackCustom.POST_SPIKES_UPDATE = 76
158
162
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_SPIKES_UPDATE] = "POST_SPIKES_UPDATE"
159
- ____exports.ModCallbackCustom.POST_TEAR_INIT_LATE = 75
163
+ ____exports.ModCallbackCustom.POST_TEAR_INIT_LATE = 77
160
164
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_LATE] = "POST_TEAR_INIT_LATE"
161
- ____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE = 76
165
+ ____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE = 78
162
166
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TEAR_INIT_VERY_LATE] = "POST_TEAR_INIT_VERY_LATE"
163
- ____exports.ModCallbackCustom.POST_TNT_RENDER = 77
167
+ ____exports.ModCallbackCustom.POST_TNT_RENDER = 79
164
168
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TNT_RENDER] = "POST_TNT_RENDER"
165
- ____exports.ModCallbackCustom.POST_TNT_UPDATE = 78
169
+ ____exports.ModCallbackCustom.POST_TNT_UPDATE = 80
166
170
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TNT_UPDATE] = "POST_TNT_UPDATE"
167
- ____exports.ModCallbackCustom.POST_TRANSFORMATION = 79
171
+ ____exports.ModCallbackCustom.POST_TRANSFORMATION = 81
168
172
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TRANSFORMATION] = "POST_TRANSFORMATION"
169
- ____exports.ModCallbackCustom.POST_TRINKET_BREAK = 80
173
+ ____exports.ModCallbackCustom.POST_TRINKET_BREAK = 82
170
174
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.POST_TRINKET_BREAK] = "POST_TRINKET_BREAK"
171
- ____exports.ModCallbackCustom.PRE_BERSERK_DEATH = 81
175
+ ____exports.ModCallbackCustom.PRE_BERSERK_DEATH = 83
172
176
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_BERSERK_DEATH] = "PRE_BERSERK_DEATH"
173
- ____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE = 82
177
+ ____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE = 84
174
178
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_CUSTOM_REVIVE] = "PRE_CUSTOM_REVIVE"
175
- ____exports.ModCallbackCustom.PRE_ITEM_PICKUP = 83
179
+ ____exports.ModCallbackCustom.PRE_ITEM_PICKUP = 85
176
180
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_ITEM_PICKUP] = "PRE_ITEM_PICKUP"
177
- ____exports.ModCallbackCustom.PRE_NEW_LEVEL = 84
181
+ ____exports.ModCallbackCustom.PRE_NEW_LEVEL = 86
178
182
  ____exports.ModCallbackCustom[____exports.ModCallbackCustom.PRE_NEW_LEVEL] = "PRE_NEW_LEVEL"
179
183
  return ____exports
@@ -2,7 +2,7 @@
2
2
  * During serialization, we write an arbitrary string key to the object with a value of an empty
3
3
  * string. This is used during deserialization to instantiate the correct type of object.
4
4
  *
5
- * Note that we do not bother branding TSTL classes because we have no way to invoke the proper
5
+ * Note that we do not bother branding TSTL classes because we have no way to run the proper
6
6
  * constructor during deserialization.
7
7
  */
8
8
  export declare enum SerializationBrand {
@@ -2,7 +2,7 @@ local ____exports = {}
2
2
  --- During serialization, we write an arbitrary string key to the object with a value of an empty
3
3
  -- string. This is used during deserialization to instantiate the correct type of object.
4
4
  --
5
- -- Note that we do not bother branding TSTL classes because we have no way to invoke the proper
5
+ -- Note that we do not bother branding TSTL classes because we have no way to run the proper
6
6
  -- constructor during deserialization.
7
7
  ____exports.SerializationBrand = {}
8
8
  ____exports.SerializationBrand.DEFAULT_MAP = "__TSTL_DEFAULT_MAP"
@@ -25,8 +25,12 @@ import { CustomGridEntityData } from "../interfaces/CustomGridEntityData";
25
25
  * @param defaultAnimation Optional. The name of the animation to play after the sprite is
26
26
  * initialized and after the player re-enters a room with this grid entity
27
27
  * in it. If not specified, the default animation in the anm2 will be used.
28
+ * @param breakable Optional. Whether or not an explosion will be able to break this grid entity.
29
+ * False by default. Use the `POST_GRID_ENTITY_CUSTOM_BROKEN` callback to detect
30
+ * when it breaks. Due to technical limitations, you can only set the grid entity
31
+ * to be breakable if it has a collision class.
28
32
  */
29
- export declare function spawnCustomGridEntity(gridEntityTypeCustom: GridEntityType, gridIndexOrPosition: int | Vector, gridCollisionClass: GridCollisionClass, anm2Path: string, defaultAnimation?: string): GridEntity;
33
+ export declare function spawnCustomGridEntity(gridEntityTypeCustom: GridEntityType, gridIndexOrPosition: int | Vector, gridCollisionClass: GridCollisionClass, anm2Path: string, defaultAnimation?: string, breakable?: boolean): GridEntity;
30
34
  /**
31
35
  * Helper function to remove a custom grid entity created by the `spawnCustomGrid` function.
32
36
  *
@@ -37,8 +41,8 @@ export declare function spawnCustomGridEntity(gridEntityTypeCustom: GridEntityTy
37
41
  * Default is true. This is generally a good idea because if the room is not
38
42
  * updated, you will be unable to spawn another grid entity on the same tile until
39
43
  * a frame has passed. However, doing this is expensive, since it involves a call
40
- * to `Isaac.GetRoomEntities`, so set it to false if you need to invoke this
41
- * function multiple times.
44
+ * to `Isaac.GetRoomEntities`, so set it to false if you need to run this function
45
+ * multiple times.
42
46
  * @returns The grid entity that was removed. Returns undefined if no grid entity was found at the
43
47
  * given location or if the given grid entity was not a custom grid entity.
44
48
  */
@@ -1 +1 @@
1
- {"version":3,"file":"customGridEntity.d.ts","sourceRoot":"","sources":["../../src/features/customGridEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAClB,cAAc,EAGf,MAAM,8BAA8B,CAAC;AAatC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AAsH1E;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,EAAE,cAAc,EACpC,mBAAmB,EAAE,GAAG,GAAG,MAAM,EACjC,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,GACxB,UAAU,CAgDZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,+BAA+B,EAAE,GAAG,GAAG,MAAM,GAAG,UAAU,EAC1D,UAAU,UAAO,GAChB,UAAU,GAAG,SAAS,CAqCxB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,KAAK,CAC5C;IAAC,UAAU,EAAE,UAAU;IAAE,IAAI,EAAE,oBAAoB;CAAC,CACrD,CAiBA"}
1
+ {"version":3,"file":"customGridEntity.d.ts","sourceRoot":"","sources":["../../src/features/customGridEntity.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,kBAAkB,EAClB,cAAc,EAGf,MAAM,8BAA8B,CAAC;AAgBtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oCAAoC,CAAC;AA0K1E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,wBAAgB,qBAAqB,CACnC,oBAAoB,EAAE,cAAc,EACpC,mBAAmB,EAAE,GAAG,GAAG,MAAM,EACjC,kBAAkB,EAAE,kBAAkB,EACtC,QAAQ,EAAE,MAAM,EAChB,gBAAgB,CAAC,EAAE,MAAM,EACzB,SAAS,UAAQ,GAChB,UAAU,CA8DZ;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAC9B,+BAA+B,EAAE,GAAG,GAAG,MAAM,GAAG,UAAU,EAC1D,UAAU,UAAO,GAChB,UAAU,GAAG,SAAS,CAqCxB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,IAAI,KAAK,CAC5C;IAAC,UAAU,EAAE,UAAU;IAAE,IAAI,EAAE,oBAAoB;CAAC,CACrD,CAiBA"}
@@ -1,16 +1,21 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local Map = ____lualib.Map
3
3
  local __TS__New = ____lualib.__TS__New
4
+ local Set = ____lualib.Set
4
5
  local __TS__Iterator = ____lualib.__TS__Iterator
5
6
  local ____exports = {}
6
- local preUseItemWeNeedToGoDeeper, postNewRoomReordered, v
7
+ local entityTakeDmgDummy, preUseItemWeNeedToGoDeeper, postNewRoomReordered, v
7
8
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
8
9
  local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
10
+ local DamageFlag = ____isaac_2Dtypescript_2Ddefinitions.DamageFlag
11
+ local EntityType = ____isaac_2Dtypescript_2Ddefinitions.EntityType
9
12
  local GridCollisionClass = ____isaac_2Dtypescript_2Ddefinitions.GridCollisionClass
10
13
  local GridEntityType = ____isaac_2Dtypescript_2Ddefinitions.GridEntityType
11
14
  local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
12
15
  local ____cachedClasses = require("cachedClasses")
13
16
  local game = ____cachedClasses.game
17
+ local ____postGridEntityCustomBroken = require("callbacks.subscriptions.postGridEntityCustomBroken")
18
+ local postGridEntityCustomBrokenFire = ____postGridEntityCustomBroken.postGridEntityCustomBrokenFire
14
19
  local ____DefaultMap = require("classes.DefaultMap")
15
20
  local DefaultMap = ____DefaultMap.DefaultMap
16
21
  local ____DecorationVariant = require("enums.DecorationVariant")
@@ -19,6 +24,10 @@ local ____ModCallbackCustom = require("enums.ModCallbackCustom")
19
24
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
20
25
  local ____featuresInitialized = require("featuresInitialized")
21
26
  local errorIfFeaturesNotInitialized = ____featuresInitialized.errorIfFeaturesNotInitialized
27
+ local ____entitiesSpecific = require("functions.entitiesSpecific")
28
+ local spawnNPC = ____entitiesSpecific.spawnNPC
29
+ local ____flag = require("functions.flag")
30
+ local hasFlag = ____flag.hasFlag
22
31
  local ____gridEntities = require("functions.gridEntities")
23
32
  local removeGridEntity = ____gridEntities.removeGridEntity
24
33
  local spawnGridEntityWithVariant = ____gridEntities.spawnGridEntityWithVariant
@@ -30,6 +39,32 @@ local ____runInNFrames = require("features.runInNFrames")
30
39
  local runNextGameFrame = ____runInNFrames.runNextGameFrame
31
40
  local ____exports = require("features.saveDataManager.exports")
32
41
  local saveDataManager = ____exports.saveDataManager
42
+ function entityTakeDmgDummy(self, tookDamage, _damageAmount, damageFlags, _damageSource, _damageCountdownFrames)
43
+ local ptrHash = GetPtrHash(tookDamage)
44
+ if not v.room.dummyPtrHashes:has(ptrHash) then
45
+ return nil
46
+ end
47
+ if not hasFlag(nil, damageFlags, DamageFlag.EXPLOSION) then
48
+ return false
49
+ end
50
+ local room = game:GetRoom()
51
+ local roomListIndex = getRoomListIndex(nil)
52
+ local roomCustomGridEntities = v.level.customGridEntities:get(roomListIndex)
53
+ if roomCustomGridEntities == nil then
54
+ return false
55
+ end
56
+ local gridIndex = room:GetGridIndex(tookDamage.Position)
57
+ local data = roomCustomGridEntities:get(gridIndex)
58
+ if data == nil then
59
+ return false
60
+ end
61
+ local gridEntity = room:GetGridEntity(gridIndex)
62
+ if gridEntity == nil then
63
+ error("Failed to get the grid entity for a custom grid entity that broke at grid index: " .. tostring(gridIndex))
64
+ end
65
+ postGridEntityCustomBrokenFire(nil, gridEntity, data.gridEntityTypeCustom)
66
+ return false
67
+ end
33
68
  function preUseItemWeNeedToGoDeeper(self, _collectibleType, _rng, player, _useFlags, _activeSlot, _customVarData)
34
69
  local room = game:GetRoom()
35
70
  local roomListIndex = getRoomListIndex(nil)
@@ -79,14 +114,14 @@ function postNewRoomReordered(self)
79
114
  local decoration = room:GetGridEntity(gridIndex)
80
115
  if decoration == nil then
81
116
  roomCustomGridEntities:delete(gridIndex)
82
- goto __continue13
117
+ goto __continue19
83
118
  end
84
119
  local sprite = decoration:GetSprite()
85
120
  sprite:Load(data.anm2Path, true)
86
121
  local animationToPlay = data.defaultAnimation == nil and sprite:GetDefaultAnimation() or data.defaultAnimation
87
122
  sprite:Play(animationToPlay, true)
88
123
  end
89
- ::__continue13::
124
+ ::__continue19::
90
125
  end
91
126
  end
92
127
  local FEATURE_NAME = "customGridEntity"
@@ -95,12 +130,16 @@ v = {
95
130
  DefaultMap,
96
131
  function() return __TS__New(Map) end
97
132
  )},
98
- room = {manuallyUsingShovel = false}
133
+ room = {
134
+ dummyPtrHashes = __TS__New(Set),
135
+ manuallyUsingShovel = false
136
+ }
99
137
  }
100
138
  ---
101
139
  -- @internal
102
140
  function ____exports.customGridEntityInit(self, mod)
103
141
  saveDataManager(nil, FEATURE_NAME, v)
142
+ mod:AddCallback(ModCallback.ENTITY_TAKE_DMG, entityTakeDmgDummy, EntityType.DUMMY)
104
143
  mod:AddCallback(ModCallback.PRE_USE_ITEM, preUseItemWeNeedToGoDeeper, CollectibleType.WE_NEED_TO_GO_DEEPER)
105
144
  mod:AddCallbackCustom(ModCallbackCustom.POST_NEW_ROOM_REORDERED, postNewRoomReordered)
106
145
  end
@@ -128,8 +167,18 @@ end
128
167
  -- @param defaultAnimation Optional. The name of the animation to play after the sprite is
129
168
  -- initialized and after the player re-enters a room with this grid entity
130
169
  -- in it. If not specified, the default animation in the anm2 will be used.
131
- function ____exports.spawnCustomGridEntity(self, gridEntityTypeCustom, gridIndexOrPosition, gridCollisionClass, anm2Path, defaultAnimation)
170
+ -- @param breakable Optional. Whether or not an explosion will be able to break this grid entity.
171
+ -- False by default. Use the `POST_GRID_ENTITY_CUSTOM_BROKEN` callback to detect
172
+ -- when it breaks. Due to technical limitations, you can only set the grid entity
173
+ -- to be breakable if it has a collision class.
174
+ function ____exports.spawnCustomGridEntity(self, gridEntityTypeCustom, gridIndexOrPosition, gridCollisionClass, anm2Path, defaultAnimation, breakable)
175
+ if breakable == nil then
176
+ breakable = false
177
+ end
132
178
  errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
179
+ if breakable and gridCollisionClass == GridCollisionClass.NONE then
180
+ error("Failed to spawn a custom grid entity because it is not possible to have breakable custom grid entities with a collision class of: GridCollisionClass.NONE (0)")
181
+ end
133
182
  local room = game:GetRoom()
134
183
  local roomListIndex = getRoomListIndex(nil)
135
184
  local gridIndex = isVector(nil, gridIndexOrPosition) and room:GetGridIndex(gridIndexOrPosition) or gridIndexOrPosition
@@ -153,6 +202,17 @@ function ____exports.spawnCustomGridEntity(self, gridEntityTypeCustom, gridIndex
153
202
  }
154
203
  local roomCustomGridEntities = v.level.customGridEntities:getAndSetDefault(roomListIndex)
155
204
  roomCustomGridEntities:set(gridIndex, customGridEntityData)
205
+ if breakable then
206
+ local position = room:GetGridPosition(gridIndex)
207
+ local dummy = spawnNPC(
208
+ nil,
209
+ EntityType.DUMMY,
210
+ 0,
211
+ 0,
212
+ position
213
+ )
214
+ dummy.Visible = false
215
+ end
156
216
  return decoration
157
217
  end
158
218
  --- Helper function to remove a custom grid entity created by the `spawnCustomGrid` function.
@@ -164,8 +224,8 @@ end
164
224
  -- Default is true. This is generally a good idea because if the room is not
165
225
  -- updated, you will be unable to spawn another grid entity on the same tile until
166
226
  -- a frame has passed. However, doing this is expensive, since it involves a call
167
- -- to `Isaac.GetRoomEntities`, so set it to false if you need to invoke this
168
- -- function multiple times.
227
+ -- to `Isaac.GetRoomEntities`, so set it to false if you need to run this function
228
+ -- multiple times.
169
229
  -- @returns The grid entity that was removed. Returns undefined if no grid entity was found at the
170
230
  -- given location or if the given grid entity was not a custom grid entity.
171
231
  function ____exports.removeCustomGrid(self, gridIndexOrPositionOrGridEntity, updateRoom)
@@ -10,9 +10,10 @@ export declare function enableExtraConsoleCommands(mod: ModUpgraded): void;
10
10
  *
11
11
  * The standard library comes with many existing console commands that are useful for debugging, but
12
12
  * you can also add your own commands that are useful for your particular mod. It's easier to add
13
- * commands to the existing command system than to add logic manually to the ExecuteCmd callback.
13
+ * commands to the existing command system than to add your own logic manually to the `EXECUTE_CMD`
14
+ * callback.
14
15
  *
15
- * Before using this function, you must first invoke `enableExtraConsoleCommands`.
16
+ * Before using this function, you must first run the `enableExtraConsoleCommands` function.
16
17
  */
17
18
  export declare function addConsoleCommand(commandName: string, commandFunction: (params: string) => void): void;
18
19
  /**
@@ -21,7 +22,7 @@ export declare function addConsoleCommand(commandName: string, commandFunction:
21
22
  * The standard library comes with many existing console commands that are useful for debugging. If
22
23
  * you want to disable one of them, use this function.
23
24
  *
24
- * Before using this function, you must first invoke `enableExtraConsoleCommands`.
25
+ * Before using this function, you must first run the `enableExtraConsoleCommands` function.
25
26
  */
26
27
  export declare function removeConsoleCommand(commandName: string): void;
27
28
  //# sourceMappingURL=exports.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/features/extraConsoleCommands/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQxD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAMjE;AAED;;;;;;;;GAQG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACxC,IAAI,CAoBN;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAc9D"}
1
+ {"version":3,"file":"exports.d.ts","sourceRoot":"","sources":["../../../src/features/extraConsoleCommands/exports.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,2BAA2B,CAAC;AAQxD;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAMjE;AAED;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,eAAe,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,GACxC,IAAI,CAoBN;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAc9D"}
@@ -21,9 +21,10 @@ end
21
21
  --
22
22
  -- The standard library comes with many existing console commands that are useful for debugging, but
23
23
  -- you can also add your own commands that are useful for your particular mod. It's easier to add
24
- -- commands to the existing command system than to add logic manually to the ExecuteCmd callback.
24
+ -- commands to the existing command system than to add your own logic manually to the `EXECUTE_CMD`
25
+ -- callback.
25
26
  --
26
- -- Before using this function, you must first invoke `enableExtraConsoleCommands`.
27
+ -- Before using this function, you must first run the `enableExtraConsoleCommands` function.
27
28
  function ____exports.addConsoleCommand(self, commandName, commandFunction)
28
29
  if not isExtraConsoleCommandsInitialized(nil) then
29
30
  error("The \"extraConsoleCommands\" feature is not initialized. Before adding extra console commands, you must first enable the feature by invoking the \"enableExtraConsoleCommands\" function.")
@@ -41,7 +42,7 @@ end
41
42
  -- The standard library comes with many existing console commands that are useful for debugging. If
42
43
  -- you want to disable one of them, use this function.
43
44
  --
44
- -- Before using this function, you must first invoke `enableExtraConsoleCommands`.
45
+ -- Before using this function, you must first run the `enableExtraConsoleCommands` function.
45
46
  function ____exports.removeConsoleCommand(self, commandName)
46
47
  if not isExtraConsoleCommandsInitialized(nil) then
47
48
  error("The \"extraConsoleCommands\" feature is not initialized. Before removing console commands, you must first enable the feature by invoking the \"enableExtraConsoleCommands\" function.")
@@ -164,6 +164,7 @@ function initMap(self)
164
164
  extraConsoleCommandsFunctionMap:set("tearDisplay", commandsDisplay.tearDisplay)
165
165
  extraConsoleCommandsFunctionMap:set("tears", commands.tears)
166
166
  extraConsoleCommandsFunctionMap:set("tearsDisplay", commandsDisplay.tearsDisplay)
167
+ extraConsoleCommandsFunctionMap:set("tests", commands.tests)
167
168
  extraConsoleCommandsFunctionMap:set("tntDisplay", commandsDisplay.tntDisplay)
168
169
  extraConsoleCommandsFunctionMap:set("tntsDisplay", commandsDisplay.tntsDisplay)
169
170
  extraConsoleCommandsFunctionMap:set("trapdoor", commands.trapdoorCommand)
@@ -101,10 +101,14 @@ export declare function getCollectibleMaxCharges(collectibleType: CollectibleTyp
101
101
  * ```
102
102
  */
103
103
  export declare function getCollectibleName(collectibleType: CollectibleType): string;
104
+ /**
105
+ * Helper function to get the "pedestal type" of a collectible. For example, it might be sitting on
106
+ * top of a broken Blood Donation Machine, or it might be sitting on top of an opened Spiked Chest.
107
+ */
104
108
  export declare function getCollectiblePedestalType(collectible: EntityPickup): CollectiblePedestalType;
105
109
  /**
106
- * Helper function to get the path to a collectible's quality. Returns 0 if the provided collectible
107
- * type was not valid.
110
+ * Helper function to get a collectible's quality. For example, Mom's Knife has a quality of 4.
111
+ * Returns 0 if the provided collectible type was not valid.
108
112
  */
109
113
  export declare function getCollectibleQuality(collectibleType: CollectibleType): int;
110
114
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"collectibles.d.ts","sourceRoot":"","sources":["../../src/functions/collectibles.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,eAAe,EAEf,aAAa,EAEb,QAAQ,EACR,WAAW,EAGZ,MAAM,8BAA8B,CAAC;AAkBtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAyB7D,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAEtE;AAED,6FAA6F;AAC7F,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,MAAM,GACd,OAAO,CAsBT;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,eAAe,GAC/B,MAAM,CAeR;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAC1C,eAAe,EAAE,eAAe,GAC/B,GAAG,CAYL;AAED;;;GAGG;AACH,wBAAgB,6BAA6B,CAC3C,eAAe,EAAE,eAAe,EAChC,MAAM,EAAE,YAAY,GACnB,WAAW,CAyBb;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,eAAe,EAAE,eAAe,GAC/B,MAAM,CAOR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiDG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,YAAY,GACxB,gBAAgB,CAsBlB;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,eAAe,GAC/B,GAAG,CAOL;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,eAAe,GAC/B,QAAQ,CAOV;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CACtC,eAAe,EAAE,eAAe,GAC/B,GAAG,CAOL;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAAC,eAAe,EAAE,eAAe,GAAG,MAAM,CAc3E;AAED,wBAAgB,0BAA0B,CACxC,WAAW,EAAE,YAAY,GACxB,uBAAuB,CAUzB;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,eAAe,EAAE,eAAe,GAAG,GAAG,CAO3E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,kBAAkB,CAChC,eAAe,EAAE,eAAe,GAC/B,QAAQ,CAAC,aAAa,CAAC,CAGzB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,yBAAyB,IAAI,eAAe,EAAE,CAS7D;AAED;;;;;;;GAOG;AACH,wBAAgB,8BAA8B,IAAI,eAAe,EAAE,CAKlE;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAG7E;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,WAAW,EAAE,YAAY,GAAG,OAAO,CAcrE;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAKnE;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,eAAe,EAAE,eAAe,GAAG,OAAO,CAG7E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAGT;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAET;AAED,wBAAgB,sBAAsB,CACpC,eAAe,EAAE,eAAe,GAC/B,OAAO,CAGT;AAED;;;;;;GAMG;AACH,wBAAgB,gCAAgC,CAC9C,eAAe,EAAE,eAAe,GAC/B,IAAI,CAQN;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAS5E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CASnE;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAUnE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,YAAY,GAAG,IAAI,CAuBtE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,YAAY,EACzB,OAAO,EAAE,MAAM,GAAG,SAAS,GAC1B,IAAI,CAeN;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,YAAY,EACzB,kBAAkB,EAAE,eAAe,GAClC,IAAI,CA2BN;AAED;;;GAGG;AACH,wBAAgB,qCAAqC,IAAI,IAAI,CAK5D"}
1
+ {"version":3,"file":"collectibles.d.ts","sourceRoot":"","sources":["../../src/functions/collectibles.ts"],"names":[],"mappings":"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"}
@@ -294,6 +294,8 @@ function ____exports.getCollectibleName(self, collectibleType)
294
294
  end
295
295
  return DEFAULT_COLLECTIBLE_NAME
296
296
  end
297
+ --- Helper function to get the "pedestal type" of a collectible. For example, it might be sitting on
298
+ -- top of a broken Blood Donation Machine, or it might be sitting on top of an opened Spiked Chest.
297
299
  function ____exports.getCollectiblePedestalType(self, collectible)
298
300
  if not isCollectible(nil, collectible) then
299
301
  local entityID = getEntityID(nil, collectible)
@@ -302,8 +304,8 @@ function ____exports.getCollectiblePedestalType(self, collectible)
302
304
  local sprite = collectible:GetSprite()
303
305
  return sprite:GetOverlayFrame()
304
306
  end
305
- --- Helper function to get the path to a collectible's quality. Returns 0 if the provided collectible
306
- -- type was not valid.
307
+ --- Helper function to get a collectible's quality. For example, Mom's Knife has a quality of 4.
308
+ -- Returns 0 if the provided collectible type was not valid.
307
309
  function ____exports.getCollectibleQuality(self, collectibleType)
308
310
  local itemConfigItem = itemConfig:GetCollectible(collectibleType)
309
311
  if itemConfigItem == nil then
@@ -1,24 +1,26 @@
1
1
  /// <reference types="typescript-to-lua/language-extensions" />
2
2
  /// <reference types="isaac-typescript-definitions" />
3
- import { SerializationType } from "../enums/SerializationType";
4
- declare type SerializedColor = LuaMap<string, unknown> & {
3
+ /// <reference types="isaac-typescript-definitions" />
4
+ /// <reference types="isaac-typescript-definitions" />
5
+ export declare type SerializedColor = LuaMap<string, unknown> & {
5
6
  readonly __serializedColorBrand: symbol;
6
7
  };
7
- interface CopyColorReturn {
8
- [SerializationType.NONE]: Color;
9
- [SerializationType.SERIALIZE]: SerializedColor;
10
- [SerializationType.DESERIALIZE]: Color;
11
- }
12
8
  export declare function colorEquals(color1: Color, color2: Color): boolean;
9
+ /** Helper function to copy a `Color` Isaac API class. */
10
+ export declare function copyColor(color: Color): Color;
11
+ /**
12
+ * Helper function to convert a `SerializedColor` object to a normal `Color` object. (This is used
13
+ * by the save data manager when reading data from the "save#.dat" file.)
14
+ */
15
+ export declare function deserializeColor(color: SerializedColor): Color;
13
16
  /**
14
- * Helper function to copy a `Color` object.
17
+ * Helper function to get a random color.
15
18
  *
16
- * @param color The Color object to copy. In the case of deserialization, this will actually be a
17
- * Lua table instead of an instantiated Color class.
18
- * @param serializationType Default is `SerializationType.NONE`.
19
+ * @param seedOrRNG Optional. The `Seed` or `RNG` object to use. If an `RNG` object is provided, the
20
+ * `RNG.Next` method will be called. Default is `getRandomSeed()`.
21
+ * @param alpha Optional. The alpha value to use. Default is 1.
19
22
  */
20
- export declare function copyColor<C extends Color | SerializedColor, S extends SerializationType>(color: C, serializationType: S): CopyColorReturn[S];
21
- export declare function copyColor<C extends Color | SerializedColor>(color: C): CopyColorReturn[SerializationType.NONE];
23
+ export declare function getRandomColor(seedOrRNG?: Seed | RNG, alpha?: number): Color;
22
24
  /** Helper function to check if something is an instantiated Color object. */
23
25
  export declare function isColor(object: unknown): object is Color;
24
26
  /**
@@ -26,5 +28,9 @@ export declare function isColor(object: unknown): object is Color;
26
28
  * manager and/or the `deepCopy` function.
27
29
  */
28
30
  export declare function isSerializedColor(object: unknown): object is SerializedColor;
29
- export {};
31
+ /**
32
+ * Helper function to convert a `Color` object to a `SerializedColor` object. (This is used by the
33
+ * save data manager when writing data from the "save#.dat" file.)
34
+ */
35
+ export declare function serializeColor(color: Color): SerializedColor;
30
36
  //# sourceMappingURL=color.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/functions/color.ts"],"names":[],"mappings":";;AACA,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAK/D,aAAK,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IAC/C,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC,CAAC;AAEF,UAAU,eAAe;IACvB,CAAC,iBAAiB,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC;IAChC,CAAC,iBAAiB,CAAC,SAAS,CAAC,EAAE,eAAe,CAAC;IAC/C,CAAC,iBAAiB,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC;CACxC;AAKD,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAEjE;AAED;;;;;;GAMG;AACH,wBAAgB,SAAS,CACvB,CAAC,SAAS,KAAK,GAAG,eAAe,EACjC,CAAC,SAAS,iBAAiB,EAC3B,KAAK,EAAE,CAAC,EAAE,iBAAiB,EAAE,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC;AACtD,wBAAgB,SAAS,CAAC,CAAC,SAAS,KAAK,GAAG,eAAe,EACzD,KAAK,EAAE,CAAC,GACP,eAAe,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;AAuE3C,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,KAAK,CAExD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,eAAe,CAM5E"}
1
+ {"version":3,"file":"color.d.ts","sourceRoot":"","sources":["../../src/functions/color.ts"],"names":[],"mappings":";;;;AAOA,oBAAY,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;IACtD,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;CACzC,CAAC;AAKF,wBAAgB,WAAW,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,GAAG,OAAO,CAEjE;AAED,yDAAyD;AACzD,wBAAgB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,KAAK,CAgB7C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,eAAe,GAAG,KAAK,CA8B9D;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,SAAS,GAAE,IAAI,GAAG,GAAqB,EACvC,KAAK,SAAI,GACR,KAAK,CAQP;AAED,6EAA6E;AAC7E,wBAAgB,OAAO,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,KAAK,CAExD;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,IAAI,eAAe,CAM5E;AACD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,eAAe,CAW5D"}