seblindfors / immersion Goto Github PK
View Code? Open in Web Editor NEWImmersive questing addon for World of Warcraft
License: Artistic License 2.0
Immersive questing addon for World of Warcraft
License: Artistic License 2.0
Client: Retail 9.0.2
Version: 1.3.4-Retail
Describe the bug
If I am in combat when trying to use a quest item directly from the on-screen quest list (underneath the minimap), I will often times be presented with the bug below. It seems like Immersion has trying to call the protected function UseQuestLogSpecialItem(). I'm unsure why Immersion would be trying to call this function, but (having fixed a lot of these issues in the past) I think it's probably more likely that this bug is due to Immersion taking ownership of a frame that calls this function.
Lua Error
1x [ADDON_ACTION_FORBIDDEN] AddOn 'Immersion' tried to call the protected function 'UseQuestLogSpecialItem()'.
[string "@!BugGrabber\BugGrabber.lua"]:519: in function <!BugGrabber\BugGrabber.lua:519>
[string "=[C]"]: in function `UseQuestLogSpecialItem'
[string "@Blizzard_ObjectiveTracker\Blizzard_ObjectiveTrackerShared.lua"]:95: in function <...ObjectiveTracker\Blizzard_ObjectiveTrackerShared.lua:88>
As stated above, this error happens when pressing while mousing over the quest rewards to do an item comparison. This error is probably a hold-out from the Backdrop mixin changes made early in Shadowlands
2x [string "ImmersionGameTooltip3:OnLoad"]:2: attempt to call method 'SetBackdropBorderColor' (a nil value)
[string "*:OnLoad"]:2: in function <[string "*:OnLoad"]:1>
[string "=[C]"]: ?
[string "=[C]"]: in function `CreateFrame'
[string "@Immersion\Utils.lua"]:12: in function `Create'
[string "@Immersion\Logic\Inspector.lua"]:29: in function `creationFunc'
[string "@SharedXML\Pools.lua"]:50: in function `Acquire'
[string "@Immersion\Logic\Logic.lua"]:260: in function `ShowItems'
[string "@Immersion\Logic\Logic.lua"]:469: in function <Immersion\Logic\Logic.lua:460>
Locals:
self = ImmersionGameTooltip3 {
0 = <userdata>
layoutType = "TooltipDefaultLayout"
TextLeft1 = ImmersionGameTooltip3TextLeft1 {
}
BottomOverlay = <unnamed> {
}
Icon = <unnamed> {
}
textRight1Font = "GameTooltipHeaderText"
NineSlice = <unnamed> {
}
TextRight1 = ImmersionGameTooltip3TextRight1 {
}
TextRight2 = ImmersionGameTooltip3TextRight2 {
}
TextLeft2 = ImmersionGameTooltip3TextLeft2 {
}
TopOverlay = <unnamed> {
}
shoppingTooltips = <table> {
}
Button = <unnamed> {
}
textRight2Font = "GameTooltipText"
Hilite = <unnamed> {
}
textLeft2Font = "GameTooltipText"
textLeft1Font = "GameTooltipHeaderText"
}
(*temporary) = nil
(*temporary) = ImmersionGameTooltip3 {
0 = <userdata>
layoutType = "TooltipDefaultLayout"
TextLeft1 = ImmersionGameTooltip3TextLeft1 {
}
BottomOverlay = <unnamed> {
}
Icon = <unnamed> {
}
textRight1Font = "GameTooltipHeaderText"
NineSlice = <unnamed> {
}
TextRight1 = ImmersionGameTooltip3TextRight1 {
}
TextRight2 = ImmersionGameTooltip3TextRight2 {
}
TextLeft2 = ImmersionGameTooltip3TextLeft2 {
}
TopOverlay = <unnamed> {
}
shoppingTooltips = <table> {
}
Button = <unnamed> {
}
textRight2Font = "GameTooltipText"
Hilite = <unnamed> {
}
textLeft2Font = "GameTooltipText"
textLeft1Font = "GameTooltipHeaderText"
}
(*temporary) = 1
(*temporary) = 1
(*temporary) = 1
(*temporary) = "attempt to call method 'SetBackdropBorderColor' (a nil value)"
This error appears 100% of the time when interacting with an NPC and clicking the option to continue the conversation text futher.
I.e with Caretaker Kah-Toll at the great vault, it appears when selecting: "How does it know what to award me with?"
1x Interface/AddOns/Immersion/Interface.lua:235: attempt to index field 'type' (a nil value)
[string "@Interface/AddOns/Immersion/Interface.lua"]:235: in function `CanAutoSelectGossip'
[string "@Interface/AddOns/Immersion/Logic/Logic.lua"]:56: in function `IsGossipAvailable'
[string "@Interface/AddOns/Immersion/Logic/Logic.lua"]:142: in function `HandleGossipOpenEvent'
[string "@Interface/AddOns/Immersion/Logic/Events.lua"]:7: in function `?'
[string "@Interface/AddOns/Immersion/Logic/Logic.lua"]:12: in function <Interface/AddOns/Immersion/Logic/Logic.lua:8>
Locals:
self = <table> {
IsRetail = true
GetGossipActiveQuests = <function> defined @Interface/AddOns/Immersion/Interface.lua:276
GetNumAvailableQuests = <function> defined @Interface/AddOns/Immersion/Interface.lua:303
GetRewardSkillPoints = <function> defined @Interface/AddOns/Immersion/Interface.lua:163
GetTitleText = <function> defined @Interface/AddOns/Immersion/Interface.lua:75
GetNumQuestChoices = <function> defined @Interface/AddOns/Immersion/Interface.lua:151
GetRewardTitle = <function> defined @Interface/AddOns/Immersion/Interface.lua:179
IsAzeriteItem = <function> defined @Interface/AddOns/Immersion/Interface.lua:351
ITERATORS = <table> {
}
QuestFlagsPVP = <function> defined @Interface/AddOns/Immersion/Interface.lua:103
GetQuestText = <function> defined @Interface/AddOns/Immersion/Interface.lua:87
GetGreetingText = <function> defined @Interface/AddOns/Immersion/Interface.lua:71
GetNumGossipAvailableQuests = <function> defined @Interface/AddOns/Immersion/Interface.lua:248
GetGossipOptions = <function> defined @Interface/AddOns/Immersion/Interface.lua:287
IsActiveQuestLegendary = <function> defined @Interface/AddOns/Immersion/Interface.lua:214
QuestIsFromAreaTrigger = <function> defined @Interface/AddOns/Immersion/Interface.lua:99
SelectActiveQuest = <function> defined @Interface/AddOns/Immersion/Interface.lua:308
SelectGossipActiveQuest = <function> defined @Interface/AddOns/Immersion/Interface.lua:324
GetCreatureID = <function> defined @Interface/AddOns/Immersion/Interface.lua:370
GetNumGossipActiveQuests = <function> defined @Interface/AddOns/Immersion/Interface.lua:253
GetNumQuestItems = <function> defined @Interface/AddOns/Immersion/Interface.lua:191
GetAvailableQuestInfo = <function> defined @Interface/AddOns/Immersion/Interface.lua:207
GetNumRewardSpells = <function> defined @Interface/AddOns/Immersion/Interface.lua:183
MapGossipOptions = <function> defined @Interface/AddOns/Immersion/Interface.lua:56
GetGossipOptionIterator = <function> defined @Interface/AddOns/Immersion/Interface.lua:18
GetRewardText = <function> defined @Interface/AddOns/Immersion/Interface.lua:83
GetRewardXP = <function> defined @Interface/AddOns/Immersion/Interface.lua:167
GetActiveQuestIterator = <function> defined @Interface/AddOns/Immersion/Interface.lua:19
MapGossipAvailableQuests = <function> defined @Interface/AddOns/Immersion/Interface.lua:31
GetProgressText = <function> defined @Interface/AddOns/Immersion/Interface.lua:79
GetNamePlateForUnit = <function> defined @Interface/AddOns/Immersion/Interface.lua:366
SelectAvailableQuest = <function> defined @Interface/AddOns/Immersion/Interface.lua:314
GetAvailableQuestIterator = <function> defined @Interface/AddOns/Immersion/Interface.lua:20
GetNumActiveQuests = <function> defined @Interface/AddOns/Immersion/Interface.lua:299
IsCharacterNewlyBoosted = <function> defined @Interface/AddOns/Immersion/Interface.lua:358
GetQuestItemInfoLootType = <function> defined @Interface/AddOns/Immersion/Interface.lua:385
GetQuestMoneyToGet = <function> defined @Interface/AddOns/Immersion/Interface.lua:195
GetSuperTrackedQuestID = <function> defined @Interface/AddOns/Immersion/Interface.lua:203
GetNumGossipOptions = <function> defined @Interface/AddOns/Immersion/Interface.lua:258
GetRewardMoney = <function> defined @Interface/AddOns/Immersion/Interface.lua:159
GetRewardArtifactXP = <function> defined @Interface/AddOns/Immersion/Interface.lua:171
GetFriendshipReputation = <function> defined @Interface/AddOns/Immersion/Interface.lua:337
GetRewardHonor = <function> defined @Interface/AddOns/Immersion/Interface.lua:175
GetQuestIconActive = <function> defined @Interface/AddOns/Immersion/Interface.lua:124
GetUnitName = <function> defined @Interface/AddOns/Immersion/Interface.lua:333
GetMaxRewardCurrencies = <function> defined @Interface/AddOns/Immersion/Interface.lua:187
GetNumQuestCurrencies = <function> defined @Interface/AddOns/Immersion/Interface.lua:199
QuestIsFromAdventureMap = <function> defined @Interface/AddOns/Immersion/Interface.lua:95
SetGradient = <fu
Is there a way to integrate the flightmap into the immersion addon? its nice that the gossip is in the addon but when talking to a flight master it feels kinda unimmersed.
Message: Interface\AddOns\Immersion\Logic\Logic.lua:522: Action[SetPoint] failed because[SetPoint would result in anchor family connection]: attempted from: :SetPoint.
Time: Mon Sep 26 20:52:25 2022
Count: 1
Stack: Interface\AddOns\Immersion\Logic\Logic.lua:522: Action[SetPoint] failed because[SetPoint would result in anchor family connection]: attempted from: :SetPoint.
[string "=[C]"]: in function SetPoint' [string "@Interface\AddOns\Immersion\Logic\Logic.lua"]:522: in function
SetOffset'
[string "@interface\AddOns\Immersion\Logic\Logic.lua"]:546: in function SetExtraOffset' [string "@Interface\AddOns\Immersion\Logic\Logic.lua"]:197: in function
UpdateTalkingHead'
[string "@interface\AddOns\Immersion\Logic\Logic.lua"]:141: in function HandleGossipOpenEvent' [string "@Interface\AddOns\Immersion\Logic\Events.lua"]:7: in function
?'
[string "@interface\AddOns\Immersion\Logic\Logic.lua"]:12: in function <Interface\AddOns\Immersion\Logic\Logic.lua:8>
Locals: (*temporary) = {
0 =
OnLeave = defined @interface\AddOns\Immersion\Logic\Logic.lua:587
Elements = {
}
ProgressionBar = {
}
OnLeftClick = defined @interface\AddOns\Immersion\Logic\Logic.lua:625
extraY = 0
BackgroundFrame = {
}
offsetX = 3.199402
lastEvent = "GOSSIP_CLOSED"
OnDragStart = defined @interface\AddOns\Immersion\Logic\Logic.lua:591
OnClick = defined @interface\AddOns\Immersion\Logic\Logic.lua:651
SetOffset = defined @interface\AddOns\Immersion\Logic\Logic.lua:502
ReputationBar = {
}
UpdateNameplateAnchor = defined @interface\AddOns\Immersion\Logic\Logic.lua:549
OnDragStop = defined @interface\AddOns\Immersion\Logic\Logic.lua:596
offsetY = 321.445374
MainFrame = {
}
OnEnter = defined @interface\AddOns\Immersion\Logic\Logic.lua:572
TextFrame = {
}
Undim = defined @interface\AddOns\Immersion\Logic\Logic.lua:679
PortraitFrame = {
}
NameFrame = {
}
Hilite = {
}
Dim = defined @interface\AddOns\Immersion\Logic\Logic.lua:675
SetExtraOffset = defined @interface\AddOns\Immersion\Logic\Logic.lua:541
}
(*temporary) = "Bottom"
(*temporary) = UIParent {
variablesLoaded = true
0 =
firstTimeLoaded = 1
fadeInfo =
I was trying to use Immersion with the new default gamepad support for Dragonflight and I could not figure out a way to assign a button to the next / accept keybinding.
I will likely try out ConsolePort once it's available, and I see it seems to have some integration with Immersion as well, but it would be great if Immersion worked standalone.
when I turn in a quest I can't read the final text because the next quest is automatically accepted and the text for that quest replaces the old text immediately.
is there a way to avoid this?
thanks for the help! 👍
While questing today, I noticed that some quest-writers at Blizzard employ ellipses with spaces between the periods. The addon interprets these as individual sentences and they come through as segments to click through in-game. Example quests:
http://www.wowhead.com/quest=26683/look-to-the-stars
http://www.wowhead.com/quest=26684/the-insane-ghoul
I've never worked with Lua scripting or WoW addons before (I'm primarily a Javascript developer), but I absolutely love this addon and so I thought I'd take a crack at it and maybe do something useful. I've submitted a pull request that replaces these "spaced ellipses" with normal ones.
I've tested it on my game client and it seems to work as intended. I'm not sure this is the way you would prefer to go about it, but there it is. Thank you for your work on this Addon! It's wonderful.
This only works once after each reload!
It would be amazing if we could disable the addon from activating when looting a quest item. Instead allow me to click on the notification in the quest list if I want to obscure my screen with the dialogue.
Working through the Suramar quest lines and when speaking to the nightborn that still have a thirst for ancient mana I get the below error.
Message: ...terface/AddOns/AddOnSkins/Skins/AddOns/Immersion.lua:37: attempt to call method 'GetFriendshipReputation' (a nil value)
Time: Mon Oct 31 08:50:53 2022
Count: 1
Stack: ...terface/AddOns/AddOnSkins/Skins/AddOns/Immersion.lua:37: attempt to call method 'GetFriendshipReputation' (a nil value)
[string "=[C]"]: in function GetFriendshipReputation' [string "@Interface/AddOns/AddOnSkins/Skins/AddOns/Immersion.lua"]:37: in function <...terface/AddOns/AddOnSkins/Skins/AddOns/Immersion.lua:36> [string "=[C]"]: in function
Show'
[string "@Interface/AddOns/Immersion/Logic/Frame.lua"]:359: in function PlayIntro' [string "@Interface/AddOns/Immersion/Logic/Frame.lua"]:142: in function
HandleGossipOpenEvent'
[string "@Interface/AddOns/Immersion/Logic/Events.lua"]:7: in function `?'
[string "@Interface/AddOns/Immersion/Logic/Frame.lua"]:11: in function <Interface/AddOns/Immersion/Logic/Frame.lua:7>
Locals:
Will you consider adding an option to the quest UI that'll allow you to automatically equip the selected quest reward upon completion? This would be a great quality of life improvement—especially for those of whom play with console controllers.
If you're not sure what I mean, AutoEquipQuestItem is an example of an addon that adds this functionality to Blizzard's quest frame.
Morning, Sorry I don't know what the correct format is to use for your reports, but reporting this for my partner. She is using the option in the add-on's options to hide the interface when talking to people/things, generally speaking, it has cut down all the distractions around and lets us focus on the questing stuff.
The problem is when this option is enabled, you aren't able to interact with workbenches like the Tailor's Work Table. When the interface opens up it is hidden and you can't view the profession screen that should have popped up. The workaround is to turn off this setting each time we go in to use the table and reenable the setting afterwards.
Don't really have any screenshots or other technical information to put in here. Otherwise love the addon <3
NPCs will often start talking/animating right after a quest is turned in and a new one is started.
Depending on where the Immersion UI is placed, it will obscure the NPCs and their chat bubbles.
It would be nice if holding a configurable modifier key like Alt or Control would temporarily hide the Immersion frame until the key is released.
In 10.1 they added a new icon texture to show on the addon list page, and to activate it you just have to put a line in the .toc file as such:
## IconTexture: Interface\Icons\<icon>
Without such a line, the addon shows a question mark icon, which is less than ideal. It would be great if the Immersion icon was added to the toc so it could show in game.
Thanks!
At the moment, Immersion sets SetIgnoreParentAlpha(true) to the selected frames (Minimap, MinimapCluster, ObjectiveTrackerFrame) on load. But other addons may want to fade these frames together with ParentUI in other situations than NPC interaction.
So it would be best, if Immersion would only set SetIgnoreParentAlpha(true) during NPC interaction and restore it to the previous state when the NPC interaction is over.
1x [ADDON_ACTION_BLOCKED] AddOn 'Immersion' tried to call the protected function 'ImmersionFrame:SetPropagateKeyboardInput()'.
[string "@!BugGrabber/BugGrabber.lua"]:485: in function <!BugGrabber/BugGrabber.lua:485>
[string "=[C]"]: in function `SetPropagateKeyboardInput'
[string "@Immersion/Logic/Frame.lua"]:433: in function <Immersion/Logic/Frame.lua:406>
Locals:
_ = Frame {
RegisterEvent = <function> defined @!BugGrabber/BugGrabber.lua:491
0 = <userdata>
UnregisterEvent = <function> defined @!BugGrabber/BugGrabber.lua:491
SetScript = <function> defined @!BugGrabber/BugGrabber.lua:491
}
event = "ADDON_ACTION_BLOCKED"
events = <table> {
ADDON_ACTION_BLOCKED = <function> defined @!BugGrabber/BugGrabber.lua:557
ADDON_ACTION_FORBIDDEN = <function> defined @!BugGrabber/BugGrabber.lua:557
PLAYER_LOGIN = <function> defined @!BugGrabber/BugGrabber.lua:551
LUA_WARNING = <function> defined @!BugGrabber/BugGrabber.lua:566
ADDON_LOADED = <function> defined @!BugGrabber/BugGrabber.lua:511
}
Let me preface this by saying how grateful myself and the rest of the users of this addon are for its development and support over these past many years. With that said, I was hoping to inquire about the future of this project moving forward. Over the past months, development seems to have dwindled to just TOC bumps with each new patch, with there being minor API breakages that have gone unaddressed with 10.1.5 and 10.2.0. Likewise, new issues and PRs have have gone unanswered, in which case I'd appreciate some clarity if there is any intention to review them and/or merge any current or future PRs before I spend any more time working on them.
If you have lost interest or no longer have the time to maintain this project, I totally understand and empathise. And if that is the case, I'd ask if you would consider allowing others, like myself, to assist in the maintainership and longevity of this project. This addon is important to quite a lot of people, and I would hate to see if fall to rot. Likewise, the current license on this project is quite restrictive, meaning no one would be able to fork this project and continue it onwards in your absence or without your express permission.
Nevertheless, Immersion is still in very good shape (aside from the aforementioned minor API breakages), so this is more of a proactive offer than a reactive plea.
Thanks again,
-Britt
By Nightborne spies I mean the last section of the dungeon in which you have to reveal a Demon by gathering clues. When talking to individual citizens to reveal them, that's when nothing happens.
Ever since 10.0.7 started, I've been unable to interact with them. The option appears, but when clicking it, nothing happens. Until today I disabled Immersion out of curiosity and I was able to do it.
There's no LUA error thrown or anything, it just won't work, I have no idea why.
Sorry for not providing more specific info.
Since prepatch unable to use keybinds to open up vendors. Used to be able to click on a vendor and then hit space to open up the vendor tab. now it just simply closes the chat box as if i hit close.
1x [ADDON_ACTION_BLOCKED] AddOn 'Immersion' tried to call the protected function 'ImmersionFrame:SetPropagateKeyboardInput()'.
[string "@!BugGrabber/BugGrabber.lua"]:481: in function <!BugGrabber/BugGrabber.lua:481>
[string "=[C]"]: in function `SetPropagateKeyboardInput'
[string "@Immersion/Logic/Frame.lua"]:433: in function <Immersion/Logic/Frame.lua:406>
Locals:
_ = Frame {
RegisterEvent = <function> defined @!BugGrabber/BugGrabber.lua:487
0 = <userdata>
UnregisterEvent = <function> defined @!BugGrabber/BugGrabber.lua:487
SetScript = <function> defined @!BugGrabber/BugGrabber.lua:487
}
event = "ADDON_ACTION_BLOCKED"
events = <table> {
ADDON_ACTION_BLOCKED = <function> defined @!BugGrabber/BugGrabber.lua:553
ADDON_ACTION_FORBIDDEN = <function> defined @!BugGrabber/BugGrabber.lua:553
PLAYER_LOGIN = <function> defined @!BugGrabber/BugGrabber.lua:547
LUA_WARNING = <function> defined @!BugGrabber/BugGrabber.lua:562
ADDON_LOADED = <function> defined @!BugGrabber/BugGrabber.lua:507
}
It would be awesome if I could update this addon via WoWUp. There are multiple avenues of approach--
You could upload this on the addon provider Wago which would provide a revenue stream; see: https://addons.wago.io/
Adding releases to this repository will also make it compatible with WoWUp via the "Install by GitHub url" feature.
An example .zip file structure is available on the information page for WoWUpHub found here: https://wowup.io/guide/wowup/hub
For an example of the assets in a release, see this addon that is compatible with updates from WoWUp: https://github.com/Tercioo/Plater-Nameplates/releases
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.