General fixes: -Vengeful Spirit deals a lot more contact damage, before it was dealing much less than intended -hostile enemies spawned glitch items no longer deal instant damage, so the player gets a small amount of time to get away from them - Fixed Vanishing Twin being able to turn into Dark Esau - Fixed Locust of War + Brimstone Bombs being able to damage the player when spawned by Cricket Leg - Fixed a bug which caused the first two floors of the alternate path to always share the same variant, making it impossible to see both Downpour and Dross in the same run
General modding changes: - Mods are now stored in a "mods" folder in the same directory as the rest of the game files - This directory can be easily accessed by right clicking The Binding of Isaac: Rebirth in the Steam library, then clicking on "Properties", "Local Files", and finally "Browse..." - Mod save data is now stored separately in a "data" folder, meaning that updating or unsubscribing from a mod will no longer cause its save data to be wiped - The name of the subfolder used to store save data is determined by the "directory" property in metadata.xml - Added a loading screen that appears when installing or updating mods from Steam Workshop
XML changes: - Players (players.xml) - Added the following properties: - broken: Number of broken hearts this player begins with - pocketActive: Gives this player the specified starting active item in the pocket item slot - birthright: The unique description that should be displayed when this character picks up Birthright - bSkinParent: If present, marks this character as the "tainted" version of the regular character that bears the specified name - Usually, this should be set to the same name as the character, unless the tainted and regular version of this character bear different names - If there is no regular character to attach to, this character will not be available in the character selection menu - hidden: If set to "true", hides this character from the character selection menu - Custom coop selection graphics can be set for all modded characters by supplying the following animation file (non-tainted characters only): - "content/Coop Menu.anm2": Must contain one animation per character, each animation must bear the same name as the character it was made for - Custom menu graphics can be set for tainted characters by supplying the following animation files: - "content/CharacterMenuAlt.anm2" - "content/CharacterPortraitsAlt.anm2" - "content/Death Screen Alt.anm2" - "content/Coop Menu Alt.anm2" - "content/CharacterMenu.anm2" and "content/CharacterMenuAlt.anm2" no longer require a "Background" layer as the game now renders the paper background automatically - Items (items.xml) - Added the following properties: - shopprice: Sets a custom shop price for this item - initcharge: Overrides the initial charge for this item (this can be used for active items that do not start with a full charge) - chargetype: Can be set one of the following 3 values: normal (recharges on room clear), timed (recharges over time), special (never recharges automatically, cannot be recharged by batteries or item effects) - passivecache: If set to true on an active item, evaluates the player's stats on pickup like a passive item rather than when using the item - hidden: If set to true, cannot be obtained in game unless explicitly spawned or given to the player - persistent: If set to true, temporary effects tied to this item persist between rooms - quality: Sets the quality of this item (0 to 4, where 0 is the lowest quality and 4 is the highest) - tags: Adds one or more tags to this item (see items_metadata.xml for reference)
Lua changes: - Added a new include() function which acts like a "raw" version of require() and will always load the specified file even if it was loaded before - Fixed the spelling of EntityPlayer:GetMaxPocketItems() and EntityPlayer:DropPocketItem() * Previous spellings are still present for backwards compatibility but should no longer be used - Sprite:SetFrame() can now be called with only an int argument, this will adjust the current frame for the current animation without stopping it - Vector multiplication is now commutative (number * vector is a valid operation) and supports element-wise vector by vector multiplication - Color(R, G, B, A, RO, GO, BO) has been updated: - Only the first three arguments (R, G, B) are required, A defaults to 1 when omitted - The offset parameters (RO, GO, BO) default to 0 when omitted and are now in the 0-1 range instead of 0-255 for consistency - Mods that use this feature will need to be updated - Added constants Vector.Zero, Vector.One and Color.Default for convenience purposes - Updated Isaac.GetPlayerTypeByName(string Name, boolean Tainted = false) - If Tainted is omitted or set to false, only matches non-tainted characters - If Tainted is set to true, only matches tainted characters - Tear flags are now represented by the BitSet128 data type, this was a necessary change due 64 bits no longer being enough to hold every tear effect in the game - Most AB+ mods should be backwards compatible, however due to a limitation from Lua, expressions such as "Tear.TearFlags & TearFlags.TEAR_POISON == 0" no longer work correctly - This can be quickly fixed by either replacing "==" with "<=", replacing 0 with TearFlags.TEAR_NORMAL, or using the convenience functions below - The following convenience functions have been added: - void Entity_Tear:AddTearFlags(BitSet128 Flags) - void Entity_Tear:ClearTearFlags(BitSet128 Flags) - boolean Entity_Tear:HasTearFlags(BitSet128 Flags) - void Entity_Bomb:AddTearFlags(BitSet128 Flags) - void Entity_Bomb:ClearTearFlags(BitSet128 Flags) - boolean Entity_Bomb:HasTearFlags(BitSet128 Flags) - void Entity_Laser:AddTearFlags(BitSet128 Flags) - void Entity_Laser:ClearTearFlags(BitSet128 Flags) - boolean Entity_Laser:HasTearFlags(BitSet128 Flags) - void Entity_Knife:AddTearFlags(BitSet128 Flags) - void Entity_Knife:ClearTearFlags(BitSet128 Flags) - boolean Entity_Knife:HasTearFlags(BitSet128 Flags) - Updated EntityProjectile: - Added: - void ClearProjectileFlags(int Flags) - boolean HasProjectileFlags(int Flags) - MC_PRE_SPAWN_CLEAN_AWARD, MC_PRE_NPC_UPDATE and all MC_PRE_xxx_COLLISION callbacks will now only skip remaining callbacks when returning a non-nil value - MC_GET_SHADER_PARAMS will now only skip remaining callbacks when returning a table - Updated arguments passed to MC_USE_CARD (int CardId, EntityPlayer Player, int UseFlags) - Updated arguments passed to MC_USE_PILL (int PillId, EntityPlayer Player, int UseFlags) - Updated arguments passed to MC_PRE_USE_ITEM (int ItemId, RNG ItemRng, EntityPlayer Player, int UseFlags, int ActiveSlot, int CustomVarData) - Updated arguments passed to MC_USE_ITEM (int ItemId, RNG ItemRng, EntityPlayer Player, int UseFlags, int ActiveSlot, int CustomVarData) - If a table is returned instead of a boolean, the following fields can be set to a non-nil value for extra functionality: - Discharge: Determines whether the item should be discharged or not after being used - Remove: Determines whether the item should be removed from the player or not after being used - ShowAnim: Plays the default use animation if set to true (equivalent to simply returning true in AB+) - Updated PlayerTypes.ActiveItemDesc - Added: - int TimedRechargeCooldown: Number of frames before an item with a timed cooldown can recharge again (used by Spin To Win to pause its recharge after fully discharging it) - float PartialCharge: How close the item is to gaining another charge (0-1 range, used by 4.5 Volt) - int VarData: Holds extra information for some active items (such as the number of uses for Jar of Wisps) - Removed: - boolean Lock - Updated EntityPickup: - Added: - int OptionsPickupIndex: Any non-zero value causes the item to form an option group with any other item with the same OptionsPickupIndex value. When an item belonging to an option group is picked up, all other items belonging to the same group disappear. 0 is the default value and means the item doesn't belong to any group. - Removed: - boolean TheresOptionsPickup: see above - Updated GridEntity: - Added: - RNG GetRNG() * The object returned from this function is now a reference rather than a copy - Sprite GetSprite() * Same as above - Removed: - RNG RNG - Sprite Sprite - Updated Sprite: - Added: - string GetAnimation() - string GetOverlayAnimation() - Updated EntityPlayer: - Added: - void ChangePlayerType(PlayerType Type) - void AddBrokenHearts(int Num) - int GetBrokenHearts() - void AddRottenHearts(int Num) - int GetRottenHearts() - boolean CanPickRottenHearts() - void AddSoulCharge(int Num) - void SetSoulCharge(int Num) - int GetSoulCharge() - int GetEffectiveSoulCharge() - void AddBloodCharge(int Num) - void SetBloodCharge(int Num) - int GetBloodCharge() - int GetEffectiveBloodCharge() - EntityPlayer GetMainTwin() - EntityPlayer GetOtherTwin() - boolean TryHoldEntity(Entity Ent) - Entity ThrowHeldEntity(Vector Velocity) - EntityFamiliar AddFriendlyDip(int Subtype, Vector Position) - EntityFamiliar ThrowFriendlyDip(int Subtype, Vector Position, Vector Target = Vector.Zero) - EntityFamiliar AddWisp(int Subtype, Vector Position, boolean AdjustOrbitLayer = false, boolean DontUpdate = false) - EntityFamiliar AddItemWisp(int Subtype, Vector Position, boolean AdjustOrbitLayer = false) - void TriggerBookOfVirtues(CollectibleType Type = CollectibleType.COLLECTIBLE_NULL) - EntityFamiliar AddSwarmFlyOrbital(Vector Position) - int GetNumGigaBombs() - void AddGigaBombs(int Num) - CollectibleType GetModelingClayEffect() - void AddCurseMistEffect() - void RemoveCurseMistEffect() - boolean HasCurseMistEffect() - boolean IsCoopGhost() - EntityFamiliar AddMinisaac(Vector Position, boolean PlayAnim = true) - void SetPocketActiveItem(CollectibleType Type, ActiveSlot Slot = ActiveSlot.SLOT_POCKET, boolean KeepInPools = false) - Updated all enums (see enums.lua) - Many more additions and changes to existing functions, the full list of changes can be found here: https://pastebin.com/748vEEdR
We will be undergoing server maintenance to improve service quality. Please refer to the details below, and we apologize for the inconvenience.
■ Server Maintenance - Schedule: May 15th 02:00 - 03:30 03:20 (CEST) / May 14th 17:00 - 18:30 18:20 (PDT) - Affected Regions: All regions - Details: Server stability & updates
※ Notes - Connections to the game will be terminated as soon as maintenance begins, and players will not be able to connect to the game during maintenance. - Maintenance may change, be extended or end early according to the situation.
For those of you who missed last week's dev update livestream for the month of May, we've edited a cut version of it onto YouTube, chaptered off for your viewing convenience! The Q&A section we recapped in a previous update, but this video also includes all the content we covered including:
Four types of cutscenes in Lost Eidolons (cinematic, static, 2D animated illustration, in-combat)
New skill animations
Camp walk/run/sprint animations
New armor/clothing designs
Face designs
As a reminder, you can always have your question featured in our town hall updates by asking them in the #town_hall channel on our Discord server. We welcome all questions about the project and studio, so don't be shy!
The Genesis II reveals continue following the Canoe, Noglin, and the Minigun. This week we take at a few items that were hot topics during the original reveal in our charity stream.
Gone are the days of remembering to bring every arrow type for the hunt. Including a unique explosive arrow, the Federation issue TEK bow materializes any arrow instantly and uses electromagnetism to shoot them at blinding velocities.
Be careful when you're taking in the beauty of the landscapes and fauna around you. Some things like the Carniflora want to take you in and get a closer look too!
Stryders can be found patrolling the colony ship with a variety of components offering defense, offense, and utility. Just make sure your hacking skills are up to par before trying to claim one of these giant mechanical marvels.
Today we’ve released patch 1.03 for BloodRayne 2: Terminal Cut. In this update:
Music and ambient tracks missing from the original release of BloodRayne 2: Terminal Cut are now included in the game.
The Twisted Park fight with Ephemera has been rebalanced to more closely match the difficulty of the original console release of BloodRayne 2 (rocks are now easier to destroy).
Images in the unlockable Slideshows of the Extras menu now display at a higher resolution and with improved scaling.
An issue where English lines of dialog would occasionally play when playing the game in Russian has been fixed (note: you must set the language of the game to Russian in the Steam client for cutscenes to play in Russian).
Miscellaneous bug fixes have been made.
Steam Trading Cards have also been added to the game.
Jake here with some unfortunate news. At present we are still awaiting the approval from Steam to release. I'm not sure how much longer we need to wait, and our fingers are still crossed for a release occurring today, but that gets less likely with every passing hour.
We are very sorry that we may not be able to release today, and we ask for your patience and understanding as we try to figure things out and get this game to all of you. We've discussed some backup dates for release and we'll get that information out when/if it's needed. Until then, thank you all for sticking around, it means so much.
The UI flow for dog pupation has been slightly adjusted. In the past, when you clicked on the cocoon thought-bubble above a dog, it would instantly pupate them. This was great if that's what you wanted to do, but it was easy to accidentally click on, often resulting in unwanted pupation. To try and address this issue without completely revamping the UI flow (which would be confusing for existing players), clicking this thought bubble now opens up a list of self-commands just like clicking on a dog directly. When a dog can pupate, they will now have a self-command to do so. The command should hopefully stick out to everyone as it has its own special cocoon icon attached to it. The tutorial text has also been updated to reflect this change.
I've added a slight lockout timer to sneezing. Dogs that sneezed a lot in the past will still do so now, but they should no longer chain-sneeze to quite the same degree.
New Content:
Younger dogs will now enter a teething period during which they'll get a score boost towards behaviors that involve biting or grabbing things. The score boost isn't massive, so hopefully this doesn't result in chaos, but I'll be keeping an eye on it just in case. During this teething period, there's a slight chance that dogs will leave behind a baby tooth. These teeth are, of course, edible and come with a new flora.
Audio:
SFX for opening/closing the dog storage screen.
Bug Fixes:
The pipe entrance suction sound loops were sometimes getting stuck playing even after an object left the entrance. I audited this flow, made some adjustments, and I believe this issue should now be fixed.
You could mess up the camera view if you entered a dog den, entered build mode, and then pressed play. The camera will now respond to this correctly.
The camera would often recenter on the starting pen after exiting build or placement mode. It should now correctly refocus on the pen you were last looking at, as long as that pen is still around.
You could previously click on a dog's cocoon thought bubble while inside of placement mode. The bubble now hides itself in this situation.
If you switched active dogs while the actions window was up, you'd still be controlling the dog you opened it for, but the UI would indicate that the command affected the newly selected dog. Even fixing this bug, the expected behavior was a bit confusing, so now this popup closes itself when you switch active dogs.
Certain behaviors, like choking, were marked as non-interruptible. This stopped the player from canceling them by petting or scolding the dog while they were running that behavior, but did not stop the player from interrupting these behaviors by commanding the dog to do something else. I've fixed this issue and thus you can no longer command a dog to stop choking.