Skip to content

Releases: AinTunez/DarkScript3

DarkScript 3.4.2

02 Jul 23:35
d01d49e
Compare
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
Compare
Choose a tag to compare

Contributors: @thefifthmatt

DarkScript 3.4

23 Oct 18:54
05ddead
Compare
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
Compare
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
Compare
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
Compare
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

DarkScript 3.2.2

07 Jul 05:37
932824e
Compare
Choose a tag to compare
  • Multiple editor tabs for editing emevd files
  • Directory listing for emevd and emevd.js files in current directory (green if there's no JS file)
  • UI adjustments: tooltips less intrusive, Ctrl+F doesn't reset, better label auto-indentation
  • Fix incorrect args for EndIfPlayerInoutsideArea in Sekiro. If using MattScript, resave common_func to fix the warp bug

DarkScript 3.2.1

27 May 03:38
915b160
Compare
Choose a tag to compare

UI navigation and customization improvements. Includes compatibility mode for older emevds, Ctrl+Click/Ctrl+Enter to jump to event definitions and initializations, and slightly improved Japanese text rendering.

DarkScript 3.2

23 May 23:50
f79669e
Compare
Choose a tag to compare

Major version release! Major new features:

  • Advanced script writing mode for DS1/BB/DS3/Sekiro called MattScript. Inside of $Event, script writers can use a high-level syntax to avoid dealing with things like condition groups and skip line counts. Switching to it should preserve the same behavior, only changing things like condition group numbers. See MattScript documentation for more info.
  • Importing from other files in the same directory using JavaScript modules. See the main project page for more info.
  • Selecting Custom EMEDFs when opening a file
  • EMEDF HTML files, for a one-page view of all instructions and where they're used in the vanilla game. This can be accessed from the help menu on any file.
  • Batch Resave renamed to Batch Dump EMEVD->JS, and Batch Resave JS->EMEVD added

There are several minor UI improvements. The find dialog box is no longer on top of other windows, autocomplete includes condition functions and enums, compile errors contains links which can be clicked to go to the error line, and more.

Backwards compatibility notes:

  • Just to be safe, back up existing project files before resaving/converting, especially if using MattScript.
  • As part of module support, all files are now read in JavaScript strict mode. This mainly means that nonstandard JavaScript may cause save errors. One notable change is that all variables must be declared with const/let/var prior to giving them a value (other than condition variables in $Event).
  • EMEVD metadata is now read from JavaScript file headers, where previously it was read from the EMEVD files directly. This should not result in any data changes unless the EMEVD file has been edited elsewhere.
  • Argument data was previously lost due to miscounting the number of arguments for some instructions. If you have existing JS files from previous versions of DarkScript3, you may need to restore these missing arguments:
    • In DS2, ModifyBowProperties requires additional arg unknown8 with default value 1. ApplySoulScalingToWeapon requires additional arg unknown2 with default value 0.
    • In DS3, Goto/End/SkipIfPlayerInoutsideArea require additional arg numberOfTargetCharacters with default value 1.
    • In Sekiro, DisplayHollowArenaPvpMessage in common.emevd.dcx is now DisplayGenericDialogGloballyAndSetEventFlags. Get the new lines from vanilla files.

DarkScript 3.1.8

18 Apr 00:22
Compare
Choose a tag to compare

QOL improvements and bugfixes. Replaces the previous "hacky" release.