isaacscript-common 4.5.0 → 4.5.1

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 (48) hide show
  1. package/constants.d.ts +1 -1
  2. package/features/characterHealthConversion.lua +4 -1
  3. package/features/characterStats.lua +1 -1
  4. package/features/collectibleItemPoolType.lua +2 -2
  5. package/features/customTrapdoor/constants.d.ts +1 -1
  6. package/features/customTrapdoor/constants.lua +1 -1
  7. package/features/customTrapdoor/exports.lua +4 -0
  8. package/features/customTrapdoor/init.lua +2 -2
  9. package/features/debugDisplay/debugDisplay.d.ts +4 -0
  10. package/features/debugDisplay/debugDisplay.lua +2 -0
  11. package/features/deployJSONRoom.lua +2 -2
  12. package/features/{disableSound.d.ts → disableAllSound.d.ts} +3 -0
  13. package/features/{disableSound.lua → disableAllSound.lua} +3 -3
  14. package/features/disableInputs.lua +2 -2
  15. package/features/extraConsoleCommands/exports.d.ts +26 -0
  16. package/features/extraConsoleCommands/exports.lua +54 -0
  17. package/features/extraConsoleCommands/init.d.ts +1 -25
  18. package/features/extraConsoleCommands/init.lua +166 -195
  19. package/features/extraConsoleCommands/v.d.ts +8 -0
  20. package/features/extraConsoleCommands/v.lua +11 -0
  21. package/features/fadeInRemover.lua +2 -2
  22. package/features/fastReset.lua +1 -1
  23. package/features/forgottenSwitch.lua +2 -2
  24. package/features/persistentEntities.lua +6 -1
  25. package/features/playerInventory.lua +2 -2
  26. package/features/ponyDetection.lua +2 -2
  27. package/features/preventCollectibleRotation.lua +2 -2
  28. package/features/registerHotkey.d.ts +3 -0
  29. package/features/registerHotkey.lua +50 -0
  30. package/features/roomClearFrame.lua +2 -2
  31. package/features/runInNFrames.lua +2 -2
  32. package/features/saveDataManager/exports.lua +1 -0
  33. package/features/sirenHelpers.lua +2 -2
  34. package/features/stageHistory.lua +2 -2
  35. package/features/taintedLazarusPlayers.lua +2 -2
  36. package/featuresInitialized.lua +1 -1
  37. package/functions/run.d.ts +5 -2
  38. package/functions/run.lua +5 -2
  39. package/functions/saveFile.lua +3 -0
  40. package/functions/utils.d.ts +5 -0
  41. package/functions/utils.lua +7 -0
  42. package/index.d.ts +4 -3
  43. package/index.lua +22 -16
  44. package/initFeatures.lua +3 -3
  45. package/lualib_bundle.lua +6 -3
  46. package/package.json +1 -1
  47. package/sets/consoleCommandsSet.d.ts +5 -0
  48. package/sets/consoleCommandsSet.lua +61 -0
@@ -1,8 +1,7 @@
1
1
  local ____lualib = require("lualib_bundle")
2
2
  local Map = ____lualib.Map
3
- local __TS__New = ____lualib.__TS__New
4
3
  local ____exports = {}
5
- local featureEnabled, postUpdate, evaluateCacheFireDelay, evaluateCacheSpeed, entityTakeDmgPlayer, postCurseEval, executeCmd, postFireTear, commandFunctionsMap, initialized
4
+ local initMap, initCallbacks, postUpdate, evaluateCacheFireDelay, evaluateCacheSpeed, entityTakeDmgPlayer, postCurseEval, executeCmd, postFireTear
6
5
  local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
7
6
  local CacheFlag = ____isaac_2Dtypescript_2Ddefinitions.CacheFlag
8
7
  local CollectibleType = ____isaac_2Dtypescript_2Ddefinitions.CollectibleType
@@ -24,8 +23,161 @@ local commandsDisplay = require("features.extraConsoleCommands.commandsDisplay")
24
23
  local commands = require("features.extraConsoleCommands.listCommands")
25
24
  local ____v = require("features.extraConsoleCommands.v")
26
25
  local v = ____v.default
27
- function featureEnabled(self)
28
- return initialized
26
+ local extraConsoleCommandsFunctionMap = ____v.extraConsoleCommandsFunctionMap
27
+ function initMap(self)
28
+ extraConsoleCommandsFunctionMap:set("1hp", commands.oneHP)
29
+ extraConsoleCommandsFunctionMap:set("addCharges", commands.addCharges)
30
+ extraConsoleCommandsFunctionMap:set("angel", commands.angel)
31
+ extraConsoleCommandsFunctionMap:set("ascent", commands.ascent)
32
+ extraConsoleCommandsFunctionMap:set("bedroom", commands.bedroom)
33
+ extraConsoleCommandsFunctionMap:set("bh", commands.bh)
34
+ extraConsoleCommandsFunctionMap:set("blackhearts", commands.blackHearts)
35
+ extraConsoleCommandsFunctionMap:set("blackMarket", commands.blackMarket)
36
+ extraConsoleCommandsFunctionMap:set("bloodCharges", commands.bloodCharges)
37
+ extraConsoleCommandsFunctionMap:set("bm", commands.bm)
38
+ extraConsoleCommandsFunctionMap:set("bomb", commands.bomb)
39
+ extraConsoleCommandsFunctionMap:set("bombDisplay", commandsDisplay.bombDisplay)
40
+ extraConsoleCommandsFunctionMap:set("bombsDisplay", commandsDisplay.bombsDisplay)
41
+ extraConsoleCommandsFunctionMap:set("bombs", commands.bombs)
42
+ extraConsoleCommandsFunctionMap:set("boneHearts", commands.boneHearts)
43
+ extraConsoleCommandsFunctionMap:set("boss", commands.boss)
44
+ extraConsoleCommandsFunctionMap:set("bossRush", commands.bossRush)
45
+ extraConsoleCommandsFunctionMap:set("brokenHearts", commands.brokenHearts)
46
+ extraConsoleCommandsFunctionMap:set("card", commands.card)
47
+ extraConsoleCommandsFunctionMap:set("cards", commands.cards)
48
+ extraConsoleCommandsFunctionMap:set("cc", commands.cc)
49
+ extraConsoleCommandsFunctionMap:set("chaosCardTears", commands.chaosCardTears)
50
+ extraConsoleCommandsFunctionMap:set("character", commands.characterCommand)
51
+ extraConsoleCommandsFunctionMap:set("charge", commands.charge)
52
+ extraConsoleCommandsFunctionMap:set("cleanBedroom", commands.cleanBedroom)
53
+ extraConsoleCommandsFunctionMap:set("coin", commands.coin)
54
+ extraConsoleCommandsFunctionMap:set("coins", commands.coins)
55
+ extraConsoleCommandsFunctionMap:set("crawlSpace", commands.crawlSpace)
56
+ extraConsoleCommandsFunctionMap:set("d20", commands.d20)
57
+ extraConsoleCommandsFunctionMap:set("d6", commands.d6)
58
+ extraConsoleCommandsFunctionMap:set("damage", commands.damage)
59
+ extraConsoleCommandsFunctionMap:set("dd", commands.dd)
60
+ extraConsoleCommandsFunctionMap:set("devil", commands.devil)
61
+ extraConsoleCommandsFunctionMap:set("dirtyBedroom", commands.dirtyBedroom)
62
+ extraConsoleCommandsFunctionMap:set("disableCurses", commands.disableCurses)
63
+ extraConsoleCommandsFunctionMap:set("doorDisplay", commandsDisplay.doorDisplay)
64
+ extraConsoleCommandsFunctionMap:set("doorsDisplay", commandsDisplay.doorsDisplay)
65
+ extraConsoleCommandsFunctionMap:set("down", commands.down)
66
+ extraConsoleCommandsFunctionMap:set("dungeon", commands.dungeon)
67
+ extraConsoleCommandsFunctionMap:set("effectDisplay", commandsDisplay.effectDisplay)
68
+ extraConsoleCommandsFunctionMap:set("effects", commands.effects)
69
+ extraConsoleCommandsFunctionMap:set("effectsDisplay", commandsDisplay.effectsDisplay)
70
+ extraConsoleCommandsFunctionMap:set("eh", commands.eh)
71
+ extraConsoleCommandsFunctionMap:set("error", commands.error)
72
+ extraConsoleCommandsFunctionMap:set("eternalHearts", commands.eternalHearts)
73
+ extraConsoleCommandsFunctionMap:set("familiarDisplay", commandsDisplay.familiarDisplay)
74
+ extraConsoleCommandsFunctionMap:set("familiarsDisplay", commandsDisplay.familiarsDisplay)
75
+ extraConsoleCommandsFunctionMap:set("fool", commands.fool)
76
+ extraConsoleCommandsFunctionMap:set("getPosition", commands.getPosition)
77
+ extraConsoleCommandsFunctionMap:set("gigaBomb", commands.gigaBomb)
78
+ extraConsoleCommandsFunctionMap:set("goldBomb", commands.goldBomb)
79
+ extraConsoleCommandsFunctionMap:set("goldHearts", commands.goldHearts)
80
+ extraConsoleCommandsFunctionMap:set("goldKey", commands.goldKey)
81
+ extraConsoleCommandsFunctionMap:set("goldenBomb", commands.goldenBomb)
82
+ extraConsoleCommandsFunctionMap:set("goldenHearts", commands.goldenHearts)
83
+ extraConsoleCommandsFunctionMap:set("goldenKey", commands.goldenKey)
84
+ extraConsoleCommandsFunctionMap:set("grid", commands.grid)
85
+ extraConsoleCommandsFunctionMap:set("grid2", commands.grid2)
86
+ extraConsoleCommandsFunctionMap:set("gridEntities", commands.gridEntities)
87
+ extraConsoleCommandsFunctionMap:set("h", commands.h)
88
+ extraConsoleCommandsFunctionMap:set("hearts", commands.hearts)
89
+ extraConsoleCommandsFunctionMap:set("hitboxes", commands.hitboxes)
90
+ extraConsoleCommandsFunctionMap:set("iAmError", commands.iAmError)
91
+ extraConsoleCommandsFunctionMap:set("key", commands.key)
92
+ extraConsoleCommandsFunctionMap:set("keys", commands.keys)
93
+ extraConsoleCommandsFunctionMap:set("knifeDisplay", commandsDisplay.knifeDisplay)
94
+ extraConsoleCommandsFunctionMap:set("knivesDisplay", commandsDisplay.knivesDisplay)
95
+ extraConsoleCommandsFunctionMap:set("laserDisplay", commandsDisplay.laserDisplay)
96
+ extraConsoleCommandsFunctionMap:set("lasersDisplay", commandsDisplay.lasersDisplay)
97
+ extraConsoleCommandsFunctionMap:set("left", commands.left)
98
+ extraConsoleCommandsFunctionMap:set("library", commands.library)
99
+ extraConsoleCommandsFunctionMap:set("list", commands.list)
100
+ extraConsoleCommandsFunctionMap:set("listAll", commands.listAll)
101
+ extraConsoleCommandsFunctionMap:set("listGrid", commands.listGrid)
102
+ extraConsoleCommandsFunctionMap:set("listGridAll", commands.listGridAll)
103
+ extraConsoleCommandsFunctionMap:set("lowHP", commands.lowHP)
104
+ extraConsoleCommandsFunctionMap:set("luck", commands.luck)
105
+ extraConsoleCommandsFunctionMap:set("mana", commands.mana)
106
+ extraConsoleCommandsFunctionMap:set("map", commands.map)
107
+ extraConsoleCommandsFunctionMap:set("maxHearts", commands.maxHearts)
108
+ extraConsoleCommandsFunctionMap:set("mh", commands.mh)
109
+ extraConsoleCommandsFunctionMap:set("miniboss", commands.miniboss)
110
+ extraConsoleCommandsFunctionMap:set("noCurses", commands.noCurses)
111
+ extraConsoleCommandsFunctionMap:set("npcDisplay", commandsDisplay.npcDisplay)
112
+ extraConsoleCommandsFunctionMap:set("npcsDisplay", commandsDisplay.npcsDisplay)
113
+ extraConsoleCommandsFunctionMap:set("pickupDisplay", commandsDisplay.pickupDisplay)
114
+ extraConsoleCommandsFunctionMap:set("pickupsDisplay", commandsDisplay.pickupsDisplay)
115
+ extraConsoleCommandsFunctionMap:set("pill", commands.pill)
116
+ extraConsoleCommandsFunctionMap:set("pills", commands.pills)
117
+ extraConsoleCommandsFunctionMap:set("pitDisplay", commandsDisplay.pitDisplay)
118
+ extraConsoleCommandsFunctionMap:set("pitsDisplay", commandsDisplay.pitsDisplay)
119
+ extraConsoleCommandsFunctionMap:set("planetarium", commands.planetarium)
120
+ extraConsoleCommandsFunctionMap:set("playerDisplay", commandsDisplay.playerDisplay)
121
+ extraConsoleCommandsFunctionMap:set("playersDisplay", commandsDisplay.playersDisplay)
122
+ extraConsoleCommandsFunctionMap:set("playSound", commands.playSound)
123
+ extraConsoleCommandsFunctionMap:set("pocket", commands.pocket)
124
+ extraConsoleCommandsFunctionMap:set("poopDisplay", commandsDisplay.poopDisplay)
125
+ extraConsoleCommandsFunctionMap:set("poopMana", commands.poopMana)
126
+ extraConsoleCommandsFunctionMap:set("poopsDisplay", commandsDisplay.poopsDisplay)
127
+ extraConsoleCommandsFunctionMap:set("position", commands.positionCommand)
128
+ extraConsoleCommandsFunctionMap:set("pressurePlateDisplay", commandsDisplay.pressurePlateDisplay)
129
+ extraConsoleCommandsFunctionMap:set("pressurePlatesDisplay", commandsDisplay.pressurePlatesDisplay)
130
+ extraConsoleCommandsFunctionMap:set("projectileDisplay", commandsDisplay.projectileDisplay)
131
+ extraConsoleCommandsFunctionMap:set("projectilesDisplay", commandsDisplay.projectilesDisplay)
132
+ extraConsoleCommandsFunctionMap:set("redHearts", commands.redHearts)
133
+ extraConsoleCommandsFunctionMap:set("rh", commands.rh)
134
+ extraConsoleCommandsFunctionMap:set("right", commands.right)
135
+ extraConsoleCommandsFunctionMap:set("rockDisplay", commandsDisplay.rockDisplay)
136
+ extraConsoleCommandsFunctionMap:set("rocksDisplay", commandsDisplay.rocksDisplay)
137
+ extraConsoleCommandsFunctionMap:set("room", commands.roomCommand)
138
+ extraConsoleCommandsFunctionMap:set("rottenHearts", commands.rottenHearts)
139
+ extraConsoleCommandsFunctionMap:set("s", commands.s)
140
+ extraConsoleCommandsFunctionMap:set("sacrifice", commands.sacrifice)
141
+ extraConsoleCommandsFunctionMap:set("secret", commands.secret)
142
+ extraConsoleCommandsFunctionMap:set("seedStick", commands.seedStick)
143
+ extraConsoleCommandsFunctionMap:set("seeds", commands.seedsCommand)
144
+ extraConsoleCommandsFunctionMap:set("setCharges", commands.setCharges)
145
+ extraConsoleCommandsFunctionMap:set("setPosition", commands.setPosition)
146
+ extraConsoleCommandsFunctionMap:set("sh", commands.sh)
147
+ extraConsoleCommandsFunctionMap:set("shop", commands.shop)
148
+ extraConsoleCommandsFunctionMap:set("slotDisplay", commandsDisplay.slotDisplay)
149
+ extraConsoleCommandsFunctionMap:set("slotsDisplay", commandsDisplay.slotsDisplay)
150
+ extraConsoleCommandsFunctionMap:set("smelt", commands.smelt)
151
+ extraConsoleCommandsFunctionMap:set("soulCharges", commands.soulCharges)
152
+ extraConsoleCommandsFunctionMap:set("soulHearts", commands.soulHearts)
153
+ extraConsoleCommandsFunctionMap:set("sound", commands.sound)
154
+ extraConsoleCommandsFunctionMap:set("sounds", commands.sounds)
155
+ extraConsoleCommandsFunctionMap:set("spam", commands.spam)
156
+ extraConsoleCommandsFunctionMap:set("spawnGoldenTrinket", commands.spawnGoldenTrinket)
157
+ extraConsoleCommandsFunctionMap:set("speed", commands.speed)
158
+ extraConsoleCommandsFunctionMap:set("spikeDisplay", commandsDisplay.spikeDisplay)
159
+ extraConsoleCommandsFunctionMap:set("spikesDisplay", commandsDisplay.spikesDisplay)
160
+ extraConsoleCommandsFunctionMap:set("supersecret", commands.superSecret)
161
+ extraConsoleCommandsFunctionMap:set("startingRoom", commands.startingRoom)
162
+ extraConsoleCommandsFunctionMap:set("tearDisplay", commandsDisplay.tearDisplay)
163
+ extraConsoleCommandsFunctionMap:set("tears", commands.tears)
164
+ extraConsoleCommandsFunctionMap:set("tearsDisplay", commandsDisplay.tearsDisplay)
165
+ extraConsoleCommandsFunctionMap:set("tntDisplay", commandsDisplay.tntDisplay)
166
+ extraConsoleCommandsFunctionMap:set("tntsDisplay", commandsDisplay.tntsDisplay)
167
+ extraConsoleCommandsFunctionMap:set("trapdoor", commands.trapdoorCommand)
168
+ extraConsoleCommandsFunctionMap:set("treasure", commands.treasure)
169
+ extraConsoleCommandsFunctionMap:set("ultraSecret", commands.ultraSecret)
170
+ extraConsoleCommandsFunctionMap:set("up", commands.up)
171
+ extraConsoleCommandsFunctionMap:set("warp", commands.warp)
172
+ end
173
+ function initCallbacks(self, mod)
174
+ mod:AddCallback(ModCallback.POST_UPDATE, postUpdate)
175
+ mod:AddCallback(ModCallback.EVALUATE_CACHE, evaluateCacheFireDelay, CacheFlag.FIRE_DELAY)
176
+ mod:AddCallback(ModCallback.EVALUATE_CACHE, evaluateCacheSpeed, CacheFlag.SPEED)
177
+ mod:AddCallback(ModCallback.ENTITY_TAKE_DMG, entityTakeDmgPlayer, EntityType.PLAYER)
178
+ mod:AddCallback(ModCallback.POST_CURSE_EVAL, postCurseEval)
179
+ mod:AddCallback(ModCallback.EXECUTE_CMD, executeCmd)
180
+ mod:AddCallback(ModCallback.POST_FIRE_TEAR, postFireTear)
29
181
  end
30
182
  function postUpdate(self)
31
183
  if v.run.spamBloodRights then
@@ -53,7 +205,7 @@ function postCurseEval(self, curses)
53
205
  return v.persistent.disableCurses and LevelCurse.NONE or curses
54
206
  end
55
207
  function executeCmd(self, command, params)
56
- local resultTuple = getMapPartialMatch(nil, command, commandFunctionsMap)
208
+ local resultTuple = getMapPartialMatch(nil, command, extraConsoleCommandsFunctionMap)
57
209
  if resultTuple == nil then
58
210
  printConsole(nil, "That is an invalid console command.")
59
211
  return
@@ -71,196 +223,15 @@ function postFireTear(self, tear)
71
223
  tear:ChangeVariant(TearVariant.TOOTH)
72
224
  end
73
225
  end
74
- commandFunctionsMap = __TS__New(Map)
75
- initialized = false
76
- --- Enables extra console commands which are useful for debugging. See [the
77
- -- docs](https://isaacscript.github.io/isaacscript-common/features/extraConsoleCommands_listCommands)
78
- -- for the specific commands that are added.
79
- function ____exports.enableExtraConsoleCommands(self, mod)
80
- initialized = true
81
- saveDataManager(nil, "extraConsoleCommands", v, featureEnabled)
226
+ function ____exports.extraConsoleCommandsInit(self, mod)
227
+ saveDataManager(
228
+ nil,
229
+ "extraConsoleCommands",
230
+ v,
231
+ function() return false end
232
+ )
233
+ initMap(nil)
234
+ initCallbacks(nil, mod)
82
235
  debugDisplayInit(nil, mod)
83
- mod:AddCallback(ModCallback.POST_UPDATE, postUpdate)
84
- mod:AddCallback(ModCallback.EVALUATE_CACHE, evaluateCacheFireDelay, CacheFlag.FIRE_DELAY)
85
- mod:AddCallback(ModCallback.EVALUATE_CACHE, evaluateCacheSpeed, CacheFlag.SPEED)
86
- mod:AddCallback(ModCallback.ENTITY_TAKE_DMG, entityTakeDmgPlayer, EntityType.PLAYER)
87
- mod:AddCallback(ModCallback.POST_CURSE_EVAL, postCurseEval)
88
- mod:AddCallback(ModCallback.EXECUTE_CMD, executeCmd)
89
- mod:AddCallback(ModCallback.POST_FIRE_TEAR, postFireTear)
90
- end
91
- --- Helper function to add a custom console command.
92
- --
93
- -- The standard library comes with many existing console commands that are useful for debugging, but
94
- -- you can also add your own commands that are useful for your particular mod. It's easier to add
95
- -- commands to the existing command system than to add logic manually to the ExecuteCmd callback.
96
- --
97
- -- Before using this function, you must first invoke `enableExtraConsoleCommands`.
98
- function ____exports.addConsoleCommand(self, commandName, commandFunction)
99
- if not initialized then
100
- error("Before adding extra console commands, you must first enable the feature by invoking the \"enableExtraConsoleCommands\" function.")
101
- end
102
- if commandFunctionsMap:has(commandName) then
103
- error(("You cannot add a new console command of \"" .. commandName) .. "\" because there is already an existing command by that name. If you want to overwrite a command from the standard library, you can use the \"removeExtraConsoleCommand\" function.")
104
- end
105
- commandFunctionsMap:set(commandName, commandFunction)
106
- end
107
- --- Helper function to remove a custom console command.
108
- --
109
- -- The standard library comes with many existing console commands that are useful for debugging. If
110
- -- you want to disable one of them, use this function.
111
- --
112
- -- Before using this function, you must first invoke `enableExtraConsoleCommands`.
113
- function ____exports.removeConsoleCommand(self, commandName)
114
- if not initialized then
115
- error("Before removing console commands, you must first enable the feature by invoking the \"enableExtraConsoleCommands\" function.")
116
- end
117
- if not commandFunctionsMap:has(commandName) then
118
- error(("The console command of \"" .. commandName) .. "\" does not exist, so you cannot remove it.")
119
- end
120
- commandFunctionsMap:delete(commandName)
121
236
  end
122
- commandFunctionsMap:set("1hp", commands.oneHP)
123
- commandFunctionsMap:set("addCharges", commands.addCharges)
124
- commandFunctionsMap:set("angel", commands.angel)
125
- commandFunctionsMap:set("ascent", commands.ascent)
126
- commandFunctionsMap:set("bedroom", commands.bedroom)
127
- commandFunctionsMap:set("bh", commands.bh)
128
- commandFunctionsMap:set("blackhearts", commands.blackHearts)
129
- commandFunctionsMap:set("blackMarket", commands.blackMarket)
130
- commandFunctionsMap:set("bloodCharges", commands.bloodCharges)
131
- commandFunctionsMap:set("bm", commands.bm)
132
- commandFunctionsMap:set("bomb", commands.bomb)
133
- commandFunctionsMap:set("bombDisplay", commandsDisplay.bombDisplay)
134
- commandFunctionsMap:set("bombsDisplay", commandsDisplay.bombsDisplay)
135
- commandFunctionsMap:set("bombs", commands.bombs)
136
- commandFunctionsMap:set("boneHearts", commands.boneHearts)
137
- commandFunctionsMap:set("boss", commands.boss)
138
- commandFunctionsMap:set("bossRush", commands.bossRush)
139
- commandFunctionsMap:set("brokenHearts", commands.brokenHearts)
140
- commandFunctionsMap:set("card", commands.card)
141
- commandFunctionsMap:set("cards", commands.cards)
142
- commandFunctionsMap:set("cc", commands.cc)
143
- commandFunctionsMap:set("chaosCardTears", commands.chaosCardTears)
144
- commandFunctionsMap:set("character", commands.characterCommand)
145
- commandFunctionsMap:set("charge", commands.charge)
146
- commandFunctionsMap:set("cleanBedroom", commands.cleanBedroom)
147
- commandFunctionsMap:set("coin", commands.coin)
148
- commandFunctionsMap:set("coins", commands.coins)
149
- commandFunctionsMap:set("crawlSpace", commands.crawlSpace)
150
- commandFunctionsMap:set("d20", commands.d20)
151
- commandFunctionsMap:set("d6", commands.d6)
152
- commandFunctionsMap:set("damage", commands.damage)
153
- commandFunctionsMap:set("dd", commands.dd)
154
- commandFunctionsMap:set("devil", commands.devil)
155
- commandFunctionsMap:set("dirtyBedroom", commands.dirtyBedroom)
156
- commandFunctionsMap:set("disableCurses", commands.disableCurses)
157
- commandFunctionsMap:set("doorDisplay", commandsDisplay.doorDisplay)
158
- commandFunctionsMap:set("doorsDisplay", commandsDisplay.doorsDisplay)
159
- commandFunctionsMap:set("down", commands.down)
160
- commandFunctionsMap:set("dungeon", commands.dungeon)
161
- commandFunctionsMap:set("effectDisplay", commandsDisplay.effectDisplay)
162
- commandFunctionsMap:set("effects", commands.effects)
163
- commandFunctionsMap:set("effectsDisplay", commandsDisplay.effectsDisplay)
164
- commandFunctionsMap:set("eh", commands.eh)
165
- commandFunctionsMap:set("error", commands.error)
166
- commandFunctionsMap:set("eternalHearts", commands.eternalHearts)
167
- commandFunctionsMap:set("familiarDisplay", commandsDisplay.familiarDisplay)
168
- commandFunctionsMap:set("familiarsDisplay", commandsDisplay.familiarsDisplay)
169
- commandFunctionsMap:set("fool", commands.fool)
170
- commandFunctionsMap:set("getPosition", commands.getPosition)
171
- commandFunctionsMap:set("gigaBomb", commands.gigaBomb)
172
- commandFunctionsMap:set("goldBomb", commands.goldBomb)
173
- commandFunctionsMap:set("goldHearts", commands.goldHearts)
174
- commandFunctionsMap:set("goldKey", commands.goldKey)
175
- commandFunctionsMap:set("goldenBomb", commands.goldenBomb)
176
- commandFunctionsMap:set("goldenHearts", commands.goldenHearts)
177
- commandFunctionsMap:set("goldenKey", commands.goldenKey)
178
- commandFunctionsMap:set("grid", commands.grid)
179
- commandFunctionsMap:set("grid2", commands.grid2)
180
- commandFunctionsMap:set("gridEntities", commands.gridEntities)
181
- commandFunctionsMap:set("h", commands.h)
182
- commandFunctionsMap:set("hearts", commands.hearts)
183
- commandFunctionsMap:set("hitboxes", commands.hitboxes)
184
- commandFunctionsMap:set("iAmError", commands.iAmError)
185
- commandFunctionsMap:set("key", commands.key)
186
- commandFunctionsMap:set("keys", commands.keys)
187
- commandFunctionsMap:set("knifeDisplay", commandsDisplay.knifeDisplay)
188
- commandFunctionsMap:set("knivesDisplay", commandsDisplay.knivesDisplay)
189
- commandFunctionsMap:set("laserDisplay", commandsDisplay.laserDisplay)
190
- commandFunctionsMap:set("lasersDisplay", commandsDisplay.lasersDisplay)
191
- commandFunctionsMap:set("left", commands.left)
192
- commandFunctionsMap:set("library", commands.library)
193
- commandFunctionsMap:set("list", commands.list)
194
- commandFunctionsMap:set("listAll", commands.listAll)
195
- commandFunctionsMap:set("listGrid", commands.listGrid)
196
- commandFunctionsMap:set("listGridAll", commands.listGridAll)
197
- commandFunctionsMap:set("lowHP", commands.lowHP)
198
- commandFunctionsMap:set("luck", commands.luck)
199
- commandFunctionsMap:set("mana", commands.mana)
200
- commandFunctionsMap:set("map", commands.map)
201
- commandFunctionsMap:set("maxHearts", commands.maxHearts)
202
- commandFunctionsMap:set("mh", commands.mh)
203
- commandFunctionsMap:set("miniboss", commands.miniboss)
204
- commandFunctionsMap:set("noCurses", commands.noCurses)
205
- commandFunctionsMap:set("npcDisplay", commandsDisplay.npcDisplay)
206
- commandFunctionsMap:set("npcsDisplay", commandsDisplay.npcsDisplay)
207
- commandFunctionsMap:set("pickupDisplay", commandsDisplay.pickupDisplay)
208
- commandFunctionsMap:set("pickupsDisplay", commandsDisplay.pickupsDisplay)
209
- commandFunctionsMap:set("pill", commands.pill)
210
- commandFunctionsMap:set("pills", commands.pills)
211
- commandFunctionsMap:set("pitDisplay", commandsDisplay.pitDisplay)
212
- commandFunctionsMap:set("pitsDisplay", commandsDisplay.pitsDisplay)
213
- commandFunctionsMap:set("planetarium", commands.planetarium)
214
- commandFunctionsMap:set("playerDisplay", commandsDisplay.playerDisplay)
215
- commandFunctionsMap:set("playersDisplay", commandsDisplay.playersDisplay)
216
- commandFunctionsMap:set("playSound", commands.playSound)
217
- commandFunctionsMap:set("pocket", commands.pocket)
218
- commandFunctionsMap:set("poopDisplay", commandsDisplay.poopDisplay)
219
- commandFunctionsMap:set("poopMana", commands.poopMana)
220
- commandFunctionsMap:set("poopsDisplay", commandsDisplay.poopsDisplay)
221
- commandFunctionsMap:set("position", commands.positionCommand)
222
- commandFunctionsMap:set("pressurePlateDisplay", commandsDisplay.pressurePlateDisplay)
223
- commandFunctionsMap:set("pressurePlatesDisplay", commandsDisplay.pressurePlatesDisplay)
224
- commandFunctionsMap:set("projectileDisplay", commandsDisplay.projectileDisplay)
225
- commandFunctionsMap:set("projectilesDisplay", commandsDisplay.projectilesDisplay)
226
- commandFunctionsMap:set("redHearts", commands.redHearts)
227
- commandFunctionsMap:set("rh", commands.rh)
228
- commandFunctionsMap:set("right", commands.right)
229
- commandFunctionsMap:set("rockDisplay", commandsDisplay.rockDisplay)
230
- commandFunctionsMap:set("rocksDisplay", commandsDisplay.rocksDisplay)
231
- commandFunctionsMap:set("room", commands.roomCommand)
232
- commandFunctionsMap:set("rottenHearts", commands.rottenHearts)
233
- commandFunctionsMap:set("s", commands.s)
234
- commandFunctionsMap:set("sacrifice", commands.sacrifice)
235
- commandFunctionsMap:set("secret", commands.secret)
236
- commandFunctionsMap:set("seedStick", commands.seedStick)
237
- commandFunctionsMap:set("seeds", commands.seedsCommand)
238
- commandFunctionsMap:set("setCharges", commands.setCharges)
239
- commandFunctionsMap:set("setPosition", commands.setPosition)
240
- commandFunctionsMap:set("sh", commands.sh)
241
- commandFunctionsMap:set("shop", commands.shop)
242
- commandFunctionsMap:set("slotDisplay", commandsDisplay.slotDisplay)
243
- commandFunctionsMap:set("slotsDisplay", commandsDisplay.slotsDisplay)
244
- commandFunctionsMap:set("smelt", commands.smelt)
245
- commandFunctionsMap:set("soulCharges", commands.soulCharges)
246
- commandFunctionsMap:set("soulHearts", commands.soulHearts)
247
- commandFunctionsMap:set("sound", commands.sound)
248
- commandFunctionsMap:set("sounds", commands.sounds)
249
- commandFunctionsMap:set("spam", commands.spam)
250
- commandFunctionsMap:set("spawnGoldenTrinket", commands.spawnGoldenTrinket)
251
- commandFunctionsMap:set("speed", commands.speed)
252
- commandFunctionsMap:set("spikeDisplay", commandsDisplay.spikeDisplay)
253
- commandFunctionsMap:set("spikesDisplay", commandsDisplay.spikesDisplay)
254
- commandFunctionsMap:set("supersecret", commands.superSecret)
255
- commandFunctionsMap:set("startingRoom", commands.startingRoom)
256
- commandFunctionsMap:set("tearDisplay", commandsDisplay.tearDisplay)
257
- commandFunctionsMap:set("tears", commands.tears)
258
- commandFunctionsMap:set("tearsDisplay", commandsDisplay.tearsDisplay)
259
- commandFunctionsMap:set("tntDisplay", commandsDisplay.tntDisplay)
260
- commandFunctionsMap:set("tntsDisplay", commandsDisplay.tntsDisplay)
261
- commandFunctionsMap:set("trapdoor", commands.trapdoorCommand)
262
- commandFunctionsMap:set("treasure", commands.treasure)
263
- commandFunctionsMap:set("ultraSecret", commands.ultraSecret)
264
- commandFunctionsMap:set("up", commands.up)
265
- commandFunctionsMap:set("warp", commands.warp)
266
237
  return ____exports
@@ -11,3 +11,11 @@ declare const v: {
11
11
  };
12
12
  };
13
13
  export default v;
14
+ /** The contents of the map are initialized in the "init.ts" file. */
15
+ export declare const extraConsoleCommandsFunctionMap: Map<string, (params: string) => void>;
16
+ /**
17
+ * Most `isaacscript-common` features are turned on via invoking the `upgradeMod` function. However,
18
+ * this feature is turned on via invoking `enableExtraConsoleCommands`, so we need a separate method
19
+ * to track whether it is initialized.
20
+ */
21
+ export declare function isExtraConsoleCommandsInitialized(): boolean;
@@ -1,3 +1,6 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local Map = ____lualib.Map
3
+ local __TS__New = ____lualib.__TS__New
1
4
  local ____exports = {}
2
5
  local v = {persistent = {disableCurses = false}, run = {
3
6
  chaosCardTears = false,
@@ -7,4 +10,12 @@ local v = {persistent = {disableCurses = false}, run = {
7
10
  maxTears = false
8
11
  }}
9
12
  ____exports.default = v
13
+ --- The contents of the map are initialized in the "init.ts" file.
14
+ ____exports.extraConsoleCommandsFunctionMap = __TS__New(Map)
15
+ --- Most `isaacscript-common` features are turned on via invoking the `upgradeMod` function. However,
16
+ -- this feature is turned on via invoking `enableExtraConsoleCommands`, so we need a separate method
17
+ -- to track whether it is initialized.
18
+ function ____exports.isExtraConsoleCommandsInitialized(self)
19
+ return ____exports.extraConsoleCommandsFunctionMap.size > 0
20
+ end
10
21
  return ____exports
@@ -21,7 +21,7 @@ function shouldRemoveFadeIn(self)
21
21
  local gameFrameCount = game:GetFrameCount()
22
22
  return not v.run.removedFadeIn and gameFrameCount == 0
23
23
  end
24
- local FEATURE_NAME = "fade-in remover"
24
+ local FEATURE_NAME = "fadeInRemover"
25
25
  FADE_IN_SPEED = 1
26
26
  enabled = false
27
27
  v = {run = {removedFadeIn = false}}
@@ -30,7 +30,7 @@ v = {run = {removedFadeIn = false}}
30
30
  function ____exports.fadeInRemoverInit(self, mod)
31
31
  saveDataManager(
32
32
  nil,
33
- "fadeInRemover",
33
+ FEATURE_NAME,
34
34
  v,
35
35
  function() return false end
36
36
  )
@@ -33,7 +33,7 @@ function checkResetInput(self)
33
33
  restart(nil)
34
34
  end
35
35
  end
36
- local FEATURE_NAME = "fast reset"
36
+ local FEATURE_NAME = "fastReset"
37
37
  enabled = false
38
38
  ---
39
39
  -- @internal
@@ -15,12 +15,12 @@ function isActionTriggered(self, _entity, _inputHook, buttonAction)
15
15
  end
16
16
  return nil
17
17
  end
18
- local FEATURE_NAME = "forgotten switcher"
18
+ local FEATURE_NAME = "forgottenSwitch"
19
19
  v = {run = {shouldSwitch = false}}
20
20
  ---
21
21
  -- @internal
22
22
  function ____exports.forgottenSwitchInit(self, mod)
23
- saveDataManager(nil, "forgottenSwitch", v)
23
+ saveDataManager(nil, FEATURE_NAME, v)
24
24
  mod:AddCallback(ModCallback.INPUT_ACTION, isActionTriggered, InputHook.IS_ACTION_TRIGGERED)
25
25
  end
26
26
  --- When used on The Forgotten, switches to The Soul. When used on The Soul, switches to The
@@ -11,6 +11,8 @@ local ____cachedClasses = require("cachedClasses")
11
11
  local game = ____cachedClasses.game
12
12
  local ____ModCallbackCustom = require("enums.ModCallbackCustom")
13
13
  local ModCallbackCustom = ____ModCallbackCustom.ModCallbackCustom
14
+ local ____featuresInitialized = require("featuresInitialized")
15
+ local errorIfFeaturesNotInitialized = ____featuresInitialized.errorIfFeaturesNotInitialized
14
16
  local ____entity = require("functions.entity")
15
17
  local spawn = ____entity.spawn
16
18
  local ____roomData = require("functions.roomData")
@@ -80,6 +82,7 @@ function spawnAndTrack(self, entityType, variant, subType, position, index, resp
80
82
  v.room.spawnedPersistentEntities:set(ptrHash, tuple)
81
83
  return entity
82
84
  end
85
+ local FEATURE_NAME = "persistentEntities"
83
86
  --- Iterates upward as new persistent entities are created.
84
87
  local persistentEntityIndexCounter = 0
85
88
  v = {
@@ -89,7 +92,7 @@ v = {
89
92
  ---
90
93
  -- @internal
91
94
  function ____exports.persistentEntitiesInit(self, mod)
92
- saveDataManager(nil, "persistentEntities", v)
95
+ saveDataManager(nil, FEATURE_NAME, v)
93
96
  mod:AddCallback(ModCallback.POST_ENTITY_REMOVE, postEntityRemove)
94
97
  mod:AddCallbackCustom(ModCallbackCustom.POST_NEW_ROOM_REORDERED, postNewRoomReordered)
95
98
  end
@@ -108,6 +111,7 @@ end
108
111
  -- @returns A tuple containing the entity and the persistent entity index. You can use the index
109
112
  -- with the `removePersistentEntity` function.
110
113
  function ____exports.spawnPersistentEntity(self, entityType, variant, subType, position)
114
+ errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
111
115
  persistentEntityIndexCounter = persistentEntityIndexCounter + 1
112
116
  local entity = spawnAndTrack(
113
117
  nil,
@@ -130,6 +134,7 @@ function ____exports.removePersistentEntity(self, persistentEntityIndex, removeE
130
134
  if removeEntity == nil then
131
135
  removeEntity = true
132
136
  end
137
+ errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
133
138
  v.level.persistentEntities:delete(persistentEntityIndex)
134
139
  for ____, ____value in __TS__Iterator(v.room.spawnedPersistentEntities:entries()) do
135
140
  local ptrHash = ____value[1]
@@ -69,7 +69,7 @@ function postCollectibleRemoved(self, player, collectibleType)
69
69
  local inventory = defaultMapGetPlayer(nil, v.run.playersInventory, player, player)
70
70
  arrayRemoveInPlace(nil, inventory, collectibleType)
71
71
  end
72
- local FEATURE_NAME = "player inventory tracker"
72
+ local FEATURE_NAME = "playerInventory"
73
73
  v = {run = {playersInventory = __TS__New(
74
74
  DefaultMap,
75
75
  function(____, player) return newPlayerInventory(nil, player) end
@@ -77,7 +77,7 @@ v = {run = {playersInventory = __TS__New(
77
77
  ---
78
78
  -- @internal
79
79
  function ____exports.playerInventoryInit(self, mod)
80
- saveDataManager(nil, "playerInventory", v)
80
+ saveDataManager(nil, FEATURE_NAME, v)
81
81
  mod:AddCallback(ModCallback.POST_USE_ITEM, useItemD4, CollectibleType.D4)
82
82
  mod:AddCallback(ModCallback.POST_GAME_STARTED, postGameStarted)
83
83
  mod:AddCallbackCustom(ModCallbackCustom.POST_PLAYER_COLLECTIBLE_ADDED, postCollectibleAdded)
@@ -38,13 +38,13 @@ function postPEffectUpdateReordered(self, player)
38
38
  setDeletePlayer(nil, v.run.playersIsPonyActive, player)
39
39
  end
40
40
  end
41
- local FEATURE_NAME = "pony activation detector"
41
+ local FEATURE_NAME = "ponyDetector"
42
42
  FLAGS_WHEN_PONY_IS_ACTIVE = {EntityFlag.NO_KNOCKBACK, EntityFlag.NO_PHYSICS_KNOCKBACK, EntityFlag.NO_DAMAGE_BLINK}
43
43
  v = {run = {playersIsPonyActive = __TS__New(Set)}}
44
44
  ---
45
45
  -- @internal
46
46
  function ____exports.ponyDetectionInit(self, mod)
47
- saveDataManager(nil, "ponyDetection", v)
47
+ saveDataManager(nil, FEATURE_NAME, v)
48
48
  mod:AddCallbackCustom(ModCallbackCustom.POST_PEFFECT_UPDATE_REORDERED, postPEffectUpdateReordered)
49
49
  end
50
50
  --- Helper function to see if the player is under the effects of A Pony or White Pony charge.
@@ -39,12 +39,12 @@ function getMapIndex(self, collectible)
39
39
  local gridIndex = room:GetGridIndex(collectible.Position)
40
40
  return (tostring(gridIndex) .. ",") .. tostring(collectible.InitSeed)
41
41
  end
42
- local FEATURE_NAME = "prevent collectible rotation"
42
+ local FEATURE_NAME = "preventCollectibleRotation"
43
43
  v = {room = {trackedCollectibles = __TS__New(Map)}}
44
44
  ---
45
45
  -- @internal
46
46
  function ____exports.preventCollectibleRotationInit(self, mod)
47
- saveDataManager(nil, "preventCollectibleRotation", v)
47
+ saveDataManager(nil, FEATURE_NAME, v)
48
48
  mod:AddCallback(ModCallback.POST_USE_CARD, useCardSoulOfIsaac, Card.SOUL_ISAAC)
49
49
  mod:AddCallback(ModCallback.POST_PICKUP_UPDATE, postPickupUpdateCollectible, PickupVariant.COLLECTIBLE)
50
50
  end
@@ -0,0 +1,3 @@
1
+ import { Keyboard } from "isaac-typescript-definitions";
2
+ export declare function registerHotkey(keyboard: Keyboard, func: () => void): void;
3
+ export declare function unregisterHotkey(keyboard: Keyboard): void;
@@ -0,0 +1,50 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local Map = ____lualib.Map
3
+ local __TS__New = ____lualib.__TS__New
4
+ local __TS__Iterator = ____lualib.__TS__Iterator
5
+ local ____exports = {}
6
+ local postRender, hotkeyFunctionMap, keyPressedMap
7
+ local ____isaac_2Dtypescript_2Ddefinitions = require("isaac-typescript-definitions")
8
+ local Keyboard = ____isaac_2Dtypescript_2Ddefinitions.Keyboard
9
+ local ModCallback = ____isaac_2Dtypescript_2Ddefinitions.ModCallback
10
+ local ____DefaultMap = require("classes.DefaultMap")
11
+ local DefaultMap = ____DefaultMap.DefaultMap
12
+ local ____featuresInitialized = require("featuresInitialized")
13
+ local errorIfFeaturesNotInitialized = ____featuresInitialized.errorIfFeaturesNotInitialized
14
+ local ____input = require("functions.input")
15
+ local isKeyboardPressed = ____input.isKeyboardPressed
16
+ function postRender(self)
17
+ for ____, ____value in __TS__Iterator(hotkeyFunctionMap:entries()) do
18
+ local keyboard = ____value[1]
19
+ local func = ____value[2]
20
+ local isPressed = isKeyboardPressed(nil, keyboard)
21
+ local wasPreviouslyPressed = keyPressedMap:getAndSetDefault(keyboard)
22
+ keyPressedMap:set(keyboard, isPressed)
23
+ if isPressed and not wasPreviouslyPressed then
24
+ func(nil)
25
+ end
26
+ end
27
+ end
28
+ local FEATURE_NAME = "registerHotkeys"
29
+ hotkeyFunctionMap = __TS__New(Map)
30
+ keyPressedMap = __TS__New(DefaultMap, false)
31
+ ---
32
+ -- @internal
33
+ function ____exports.characterHealthConversionInit(self, mod)
34
+ mod:AddCallback(ModCallback.POST_RENDER, postRender)
35
+ end
36
+ function ____exports.registerHotkey(self, keyboard, func)
37
+ errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
38
+ if hotkeyFunctionMap:has(keyboard) then
39
+ error(((("Failed to register a hotkey for key Keyboard." .. tostring(Keyboard[keyboard])) .. " (") .. tostring(keyboard)) .. ") due to a custom hotkey already being defined for that key.")
40
+ end
41
+ hotkeyFunctionMap:set(keyboard, func)
42
+ end
43
+ function ____exports.unregisterHotkey(self, keyboard)
44
+ errorIfFeaturesNotInitialized(nil, FEATURE_NAME)
45
+ if not hotkeyFunctionMap:has(keyboard) then
46
+ error(((("Failed to unregister a hotkey for key Keyboard." .. tostring(Keyboard[keyboard])) .. " (") .. tostring(keyboard)) .. ") due to no function being defined for that key.")
47
+ end
48
+ hotkeyFunctionMap:delete(keyboard)
49
+ end
50
+ return ____exports
@@ -15,12 +15,12 @@ function postRoomClearChangedTrue(self)
15
15
  v.room.roomClearGameFrame = gameFrameCount
16
16
  v.room.roomClearRoomFrame = roomFrameCount
17
17
  end
18
- local FEATURE_NAME = "room clear frame"
18
+ local FEATURE_NAME = "roomClearFrame"
19
19
  v = {room = {roomClearGameFrame = nil, roomClearRoomFrame = nil}}
20
20
  ---
21
21
  -- @internal
22
22
  function ____exports.roomClearFrameInit(self, mod)
23
- saveDataManager(nil, "roomClearFrame", v)
23
+ saveDataManager(nil, FEATURE_NAME, v)
24
24
  mod:AddCallbackCustom(ModCallbackCustom.POST_ROOM_CLEAR_CHANGED, postRoomClearChangedTrue, true)
25
25
  end
26
26
  --- Helper function to get the game frame (i.e. `Game.GetFrameCount`) of the last time that this room
@@ -39,14 +39,14 @@ function checkExecuteQueuedFunctions(self, frameCount, functionTuples)
39
39
  func(nil)
40
40
  end
41
41
  end
42
- local FEATURE_NAME = "run in N frames"
42
+ local FEATURE_NAME = "runInNFrames"
43
43
  v = {run = {queuedGameFunctionTuples = {}, queuedRenderFunctionTuples = {}}}
44
44
  ---
45
45
  -- @internal
46
46
  function ____exports.runInNFramesInit(self, mod)
47
47
  saveDataManager(
48
48
  nil,
49
- "runInNFrames",
49
+ FEATURE_NAME,
50
50
  v,
51
51
  function() return false end
52
52
  )