Releases: MSUTeam/MSU
1.2.0-rc.3
CHANGES
- add: set the AIBehaviorID of vanilla skills to vanilla behavior during
create
. This ensures that adding a vanilla skill to an entity will automatically give the AI behavior of that skill to that entity. (#282) - change: the serde flag of settings to be
ModSetting.
instead ofMS.
.This means settings in rc.1 and rc.2 will not be loaded with rc.3 (#283) - change: removed
requireSettingValue
function for now. (#285) - change: BB objects are no longer serialized & deserialized using
::Mod.Serialization.serialize
and::Mod.Serialization.deserialize
, THIS WILL BREAK MODS written for rc.1 and rc.2. Now, you have to pass a Serialization or Deserialization emulator to their onSerialize or onDeserialize function respectively (#280)
FIXES
- fix: bug in
getBehaviorScriptFromID
causing automatic addition of skill behaviors to not work (41c403a) - fix: item type names being slightly off in which item type they point to (#277)
- fix: handling for itemType having a value of 0 for item type name (#277)
- fix: remove leftover Timer in array_setting.js (3ee3d62)
- fix: skills adding their behavior to player characters (4b93065)
- fix: change hook on asset_manager from
hookNewObjectOnce
tohookNewObject
otherwise quitting to the main menu and loading back into the game caused errors. (f18971b) - fix: modsettings not being synced between frontend and backend (2ef065b)
- fix: remove check for existing behavior when adding behavior via AIBehaviorID in skills. Otherwise it was causing some behaviors to be removed mid-execution when the skill removed itself during the behavior execution. (#288)
- fix: issues with the flag based serialization system (#280)
- serialization of BB objects is now handled by passing a Serialization or Deserialization Emulator to them.
- Normal deserialiation now requires a default value.
- SerDeEmulators are now permanently linked to a FlagContainer they are assigned during instantiation
- SerializationEmulators now have an Incremental mode where they store their data in the flag container as soon as something is written to them.
- DeserializationEmulators now immediately clear flags from their FlagContainer as they deserialize.
- SerDeEmulator flag IDs are validated to make sure they do not collide with flags generated by other emulators.
1.2.0-rc.2
FIXES
- fix: bug in setBaseValue function of AbstractSetting caused by a typo in code (#273)
- fix: bad handling of empty arrays by ::MSU.Array.rand() (#270)
- change: ::MSU.Array.rand's
_start
parameter now defaults tonull
instead of0
. Important with regards to dealing with empty arrays. (#270) (DOC) - fix; removes WIP files that shouldn't have been included in the previous rc
1.2.0-rc.1
MAJOR
NEW FEATURES
- add: flag based serialization and deserialization for completely safe addition/removal of serialized content from saved games (#148) (DOC)
- add:
::MSU.Class.Enum
an enumerate data structure (#191) (DOC) - add:
::MSU.BBClass.Empty
, an empty bb class that can be inherited from to allow 'mods_hookExactClass' hooks (#175) (DOC) - add: mod update checker to Registry system (#214) (DOC)
- add:
resetSettings
functions to ModSettings addon, panels and pages, and "reset" function to settings (#180) (DOC) - add:
toggle
function to BooleanSetting (c3063a1) (DOC) - add:
isKeybindPressed
function and passive SQ keybind to keybinds system (#174) (DOC) - add:
removeByValue
function to ::MSU.Array (deprecates ::MSU.Array.remove) (eea1f36) (DOC) - add: the ability to recursively merge two tables with Table.merge (661de94) (DOC)
- add:
::MSU.isBBObject
, a function to identify instances of BBObjects (4663676) (DOC) - add:
::MSU.isEqual
, a function to check equality with full support for instances of WeakTableRef (#170) (DOC) - add:
getValueAsHexString
function to Color Picker element (#195) (DOC) - add:
<skill>.m.AIBehaviorID
member to skills which will create and add the respective AIBehavior to the receiving entity (#253) (DOC) - add:
onQueryTileTooltip
event for skills which allows the active entity to modify the tooltip of the hovered tile (#209) (DOC) - add
onEquip
andonUnequip
events for skills (#163) (DOC) - add
onAnySkillUsed
event for items (#168) (DOC) - add:
startsWith
function to ::MSU.String (#217) (DOC) - add:
endsWith
function to ::MSU.String (#217) (DOC) - add:
foreach (item, weight in container)
iteration to weighted_container (#200) (DOC) - add:
::MSU.AI.addBehavior
function which adds a new AI behaviour to the const table (#203) (DOC) - add:
onGetHitFactorsAsTarget
function to skills and skill_container that is called for the target entity's skills (#205) (DOC) - add:
color
,colorRed
andcolorGreen
functions to::MSU.Text
for coloring strings (#151) (DOC) - add:
lockSetting
function (#193) (DOC) - add:
requireSettingValue
function that will change the setting to the passed value and lock it, and error otherwise (#193) (DOC) - add:
BeforeChangeCallbacks
andAfterChangeCallbacks
that run before and after the setting is changed, replacing the previous 'Callback' (now BeforeChangeCallbacks) (#235) (DOC) - add:
getMod
functions to settings_element (#193) (DOC) - add:
getMod
function to and settings_page (#193) (DOC) - add: methods to
pause
andunpause
to SQ and JS timer classes (#232) (DOC) - add:
silentGet
andsilentStop
functions to timer classes that will get the current time without printing to the log (#232) (DOC)
DEPRECATE
- deprecate: 'MSU.Utils.addAIBehaviour' - use MSU.AI.addAIBehavior instead
- deprecate: 'MSU.Array.remove' - use MSU.Array.removeByValue instead
MINOR
NEW FEATURES
- add: MSU GitHub and Nexus Mods links to lead the user to the newly updated MSU version (9d0dd03)
- add: getAllElementsAsArray functions to ModSettings addon, panels, and pages, with an optional filter argument to reduce the array down to desired elements (e.g. settings only) (DOC)
- add: 'Reset' button in the ModSettings UI to reset the settings of the current page (#180)
- add: 'Reset all settings for every mod' button to MSU settings (#180)
- add 'apply' button to mod settings screen (22544b4)
- add: MSU 'Esc' keybind to close popup (#216)
- add: '(MSU)' to name of vanilla settings in modsettings (#252)
- add: a debug log to the keybind system that prints the final key combination string if the 'keybindsLog' MSU setting is turned on (ed3de0a)
- add: modsetting that supresses the basegame keybinds so that only the MSU system is used (#251)
- add:
deserializeInto
function inMSU.Utils
to deserialize directly into an object (7c01161) (DOC)
CHANGES
- change: new keybinds are now validated to make sure that they use valid keys (#178)
- change: remove the notice from msu settings about them being potentially required by mods if enabled (instead we print lock reasons) (572d0ad)
- change: simplify modSettings setBaseValue function by optionally calling the new reset() instead of set() (#236)
- change: settings labels now use vanilla css classes to improve compatibility (a274418)
- change: colorpicker labels now have the opposite color to increase readability (7edf3ca)
- change: settings can now have multiple lock reasons (060c423)
- change: settings lock reasons are now at the end of the tooltip (f691b53)
- change: printData and debug print now print file, function & line (#241)
- change: MSU.Table.merge now returns the first passed table (#248)
- change: the
set
function of settings now returns true if the setting's value is equal to the passed new value at the end of the function and false otherwise (5b4ee95)
FIXES
- fix: printData not being able to handle tables with non-string keys (#182)
- fix: issues with 'additionalAccuracy' of items not applying correctly on skills (72ca8a1)
- fix: AdditionalAccuracy and AdditionalHitchance not being considered properly for skills which inherit from other skills (017fab8)
- fix: saveBaseValues not working properly for skills which inherit from other skills (e2135c8)
- fix:
::MSU.Table.keys()
and::MSU.Table.values()
not actually returning their intended values (afd6791) - fix: built-in functions (getclass() and weakref()) not working for ordered_map and weighted_container (50528f2)
- fix: an issue with Affordability Preview
(02ca49d) - fix: potential stack overflow in skill_container (df7f5e1)
- fix: issues with the checkbox element not updating reliably (b09619e)
- fix: default ui_screen show/hide not working (30473dd)
- fix: itemTypes added via addNewItemType getting sorted to top (#152)
- fix: weapon
setUpCategories
throwing error ifthis.m.Categories
is an empty string (5ef680c) - fix: issue with weighted_container
add
function where items with a negative value that were added didn't correctly become forced (5db0f9e) - fix: range setting being unable to handle floats (#215)
- fix: issue where our hooks on 'general_querySkillTooltipData' and 'general_queryStatusEffectTooltipData' would overwrite base tooltip instead of appending (0de57f8)
- fix: settings will now print the lock reason if attempting to change them while locked (10a004b)
- fix: issues where keybinds with multiple keys were not registering properly (they were not sorted correctly) (addee9b)
- fix: logic issues in ::MSU.Array.rand function when passing non-default values for _start and _end (26993d6)
- fix: cases where AI was able to swap items without paying the item action's cost properly (was an MSU bug due to MSU's custom item action implementation). The fix is accomplished ...
v1.1.1
v1.1.0
-
add Tooltip system to simplify adding tooltips to UI objects
-
add Timer functions to benchmark code
-
add: helpful log errors to type checking functions
-
add onShow and onHide to ui_screen base class (JS)
-
add addAIBehaviour function
-
add dummy functions to get movement speed mult instead of checking for the presence of the function
-
add text coloring functions
-
add logging for mods that the save was saved with that are now missing
-
add simple state management functions
-
add iterateObject JS function
-
add getSetting JS function
-
simplify Movement Speed hook to no longer overwrite onUpdate() of party
-
fix some issues with print/formatData and allow them to print class/instance members
-
fix: quick hands incorrectly applying to shield item swaps
-
fix: issue with Movement Speed module causing crashes
-
fix: SemVer compare functions not accepting mod objects
-
fix: MSU being unable to handle incompatibilities with specific versions
-
fix: error during getActionCost function
-
fix: new mods for save not getting printed to log
-
fix: add getclass function to OrderedMap and WeightedContainer
-
various minor fixes
v1.0.5
- Fixed the getMod function throwing exception even when the mod ID existed.
- Fixed MSU exceptions not adding a space before quotation marks.
- Fixed error message when trying to get a non-registered mod to say that you should create a mod object rather than register it.
v1.0.4
- Added a requirement in the MSU mod_hooks queue for vanilla version 1.5 or later.
- The IsPreviewing boolean of skill_container is now set to false in onCombatFinished as well to avoid any cases where it might remain true due to some skills bugging out during combat.
- Fixed a typo in a function call in the AlreadyInState exception.
- Removed some leftover logging.
- Fixed an issue in exceptions when the passed parameter is a tile object.
v1.0.3
Fixes
- Fixed a bug causing weapon categories to not properly be generated for mods using the WeaponType system.
- Added a helpful error and exception when passing the tile of an actor not placed on map to the various msu-based functions to get actors in tactical_entity_manager.
v1.0.2
v1.0.1 - Nexus Release
Official Nexus release.