V1.7.9b

## Documented Changes

### Gameplay Changes

* The Cantripped! challenge now only spawns active item cards, item cards can be swapped out when picking up new cards when all card slots are already full
* Tainted Cain now has the same starting stats as  Cain (increased damage and reduced range)
* Salvaging  Tainted Cain's active item no longer spawns special drops in special rooms (such as Secret Rooms)
* The fire aura granted by  +  Judas'  no longer destroys projectiles
* Adjusted the active to passive item ratio from  from 1/2 to 1/4
* Glitch items can no longer destroy Cathedral light beams, ending chests and challenge trophies
* Enemies respawned by the  no longer drop loot when killed if they were champions and no longer grant score in daily runs
* Great Gideon's Crawl Space no longer appears in the Ascent (as it crashed the game when entered)
* can no longer trigger the
* Items in the  area now spawn as "option" items similarly to items in Boss Rush and Angel Rooms - the player is automatically returned to the main floor whenever picking up an item would cause other items in the room to disappear
* Added rubber banding to  - it now moves faster off screen when the player is ahead of it along the path to the boss room and slows down if the player is lagging behind
* now moves towards Mega Satan's room in the Chest and the Dark Room if its door was unlocked
* is now shared by both of  Tainted Lazarus' forms - this also fixes several bugs that occur when flipping while Vanishing Twin is copying a boss
* is now available in challenges and daily runs, items that are tagged to never appear in those modes are considered locked and will be skipped over
* is now available in challenges and daily runs, as well as when playing as  Tainted Lost
* now obeys changes to item availability such as challenges, daily runs and Tainted Lost's adjusted item pools and will not craft items that cannot be normally obtained
* now ignores changes to item availability caused by items or characters (i.e. Tainted Lost or ) and will only refrain from spawning items locked behind achievements or current game rules (challenges or daily runs)
* Added new co-op babies
* Updated some of  Eden's hair styles
* Updated a few item qualities
* Updated localization files

### Fixes

* Fixed a crash that could occur when firing large amounts of  shots with laser attacks
* Fixed a crash caused by killing The Siren while she has control of
* Fixed reward plates crashing the game when attempting to spawn enemies in Home
* Fixed Devil Room doors and other temporary doors leaving an invisible door with an invalid state behind when removed (this could cause crashes with certain items such as )
* Fixed dying from taking a devil deal sometimes displaying the wrong portrait on the game over screen
* Fixed enemies attempting to pathfind through Bomb Grimaces and Quake Grimaces
* Fixed / being unable to create crawlspaces with
* Fixed item pedestals duplicated by  forgetting their option group, allowing all duplicated options to be picked up
* Fixed instant death when turning into  Keeper using  while having 2 or more Broken Hearts
* Fixed instant death when  grants  when used as  Keeper
* Fixed  Tainted Lazarus becoming intangible when using  with  and
* Fixed  not applying its speed decrease as intended
* Fixed  not tracking HP overflow correctly, removing more hearts than intended upon wearing off in certain situations
* Fixed  being able to target Dark Esau and
* Fixed  not ticking while Isaac is holding an item above his head (this could be abused for near-infinite invincibility)
* Fixed  not removing its invincibility effect until the room is left if the item is dropped or destroyed
* Fixed the  sometimes causing enemies to remain frozen forever if the item is dropped or destroyed when enemies are present in the room
* Fixed the  visually giving wings to Isaac when he also has
* Fixed items gained through full run reroll effects (such as ) not contributing towards transformations
* Fixed transformation progress not being properly decreased when holding several copies of the same passive item and losing one or more
* Fixed active items losing their transformation progress when crafting a new one as  Tainted Cain
* Fixed active items losing their transformation progress when dropping them with
* Fixed not being able to shoot or interact after using a pill while flying during the  effect
* Fixed a softlock that could occur when saving and resuming a run while picking up
* Fixed being able to use  on
* Fixed  effects lingering when combined with  or
* Fixed  not entering special boss rooms in the ??? and Corpse II
* Fixed the  being able to devolve permanently charmed enemies
* Fixed the  replacing Mother's boss room with Death in the Red Redemption challenge
* Fixed Chub, C.H.A.D. and Carrion Queen missing their body segments when spawned by
* Fixed 's laser persisting when changing form as  The Forgotten or when it is removed/rerolled
* Fixed  only allowing  The Forgotten to charge up to 4 attacks rather than the intended 5
* Fixed a softlock caused by using  or reviving from  as  Tainted Forgotten while his body is in a location that would be inaccessible without flight
* Fixed  Lilith being able to shoot tears normally when using the  after reviving as a different character
* Fixed the  not losing its uses when used in the The Beast fight and behaving like an infinitely reusable teleport
* Fixed the  not losing its uses when rewinding to a state where it is inside
* Fixed the  triggering effects that normally trigger at the start of a new level when rewinding back to a previous level
* Fixed  entering a bugged state when rewinding with the  or starting a victory lap
* Fixed  incorrectly predicting item drops from shopkeepers
* Fixed enemies rarely spawning behind rocks in certain Challenge Room/Greed mode waves
* Fixed a minor hitch in the loop of The Lamb's fight theme
* Fixed 's costume not appearing on most characters

### Modding changes

* Added extra safety checks to prevent crashing on startup after disabling mods that contain custom characters or items
* Fixed a crash when resuming a run that was stopped while in the temporary room created by the `goto` command
* Fixed not being able to register more than one `MC_PRE_PLAYER_COLLISION` callback
* Added a new debug flag (14) which displays Lua memory usage as a graph
* Added a dedicated memory pool for use by Lua scripts (this should prevent issues with loading sounds and textures when many large mods are loaded at the same time)
* Added `--luaheapsize` as a startup parameter for debugging purposes
	+ There is no reason to use it unless your mod runs into memory issues and you suspect this update is responsible
	+ This is used to configure the size of the memory pool reserved by Lua on startup
	+ The default value is `--luaheapsize 1024M`, or 1 GB
	+ Keep in mind Repentance is a 32-bit application so trying to allocate 1.5 GB or more will most likely fail
	+ `--luaheapsize 0` disables the dedicated memory pool, causing Lua memory allocation to behave like it did prior to this update
	+ If the parameter is invalid or the game fails to allocate the requested amount of memory, it will attempt to allocate 512 MB instead, then fall back to `--luaheapsize 0` if that also fails
* Moved all callback related logic to Lua (this should improve performance when many callbacks are registered)
	+ Added `Isaac.RunCallback(callbackId, entityId, ...)`
		- This runs all functions tied to the given callback and `entityId` (`entityId` may be `nil` for callbacks that do not depend on specific entity types)
	+ Added `Isaac.AddPriorityCallback(mod, callbackId, priority, func, entityId)`
		- Adds a callback with the given priority, callbacks with higher priority values are called later
		- Added a `CallbackPriority` enum with preset priority values
		- This function is also available from the mod object returned by `Isaac.RegisterMod`
	+ `Isaac.AddCallback`, `Isaac.AddPriorityCallback`, `Isaac.RemoveCallback` and `Isaac.RunCallback` now accept any value as a callback ID, even non-numeric values such as strings
		- This may be used by mods to define custom callbacks for other mods to use
		- Custom callbacks added this way will be automatically removed when a mod is unloaded
	+ Added `ModCallbacks.MC_PRE_MOD_UNLOAD(mod)`
		- This is called before any mod is unloaded (by disabling it in the mod menu or reloading it via `luamod`)
		- The table of the mod being unloaded is passed to this callback as an argument
* Added missing enum `TearVariant.FETUS`
* Added `LaserVariant` enum
* Added `SortingLayer` property to `Entity`, accepts any value from the `SortingLayer` enum
	+ `SortingLayer.SORTING_NORMAL` is the default behavior
	+ `SortingLayer.SORTING_BACKGROUND` is used by creep and other entities that should render behind everything else in the room
	+ `SortingLayer.SORTING_DOOR` is used by entities that should be rendered on the walls of the room, after background entities but before every other entity
* Fixed `Room:GetSeededCollectible` crashing the game when called
	+ Arguments are now `Room:GetSeededCollectible(int Seed, bool NoDecrease = false)`
	+ When `NoDecrease` is `true`, returned collectibles will not be removed from the pools they came from
* Removed `ShockwaveParams`, `Room:SetShockwaveParam()` and `Room:GetNextShockwaveId()`
* Added `Game:MakeShockwave(Vector Position, float Amplitude, float Speed, int Duration)`
	+ For reference, Monstro's stomp has `Amplitude=0.035, Speed=0.025, Duration=10`
* Added the following properties and methods to `ItemConfig.Card`:
	+ `int PickupSubType`
	+ `int CardType` (accepts any value from the `ItemConfig.CARDTYPE_*` enum)
	+ `int AnnouncerVoice` (accepts any value from the `SoundEffect.SOUND_*` enum)
	+ `int AnnouncerDelay`
	+ `int MimicCharge`
	+ `bool IsCard()`
	+ `bool IsRune()`
	+ `bool IsAvailable()`
* Added the following properties and methods to `ItemConfig.PillEffect`:
	+ `int AnnouncerVoice` (accepts any value from the `SoundEffect.SOUND_*` enum)
	+ `int AnnouncerVoiceSuper` (accepts any value from the `SoundEffect.SOUND_*` enum)
	+ `int AnnouncerDelay`
	+ `int MimicCharge`
	+ `int EffectClass`
	+ `int EffectSubClass`
	+ `bool IsAvailable()`
* Added the following methods to `ItemConfig.Item`:
	+ `bool IsAvailable()`

## Undocumented Changes

* Fixed the  removing  Eden/ Tainted Eden starting items if used immediately in the first room of the first floor. Instead, it will send the player to Home.
* Removed the "loadfile" global function, which was used in various mods. Presumably, this was due to security concerns.

## References

1. ↑ List of technical changes on Pastebin