Update v4.1.1

Crypt of the NecroDancer

Crypt of the NecroDancer is an award winning hardcore roguelike rhythm game. Move to the music and deliver beatdowns to the beat! Groove to the epic Danny Baranowsky soundtrack, or select songs from your own MP3 collection!

[b]Crypt of the NecroDancer v4.1.1 is now available![/b] Happy Rhythm Fest everyone! We're celebrating with a new update, discounts on Crypt of the NecroDancer and all DLC, and the Rift of the NecroDancer demo is back if you didn't get a chance to play it last time. https://store.steampowered.com/app/3029150/Rift_of_the_NecroDancer_Demo/ Now on to the patch notes! [h2]New features[/h2] [list] [*] [b]Added[/b] Win Streak tracking to All Zones Mode [list] [*] Deathless Mode's win counter is shared with the win streak tracker [*] Deathless Mode now allows interrupting win streaks on the first floor to switch to a different mode or character [*] All Zones Mode runs now automatically submit to the corresponding Deathless Mode leaderboards upon completion [*] Each combination of character and game mode tracks its own win streak individually [*] Win streaks are preserved when quitting to the lobby on the run summary menu or the first floor after a win [*] Win streaks are lost when quitting to the lobby (after the first floor), quick restarting mid-game or losing a run [*] Menu options that are about to break a win streak now show a warning message while on a streak [/list] [*] [b]Added[/b] an option to toggle DLC playtime being counted separately on supported platforms [*] [b]Added[/b] a 1 in 1024 chance for Dice Traps to spawn a rare enemy [*] [b]Added[/b] controller rumble options to the "Reassign controls" menu [*] [b]Added[/b] HUD indicators for diagonal movement button bindings to the lobby while playing Diamond, Klarinetta or Miku [list] [*] This can be disabled in the options [/list] [*] [b]Added[/b] visual spark effect for ground wires in Zone 5 [*] [b]Added[/b] a "Restore Unlock Progress" menu under "Manage save data" [list] [*] This makes specific game content (characters, zones, items, NPCs) quickly accessible if they've previously been unlocked on another platform [/list] [*] [b]Added[/b] an option to enable floating selection boxes in the editor when copying and pasting [/list] [h2]Balance changes[/h2] [list] [*] [b]Changed[/b] Miku to no longer take damage when pressing too many buttons in a single beat [list] [*] Standing still by [i]not[/i] pressing any buttons for a beat will still inflict damage as before [/list] [*] [b]Changed[/b] Zone 4 walls to be breakable without a shovel if the AMPLIFIED DLC is disabled [list] [*] This helps Miku traverse Zone 4 more easily, as she cannot pick up shovels [/list] [*] [b]Changed[/b] Pawnbroker to present a unique scroll as a special offer to Miku [*] [b]Changed[/b] enemies disintegrated via teleportation to drop gold, increase multiplier and reduce cooldowns [list] [*] This most commonly occurs when dashing into an enemy against an unbreakable wall as Miku [/list] [*] [b]Changed[/b] Shrine of the Feast to no longer appear for Aria and Coda [*] [b]Changed[/b] Shield of Shove to push frozen and sunken enemies [*] [b]Changed[/b] Chaunter to possess Skeleton Knights directly with piercing attacks [*] [b]Changed[/b] Granite Golems to move more slowly in Randomizer Mode [*] [b]Changed[/b] Pixies to heal the player when pushed into them (via Bounce Trap or Shovemonster) [*] [b]Changed[/b] Red Chests on boss floors to no longer contain Backpack, Holster or Cursed Potion [/list] [h2]Modding features[/h2] [list] [*] [b]Added[/b] support for passing 4x4 matrices to [i][noparse]VertexBuffer.setTransform()[/noparse][/i] and [i][noparse]GFX.setGlobalTransform()[/noparse][/i] [*] [b]Added[/b] functions [i][noparse]VertexBuffer.read()[/noparse][/i]/[i][noparse].write()[/noparse][/i] to manipulate raw vertex attributes [*] [b]Added[/b] function [i][noparse]VertexBuffer.getQuadCount()[/noparse][/i] to check how many triangle pairs have been drawn [*] [b]Added[/b] function [i][noparse]VertexBuffer.hook()[/noparse][/i] to intercept calls to [i][noparse]VertexBuffer.draw()[/noparse][/i]/[i][noparse].drawText()[/noparse][/i]/[i][noparse].drawQuad()[/noparse][/i] [*] [b]Added[/b] function [i][noparse]VertexBuffer.isHooked()[/noparse][/i] to check if a vertex buffer has been hooked for the current frame [*] [b]Added[/b] function [i][noparse]placementUtils.isImpassable()[/noparse][/i] to check if a tile contains an obstacle or stationary enemy [*] [b]Added[/b] function [i][noparse]placementUtils.isBlocking()[/noparse][/i] to check if a tile is the only way to pass between adjacent tiles [*] [b]Added[/b] component [i][noparse]itemGlobalBan[/noparse][/i] to automatically ban an item for all characters [*] [b]Added[/b] component [i][noparse]inventoryUnbannedItems[/noparse][/i] to lift bans for items with specific components [*] [b]Added[/b] component [i][noparse]tilePassabilityInhibitor[/noparse][/i] to mark an entity as an impassable obstacle [*] [b]Added[/b] component [i][noparse]Sync_itemShrinkingFlashEffect[/noparse][/i] to highlight items in the HUD regardless of stackability [*] [b]Added[/b] component [i][noparse]enemyPoolRare[/noparse][/i] to mark enemies as rare [*] [b]Added[/b] parameter [i][noparse]ev.weapon[/noparse][/i] to [i][noparse]event.objectCheckAttack[/noparse][/i], allowing attacks to be restricted to a single weapon [*] [b]Added[/b] field [i][noparse]shape[/noparse][/i] to return value of [i][noparse]PlacementUtils.getRoomAt()[/noparse][/i] and related functions [*] [b]Added[/b] field [i][noparse]targetFlags[/noparse][/i] to component [i][noparse]Coldsteel_itemTunnelAttack[/noparse][/i] [*] [b]Added[/b] field [i][noparse]disableSwipe[/noparse][/i] to component [i][noparse]attackOnPartialMove[/noparse][/i] [*] [b]Added[/b] attribute [i][noparse]hardModeMinibosses[/noparse][/i] to enum [i][noparse]LevelSequence.Zone[/noparse][/i] [*] [b]Added[/b] attribute [i][noparse]hardModeMinibossPosition[/noparse][/i] to enum [i][noparse]Boss.Type[/noparse][/i] [*] [b]Added[/b] data field [i][noparse]randomizer[/noparse][/i] to [i][noparse]CustomEntities.extend[/noparse][/i] when using the [i][noparse]enemy[/noparse][/i] template [*] [b]Changed[/b] invalid component accesses on entities to no longer raise an error for packaged mods [*] [b]Changed[/b] Pawnbroker to present a Potion as a special offer if all other items are banned, instead of no item [*] [b]Added[/b] a custom rule to enable an additional shop-restocking effect for Ring of Charisma (SYNCHRONY DLC) [list] [*] This is currently disabled by default, but might become a permanent change in a future update based on feedback [/list] [/list] [h2]Bugfixes[/h2] [h3]Gameplay bugfixes[/h3] [list] [*] [b]Fixed[/b] Gorgon Statues not appearing on the next level after falling through a trapdoor [*] [b]Fixed[/b] Familiars failing to affect enemies larger than one tile [*] [b]Fixed[/b] Miku being able to build up unlimited "SING" ability charges on boss floors [*] [b]Fixed[/b] Miku incorrectly double-hitting enemies when performing an electric attack [*] [b]Fixed[/b] Deep Blues being able to instantly attack the player when hit by an electric attack [*] [b]Fixed[/b] Wisps materializing too close to players if a Monocle, Circlet of Telepathy or Glass Torch is picked up [*] [b]Fixed[/b] Dragons and Nightmares being able to stomp other enemies posthumously [*] [b]Fixed[/b] shrines placing their items at unreasonably long distances if the tiles below the shrine are occupied [*] [b]Fixed[/b] Shrine of Sacrifice placing items on top of gold if the enemy is killed underneath the shrine [*] [b]Fixed[/b] Dove getting stuck on boss floors in Ensemble Mode when using a bomb to teleport the miniboss [*] [b]Fixed[/b] Deep Blues breaking the rules of chess while castling in rare cases [*] [b]Fixed[/b] Chaunter not dropping the Golden Lute on death [*] [b]Fixed[/b] Cadence's penultimate boss passing through incorporeal Ghosts during phase 2 [*] [b]Fixed[/b] Berserk Spell ending if one of Reaper's soul familiars bumps into an enemy [*] [b]Fixed[/b] Nocturna not dropping the Golden Lute when dying while in Bat Form [*] [b]Fixed[/b] monsters charmed by Miku's "SING" ability not dropping their items upon healing Miku [*] [b]Fixed[/b] Miku's "SING" ability instantly vaporizing Mimics and their loot [*] [b]Fixed[/b] Red and Blue Dragons moving too quickly if knocked back after exhaling [*] [b]Fixed[/b] some levels being impassable for Monk/Coda without items if the SYNCHRONY DLC is disabled [*] [b]Fixed[/b] Dancepad mode causing zones to generate in an incorrect order when playing Aria [*] [b]Fixed[/b] Mannequins not accounting for cursed hearts [*] [b]Fixed[/b] Miku getting stuck behind locked chests/cages [*] [b]Fixed[/b] "I love gooooooold!" achievement not being unlocked when playing as Nocturna [/list] [h3]Level generation bugfixes[/h3] [list] [*] [b]Fixed[/b] Zone 3 generating differently for the same seed depending on whether the Shopkeeper is alive [*] [b]Fixed[/b] Wind Gargoyles sometimes obstructing shop entrances [*] [b]Fixed[/b] Thief and Cracked Floors sometimes appearing in secret rooms [*] [b]Fixed[/b] Bounce Traps sometimes pointing into walls [*] [b]Fixed[/b] Sarcophagi causing some layouts to be impassable for Monk/Coda [*] [b]Fixed[/b] Shop Wall Mimics rarely being placed at incorrect locations [*] [b]Fixed[/b] cracked walls rarely obstructing the path through the level for Monk and Coda [*] [b]Fixed[/b] inconsistent training staircase position for hot and cold Zone 3 monsters [/list] [h3]Audio bugfixes[/h3] [list] [*] [b]Fixed[/b] Miku's voice lines becoming nearly inaudible while shrunk [*] [b]Fixed[/b] Banshee's deafening effect ceasing if an enemy damages the Banshee [*] [b]Fixed[/b] Banshee's and Monstrous Shopkeeper's screams not stopping when transformed into another enemy [/list] [h3]Visual bugfixes[/h3] [list] [*] [b]Fixed[/b] Miku's attack preview displaying inaccurately near enemies larger than one tile [*] [b]Fixed[/b] run summary screen displaying an incorrect seed in All Characters Mode and Story Mode [*] [b]Fixed[/b] Map, Monocle, and other vision items continuing to take effect after entering or leaving spectator mode [*] [b]Fixed[/b] missing outline pixels on Obsidian Shield's equipment sprite [*] [b]Fixed[/b] chat messages with line break characters obscuring the screen [*] [b]Fixed[/b] Miku's armors not being obscured in Mystery mode [*] [b]Fixed[/b] missing outline pixel in Miku's virtual armor [*] [b]Fixed[/b] Gorgons not flashing upon turning into statues [*] [b]Fixed[/b] Klarinetta's eyes glowing in the wrong color while electrified [*] [b]Fixed[/b] Miku's attack causing enemies larger than one tile to bounce incorrectly [*] [b]Fixed[/b] Mary visually appearing beneath her sheep in Phasing Mode while in the lobby [*] [b]Fixed[/b] Mannequins' health bars not always being visible [*] [b]Fixed[/b] animations briefly playing incorrectly after loading a save [/list] [h3]Level editor bugfixes[/h3] [list] [*] [b]Fixed[/b] Slimes and other stationary enemies being removed from custom dungeons when playing Monk or Coda [*] [b]Fixed[/b] hidden playable characters still being listed in the level editor's side panel [/list] [h3]Performance bugfixes[/h3] [list] [*] [b]Fixed[/b] performance issues when playing very long Deathless Mode runs [*] [b]Fixed[/b] performance issues after creating large numbers of text flyaways or attack swipes within a single level [*] [b]Fixed[/b] performance issues if multiple different players activate Berserk Spell [*] [b]Fixed[/b] post-game replay rarely causing errors while showing the perspective of the enemy that dealt the final blow [/list] [h3]Engine bugfixes[/h3] [list] [*] [b]Fixed[/b] SYNCHRONY DLC requiring a separate Steam launch option on macOS [*] [b]Fixed[/b] crash when playing the SYNCHRONY DLC on Windows 7 [*] [b]Fixed[/b] freeze on Windows if the computer has not been shut down for a few days [*] [b]Fixed[/b] freeze when changing the system clock on Linux while the game is running [/list] [h3]Modding bugfixes[/h3] [list] [*] [b]Fixed[/b] Klarinetta incorrectly causing modded weapons to perform attacks after moving [*] [b]Fixed[/b] item bans sometimes being incorrectly auto-assigned to modded spells [*] [b]Fixed[/b] Leprechauns not gaining extra health when playing as a modded character extending Eli's template [*] [b]Fixed[/b] stairs and trapdoor penalty boxes unlocking when a miniboss is transmuted into another miniboss [*] [b]Fixed[/b] error when an enemy with AI type [i][noparse]PATTERN[/noparse][/i] does not have the [i][noparse]aiPattern[/noparse][/i] component [*] [b]Fixed[/b] errors if an entity has the [i][noparse]sprite[/noparse][/i] component, but not the [i][noparse]spriteExtrapolatable[/noparse][/i] component [*] [b]Fixed[/b] error when calling [i][noparse]audio.getPosition()[/noparse][/i] in multi-instance mode [*] [b]Fixed[/b] error when a modded character without the [i][noparse]health[/noparse][/i] component activates Shrine of Blood [*] [b]Fixed[/b] flickering visuals when using [i][noparse]VertexBuffer.drawQuad()[/noparse][/i] [*] [b]Fixed[/b] beat bars cutting out on Cadence's final boss when using custom music [*] [b]Fixed[/b] Weekly Challenge leaderboards not handling custom rule changes correctly [*] [b]Fixed[/b] [i][noparse]Sync_excludeFromDiceTrap[/noparse][/i] not having an effect on minibosses [*] [b]Fixed[/b] Shrine of Blood appearing for modded health-locked characters [*] [b]Fixed[/b] error when banning a component that doesn't exist [*] [b]Fixed[/b] custom dungeon secret shops generating two overlapping entrance runes [/list]