v1.0.x - Additions: * Camera: - Update(bool Interpolated = false) * EntityPickup: - GetMegaChest[Left/Right]Collectible - Returns the other EntityPickup for a Mega Chest * EntityPlayer: - [Get/Set]ActionHoldDrop - how long player holds action drop button. - [Get/Set]ForgottenSwapFormCooldown * EntityFamiliar: - IsLilDelirium - SetLilDelirium * Level: - Added overloads for CanPlaceRoom(AtDoor) and FindValidRoomPlacementLocations that accept a RoomShape and DoorMask instead of a RoomConfigRoom. * ModCallbacks: - MC_PRE_PLAYER_POCKET_ITEMS_SWAP(EntityPlayer player) Triggers when the player swaps their pocket items using the action drop button (even if they are empty). Return true to cancel pocket item swap. - MC_PRE_TRIGGER_BED_SLEEP_EFFECT(EntityPlayer player, EntityPickup bed) Triggers if Bed target (bed.Target) is set to player and "SleepFillHP" item overlay sprite's event is triggered, and before the hearts addition is applied. Return true to cancel vanilla behavior. - MC_POST_TRIGGER_BED_SLEEP_EFFECT(EntityPlayer player, EntityPickup bed) - MC_PRE_BED_SLEEP(EntityPlayer player, EntityPickup bed) Triggers on bed collision and before playing sleep sequence. Return true to cancel vanilla behavior. - MC_PRE_ENTITY_SET_COLOR(Entity entity, int duration, int priority, bool fadeOut, bool share) Fires when Entity:SetColor is called Takes an EntityType as its optional argument. Return a color to override the color. The overridden color is passed into MC_POST_ENTITY_SET_COLOR. Return false to cancel the color change. Prevents MC_POST_ENTITY_SET_COLOR from firing. This only fires for `Entity:SetColor` and does not fire when changing the entity's color directly. - MC_POST_ENTITY_SET_COLOR(Entity entity, int duration, int priority, bool fadeOut, bool share) Fires after an entity's color is changed via Entity:SetColor This only fires for `Entity:SetColor` and does not fire when changing the entity's color directly. - MC_POST_PLAYER_TRIGGER_ROOM_CLEAR Previously missing counterpart to MC_PRE_PLAYER_TRIGGER_ROOM_CLEAR - MC_GET_STATUS_EFFECT_TARGET(Entity entity) Fires when an Entity is about to recieve a status effect Takes EntityType as its optional argument. Return an Entity to apply the status effect to it instead (good for multi-segment enemies). - MC_PRE/POST_STATUS_EFFECT_APPLY(StatusEffect statusID, Entity entity, EntityRef source, integer duration) Triggers before/after applying a status effect Takes the new StatusEffect enum as its optional argument Return false on the PRE callback to cancel adding the status effect * New Enums: - DoorMask * Room: - GetWallColor() * Isaac: - GetDoorMaskForRoomShape: Returns a DoorMask representing all DoorSlots that are allowed for the given RoomShape. * Added content and resources support for stringtable.sta, allowing for custom translation strings and categories. This also allows adding custom fortunes. * Added the following customtag for items.xml: * "noexpansionpack" - Prevents the active item (with 1 or 2 max charges) from being picked by Expansion Pack trinket. Fixes: * Fixed an issue with luamod autocomplete not displaying all the available options * Fixed an issue where modded items' crafting quality was set to 0 if not explicitly defined in the XML. * Level: - TryPlaceRoom & related functions no longer consider a room placement valid if the only neighbor would be a secret room and "AllowSpecialNeighbors" is false. - TryPlaceRoom(AtDoor) no longer automatically unlocks the door to the new room if placed adjacent to the player's current room. /newline/ Modified: * EntityFamiliar: - GetPathFinder -> GetPathfinder * EntityPlayer: - DropCollectible now returns the spawned pedestal if one was spawned, as intended - SwapForgottenForm returns boolean, depending if Forgotten/Soul form was switched or not. * Level: - TryPlaceRoom(AtDoor) no longer plays the key unlock sound if a room is created that connects to the player's current room. * ImGui: - Adding an element with the same id as an existing one will now replace the existing element instead of throwing an error. - If an error is caused by a callback, imgui will now properly throw an error * Vanilla daily run leaderboard will now mark the submitted run entry with a transparent color if the run was cheated. Fixes: * ImGui: - Fixed RemoveElement not working on elements created with AddInputColor. - Fixed Render callbacks of window elements being executed even if the window is not visible - Fixed ImGui closing unexpectedly when pressing enter and the console window is not enabled - Fixed ImGui.ImGuiToWorld() and ImGui.WorldToImGui() calls not taking the position arguments as intended * Pathfinder: - Many methods that did not work properly have been fixed - Use Entity[Familiar/NPC]:GetPathfinder to access these fixes - (EntityNPC.Pathfinder has been left unaffected for existing mod compatibility) * Misc: - Modded characters locked behind achievements no longer appear in the local co-op wheel. /newline/ /versionseparator/ v1.0.12.b - Fixes: * Fix various regressions involving status effects introduced by 1.0.12 /newline/ /versionseparator/ v1.0.12.a - * The changelogs menu has been revamped. Use the left and right arrow keys to look between versions. Additions: * Ambush: - [Get/Set]MaxBossChallengeWaves() - Allows changing the number of waves in a boss challenge room Fixes: * Boss challenge rooms wave count no longer accidentally tied to normal challenge room wave count (ie, now two instead of three) /newline/ /versionseparator/ v1.0.12 - Additions: * Add new Vanilla Tweaks option "Console Autofill Limit", which determines the number of autocomplete items that are displayed in the debug console. * Level: - CanPlaceRoom(RoomConfigRoom, int GridIndex, int Dimension = -1, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false, bool AllowNoNeighbors = false) Returns true if the room would be able to fit at this location. - TryPlaceRoom(RoomConfigRoom, int GridIndex, int Dimension = -1, int Seed = 0, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false, bool AllowNoNeighbors = false) Will only place the room if it can fit and all doors can be successfully connected to neighboring rooms. If successful, returns the new RoomDescriptor, returns nil otherwise. If a seed of nil or 0 is provided, a seed will be auto-generated based on the location, room shape, and level seed. Boolean params are additional safeties that can be enabled or disabled: AllowMultipleDoors - Set to false to only allow successful placement if the room would only have one door (for placing special rooms). AllowSpecialNeighbors - Set to true to allow connections to existing special rooms (note secret rooms are always allowed, but boss rooms are never allowed). AllowNoNeighbors - Set to true to allow placing the room out in the void with no neighbors. - CanPlaceRoomAtDoor(RoomConfigRoom, RoomDescriptor, DoorSlot, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false) Returns true if the room could be successfully placed connected to the specified DoorSlot of an existing room. - TryPlaceRoomAtDoor(RoomConfigRoom, RoomDescriptor, DoorSlot, int Seed = 0, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false) Attempts to place the room connected to an existing room via the specified DoorSlot. - FindValidRoomPlacementLocations(RoomConfigRoom, int Dimension = -1, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false) Returns a table of level GridIndexes that would be valid locations to place the given room. - GetNeighboringRooms(int GridIndex, RoomShape, int Dimension = -1) Returns a table map of DoorSlot->RoomDescriptor. Don't use ipairs! Can be used to determine the neighbors of a room before even placing it. Note that this does not give you any signal of if a room would actually fit, or if the neighbors would even allow a connection. * StatsMenu: - SetSelectedElement(int element) - GetSelectedElement() - int * Room: - GetLRoom[Area/Tile]Desc() now return a usable class - GetGridIndexByTile() now accepts a table of int[2] * LRoomAreaDesc: - Describes the corners of an L-room shape (as divided horizontally into two rectangles), in worldspace - Vector Get[High/Low][TopLeft/BottomRight]() * LRoomTileDesc: - Describes the corners of an L-room shape (as divided horizontally into two rectangles), in grid coordinates - int[2] Get[High/Low][TopLeft/BottomRight]() - int[2] GetRandomTile(Seed) - Can use Room:GetGridIndexByTile() to retrieve grid idx at these coordinates * RoomDescriptor: - GetDimension() - int - GetNeighboringRooms() Returns a table map of DoorSlot->RoomDescriptor. Don't use ipairs! * ItemConfigCard: - Added weight and hidden parameter to cards, both can be specified in pocketitems.xml - Added the ability to specify a custom "availability condition" to evaluate when the game checks if a card is available. - Hidden - InitialWeight - Weight - can be modified - GetAvailabilityCondition() - SetAvailabilityCondition(function) - ClearAvailabilityCondition() * Sprite: - SetOverlayLayerFrame(int Layer, int Frame) - SetLayerFrame for overlays - GetLayerFrameData(int Layer) - Returns the current AnimationFrame for the given layer. - GetOverlayLayerFrameData(int Layer) - Same as above for the overlay animation. * AnimationFrame: - GetStartFrame() - GetEndFrame() * Point: - [Get/Set]Color() - Allows setting a color per-Point; colors are lerped between points - [Get/Set]IsWorldSpace() - Automatically converts this Point's position from worldspace to screenspace when rendering * ModCallbacks: - MC_PRE_GLOWING_HOURGLASS_SAVE/LOAD (int Slot) Called before the Glowing Hourglass state is saved/loaded * PersistentGameData: - AddBestiaryKill(EntityType, Variant = 0) - AddBossKilled(BossType) - IsBossKilled(BossType) * EntityPlayer: - GetMaxCoins() - int - GetMaxKeys() - int - GetMaxBombs() - int * EntitySlot: - GetPrizeCollectible() - int * New "customcache" tags (for items.xml and MC_EVALUATE_CUSTOM_CACHE): - "maxcoins" - "maxkeys" - "maxbombs" /newline/ Modified: * Beam: - Beams now have an inherent Sprite object, no longer prone to losing its Sprite reference - Changes made to the Sprite provided in the constructor will not be reflected in the Beam, and vis-versa - Wrap[S/T]Mode are automatically set to proper values for the spritesheet to loop vertically * ModCallbacks: - MC_POST_PICKUP_SELECTION Additionally passes "RequestedVariant", "RequestedSubType" and "RNG". A third bool argument can be included in the return table to specify wether or not you want to let the callback continue execution after the update to Variant and SubType. * "Hush AI Fixes" patch will no longer be applied during daily runs. * Deal rooms with variants above 99 will now also generate in Red Rooms * Hold SHIFT of the DROP key to scroll faster through the main menu changelog /newline/ Fixes: - Fixed a vanilla bug that caused wisps from destroyed Mystery Gift/Eden's Soul wisps to spawn even after a run restart. - Fixed HUD:GetCoopMenuSprite() returning invalid data - Fixed EntityPlayer:AddActiveCharge() incorrectly allowing overcharge when adding charge to all slots at the same time (with -1 given as the slot) /newline/ /versionseparator/ v1.0.11c - Additions: * CharacterMenu: - [Get/Set]ActiveStatus() - CharacterMenuStatus enum /newline/ Fixes: - Fixed vanilla game crash caused by Hornfel trying to enter new door after losing minecart. - Fixed SetRail index checks /newline/ /versionseparator/ v1.0.11b - Bug fixes: - Fixed a crash that could occur randomly when using custom item pools /newline/ /versionseparator/ v1.0.11a - Bug fixes: - Fixed a division by zero that occured when shuffling an empty item pool /newline/ /versionseparator/ v1.0.11 - Additions: * Itempools: - Added support for new custom itempools through itempools.xml on the content folder - Isaac.GetPoolIdByName(poolName) - returns the id of a given custom pool. Returns -1 if the pool is not found. - Room:SetItemPool(ItemPoolType PoolType) - Sets the pool to use when the game needs to generate random collectibles in the current room. - Room:GetItemPool(int Seed, boolean Raw) - Retrieves the pooltype the game would use to generate random collectibles in the current room. - ItemPool:GetNumItemPools() - Retrieves the total number of itempools in the game, including custom itempools. * GenericPrompt: - GenericPrompt constructor - Initialize(boolean SmallPrompt = false) - Show() - IsActive() - Update(boolean ProcessInput) - Render() - SetText(string Text1 = "", string Text2 = "", string Text3 = "", string Text4 = "", string Text5 = "") - GetSprite() - GetCurrentSelection() - (0 - No, 1 - Yes) - GetSubmittedSelection() - (0 - None, 1 - Yes, 2 - No) * ModCallbacks: - POST versions of MC_PRE_PLAYER_ADD/REMOVE_COSTUME - MC_POST_FORCE_PILL_EFFECT - MC_EVALUATE_CUSTOM_CACHE(Player, CustomCacheTag, float value) Cache-style evaluation for custom player attributes. Return a number to modify the value. Modified values are passed to the next callback. CustomCacheTags must always be all lowercase. Optional param: CustomCacheTag - MC_EVALUATE_FAMILIAR_MULTIPLIER(Familiar, float mult, Player) Called when a familiar's cached multiplier needs to be re-evaluated. Return a number to modify the multiplier. Modified values are passed to the next callback. Optional param: FamiliarVariant * EntityPlayer: - GetMovingBoxContents() - GetTearDisplacement() - Returns the player's TearDisplacement value, used to check what eye the player is shooting from. 1 means that the last shot was from the right eye, -1 means the opposite. - AddCustomCacheTag(string OR {string, string, ...}, bool evaluateItemsNow) - Add CustomCacheTag(s) to be evaluated next time EvaluateItems runs (which is right now, if the optional boolean is passed). - GetCustomCacheValue(string CustomCacheTag) - Returns the current cached value for the specified CustomCacheTag. Will return 0 by default if the provided tag has not been evaluated. * EntityFamiliar: - GetMultiplier() - Returns the "multiplier" for the familiar, from effects such as BFFs or Hive Mind. Typically used to multiply things such as familiar damage. - InvalidateCachedMultiplier() - Makes it so that the next time GetMultiplier is called, MC_EVALUATE_FAMILIAR_MULTIPLIER is triggered to recalculate/allow modifying the multiplier. * EntityNPC: - SetFlyingOverride(bool) - Sets an override to the return value of IsFlying, which is normally based on EntityGridCollisionClass. Can be used to make grounded enemies ignore creep, or flying enemies get hit by creep. - ClearFlyingOverride() - Removes any value set by SetFlyingOverride. - TrySplit(float DefaultDamage, EntityRef Source, DoScreenEffects = true) - ReplaceSpritesheet(int LayedId, string PngFilename, bool LoadGraphics = false) - Appends _champion/stage suffix to PngFilename if possible. * EntityLaser: - RecalculateSamplesNextUpdate() - Requests the laser's shape to be fully recalculated next time it updates. Can be used to force the laser to instantly change its MaxDistance/Radius instead of transitioning to it. No effect for OneHit or non-sample lasers. - IsMultidimensionalTouched() - [Is/Set]PrismTouched() * EntityTear: - [Is/Set]MultidimensionalTouched() - [Is/Set]PrismTouched() * EntityBomb: - [Is/Set]PrismTouched() * EntityKnife: - [Is/Set]MultidimensionalTouched() - [Is/Set]PrismTouched() * EntityPickup: - TriggerTheresOptionsPickup() - Removes pickups with the same option group (OptionsPickupIndex) as the target pickup. * LayerState: - GetFlip[X/Y](), SetFlip[X/Y]() * Game: - GetGenericPrompt() * Level: - GetMyosotisPickups() - returns the pickups that will be transferred to the next floor by the myosotis trinket effect * ItemConfigItem: - HasCustomCacheTag - GetCustomCacheTags * Added support for a "customcache" attribute in items.xml - Formatted as a space-separated list of string tags, same as other similar attributes. - Capitalization is ignored - tags are converted to all lowercase. - Whenever an item/trinket/effect is added or removed, triggers MC_EVALUATE_CUSTOM_CACHE on the player for each tag specified for that item. - MC_EVALUATE_CUSTOM_CACHE will evaluate a number value (starts at 0 by default) which can be retrieved afterwards with player:GetCustomCacheValue(tag) - Every tag that exists on at least one item in items.xml will also be triggered by CacheFlag.CACHE_ALL - REPENTOGON adds one custom cache tag (so far): "familiarmultiplier". Note that this one does not trigger MC_EVALUATE_CUSTOM_CACHE, instead triggering MC_EVALUATE_FAMILIAR_MULTIPLIER for each familiar. /newline/ /versionseparator/ Fixes: - Fixed the game getting permanantly stuck trying to generate an ascent floor if a modded boss room has certain door layouts - Fix a vanilla bug that caused Hush's laser attack to ignore a room's slowdown state and always chase the player at full speed - Fix ???/Blue Womb rooms generating in The Void even when not using Better Void Generation - Fix Void Portal rooms potentially not being generated in The Void - Fix room weights not correctly being reset when reseeding in The Void - Temporarily disable modified RoomDescriptor.OverrideData handling to prevent potential cases of it not being properly replaced - Fix Isaac's Heart being immune to lasers /newline/ /versionseparator/ v1.0.10c - Additions: * RoomDescriptor: InitSeeds(RNG) * ModCallbacks: - MC_PRE_PLAYER_ADD_COSTUME(ItemConfigItem, Player, ItemStateOnly) Called before the costume is added to the player. Return ItemConfigItem to replace the costume or true to cancel adding it entirely. - MC_PRE_PLAYER_REMOVE_COSTUME(ItemConfigItem, Player) Called before the costume is removed from the player. Return true to cancel the removal. /newline/ * Fixes: - Fixed a severe issue with Isaac.PlayCutscene() causing potential corruption when called for custom cutscene. - EntityPlayer:SetImmaculateConceptionState(i) now automatically clamps to valid values only [0,14] to avoid crashes. - Fixed binder for EntityPlayer:DropCollectibleByHistoryIndex which caused crashes on call. - Fixed an issue in ItemPool:GetCollectible that prevented passing ItemPoolType.POOL_NULL. /newline/ Modified: * RoomConfigHolder: - GetRoomByStageTypeAndVariant(StbType, Type, Variant, Mode = -1) * Re-enabled "Extra debug render for FindInRadius" option. /newline/ /versionseparator/ v1.0.10b - Modified: * MusicManager: PlayJingle(Music ID, int Duration) * Fixes: - Disabled the new Debug find in radius feature until further notice, since it causes issues on some vanilla calls (Ex: Evil Eye) * Room:TrySpawnBlueWombTime now checks Game TimeCounter instead of FrameCount, consistent with TrySpawnBossRushDoor and likely the intended behavior /newline/ /versionseparator/ v1.0.10a - Additions: * EntityPlayer: - SetBlackHeart(int BlackHeart) - GetCambionFamiliarFlags() - SetCambionFamiliarFlags(CambionFamiliarFlag flags) * ModCallbacks: - MC_PRE_FORTUNE_DISPLAY Called before a fortune paper is displayed. - MC_PRE_ITEM_TEXT_DISPLAY (title, subtitle, isSticky, isCurseDisplay) Called before an item text is displayed (such as with picking up an item, Poke Go, stage title, etc.) - PRE_GET_RANDOM_ROOM_INDEX(int RoomIndex, bool IAmErrorRoom, integer Seed) Return integer to overwrite target room index. - MC_POST_GLOWING_HOURGLASS_SAVE/LOAD (int Slot) Called after the Glowing Hourglass state is saved/loaded - MC_PRE/POST_PLAYER_ADD_CARD/PILL (EntityPlayer, Card/PillColor, PillCardSlot) Called before/after a card/pill gets added to the player's inventory. On PRE: Return a different ID to change the card/pill added, or false to cancel adding it entirely. - MC_POST_PLAYER_REMOVE_CARD/PILL (EntityPlayer, Card/PillColor, PillCardSlot) Called after a card/pill gets removed from the player's inventory by any means (dropped, direct removal, use, etc). - MC_PRE/POST_PLAYER_COLLECT_CARD (EntityPlayer, EntityPickup) Called before/after a player picks up a card/pill off the ground. On PRE: Return false to prevent the card/pill from being picked up. - MC_POST_PLAYER_DROP_CARD/PILL (EntityPlayer, EntityPickup, PillCardSlot) Called after a player drops a card/pill onto the ground from their inventory. - MC_PRE_PLAYER_GIVE_BIRTH_CAMBION/IMMACULATE (EntityPlayer, CambionFamiliarFlag) Return false to cancel the familiar being added. * EntityLaser: - GetDamageMultiplier() - SetDamageMultiplier(float Mult) * EntityKnife: - GetIsSwinging() - SetIsSwinging(bool) - GetIsSpinAttack() - SetIsSpinAttack(bool) * EntityFamiliar: - GetItemConfig() * PlayerHUDHeart: - IsEternalHeartOverlayVisible() - IsFadingHeart() * PlayerManager: - RemoveCoPlayer(Entity_Player) * DailyChallengeMenu: - Get/SetState * Enums: - CambionFamiliarFlag * Added a new option "Extra debug render for FindInRadius". While the DebugFlag.HITSPHERES flag is enabled, debug spheres will be rendered for FindInRadius/QueryRadius calls. * RoomDescriptor.OverrideData is no longer forcibly changed by RoomDescriptor.FLAG_SURPRISE_MINIBOSS /newline/ Modified: * Isaac: PlayCutscene(CutsceneID, ClearGameState = false) * Game: SetDizzyAmount(TargetIntensity, CurrentIntensity) - Providing CurrentIntensity is now optional * EntityNPC: ShootMaggotProjectile(Position, Target, FallingSpeed = -8.0, YOffset = -24.0) * EntityPlayer: Fixed vanilla crash when AddNullCostume is given an invalid id; along with other potential crashes in AddCostume * Callbacks: - MC_PRE_PLAYERHUD_TRINKET_RENDER Fixed returning true to cancel rendering. - MC_PLAYER_GET_ACTIVE_MAX_CHARGE / MC_PLAYER_GET_ACTIVE_MIN_USABLE_CHARGE Will no longer run for empty active item slots. Now provide the current charge value as an argument. Returning a value no longer stops the callback, and changes the charge value passed to the next callback. If the final result of the callback is <0, the result is treated as 0. * The game no longer prematurely ends the daily run if there was console input, instead blocking it /newline/ Fixes: * Game():GetDizzyAmount() now returns the intended value, instead of 0 * Fixed MC_PRE_PLANETARIUM_APPLY_TREASURE_PENALTY not providing the current number of treasure rooms visited. * Fixed binders for EntityNPC: ThrowMaggot, ShootMaggotProjectile functions. /newline/ /versionseparator/ v1.0.9d - Fixes: * Fixed a bug with the autoupdater /newline/ /versionseparator/ v1.0.9c - Fixes: * Fixed a bug in 1.0.9b where all cutscenes were being replaced by the intro cutscene if any mods were enabled. /newline/ /versionseparator/ v1.0.9b - Additions: * Camera: - IsPosVisible(position: Vector) : bool * Game: - RecordPlayerCompletion(CompletionType) * ModCallbacks: - MC_POST_COMPLETION_EVENT POST version of MC_PRE_COMPLETION_EVENT. Called when a player completes something that would award a mark (end bosses, tainted unlocks) * Add new Vanilla Tweaks option "Mars Double Tap Window", which determines the number of frames where a repeated movement input is counted as a double tap for activating Mars's charge * Updater now runs asynchronously, meaning that you should no longer encounter the "white screen" issue. * Improved mods' startup speed once again! * Minor fix for a file map. * "clearcache" command now reloads the file map. * Fixed a regression that resulted in a severe slowdown for certain commands' autocomplete prompts. This fix has also made file map noticeably faster :D * Bumbino, Ultra Greed, and familiars like Bum Friend will now trigger MC_PICKUP_GET_COIN_VALUE when collecting coins, and will default to treating modded coin subtypes as worth 1 penny instead of huge values. /newline/ /versionseparator/ v1.0.9a - Additions: * Game: - ClearErasedEnemies(): void - GetShopVisits(): int - AddShopVisits(count: int): void * EntitySlot: - GetShellGameAnimationIndex() : int - SetShellGameAnimationIndex(index: int) : void - GetTriggerTimerNum() : int - SetTriggerTimerNum(num: int) : void - Sorry about the startup line in 1.0.9, half of it was a lie, now it's not! This update enables "file map" functionality, speeding up file lookup, positively affecting the startup time. It shouldn't cause any issue, but if it does don't hesitate to report issues, in the meantime you can disable it in REPENTOGON's options window. /newline/ * Bug fixes - Fixed a bug that caused the giveitem command to crash when the object to give was reduced to a single letter - Fix "goto [s/x]." command autocomplete - Fixed incorrect type set for Slot->_timeout (int -> short) /newline/ /versionseparator/ v1.0.9 - Modified: * Callbacks: - MC_PRE_PLAYERHUD_TRINKET_RENDER: now provides [Vector] CropOffset parameter and accepts CropOffset vector in the return table. * EntityPlayer: - AddInnateCollectible() now uses a system separate from item wisps, still doesn't save on game exit though! - Change to HasCollectible and GetCollectibleNum: new optional boolean (IgnoreSpoof), ignores collectible block when set to true * Game: - ShowGenericLeaderboard no longer fades to main menu * PersistentGameData: - TryUnlock now accepts an optional boolean to prevent popping up with the achievement paper for modded achievements /newline/ Additions: * Game: - SetDizzyAmount(amount, intensity) - GetDizzyAmount() * PlayerManager: - AnyPlayerTypeHasTrinket(PlayerType, TrinketType, IgnoreModifiers = false) - AnyPlayerTypeHasCollectible(PlayerType, CollectibleType, IgnoreModifiers = false) * Lootlist: - constructor - PushEntry(Type, Variant, SubType, Seed = Random(), RNG = nil) - GetEntries * LootListEntry: - [Get]Type/Variant/SubType/Seed/RNG * EntityPlayer: - Get/SetBombPlaceDelay - Get/SetBloodLustCounter - GetSpoofedCollectiblesList - New functionality for blocking items: BlockCollectible(int itemID) UnblockCollectible(int itemID) IsCollectibleBlocked(int itemID) - HasGoldenTrinket - Get/SetHallowedGroundCountdown - HasChanceRevive - Returns true if a "?" would be displayed on the player's extra life count (ie, Guppy's Collar) * EntityTear: - GetTearHaloSprite - GetTearEffectSprite - GetDeadEyeSprite - ResetSpriteScale(bool Force) - New optional "force" boolean, when set to true forces the tear to re-evaluate which scale animation it should be playing * EntityPickup: - GetLootList(ShouldAdvance = false) - GetPickupGhost - UpdatePickupGhosts * EntityNPC: - GetFireplaceLoot - GetShopkeeperLoot * EntityFamiliar: - [Get/Set]MoveDelayNum * ItemConfigItem: - HasCustomTag - GetCustomTags * Input: - GetDeviceNameByIdx * Isaac: - Get/SetDwmWindowAttribute (for use with new DwmWindowAttributes enum) - Get/SetWindowTitle (appends text to our title as to avoid confusion) - SetIcon(int/string,bool) (takes a 0/1 int or a path to .ico file, bool bypasses the 16x16 resolution cap) * Game - SetBloom * Console: * Added a popup error when a script ran by luamod errors, highlighting the last error thrown, to prevent it from being instantly buried * Isaac: - StartNewGame(int playertype, int challenge, int difficulty, int seed), allows starting the game from within the main menu * MenuManager: - SetInputMask(int mask) for use with the new ButtonActionBitwise enum, selectively allows/disallows the game's menu read certain inputs, useful for custom menus - GetInputMask() * MinimapState Enum: - Used for Minimap.SetState() and Minimap.GetState(). * RoomConfig: RoomConfig:GetStage(StbType) * RoomConfigStage * Get/Set DisplayName, Suffix, PlayerSpot, BossSpot, Music, Backdrop * GetRoomSet(Mode) * RoomConfigSet: * Acts like other ArrayProxy classes, but for RoomConfigRoom * __len and Get method, Size const variable * Level * Set/GetGreedWavesClearedWithoutRedHeartDamage: you read that right, finally, the highly requested function is here! * Cutscenes * Support for custom music for the music attribute on cutscenes.xml * NightmareScene * GetPlayerExtraPortraitSprite * RoomTransition * GetPlayerExtraPortraitSprite * Sprite * SetCustomShader(string Path) - Overrides only the default ColorOffset shader. Path starts at `.../resources/` and expects to find both a .vs and .fs file. For example: SetCustomShader("shaders/my_shader") * ClearCustomShader() * HasCustomShader(string Path) - Returns true if the specified shader is currently set. If no string is provided, returns true if any custom shader is applied. * SetCustomChampionShader(string Path) - Same as SetCustomShader but for overriding ColorOffset_Champion instead. * ClearCustomChampionShader() * HasCustomChampionShader(string Path) * LayerState * SetCustomShader(string Path) - Same as sprite:SetCustomShader() but only for a single layer. * ClearCustomShader() * HasCustomShader(string Path) * SetCustomChampionShader(string Path) * ClearCustomChampionShader() * HasCustomChampionShader(string Path) * Callbacks: - MC_PRE_PICKUP_GET_LOOT_LIST callback (Pickup, bool ShouldAdvance) - Return LootList to change loot content - MC_PRE_PICKUP_UPDATE_GHOST_PICKUPS (Pickup) - Return true to apply pickup ghost to your pickup entitiy, false to cancel it - MC_POST_PLAYER_TRIGGER_EFFECT_REMOVED (Player, ItemConfigItem) - MC_POST_ROOM_TRIGGER_EFFECT_REMOVED (ItemConfigItem) - MC_PRE_X_GRID_COLLISION and MC_X_GRID_COLLISION (EntityX, int gridIndex, GridEntity or nil) - PLAYER/TEAR/FAMILIAR/BOMB/PICKUP/PROJECTILE/NPC, Return true on PRE to ignore collision. - MC_PRE_PLAYERHUD_RENDER_ACTIVE_ITEM(EntityPlayer, ActiveSlot, Vector offset, float alpha, float scale, Vector chargeBarOffset) - Return true to cancel rendering - MC_PRE_PLAYER_REVIVE(EntityPlayer) - Return false to prevent the player from reviving - MC_POST_PLAYER_REVIVE(EntityPlayer) - MC_POST_PROJECTILE/TEAR_DEATH (EntityProjectile/EntityTear) - MC_POST_BOSS_INTRO_SHOW (int BossID1,int BossID2) - MC_POST_ROOM_TRANSITION_UPDATE () - MC_POST_ROOM_TRANSITION_RENDER () - MC_PRE_X_UPDATE (EntityX) - PLAYER/TEAR/FAMILIAR/BOMB/PICKUP/KNIFE/PROJECTILE/LASER/EFFECT/SLOT, return true to skip internal code, same as MC_PRE_NPC_UPDATE - MC_TRIGGER_PLAYER_DEATH_POST_CHECK_REVIVES (EntityPlayer) - Akin to MC_PRE_TRIGGER_PLAYER_DEATH, but runs right after the game is done checking for vanilla revives. * All stages now have a spritesheet suffix (formatted _[stage name, no spaces], ex _burningbasement) * Added the "noshake" attribute to the players.xml which can "disable" the player portrait shaking animation in the nightmare scene/boss intro * Added support for a "customtags" attribute in items.xml - a space-separated list of tags that can be checked with ItemConfigItem:HasCustomTag() or ItemConfigItem:GetCustomTags() * Added the following customtags for items.xml: * "nometronome" - Prevents the item from being picked by Metronome * "revive" - Each copy of the collectible/trinket/null effect held counts as an extra life (on the HUD, etc) and prevents the game from deleting the run save upon death, making reviving the player safe. You must still remove the item and actually revive the player yourself. * "reviveeffect" - Same as "revive", but applies to the corresponding TemporaryEffect of the collectible/trinket (you'd probably want to set their effects to be persistent). There is no difference between "revive" and "reviveeffect" for null items. * "chancerevive" - If item is counted as an extra life, displays a "?" next to the extra life count, like Guppy's Collar. * "hiddenrevive" - If item is counted as an extra life, this prevents it from being counted on the hud. Overrides "chancerevive". * Improved startup time! (for both REPENTOGON and the game itself) * Buffed Trisagion * Added a new option in "Vanilla tweaks" section called "Fast lasers", it tracks the game's lag and (if present) reduces the number of samples used by lasers to ensure better performance /newline/ Fixes: * Fixed `Isaac.CreateTimer` crashing the game when setting the delay argument to 0 * Fixed bonehearts not displaying correctly when set through players.xml * Fixed console custom commands starting with "help" not triggering while being eaten away by repentogon's help cmd * Fixed a crash that could occur if Isaac exited the Berserk! state without any remaining health with Spirit Shackles ready * Fix Downpour/Dross rooms generated in The Void not having any water * Potentially fixed reported but unreproducable instance of a trapdoor deal room variant being generated outside of floor 8 * Fixed incorrect declaration for ItemConfig::GetTaggedItems * Fixed Gamma scale on the visual settings imgui menu /newline/ /versionseparator/ v1.0.8c - Fixes: * Fixed adding a callback function with an optional param to a vanilla callback that does not support optional params leading to that function never being called, where it used to previously. * Fixed the result of Isaac.GetCallbacks() no longer having a metatable. /newline/ /versionseparator/ v1.0.8b - Fixes: * Fixed the MC_PLAYER_GET_HEALTH_TYPE callback causing the last heart to render underneath the first one. /newline/ /versionseparator/ v1.0.8a - Fixes: * Fixed issues with EntityPlayer:GetSmeltedTrinkets() and EntityPlayer:GetFootprintColor() /newline/ /versionseparator/ v1.0.8 - Additions: * New general callback improvements to address some performance issues on some scenarios * Deal rooms can now generate variants above 100 * Add new BlendTypes CONSTANT, OVERLAY * EntityPlayer: - SetHeadDirection(Direction, Time, Force) - Get/SetHeadDirectionLockTime * Game: - SetDonationMod[Angel/Greed] * ItemPool: - GetBibleUpgrades(ItemPoolType) * Player: - Added Player:AddNullItemEffect and Player:AddCollectibleEffect, both with the same params (int type,bool costume, int cooldown=defaultcd, bool additive=true) * Room: - GetBossVictoryJingle - SaveState * RoomDescriptor.BossDeathSeed Fixes: * Fixes a crash on MC_PRE_LEVEL_SELECT when a callback returned null * Fixed a crash that could happen when you ran stage and achievement-related commands with bad syntax (missing a space) * Fixed an issue with some Bethany challenges where you are supposed to start without book of virtues, starting with book of virtues * Planetarium chance stat HUD is now initialized properly on save/continue * Planetarium chance will now always return 0.0 if a planetarium room cannot spawn in the run (i.e. if a challenge doesn't spawn treasure rooms, the game is greed mode, or if planetariums aren't unlocked) * Fix previously incorrect BlendType enums (ADDITIVE -> CONSTANT, MULTIPLICATIVE -> ADDITIVE) * Fix ItemPool:GetPillColor not checking all identified effects * Fix potential buffer overflow in ItemPool:UnidentifyPill * Fix the console crashing when running a command from history in some cases /newline/ /versionseparator/ v1.0.7c - Additions: * Options.StatHUDPlanetarum Fixes: * Fixed a bug where sounds were duplicated if MC_POST_SFX_PLAY was in use /newline/ /versionseparator/ v1.0.7b - Additions: * Add an option to show Planetarium spawn chance in the stat HUD * BlendMode's variables are now RGBSourceFactor, RGBDestinationFactor, AlphaSourceFactor, AlphaDestinationFactor (previous names will still work for now) * Added BlendFactor and BlendType enums for BlendMode Fixes: * Fix regression caused by Godhead + Tear Detonator fix that prevented the aura from damaging enemies * Fixed console wonkies involving input text edge detection and scaling * Fixed Game:ShowGenericLeaderboard method to throw back to main menu even if leaderboards are no longer displayed after new run/continue /newline/ /versionseparator/ v1.0.7a - Fixes: * Fixed an issue where a change in the build process resulted in the changelog being saved in UTF-16 LE format, breaking the changelog and several other REPENTOGON menu features /newline/ /versionseparator/ v1.0.7 - Additions: * Backdrops: - Custom Backdrop support! with contents/backdrops.xml! - Custom attribute reftype to specify the base backdrop for the custom ones - Isaac.GetBackdropIdByName (self-explanatory make sure to give your backdrops a name!) - MC_PRE/POST_BACKDROP_CHANGE callback accepting callbacktype as a return value on pre and recieving callbacktype as a param * Stages: - Isaac.SetCurrentFloorMusic(musicid): changes the default music for the current floor(will reset after you leave the floor). - Isaac.SetCurrentFloorBackdrop(backdropid): changes the default backdrop for the current floor(will reset after you leave the floor). - Isaac.SetCurrentFloorName(string): changes the stage name for the current floor(will reset after you leave the floor). - Isaac.GetCurrentStageConfigId(): returns the stagesid from the stages xml for the current floor. * Challenges: - Added the "hidden" attribute to the challenges.xml that can hide modded challenges from the menu when it's anything but "false". - Added support for the "achievements" attribute for modded challenges, so modded challenges can now be locked. This param also supports using modded achievements. - Added a new "lockeddesc" attribute, so you can a custom message to be displayed when your challenge is locked (default is "LOCKED :("). Pretty useful for unlock hints. * Familiar : - RemoveFromPlayer - CanBlockProjectiles - CanBeDamagedByProjectiles - CanBeDamagedByEnemies - CanBeDamagedByLasers * EntityNPC : - GetDarkRedChampionRegenTimer * EntityBomb: - GetRocketAngle / SetRocketAngle - GetRocketSpeed / SetRocketSpeed * EntityPlayer: - GetUrnSouls * EntitiesSaveStateVector: - Clear * Minimap : - SetState - SetHoldTime * EntityConfig: - Added EntityConfig.GetBaby(i) and EntityConfig.GetMaxBabyID(), as well as the corresponding EntityConfigBaby class (its co-op babies). * FxLayers: - Added content support for fxlayers.xml * XMLData : - XMLData.GetEntryByOrder: gets entries in the order they appear on the xmls. - Added XMLData for FxLayers, FxParams and FxRays * Callbacks : - MC_POST_NPC_DARK_RED_CHAMPION_REGEN: Called right after a dark red champion regenerates out of goo form - MC_POST_ACHIEVEMENT_UNLOCK: Called after an achievement is unlocked, has the achievement id as its param - MC_PRE/POST_MINIMAP_UPDATE: Called right before or right after the minimap is updated - MC_PRE/POST_MINIMAP_RENDER: Called right before or right after the minimap is rendered - MC_PRE/POST_PLAYER_ADD_HEARTS(EntityPlayer Player, int Amount, AddHealthType AddHealthType, bool OptionalArg): Called when hearts are added to the player, allows changing the added amount of hearts. - MC_POST_RENDER_PLAYER_HEAD/BODY we had the pre but not the post. Same args as the pre, but with the updated vector if its changed on pre - MC_POST_PLAYERHUD_ACTIVE_ITEM now has an additional "ChargeBarOffset" arg (the screen position where the charge bar would be rendered) * ImGui : - Now supports multiline input. Use CTRL + Enter for a newline, useful for pasting Lua scripts or making fortunes - Now has a horizontal scrollbar when needed for console input - Console history reimplementation is now more accurate, properly removing duplicate entries from history when a command is executed from history /newline/ Modified: * Entity : - GetCollisionCapsule offset vector argument is now optional (Vector.Zero) * Pickup : - Pickup:IsBlind method now checks natural blind effect (also added "CheckForcedBlindOnly" optional argument) * Changed the destination goal sprites from the daily menu to match the style of the other paper sprites /newline/ Fixes: * Fixed a vanilla game crash that happens with detonator+godhead which has been around for years * Fixed issue that preventing the root attributes on repentogon-supported xmls(achievements,giantbook,backdrops) from working properly * Fixed an issue that prevented custom parsed attributes from working on xmls with hugeass comments at the beginning of the file * Fixed an issue where the console would behave sporadically when closed with numpad enter * Fixed MC_POST_SFX_PLAY not firing properly when there was no PRE added. * Fixed Achievement Reversed Hierophant enum naming (deprecated ones left for compatibility) * Fixed a bug where adding modded follower familiars could sometimes freeze the game (especially while using MC_GET_FOLLOWER_PRIORITY). * Fixed EntityNPC:GetBossColorIdx() not matching the values of the function in vanilla * Callbacks re-implemented by REPENTOGON (such as MC_ENTITY_TAKE_DMG) now use their original callback IDs rather than a new one (fixes cases where the original ID was used directly, instead of the enum). * MC_POST_PLAYERHUD_ACTIVE_ITEM's "Offet" arg now accounts for Book of Virtues & Judas' Birthright * MC_POST_PLAYERHUD_ACTIVE_ITEM's "Scale" arg is now correctly halved for the secondary (schoolbag) slot * Removed ImGui's automatic window resizing as it caused more issues than it solved * Set a larger padding for ImGui to instruct it to always keep at least (100, 100) pixels of debug windows visible /newline/ /versionseparator/ v1.0.6b - Fixes: * Fixed an issue that caused gamepad to be calling undo mods when going down on the mods menu * Fixed an issue that made search and undo mods not work if you didnt restart your machine for 24 days (blame microsoft) /newline/ /versionseparator/ v1.0.6a - Additions: * Minimap : - GetState - GetHoldTime - GetItemIconsSprite - GetIconsSprite - [Get/Set]ShakeDuration - [Get/Set]ShakeOffset /newline/ Fixes: * Fixed an issue that made it so custom completion marks and achievements are not properly loaded locked or unlocked on a session(big oof, I know). /newline/ /versionseparator/ v1.0.6 - Additions: * Weapon : - SetModifiers * Added a MeetsVersion(targetversionstring) function to the REPENTOGON global * Added support for content on bosscolors.xml * Added EntityNPC:GetBossColorIdx() returns the bosscoloridx or -1 if its not a bosscolor. * Added Isaac.GetBossColorIdxByName() returns the bosscoloridx or -1 if its not a bosscolor name (you have to give them a unique name for this to work). * Added Chinese translation text, thanks @502y * Added support for the pocketActive param in players.xml(I forgor) * Added MC_PRE_PICKUP_VOIDED(EntityPickup Pickup, boolean IsBlackRune), MC_PRE_PICKUP_VOIDED_ABYSS(EntityPickup Pickup) and MC_PRE_PICKUP_COMPOSTED(EntityPickup Pickup) callbacks, returning false cancels the pickup getting consumed. * Modded characters can now donate to the greed donation machine with the vanilla jam percentages * Entity: - CopyStatusEffects has been modified to better suit actual use cases - SetColor has been removed, will now always copy ColorParams - Now only copies missing status effects onto the target entity, use Overwrite argument for old behavior * EntityPlayer: - Get/SetGnawedLeafTimer - ClearQueueItem * Level: - Started work on Level:Get/SetForceSpecialQuest - Allows forcing the Mirror or Mineshaft quest to be enabled or disabled - Not currently complete; will require some bulk patches * Room : - SetLavaIntensity - [Get/Set]RainIntensity - [Get/Set]LightningIntensity - DoLightningStrike - GetNumRainSpawners * Game : - ShowGenericLeaderboard * HUD: - [Get/Set]BossHPBarFill - GetCardsPillsSprite - GetCoopMenuSprite - GetCraftingSprite - GetFortuneSprite - GetHeartsSprite - GetInventorySprite - GetPoopSpellSprite - GetStreakSprite * ScoreSheet : - AddFinishedStage * ModsMenu: - Added barebones search functionality to filter mods - Added the ability to undo pending changes and avoid a restart if you messed up - Changed the order in which mods are displayed, mods are now paired by their enabled status. * PauseMenu: - Added a PauseMenu Global that holds all its related stuff - Added a GetMyStuffSprite that returns the sprite used for the MyStuff items - Added a GetSelectedElement/SetSelectedElement similar to the one seen in other menus - Added GetState/SetState * MusicManager: - Get/SetCurrentPitch * Unlocks - Added support for unlockable items using the xml achievement attribute - Added support for unlockable trinkets using the xml achievement attribute - Added support for unlockable cards using the xml achievement attribute - Added support for unlockable pilleffects using the xml achievement attribute? * Secrets Screen - This screen will now display modded achievements - Made it so the achievement attribute 'hidden' hides achievements from this menu * XMLData : - Added GetModById since the normal GetEntryById wont give the expected result when you want to use actual mod ids - Added GetBossColorByTypeVarSub(t,v,s) that gives you the boss color that will be used on a certain typevarsub combo * ImGui: - Pressing enter in an empty console input will now close the console and imgui, to mimic the behavior of the vanilla console - Fixed notifications being behind the menu bar - Fixed debug console loosing focus when other windows are present - Fixed ImGui not appearing in OBS's Game Capture mode, Discord streaming, and possibly more - Fixed the first console autocomplete entry not being selectable with the keyboard /newline/ Modified: * PlayerManager : - FirstCollectibleOwner(CollectibleType Collectible, boolean LazSharedGlobalTag = true) - FirstTrinketOwner(TrinketType Trinket, RNG RNG = nil, boolean LazSharedGlobalTag = true) * OptionsMenu : - Its functions can now be called ingame and point to the pause menu options submenu when appropiate * PRE/POST_PLAYERHUD_RENDER_HEARTS callback now passes EntityPlayer (Vector Offset(?), Sprite HeartsSprite, Vector Position, float Unknown, EntityPlayer Player) * Rename "MC_HUD_POST_UPDATE" into "MC_POST_HUD_UPDATE" for consistency * MC_GET_SHOP_ITEM_PRICE now provides a price argument /newline/ Fixes: * Fixed relative ids being displayed as actual ids on xmldata tables. * Fixed SetCompletionMarks functions when launching the game from the room editor or BR. * Fix GridEntity:ToFire/ToTNT/ToWall functions * Fixed binder for Entity:ComputeStatusEffectDuration * Fixed pause menu modded marks rendering over the controller disconected popup * Fixed DamageFlag.DAMAGE_RED_HEARTS / .DAMAGE_NO_PENALTIES / .DAMAGE_FAKE not working when adding them via MC_ENTITY_TAKE_DMG's return table. * Fixed an issue on xmldata that created extra ghost entries on some nodetypes when asking for stuff that isnt there * Fixed an issue with the stats sprite for the pause menu callbacks where it ended up holding garbage data * Fixed some broken EventCounter enums * Fixed PRE/POST_ENTITY_THROW EntityPlayer argument being pushed as optional parameter * Fixed crash when calling Game():MoveToRandomRoom() with seed 0 /newline/ /versionseparator/ v1.0.5a - Fixes: * Hot-Fixed a crash that happened when no mods were enabled in 1.0.5 /newline/ /versionseparator/ v1.0.5 - Additions: * Added Challenge completion tracking to the mod challenges menu * Added localization code support * Added settings to change unifont rendering size * Add Update callbacks for GridEntityTNT * Add Render callbacks for GridEntityLock and GridEntityTeleporter * LayerState: - Get/SetWrapSMode - Get/SetWrapTMode - these play some currently unknown role in allowing sprites to wrap around, and is required for Beam sprites * Beam and Point have recieved some reworks in preparation for a future cord reimplementation - The Sprite used in the Beam must be in the same "scope" as the Beam. For example, a global Sprite and local Beam works, but local Sprite` and global Beam won't. They can also both be global/local or in the same table. - Point no longer has a Color object for the time being to save some space. It should hopefully return later, pending finding a good way to optimize it. * Added PRE_PLAYERHUD_RENDER_HEARTS(Vector Offset(?), Sprite HeartsSprite, Vector Position, float Unknown) callback, returning true cancels hearts HUD rendering * Added support for custom items in the items attr on players.xml by using their name instead of id. * Added support for modded startitems,playertype and starttrinkets in challenges.xml. * Added support for custom achievements in the achievement attribute for items.xml(cant lock items yet tho...) * Added MC_POST_HUD_RENDER callback (good for rendering on top of the HUD) * Added WeightedOutcomePicker:RemoveOutcome(int Value) and WeightedOutcomePicker:GetOutcomes() * Added Entity Get/Set methods related to status effects countdown * Added challenges.xml param unlocksachievement attribute, which tells which achievement is unlocked on the modded challenge completion. * Added MC_POST_PRE_CHALLENGE_DONE to do stuff when a challenge is completed, on POST, or prevent its completion on PRE. * Added the challenge functions Isaac.GetModChallengeClearCount, Isaac.ClearChallenge, Isaac.MarkChallengeAsNotDone and Isaac.IsChallengeDone. * Changed the PRESS E FOR CHALLENGES MENU note, on the challenges menu, to follow you around and not be left at the top. * Entity:ForceCollide() now works for EntityLasers * ModsMenu.GetSelectedElement() and ModsMenu.SetSelectedElement() now start at 1 to be more intuitive * ModsMenu.SetSelectedElement() clamps values below and above the amount of mods the player has * The mods menu can now be scrubbed through! Left/Right will scroll three mods at a time. Page Up/PageDown on keyboard and Left/Right Trigger on controller will scroll ten mods at a time. * Added WeightedOutcomePicker:AddOutcomeFloat(), WeightedOutcomePicker:Clear() and WeightedOutcomePicker:GetNumOutcomes() /newline/ Fixes: * Fix Repentogon Resources not being loaded when mods are off * Fix GridEntity render callbacks being massively broken * Fix PRE_GRID_ENTITY_SPAWN not accepting a table * Fix potential crash with SpawnGridEntity(GridEntityDesc) - main_ex.lua typechecking on this is temporarily disabled - Will silently fail if returning an invalid type to prevent crashes * Fix Entity:AddWeakness duration being incorrect * Fix Beam:Add(Point) override * Fix nomarks players.xml attribute * Fix GetAchievementIdByName not working until Slot selection * Fix XmlData.GetByName and GetById returning the input instead of nil when not finding anything * Fix several XMLData Achievement SourceId clownery when mods set ids for their achievements * Fix XMLData GetNumEntries being inconsistent * Fix binder for Familiar:UpdateDirtColor * Fix FlatPatch spam in repentogon.log by reworking Quick Room Clear patch * Fix GridEntityDoor vanilla variables PreviousState/PreviousVaraint returning unusable userdata instead of integer * Fix Weapon:SetFireDelay() not working * Fix ModsMenu.SetSelectedElement() only having a cosmetic effect /newline/ /versionseparator/ v1.0.4 - Additions: * The error dialog now automatically gets dismissed the next time ImGui is opened * Imgui.IsVisible() * Added function overload for Isaac.GetLocalizedString(), which accepts LanguageCode string as paramater * Added Scale param for POST_PLAYERHUD_RENDER_ACTIVE_ITEM callback * Added Entity:GetDamageCountdown() and Entity:SetDamageCountdown() /newline/ Fixes: * Fixed Eden's damage, range, and shot speed stats not properly changing * The console reimplementation is now more faithful to the original, which fixes some cases where the output color was wrong * Pickup:GetCollectibleCycle() length now limited by CycleCollectibleCount * Fixed binder for Player:AddBoneOrbital * Renamed Player method AddLeprocy -> AddLeprosy * Fixed binder for PlayerHUD:RenderActiveItem * Fixed a bug where POST_ITEM_OVERLAY_UPDATE callback passed unusable userdata instead of Giantbook ID * Fixed PRE_ITEM_OVERLAY_SHOW callback not playing custom giantbook animation, when you replace vanilla one * Fixed PRE_PLANETARIUM_APPLY_X_PENALTY softlocking the game * Enabled mods/debug console disable access to enter daily run as before /newline/ /versionseparator/ v1.0.3 - Additions: * ColorParams - Used to store the color and parameters passed by Entity:SetColor (Priority, Duration, Fadeout, Shared) * Entity:CopyStatusEffects() now copies the Color over to the target Entity, including the proper duration and other parameters - This can be toggled with the CopyColor argument, default true * Isaac.IsInGame * EntityPickup : - GetCollectibleCycle - RemoveCollectibleCycle * Capsule : - Capsule constructor * MenuManager : - GetViewPosition - SetViewPosition * The luamod command now supports autocomplete * Dear ImGui console now has a back button to allow controllers & Steam Deck to exit * dsound.dll will log when it's been unloaded to help debug cases of REPENTOGON not loading * Improved constructors for Sprite and Font classes * Added documentation for the MC_PRE_LEVEL_SELECT callback * Added gfxback property to custom achievements xml /newline/ Fixes: * Fix a crash with weapon-copying familiars and Spirit Sword * Fixed a possible crash when GetNullFrame is called on a Sprite that is not yet fully loaded * Fixed MC_POST_ENTITY_TAKE_DMG triggering when the player touches the white fireplace in downpour/dross * Fix Card Against Humanity only ever spawning regular poops * Fix crawlspace floors (and possibly other unnoticed cases) not rendering * Fix Entity:CopyStatusEffects(Entity, Entity) doing nothing * Fix potential issue with XMLData.GetNumEntries * Improve paramater validation for MC_PRE_LEVEL_SELECT to prevent possible crashes * Modify vanilla function Game():GetPlayer to prevent possible crashes * Changelog can now be safely closed using the "menu back" button e.g. Esc * Fixed AnimationData:IsLoopingAnimation returning boolean, instead of integer * Fixed a custom cutscene issue that played the Intro on cases where it shouldnt /newline/ /versionseparator/ v1.0.2 - Additions: * Added Pickup:GetAlternatePedestal() * REPENTOGON'S logfile (repentogon.log) now shows timestamps /newline/ Fixes: * Fixed a crash when time is set to 0 in the performance logger * Fixed Dingle always spawning a red poop * Fixed achievements not firing in Steam /newline/ /versionseparator/ v1.0.1 - Fixed the updater erroneously asking to update, sorry :( /versionseparator/