isaacscript-common 7.11.0 → 7.12.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.
@@ -0,0 +1,3 @@
1
+ export declare function customPickupInit(): void;
2
+ export declare function registerCustomPickup(): void;
3
+ //# sourceMappingURL=customPickup.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"customPickup.d.ts","sourceRoot":"","sources":["../../src/features/customPickup.ts"],"names":[],"mappings":"AAIA,wBAAgB,gBAAgB,IAAI,IAAI,CAAG;AAE3C,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -0,0 +1,10 @@
1
+ local ____exports = {}
2
+ local ____featuresInitialized = require("featuresInitialized")
3
+ local errorIfFeaturesNotInitialized = ____featuresInitialized.errorIfFeaturesNotInitialized
4
+ local FEATURE_NAME = "customPickup"
5
+ function ____exports.customPickupInit(self)
6
+ end
7
+ function ____exports.registerCustomPickup(self)
8
+ errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
9
+ end
10
+ return ____exports
@@ -1 +1 @@
1
- {"version":3,"file":"customStageGridEntities.d.ts","sourceRoot":"","sources":["../../../src/features/customStage/customStageGridEntities.ts"],"names":[],"mappings":";AAkBA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AASnE,0CAA0C;AAC1C,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CA4BN;AAED,oCAAoC;AACpC,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CA2BN;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAwBN;AAED,mCAAmC;AACnC,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAwBN;AAuDD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAwBN;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAsBN"}
1
+ {"version":3,"file":"customStageGridEntities.d.ts","sourceRoot":"","sources":["../../../src/features/customStage/customStageGridEntities.ts"],"names":[],"mappings":";AAkBA,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAC;AASnE,0CAA0C;AAC1C,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAwCN;AAED,oCAAoC;AACpC,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAyDN;AAED,mCAAmC;AACnC,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAwBN;AAED,mCAAmC;AACnC,wBAAgB,qBAAqB,CACnC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAwBN;AAuDD,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAwBN;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,WAAW,EACxB,UAAU,EAAE,UAAU,GACrB,IAAI,CAsBN"}
@@ -34,9 +34,9 @@ local ____v = require("features.customStage.v")
34
34
  local v = ____v.default
35
35
  function getNewDoorPNGPath(self, customStage, fileName)
36
36
  repeat
37
- local ____switch24 = fileName
38
- local ____cond24 = ____switch24 == "gfx/grid/door_01_normaldoor.anm2"
39
- if ____cond24 then
37
+ local ____switch30 = fileName
38
+ local ____cond30 = ____switch30 == "gfx/grid/door_01_normaldoor.anm2"
39
+ if ____cond30 then
40
40
  do
41
41
  local ____customStage_doorPNGPaths_normal_0 = customStage.doorPNGPaths
42
42
  if ____customStage_doorPNGPaths_normal_0 ~= nil then
@@ -45,8 +45,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
45
45
  return ____customStage_doorPNGPaths_normal_0
46
46
  end
47
47
  end
48
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_02_treasureroomdoor.anm2"
49
- if ____cond24 then
48
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_02_treasureroomdoor.anm2"
49
+ if ____cond30 then
50
50
  do
51
51
  local ____customStage_doorPNGPaths_treasureRoom_2 = customStage.doorPNGPaths
52
52
  if ____customStage_doorPNGPaths_treasureRoom_2 ~= nil then
@@ -55,8 +55,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
55
55
  return ____customStage_doorPNGPaths_treasureRoom_2
56
56
  end
57
57
  end
58
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_03_ambushroomdoor.anm2"
59
- if ____cond24 then
58
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_03_ambushroomdoor.anm2"
59
+ if ____cond30 then
60
60
  do
61
61
  local ____customStage_doorPNGPaths_normalChallengeRoom_4 = customStage.doorPNGPaths
62
62
  if ____customStage_doorPNGPaths_normalChallengeRoom_4 ~= nil then
@@ -65,8 +65,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
65
65
  return ____customStage_doorPNGPaths_normalChallengeRoom_4
66
66
  end
67
67
  end
68
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_04_selfsacrificeroomdoor.anm2"
69
- if ____cond24 then
68
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_04_selfsacrificeroomdoor.anm2"
69
+ if ____cond30 then
70
70
  do
71
71
  local ____customStage_doorPNGPaths_curseRoom_6 = customStage.doorPNGPaths
72
72
  if ____customStage_doorPNGPaths_curseRoom_6 ~= nil then
@@ -75,8 +75,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
75
75
  return ____customStage_doorPNGPaths_curseRoom_6
76
76
  end
77
77
  end
78
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_05_arcaderoomdoor.anm2"
79
- if ____cond24 then
78
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_05_arcaderoomdoor.anm2"
79
+ if ____cond30 then
80
80
  do
81
81
  local ____customStage_doorPNGPaths_arcade_8 = customStage.doorPNGPaths
82
82
  if ____customStage_doorPNGPaths_arcade_8 ~= nil then
@@ -85,8 +85,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
85
85
  return ____customStage_doorPNGPaths_arcade_8
86
86
  end
87
87
  end
88
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_07_devilroomdoor.anm2"
89
- if ____cond24 then
88
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_07_devilroomdoor.anm2"
89
+ if ____cond30 then
90
90
  do
91
91
  local ____customStage_doorPNGPaths_devilRoom_10 = customStage.doorPNGPaths
92
92
  if ____customStage_doorPNGPaths_devilRoom_10 ~= nil then
@@ -95,8 +95,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
95
95
  return ____customStage_doorPNGPaths_devilRoom_10
96
96
  end
97
97
  end
98
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_07_holyroomdoor.anm2"
99
- if ____cond24 then
98
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_07_holyroomdoor.anm2"
99
+ if ____cond30 then
100
100
  do
101
101
  local ____customStage_doorPNGPaths_angelRoom_12 = customStage.doorPNGPaths
102
102
  if ____customStage_doorPNGPaths_angelRoom_12 ~= nil then
@@ -105,8 +105,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
105
105
  return ____customStage_doorPNGPaths_angelRoom_12
106
106
  end
107
107
  end
108
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_08_holeinwall.anm2"
109
- if ____cond24 then
108
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_08_holeinwall.anm2"
109
+ if ____cond30 then
110
110
  do
111
111
  local ____customStage_doorPNGPaths_secretRoom_14 = customStage.doorPNGPaths
112
112
  if ____customStage_doorPNGPaths_secretRoom_14 ~= nil then
@@ -115,8 +115,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
115
115
  return ____customStage_doorPNGPaths_secretRoom_14
116
116
  end
117
117
  end
118
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_09_bossambushroomdoor.anm2"
119
- if ____cond24 then
118
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_09_bossambushroomdoor.anm2"
119
+ if ____cond30 then
120
120
  do
121
121
  local ____customStage_doorPNGPaths_bossChallengeRoom_16 = customStage.doorPNGPaths
122
122
  if ____customStage_doorPNGPaths_bossChallengeRoom_16 ~= nil then
@@ -125,8 +125,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
125
125
  return ____customStage_doorPNGPaths_bossChallengeRoom_16
126
126
  end
127
127
  end
128
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_10_bossroomdoor.anm2"
129
- if ____cond24 then
128
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_10_bossroomdoor.anm2"
129
+ if ____cond30 then
130
130
  do
131
131
  local ____customStage_doorPNGPaths_bossRoom_18 = customStage.doorPNGPaths
132
132
  if ____customStage_doorPNGPaths_bossRoom_18 ~= nil then
@@ -135,8 +135,8 @@ function getNewDoorPNGPath(self, customStage, fileName)
135
135
  return ____customStage_doorPNGPaths_bossRoom_18
136
136
  end
137
137
  end
138
- ____cond24 = ____cond24 or ____switch24 == "gfx/grid/door_15_bossrushdoor.anm2"
139
- if ____cond24 then
138
+ ____cond30 = ____cond30 or ____switch30 == "gfx/grid/door_15_bossrushdoor.anm2"
139
+ if ____cond30 then
140
140
  do
141
141
  local ____customStage_doorPNGPaths_bossRush_20 = customStage.doorPNGPaths
142
142
  if ____customStage_doorPNGPaths_bossRush_20 ~= nil then
@@ -157,10 +157,9 @@ function removeEntitiesSpawnedFromGridEntity(self, entities, gridEntity)
157
157
  end
158
158
  --- For `GridEntityType.DECORATION` (1)
159
159
  function ____exports.setCustomDecorationGraphics(self, customStage, gridEntity)
160
- if customStage.decorationsPNGPath == nil then
160
+ if customStage.decorationsPNGPath == nil and customStage.decorationsANM2Path == nil then
161
161
  return
162
162
  end
163
- local pngPath = removeCharactersBefore(nil, customStage.decorationsPNGPath, "gfx/")
164
163
  if isCustomGridEntity(nil, gridEntity) then
165
164
  return
166
165
  end
@@ -170,17 +169,23 @@ function ____exports.setCustomDecorationGraphics(self, customStage, gridEntity)
170
169
  end
171
170
  local sprite = gridEntity:GetSprite()
172
171
  local fileName = sprite:GetFilename()
173
- if string.lower(fileName) == "gfx/grid/props_01_basement.anm2" then
172
+ if string.lower(fileName) ~= "gfx/grid/props_01_basement.anm2" then
173
+ return
174
+ end
175
+ if customStage.decorationsANM2Path ~= nil then
176
+ local anm2Path = removeCharactersBefore(nil, customStage.decorationsANM2Path, "gfx/")
177
+ sprite:Load(anm2Path, true)
178
+ elseif customStage.decorationsPNGPath ~= nil then
179
+ local pngPath = removeCharactersBefore(nil, customStage.decorationsPNGPath, "gfx/")
174
180
  sprite:ReplaceSpritesheet(0, pngPath)
175
181
  sprite:LoadGraphics()
176
182
  end
177
183
  end
178
184
  --- For `GridEntityType.ROCK` (2)
179
185
  function ____exports.setCustomRockGraphics(self, customStage, gridEntity)
180
- if customStage.rocksPNGPath == nil then
186
+ if customStage.rocksPNGPath == nil and customStage.rocksANM2Path == nil then
181
187
  return
182
188
  end
183
- local pngPath = removeCharactersBefore(nil, customStage.rocksPNGPath, "gfx/")
184
189
  if isCustomGridEntity(nil, gridEntity) then
185
190
  return
186
191
  end
@@ -190,13 +195,34 @@ function ____exports.setCustomRockGraphics(self, customStage, gridEntity)
190
195
  end
191
196
  local sprite = gridEntity:GetSprite()
192
197
  local fileName = sprite:GetFilename()
193
- if fileName == "gfx/grid/grid_rock.anm2" then
194
- sprite:ReplaceSpritesheet(0, pngPath)
195
- sprite:LoadGraphics()
196
- elseif fileName == "gfx/grid/grid_pit.anm2" then
197
- sprite:ReplaceSpritesheet(1, pngPath)
198
- sprite:LoadGraphics()
199
- end
198
+ repeat
199
+ local ____switch13 = fileName
200
+ local ____cond13 = ____switch13 == "gfx/grid/grid_rock.anm2"
201
+ if ____cond13 then
202
+ do
203
+ if customStage.rocksANM2Path ~= nil then
204
+ local anm2Path = removeCharactersBefore(nil, customStage.rocksANM2Path, "gfx/")
205
+ sprite:Load(anm2Path, true)
206
+ elseif customStage.rocksPNGPath ~= nil then
207
+ local pngPath = removeCharactersBefore(nil, customStage.rocksPNGPath, "gfx/")
208
+ sprite:ReplaceSpritesheet(0, pngPath)
209
+ sprite:LoadGraphics()
210
+ end
211
+ break
212
+ end
213
+ end
214
+ ____cond13 = ____cond13 or ____switch13 == "gfx/grid/grid_pit.anm2"
215
+ if ____cond13 then
216
+ do
217
+ if customStage.rocksPNGPath ~= nil then
218
+ local pngPath = removeCharactersBefore(nil, customStage.rocksPNGPath, "gfx/")
219
+ sprite:ReplaceSpritesheet(1, pngPath)
220
+ sprite:LoadGraphics()
221
+ end
222
+ break
223
+ end
224
+ end
225
+ until true
200
226
  end
201
227
  --- For `GridEntityType.PIT` (7)
202
228
  function ____exports.setCustomPitGraphics(self, customStage, gridEntity)
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export { registerCharacterStats } from "./features/characterStats";
19
19
  export { getCollectibleItemPoolType } from "./features/collectibleItemPoolType";
20
20
  export { initCustomDoor, spawnCustomDoor } from "./features/customDoor";
21
21
  export { removeCustomGridEntity, spawnCustomGridEntity, } from "./features/customGridEntity";
22
+ export { registerCustomPickup } from "./features/customPickup";
22
23
  export * from "./features/customStage/exports";
23
24
  export * from "./features/customTrapdoor/exports";
24
25
  export * from "./features/debugDisplay/exports";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/index.lua CHANGED
@@ -156,6 +156,11 @@ do
156
156
  ____exports.removeCustomGridEntity = removeCustomGridEntity
157
157
  ____exports.spawnCustomGridEntity = spawnCustomGridEntity
158
158
  end
159
+ do
160
+ local ____customPickup = require("features.customPickup")
161
+ local registerCustomPickup = ____customPickup.registerCustomPickup
162
+ ____exports.registerCustomPickup = registerCustomPickup
163
+ end
159
164
  do
160
165
  local ____export = require("features.customStage.exports")
161
166
  for ____exportKey, ____exportValue in pairs(____export) do
@@ -1 +1 @@
1
- {"version":3,"file":"initFeatures.d.ts","sourceRoot":"","sources":["../src/initFeatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA6BpD,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAGnD"}
1
+ {"version":3,"file":"initFeatures.d.ts","sourceRoot":"","sources":["../src/initFeatures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AA8BpD,wBAAgB,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,IAAI,CAGnD"}
@@ -8,6 +8,8 @@ local ____collectibleItemPoolType = require("features.collectibleItemPoolType")
8
8
  local collectibleItemPoolTypeInit = ____collectibleItemPoolType.collectibleItemPoolTypeInit
9
9
  local ____customGridEntity = require("features.customGridEntity")
10
10
  local customGridEntityInit = ____customGridEntity.customGridEntityInit
11
+ local ____customPickup = require("features.customPickup")
12
+ local customPickupInit = ____customPickup.customPickupInit
11
13
  local ____init = require("features.customStage.init")
12
14
  local customStageInit = ____init.customStageInit
13
15
  local ____init = require("features.customTrapdoor.init")
@@ -63,6 +65,7 @@ function initFeaturesMajor(self, mod)
63
65
  customGridEntityInit(nil, mod)
64
66
  end
65
67
  function initFeaturesMinor(self, mod)
68
+ customPickupInit(nil)
66
69
  customTrapdoorInit(nil, mod)
67
70
  disableAllSoundInit(nil, mod)
68
71
  disableInputsInit(nil, mod)
@@ -119,8 +119,22 @@ export interface CustomStageTSConfig {
119
119
  *
120
120
  * If not specified, the vanilla Basement decorations spritesheet will be used. For reference,
121
121
  * this is located at: `resources/gfx/grid/props_01_basement.png`
122
+ *
123
+ * If you want to have custom animations for your decorations, then do not use this field and use
124
+ * `decorationsANM2Path` instead.
122
125
  */
123
126
  decorationsPNGPath?: string;
127
+ /**
128
+ * Optional. The full path to the anm2 file that contains the custom animations for the
129
+ * decorations of the floor.
130
+ *
131
+ * If not specified, the vanilla Basement decorations spritesheet will be used. For reference,
132
+ * this is located at: `resources/gfx/grid/props_01_basement.png`
133
+ *
134
+ * If you do not want to have custom animations for your decorations, then do not use this field
135
+ * and use `decorationsPNGPath` instead.
136
+ */
137
+ decorationsANM2Path?: string;
124
138
  /**
125
139
  * Optional. The full path to the spritesheet that contains the graphics of the rocks/blocks/urns
126
140
  * for the floor.
@@ -132,16 +146,49 @@ export interface CustomStageTSConfig {
132
146
  *
133
147
  * If not specified, the vanilla Basement rocks spritesheet will be used. For reference, this is
134
148
  * located at: `resources-dlc3/gfx/grid/rocks_basement.png`
149
+ *
150
+ * If you want to have custom animations for your rocks, then do not use this field and use
151
+ * `rocksANM2Path` instead.
135
152
  */
136
153
  rocksPNGPath?: string;
154
+ /**
155
+ * Optional. The full path to the anm2 file that contains the custom animations for the
156
+ * rocks/blocks/urns of the floor.
157
+ *
158
+ * If specified, it is assumed that you have your own custom rock alt type, and all vanilla
159
+ * rewards/enemies that spawn from urns will be automatically removed. Use the
160
+ * `POST_GRID_ENTITY_BROKEN` callback to make your own custom rewards. Or, if you want to emulate
161
+ * a vanilla urn/mushroom/skull/polyp/bucket, use the `spawnRockAltReward` helper function.
162
+ *
163
+ * If not specified, the vanilla Basement rocks spritesheet will be used. For reference, this is
164
+ * located at: `resources-dlc3/gfx/grid/rocks_basement.png`
165
+ *
166
+ * If you do not want to have custom animations for your rocks, then do not use this field and use
167
+ * `rocksPNGPath` instead.
168
+ */
169
+ rocksANM2Path?: string;
137
170
  /**
138
171
  * Optional. The full path to the spritesheet that contains the graphics of the pits for the
139
172
  * floor.
140
173
  *
141
174
  * If not specified, the vanilla Basement pits spritesheet will be used. For reference, this is
142
175
  * located at: `resources/gfx/grid/grid_pit.png`
176
+ *
177
+ * If you do not want to have custom animations for your pits, then do not use this field and use
178
+ * `pitsANM2Path` instead.
143
179
  */
144
180
  pitsPNGPath?: string;
181
+ /**
182
+ * Optional. The full path to the anm2 file that contains the custom animations for the pits of
183
+ * the floor.
184
+ *
185
+ * If not specified, the vanilla Basement pits spritesheet will be used. For reference, this is
186
+ * located at: `resources/gfx/grid/grid_pit.png`
187
+ *
188
+ * If you do not want to have custom animations for your pits, then do not use this field and use
189
+ * `pitsPNGPath` instead.
190
+ */
191
+ pitsANM2Path?: string;
145
192
  /**
146
193
  * Optional. A collection of paths that contain graphics for the doors of the floor. If not
147
194
  * specified, the doors for Basement will be used.
@@ -1 +1 @@
1
- {"version":3,"file":"CustomStageTSConfig.d.ts","sourceRoot":"","sources":["../../src/interfaces/CustomStageTSConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CustomStageTSConfig.d.ts","sourceRoot":"","sources":["../../src/interfaces/CustomStageTSConfig.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "7.11.0",
3
+ "version": "7.12.0",
4
4
  "description": "Helper functions and features for IsaacScript mods.",
5
5
  "keywords": [
6
6
  "isaac",
@@ -0,0 +1,9 @@
1
+ import { errorIfFeaturesNotInitialized } from "../featuresInitialized";
2
+
3
+ const FEATURE_NAME = "customPickup";
4
+
5
+ export function customPickupInit(): void {}
6
+
7
+ export function registerCustomPickup(): void {
8
+ errorIfFeaturesNotInitialized(FEATURE_NAME);
9
+ }
@@ -32,15 +32,13 @@ export function setCustomDecorationGraphics(
32
32
  ): void {
33
33
  // If the end-user did not specify custom decoration graphics, default to Basement graphics. (We
34
34
  // don't have to adjust anything for this case.)
35
- if (customStage.decorationsPNGPath === undefined) {
35
+ if (
36
+ customStage.decorationsPNGPath === undefined &&
37
+ customStage.decorationsANM2Path === undefined
38
+ ) {
36
39
  return;
37
40
  }
38
41
 
39
- const pngPath = removeCharactersBefore(
40
- customStage.decorationsPNGPath,
41
- "gfx/",
42
- );
43
-
44
42
  if (isCustomGridEntity(gridEntity)) {
45
43
  return;
46
44
  }
@@ -53,7 +51,21 @@ export function setCustomDecorationGraphics(
53
51
  const sprite = gridEntity.GetSprite();
54
52
  const fileName = sprite.GetFilename();
55
53
  // On Windows, this is: gfx/grid/Props_01_Basement.anm2
56
- if (fileName.toLowerCase() === "gfx/grid/props_01_basement.anm2") {
54
+ if (fileName.toLowerCase() !== "gfx/grid/props_01_basement.anm2") {
55
+ return;
56
+ }
57
+
58
+ if (customStage.decorationsANM2Path !== undefined) {
59
+ const anm2Path = removeCharactersBefore(
60
+ customStage.decorationsANM2Path,
61
+ "gfx/",
62
+ );
63
+ sprite.Load(anm2Path, true);
64
+ } else if (customStage.decorationsPNGPath !== undefined) {
65
+ const pngPath = removeCharactersBefore(
66
+ customStage.decorationsPNGPath,
67
+ "gfx/",
68
+ );
57
69
  sprite.ReplaceSpritesheet(0, pngPath);
58
70
  sprite.LoadGraphics();
59
71
  }
@@ -66,12 +78,13 @@ export function setCustomRockGraphics(
66
78
  ): void {
67
79
  // If the end-user did not specify custom rock graphics, default to Basement graphics. (We don't
68
80
  // have to adjust anything for this case.)
69
- if (customStage.rocksPNGPath === undefined) {
81
+ if (
82
+ customStage.rocksPNGPath === undefined &&
83
+ customStage.rocksANM2Path === undefined
84
+ ) {
70
85
  return;
71
86
  }
72
87
 
73
- const pngPath = removeCharactersBefore(customStage.rocksPNGPath, "gfx/");
74
-
75
88
  if (isCustomGridEntity(gridEntity)) {
76
89
  return;
77
90
  }
@@ -83,12 +96,41 @@ export function setCustomRockGraphics(
83
96
 
84
97
  const sprite = gridEntity.GetSprite();
85
98
  const fileName = sprite.GetFilename();
86
- if (fileName === "gfx/grid/grid_rock.anm2") {
87
- sprite.ReplaceSpritesheet(0, pngPath);
88
- sprite.LoadGraphics();
89
- } else if (fileName === "gfx/grid/grid_pit.anm2") {
90
- sprite.ReplaceSpritesheet(1, pngPath);
91
- sprite.LoadGraphics();
99
+
100
+ switch (fileName) {
101
+ case "gfx/grid/grid_rock.anm2": {
102
+ // The normal case of a rock.
103
+ if (customStage.rocksANM2Path !== undefined) {
104
+ const anm2Path = removeCharactersBefore(
105
+ customStage.rocksANM2Path,
106
+ "gfx/",
107
+ );
108
+ sprite.Load(anm2Path, true);
109
+ } else if (customStage.rocksPNGPath !== undefined) {
110
+ const pngPath = removeCharactersBefore(
111
+ customStage.rocksPNGPath,
112
+ "gfx/",
113
+ );
114
+ sprite.ReplaceSpritesheet(0, pngPath);
115
+ sprite.LoadGraphics();
116
+ }
117
+
118
+ break;
119
+ }
120
+
121
+ case "gfx/grid/grid_pit.anm2": {
122
+ // The case of when a rock is blown on a pit to make a bridge.
123
+ if (customStage.rocksPNGPath !== undefined) {
124
+ const pngPath = removeCharactersBefore(
125
+ customStage.rocksPNGPath,
126
+ "gfx/",
127
+ );
128
+ sprite.ReplaceSpritesheet(1, pngPath);
129
+ sprite.LoadGraphics();
130
+ }
131
+
132
+ break;
133
+ }
92
134
  }
93
135
  }
94
136
 
package/src/index.ts CHANGED
@@ -25,6 +25,7 @@ export {
25
25
  removeCustomGridEntity,
26
26
  spawnCustomGridEntity,
27
27
  } from "./features/customGridEntity";
28
+ export { registerCustomPickup } from "./features/customPickup";
28
29
  export * from "./features/customStage/exports";
29
30
  export * from "./features/customTrapdoor/exports";
30
31
  export * from "./features/debugDisplay/exports";
@@ -3,6 +3,7 @@ import { characterHealthConversionInit } from "./features/characterHealthConvers
3
3
  import { characterStatsInit } from "./features/characterStats";
4
4
  import { collectibleItemPoolTypeInit } from "./features/collectibleItemPoolType";
5
5
  import { customGridEntityInit } from "./features/customGridEntity";
6
+ import { customPickupInit } from "./features/customPickup";
6
7
  import { customStageInit } from "./features/customStage/init";
7
8
  import { customTrapdoorInit } from "./features/customTrapdoor/init";
8
9
  import { deployJSONRoomInit } from "./features/deployJSONRoom";
@@ -42,6 +43,7 @@ function initFeaturesMajor(mod: ModUpgraded) {
42
43
  }
43
44
 
44
45
  function initFeaturesMinor(mod: ModUpgraded) {
46
+ customPickupInit();
45
47
  customTrapdoorInit(mod);
46
48
  disableAllSoundInit(mod);
47
49
  disableInputsInit(mod);
@@ -132,9 +132,24 @@ export interface CustomStageTSConfig {
132
132
  *
133
133
  * If not specified, the vanilla Basement decorations spritesheet will be used. For reference,
134
134
  * this is located at: `resources/gfx/grid/props_01_basement.png`
135
+ *
136
+ * If you want to have custom animations for your decorations, then do not use this field and use
137
+ * `decorationsANM2Path` instead.
135
138
  */
136
139
  decorationsPNGPath?: string;
137
140
 
141
+ /**
142
+ * Optional. The full path to the anm2 file that contains the custom animations for the
143
+ * decorations of the floor.
144
+ *
145
+ * If not specified, the vanilla Basement decorations spritesheet will be used. For reference,
146
+ * this is located at: `resources/gfx/grid/props_01_basement.png`
147
+ *
148
+ * If you do not want to have custom animations for your decorations, then do not use this field
149
+ * and use `decorationsPNGPath` instead.
150
+ */
151
+ decorationsANM2Path?: string;
152
+
138
153
  /**
139
154
  * Optional. The full path to the spritesheet that contains the graphics of the rocks/blocks/urns
140
155
  * for the floor.
@@ -146,18 +161,53 @@ export interface CustomStageTSConfig {
146
161
  *
147
162
  * If not specified, the vanilla Basement rocks spritesheet will be used. For reference, this is
148
163
  * located at: `resources-dlc3/gfx/grid/rocks_basement.png`
164
+ *
165
+ * If you want to have custom animations for your rocks, then do not use this field and use
166
+ * `rocksANM2Path` instead.
149
167
  */
150
168
  rocksPNGPath?: string;
151
169
 
170
+ /**
171
+ * Optional. The full path to the anm2 file that contains the custom animations for the
172
+ * rocks/blocks/urns of the floor.
173
+ *
174
+ * If specified, it is assumed that you have your own custom rock alt type, and all vanilla
175
+ * rewards/enemies that spawn from urns will be automatically removed. Use the
176
+ * `POST_GRID_ENTITY_BROKEN` callback to make your own custom rewards. Or, if you want to emulate
177
+ * a vanilla urn/mushroom/skull/polyp/bucket, use the `spawnRockAltReward` helper function.
178
+ *
179
+ * If not specified, the vanilla Basement rocks spritesheet will be used. For reference, this is
180
+ * located at: `resources-dlc3/gfx/grid/rocks_basement.png`
181
+ *
182
+ * If you do not want to have custom animations for your rocks, then do not use this field and use
183
+ * `rocksPNGPath` instead.
184
+ */
185
+ rocksANM2Path?: string;
186
+
152
187
  /**
153
188
  * Optional. The full path to the spritesheet that contains the graphics of the pits for the
154
189
  * floor.
155
190
  *
156
191
  * If not specified, the vanilla Basement pits spritesheet will be used. For reference, this is
157
192
  * located at: `resources/gfx/grid/grid_pit.png`
193
+ *
194
+ * If you do not want to have custom animations for your pits, then do not use this field and use
195
+ * `pitsANM2Path` instead.
158
196
  */
159
197
  pitsPNGPath?: string;
160
198
 
199
+ /**
200
+ * Optional. The full path to the anm2 file that contains the custom animations for the pits of
201
+ * the floor.
202
+ *
203
+ * If not specified, the vanilla Basement pits spritesheet will be used. For reference, this is
204
+ * located at: `resources/gfx/grid/grid_pit.png`
205
+ *
206
+ * If you do not want to have custom animations for your pits, then do not use this field and use
207
+ * `pitsPNGPath` instead.
208
+ */
209
+ pitsANM2Path?: string;
210
+
161
211
  /**
162
212
  * Optional. A collection of paths that contain graphics for the doors of the floor. If not
163
213
  * specified, the doors for Basement will be used.