isaacscript-common 1.2.289 → 1.2.290

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,2 @@
1
+ import { ModUpgraded } from "../classes/ModUpgraded";
2
+ export declare function postItemDischargeCallbackInit(mod: ModUpgraded): void;
@@ -0,0 +1,83 @@
1
+ local ____lualib = require("lualib_bundle")
2
+ local __TS__New = ____lualib.__TS__New
3
+ local Map = ____lualib.Map
4
+ local ____exports = {}
5
+ local hasSubscriptions, postPEffectUpdate, playerRecentlyCollidedWithBulb, preNPCCollision, v
6
+ local ____cachedClasses = require("cachedClasses")
7
+ local game = ____cachedClasses.game
8
+ local ____DefaultMap = require("classes.DefaultMap")
9
+ local DefaultMap = ____DefaultMap.DefaultMap
10
+ local ____exports = require("features.saveDataManager.exports")
11
+ local saveDataManager = ____exports.saveDataManager
12
+ local ____charge = require("functions.charge")
13
+ local getTotalCharge = ____charge.getTotalCharge
14
+ local ____playerDataStructures = require("functions.playerDataStructures")
15
+ local defaultMapGetPlayer = ____playerDataStructures.defaultMapGetPlayer
16
+ local mapGetPlayer = ____playerDataStructures.mapGetPlayer
17
+ local mapSetPlayer = ____playerDataStructures.mapSetPlayer
18
+ local ____utils = require("functions.utils")
19
+ local getEnumValues = ____utils.getEnumValues
20
+ local ____postItemDischarged = require("callbacks.subscriptions.postItemDischarged")
21
+ local postItemDischargeFire = ____postItemDischarged.postItemDischargeFire
22
+ local postItemDischargeHasSubscriptions = ____postItemDischarged.postItemDischargeHasSubscriptions
23
+ function hasSubscriptions(self)
24
+ return postItemDischargeHasSubscriptions(nil)
25
+ end
26
+ function postPEffectUpdate(self, player)
27
+ if not hasSubscriptions(nil) then
28
+ return
29
+ end
30
+ local chargeMap = defaultMapGetPlayer(nil, v.run.playersChargeMap, player)
31
+ for ____, activeSlot in ipairs(getEnumValues(nil, ActiveSlot)) do
32
+ do
33
+ local currentCharge = getTotalCharge(nil, player, activeSlot)
34
+ local previousCharge = chargeMap:getAndSetDefault(activeSlot, currentCharge)
35
+ chargeMap:set(activeSlot, currentCharge)
36
+ if playerRecentlyCollidedWithBulb(nil, player) then
37
+ goto __continue8
38
+ end
39
+ if currentCharge < previousCharge then
40
+ local collectibleType = player:GetActiveItem(activeSlot)
41
+ postItemDischargeFire(nil, player, collectibleType, activeSlot)
42
+ end
43
+ end
44
+ ::__continue8::
45
+ end
46
+ end
47
+ function playerRecentlyCollidedWithBulb(self, player)
48
+ local gameFrameCount = game:GetFrameCount()
49
+ local bulbLastCollisionFrame = mapGetPlayer(nil, v.room.playersBulbLastCollisionFrame, player)
50
+ local collidedOnThisFrame = gameFrameCount == bulbLastCollisionFrame
51
+ local collidedOnLastFrame = gameFrameCount - 1 == bulbLastCollisionFrame
52
+ return collidedOnThisFrame or collidedOnLastFrame
53
+ end
54
+ function preNPCCollision(self, npc, collider)
55
+ if not hasSubscriptions(nil) then
56
+ return
57
+ end
58
+ if npc.Variant ~= 5 then
59
+ return
60
+ end
61
+ local player = collider:ToPlayer()
62
+ if player == nil then
63
+ return
64
+ end
65
+ local gameFrameCount = game:GetFrameCount()
66
+ mapSetPlayer(nil, v.room.playersBulbLastCollisionFrame, player, gameFrameCount)
67
+ end
68
+ v = {
69
+ run = {playersChargeMap = __TS__New(
70
+ DefaultMap,
71
+ function() return __TS__New(
72
+ DefaultMap,
73
+ function(____, _playerIndex, charge) return charge end
74
+ ) end
75
+ )},
76
+ room = {playersBulbLastCollisionFrame = __TS__New(Map)}
77
+ }
78
+ function ____exports.postItemDischargeCallbackInit(self, mod)
79
+ saveDataManager(nil, "postItemDischarge", v, hasSubscriptions)
80
+ mod:AddCallback(ModCallbacks.MC_POST_PEFFECT_UPDATE, postPEffectUpdate)
81
+ mod:AddCallback(ModCallbacks.MC_PRE_NPC_COLLISION, preNPCCollision, EntityType.ENTITY_SUCKER)
82
+ end
83
+ return ____exports
@@ -0,0 +1,2 @@
1
+ /// <reference types="isaac-typescript-definitions" />
2
+ export declare type PostItemDischargedCallbackType = (player: EntityPlayer, collectibleType: CollectibleType | int, activeSlot: ActiveSlot) => void;
@@ -0,0 +1,23 @@
1
+ --[[ Generated with https://github.com/TypeScriptToLua/TypeScriptToLua ]]
2
+ local ____exports = {}
3
+ local subscriptions = {}
4
+ function ____exports.postItemDischargeHasSubscriptions(self)
5
+ return #subscriptions > 0
6
+ end
7
+ function ____exports.postItemDischargeRegister(self, callback, activeSlot)
8
+ subscriptions[#subscriptions + 1] = {callback, activeSlot}
9
+ end
10
+ function ____exports.postItemDischargeFire(self, player, collectibleType, activeSlot)
11
+ for ____, ____value in ipairs(subscriptions) do
12
+ local callback = ____value[1]
13
+ local callbackCollectibleType = ____value[2]
14
+ do
15
+ if callbackCollectibleType ~= nil and callbackCollectibleType ~= collectibleType then
16
+ goto __continue5
17
+ end
18
+ callback(nil, player, collectibleType, activeSlot)
19
+ end
20
+ ::__continue5::
21
+ end
22
+ end
23
+ return ____exports
@@ -4,17 +4,21 @@ local subscriptions = {}
4
4
  function ____exports.postNPCStateChangedHasSubscriptions(self)
5
5
  return #subscriptions > 0
6
6
  end
7
- function ____exports.postNPCStateChangedRegister(self, callback, entityType)
8
- subscriptions[#subscriptions + 1] = {callback, entityType}
7
+ function ____exports.postNPCStateChangedRegister(self, callback, entityType, variant)
8
+ subscriptions[#subscriptions + 1] = {callback, entityType, variant}
9
9
  end
10
10
  function ____exports.postNPCStateChangedFire(self, npc, previousState, currentState)
11
11
  for ____, ____value in ipairs(subscriptions) do
12
12
  local callback = ____value[1]
13
13
  local entityType = ____value[2]
14
+ local variant = ____value[3]
14
15
  do
15
16
  if entityType ~= nil and entityType ~= npc.Type then
16
17
  goto __continue5
17
18
  end
19
+ if variant ~= nil and variant ~= npc.Variant then
20
+ goto __continue5
21
+ end
18
22
  callback(nil, npc, previousState, currentState)
19
23
  end
20
24
  ::__continue5::
@@ -46,21 +46,22 @@ export declare enum ModCallbacksCustom {
46
46
  MC_POST_SACRIFICE = 37,
47
47
  MC_POST_CURSED_TELEPORT = 38,
48
48
  MC_POST_TRINKET_BREAK = 39,
49
- MC_POST_SLOT_INIT = 40,
50
- MC_POST_SLOT_UPDATE = 41,
51
- MC_POST_SLOT_RENDER = 42,
52
- MC_POST_SLOT_ANIMATION_CHANGED = 43,
53
- MC_POST_SLOT_DESTROYED = 44,
54
- MC_POST_FAMILIAR_STATE_CHANGED = 45,
55
- MC_POST_PICKUP_STATE_CHANGED = 46,
56
- MC_POST_EFFECT_STATE_CHANGED = 47,
57
- MC_POST_NPC_STATE_CHANGED = 48,
58
- MC_POST_GRID_ENTITY_INIT = 49,
59
- MC_POST_GRID_ENTITY_UPDATE = 50,
60
- MC_POST_GRID_ENTITY_REMOVE = 51,
61
- MC_POST_GRID_ENTITY_STATE_CHANGE = 52,
62
- MC_POST_GRID_ENTITY_BROKEN = 53,
63
- MC_POST_GRID_ENTITY_COLLISION = 54,
64
- MC_POST_BONE_SWING = 55,
65
- MC_POST_CUSTOM_DOOR_ENTER = 56
49
+ MC_POST_ITEM_DISCHARGE = 40,
50
+ MC_POST_SLOT_INIT = 41,
51
+ MC_POST_SLOT_UPDATE = 42,
52
+ MC_POST_SLOT_RENDER = 43,
53
+ MC_POST_SLOT_ANIMATION_CHANGED = 44,
54
+ MC_POST_SLOT_DESTROYED = 45,
55
+ MC_POST_FAMILIAR_STATE_CHANGED = 46,
56
+ MC_POST_PICKUP_STATE_CHANGED = 47,
57
+ MC_POST_EFFECT_STATE_CHANGED = 48,
58
+ MC_POST_NPC_STATE_CHANGED = 49,
59
+ MC_POST_GRID_ENTITY_INIT = 50,
60
+ MC_POST_GRID_ENTITY_UPDATE = 51,
61
+ MC_POST_GRID_ENTITY_REMOVE = 52,
62
+ MC_POST_GRID_ENTITY_STATE_CHANGE = 53,
63
+ MC_POST_GRID_ENTITY_BROKEN = 54,
64
+ MC_POST_GRID_ENTITY_COLLISION = 55,
65
+ MC_POST_BONE_SWING = 56,
66
+ MC_POST_CUSTOM_DOOR_ENTER = 57
66
67
  }
@@ -81,38 +81,40 @@ ____exports.ModCallbacksCustom.MC_POST_CURSED_TELEPORT = 38
81
81
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_CURSED_TELEPORT] = "MC_POST_CURSED_TELEPORT"
82
82
  ____exports.ModCallbacksCustom.MC_POST_TRINKET_BREAK = 39
83
83
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_TRINKET_BREAK] = "MC_POST_TRINKET_BREAK"
84
- ____exports.ModCallbacksCustom.MC_POST_SLOT_INIT = 40
84
+ ____exports.ModCallbacksCustom.MC_POST_ITEM_DISCHARGE = 40
85
+ ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_ITEM_DISCHARGE] = "MC_POST_ITEM_DISCHARGE"
86
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_INIT = 41
85
87
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_INIT] = "MC_POST_SLOT_INIT"
86
- ____exports.ModCallbacksCustom.MC_POST_SLOT_UPDATE = 41
88
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_UPDATE = 42
87
89
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_UPDATE] = "MC_POST_SLOT_UPDATE"
88
- ____exports.ModCallbacksCustom.MC_POST_SLOT_RENDER = 42
90
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_RENDER = 43
89
91
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_RENDER] = "MC_POST_SLOT_RENDER"
90
- ____exports.ModCallbacksCustom.MC_POST_SLOT_ANIMATION_CHANGED = 43
92
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_ANIMATION_CHANGED = 44
91
93
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_ANIMATION_CHANGED] = "MC_POST_SLOT_ANIMATION_CHANGED"
92
- ____exports.ModCallbacksCustom.MC_POST_SLOT_DESTROYED = 44
94
+ ____exports.ModCallbacksCustom.MC_POST_SLOT_DESTROYED = 45
93
95
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_SLOT_DESTROYED] = "MC_POST_SLOT_DESTROYED"
94
- ____exports.ModCallbacksCustom.MC_POST_FAMILIAR_STATE_CHANGED = 45
96
+ ____exports.ModCallbacksCustom.MC_POST_FAMILIAR_STATE_CHANGED = 46
95
97
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_FAMILIAR_STATE_CHANGED] = "MC_POST_FAMILIAR_STATE_CHANGED"
96
- ____exports.ModCallbacksCustom.MC_POST_PICKUP_STATE_CHANGED = 46
98
+ ____exports.ModCallbacksCustom.MC_POST_PICKUP_STATE_CHANGED = 47
97
99
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_PICKUP_STATE_CHANGED] = "MC_POST_PICKUP_STATE_CHANGED"
98
- ____exports.ModCallbacksCustom.MC_POST_EFFECT_STATE_CHANGED = 47
100
+ ____exports.ModCallbacksCustom.MC_POST_EFFECT_STATE_CHANGED = 48
99
101
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_EFFECT_STATE_CHANGED] = "MC_POST_EFFECT_STATE_CHANGED"
100
- ____exports.ModCallbacksCustom.MC_POST_NPC_STATE_CHANGED = 48
102
+ ____exports.ModCallbacksCustom.MC_POST_NPC_STATE_CHANGED = 49
101
103
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_NPC_STATE_CHANGED] = "MC_POST_NPC_STATE_CHANGED"
102
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_INIT = 49
104
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_INIT = 50
103
105
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_INIT] = "MC_POST_GRID_ENTITY_INIT"
104
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_UPDATE = 50
106
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_UPDATE = 51
105
107
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_UPDATE] = "MC_POST_GRID_ENTITY_UPDATE"
106
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_REMOVE = 51
108
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_REMOVE = 52
107
109
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_REMOVE] = "MC_POST_GRID_ENTITY_REMOVE"
108
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_STATE_CHANGE = 52
110
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_STATE_CHANGE = 53
109
111
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_STATE_CHANGE] = "MC_POST_GRID_ENTITY_STATE_CHANGE"
110
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_BROKEN = 53
112
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_BROKEN = 54
111
113
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_BROKEN] = "MC_POST_GRID_ENTITY_BROKEN"
112
- ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION = 54
114
+ ____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION = 55
113
115
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_GRID_ENTITY_COLLISION] = "MC_POST_GRID_ENTITY_COLLISION"
114
- ____exports.ModCallbacksCustom.MC_POST_BONE_SWING = 55
116
+ ____exports.ModCallbacksCustom.MC_POST_BONE_SWING = 56
115
117
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_BONE_SWING] = "MC_POST_BONE_SWING"
116
- ____exports.ModCallbacksCustom.MC_POST_CUSTOM_DOOR_ENTER = 56
118
+ ____exports.ModCallbacksCustom.MC_POST_CUSTOM_DOOR_ENTER = 57
117
119
  ____exports.ModCallbacksCustom[____exports.ModCallbacksCustom.MC_POST_CUSTOM_DOOR_ENTER] = "MC_POST_CUSTOM_DOOR_ENTER"
118
120
  return ____exports
@@ -42,6 +42,8 @@ local ____postGridEntityStateChange = require("callbacks.subscriptions.postGridE
42
42
  local postGridEntityStateChangeRegister = ____postGridEntityStateChange.postGridEntityStateChangeRegister
43
43
  local ____postGridEntityUpdate = require("callbacks.subscriptions.postGridEntityUpdate")
44
44
  local postGridEntityUpdateRegister = ____postGridEntityUpdate.postGridEntityUpdateRegister
45
+ local ____postItemDischarged = require("callbacks.subscriptions.postItemDischarged")
46
+ local postItemDischargeRegister = ____postItemDischarged.postItemDischargeRegister
45
47
  local ____postItemPickup = require("callbacks.subscriptions.postItemPickup")
46
48
  local postItemPickupRegister = ____postItemPickup.postItemPickupRegister
47
49
  local ____postKnifeInitLate = require("callbacks.subscriptions.postKnifeInitLate")
@@ -157,6 +159,7 @@ ____exports.CALLBACK_REGISTER_FUNCTIONS = {
157
159
  [ModCallbacksCustom.MC_POST_SACRIFICE] = postSacrificeRegister,
158
160
  [ModCallbacksCustom.MC_POST_CURSED_TELEPORT] = postCursedTeleportRegister,
159
161
  [ModCallbacksCustom.MC_POST_TRINKET_BREAK] = postTrinketBreakRegister,
162
+ [ModCallbacksCustom.MC_POST_ITEM_DISCHARGE] = postItemDischargeRegister,
160
163
  [ModCallbacksCustom.MC_POST_SLOT_INIT] = postSlotInitRegister,
161
164
  [ModCallbacksCustom.MC_POST_SLOT_UPDATE] = postSlotUpdateRegister,
162
165
  [ModCallbacksCustom.MC_POST_SLOT_RENDER] = postSlotRenderRegister,
@@ -20,6 +20,7 @@ import { PostGridEntityInitCallbackType } from "../callbacks/subscriptions/postG
20
20
  import { PostGridEntityRemoveCallbackType } from "../callbacks/subscriptions/postGridEntityRemove";
21
21
  import { PostGridEntityStateChangeCallbackType } from "../callbacks/subscriptions/postGridEntityStateChange";
22
22
  import { PostGridEntityUpdateCallbackType } from "../callbacks/subscriptions/postGridEntityUpdate";
23
+ import { PostItemDischargedCallbackType } from "../callbacks/subscriptions/postItemDischarged";
23
24
  import { PostItemPickupCallbackType } from "../callbacks/subscriptions/postItemPickup";
24
25
  import { PostKnifeInitLateCallbackType } from "../callbacks/subscriptions/postKnifeInitLate";
25
26
  import { PostLaserInitLateCallbackType } from "../callbacks/subscriptions/postLaserInitLate";
@@ -198,6 +199,10 @@ export interface AddCallbackParametersCustom {
198
199
  callback: PostTrinketBreakCallbackType,
199
200
  trinketType?: TrinketType | int
200
201
  ];
202
+ [ModCallbacksCustom.MC_POST_ITEM_DISCHARGE]: [
203
+ callback: PostItemDischargedCallbackType,
204
+ collectibleType?: CollectibleType | int
205
+ ];
201
206
  [ModCallbacksCustom.MC_POST_SLOT_INIT]: [
202
207
  callback: PostSlotInitCallbackType,
203
208
  slotVariant?: SlotVariant
@@ -232,7 +237,8 @@ export interface AddCallbackParametersCustom {
232
237
  ];
233
238
  [ModCallbacksCustom.MC_POST_NPC_STATE_CHANGED]: [
234
239
  callback: PostNPCStateChangedCallbackType,
235
- entityType?: EntityType
240
+ entityType?: EntityType | int,
241
+ variant?: int
236
242
  ];
237
243
  [ModCallbacksCustom.MC_POST_GRID_ENTITY_INIT]: [
238
244
  callback: PostGridEntityInitCallbackType,
@@ -32,6 +32,8 @@ local ____postGridEntity = require("callbacks.postGridEntity")
32
32
  local postGridEntityCallbacksInit = ____postGridEntity.postGridEntityCallbacksInit
33
33
  local ____postGridEntityCollision = require("callbacks.postGridEntityCollision")
34
34
  local postGridEntityCollisionInit = ____postGridEntityCollision.postGridEntityCollisionInit
35
+ local ____postItemDischarged = require("callbacks.postItemDischarged")
36
+ local postItemDischargeCallbackInit = ____postItemDischarged.postItemDischargeCallbackInit
35
37
  local ____postKnifeInitLate = require("callbacks.postKnifeInitLate")
36
38
  local postKnifeInitLateCallbackInit = ____postKnifeInitLate.postKnifeInitLateCallbackInit
37
39
  local ____postLaserInitLate = require("callbacks.postLaserInitLate")
@@ -155,6 +157,7 @@ function initCustomCallbacks(self, mod)
155
157
  postPurchaseCallbackInit(nil, mod)
156
158
  postSacrificeCallbackInit(nil, mod)
157
159
  postTrinketBreakCallbackInit(nil, mod)
160
+ postItemDischargeCallbackInit(nil, mod)
158
161
  postCursedTeleportCallbackInit(nil, mod)
159
162
  postSlotInitUpdateCallbacksInit(nil, mod)
160
163
  postSlotRenderCallbacksInit(nil, mod)
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "isaacscript-common",
3
- "version": "1.2.289",
3
+ "version": "1.2.290",
4
4
  "description": "Helper functions for IsaacScript mods",
5
5
  "keywords": [
6
6
  "isaac",