github TeamREPENTOGON/REPENTOGON 1.1.0

10 hours ago

Repentance+ release!. From this point on, you need the REPENTOGONLauncher to properly use this updates.
Additions:

  • Camera:
    • Update(bool Interpolated = false)
    • SetClampEnabled(bool clamped)
    • IsClampEnabled
  • ChallengeParam:
    • IsBeastPath
  • Game:
    • ChainLightning(Vector Position, float BaseDamage = 3.5, TearFlags TearFlags = TearFlags.TEAR_NORMAL, Entity Spanwer = nil)
  • GridEntity:
    • [Get/Set/Reset]WaterClipFlags
  • Entity:
    • [Get/Set/Reset]WaterClipFlags
    • CanDevolve
  • EntityDesc:
    • EntityDesc(EntityType Type = 0, int Variant = 0, int Subtype = 0, ChampionColor ChampionId = -1, float Health = 0.0, float MaxHealth = 0.0, boolean PlayerControlled = false)
    • [Get/Set]Type
    • [Get/Set]Variant
    • [Get/Set]Subtype
    • [Get/Set]ChampionId
    • [Get/Set]Health
    • [Get/Set]MaxHealth
    • [Is/Set]PlayerControlled
  • EntityPickup:
    • GetMegaChest[Left/Right]Collectible
      Returns the other EntityPickup for a Mega Chest
    • HasFlipData
      Returns true if pickup is collectible and has Flip save state.
    • GetFlipCollectible
      Returns CollectibleType if flip save state exists, nil otherwise.
    • InitFlipState(CollectibleType = CollectibleType.COLLECTIBLE_NULL, SetupCollectibleGraphics = true)
  • EntityPlayer:
    • [Get/Set]ActionHoldDrop - how long player holds action drop button.
    • SetD8DamageModifier
    • SetD8FireDelayModifier
    • SetD8RangeModifier
    • SetD8SpeedModifier
    • [Get/Set]ForgottenSwapFormCooldown
    • [Get/Set]MaggyHealthDrainCooldown
    • [Get/Set]MawOfTheVoidCharge
    • [Get/Set]MontezumaRevengeCharge
    • [Get/Set]PlanCKillCountdown
    • [Get/Set]PotatoPeelerUses
      Used to increment Cube of Meat familiar form
    • [Get/Set]RockBottomMoveSpeed
    • [Get/Set]RockBottomMaxFireDelay
    • [Get/Set]RockBottomDamage
    • [Get/Set]RockBottomTearRange
    • [Get/Set]RockBottomShotSpeed
    • [Get/Set]RockBottomLuck
    • [Get/Set]RevelationCharge
    • GetPlayerHUD
    • [Get/Set]SuplexState
    • [Get/Set]SuplexAimCountdown
    • [Get/Set]SuplexTargetPosition
    • [Get/Set]SuplexLandPosition
    • CreateAfterimage
    • [Add/Get]CandyHeartBonus
    • [Add/Get]SoulLocketBonus
    • GetTearsCap
    • GetStatMultiplier
    • GetSmeltedTrinketDesc
    • [Get/Set]CharmOfTheVampireKills
    • IsPostLevelInitFinished
    • HasForcedCamoEffect
    • SetForceCamoEffect
    • HasCamoEffect
  • EntityFamiliar:
    • IsLilDelirium
    • SetLilDelirium
    • GetRandomWisp
    • GetActiveWeaponEntity
    • GetActiveWeaponNumFired
  • EntityTear:
    • GetHitList
    • ClearHitList
    • FireSplitTear
  • EntityLaser:
    • FireSplitTear
  • EntityKnife:
    • FireSplitTear
    • GetHitboxParentKnife
    • SetHitboxParentKnife
  • EntitySlot:
    • GetPrizeSprite
  • EntityNPC:
    • ApplyTearflagEffects
  • EntityConfigEntity:
    • GetDevolvedEntity
  • Level:
    • Added overloads for CanPlaceRoom(AtDoor) and FindValidRoomPlacementLocations that accept a RoomShape and DoorMask instead of a RoomConfigRoom.
    • GetGenerationRNG
  • PlayerManager:
    • GetRandomCollectibleOwner
    • GetRandomTrinketOwner
  • Isaac:
    • GetButtonsSprite
    • GetAllowedDoorsMaskForRoomShape: Returns a DoorMask representing all DoorSlots that are allowed for the given RoomShape.
    • UnClearChallenge(challenge id): sets the target challenge id as not cleared. Not recommended with vanilla ones, it should still work tho!
    • SpawnBoss(Type,Variant,SubType,Position,Velocity,Spawner,Seed = ?) Spawns an NPC forcing it to be a Boss, giving it a boss bar and boss-lile qualities.
    • GetNanoTime(): Returns a high-resolution timestamp in nanoseconds.
    • RenderCollectionItem(CollectibleType Collectible, Vector Position, Vector Scale = Vector.One, Color Color = Color.Default)
    • ReworkCollectible(Collectible): marks the collectible as reworked, making the game not execute the item's original logic.
    • ReworkBirthright(PlayerType): marks the birthright as reworked, making the game not execute the item's original logic.
    • ReworkTrinket(Trinket): marks the trinket as reworked, making the game not execute the trinket's original logic.
  • ItemPool:
    • AddCollectible
    • AddTemporaryCollectible
    • RemoveTemporaryCollectible
  • ItemConfig_Item:
    • Add/RemoveCustomTag
    • Add/RemoveCustomCacheTag
  • HUD:
    • GetStackedStreakSprite
    • GetPlayerStreakSprite
  • Minimap:
    • Refresh
  • PlayerHUD:
    • GetIndex
    • GetLayout
  • ProceduralEffect
    • Fix fartScale.
    • GetScore
    • GetTriggerChanceScale
  • Room:
    • TriggerOutput(RoomEventOutput GroupIdx)
    • GetWallColor()
  • RoomConfig:
    • AddRooms
  • RoomConfigSet:
    • AddRooms
  • RoomDescriptor:
    • [Get/Set]TaintedKeeperCoinSpawns
      Prevent coin spawn from killed enemies on room reenter when counter reaches 10.
  • ScoreSheet:
    • GetBeastBonus
    • GetDeliriumBonus
    • GetMotherBonus
  • Seeds:
    • SetStageSeed(LevelStage, Seed)
  • FXLayers:
    • AddPoopFx(ColorMod Color)
  • Weapon:
    • GetMainEntity
      Returns active entity used by weapon (Brimstone - EntityLaser, Mom's Knife - EntityKnife and etc.)
  • MenuManager:
    • IsActive: returns true when MenuManager is ready to be used a.k.a if you can use the menuman functions (normally, if you are at the main menu)
  • CharacterMenu
    • GetPlayerTypeFromCharacterMenuID(int CharacterMenuID, bool Tainted)
      Tainted boolean defaults to current menu if unspecified.
    • GetCharacterMenuIDFromPlayerType(int PlayerType)
      Note that the normal/tainted versions of a character have the same CharacterMenuID.
    • GetSelectedCharacterPlayerType()
      Returns the PlayerType for the character currently selected in the menu.
  • Players.xml
    • Added support for modded/text trinkets on the "trinket" param (I forgot trinkets existed tbh, lol)
    • Added "hideachievement" attribute, which hides the character from the character select menu until the corresponding achievement is obtained
      (Doesn't do anything for tainted characters, since whether or not they appear on the menu is entirely dependant on the non-tainted character)
    • Added "hurtsound" attribute, which overrides the player's damage sound.
    • Added "deathsound" attribute, which overrides the player's death sound.
  • Items.xml
    • Added "activegfx" attribute, which sets separate active item image for rendering in active slot.
  • 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)
      Triggers if "SleepFillHP" item overlay sprite's event is triggered, and before the hearts addition is applied.
      Return true to cancel vanilla behavior.
    • 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
    • MC_PLAYER_HEALTH_TYPE_CHANGE
      Runs when a player's health type changes, but before automatic health conversion
    • MC_POST_ROOM_RENDER_ENTITIES
      Runs after all entities & grid entities in the room have been rendered, but BEFORE effects like overlays, shockwaves, and the mirror world effect are applied.
      Rendering done on this callback is also preserved in room transition animations.
    • MC_POST_START_AMBUSH_WAVE(boolean BossAmbush)
      Fires at the start of challenge/boss rush room wave
    • MC_POST_START_GREED_WAVE
      (add description later)
    • MC_EVALUATE_MULTI_SHOT_PARAMS(EntityPlayer, MultiShotParams, WeaponType)
      Optional param: PlayerType
      Replacement for the legacy MC_POST_PLAYER_GET_MULTI_SHOT_PARAMS that passes along a mutable MultiShotParams and allows all mods to modify it.
    • MC_EVALUATE_STAT(EntityPlayer, EvaluateStatStage stat, float currentValue)
      Optional param: EvaluateStatStage
      Used to modify intermediate values of player stat calculations.
      Currently supported: EvaluateStatStage.TEARS_UP, EvaluateStatStage.FLAT_TEARS, EvaluateStatStage.DAMAGE_UP, EvaluateStatStage.FLAT_DAMAGE
      NOTE: Unless you need to perform complicated conditions/calculations, it is strongly suggested that you use the new XML item stats features instead of this callback!
    • MC_EVALUATE_TEAR_HIT_PARAMS(EntityPlayer, TearParams, WeaponType, float DamageScale, integer TearDisplacement, Entity Source)
      Optional param: PlayerType
      Used to modify mutable TearParams object.
    • MC_PRE/POST_APPLY_TEARFLAG_EFFECTS(EntityNPC entity, Vector position, TearFlags, Entity source, float damage)
      Optional param: EntityType of the source, if any
      Called when TearFlags effects are applied to an npc. The source could be basically anything (tear, laser, knife, nil, etc)
    • MC_POST_FIRE_SPLIT_TEAR(EntityTear tear, Entity source, SplitTearType|string)
      Optional param: SplitTearType|string
      Fires for stuff like cricket's body, parasite, etc
    • MC_POST_ROOM_SAVE_STATE(Room, RoomDescriptor)
      Fires after the room saves all entities and grid entities.
    • MC_PRE_ROOM_RESTORE_STATE(Room, RoomDescriptor)
      Fires before the room respawns all saved entities.
    • MC_POST_SWAP_ROOMS(RoomDescriptor, RoomDescriptor)
      Fires after two rooms have been swapped, due to Curse of the Maze.
    • MC_POST_BACKWARDS_ROOM_SAVE(LevelStage, RoomDescriptor, string)
      Fires after a room has been saved; to then be restored when generating the Ascent.
      The string key (e.g. "boss_0", "treasure_0") identifies which slot the room was saved into.
    • MC_POST_BACKWARDS_ROOM_RESTORE(LevelStage, RoomDescriptor, string)
      Fires when generating the Ascent layout and one of the previously saved room is restored.
      The string key (e.g. "boss_0", "treasure_0") identifies which slot the room was saved into.
    • MC_PRE_ADD_TRINKET(player, TrinketType, firstTime)
      Return false to cancel, or a different TrinketType to change the trinket being added.
    • MC_TRY_ADD_TO_BAG_OF_CRAFTING(player, pickup, BagOfCraftingPickup[])
      Optional param: PickupVariant
      Return false to prevent, or return a table of BagOfCraftingPickups to modify what gets added.
      Note: Prefer to use the new bagofcrafting attribute in entities2.xml where possible.
    • MC_POST_ADD_TO_BAG_OF_CRAFTING(player, pickup)
      Optional param: PickupVariant
      Only runs when the pickup was successfully "added" to the bag.
    • MC_POST_ITEM_OVERLAY_RENDER
    • MC_PRE_OPEN_CHEST(EntityPickup, EntityPlayer?)
      Optional param: PickupVariant
      Fires before a chest is opened. Return false to prevent it from opening.
    • MC_POST_OPEN_CHEST(EntityPickup, EntityPlayer?)
      Optional param: PickupVariant
      Fires after a chest opened.
    • MC_POST_DISCHARGE_ACTIVE_ITEM(CollectibleType, boolean CollectibleRemoved, EntityPlayer, ActiveSlot)
    • MC_POST_ROOM_TRIGGER_CLEAR(boolean Silent)
    • MC_POST_PLAYER_DROP_TRINKET(TrinketType, Vector DropPosition, EntityPlayer, boolean IsGolden, boolean ReplaceTick)
      Optional param : TrinketType
      Fires after player dropped trinket.
  • New Enums:
    • DoorMask
    • WaterClipFlag
    • PlayerHUDLayout
    • RoomEventOutput
    • CustomCacheTag
    • EvaluateStatStage
    • SplitTearType
    • UseActiveItemResultFlag
  • Options:
    • AimLockEnabled
    • AscentVoiceOver
    • BossHPOnBottom
    • Brightness
    • Contrast
    • Exposure
    • OnlineChatEnabled (read-only)
    • OnlineChatFilterEnabled (read-only)
    • OnlineColorSet (read-only)
    • OnlineHUD (read-only)
    • OnlineInputDelay (read-only)
    • OnlinePlayerOpacity (read-only)
    • OnlinePlayerVolume (read-only)
    • PreventModUpdates (now read-only)
    • StreamerMode (read-only)
    • TouchMode
    • WindowHeight
    • WindowPosX
    • WindowPosY
    • WindowWidth
  • Added the following attributes for entities2.xml:
    • bagofcrafting="..." - Allows specifying BagOfCraftingPickup results for bagging custom pickups
      bagofcrafting="blackheart" - adds a black heart to the bag
      bagofcrafting="penny bomb key" - adds a penny, bomb and key to the bag (up to 8 at once is supported)
      bagofcrafting="none" - prevents the pickup from adding anything to the bag (may be useful for custom subtypes)
    • meleecollide="true" - Allows the custom pickup to trigger collision with the player when hit by a bone club or similar melee weapon
    • boomerang="true" - Allows the custom pickup to be grabbed by Boomerang / Jaw Bone
  • 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.
  • Added the following customcache for items.xml:
    • "healthtype" - Re-evaluate the player's HealthType
    • "tearscap" - Re-evaluate the player's maximum tears-per-second before flat modifiers and multipliers. Triggers a CACHE_FIREDELAY eval when changed.
    • "statmultiplier" - Re-evaluate the multiplier on the player's stats gained from items (the same one used for Cracked Crown and Tainted Bethany). Triggers standard cache evals for the relevant stats when changed.
  • Stats can now be assigned to collectibles, trinkets and nulls in items.xml! These stat modifications will behave identically to those from most vanilla items that modify those stats.
    • For example:
      tears="0.7" will behave like Sad Onion
      flattears="0.5" will behave like Pisces
      damage="1" will behave like Pentagram
      flatdamage="2" will behave like Curved Horn
    • Supported: tears, flattears, tearsmult, damage, flatdamage, damagemult, shotspeed, speed, range, luck
    • Prepend "effect" to assign the stat change to the corresponding TemporaryEffect instead (ie: effecttears="0.7") (this is particularly relevant for active items)
    • The corresponding "cache" values are automatically added to the item, so you don't need to specify those as well.
  • Add new Vanilla Tweaks option "Disable exit prompt", which disables prompt pop-up when you try to exit the game from title menu.
  • Custom curse icons can now be applied to custom curses
    • Custom graphics can be defined in mapitemicons.anm2, placed in modName/content/gfx folder, with one frame per curse entry on animation curses, otherwise all icons from the mod will be empty by default
    • Recommended settings for curse frame is 16x16 and centered around the origin (position set to 0, 0, pivot to 8, 8)
      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.
  • Fixed Isaac.SetIcon sometimes failing after being called too many times.
  • Players can no longer get stuck with buggy heart containers when changed to soul/bone heart health types (they get converted by default).
  • Fixed player:Revive reviving The Forgotten with a bugged half soul heart that cannot be removed.
  • Fixed a possible error when a lua error occurs during a custom callback that uses a table as its callback ID.
  • Entity:
    • Fixed GetPredictedTargetPosition returning unusable data.
  • EntityPlayer:
    • SetBagOfCraftingSlot / SetBagOfCraftingContent now automatically recalculate the crafting output & shift bag contents if empty spaces are added in the middle.
    • Fixed SetFootprintColor crashing
    • Fixed an issue where SetMegaBlastDuration was not updating the laser duration if it existed
    • Fixed FriendBallEnemy accessor/setter
  • ItemConfig_Costume:
    • Fixed SkinColor attribute (now provides a valid int and can be modified)
  • 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.
  • RoomTransition:
    • Fixed StartBossIntro crash on call if room index for room transition is invalid.
  • ModCallbacks:
    • Fixed returning false on MC_PRE_PLAYER_ADD_CARD/PILL not preventing the card/pill being added as intended.
    • Fixed the float DamageAmount attribute in MC(_POST)_GRID_HURT_DAMAGE
    • Fixed MC_POST_ENTITY_TAKE_DMG sometimes providing 0 for players
    • Fixed MC_PRE/POST_GRID_ENTITY_TELEPORTER_RENDER not running
    • Fixed the position passed by MC_PRE/POST_PLAYERHUD_RENDER_HEARTS for co-op Esaus in REP+
  • XMLData:
    • Fixed an issue where entry names starting with numbers were not properly resolved for parameters
    • Fixed an isue with ModData not displaying the extra REPENTOGON attributes (enabled/fulldirectory/etc)
    • Fixed an issue with indev or pirated mods with repeated ids not showing up in luamod or in XMLData
  • 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)
  • GridEntity
    • Fixed HurtDamage crashing
  • Console
    • Fixed a crash with RegisterMacro if no parameters were passed into it.
  • Misc:
    • Modded characters locked behind achievements no longer appear in the local co-op wheel.
      Modified:
  • EntityFamiliar:
    • GetPathFinder -> GetPathfinder
    • bool, table TryAimAtMarkedTarget(Vector AimDirection = nil, Direction Direction = Direction.NO_DIRECTION, Vector TargetPos = nil)
      Return true if player's mark from Marked or Eye of the Occult/Gello target exists, false otherwise.
      Return a table containing the changed AimDirection, Direction, and TargetPos.
      The legacy function signature has been kept and should now properly return the changed TargetPos.
  • 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.
    • GetSmeltedTrinkets now accepts an optional table parameter, a list of trinket IDs, to use as a filter for better performance
    • TryAddToBagOfCrafting now returns a boolean (true if something was added to the bag)
    • UseActiveItem now returns a bitmask (UseActiveItemResultFlag.DISCHARGE and/or UseActiveItemResultFlag.REMOVE, or 0)
    • Player no longer leaves a pee/blood puddle when entering a new room when the health type is set to HealthType.LOST/NO_HEALTH
  • EntityNPC:
    • boolean ReplaceSpritesheet
  • 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
  • ModCallbacks:
    • MC_POST_PLAYER_TRIGGER_EFFECT_REMOVED(EntityPlayer Player, int Count)
      Added Count argument (how many instances of this effect were removed)
    • MC_PRE_MOD_UNLOAD(Mod, bool ShuttingDown)
      Added boolean argument that identifies if it is running due to game shutdown
      Now runs earlier during shutdown, so code is less likely to crash
    • MC_POST_CURSE_EVAL
      Returning a value will now pass the modified curse mask along to the next callback instead of ending the callback early.
    • MC_PRE_ADD_COLLECTIBLE
      Returning a value to modify the collectible being added will now pass that ID along to other callbacks instead of stopping.
    • MC_PRE_PLAYERHUD_RENDER_ACTIVE_ITEM
      Added CropOffset field (Vector, defines rectangle area of the active item image that will rendered in active slot)
    • MC_POST_PLAYER_NEW_LEVEL
      Added PostLevelInitFinished argument
    • MC_GET_PILL_EFFECT
      Added EntityPlayer argument
    • MC_POST_ENTITY_KILL
      Added EntityRef argument (which entity killed this one)
  • reloadshaders command will now reload custom anm2 shaders
  • Daily goal path icon will now be displayed on Mega Satan daily runs.
  • Fixed "luareset" command executing scripts from not loaded mods

Don't miss a new REPENTOGON release

NewReleases is sending notifications on new releases.