diff --git a/LICENSE b/LICENSE index 78761fb..0debc3f 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ MIT License -TSW-LoreHound copyright (c) 2017 Earthfiredrake +TSW-LoreHound copyright (c) 2017-2018 Earthfiredrake Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/LoreHound.incl.as b/LoreHound.incl.as index b42d32b..34e76a7 100644 --- a/LoreHound.incl.as +++ b/LoreHound.incl.as @@ -1,4 +1,4 @@ -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound diff --git a/README.md b/README.md index de9dcde..a50c454 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # TSW-LoreHound -Proximity detection for lore in The Secret World, including non-visible pickups. -Compatible with SWL. +Proximity detection for lore in Secret World Legends, including non-visible pickups. +Legacy (TSW) compatible. ## Overview Will detect and attempt to identify lore pickups when they enter or spawn within ~25m of the player. Lore pickups have been roughly categorized into four groups. @@ -10,17 +10,17 @@ Will detect and attempt to identify lore pickups when they enter or spawn within + Some event lore appears to have been removed from the game entirely rather than just disabled so cannot be detected at all outside of the event + Triggered: Requires a particular condition to spawn or be visible but doesn't despawn (as far as I know) + Commonly in instances that don't permit MUs, such as dungeons or replayable mission areas - + There's also a pile of it in KD + + Also a lot in some areas of KD + Dropped: Mostly bestiary lore drops from monsters and triggered spawns. Will time out after a short period of time. + A tracking option can inform you when these despawn, as long as you stay in the vicinity (somewhere between ~75-100m). + Bestiary lore has a 5min timeout. + KD rare spawn drops have a 1min timeout. + Uncategorized: Something that I haven't run across yet, so haven't been able to place in a group. + Opting into the automated report option permits the collection of required information to be mailed to me when you open the bank, saving you the trouble. (Automated reports remain untested in SWL.) -+ Related Items: Items which, while not lore themselves, are directly related to acquiring certain lore (mostly in the bestiary category) ++ Related Items: Items which, while not lore themselves, are directly related to acquiring certain lore -Each category can independently have notifications output to either chat (System channel), as FIFO alerts, or with ingame waypoints. Default settings are designed to provide notifications for already acquired drop lore, and any uncategorized lore, but options are available to make it more of a personal proximity guide. When sending a notification through the chat, a set of additional details can be displayed. Those marked with a '*' will always be displayed with Uncategorized lore and are used to identify it in the index. -+ Timestamp: Puts a timestamp on detections, so you can know when the drop was without having to timestamp all of the System channel (revealing the mysteriously blank lines that it otherwise hides). +Each category can independently have notifications output to either chat (System channel), as pop-up (FIFO) alerts, or with HUD (not map) waypoints. Default settings provide a wide range of notifications for most lore, including already known drop and uncategorized lore, but these can be customized extensively by clicking the icon. When sending a notification through the chat, a set of additional details can be displayed. Those marked with a '*' will always be displayed with Uncategorized lore and are used to identify it in the index. ++ Timestamp: Puts a timestamp on detections, so you can know when the drop was without having to timestamp all of the System channel (revealing many mysteriously blank lines that it otherwise ignores). + Location*: Map name and coordinate vector for the lore + The vector has been swizzled into [x,z,y] format, where y is the vertical coordinate + Category IDs*: Identifying information that is used to confirm and categorize detected objects. @@ -31,39 +31,40 @@ Each category can independently have notifications output to either chat (System Additional Options + "Topbar Integration": Enable to lock the mod icon to the default topbar or a topbar mod that supports the VTIO registration system (such as Meeehr's topbar or ModFolder). Disable to revert the mod to a free floating icon that can be placed elsewhere on the screen. + "Extended Testing": To improve efficiency and reduce false-positives, it only checks against the existing list of known/suspected lore. This option will activate additional testing on objects that would otherwise be ignored, for use if it fails to detect something that it should have. -+ "Log Cartographer Data": Detected lore notifications are logged in "ClientLog.txt" file, in a format which can be easilly extracted for use by my Cartographer mod. -+ "Waypoint Colour": The colour (in 6 digit Hex notation) to use on onscreen waypoints. ++ "Log Cartographer Data": Detected lore notifications are logged in "ClientLog.txt" file, in a format which can be easily extracted for use by my Cartographer mod. ++ "Waypoint Colour": The colour (6 digit RGB Hex notation) to use on onscreen waypoints. -All settings are saved account wide and will be shared across characters. If you'd rather have different settings for each character, renaming the file "LoginPrefs.xml" to "CharPrefs.xml" when installing/upgrading the mod should work without any problems. A clean install of the mod is recommended if doing this, as it will be unable to transfer existing settings anyway. +Settings are saved account wide and will be shared across characters. If you'd prefer unique settings for each character, renaming "LoginPrefs.xml" to "CharPrefs.xml" when installing/upgrading the mod should work without any problems. A clean install of the mod is recommended if doing this for the first time, as it will be unable to transfer existing settings anyway. ## Installation -The packaged release should be unzipped (including the internal LoreHound folder) into the appropriate folder and the client restarted. +The packaged release should be unzipped (including the internal LoreHound folder) into the appropriate folder:
TSW: [TSW Directory]\Data\Gui\Customized\Flash.
SWL: [SWL Directory]\Data\Gui\Custom\Flash. -When upgrading, existing .bxml files in the LoreHound directory should be deleted to ensure changes in the .xml files are loaded (whichever is newer seems to take precedence). +The safest method for upgrading (required for installing) is to have the client closed and delete any existing .bxml files in the LoreHound directory. Hotpatching (using /reloadui) works as long as neither Modules.xml or LoginPrefs.xml (stable since v1.0.0, but I may forget to update this) have changed. -An internal update system *should* carry forward settings from previous versions. To simplify the system, major versions will be used as thresholds; v1.0.x will upgrade from any v0.y, but later versions require a staged upgrade through v1.0. Starting with v1.1.0 directly upgrading from versions prior to v1.0.0 will reset all settings to defaults. +An internal update system *should* carry forward settings from a limited range of previous versions (currently back to v1.0.0) Attempting to upgrade an earlier version will reset all settings to defaults, unless upgrades are staged to each in between major version. -If upgrading from v0.1.1-alpha, a clean reinstall is recommended. Remove the existing mod entirely and login to the game to clear any existing settings before installing a more recent version. +If updating v0.1.1-alpha a clean reinstall is recommended. Remove the existing mod entirely and login to the game to clear any existing settings before installing a more recent version. ## Change Log -Version 1.3.2 +Version 1.3.3 + Classification improvements + KD: More initially invisible lore now in the triggered category + Light in black places: "Related Items" now includes a candlestick in a basement (but not Prof. Plum) - + Various other items were considered but didn't make the cut (almost unmissable, or just plain spammy) - + Better late than never, detects the lore in Niflheim (I wouldn't want to go sniffing around all those Krampii either) + + Various other items were considered but didn't make the cut (almost unmissable, or just plain spammy), if you're curious they're still in there, just commented out + + Better late than never, detects the lore in Niflheim (I wouldn't want to go sniffing around those Krampii either) + Uncategorized lore fixed to provide notifications in the future (auto-reports continue to be largely untested, to the slight relief of the postman) + The uncategorized lore count drops to 5 + Interface and other changes + Improved topbar integration, supporting default topbar as well as VTIO compatible mods + Enabled on fresh installs, updating will use existing behaviour to pick a value (icons should be where you left them) + Default topbar location should be just to the right of the middle of the screen - + Workaround for bug with ModFolder when doing /reloadui + + Workaround for bug with ModFolder when doing /reloadui + + Fixed a layout issue affecting Meeehr and Viper topbars + Default settings have been changed to better reflect common usage (I do eventually listen to criticism) - + Will now get chat and waypoint notifications for all types of uncollected lore by default - + This affects fresh installs, upgrades should retain their existing preferences + + Will now get lots of notifications for all types of uncollected lore by default + + This affects fresh installs, upgrades will retain existing settings + Strings.xml has had a minor format change + Any text customization will need to be copied to the new file (the old format no longer works) @@ -74,7 +75,7 @@ Version 1.3.0 + Dead Scarabs: Including colour identification + Fixed the bug with icon not staying with UI edit mode overlay + Settings can now be manually reset (/setoption efdLoreHoundResetConfig true) -+ Lore recategorizations: ++ Lore re-categorization: + Mobs drops in dungeons have been recategorized as Drop lore (instead of Triggered) + Several entries in KD have been recategorized as Triggered (instead of Placed), due to requiring actions/missions to appear + Log output has been slightly reformatted and a basic python script has been included to quickly parse relevant entries @@ -131,7 +132,7 @@ Version 0.6.0-beta + No longer goes berserk around certain players, and has been told to stop sniffing German corpses + False positives in the detection system have been stomped + No longer baffled by the drone in Polaris and can spot lore #4 there -+ Various other code cleanup and backend changes ++ Various other code cleanup and back-end changes + Unknown lore id count: 7 Version 0.5.0-beta @@ -139,7 +140,7 @@ Version 0.5.0-beta + Partially initialized drops will be poked until they shape up + Disabled event lore flagged as such + Told to ignore inactive event lore (new option: default ignores) -+ Icon no longer superglued to screen without topbar mod, works with GUI edit mode ++ Icon no longer super-glued to screen without topbar mod, works with GUI edit mode + Refuses to hide, but can be made into a very small puppy + Now more vocal, notification on icon when tracking lore drops or when a debug report is ready + Topbars cause shrinkage, but it's still there @@ -159,18 +160,16 @@ Version 0.1.1-alpha ## Known Issues & FAQ The following issues are known to exist in the most recent release: -+ There appear to be seven uncategorized lore IDs somewhere in the game - + Three of these are believed to be event related and unavailable at the moment -+ Sometimes has strange behaviour when zoning into instances with nearby lore, either failing to detect them, or issueing incorrect alerts. ++ There appear to be five uncategorized lore IDs somewhere in the game + + One is believed to be event related and unavailable at the moment ++ Sometimes has strange behaviour when zoning into instances with nearby lore, either failing to detect them or issuing alerts that should be disabled. + Text field labels are truncated to fixed sizes - + Lore topics may cause waypoint labels to be trunctated, hiding the # - + Customization or translation of labels in the options menu will likely require some tweaking to allow for the extra space -+ The waypoint colour customization interface is a bit kludgy -+ A brief lag may be observed after reloading the ui, where the full size icon is displayed rather than attached to the topbar - + This is intentional and reduces the occurence of bugs related to other mods integrating with the topbar + + Lore topics may cause waypoint labels to be truncated, hiding the # + + Custom or translated settings menu text may have size issues, if you want to provide translations I can tweak the label sizes to compensate ++ The waypoint colour customization interface is a bit kludgey Where are the waypoints on my map?
-I have not found any way for an ingame mod to interact with or overlay the map UI or the waypoint files. While this mod can help you locate things once you're close, a waypoint pack such as Lassie's may be a helpful supplement. I am currently working on a supplementary map mod, Cartographer, which will eventually have support for direct updates from a future version of LoreHound. +I have not found any way for an in-game mod to interact with or overlay the map UI or the waypoint files. While this mod can help you locate things once you're close, a waypoint pack such as Lassie's may be a helpful supplement. I am currently working on a supplementary map mod, Cartographer, which will eventually have support for direct updates from a future version of LoreHound. Can I adjust the detection range?
No. The API for the proximity detection system I am using does not give me access to that feature. Similarly the despawn tracking range is outside of my control (and slightly random). Once detected, the range at which onscreen waypoints disappear could be customized, but does not seem to be that important to people. @@ -179,10 +178,10 @@ Can it tell me where lore X is?
Not really. LoreHound does not actually contain a database of lore locations or names, it generates the notifications on the fly based on the detected object. If looking for the location of a specific lore, I suggest using a community info site, such as TSWDB or Crygaia wiki. Why is so much of it disabled by default?
-The initial intent of LoreHound was to provide a system to detect invisible lore drops, ie: those which drop from monsters when you already have them. I tried to avoid spamming notifications or spoiling lore locations for those who would rather hunt them down personally. While popular demand and my own use have led to it being more flexible, the default settings continue to reflect the original design goals. +It isn't anymore (v1.3.3), but for the record: The original intent of LoreHound was to provide a system to detect invisible lore drops, specifically from the rider Samhain event in TSW. I tried to avoid spamming notifications or spoiling lore locations for those who would rather hunt them down personally. While popular demand and my own use have led to the mod becoming more flexible, the default settings have only recently been changed to reflect the way most people use this mod. ## Testing and Further Developments -This continues to be something of a work in progress, though I'm mostly satisfied that it achives the objectives. I am considering: +This continues to be something of a work in progress, though I'm mostly satisfied that it achieves the objectives. I am considering: + Some form of whitelisting to further filter the accepted values: + The *easy* version would be one that simply works on loreIDs after initial filtering, as a global white list. + More complicated systems (intelligent per-category whitelists, random drops only, etc.) would require additional information to be saved about each lore entry. @@ -195,25 +194,21 @@ This continues to be something of a work in progress, though I'm mostly satisfie A feature for helping with The Abandoned lore was found to be unworkable. Lore.IsLockedForChar either does not work as advertised, or requires GM permissions. -As always, defect reports, suggestions, and contributions are welcome. They can be sent to Peloprata in SWL (by mail or pm), via the github issues system, or in the official forum post. I am infrequently in TSW at this point, so mail there is likely to be an unreliable method of communication. More often than not I can also be found lurking on various Discord servers, think of it as an investigation mission. +Defect reports, suggestions, and contributions are always welcome. Message Peloprata in #modding on the SWL discord, or in-game by mail or pm, or leave a message on the Curse or GitHub page. I am infrequently in TSW at this point, so mail there is likely to go unread. -Source Repository: https://github.com/Earthfiredrake/TSW-LoreHound - -Forum Post: https://forums.thesecretworld.com/showthread.php?98459-Mod-LoreHound&p=2031487#post2031487 +Curse Mirror: https://www.curseforge.com/swlegends/tswl-mods/lorehound -Curse Mirror: https://mods.curse.com/tsw-mods/tsw/273270-lorehound +Source Repository: https://github.com/Earthfiredrake/TSW-LoreHound ## Building from Source Requires copies of the TSW and Scaleform CLIK APIs. Existing project files are configured for Flash Pro CS5.5. -Master/Head is the most recent packaged release. Develop/Head is usually a commit or two behind my current test build. As much as possible I try to avoid regressions or unbuildable commits but new features may be incomplete and unstable and there may be additional debug code that will be removed or disabled prior to release. - -Once built, 'LoreHound.swf' and the contents of 'config' should be copied to the directory 'LoreHound' in the game's mod directory. '/reloadui' is sufficient to force the game to load an updated swf or mod data file, but changes to the game config files (LoginPrefs.xml and Modules.xml) will require a restart of the client and possible deletion of .bxml caches from the mod directory. +Master/Head is the most recent packaged release. Develop/Head is usually slightly behind my current local test build. As much as possible I try to avoid regressions or unbuildable commits but new features may be incomplete and unstable and there may be additional debug code that will be removed or disabled prior to release. -If the LogParser.py tool is required, it should be copied to the install directory as well. +Once built, 'LoreHound.swf' and the contents of 'config' should be copied to the directory 'LoreHound' in the game's mod directory. '/reloadui' is sufficient to force the game to load an updated swf or mod data file, but changes to the game config files (LoginPrefs.xml and Modules.xml) will require a restart of the client and possible deletion of .bxml caches from the mod directory. If the LogParser.py tool is required, it should be copied to the install directory as well. ## License and Attribution -Copyright (c) 2017 Earthfiredrake
+Copyright (c) 2017-2018 Earthfiredrake
Software and source released under the MIT License Uses the TSW-AddonUtils library and graphical elements from the UI_Tweaks mod
@@ -221,7 +216,7 @@ Both copyright (c) 2015 eltorqiro and used under the terms of the MIT License
https://github.com/eltorqiro/TSW-UITweaks -TSW, the related API, and most graphics elements are copyright (c) 2012 Funcom GmBH
+TSW, SWL, the related APIs, and most graphics elements are copyright (c) 2012 Funcom GmBH
Used under the terms of the Funcom UI License
LoreHound icon developed from game graphics (sourced from TSWDB) and http://www.iconninja.com/basset-hound-dog-head-icon-843075 diff --git a/config/Strings.xml b/config/Strings.xml index d97c0f6..bd13edf 100644 --- a/config/Strings.xml +++ b/config/Strings.xml @@ -1,5 +1,5 @@ - @@ -30,6 +30,7 @@ + diff --git a/efd/LoreHound/LoreHound.as b/efd/LoreHound/LoreHound.as index 802a53f..4607dfc 100644 --- a/efd/LoreHound/LoreHound.as +++ b/efd/LoreHound/LoreHound.as @@ -1,4 +1,4 @@ -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound diff --git a/efd/LoreHound/gui/ConfigWindowContent.as b/efd/LoreHound/gui/ConfigWindowContent.as index 363688c..bb0041f 100644 --- a/efd/LoreHound/gui/ConfigWindowContent.as +++ b/efd/LoreHound/gui/ConfigWindowContent.as @@ -1,4 +1,4 @@ -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound diff --git a/efd/LoreHound/lib/AutoReport.as b/efd/LoreHound/lib/AutoReport.as index db34fc8..0311517 100644 --- a/efd/LoreHound/lib/AutoReport.as +++ b/efd/LoreHound/lib/AutoReport.as @@ -1,4 +1,4 @@ -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound diff --git a/efd/LoreHound/lib/ConfigWrapper.as b/efd/LoreHound/lib/ConfigWrapper.as index 8ec7527..7a9a662 100644 --- a/efd/LoreHound/lib/ConfigWrapper.as +++ b/efd/LoreHound/lib/ConfigWrapper.as @@ -1,4 +1,4 @@ -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound // Based off of the Preferences class of El Torqiro's ModUtils library: diff --git a/efd/LoreHound/lib/Mod.as b/efd/LoreHound/lib/Mod.as index c9e0fa9..72f62a1 100644 --- a/efd/LoreHound/lib/Mod.as +++ b/efd/LoreHound/lib/Mod.as @@ -1,4 +1,4 @@ -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound @@ -318,6 +318,7 @@ class efd.LoreHound.lib.Mod { /// Versioning and Upgrades private function UpdateInstall():Void { + Config.ChangeDefault("Installed", true); if (!Config.GetValue("Installed")) { // Fresh install, use the actual default value instead of the update placeholder Config.ResetValue("TopbarIntegration"); // DEPRECATED(v1.0.0): Temporary upgrade support @@ -327,8 +328,8 @@ class efd.LoreHound.lib.Mod { if (ShowConfigDV != undefined) { ChatMsg(LocaleManager.GetString("General", "ReviewSettings"), { noPrefix : true }); // Decided against having the options menu auto open here - // Users might not realize that it's a one off event, and consider it a bug - } + // Users might not realize that it's a one off event + } return; // No existing version to update } var oldVersion:String = Config.GetValue("Version"); @@ -484,9 +485,7 @@ class efd.LoreHound.lib.Mod { iconData.HostMovie = HostMovie; iconData.Config = Config; - if (iconData.GetFrame) { - iconData.GetFrame = Delegate.create(this, iconData.GetFrame); - } + if (iconData.GetFrame) { iconData.GetFrame = Delegate.create(this, iconData.GetFrame); } if (!iconData.LeftMouseInfo) { if (modInfo.Type == e_ModType_Interface) { @@ -804,7 +803,6 @@ class efd.LoreHound.lib.Mod { public var Icon:ModIcon; private var IsAboveTopbar:Boolean = false; // Display layer has been changed to render above topbar - // private var MeeehrDV:DistributedValue; private var ViperDV:DistributedValue; private var RegisteredWithTopbar:Boolean = false; diff --git a/efd/LoreHound/lib/ModIcon.as b/efd/LoreHound/lib/ModIcon.as index 7c1b0aa..1e6c739 100644 --- a/efd/LoreHound/lib/ModIcon.as +++ b/efd/LoreHound/lib/ModIcon.as @@ -1,4 +1,4 @@ -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound @@ -209,6 +209,13 @@ class efd.LoreHound.lib.ModIcon extends MovieClip { if (!VTIOMode) { ConfigureForDefault(); Config.ResetValue("IconPosition"); + if (GemManager != null) { + GemManager.lockAxis(2); + GemManager.removeEventListener("scrollWheel", this, "ChangeScale"); + SignalGeometryChanged.Emit(); + } + } else { + if (GemManager != null) { ManageGEM(false); } } } else { VTIOMode = false; @@ -217,6 +224,11 @@ class efd.LoreHound.lib.ModIcon extends MovieClip { Config.NewSetting("IconScale", 100); Config.NewSetting("IconPosition", new Point(10, 80 + IconID * 40)); } + if (GemManager != null) { + GemManager.lockAxis(0); + GemManager.addEventListener("scrollWheel", this, "ChangeScale"); + SignalGeometryChanged.Emit(); + } } break; } diff --git a/efd/LoreHound/lib/etu/GemController.as b/efd/LoreHound/lib/etu/GemController.as index b37fe74..6ad19f9 100644 --- a/efd/LoreHound/lib/etu/GemController.as +++ b/efd/LoreHound/lib/etu/GemController.as @@ -2,7 +2,7 @@ // Released under the terms of the MIT License // https://github.com/eltorqiro/TSW-Utils // Modified for LoreHound: -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Used and released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound diff --git a/efd/LoreHound/lib/etu/GemOverlay.as b/efd/LoreHound/lib/etu/GemOverlay.as index 1685452..5942e24 100644 --- a/efd/LoreHound/lib/etu/GemOverlay.as +++ b/efd/LoreHound/lib/etu/GemOverlay.as @@ -2,7 +2,7 @@ // Released under the terms of the MIT License // https://github.com/eltorqiro/TSW-Utils // Modified for LoreHound: -// Copyright 2017, Earthfiredrake (Peloprata) +// Copyright 2017-2018, Earthfiredrake (Peloprata) // Used and released under the terms of the MIT License // https://github.com/Earthfiredrake/TSW-LoreHound