Skip to content

Commit f2ba38f

Browse files
authored
v1.55.2 merge
- recombination: added item-slot locking, improved mod detection, updated fractured behavior - act-tracker: fixed a hint in act 9 - item-info: updated unique drop-tiers
2 parents d2b2e07 + d76791a commit f2ba38f

File tree

9 files changed

+204
-89
lines changed

9 files changed

+204
-89
lines changed

Lailloken UI.ahk

Lines changed: 66 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,9 @@ OnExit("Exit")
2727
Menu, Tray, Tip, Lailloken UI
2828
Menu, Tray, Icon, img\GUI\tray.ico
2929

30-
vars := {}
30+
vars := {"logging": FileExist("data\log.txt")}
31+
LLK_Log("--- tool launched ---")
32+
3133
If FileExist("ini\") && !FileExist("ini\file check.ini") ;check ini-files for incorrect file-encoding
3234
IniIntegrityCheck()
3335
ini := IniBatchRead("ini\config.ini")
@@ -37,43 +39,45 @@ If ini.versions["apply update"]
3739
IniDelete, ini\config.ini, versions, apply update
3840
}
3941
Else If ini.settings["update auto-check"]
40-
UpdateCheck()
42+
LLK_Log("checking for updates"), UpdateCheck()
4143
Init_vars()
4244
Startup()
43-
Init_screenchecks()
44-
Init_general()
45-
Init_betrayal()
46-
Init_cheatsheets()
47-
Init_cloneframes()
45+
Init_screenchecks(), LLK_Log("initialized screenchecks settings")
46+
Init_general(), LLK_Log("initialized general settings")
47+
Init_betrayal(), LLK_Log("initialized betrayal settings")
48+
Init_cheatsheets(), LLK_Log("initialized cheat-sheet settings")
49+
Init_cloneframes(), LLK_Log("initialized clone-frames settings")
4850
If WinExist("ahk_exe GeForceNOW.exe") || WinExist("ahk_exe boosteroid.exe")
49-
Init_geforce()
50-
Init_iteminfo()
51-
Init_legion()
52-
Init_mapinfo()
53-
Init_OCR()
54-
Init_searchstrings()
55-
Init_leveltracker()
56-
Init_maptracker()
57-
Init_qol()
58-
Init_recombination()
59-
Init_sanctum()
60-
Init_stash()
61-
Init_hotkeys()
51+
Init_geforce(), LLK_Log("initialized geforce now settings")
52+
Init_iteminfo(), LLK_Log("initialized item-info settings")
53+
Init_legion(), LLK_Log("initialized seed-explorer settings")
54+
Init_mapinfo(), LLK_Log("initialized map-info settings")
55+
Init_OCR(), LLK_Log("initialized ocr settings")
56+
Init_searchstrings(), LLK_Log("initialized search-strings settings")
57+
Init_leveltracker(), LLK_Log("initialized act-tracker settings")
58+
Init_maptracker(), LLK_Log("initialized map-tracker settings")
59+
Init_qol(), LLK_Log("initialized minor qol settings")
60+
Init_recombination(), LLK_Log("initialized recombination settings")
61+
Init_sanctum(), LLK_Log("initialized sanctum planner settings")
62+
Init_stash(), LLK_Log("initialized stash-ninja settings")
63+
Init_hotkeys(), LLK_Log("initialized hotkey settings")
6264
Resolution_check()
6365

6466
SetTimer, Loop, 1000
6567
SetTimer, Loop_main, 50
6668

6769
vars.system.timeout := 0
70+
LLK_Log("waiting for focus on client-window...")
6871
If !settings.general.dev
6972
WinWaitActive, ahk_group poe_window
7073
Else
7174
{
7275
WinWaitActive, ahk_group poe_ahk_window
7376
SoundBeep, 100
7477
}
78+
LLK_Log("client is focused")
7579

76-
Init_GUI()
80+
Init_GUI(), LLK_Log("GUIs initialized")
7781
SetTimer, LogLoop, 1000
7882

7983
If (check := ini.versions["reload settings"])
@@ -87,6 +91,7 @@ If vars.ini_integrity
8791
Reload
8892
ExitApp
8993
}
94+
LLK_Log("+++ tool is running +++")
9095
Return
9196

9297
#Include modules\betrayal-info.ahk
@@ -368,6 +373,8 @@ IniIntegrityCheck()
368373
local
369374
global vars
370375

376+
LLK_Log("starting ini integrity-check")
377+
371378
If !FileExist("ini backup\")
372379
FileCopyDir, ini, ini backup, 1
373380
Loop, Files, ini\*.ini
@@ -394,6 +401,8 @@ IniIntegrityCheck()
394401
IniWrite, % A_Now, ini\file check.ini, check, timestamp
395402
If vars.ini_integrity
396403
IniWrite, % StrReplace(vars.ini_integrity, "`t"), ini\file check.ini, errors
404+
405+
LLK_Log("finished ini integrity-check")
397406
}
398407

399408
Init_client()
@@ -406,6 +415,7 @@ Init_client()
406415

407416
If !WinExist("ahk_exe GeForceNOW.exe") && !WinExist("ahk_exe boosteroid.exe") ;if client is not a streaming client
408417
{
418+
LLK_Log("game-client is local client")
409419
;load client-config location and double-check
410420
ini := IniBatchRead("ini\config.ini")
411421
poe_config_file := !Blank(check := ini.settings["poe config-file"]) ? check : A_MyDocuments "\My Games\Path of Exile\production_Config.ini"
@@ -427,6 +437,7 @@ Init_client()
427437
}
428438
Else IniWrite, "%poe_config_file%", ini\config.ini, Settings, PoE config-file
429439
vars.system.config := poe_config_file, vars.client.stream := 0
440+
LLK_Log("found game's config-file")
430441

431442
;check the contents of the client-config
432443
FileRead, poe_config_check, % poe_config_file
@@ -450,6 +461,7 @@ Init_client()
450461
IniDelete, ini\config.ini, Settings, PoE config-file
451462
LLK_Error("Cannot read the PoE config-file.`n`nThe script will restart and reset the first-time setup. If you still get this error repeatedly, please report the issue.`n`nError-message (for reporting): Cannot read state of borderless fullscreen", 1)
452463
}
464+
LLK_Log("recognized current window settings")
453465

454466
;check if client's window settings have changed since the previous session
455467
If ini.settings.fullscreen && (ini.settings.fullscreen != vars.client.fullscreen)
@@ -478,6 +490,7 @@ Init_client()
478490
Gui, Test: Destroy
479491
;WinGetPos, x, y, w, h, ahk_class Shell_TrayWnd
480492
vars.monitor := {"x": xScreenOffset_monitor, "y": yScreenOffSet_monitor, "w": width_native, "h": height_native, "xc": xScreenOffset_monitor + width_native / 2, "yc": yScreenOffSet_monitor + height_native / 2}
493+
LLK_Log("measured monitor resolution and position: " width_native "x" height_native ", " xScreenOffset_monitor ", " yScreenOffSet_monitor)
481494

482495
If !vars.client.stream
483496
{
@@ -506,6 +519,7 @@ Init_client()
506519
WinMove, ahk_group poe_window,,,, % vars.client.customres.1 + 2* vars.system.xborder, % vars.client.customres.2 + vars.system.caption + 2* vars.system.yborder
507520
Else WinMove, ahk_group poe_window,,,, % vars.client.customres.1, % vars.client.customres.2
508521
}
522+
LLK_Log("applied custom resolution")
509523
}
510524

511525
WinGetPos, x, y, w, h, ahk_group poe_window
@@ -516,6 +530,7 @@ Init_client()
516530
{
517531
WinMove, ahk_group poe_window,, % xTarget, % yTarget
518532
WinGetPos, x, y, w, h, ahk_group poe_window
533+
LLK_Log("repositioned game-client")
519534
}
520535
vars.client.x := vars.client.x0 := x, vars.client.y := vars.client.y0 := y
521536
vars.client.w := vars.client.w0 := w, vars.client.h := vars.client.h0 := h
@@ -527,6 +542,7 @@ Init_client()
527542
vars.client.h0 := vars.client.h := vars.client.h - vars.system.caption - 2* vars.system.yborder
528543
vars.client.x0 := vars.client.x += vars.system.xborder
529544
vars.client.y0 := vars.client.y += vars.system.caption + vars.system.yborder
545+
LLK_Log("applied offsets for windowed mode")
530546
}
531547
vars.client.xc := vars.client.x - vars.monitor.x + vars.client.w/2, vars.client.yc := vars.client.y - vars.monitor.y + vars.client.h/2 ;client's horizontal and vertical centers (RELATIVE TO monitor.x and monitor.y)
532548
settings.general.FillerAvailable := (vars.client.fullscreen = "false" && vars.client.borderless || vars.client.fullscreen = "true" && vars.client.h < vars.monitor.h) ? 1 : 0
@@ -659,6 +675,8 @@ Init_vars()
659675
version := Json.Load(LLK_FileRead("data\versions.json")), version := version._release.1 . (version.hotfix ? "." (version.hotfix < 10 ? "0" : "") version.hotfix : "")
660676
vars.updater := {"version": [version, UpdateParseVersion(version)]}
661677
}
678+
679+
LLK_Log("initialized global objects")
662680
}
663681

664682
Loop()
@@ -1136,6 +1154,7 @@ Startup()
11361154
MsgBox, 48, gdiplus error!, Gdiplus failed to start. Please ensure you have gdiplus on your system
11371155
ExitApp
11381156
}
1157+
LLK_Log("initialized GDI+")
11391158

11401159
;get widths/heights of window-borders to correctly offset overlays in windowed mode
11411160
SysGet, xborder, 32
@@ -1157,6 +1176,8 @@ Startup()
11571176
If settings.general.dev
11581177
GroupAdd, poe_ahk_window, ahk_exe code.exe ;treat VS Code's window as a client
11591178

1179+
LLK_Log("set up window-groups, measured window-borders: " xborder ", " yborder ", " caption)
1180+
11601181
If !LLK_FileCheck() ;check if important files are missing
11611182
LLK_Error("Critical files are missing. Make sure you have installed the script correctly.")
11621183

@@ -1169,6 +1190,8 @@ Startup()
11691190
}
11701191

11711192
vars.general.runcheck := A_TickCount ;save when the client was last running (for purposes of killing the script after X minutes)
1193+
1194+
LLK_Log("waiting for valid game-clients...")
11721195
While !WinExist("ahk_group poe_window") ;wait for game-client window
11731196
{
11741197
If settings.general.kill.1 && (A_TickCount >= vars.general.runcheck + settings.general.kill.2* 60000) ;kill script after X minutes
@@ -1180,6 +1203,7 @@ Startup()
11801203
;band-aid fix for situations in which the client was launched after the script, and the script detected an unsupported resolution because the PoE-client window was being resized during window-detection
11811204
If WinExist("ahk_group poe_window") && win_not_exist
11821205
sleep 4000
1206+
LLK_Log("found game-client")
11831207

11841208
Init_client()
11851209
Init_lang()
@@ -1192,10 +1216,11 @@ Startup()
11921216
If FileExist(SubStr(poe_log_file, 1, InStr(poe_log_file, "\",,,LLK_InStrCount(poe_log_file, "\"))) "logs\client.txt")
11931217
poe_log_file := SubStr(poe_log_file, 1, InStr(poe_log_file, "\",,,LLK_InStrCount(poe_log_file, "\"))) "logs\client.txt"
11941218
Else poe_log_file := SubStr(poe_log_file, 1, InStr(poe_log_file, "\",,,LLK_InStrCount(poe_log_file, "\"))) "logs\kakaoclient.txt"
1219+
LLK_Log("game's log-file: " poe_log_file)
11951220

11961221
If FileExist(poe_log_file) ;parse client.txt at startup to get basic location info
1197-
vars.log.file_location := poe_log_file, Init_log()
1198-
Else vars.log.file_location := 0
1222+
vars.log.file_location := poe_log_file, LLK_Log("found game's log-file"), Init_log(), LLK_Log("accessed required information from log-file")
1223+
Else vars.log.file_location := 0, LLK_Log("couldn't find game's log-file")
11991224

12001225
GuiClientFiller()
12011226
}
@@ -1289,6 +1314,7 @@ UpdateCheck(timer := 0) ;checks for updates: timer param refers to whether this
12891314
global vars, settings, Json
12901315

12911316
vars.update := [0], update := vars.update
1317+
12921318
If !FileExist("update\")
12931319
FileCreateDir, update\
12941320
update.1 := !FileExist("update\") ? -2 : update.1
@@ -1366,6 +1392,9 @@ UpdateCheck(timer := 0) ;checks for updates: timer param refers to whether this
13661392
vars.updater.target_version := [LLK_IniRead("ini\config.ini", "versions", "apply update")]
13671393
Loop, Parse, % vars.updater.target_version.1, % "."
13681394
vars.updater.target_version.2 .= (A_Index = 3) ? (A_LoopField < 10 ? "0" : "") A_LoopField : A_LoopField
1395+
1396+
LLK_Log("starting update to " vars.updater.target_version.1)
1397+
13691398
If !FileExist("update\update_" vars.updater.target_version.2 ".zip")
13701399
UrlDownloadToFile, % "https://github.com/Lailloken/Lailloken-UI/archive/refs/tags/v" vars.updater.target_version.1 ".zip", % "update\update_" vars.updater.target_version.2 ".zip"
13711400
If ErrorLevel || !FileExist("update\update_" vars.updater.target_version.2 ".zip")
@@ -1394,6 +1423,7 @@ UpdateCheck(timer := 0) ;checks for updates: timer param refers to whether this
13941423
{
13951424
FileDelete, data\version_check.json
13961425
IniDelete, ini\config.ini, versions, apply update
1426+
LLK_Log("finished update to " vars.updater.target_version.1)
13971427
Reload
13981428
ExitApp
13991429
}
@@ -1402,6 +1432,7 @@ UpdateCheck(timer := 0) ;checks for updates: timer param refers to whether this
14021432
SetTimer, UpdateDownload, Delete
14031433
Gui, update_download: Destroy
14041434
IniWrite, updater, ini\config.ini, versions, reload settings
1435+
LLK_Log("failed update to " vars.updater.target_version.1)
14051436
Return
14061437
}
14071438
}
@@ -1707,6 +1738,18 @@ LLK_IsType(character, type)
17071738
Return 1
17081739
}
17091740

1741+
LLK_Log(message)
1742+
{
1743+
local
1744+
global vars
1745+
1746+
If !vars.logging
1747+
Return
1748+
1749+
FormatTime, logstamp, A_Now, yyyy-MM-dd`, HH:mm:ss
1750+
FileAppend, % (InStr(message, "---") ? "`r`n" : "") "[" logstamp "] " message "`r`n", data\log.txt
1751+
}
1752+
17101753
LLK_Overlay(guiHWND, mode := "show", NA := 1, gui_name0 := "")
17111754
{
17121755
local

data/changelog.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
11
[
2+
[
3+
["1.55.2", 15502],
4+
"recombination: added item-slot locking, improved mod detection, updated fractured behavior",
5+
"act-tracker: fixed a hint in act 9",
6+
"item-info: updated unique drop-tiers"
7+
],
28
[
39
["1.55.1", 15501],
410
"hotfix 1: loot-tracking in the map-tracker couldn't be set up while stash-ninja was disabled",

data/english/help tooltips.json

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -990,14 +990,16 @@
990990
"basics": [
991991
"one item will be randomly chosen as the final base and retains its influences, tags (e.g. corrupted, split), quality, implicits, enchants, anoints",
992992
"you can manipulate odds by crafting/editing mods",
993-
"influence-mods cannot be moved to bases that don't have the required influence,\nfractured mods cannot be moved from the original base",
993+
"influence-mods cannot be moved to bases that don't have the required influence,\nfractured mods cannot be moved from the original base and only add to the general affix pool there",
994994
"(/underline)(/bold)note: mod-weighting hasn't been figured out yet, so results become less accurate the more non-exclusive mods are present in each affix-group (e.g. when combining random loot as opposed to target-crafting the inputs)"
995995
],
996996
"exclusive": [
997997
"whether or not a mod is \"exclusive\" (i.e. part of a specific group and therefore affected by restrictions)",
998998
"only a single exclusive mod can be recombined onto the final item",
999-
"examples: breach, incursion, essence, bestiary, betrayal, delve, most bench prefixes, some bench suffixes, elevated mods",
1000-
"exceptions: crafted life & resists"
999+
"examples: breach, incursion, essence, bestiary, betrayal & veiled, delve, named bench-crafts (tora's, chosen, of the order, etc.) & metamods, elevated mods"
1000+
],
1001+
"lock": [
1002+
"locks the item-slot so it won't be automatically overwritten or cleared when loading items or closing the panel"
10011003
],
10021004
"nnn": [
10031005
"whether or not a mod is \"non-native, natural\" (i.e. restricted to specific bases)",

0 commit comments

Comments
 (0)