Utilizador:The Nerevarine/Fast Access
Índice
Fast Access
Fast Access Tools and Links for my convenience
General
The Elder Scrolls Online (ESO)
Vendors
Vendor | Type | Area | City/Dungeon/Cave | Location | Quest (if Q rel.) |
---|---|---|---|---|---|
Tractus Salutio | Mystic | Auridon | Skywatch | Mages Guild tower | |
Falindil (Skywatch) | Brewer | Auridon | Skywatch | harbour terrace | |
Inare | Clothier | Auridon | Skywatch | market | |
Qamtir | Chef | Auridon | Skywatch | outside town gate | |
Laanari | Stablemaster | Auridon | Skywatch | outside town gate | |
Melae | Pack Merchant | Auridon | Skywatch | market | |
Ranniel | Enchanter | Auridon | Skywatch | market | |
Miczen | Merchant | Auridon | Skywatch | Skywatch Manor | |
Coinclerk Endalle | Banker | Auridon | Skywatch | Skywatch Coinhouse | |
Coinclerk Camarelur | Banker | Auridon | Skywatch | Skywatch Coinhouse | |
Valtir | Brewer | Auridon | Skywatch | market | |
Irrki | Weaponsmith | Auridon | Skywatch | market | |
Ambre Leraud | Carpenter | Auridon | Skywatch | market | |
Aesril | Tailor | Auridon | Skywatch | market | |
Ulando | Armorer | Auridon | Skywatch | market | |
Calanor | Alchemist | Auridon | Skywatch | market | |
Dalodir | Woodworker | Auridon | Skywatch | market | |
Nilleth | Merchant | Auridon | Skywatch | market | |
Eranwen | Chef | Auridon | Skywatch | The Sleepy Eaglet | |
Celwen | Brewer | Auridon | Skywatch | The Sleepy Eaglet | |
Tuzil-dro | Blacksmith | Auridon | Skywatch | market | |
Fishmonger Kazra | Grocer | Auridon | Skywatch | harbour terrace | |
Caledeen | Innkeeper | Auridon | Skywatch | Barbed Hook Tavern | |
Selenor Illoro | Magus | Auridon | Skywatch | Mages Guild terrace | |
Nerassil the Bound | Enchanter | Auridon | Skywatch | Telenger's Emporium | |
Hazad | Chef | Auridon | Skywatch | Skywatch Manor | |
Vaford the Cynical | Armsman | Auridon | Skywatch | Fighters Guild terrace | |
Mazil-jo | Mystic | Auridon | Skywatch | market | |
Mazil-jo | Mystic | Auridon | Skywatch | market | |
Enthoras | Alchemist | Grahtwood | Wilderness | northwest of Elden Root | Rare Imports |
Alyxe | Alchemist | Grahtwood | Wilderness | east of Gil-Var-Delle Wayshrine | Rare Imports |
Heralbor | Chef | Grahtwood | Karthdar | south of Naeldil's House | |
Nithelin | Brewer | Grahtwood | Karthdar | at her tent between Spinner Family House and Treethane Rolon's House | |
Aranak | Merchant | Grahtwood | Karthdar | at his booth | Pact Advocate |
Enthonor | Alchemist | Grahtwood | Cormount | Enthonor's Effusions | Phantom Guilt |
Other NPC of Interest
NPC | Type | Area | City/Dungeon/Cave | Location | Quest (if Q rel.) |
---|---|---|---|---|---|
Soothsayer Erralle | Gimmick | Auridon | Skywatch | Mages Guild tower, upper floor | |
Gaireth | Quest related | Auridon | Skywatch | Mages Guild terrace | Take Me Home |
Has-Many-Legs | Quest related | Auridon | Skywatch | behind town gate | Assisting the Assistant |
Eldwen | Gimmick | Auridon | Skywatch | Telenger's Emporium | |
Wizard Nisira | Information | Auridon | Skywatch | at Ayleid ruin gate | |
Neetra | Quest related | Auridon | Skywatch | Mages Guild terrace | Assisting the Assistant |
Guide Culast | Information | Auridon | Skywatch | behind town gate | |
Jilan-dar | Quest related | Auridon | Toothmaul Gully | center cave | Well-Armed Savages |
Aranecarne | Quest related | Grahtwood | Redfur Trading Post | Redfur Trading Stalls | Rare Imports |
Mizahabi | Quest related | Grahtwood | Elden Root | Elden Root Temple | Until Death |
Ninglenel | Quest related | Grahtwood | Elden Root | Elden Root Temple | Until Death |
Eat Eat | Quest related | Grahtwood | Elden Root | Elden Root Temple | Until Death |
Named Usable Items
Name | Description | Quest | Set | Cat | Type | Subype | Arm Dmg | Lvl | Val | Enchantment | Perk Type | Perk Value |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Alyxe's Rancid Pants | Armor | Light | Legs | 59 | 20 | 30 | Adds 31 Max Magicka | Training | 7 | |||
Telacar's Sustaining Helm | Armor | Medium | Head | 85 | 20 | 25 | Adds 31 Max Stamina | Divines | 5 | |||
Brackenleaf's Bough | This bow is as light as it is deadly. It was made from wood freely given by Brackenleaf himself. | yes but name ? | Weapon | Two-Handed | Bow | 42 | 17 | 36 | Deals 12 Flame damage | Sharpened | 8 | |
Brackenleaf's Bough | A small note within this worn belt reads: "To Stibbons, for five years of entirely adequate service. -Laurent" | Armor | Heavy | Waist | 38 | 16 | 13 | Adds 12 Max Stamina | Well-Fitted | 2 | ||
Signet of the Warlock | Vestments of the Warlock | Jewlery | Ring | 17 | 22 | Arcane | 23 | |||||
Scales of the Dragon | Akaviri Dragonguard | Armor | Heavy | Chest | 102 | 17 | 27 | Adds 46 Max Health | Impenetrable | 70 | ||
Nindaeril's Tooth | This Tooth still has sinews attached to it and can fit around your neck. | Jewlery | Neck | 18 | bound | Adds 270 Poison Resistance | Healthy | 26 | ||||
Embrace of Shadows | Shrouded Armor | Armor | Medium | Chest | 85 | 17 | 27 | Adds 31 Max Stamina | Well-Fitted | 2 | ||
Crest of the Dragon | Akaviri Dragonguard | Armor | Heavy | Head | 86 | 16 | 22 | Adds 46 Max Health | Impenetrable | 70 | ||
Vinedusk Pauldrons | These pauldrons change color in the light. The iridescent gleam is reminiscent of a magical portal. | The Blacksap's Hold | Armor | Medium | Shoulders | 85 | 20 | 25 | Adds 13 Max Magicka | Infused | 11 | |
Orthelos' Torchstaff | This staff smolders brightly in the darkness. If kept alight for too long, the bearer begins to crave roasted acorns. | Storgh's Bow | Weapon | Two-Handed | Flame Staff | 47 | 20 | 40 | Deals 12 Flame damage | Powered | 35 | |
Scented Leathers | This distinctive but not unpleasant odor permeating this armor is said to repel fleshflies. | Until Death | Armor | Light | Chest | 66 | 19 | 28 | Adds 51 Max Health | Infused | 11 | |
Shagura's Staff of Zealous Fire | This staff is warm to the touch. | Weapon | Two-Handed | Flame Staff | 45 | 18 | Bound | Deals 14 Flame damage | Powered | 40 | ||
Signet of the Worm | Worn by the upper ranks of Mannimarco's followers, this simple ring is stained with necromantic fluids. | Castle of the Worm | Jewlery | Ring | 20 | 25 | Reduce magicka cost of spells by 9 | Arcane | 20 | |||
Dwemerdark Signet | A simple band made from Dwarfen metal, it bears incomprehensible runes in the Dwemeris tongue. | Jewlery | Ring | 15 | 22 | Adds 70 Armor | Robust | 23 | ||||
Artifact-Hunter's Band | Once worn by a treasure-hunter of Alik'r. Found amidst a pile of artifacts in an Elsweyr Troll fen. | Jewlery | Ring | 15 | 22 | Reduce magicka cost of spells by 7 | Arcane | 23 | ||||
Bloodshark's Cutlass | Brauti Bloodshark's cutlass is razor sharp. Several splotchy stains mar the blade itself. | Weapon | One-Handed | Sword | 40 | 16 | 22 | Increase yourPower by 6 for 5 seconds. | Weighted | 3 | ||
Ear of the Queen | There is a tiny etching of an ear on the back of this amulet. In dim light, the etching glows faintly. | Jewlery | Neck | 19 | 23 | Reduce cost of bash by 12 and reduce cost of blocking by 12 | Arcane | 26 | ||||
Pactbreaker | This axe's blade never dulls. Karthdar's citizens provided it to symbolically purge their town of items that offend the green. | Pact Advocate | Weapon | Two-Handed | Axe | 58 | 21 | 40 | Grants a 31 points Damage Shield for 5 seconds | Sharpened | 8 |
Sets
Name | Count | Items | Effect Name | Effect Description |
---|---|---|---|---|
Akaviri Dragonguard | 3 | Dragon Flames | Reduce Cost of Ultimate effects by 20% | |
Vestments of the Warlock | 3 | Magicka Flood | Once per minute, when below 33% Magicka, gain 252 Magicka. | |
Shrouded Armor | 3 | Blood Frenzy | Recover 136 health when activating an Ultimate ability. 15 seconds cooldown. |
ESO - XML logging
Schema Definitions
Schema definitions follow the data structures gained from the pubic part of the ESO API as close as possible.
Transformations
NPC Data
Originally I planned to provide the xslt files i used earlier to transform the xml files into a wikisyntax template. I realised that there would be much confusing explanation how to fill the gaps, when to remove what part, when a certain part would be inappropriate... and so on. So i wrote a small GUI tool to support that transformation and easy filling of the data gaps.
It is still highly beta (missing some "you have forgotten to.." and "you can't do that without..." checks), but used correctly it fulfills its task smoothly. Don't forget to read the README.txt. The software comes of course without any warranty and if you decide to use it, you do it on your own risk. Ah yes, and Java 7 will be required to run it. So if you still want to give it a try: The Nerevarines Tool Set (zip file, ~430 KB).
lua data acquisition (logger)
I decided for a modular approach, so the core framework handles the general events and has methods usable for all modules, while the modules take care of the data acquisition of their respective type. I have not figured out yet how to separate and dynamically load the modules from different files with that clumsy script "language". so the first module and the core comes together in one lua script:
the xml file
<GuiXml> <Controls> <TopLevelControl name="The Nerevarine's Tool Set" hidden="true" movable="true"> <OnUpdate> TNTS.onUpdate() </OnUpdate> </TopLevelControl> </Controls> </GuiXml>
I admit, i have no clue if that above is really necessary or optimal for an AddOn without GUI elements, but it's what i got from the examples i looked at and it works, so... *shrug*
the txt file
## Title: The Nerevarine's Tool Set ## Author: The Nerevarine ## Version: 0.1 ## APIVersion: 100004 ## SavedVariables: tntsLog TNTS.lua TNTS.xml
the lua file
TNTS = { NPCM = {} } TNTS.NPCM.skippedNpcNames = { Familiar = true, Cat = true, Rat = true, Lizard = true, Mudcrab = true, Horse = true, Snake = true, Scorpion = true, Beetle = true, Fox = true, Goat = true, Chicken = true, Dog = true, Rabbit = true, Clannfear = true, Frog = true, Deer = true, Spider = true, Torchbug = true, Pig = true, Sheep = true, Cow = true, Butterfly = true, Squirrel = true, Centipede = true, Fleshflies = true, Monkey = true, Wasp = true, Honor = true, Scuttler = true, Scrib = true, ["Bantam Guar"] = true, ["Razak's Opus"] = true, ["Draft Horse"] = true, ["Light Horse"] = true, ["Restoring Twilight"] = true, ["Winged Twilight"] = true, ["Twilight Matriarch"] = true, ["Volatile Familiar"] = true, [""] = true } TNTS.NPCM.reactionTypeNames = { [UNIT_REACTION_DEFAULT] = "default", [UNIT_REACTION_INTERACT] = "interact", [UNIT_REACTION_DEAD] = "dead", [UNIT_REACTION_HOSTILE] = "hostile", [UNIT_REACTION_NEUTRAL] = "neutral", [UNIT_REACTION_FRIENDLY] = "friendly", [UNIT_REACTION_PLAYER_ALLY] = "pc ally", [UNIT_REACTION_NPC_ALLY] = "ally" } TNTS.NPCM.difficultyNames = { [MONSTER_DIFFICULTY_NONE] = "none", [MONSTER_DIFFICULTY_EASY] = "easy", [MONSTER_DIFFICULTY_NORMAL] = "normal", [MONSTER_DIFFICULTY_HARD] = "hard", [MONSTER_DIFFICULTY_DEADLY] = "deadly" } function TNTS.NPCM.onReticleTargetChanged(eventCode) if (not TNTS.loaded) then return end if (not IsUnitPlayer("reticleover")) then local name = GetUnitName("reticleover") if (not TNTS.NPCM.skippedNpcNames[name]) then local msg = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n" msg = msg .. "<npc xmlns=\"http://org.example.esologging/npc\"\n" msg = msg .. " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" msg = msg .. " xsi:schemaLocation=\"http://org.example.esologging/npc NPC.xsd\"\n" msg = msg .. " name=\"" .. name .. "\"\n" msg = msg .. " level=\"" .. GetUnitLevel("reticleover") .. "\"\n" local gender = GetUnitGender("reticleover") local genderName if (gender == 0) then genderName = "Neutrum" elseif (gender == 1) then genderName = "Female" elseif (gender == 2) then genderName = "Male" else genderName = gender end msg = msg .. " gender=\"" .. genderName .. "\"\n" msg = msg .. " difficulty=\"" .. TNTS.NPCM.difficultyNames[GetUnitDifficulty("reticleover")] .. "\"\n" msg = msg .. " reaction=\"" .. TNTS.NPCM.reactionTypeNames[GetUnitReaction("reticleover")] .. "\"\n" msg = msg .. " trader=\"" .. TNTS.toString(CanUnitTrade("reticleover")) .. "\"\n" msg = msg .. " attackable=\"" .. TNTS.toString(IsUnitAttackable("reticleover")) .. "\"\n" msg = msg .. " dead=\"" .. TNTS.toString(IsUnitDead("reticleover")) .. "\"\n" msg = msg .. " type=\"" .. GetUnitType("reticleover") .. "\"\n" local curH, maxH, effH = GetUnitPower("reticleover", POWERTYPE_HEALTH) msg = msg .. " health=\"" .. maxH .. "\"\n" local curM, maxM, effM = GetUnitPower("reticleover", POWERTYPE_MAGICKA) msg = msg .. " magicka=\"" .. maxM .. "\"\n" local curS, maxS, effS = GetUnitPower("reticleover", POWERTYPE_STAMINA) msg = msg .. " stamina=\"" .. maxS .. "\"\n" local follower = IsUnitFriendlyFollower("reticleover"); msg = msg .. " follower=\"" .. TNTS.toString(follower) .. "\">\n" local caption = GetUnitCaption("reticleover") if (caption and caption ~= "") then msg = msg .. " <caption>" .. TNTS.xmlEscape(caption) .. "</caption>\n" end local rawName = GetRawUnitName("reticleover") if (rawName and rawName ~= "") then msg = msg .. " <raw>" .. TNTS.xmlEscape(rawName) .. "</raw>\n" end local class = GetUnitClass("reticleover") msg = msg .. " <class id=\"" .. GetUnitClassId("reticleover") .. "\"" if (class and class ~= "") then msg = msg .. ">" .. TNTS.xmlEscape(class) .. "</class>\n" else msg = msg .. " />\n" end local zone = GetUnitZone("reticleover") if (zone and zone ~= "") then msg = msg .. " <zone>" .. TNTS.xmlEscape(zone) .. "</zone>\n" end local location = GetPlayerLocationName() if (location and location ~= "") then msg = msg .. " <location>" .. TNTS.xmlEscape(location) .. "</location>\n" end local drowntime = GetUnitDrownTime("reticleover") if (drowntime) then msg = msg .. " <drowntime>" .. TNTS.xmlEscape(drowntime) .. "</drowntime>\n" end local race = GetUnitRace("reticleover") if (race and race ~= "") then msg = msg .. " <race>" .. TNTS.xmlEscape(race) .. "</race>\n" end local title = GetUnitTitle("reticleover") if (title and title ~= "") then msg = msg .. " <title>" .. TNTS.xmlEscape(title) .. "</title>\n" end msg = msg .. "</npc>\n" local save = savedVars["TNTS"] if (not save.NPCM) then save.NPCM = {} end if (not save.NPCM[name]) then save.NPCM[name] = msg savedVars["TNTS"] = save end end end end function TNTS.NPCM.onPlayerActivated ( ... ) EVENT_MANAGER:RegisterForEvent ( "NPCModule" , EVENT_RETICLE_TARGET_CHANGED , TNTS.NPCM.onReticleTargetChanged ) end -- The Nerevarine's Tool Set core -- TNTS.loaded = false function TNTS.toString(boolVal) local stringVal = "false" if (boolVal) then stringVal = "true" end return stringVal end function TNTS.xmlEscape (text) local result = string.gsub(text,"&","&") result = string.gsub(result,"<","<") return string.gsub(result,">",">") end function TNTS.onPlayerActivated ( ... ) if (TNTS.loaded) then return end TNTS.NPCM.onPlayerActivated() TNTS.loaded = true end function TNTS.NPCM.onUpdate () if ( not AFAisLoaded ) then return end end function TNTS.onAddonLoaded ( eventCode , addonName ) if ( addonName ~= "TNTS" ) then return end local default = { TNTS = {}} savedVars = ZO_SavedVars:New("tntsLog", 1, nil, default, nil) end EVENT_MANAGER:RegisterForEvent ( "TNTS" , EVENT_ADD_ON_LOADED , TNTS.onAddonLoaded ) EVENT_MANAGER:RegisterForEvent ( "TNTS" , EVENT_PLAYER_ACTIVATED , TNTS.onPlayerActivated )