Skip to content

Releases: TeamREPENTOGON/REPENTOGON

1.1.2c

22 May 00:54

Choose a tag to compare

  • Fixed potential freeze/crash on startup if mods that have a "%" symbol in their names are installed
  • Fixed RoomTransition.GetPlayerExtraPortraitSprite returning nil if the PlayerType doesn't use the shaking animation (ie, "noshake")
  • Fixed adding/removing innate Book of Virtues not properly updating the active item HUD
  • Prevent the game from creating empty duplicates of mod folders that have no "version" in their metadata.xml

1.1.2b

16 May 04:15

Choose a tag to compare

  • Fixed a bug from v1.1.2a where modded challenges that were supposed to start with modded characters would start as Isaac instead.
  • Fixed a bug from v1.1.2 where Tainted Azazel's brimstone would always start at half charge (as if an enemy was hit with the sneeze).
  • Fixed crashes caused by EntityFamiliar:GetPathFinder():MoveRandomlyAxisAligned()
  • Fix Bethany having Book of Virtues in the Bloody Mary challenge (bug from Repentance+ v1.9.7.12)

1.1.2a

15 May 00:46

Choose a tag to compare

  • Fixed MC_POST_ADD/REMOVE_INNATE_COLLECTIBLE potentially triggering callbacks twice if they use a GroupKey as their optional param.
  • Fixed MC_PRE/POST_PLAYER_ADD_CARD/PILL sometimes reporting the incorrect slot when the player has their pocket active item selected.
  • Fixed HistoryHUD:GetItems() and variants sometimes crashing the game if the optional boolean parameter "IncludeNotVisible" is explicitly provided.
  • Fixed a bug where the PlayerType used for custom challenges could be incorrect if hidden challenges are present.
  • Fixed the Mars null costume not always being properly added/removed for innate copies (and wisps).

1.1.2

02 May 15:56

Choose a tag to compare

Added:

  • ModCallbacks:
    • MC_PRE_UPDATE()
      Triggers before the game's main update cycle.
      Can be used to prevent the normal update, effectively pausing the game.
    • MC_PRE_ROOM_COLLISION_PASS()
      Triggers right before collision detection.
    • MC_GET_BOSS_THEMATIC_ITEM(boolean Spawned, CollectibleType SpawnedCollectible, TrinketType SpawnedTrinket)
      Triggers after boss room clean. Used to spawn/overwrite result of second collectible or trinket.
      Return table with field "Collectible" to spawn collectible, or "Trinket" to spawn trinket.
      Alternatively you can return true to cancel item spawn altogether.
    • MC_PRE/POST_RENDER_CHARACTER_SELECT_PORTRAIT(PlayerType, Sprite, Vector Position, Vector DefaultScale, Color DefaultColor)
      On PRE, return false to cancel rendering, or a Vector to change the Position.
      Modifications made to the Sprite during this callback WILL apply to the natural render.
      PlayerType is -1 when "random character" is selected.
      Optional param: PlayerType
    • MC_PRE/POST_RENDER_CHARACTER_SELECT_PAGE(PlayerType, Vector Position, Sprite DefaultSprite, Sprite ModdedSprite, bool HasCustomBackground)
      PRE supports returning false to cancel rendering. Modifications made to the Sprites will apply to the natural render.
      ModdedSprite can only be non-nil for modded characters. HasCustomBackground indicates if ModdedSprite includes a background paper.
      PlayerType is -1 when "random character" is selected.
      Optional param: PlayerType
    • MC_PRE_BOMB_DAMAGE(Vector Position, float Damage, float Radius, bool LineCheck, Entity Source, TearFlags, DamageFlags, bool DamageSource)
      Called before Game():BombDamage(), used to damage entities in a radius for explosions, etc.
      Return false to cancel, or a table containing changed values for Position, Damage, Radius, TearFlags, and/or DamageFlags.
      Optional param is the EntityType of the Source entity, if one exists (the Source can be nil).
    • MC_PRE_BOMB_TEARFLAG_EFFECTS(Vector Position, float Radius, TearFlags, Entity Source, float RadiusMult)
      Called before Game():BombTearflagEffects(), used when TearFlags-based effects are triggered by an explosion.
      Return false to cancel, or a table containing changed values for Position, Radius, TearFlags, and/or RadiusMult.
      Optional param is the EntityType of the Source entity, if one exists (the Source can be nil).
    • MC_PRE/POST_BRIMSTONE_SNEEZE(Entity Source, Vector Direction, float DamageScale)
      Runs for the Hemoptysis / Tainted Azazel sneeze attack.
    • MC_CAN_SELECT_CHARACTER(PlayerType, bool IsBeingSelected)
      Will only run for characters present in the character select menu that are capable of being selected (IE, not hidden or locked behind an achievement).
      Return false to prevent the character from being selectable. This has no visual effects.
      IsBeingSelected is true if the player is actually trying to start a run with the character. Returning false in this case will play the error buzzer sound.
      Otherwise, this is just a check by some other logic (such as deciding which characters are eligible for random character selection).
      Optional param: PlayerType
    • MC_PRE/POST_HISTORYHUD_RENDER
      Return false to cancel rendering. Return a table to skip rendering the icons for specific items.
      Example: return { HideCollectibles = { CollectibleType.COLLECTIBLE_SAD_ONION, CollectibleType.COLLECTIBLE_INNER_EYE }, HideTrinkets = { TrinketType.TRINKET_SWALLOWED_PENNY } }
    • MC_POST_HISTORYHUD_RECOMPUTE
    • MC_PRE/POST_GRID_HURT(GridEntity, int Damage, EntityRef Source)
      Runs when a Poop or TNT GridEntity takes damage.
      On PRE, you can return an integer to modify the damage, or return false to cancel the damage.
      Optional param: GridEntityType
    • MC_POST_TRIGGER_COLLECTIBLE_ADDED(EntityPlayer, CollectibleType, FirstTimePickingUp, IsWispOrInnate)
      Runs for real collectibles, wisps AND innate items.
      Optional param: CollectibleType
    • MC_POST_ADD_INNATE_COLLECTIBLE/TRINKET(EntityPlayer, CollectibleType/TrinketType, string GroupKey, int Amount, int Duration)
      Optional param: CollectibleType/TrinketType OR GroupKey
    • MC_POST_REMOVE_INNATE_COLLECTIBLE/TRINKET(EntityPlayer, CollectibleType/TrinketType, string GroupKey, int Amount, bool ExpiredDuration)
      Optional param: CollectibleType/TrinketType OR GroupKey
  • Isaac:
    • RenderToWorld(Vector pos)
  • EntityLaser:
    • SetInitSound(SoundEffect sound)
    • Get/SetNumChainedLasers
      This is used by the Monstro's Lung + Technology synergy
  • EntityPlayer:
    • ShootRedCandle and ShootBlueCandle now returns an EntityEffect for the flame.
    • AddBoneOrbital now returns the bone orbital familiar spawned.
    • [Get/Set]ImExcitedSpeedupCountdown
    • [Get/Set]DonateLuck
    • GetErrorTrinketEffect
    • [Get/Set]RUAWizardTimer
    • GetBloodGushSprite
    • CalculateBagOfCraftingOutput
    • RemoveInnateCollectible(CollectibleType, int Amount = 1, string GroupKey = "") -> int
    • GetInnateCollectibleCount(CollectibleType, string GroupKey = "")
    • SetInnateCollectibleCount(TrinketType, int NewCount, string GroupKey = "", bool AddCostume = true)
    • GetInnateCollectibleGroup(string GroupKey) -> table
    • SetInnateCollectibleGroup(string GroupKey, table, bool AddCostumes = true)
    • AddInnateTrinket(TrinketType, int Amount = 1, string GroupKey = "", int Duration = -1, bool AddCostume = true)
    • RemoveInnateTrinket(TrinketType, int Amount = 1, string GroupKey = "") -> int
    • GetInnateTrinketCount(TrinketType, string GroupKey = "")
    • SetInnateTrinketCount(TrinketType, int NewCount, string GroupKey = "", bool AddCostume = true)
    • GetInnateTrinketGroup(string GroupKey) -> table
    • SetInnateTrinketGroup(string GroupKey, table, bool AddCostumes = true)
    • ClearInnateItemGroup(string GroupKey)
    • BlockTrinket
    • UnblockTrinket
    • IsTrinketBlocked
  • EntityEffect
    • [Get/Set/Add/Clear/Has]TearFlags
      Only works for applicable EffectVariants: PLAYER_CREEP_HOLYWATER_TRAIL, BRIMSTONE_BALL, TECH_DOT, and CHAIN_LIGHTNING
  • EntityKnife
    • SetKnifeDistance
    • SetKnifeVelocity
  • TearParams
    • MassMultiplier
    • KnockbackMultiplier
    • SpeedMultiplier
    • TearDisplacement
  • PersistentGameData:
    • Unlock: same as TryUnlock but it overrides situations where TryUnlock would be blocked normally (Challenges)
  • RoomDescriptor
    • GetErrorTrinketEffect
    • GetValidNeighborPlacementLocations(RoomShape = RoomShape.ROOMSHAPE_1x1, DoorMask = -1, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false)
    • GetValidNeighborPlacementLocations(RoomConfigRoom, bool AllowMultipleDoors = true, bool AllowSpecialNeighbors = false)
  • RoomConfig:
    • LoadStb(StbType, int Mode, string StbFileName)
  • RoomConfigSet:
    • LoadStb(string StbFileName)
  • CharacterMenu
    • GetCompletionMarksSprite
  • History
    • SearchCollectibles(int or table)
    • SearchTrinkets(int or table)
  • HUD
    • GetHistoryHUD
  • Sprite:
    • Copy()
    • GetSpritesheet(int layerId)
    • SetSpritesheet(int layerId, Image)
  • LayerState:
    • GetSpritesheet()
    • SetSpritesheet(Image)
  • Renderer:
    • CreateImage(int width, int height, string name)
    • RenderToImage(Image, function)
    • LoadShader(string path, table vertexDesc)
    • GetShaderByType(ShaderType)
    • GetPixelationAmount()
    • GetClipPaneNormal()
    • GetClipPaneThreshold()
    • VertexAttributeFormat enum
  • Image:
    • GetWidth()
    • GetHeight()
    • GetPaddedWidth()
    • GetPaddedHeight()
    • GetName()
    • GetTexelRegion(int x, int y, int width, int height)
    • Render(SourceQuad, DestinationQuad, KColor, ColorMod)
    • RenderWithShader(SourceQuad, DestinationQuad, KColor, Shader, table shaderParams)
  • DestinationQuad:
    • NewFromBounds(Vector topLeft, Vector bottomRight)
    • NewFromRectangle(Vector topLeft, float width, float height)
    • Copy()
    • Translate(Vector)
    • Scale(Vector, Vector anchor)
    • Rotate(number, Vector anchor)
    • Shear(Vector, Vector anchor)
    • ApplyMatrix(table renderMatrix, Vector anchor)
    • Flip(bool flipX, bool flipY)
    • __tostring
  • SourceQuad:
    • NewFromBounds(Vector topLeft, Vector bottomRight, bool uv)
    • NewFromRectangle(Vector topLeft, float width, float height, bool uv)
    • Copy() override
    • IsUVSpace()
    • ConvertToPixelSpace()
    • ConvertToUVSpace()
    • __tostring override
  • BlendMode:
    • New(int rgbSrc, int rgbDest, int alphaSrc, int alphaDest, int equation)
    • NewFromType(BlendType type)
  • Enums:
    • PillEffectSubClass
    • CompletionStatus
    • ChargeType
    • EnemyTargetFlags
    • TrinketSlot
  • Added EntitySaveStateManager class to support persistent, modded save data for entities.
  • Added HistoryHUD and HistoryHUDItem classes
  • Backported new enums for GameStateFlag
  • Added "isActiveEnemy" attribute for EntityNPCs in entities2.xml (set to "true" or "false")
  • Added "innateitems" and "innatetrinkets" attributes for players.xml (comma-separated list of IDs or names)
  • Added SplitTearType.SWORD_BEAM
  • The "Error" and "Modeling Clay" trinkets now use the sprite of the item they are mimicking when smelted, like how they do in later versions of Repentance+.
  • Removed unused class constructors in Renderer.

Modified:

  • Isaac:
    • StartNewGame
      Added optional param "bool isCustomRun".
      Added function variant that takes a whole Seeds object instead of a seed integer.
  • Room:
    • SetRedHeartDamage
      Added optional param "bool value".
  • EntityPlayer:
    • SetControllerIndex(int ControllerIndex, boolean IncludePlayerOwned = false)
      If IncludePlayerOwned set to true, then sets ControllerIndex for player's subplayer/twinplayer
    • AddInnateCollectible(CollectibleType, int Amount = 1, string GroupKey = "", int Duration = -1, bool AddCostume = true)
      A "GroupKey" represents a distinct set of innate items. Innate item functions that take a GroupKey will only interact with items under that key.
      This enables complete separation between different mechanics/mods/effects utilizing innate items, assuming distinct GroupKeys are used.
      IMPORTANT: Using a non-e...
Read more

1.1.2-unstable-4

23 Apr 04:59

Choose a tag to compare

1.1.2-unstable-4 Pre-release
Pre-release

1.1.2-unstable-3

03 Apr 19:25

Choose a tag to compare

1.1.2-unstable-3 Pre-release
Pre-release

1.1.2-unstable-2

06 Mar 03:40

Choose a tag to compare

1.1.2-unstable-2 Pre-release
Pre-release

1.1.2-unstable

28 Feb 02:48

Choose a tag to compare

1.1.2-unstable Pre-release
Pre-release

1.1.1a

31 Dec 16:47

Choose a tag to compare

This update specifically fixes the syncing of the vanilla game options (music volume, the filter, whether mods as a whole are enabled, etc) between vanilla and REPENTOGON. These options were intended to be fully shared between the vanilla game and REPENTOGON. However, for some people this did not work, and vanilla/REPENTOGON would use different options. Some actually mistook this as a feature since they could have mods disabled in vanilla but enabled in REPENTOGON. This was actually a BUG! Unfortunately, fixing the bug may appear to cause odd things for some users.

  • If your mods are no longer working in REPENTOGON, you may need to re-enable them, either by checking "Enable Mods" in the Launcher's "Change Game Options" menu, OR by using the in-game mods menu (note that this will trigger a game restart).

    • Note that if you have never played with mods in vanilla Rep+, the game may automatically disable your mods if you boot up vanilla, which may also disable mods for REPENTOGON. To stop this from happening, launch vanilla and use the in-game mods menu to enable your mods, and accept Nicalis' disclaimer. Alternatively, you may disable "Sync Mods Enabled" in REPENTOGON (see below).
  • If it seems like your save files have changed or disappeared due to the update, don't panic! You may need to check the "Steam Cloud" option in the Launcher's "Change Game Options" menu. This setting determines whether the game reads your saves from local files or the Steam Cloud, which are entirely separate saves. Typically, you probably want this enabled, but there is the possibility that you had it disabled for either vanilla or REPENTOGON.

  • If you WANT to use different options for REPENTOGON, or just the "Enable Mods" setting specifically, this is now available as a feature. Open the console and go to "Tools" -> "Game Options" -> "REPENTOGON", where you will find two new options. Please note that if you disable options syncing entirely, you will not be able to change REPENTOGON's options via the Launcher. A future Launcher update may support it, however.

If you experience any issues beyond this, or need help, just let us know!

1.1.1a-unstable-2

30 Dec 17:04

Choose a tag to compare

1.1.1a-unstable-2 Pre-release
Pre-release

Add toggles to disable options syncing