I wrote a script to speed the agonizing process of deconstruction, and wanted some forum input on it as well as to make it available for anyone who doesn't already have one. I'm not quite sure where I'm supposed to put this, but if there's a proper spot please let me know. I figured here I'd get the most views and flames
Devs have stated that they are fine with scripts that improve QoL, as long as you aren't using them to do things that aren't possible normally.
It's written in AutoHotKey (hereafter AHK) which is a tool for easily creating macros. If you don't already have it I would suggest looking into it.
To use the script:
1) Make sure you have AHK downloaded.
2) Copy the code below into Notepad etc.
3) Save it as WhateverYouWant.ahk (mine is named Deconstructor).
4) Run the script.
5) In DDO, go to the Item Deconstruction Device, open the interface.
6) Shift+Right Click on the left-most grey box in the "Your Ingredients" tab (see image below). This sets the target location for the current usage.
7) Shift+Left Click on items you want gone. Repeat as necessary.
8) Press Escape to close script.
Repeat steps 4-8 the next time you go to deconstruct.
Code:
#SingleInstance Force ; prevents multiple instances of script
CoordMode, Mouse, Screen ; sets coordinates to absolute
SetupX := ; X position of drop point
SetupY := ; Y position of drop point
DissX := ; X position of dissolve point
DissY := ; Y position of dissolve point
DecoX := ; X position of deconstruct point
DecoY := ; Y position of deconstruct point
+RButton:: ; Shift-Right Click on left box of drop point to set up
MouseGetPos, SetupX, SetupY ; get current mouse position for setup
DissX := SetupX + 30
DissY := SetupY - 190
DecoX := SetupX + 200
DecoY := SetupY + 30
return
+LButton:: ; Shift+Left Click on item to be deconstructed
MouseGetPos, VarX, VarY ; get current mouse positon
BlockInput On ; prevent user input
MouseClickDrag, L, , , %SetupX%, %SetupY% ; click and drag to drop point
Sleep 200 ; wait, not always long enough
Click %DissX%, %DissY% ; click on dissolve
Sleep 50 ; brief delay
Click %DecoX%, %DecoY% ; click on deconstruct
MouseMove, %VarX%, %VarY% ; move mouse to start location
BlockInput Off ; allow user input
return
^D:: ; Ctrl-D displays your current variables
MsgBox %SetupX%, %SetupY% Setup X/Y ; drop point
,`n%DissX%, %DissY% Diss X/Y ; dissolve point
,`n%DecoX%, %DecoY% Deco X/Y ; deconstruct point
return
Esc:: ; Escape closes this
ExitApp
Return
If you keep your Item Deconstruction Window in a set location, you can edit the default locations so you can skip step 6. Simply run it as normal, and after step 6 alt-tab to the script, press Ctrl+D, and enter the variables found there into the variable section at the start of the script (example below). It's possible to do this automatically through use of a .ini or similar file, but I wanted to keep this script as simple and user-friendly as possible (which is why the comments are so detailed).
The current issue I'm having is that the time between when you drop your item in and when the Dissolve option appears is variable. If you are patient feel free to edit that sleep longer and always hit it, but I find that 0.2s is long enough for ~95% of my deconstruction and you can just shift-click again if it misses the first time.
Code:
MouseClickDrag, L, , , %SetupX%, %SetupY% ; click and drag to drop point
Sleep 1000 ; for those of you patient people
I considered color matching etc but that's hard without adding a lot of complexity especially if you consider different monitor settings etc.
TL;DR: OP is a nerd who spent way too long writing a tool to save ~5 actions per deconstruction.
I'd really appreciate any input. Thank you!