Daggerfall Unity

File information

Last updated

Original upload

Created by

jefetienne

Uploaded by

jefetienne

Virus scan

Safe to use

Tags for this mod

About this mod

Modernizes gameplay with first-person tooltips that display information about NPCs, buildings, doors, items and other interactable objects upon hovering over them.

Permissions and credits
Translations
  • English
World Tooltips
Updated 1/26/2022, v1.1 (DFU 0.13.4)


One of the most taken-for-granted features of any first-person video game has now arrived to Iliac Bay. This mod adds first-person tooltips that display information about interactable objects upon hovering over it, in a style that is partly influenced by Morrowind. Since writing and using this mod, I can't even go back to playing Daggerfall without it — it feels almost as if the mod is missing from the base game.



What's New in 1.1:

  • Fix tooltip centering for different aspect ratios and resolutions
  • Fix a bug tooltip doesn't show on some furniture like wardrobe and cupboard especially when hand painted model is installed (thanks CaptainRay1993!)
  • Show Palace open/close times



World Tooltips displays multiple pieces of information without needing to interact with it:
  • For friendly (non-hostile) and static NPCs, it will display their name
  • Static doors on named buildings will display information such as its name, lock level, and hours available (if closed). In fact, simply hovering over the door will discover the building for you without needing to go inside or switch to Info Mode. In dungeons, it will display the dungeon name on the exterior and the region or town name from the interior.
  • Single-dropped items will display its name, while ones with multiple items will be called "Loot Pile"
  • Corpses will display their names if they have inventory
  • Animated doors can display its lock level if it is locked
  • House containers that have storage will also be accompanied by their furniture name (named to the best of my ability)
  • Bulletin boards, ladders, levers, turnable wheels, bookshelves, and shop shelves are named
  • A non-exhaustive list of special quest items/objects are also named
  • Any other objects that are interactable will simply be named "<Interact>". If you feel this that this takes too much away from secret triggers (e.g. opening hidden doors, teleporting), you can disable this behavior in the mod settings.


My list may not be complete, and there might be other edge case interactables in some dungeons or in quests. If you find something that is interactable but isn't highlighted by a tooltip, or is named incorrectly, please let me know on the forums and I'll try and patch it.


NOTE:
  • A Lock Level of 0 is not a glitch but in fact a real value primarily found on city walls. The formula for door bashing is (25 - Lock Level)%. So a Lock Level of 0 means that you have a 25% chance to successfully open via bashing, and a Lock Level of 1 would mean a 24% chance.
  • This mod is English-centric and most of the objects have hardcoded English words. I unfortunately do not know of any other languages, but if I get enough demand and support for translation for some other languages I'll see if I can come up with a solution. The only ones that may be properly translated to your localization at the present time (but I have not tested this) would be unnamed mobile NPCs, their corpses, and generic items.

    -----------------------

    For modders:

    I have also implemented a simple way for you to add your own custom tooltips. It takes a System.Tuple that has a float for the tooltip distance (should be matched with the activation distance) and a function with the RaycastHit parameter and returns a string name for the tooltip. Make the function return null if the RaycastHit does not match your specifications. Here is an example that adds a tooltip over the terrain called "Terrain":


    ModManager.Instance.SendModMessage("World Tooltips", "RegisterCustomTooltip", new System.Tuple<float, Func<RaycastHit, string>>(
    PlayerActivate.DefaultActivationDistance,
    (hit) =>
    {
    if (hit.transform.name.Length > 16 && hit.transform.name.Contains("DaggerfallTerrain"))
    {
    return "Terrain";
    }
    return null;
    }
    ));

    You only need to add it once, so I recommend you put it in a Start method, an Init mod method, or in a constructor.