We've got yet another great update for you today featuring a Custom Theme Editor (dark mode included), Global Chat Filter, Picture-in-Picture and many scripting improvements! [h1][b]Theme Editor & Dark Mode[/b][/h1] [img]https://clan.cloudflare.steamstatic.com/images//5854753/a326cbc46469e2dbbbff1ab504c167eb88e82709.png[/img] Alongside the new Dark theme, you may now edit the colours of the user interface however you wish using the Theme Editor. Find it in the [b]Configuration->Interface[/b] window. [h1][b]Global Chat[/b][/h1] The Global Chat now has a Profanity filter that the user can enable to filter out profanity, spam and misbehaviour. Can be enabled/disabled in chat settings, or with [b]/filter[/b] & [b]/nofilter[/b] [h1][b]Picture-in-Picture / Spectator View[/b][/h1] [list] [*]Spectator view can now be used for picture-in-picture, if you are not using it on another monitor. Can be enabled by right-clicking background in game and selecting [b]Picture-in-Picture[/b]. [*]Console commands added for this, and some [b]spectator[/b] commands reworked. See below. [*]Fixed restricted visiblity (which shows the world as a Grey player sees it). [*]Fixed fog-of-war view. [*]Fixed pointer visibility. [/list] [h1][b]General[/b][/h1] [list] [*]Images assets are no longer resized to the nearest power of 2 thanks a bug fix by Unity. (Unity version 2019.1.14) [*]Lowered max angular velocity cap to make dice feel better and more like previous versions. [*]Various UI improvements and fixes, most notably on Color Picker, Server Browser, and Script Editor. [*]Custom Figurine object now has a [b]Card Scale[/b] property, so the figurine card can be scaled independently from the base. [*][b]GM Notes[/b] section added to bottom of right-click context menu for Black player (can be disabled in Misc settings) [*]Each section in the right-click context menu can be collapsed by clicking the line above it (can be disabled in Misc settings) [*]Misc setting to control mouse shake threshold. [*]Misc setting to control whether games can add items to context menus. [*]Misc setting to control whether games can show the game-specific keyboard controls config window. [*]Misc setting to control whether a single card will behave as a deck when you type a number on it. If ON then you will draw the card. If OFF then it will change state / rotation value, etc. [*]Fixed blindfold in right-click menu not working. [*]Fixed spectators (grey players) seeing things they shouldn't (in fog-of-war for instance). [*]Fixed game freezing when you hold a stack of two objects and use alt+right-mouse to drop one. [/list] [h1][b]Lua[/b][/h1] [h1]New API events:[/h1] [list] [*][b]filterObjectEnterContainer(container, object)[/b] - Global version of [b]object.filterObjectEnter[/b] [*][b]onPlayerChangeTeam(player, team)[/b] - Called when a player changes team. [*][b]onObjectHover(player, object)[/b] & [b]object.onHover(player)[/b] - Called when a player moves their pointer over an object. [*][b]onObjectNumberTyped(object, player, number)[/b] & [b]object.onNumberTyped(player, number)[/b] - Called when a player types a number on an object. Uses new property [b]object.max_typed_number[/b] [*][b]onObjectStateChange(object, old_guid)[/b] & [b]object.onStateChange(old_guid)[/b] - Called when an object changes state, after it is in its new state. [*][b]onObjectCollisionEnter(object, collision_info)[/b], [b]onObjectCollisionStay(object, collision_info)[/b], [b]onObjectCollisionExit(object, collision_info)[/b] - Called when an object collides with another. Objects must be registered with the collision handler before they will trigger these events. [/list] [h1]New API commands:[/h1] [h1]`onNumberTyped` example:[/h1] [previewyoutube=oP1qDCrqzqI;full][/previewyoutube] [list] [*][b]player.setUITheme(theme_script)[/b] - Sets the player's UI theme. [*][b]object.addContextMenuItem(label, function, keep_open = false)[/b] - Adds a right-click context menu to the object. [*][b]object.clearContextMenu()[/b] - Clears all items added by above. [*][b]addContextMenuItem(label, function, keep_open = false, require_table = false)[/b] - Same as above, but global (when user right-clicks empty space, or the table). [*][b]clearContextMenu()[/b] - Clears all items added by above. [*][b]addHotkey(label, method_name, trigger_on_key_up = false)[/b] - Add a bindable control. User may assign a key to it in [b]Options->Game Keys[/b]. [*][b]showHotkeyConfig()[/b] - Shows the config window described above. [*][b]clearHotkeys()[/b] - Remove all controls created by above. [*][b]container.remainder[/b] - After using [b]container.takeObject[/b], if there is only one object left in the container (which means the container will be destoyed in the next frame) then this will be set to that last remaining object. [*][b]object.getGMNotes()[/b] & [b]object.setGMNotes(notes)[/b] - For new GM notes feature. [*][b]object.registerCollisions(include_stay_events = false)[/b], [b]object.unregisterCollisions()[/b] - Objects must be registered in order to trigger the global collision handler events detailed above. Stay events are particularly expensive, so only set that parameter to true if you absolutely require it. [/list] [h1]Fixes:[/h1] [list] [*]Fixed [b]filterObjectEnter[/b] not working under certain conditions. [*]Fixed decals not cleaning up correctly when using [b]setDecals[/b] [/list] [h1][b]System Console[/b][/h1] [h1]Spectator command rework:[/h1] [list] [*][b]spectator_window[/b] now controls the picture-in-picture mode. [*][b]spectator_screen[/b] can be used to open spectator view on another monitor. [*][b]spectator_activate_with_resolution[/b] now has [b]-p[/b] parameter to specify picture-in-picture. This command can be used to open picture-in-picture with specific position and size. [/list] [h1]New commands: (for more info see above page, or use [b]help [/b])[/h1] [list] [*][b]ui_main_flip[/b], [b]ui_main_modding[/b], [b]ui_main_music[/b], [b]ui_main_notebook[/b], [b]ui_main_objects[/b], [b]ui_main_options[/b] - Control visibility of buttons on top menu bar. [*][b]spectator_panel_buttons[/b] - Whether picture-in-picture window has buttons to control it. [*][b]spectator_panel_corners[/b] - Whether picture-in-picture window has corners to resize it. [*][b]spectator_panel_locked[/b] - Whether picture-in-picture window can be moved. [*][b]ui_theme_color_[/b] - Color of specified selector. [*][b]ui_theme_batch_start[/b] & [b]ui_theme_batch_end[/b] - Group multiple [b]ui_theme_color_[/b] commands together. [*][b]ui_theme_count[/b] - Number of themes. [*][b]ui_theme_from_game_auto[/b] - Whether games can set the theme colors. [*][b]ui_theme_is_[/b] - Sets current theme. [*][b]ui_theme_index[/b] - Index of current theme. Set to change theme. [*][b]ui_theme_name[/b] - Name of current theme. Set to change theme. [*][b]chat_filter[/b] - Whether the chat filter is enabled. [*][b]chat_refresh_filter[/b] - Refresh the chat filter rules. [*][b]card_is_a_deck_for_hotkeys[/b] - Whether the setting described above is enabled. [*][b]game_hotkey_bind[/b] - Bind a key to a game-generated control. [*][b]game_hotkey_list[/b] - List bindable controls generated by loaded game. [*][b]ui_context_menus_from_games[/b] - Whether games can add items to context menus. [*][b]game_hotkey_config_can_open[/b] - Whether games can show the game-specific control binding window. [*][b]ui_context_menus_can_collapse[/b] - Whether context menu section can be collapsed. [*][b]ui_context_menus_show_gm_notes[/b] - Whether GM notes are displayed at bottom of context menu for Black player. [/list]