Skip to content

Releases: AinTunez/DarkScript3

DarkScript 3.6.2

11 Dec 02:32
4b570f5

Choose a tag to compare

Update for Nightreign DLC.

  • Add new instructions in Nightreign 1.03 (https://soulsmods.github.io/emedf/nr-emedf.html), with a few unknowns. It also does alternate decompilation for event id 90015446 which will not recompile normally due to its complexity.
  • Fix issue where new events in linked files like common_func could not be used with opening and closing other files.
  • Rename argument in PlaceNPCSummonSign to shouldMultiplayerRestrictionsApply in Elden Ring, from Axi. This changes a few parameter names in common_func events.

.NET 6.0 Desktop and ASP.NET Runtimes are still required. If you haven't installed them yet, install them from https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe and https://aka.ms/dotnet/6.0/aspnetcore-runtime-win-x64.exe before attempting to run the tool.

Contributors: https://github.com/thefifthmatt

DarkScript 3.6.1

16 Aug 19:40
d243ce6

Choose a tag to compare

Update for new instructions in Nightreign 1.02, some of which are fully or partly unknown still.

Emedf docs: https://soulsmods.github.io/emedf/nr-emedf.html
Script diff from 1.01.7 to 1.02.1: https://soulsmods.github.io/diff/nr/emevd_1.02.1.html

.NET 6.0 Desktop and ASP.NET Runtimes are still required. If you haven't installed them yet, install them from https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe and https://aka.ms/dotnet/6.0/aspnetcore-runtime-win-x64.exe before attempting to run the tool.

Contributors: https://github.com/thefifthmatt

DarkScript 3.6

21 Jul 05:20
cefa3ae

Choose a tag to compare

Update for browsing and editing Nightreign event scripts. A lot of work has gone into analyzing and reversing all new commands. Be warned that because the game is new, there is always the possibility of oversights that require future updates and manual script fixes.

Features and fixes

  • Initial support for Nightreign event scripts: https://soulsmods.github.io/emedf/nr-emedf.html
  • Get module imports working again, as they were broken in 3.5. JavaScript pre-parsing now happens in strict mode so it recognizes module statements. The code is always run in strict mode so ideally nothing breaks from this, but consult MDN if it does.
  • Fix decompiled event parameter names for entity id parameters used with TargetEntityType, in nearly all games. Many of these were previously named chrEntityId despite potentially being any entity type.
  • Add names for DS2 Scholar commands from https://github.com/LordRadai/DarkScript3_defs when they were previously unknown. Most renames are backwards compatible but this intentionally introduces a breaking change because ModifyBowProperties previously had an incorrect argument type, so it must be manually rewritten to ModifyBulletParam to resave files.

.NET 6.0 Desktop and ASP.NET Runtimes are still required. If you haven't installed them yet, install them from https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe and https://aka.ms/dotnet/6.0/aspnetcore-runtime-win-x64.exe before attempting to run the tool.

Contributors: @thefifthmatt

DarkScript 3.5

21 Dec 02:05
7e8f21f

Choose a tag to compare

  • Typed event initializations. This makes the number and types of parameters match for an init and its event. Typed inits support many features that regular instructions have, like autocomplete, tooltips, and doc box info for all arguments. They look like this:
// Before (note: this syntax is still fully supported)
$‍Event(73791090, Default, function(X0_1, X1_1, X2_1, X3_1, X4_4, X8_4, X12_1)) { ... });
InitializeEvent(0, 73791090, 2633277, 2046402020, 1069547520, 4);
// After
$‍Event(73791090, Default, function(areaId, blockId, regionId, indexId, destEntityId, delayTime, weather) { ... });
$‍InitializeEvent(0, 73791090, 61, 46, 40, 0, 2046402020, 1.5, Weather.Fog);

To use it, params must have correct padding and all usages of a param must have the same type and width. Inits for events in different files like common_func.emevd.dcx are supported. See https://soulsmodding.wikidot.com/tutorial:mattscript-documentation#inits for details.
Existing files can be converted with "Edit > Preview Conversion to MattScript", but note this effectively compiles then decompiles the file, so it will be reformatted. Just in case, make sure to carefully check the diff and backup/version-control the files.

  • Full support for AC6: https://soulsmods.github.io/emedf/ac6-emedf.html. Note that several unused event scripts have command usages which are incompatible with those actually used by the game, so these are automatically fixed on decompile.
  • Event names for Elden Ring and AC6 based on the spreadsheets. These are added to new and converted files automatically.
  • More robust command line interface. Use DarkScript3.exe /cmd -help
  • Add textbox to filter the map list when a file/project is open.
  • Support both DSMapStudio and Smithbox for fetching game metadata, in all games, not just Elden Ring.
  • Fix ER DLC event ids being unpacked as signed ints when they need to be unsigned ints.

.NET 6.0 Desktop and ASP.NET Runtimes are required. Download them from https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe and https://aka.ms/dotnet/6.0/aspnetcore-runtime-win-x64.exe

Contributors: @thefifthmatt

DarkScript 3.4.2

02 Jul 23:35
d01d49e

Choose a tag to compare

  • Add emevd commands and enum values which are new in Elden Ring 1.12: https://soulsmods.github.io/emedf/er-emedf.html. Check the diff from 1.10: https://soulsmods.github.io/diff/er/emevd_1.12.html
  • Encode emevd string metadata as JSON so that JS files are not considered binary data. It is only parsed as JSON when it starts with ", for backwards compatibility.
  • Hovering over a command with numbers in it should no longer cause KeyNotFoundException when showing the tooltip.
  • Fix rare MattScript bug where conditions which were defined and used multiple times could be reordered incorrectly. You can see a few instances of this in the diff. Most instances of this have no behavior changes.
  • Do not embed C# Object in the JS environment as this prevents calling functions like Object.entries. If you relied on C# Object let me know.
  • When there is a JS file but no emevd file in the current project directory, opening it from the sidebar no longer decompiles a fresh copy.

.NET 6.0 Desktop and ASP.NET Runtimes are required for 3.4.x. Download them from https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe and https://aka.ms/dotnet/6.0/aspnetcore-runtime-win-x64.exe

Contributors: @thefifthmatt

DarkScript 3.4.1

17 Dec 21:04

Choose a tag to compare

Contributors: @thefifthmatt

DarkScript 3.4

23 Oct 18:54
05ddead

Choose a tag to compare

  • project.json support for games with event directories. Use the file list to open files from the game directory and save them to the project directory. No need to manually copy event scripts anymore.
  • Autocomplete improvements. Autocomplete any word in function/enum names, order suggestions by quality, remember previously selected entries, immediately suggest enums for enum arguments, and more.
  • DSMapStudio connectivity features via Soapstone. When both DarkScript 3.4 and DSMapStudio ≥1.04 are open, they can be used together.
  • Right-click maps in the file list to open the corresponding map in the current DSMapStudio project, in all games.
  • Elden Ring metadata from DSMapStudio. Param/FMG data is available when a DSMapStudio project is loaded, and map data is available when a map is loaded. This data is used for autocomplete and tooltips. You can also right-click on tooltips to open the data in DSMapStudio. More games are planned to be supported, and other productivity features too, so suggestions/feedback is appreciated.
  • To autocomplete an entity ID, use the full entity id (10000280), the last 3 or 4 digits (280), the model id (c4750), or part of the character name (Grafted / Scion).
  • .NET 6.0 Desktop Runtime is required for this update. Download it from https://aka.ms/dotnet/6.0/windowsdesktop-runtime-win-x64.exe
  • There are no functional emedf changes. All instruction names/types are the same.

Contributors: @thefifthmatt

DarkScript 3.3.2

29 Jul 20:05
31de33b

Choose a tag to compare

Minor features and fixes from requests!

  • For loops in MattScript. Normal number-based for loops are supported like for (let i = 0; i < 10; i++), and array-based iteration like for (const id of [10, 20, 30]). These can be used with if statements and explicit condition variables. More details at the bottom of http://soulsmodding.wikidot.com/tutorial:mattscript-documentation
  • Rename SetNetworkInteractionState->TriggerAreaReload. Thanks to old_sound and Pav for identifying this command. The previous names are still present as deprecated aliases.
  • Many decompilation improvements: indent "else if" better, use if statements in more nested cases, use gotos in more switch-statement-type cases. Also auto-indent "else if" correctly in the editor.
  • Add floatArg helper function which Ctrl+1 can now use, as a stopgap for typed event initialization
  • Fix minor bug with Ctrl+Click interfering with Ctrl+C/V in some cases
  • Add Ctrl+Y and Ctrl+Shift+Z for redo, it was Ctrl+R by default
  • Add UI option for showing the argument tooltip or not (in View menu), and also argument indicator in doc side panel with UI option. These options are ad hoc for now, based on the exe location.

DarkScript 3.3.1

21 Jul 02:51
e831acf

Choose a tag to compare

Minor update for DarkScript3 Elden Ring support (commands by HotPocketRemix and thefifthmatt)

  • Add compatibility with CNT event scripts
  • Add Ctrl+D keyboard shortcut which duplicates either the current selection or current line
  • Add simple versions of commands to MattScript, like SetEventFlagID to mean SetEventFlag with a flag argument, and Enable/Disable pairs of commands as simpler versions of SetState commands. They are chosen automatically in decompilation when applicable
  • Add a few cases of optional arguments at the end of instructions, and also leave them out automatically in decompilation
  • Change capitalization from Objact to ObjAct. Both the old and new versions of commands will still work.
  • You can use "Edit > Preview Conversion to MattScript" to rewrite existing MattScript files to use these features. It will keep all existing comments, but may restructure some conditions/gotos, and apparently also makes if/else chains blow up (I'll try to address this in a future version).
  • Add URL parameters to EMEDF HTML to remember show/hide options

DarkScript 3.3

17 Jul 02:04
81bb5f7

Choose a tag to compare

  • Elden Ring command names by HotPocketRemix and thefifthmatt, thanks to research by Pav, Grimrukh, TKGP, and others. These were exhaustively tested in-game by thefifthmatt. See http://soulsmodding.wikidot.com/tutorial:intro-to-elden-ring-emevd
  • Cross-file JS search using Ctrl+Shift+F
  • Float conversion checks using Ctrl+1
  • Map names in the file browser
  • Ctrl+Click to jump to event definitions can now jump to common_func
  • Extra safety checks against throwing away argument or parameter data on decompile
  • Name aliases, to support safe renaming of commands/conditions/enums in the future
  • Minor UI improvements: remember window position on reopen, change splitter width
  • Support for calling shared functions from MattScript functions within conditionals

Enjoy! -Matt