BYOND 5.0 Version 513 Release Notes
Build 513.1542
Fixes (More Info)
Dream Daemon
- Multiple bugs existed when specifying start and end positions in findtext() and replacetext(), especially with regular expressions. (GinjaNinja32)
Dream Maker
- Icons were still editable in read-only mode. (Nadrew)
Build 513.1541
Fixes (More Info)
Dream Seeker
- Regression: Maptext wrapping was broken, causing the last line to appear incorrectly. (Vallat)
- An atom that was animating a color matrix could sometimes have incorrect interpolation between colors when other parts of its appearance (like dir) changed after the call to animate(). (Pali6)
Build 513.1540
Fixes (More Info)
Dream Daemon
- json_decode() wasn't handling Unicode characters properly. (Quardbreak)
- replacetext() produced incorrect results when the needle string was blank. Correct behavior is to match in between characters of the haystack string. (NSBR)
- Values in a client.verbs list could not be read by their index. (Vallat)
- Calling replacetext() with a starting position greater than the length of the text could cause a crash. (NSBR)
- vis_flags, render_source, and render_target did not work with initial(). (TemporalOroboros)
- Looping through a list with the "as anything" clause didn't work as expected, nor did things like "as color" work as "as text".
Note: Some games used "as color" or "as command_text" as a workaround to the fact that "as anything" was handled incorrectly, but since those too have changed, anyone relying on the old buggy behavior of the as clause should update their code. (Zewaka)
Dream Maker
- In some cases, use of the null-conditional ?. operator could cause the wrong object to be accessed in a subsequent var read/write or proc call. (Zewaka)
- Clearing an icon's width or height value and clicking out of the edit field resulted in error messages that would not go away without force-closing the editor. (KuroChi)
Dream Seeker
- Long unbroken words sometimes did not wrap correctly in maptext. (NSBR)
- The method used to determine exact pixel position of the mouse over a map control was incorrect, causing inaccuracies at high zoom levels. (Flick)
- MeasureText() got incorrect measurements in some cases where a space between wrapped lines of text was counted toward the width, even if it exceeded the available width. (Hinashou)
Features (More Info)
Dream Daemon
- The appearance var is now treated as a /tmp, as it should be.
- replacetext() can now allow negative index values for the start position.
Build 513.1539
Fixes (More Info)
Dream Maker
- The ?. and ?: operators were compiled incorrectly when used in left-hand-side expressions, which resulted in weird errors at runtime. (Pali6)
- Escaped line breaks in #define macro arguments were handled incorrectly. (Adhara in space)
- #define macros that used strings with embedded expressions were parsed incorrectly when the substitution was made. (Cerid)
Dream Seeker
- Maptext underlines appeared in the wrong position when the map drawing area was bigger than the control itself, e.g. when the letterbox parameter was false. (F0lak)
Build 513.1538
Fixes (More Info)
Dream Maker
- A fix for the ?. operator caused problems when it was used in certain expressions. (Zewaka)
Build 513.1537
Fixes (More Info)
Dream Daemon
- flist() failed in Windows on directories with trans-ASCII characters in their names. (Felix Rose)
- When reading the length of client.verbs directly, a value of 0 was returned. (PowerfulBacon)
Dream Maker
- Including a raw string (any format starting with @) in a block of code skipped by a preprocessor directive would cause compilation to proceed incorrectly. (Lummox JR)
- The compiler allowed vis_locs and vis_flags to be defined under /image; these vars are only relevant to turfs and movable atoms. (Andrew Fall)
- The ?. operator on the left-hand side of an assignment operator worked incorrectly in certain cases when adding/assigning some constant values such as negative numbers. (Willox)
Dream Seeker
- Applying a color to an atom with maptext did not necessarily apply the color to the maptext also, if the color was opaque. (RootAbyss)
- A second animate() call with the parallel animation flag could sometimes temporarily show out-of-sync results, such as the new animation appearing to be at its endpoint for a single frame before running the rest of the animation normally. (Nadrew)
- Turfs in visual contents of objects did not properly mark when they were no longer in use (on the client) as a result of the obj or mob being deleted. (Andrew Fall)
Build 513.1536
Fixes (More Info)
Dream Seeker
- VIS_UNDERLAY could sometimes propagate further than intended. (Ter13)
- Another aspect of the link() fix was apparently incompatible with multiple websites. (Kyet)
Build 513.1535
Fixes (More Info)
Dream Maker
- Raw strings did not get parsed correctly when included in macro arguments. (SpaceManiac)
Dream Seeker
- The fix for launching links in the default browser had a bug for certain links. (Thepotato97)
Build 513.1534
Fixes (More Info)
Dream Daemon
- json_decode() could crash for some inputs. (Monster860)
Dream Seeker
- Microsoft made a stupid, stupid change to command line parsing that impacted link() and caused incorrect results on many systems where the default browser was Chromium-based. The behavior of link() has been adjusted to account for this stupid, stupid change. (Nadrew)
- The & character could cause problems in alert() boxes and some input() boxes due to the way Windows uses it as an escape in displayed text. For worlds compiled in 513 or newer, this will now be escaped properly. (Inuyashaisbest)
Features (More Info)
Dream Daemon
- The server now caches function lookups from external .dll/.so calls and should process them faster.
Build 513.1533
Fixes (More Info)
Dream Daemon
- Images in the visual contents of their container could cause a recursion that crashed the server. (FKI)
- The string tree was subject to occasional corruption in Linux in rare cases. (MrStonedOne)
Dream Seeker
- Looping animations could sometimes get confused if the server re-sent them as a result of an update on the object they belonged to. (PopLava)
Build 513.1532
Fixes (More Info)
Dream Maker
- A bug in an experimental compiler change managed to elude testing. (Tigercat2000)
Build 513.1531
Fixes (More Info)
Dream Daemon
- Certain rare types of savefiles did not load correctly. (Crazah)
Dream Seeker
- Maptext wrapping was broken in a number of cases. (Vallat)
- Setting map.icon-size no longer worked. (BurgerBB)
Build 513.1530
Fixes (More Info)
Dream Seeker
- Changes to maptext handling caused a regression where certain maptext could crash the client. (Nadrew)
Build 513.1529
Fixes (More Info)
Dream Daemon
- view() and similar procs could include turfs and possibly their contents multiple times when the perspective object (e.g. a player mob) straddled multiple turfs. (Coul)
Dream Maker
- The skin editor incorrectly left the is-transparent checkbox available for button controls. (NSBR)
- Changing a map control's zoom level in the skin editor to or from 0 didn't toggle the checkbox for the letterbox option to appear until the edit field for map.zoom lost focus. (NSBR)
Dream Seeker
- Map zoom was being set incorrectly on world startup. (Ter13)
- Side-view and isometric map modes did not respect order-of-appearance when two different objects had the exact same physical bounds, plane, and layer. (Ter13)
- Mouse movement didn't register after releasing a drag if you had pressed and held a different mouse button in the meantime. (Magicsofa)
Features (More Info)
Dream Daemon
- Savefile errors will now be a bit more detailed.
Build 513.1528
Fixes (More Info)
Dream Daemon
- Failing to open a file sent by browse_rsc(), etc. printed a "File not found" error message that could be incorrect or misleading. Additionally, file errors occurring during savefile usage did not print correctly either. (Slurm)
Dream Maker
- Commands in the skin editor, such as for buttons, got doubly escaped and un-escaped which caused some of them to get mangled. (Ter13)
- Multiline editing fields in the skin editor, such as output.style, did not have scrollbars, which made editing more difficult. (PopLava)
Dream Seeker
- The map.view-size parameter was poorly documented and the values it produced were too complex to be usable. The parameter has been updated to behave more consistently and is now documented better. (Ter13)
- Input controls couldn't be created with text already in the control. (Ter13)
- Maptext wrapping sometimes was incorrect with Unicode characters, and could mangle them in some cases. (Mloc)
- Maptext considered a change of styles to be a potential break point for wrapping text, which was incorrect. (Kaiochao)
Features (More Info)
Dream Seeker
- New keyboard macros are now recognized for media-capable keyboards: VolumeMute, VolumeUp, VolumeDown, MediaPlayPause, MediaStop, MediaNext, MediaPrev.
Build 513.1527
Fixes (More Info)
Dream Daemon
- Several internal lists couldn't be located based on their ref() values. (Kevinz000)
- Error messages from external DLL calls were cut off after the first character in Windows. (SpaceManiac)
Dream Maker
- The error message regarding exceeding the maximum number of internal arrays, thought fixed in the previous version, had a different cause that still remained undetected. This has been fixed. (Kmc2000)
- In a very old bug, the compiler handled the continue statement wrong when used with a labeled outer loop. (Anturke)
- Addition of two constant strings at compile-time was broken. (BurgerBB)
Dream Seeker
- Improperly formatted DM-CSS could cause a hang in some cases. (Devourer Of Souls)
Features (More Info)
Dream Maker
- Long lines text in the compiler's output will no longer wrap, but use a horizontal scrollbar instead.
Build 513.1526
Fixes (More Info)
BYONDexe
- Login form CSS was broken. (Nadrew)
Dream Daemon
- There were multiple situations where Uncross() wasn't called during Move(). (Nadrew)
- Visual contents seen by clients could cause a memory leak on the server. (MrStonedOne)
- Regular expressions struggled with some UTF-8 cases. (Exxion)
- initial() for any of the bound vars on an object returned the same value as initial(bounds) instead of the correct var. (Kaiochao)
- The client.bound vars were limited to a -32K to 32K range, which was inappropriate for large maps and icons. (Kaiochao)
Dream Maker
- In some complex projects, a weird error message could appear about exceeding the old 64K limit maximum number of internal arrays, even though that limit has been long gone and the projects in question were already over the limit. (MrStonedOne)
- Adding constant numbers and strings at compile-time did not compile correctly, resulting in weird outcomes at runtime. (Mloc)
- Using a small transparency checker size along with an extremely high zoom level, which for instance could happen in a 1x1 icon, could cause a crash due to way too many of the checkers being mistakenly drawn. (Kozuma3)
- Icons with huge numbers of states didn't display correctly in the icon editor, which failed to display later states entirely and also had problems with the scrollbar. (Zewaka)
Dream Seeker
- The first stage of topological sorting in isometric mode didn't handle topdown icons such as HUDs properly. (Crazah)
- Using too many ripple filters could cause a crash in some cases. (Nadrew)
- Right-click verb menus accidentally went back to being slow in some situations. (Pali6)
Features (More Info)
Dream Daemon
- Setting certain built-in lists like overlays, underlays, filters, verbs, etc. by assigning a list to them would clear them out and add an item at a time, which was often inefficient and resulted in appearance churn. This has been optimized internally to avoid churn, improving performance.
Dream Maker
- Several true/false condition checks used in situations like for, while, etc. have been updated in the compiler to improve performance.
Build 513.1525
Fixes (More Info)
Dream Daemon
- Another cause of map "repops" misbehaving on maps with many such objects was discovered and corrected. (Myryan)
- initial() didn't work correctly with bound_x/y/width/height vars or the combined bounds var. This also resulted in bounds appearing in savefiles when they hadn't actually changed. (Kaiochao)
Dream Maker
- In the icon editor in tiled mode, selecting an area that extends below the main icon and then copying could introduce bogus pixels into the copy, or even potentially crash the editor. (Kozuma3)
Dream Seeker
- Underlines and strikethroughs in maptext did not carry over to subsequent lines after wrapping. (Kozuma3)
- Certain complex rendering situations could result in crashing the client. (Mybluecorners)
- Activating a verb via right-clicking on the map could activate the verb for the wrong object, if multiple objects shared the same name. (Lummox JR)
- When client.color was not white and was not a matrix, it was applied only to the first icon instead of all icons. (NSBR)
- FLOAT_LAYER behavior has been changed to make it more predictable. This is not expected to impact any projects that use it for overlays, but will make vis_contents behave better. (PopLava)
Features (More Info)
DM Language
- A new appearance_flag value, PASS_MOUSE, has been added to support better use of render_source. Normally an object with render_source set is just a visual copy of the source object, but setting PASS_MOUSE on this icon will cause any mouse interaction to be passed through to the source object instead.
Build 513.1524
Fixes (More Info)
Dream Seeker
- Another nasty infinite loop was found in the topological sort code for SIDE_MAP and ISOMETRIC_MAP thanks to a typo. (NSBR)
- Changes to client.color handling resulted in a crash when a normal client.color interacted with an atom's color matrix. (NSBR)
- Line breaks in statpanels caused text to be measured incorrectly, resulting in text wrapping at a different point than it should have. (Monster860)
Build 513.1523
Fixes (More Info)
Dream Maker
- The mouse position was read incorrectly when using tiled mode in the icon editor and zoomed in. With or without zoom, the color displayed under the mouse cursor was also wrong in tiled mode. (Kozuma3)
- Deleting colors from an icon's global palette did not work properly. (Kozuma3)
- The tab key in the icon editor's width and height fields didn't work correctly after changing the width or height. (PopLava)
Dream Seeker
- Text measurement for grid and info controls was incorrect when text included a tab character. (Ter13)
- Accessing parent.parameter in an embedded expression in a skin command, e.g. [[parent.size]], failed. (Ter13)
- The on-tab command for an info control did not fire in certain situations. (Monster860)
Features (More Info)
Dream Maker
- In the icon editor, you can now change the density of the checkered background for transparent pixels by going to the Colors | Checkers menu. The default is "small", but there is also "medium" (2x2 per pixel), "large" (1 per pixel), and the old-style "huge" (one checker per 8 pixels).
Dream Seeker
- Gliding is now tied to actual elapsed time instead of ticks, for smoother movement closer to what animate() produces.
Build 513.1522
Fixes (More Info)
Dream Seeker
- The right-click menu fix caused a regression where some verbs were intermittently unavailable. (Monster860)
Build 513.1521
Fixes (More Info)
Dream Seeker
- SIDE_MAP and ISOMETRIC_MAP formats could hang in some cases from the new topological sort, in rare cases of graph cycles. The underlying issue has been corrected. (NSBR)
- A KEEP_APART icon (including icons that implied it by being on a different plane) inside of a KEEP_TOGETHER parent could sometimes confuse the client's sense of visual bounds, acting as part of the parent group. (Nadrew)
- When screen objects had one animation interrupt another, the temporary "transition" appearance for the new animation's starting point was calculated incorrectly. (NSBR)
- The way that objects were checked for available verbs when right-clicking the map was inefficient, resulting in long delays for context menus to appear in some cases, and even longer delays if client verbs were made known to the client and then removed. The parser has been upgraded to handle this situation better, drastically cutting down the delay. (Zewaka)
Features (More Info)
Dream Maker
- Multiple improvements have been made to the palette editing functionality in Dream Maker's icon editor. Colors can be moved or deleted via dragging, and a new menu allows easier access to import/export/preset functionality as well as sorting.
Build 513.1520
Fixes (More Info)
Dream Seeker
- Pixel offset animations weren't working for some objects on the map, due to a combination of animation caching and the new rules. (Kmc2000)
- Stopping animations didn't work correctly, and certain parallel animations such as mixing transforms and pixels caused weird results. (Nadrew)
Build 513.1519
Fixes (More Info)
Dream Seeker
- MeasureText() returned incorrect values for maptext beginning with an HTML entity such as >. (Bobbahbrown)
- The animation overhaul had a few glitches that slipped past testing. (NSBR)
- Crashes were possible in some rare situations involving KEEP_TOGETHER. (PopLava)
Build 513.1518
Fixes (More Info)
BYONDexe
- Standalone builds could crash on login in some cases. (Nadrew)
Dream Daemon
- It was possible to modify datums' const vars by using the vars list. (Dunc)
- splittext() with a regular expression did not handle regex capturing groups correctly, and instead captured the whole regular expression match instead of just the group. (Pali6)
Dream Maker
- The bar element's is-slider configuration option didn't have a checkbox. (NSBR)
- Some skin editor options didn't "stick" after being changed. (Legacy of Caine)
- Some panes kept growing larger every time they were opened in the editor. (Legobumb)
- Pressing one of the color buttons in the skin editor, such as to change the background color of a skin element for example, did not open the color editor dialog with the current color value. (Lummox JR)
- Grid lines didn't appear correctly in the icon editor. (Lummox JR)
Dream Seeker
- Mouse hit tests with alpha masks applied the filter.y value incorrectly, resulting in an incorrect hit/miss. (Vallat)
- Transforms in parallel animations could produce incorrect results. (Repo82)
- Animation of pixel offsets, especially in the case of parallel animations, was broken in some cases. (Nadrew)
Dream Seeker & Dream Maker
- The allow-html parameter in the info control wasn't actually used. This also meant it couldn't be turned on or off in the editor. (Legobumb)
Features (More Info)
Dream Maker
- The color selection dialog has had a facelift.
Dream Seeker
- True topological sorting has been experimentally added to SIDE_MAP and ISOMETRIC_MAP formats, in order to resolve certain conflicts that couldn't be handled any other way.
Build 513.1517
Fixes (More Info)
DM Language
- splittext() given an empty string or empty regex as the delimiter caused incorrect results in both cases, although in different ways. (Kozuma3)
Dream Maker
- Compilation on Linux was broken. (Arokha)
Dream Seeker
- There were still cases of broken parsing for -dm-text-outline. (Pali6)
- Regression: Maptext could cause crashes in some cases. (Kozuma3)
Build 513.1516
Fixes (More Info)
Dream Seeker
- Color parsing for -dm-text-outline was incorrect, handling only word colors like "red". (NSBR)
- Strikeout and underline styles for maptext did not work in hardware rendering mode.
Note: With default styles, this fix will impact the appearance of maptext links. (Nadrew)
Build 513.1515
Fixes (More Info)
Dream Daemon
- Regression: new() failed with modified types. (Killareg)
Dream Maker
- The removal of "stay on top" behavior for the skin editor dialog caused some problems, so it has been restored. (PopLava)
- Unicode characters in the project path could interfere with compilation in some cases. (Heroman3003)
Dream Seeker
- -dm-text-outline and text-shadow parsing were broken. (NSBR)
- Custom fonts sometimes didn't appear in output or other skin controls. (Selected)
Build 513.1514
Fixes (More Info)
Dream Daemon
- Compiler optimizations were causing pick(list) to fail with an incorrect "index out of bounds" error in some cases. (Luber)
- In games with a large number of objects on the compiled map, New() was not called for one of the objects. (Myryan)
Dream Maker
- The Ctrl+A shortcut didn't select all text in the focused text input when in the Find/Replace or Goto Line dialogs. (NSBR)
Dream Seeker
- Objects in visual contents using the VIS_INHERIT_ICON or VIS_INHERIT_ICON_STATE flags didn't inherit icons/states changed by flick() in the parent icon. (Killareg)
- From the depths of time: Finally, pressing the escape key in an input() box that allows "null|anything" will cancel the input instead of forcing you to press Cancel. (Shadowtail117)
- Ampersands in object and verb names appeared incorrectly in right-click context menus. (SpaceManiac)
Features (More Info)
DM Language
- text2num() and num2text() can now take a radix argument to specify conversion with a base other than 10. E.g., text2num("ab",16) is 171.
- The -dm-text-outline style parameter now has the form "width color style", where the optional style can be a combination of the "sharp" and "square" keywords, corresponding to the new outline filter flags.
Dream Maker
- Color hex codes now appear in the icon editor.
- The skin editor has been overhauled internally to make it easier to keep up to date, and as a result several parameters have now been exposed to the editor that weren't before.
Build 513.1513
Fixes (More Info)
Dream Daemon
- Regression: the locs list for movables was incorrect. (Arokha)
Dream Maker
- The compiler crashed on some large projects. (Monster860)
Dream Seeker
- Including an embedded image in maptext within an outlined section caused confusion in the output, potentially outlining some images (which wasn't supported at the time) and failing to outline subsequent text correctly. (NSBR)
- The HTML parser did not handle a trailing / in a non-closing tag correctly, outputting an extra > character. (NSBR)
Features (More Info)
Other
- Images embedded in maptext can now use -dm-text-outline and text-shadow styles as well.
Build 513.1512
Fixes (More Info)
All
- Opening files failed for some files in paths containing non-Latin characters. (Heroman3003)
Dream Daemon
- Zero-width regular expression matches at the end of a string could cause splittext() to crash. (Arokha)
- When a movable object was inside another movable, its locs list included the turf they were all ultimately standing on instead of just the container, which was somewhat useless and also conflicted with the behavior described in the reference. (Ninjanomnom)
Dream Maker
- The Find/Replace dialog could lose focus when a new code file was opened. (Spevacus)
Dream Seeker
- Items in visual contents with a mouse_opacity of 0 could still interact with the mouse if they were layered beneath their parent icon. (Mport2004)
- Using an alpha mask with a render source could cause the wrong icon to be detected under the mouse cursor. (Repo82)
- The grace period before an icon's movement animation stops playing and the icon is considered non-moving again has been increased slightly, to prevent visual stutter in some higher-FPS games. (NSBR)
- The DM-CSS parser handled text-shadow incorrectly in some common cases. (Crazah)
- The icon-y mouse parameter reported incorrect values in some instances related to the use of KEEP_TOGETHER. (Ter13)
- A child of KEEP_TOGETHER with a masking blend_mode would fail to properly set its bounds to include its own KEEP_TOGETHER children that did not use masking blend modes, resulting in visual clipping and mouse hit issues. (Ter13)
Features (More Info)
DM Language
- The outline filter now has two flags that can fine-tune its behavior. OUTLINE_SHARP will not use antialiasing, and OUTLINE_SQUARE will extend the outline from corners without rounding them off.
Dream Maker
- Several parts of the compiler have been further optimized to reduce compile times, especially cases where a "chained" dot operator following some expressions was forced to act like a colon operator. When the left hand of the chained dot or ?. is an assignment operation, or one of several built-in procs whose return type is known, the type can now be inferred by the compiler. This avoids the costly downward lookup used by the colon operator.
Build 513.1511
Fixes (More Info)
Dream Seeker
- Overlays not using KEEP_TOGETHER, for an object that was itself in a KEEP_TOGETHER group, could produce invalid mouse hit information such as the wrong icon-x/y parameters. (Ter13)
Dream Seeker & Dream Maker
- Another maptext wrapping bug could cause a hang, which was most noticeable in Dream Maker's icon editor. (CRITAWAKETS)
Features (More Info)
DM Language
- The input control now has on-focus and on-blur parameters. These may be extended to other controls in the future.
Dream Seeker
- "parent" is now recognized as a valid property for menus and windows in winget().
Build 513.1510
Fixes (More Info)
Dream Seeker
- Regression: Right-click menus incorrectly missed a lot of items in the mouse hit test in certain cases, typically when a plane master was involved. (MrMagolor)
- Newer mouse handling for BLEND_MULTIPLY and BLEND_INSET_OVERLAY didn't take some cases into account properly, resulting in failed mouse hits. (Ter13)
Build 513.1509
Fixes (More Info)
Dream Daemon
- cmptext() and sorttext() were not behaving correctly, acting like they were case-sensitive. (GinjaNinja32)
Dream Maker
- Further sanity checks have been added to the map editor to prevent user interaction when the object tree is being changed. (Vallat)
Dream Seeker
- In certain cases, maptext_width set too small for a word could cause the word-break code to freeze Dream Seeker in an infinite loop. (Ter13)
- Making a large change to client pixel offsets and then undoing it on the next tick could cause some turfs' visual contents to disappear. (HindyMinte)
- Clearing the output control could cause problems with subsequent output. (NSBR)
Features (More Info)
Dream Seeker
- Mouse hits are now able to handle the alpha mask filter, and also regular blends done via BLEND_MULTIPLY or BLEND_INSET_OVERLAY. (The layering filter is still mouse-indifferent.)
Build 513.1508
Fixes (More Info)
Dream Daemon
- As a result of a previous fix, some cases of del(image) were handled incorrectly and could result in unnecessary garbage scanning as well as bogus error messages. (Lummox JR)
- Filters that supported the icon var had its value defaulting to the first file in the cache, icon or not, rather than no icon at all. (Lummox JR)
Dream Maker
- FLOAT_PLANE and offsets thereof weren't respected properly in the map editor. (Monster860)
Dream Seeker
- The layering filter handled blend modes incorrectly, which caused particular problems with BLEND_MULTIPLY and BLEND_SUBTRACT when multiple layer filters were used in a row. (Repo82)
- Multiple-stage animations could sometimes fail to act on later stages, showing the first stage only. (BurgerBB)
- The layering filter calculated the bounds of some objects incorrectly, which resulted in major problems with stacking multiple layers, especially where transforms were involved. (Monster860)
Features (More Info)
DM Language
- A new blend_mode value, BLEND_INSET_OVERLAY, allows for simple alpha masking while also making some effects possible that weren't easily manageable before. In this mode, the icon is overlaid onto the destination image but uses the destination image as an alpha mask.
Dream Daemon
- Using the "in" operator to test if something is in a list should now perform much better for most cases. Additionally, list.Find() will now perform better for turf and area contents.
Dream Seeker
- Maptext now supports mixing different text alignments (but not vertical alignments), text-align: justify, text-indent, and left and right margins.
Build 513.1507
Fixes (More Info)
Dream Daemon
- del(image) did not scan client.images, resulting in unnecessary scanning for references. (Nadrew)
- Pixel offsets of objects in vis_contents did not apply to server-side visual bounds calculations. (NSBR)
Dream Seeker
- Repeatedly animating a client object and also changing its pixel offsets could interact strangely, making pixel offsets animate from an old position. This would only happen if a second animation was triggered while the first was still active. (HindyMinte)
- In some situations, a closing </center> tag did not work properly in output. (NSBR)
- Parallel filter animations misbehaved in some cases. (Monster860)
- Animations could cause crashes in some situations. (Xkeeper)
- Objects with render targets starting with an asterisk sometimes still appeared in cases where multiple objects tried to use the same render target. (Monster860)
- Applying a transform or color matrix in the layer filter was more detrimental to performance than it needed to be, due to creating a temporary surface. This will still be done if the original surface needs to be expanded, but in all other cases it will use the existing surface. (Monster860)
Build 513.1506
Fixes (More Info)
Dream Daemon
- Using the layering filter's transform var caused subsequent filters for the same object to fail, due to an error in how the server sent the filter info. (Repo82)
- The layering filter didn't let users apply the x and y vars. (Repo82)
- Using a for-list loop with a filters list didn't work, resulting in "bad list index" errors. (Lummox JR)
Dream Maker
- The Find All option in the code editor's Find & Replace dialog resulted in some garbled text being sent to the output window. (Nadrew)
- The stop button in Dream Maker's statusbar didn't work correctly after the addition of the insert/overwrite indicator. (Zamujasa)
Dream Seeker
- Clearing an output control caused the scrollbar not to reappear until the control resized. (NSBR)
- Animated objects with filters that appeared twice on the screen due to being in vis_contents could cause unpredictable results or a crash. (Steamp0rt)
- The layering filter positioned plane-based render sources incorrectly if they also had a filter. (Repo82)
- Gamepad input was not recognized because the gamepads didn't initialize correctly. (Yut Put)
Features (More Info)
Dream Daemon
- A new proc called world.Profile() has been added that makes it possible to programmatically interact with the server's profiler.
Build 513.1505
Fixes (More Info)
Dream Daemon
- Regression: file handle recycling didn't work out as planned, but problems didn't show up in simple tests. Will revisit in a future release. (Xkeeper)
Build 513.1504
Fixes (More Info)
Dream Maker
- Attempting to access a var that is ordinarily a built-in object proc, such as Copy, resulted in broken compiled code that could crash the server. (Popisfizzy)
- Deleting the first several columns (animation frame) of an icon, shifting other columns to the left, caused a crash in some cases. Also, deleting multiple columns from the end could delete an extra column. (Somepotato)
- The delete key wasn't usable in the width and height boxes of the icon editor. (Spevacus)
Dream Seeker
- The layer filter didn't work correctly when given a render_source. (Keelin)
Features (More Info)
Dream Daemon
- Calls to text2file() and outputting to a file() value now leave the file open a short while, although they still flush after every write. This should avoid the overhead of having to open and close the same file frequently in high-output situations. The auto-flushing may be reconsidered at a later date.
Dream Maker
- Code tabs now have an indicator in the statusbar to say if you're currently in insert or overwrite mode.
Build 513.1503
Fixes (More Info)
BYOND Pager
- The "show more" arrow for bookmarks and recent games didn't display properly. (Zamujasa)
Dream Daemon
- Setting world.log to a subdirectory that didn't exist wouldn't create that directory. (GinjaNinja32)
Dream Maker
- When right-clicking on the map in the map editor, the name of an object with non-English characters did not appear correctly. (7XX)
- Document-style strings {"..."} were parsed incorrectly when used as arguments to a #define macro. (Inuyashaisbest)
Dream Seeker
- Plane masters with a render_target only applied color or transforms to the render target if they also had a filter. (Vallat)
Features (More Info)
Dream Maker
- The topics and contents panes of the Dream Maker reference window can now be filtered via a new Filter menu.
Additionally, the HTML version of the reference also has a filter, and has a new search feature.
- MP3 files can now be used for sound. For existing projects this requires a re-compile since the compiler determines the file type stored in the .rsc file.
Dream Seeker
- Wingets can now be embedded into skin commands like map.on-show, button.command, etc., by using [[id.parameter]]. This is similar to the [[*]] syntax supported for some other specialty commands. If the embedded winget is surrounded on both sides by double-quote characters, the text will be escaped (newlines turned to \n, etc.); otherwise, it will be left alone.
Build 513.1502
Fixes (More Info)
ByondEXE
- The byondexe tool had multiple failures in BYOND 513 due to the Unicode upgrade. (Raffile)
Dream Daemon
- sorttext() behaved incorrectly when comparing non-English text such as Cyrillic. Correct behavior is to consider the relative order of the Unicode code point for the uppercase version (if any) of a letter. (TXTi)
- replacetext() did not work correctly when replacing a blank string, sometimes resulting in crashes. (GinjaNinja32)
Dream Maker
- Case-insensitive searching didn't work in the code editor for non-English characters like Cyrillic. (TXTi)
- In the map editor, selecting an object with a non-.dmi icon caused a crash. (RootAbyss)
- md5() and sha1() compiled incorrectly when given constant arguments. (GinjaNinja32)
- Undoing an icon edit that was done on a different frame than the one currently selected could sometimes result in the undo icon being loaded into the wrong frame. (Repo82)
- The selection tool in the icon editor didn't work correctly when setting a selection rectangle in tile mode, if the mouse wasn't within the "main" tile. (Repo82)
Dream Seeker
- Multiple links in the same maptext didn't work. Only the last link was usable. (Lummox JR)
- Special BYOND links like byond://winset?... didn't work in maptext links. (Zamujasa)
Build 513.1501
Fixes (More Info)
BYOND Pager
- Hitting Ctrl+V to paste did not work. (NSBR)
Dream Maker
- Object types that had transforms defined and also had child types could cause the compiler to crash. (Nadrew)
- The map editor (and object tree) sometimes did not show icons for objects that had them. (Repo82)
Dream Seeker
- Objs did not properly take their pixel and/or step offsets into account when calculating their "micro-layer", which put them out of sync with mobs. This was mostly only noticeable when the obj's layer was very close to the mob's. (Yut Put)
- The Cyrillic character Я was acting like typing / when typing into an input control. (Vallat)
Build 513.1500
Fixes (More Info)
Dream Seeker
- There were still some rare cases where client-side icon operations could cause crashes. (NethIafins)
Build 513.1499
Fixes (More Info)
Dream Seeker
- A longtime crash that was manifesting in icon destructors was found. This was caused by the client garbage collector firing while the client was trying to resolve a client-side icon operation, when the garbage collector deleted one of the component icons prematurely. (ZomgPonies)
Build 513.1498
Fixes (More Info)
Dream Seeker
- Use of browser controls and HTML interfaces could cause crashes. (NethIafins)
- After centering text in the output control, future lines incorrectly remained centered. (NSBR)
- Using a plane master with a transform did not play nicely with a map control whose zoom setting was high enough to cause pixels to get trimmed. This resulted in an incorrect visual offset to the items on the plane, although mouse tracking still used the correct positions. (NSBR)
Features (More Info)
All
- The color selection dialog now includes a box for the hexadecimal RGB code, which will also accept pasted values.
Build 513.1497
Fixes (More Info)
All
- Converting from ANSI to UTF-8 could cause a crash or junk data in Linux. (FireFlashie)
Dream Daemon
- json_encode() is now more spec-compliant to avoid JSON.parse() choking because the creators of JSON made stupid, stupid decisions about how to handle numbers. Now, numbers like infinity will be sent as {"__number__":"Infinity"} instead of just Infinity like before. (json_decode() can parse this same format, but it will also accept the old way.) Also, in an associative list, key values are always quoted as strings. (StyleMistake)
Dream Seeker
- Dream Seeker, and possibly also the server, could crash in some cases after working with /icon datums due to heap corruption. The most common way to produce this was to output the icon or send it via browse_rsc(). The potential for a crash was exacerbated in recent 513 builds but this issue existed long before that. (Vallat)
- Icon states with accented characters didn't work correctly in output or grids. (Pokemonred200)
Features (More Info)
Dream Maker
- In the icon editor, when there are two or more states with identical names (and movement flags), the duplicates are now highlighted in an obvious way. This will help avoid confusion if one state is used and not the other.
Build 513.1496
Fixes (More Info)
Dream Daemon
- Using the icon() proc or new/icon() to isolate a specific icon state didn't work for accented characters because the icon wasn't converted on load. (Pokemonred200)
- Regression: The value of regex.next was not filled in correctly after a Find() on a global regex. (Anturke)
Dream Seeker
- Newline characters in maptext caused extra space to appear in many cases. (RootAbyss)
- The sound.environment var wasn't working correctly. (Kyle2143)
Build 513.1495
Fixes (More Info)
Dream Daemon
- Regression: The non-regex version of splittext() broke in 513.1493 as a result of changes made to accommodate splittext_char(). The result of this was that it left off the last item in the list. (Irrationalist)
- Linux's tendency to use UTF-8 natively in its locale caused problems when converting ANSI to Unicode. BYOND now attempts to use a non-UTF-8 locale in Linux, and if character conversion still fails, "wings it" in some routines. (Steamp0rt)
Build 513.1494
Fixes (More Info)
Dream Maker
- Dream Maker was still using some old non-locale-sensitive code that snuck through, causing strings that were not encoded in UTF-8 to compile incorrectly. (Vallat)
Build 513.1493
Fixes (More Info)
Dream Daemon
- Sometimes strings that contained ANSI, or had to be re-encoded because they contained malformed UTF-8, did not get added to the string tree properly. (Steamp0rt)
- Using the read-only list index operator on a string did not return the full UTF-8 character at that index. (Lummox JR)
Dream Maker
- Adding Unicode to the editor in Dream Maker could cause crashes when it attempted to highlight syntax or when navigating the document. (Lummox JR)
- The new reference didn't handle some characters correctly in the header section. (LordAndrew)
- The way Dream Maker loaded code files caused a blank line at the end to be stripped. (LordAndrew)
- text2ascii() on constant text with no index argument was incorrectly handled in the compiler. (SpaceManiac)
- clamp() didn't compile correctly with constant values. (Exxion)
Dream Seeker
- The displacement map filter used the wrong texture sampler, so it misbehaved for icons whose pixels touched the edge of the icon. (MisterPerson)
Features (More Info)
DM Language
- Character-based versions of many built-in text procs have been added (as opposed to the current byte-based versions), although they come with a performance cost. These are:
- length_char()
- text2ascii_char()
- copytext_char()
- findtext_char()
- findtextEx_char()
- findlasttext_char()
- findlasttextEx_char()
- replacetext_char()
- replacetextEx_char()
- spantext_char()
- nonspantext_char()
- split_char()
- regex.Find_char()
- regex.Replace_char()
The performance cost can be mitigated slightly by replacing cases where you used to use length(text)-n as an index with simply -n instead of length_char(text)-n, since most of these procs support negative indexes. The read-only string index [] operator still uses byte positions.
Dream Seeker
- The vis_flags values inheriting icon, icon_state, dir, or ID will now, when applied to a movable atom, make it inherit the "moving" flag of its visual container, so it will display a moving icon state instead of a non-moving one when the containing object is in motion.
Build 513.1492
Fixes (More Info)
All
- Converting from ANSI to Unicode via the user's locale still didn't work correctly. (Lummox JR)
Dream Maker
- "Nudge as pixels" didn't set pixel_x or pixel_y correctly in the map editor. (Vallat)
Features (More Info)
Dream Daemon
- Visual contents include protection against circular references, but this has been relaxed for cases where a turf is being added to visual contents. Therefore obj1 having visual contents containing turf2, whose physical contents contain obj1, is now allowed. Movable atoms will still use a more restrictive approach.
Build 513.1491
Fixes (More Info)
All
- When translating from old 8-bit characters to Unicode, locale was not taken into account. (Note: remote input, e.g. from an older client connecting to a 513 server, does not include any locale info so the locale is assumed to match the server.) (Vallat)
- The user data path was not read correctly at startup of any BYOND programs, returning to the default value. (Super Saiyan X)
Dream Daemon
- json_encode() didn't handle UTF-8 characters correctly. (Steamp0rt)
Dream Maker
- Dream Maker could crash on exit in some cases when a map tab was open. (Lummox JR)
- Icon states with accent marks didn't show up in the object tree or the map editor. (Pokemonred200)
- Related to the maptext ampersand issue, icon files containing states with long names could crash the editor. (Nemvar)
Dream Seeker
- If an object was indirectly in its own visual contents, it could appear twice instead of just once. (Lummox JR)
- Objects that used both render_source and filters had the filters applied twice. (Lummox JR)
- ascii2text() did not handle Unicode code points correctly and was instead following old outdated behavior. (Taitz)
- Icon states with accent marks didn't appear. (Pokemonred200)
- Objects using both render_source and transform had the transform applied twice. (Nadrew)
- Regression (512.1488): The behavior of mouse pointers changed inappropriately, preventing drag cursors from working. (NSBR)
- Reading and writing vars on an abstract filter didn't work correctly. (Nadrew)
- Including an ampersand in maptext caused it to freak out and hang the client up in a state where it could close, but not close completely. (BurgerBB)
Features (More Info)
DM Language
- The alpha mask filter has a new flag, MASK_SWAP, which uses the source image as the mask and vice-versa.
- A new vis_flags value, VIS_HIDE, will prevent an object from appearing in visual contents at all, which may be useful for certain special effects.
Dream Seeker
- Maptext word-breaking and wrapping behavior has been improved for words with hyphens, and words too long to fit on a line that contain underscores.
Build 513.1490
Fixes (More Info)
DM Language
- Using certain var names that coincide with built-in procs, e.g. block, could result in compilation errors. Many cases of this have been fixed. (Multiverse7)
Features (More Info)
DM Language
- In skins, window and pane controls now have inner-size and outer-size parameters that can be used for fine-tuning, since the size parameter alone doesn't tell the whole story.
- The escape sequences \xNN, \uNNNN, and \UNNNNNN are now supported, where N is a hex digit. This is used to refer to a character by its Unicode code point. Note that with the new Unicode support, characters 128 and above are encoded as multiple bytes in UTF-8 format. See the DM reference for details.
- atom.plane, previously only explicitly supporting values from -100 to 100 and FLOAT_PLANE, has been expanded. Now you can use planes from -10000 to 10000, and FLOAT_PLANE can have an offset added to it.
- Many new filter effects have been added:
- Ripple: Similar to the wave filter, this creates a ripple-like distortion.
- Alpha mask: Use the alpha channel from another icon or render_source as a mask to cut out parts of this image.
- Displacement map: Use the red and green channels from another icon or render_source to warp this image.
- Color matrix: Apply a color matrix, which can also use other color spaces like HSV, HSL, and HCY.
- Radial blur: Blur outward from a center point, increasing the blur amount with distance.
- Angular blur: Adds a rotational blur to this image.
- Rays: Random rays of light emit from a center point.
- Layer: Composites two images together, allowing color, transform, and blend_mode to be applied.
- sha1() will return the results of an SHA1 hash on a string.
- clamp(a,b,c) returns the value of a (a number), limited to the numerical range between b and c. This is very similar to max(a,min(b,c)) but quicker, and it can adapt to cases where b>c. If a is a list, any numbers or null values in the list will all be clamped between b and c.
- The new ismovable() proc acts like isobj() and ismob() but for either objs or mobs.
- Atoms now have two new vars: render_target and render_source. This can be used to reuse a rendered object multiple times in the render pipeline, or create input for certain filters. The value of these vars is a name of your choosing; if it starts with an asterisk, the object will not appear on the map directly. An object with a render_target must be within the visible map or HUD in order to be usable as a render_source on that same map control.
- Animation now supports a new easing value called JUMP_EASING which can perform a sudden transition instead of a gradual one.
- atom.vis_flags has been added to allow more fine-grained control over how visual contents are rendered. You can make an atom in visual contents inherit the parent object's plane, layer, direction, icon, icon_state, or even identity (e.g., it can act like a regular overlay).
- islist() is now, finally, a built-in proc.
- BYOND now supports Unicode. Internally, character encoding uses UTF-8.
Of special note: While emojis are supported, they are not rendered in color at this time by most controls. The current browser control will render them if you include a @font-face declaration covering the relevant character ranges that displays a color emoji font such as Segoe UI Emoji.
- There is now a built-in ref() proc. This acts as syntactic sugar for "\ref[object]".
- The new client.MeasureText() proc can be used to determine the dimensions of maptext on a client. (This is a client proc because the server has no way of measuring maptext itself.) This can be used to either find the full width required to display text without wrapping, or the height of the text. Because this involves a client query it will sleep the current proc until a response is received.
- atom.maptext can now include links. Links support the title attribute, and you can use the :hover CSS pseudo-class. (Please note :hover can only change the text color at this time.)
- client.SoundQuery() can be used to ask the client for information about what sounds are currently playing.
- tan() and arctan() procs have been added. arctan() can either be called with a single value, or with x,y. (Note: Many languages handle the two-argument form of arctan() by using y,x order, but we're not doing that because it's stupid and nobody should have done it in the first place.)
DM Reference
- The DM reference has been improved, now including the skin reference.
Dream Daemon
- The animate() proc can now be called with an associative list of appearance vars to change, instead of using the var1=value1, var2=value2 syntax. You can also use an appearance or mutable appearance. (Using a filter as an argument to animate a filter isn't yet handled.)
512 Release Notes | View All