October Builds 0.10.9

Live Builds have been updated to version 0.10.9. This is primarily a bug-fix build, but a few new features have been added to the mix.

Edit: Builds have been updated to 0.10.10 to fix an intermittent issue with combat targeting.

World Data Overrides (Hazelnut)

This is a longer-term initiative empowering modders to edit and change the world itself by providing substitute game data on the fly. While this is still under development, substantial progress has been made and is available in Daggerfall Unity now. For an early example, the below crypt has a few customisations. I have copy-pasted Hazelnut’s words in the list below.

  • A third coffin – the centre one.
  • A fiery birdbath (or whatever you would call it) in the corridor outside the door.
  • A floating green pot which you can just see behind, a bit further down the corridor.
  • An Archaeologists sign! I needed to test new models would work, so just used the one provided by my guild mod.

 

This really is just the beginning. As work on this progresses, it will become more flexible and powerful. One such upcoming feature is the “worldupdate” quest action. Large mods can use this to trigger world changes from within quests. It’s exciting stuff! But please keep in mind this can take time to develop and iron out the bugs, and modders will need time to learn the systems and start producing content. Someday this will lead to mods like nothing we’ve seen to date.

If you’d like to start learning more about how this works, Hazelnut has an excellent primer here.

 

Interior Replacement (Uncanny_Valley)

This is complementary to Hazelnut’s work above. Uncanny_Valley has been working on a world editor and the ability for interior replacement. Here are a couple of examples Uncanny_Valley has created using his tools and recent changes to the core to generate custom interiors.

 

 

And if you haven’t seen them already, check out Uncanny_Valley’s New Locations and Skyshards mods. These adds new exterior locations and fun goals to the game not already present in game data.

 

Nature LOD Performance Improvements (Hazelnut)

Hazelnut has upgraded LOD handling for nature flats, resulting in substantial performance improvements to mods like Trees of Daggerfall by VMBlast. If you found this mod was too slow in the past, give it another look. With Hazelnut’s improvements, this mod now performs better than ever. Here are a few screens of VMBlast’s 3D trees (and several other mods) running. Screens are  courtesy of Kamer on the forums.

 

Fix “Water Everywhere” On Some GPUs (Pango)

If you have an AMD or integrated Intel GPU, you may have suffered from a shader precision issue that resulted in water tiles being display where they shouldn’t be. Thanks to Pango, the below issue has now been fixed and tilemap terrain should display perfectly on all capable GPUs.

 

Magic & Combat Targeting Review (Interkarma)

There have been a few persistent quirks with magic targeting for a while now. In this release, I’ve looked into how things were failing and tightened up some loose screws:

  • Slightly increased range of touch spells.
  • Slightly increased radius of area around target and area around caster spells.
  • Touch spells now use a sphere collider like weapons for easier aiming and more reliable contact.
  • Fixed bug where touch spells can collide with own missile object, resulting in a miss.
  • Fixed bug where touching caster and target colliders would result in a miss for touch spells.
  • Fixed bug where magnitude spells allowed two saving throws, resulting in damage sometimes being bypassed when not intended.
  • Player can now only release touch spells when a valid target is in range, like classic.
  • Reviewed damage mitigation prorate matches Daggerfall Chronicles and found prorate works as expected.
  • Slightly reduced radius of weapon sphere collider so you can attack enemies inside cages with less difficulty.

 

General Fixes & Improvements

Nystul

  • Fixes to residence name resolving for quest persons

Nash Muhandes

  • Trimmed all MIDI songs to loop seamlessly

UncannyValley

  • 3D props can now be rotated in X and Z
  • Ladders only set to interactive when setup as prop model (all vanilla ladders setup this way)
  • When replacing buildings, use original NameSeed, LocationID, and Sector values

TheLacus

  • Fix to Fade rendermode for billboards
  • Changed default mods directory for ModSettingsEditor
  • Support for asset injection from virtual mods
  • Store CurrentLevelUpSkill with save data to fix issue in loading screen mod
  • Support for mod changes to item templates
  • Fix precision issue with custom dungeon exit doors
  • Add IPlayerActivable interface for custom interactions
  • Fix importing books from disabled mods
  • Fix title and author of custom books
  • Improve handling of removed custom book
  • Fixes to random book creation
  • Do not use random price for custom books
  • Support for custom books now enabled by default – older installs will need to toggle on manually
  • Implement “addbook” console command
  • Check mod required version of Daggerfall Unity
  • Fix scale of custom escorting NPC faces
  • Improve support for mod presets
  • Support for live mod settings changes

JayH

  • Add possibility of quest NPC infighting (requires custom quest action)
  • Disable quest “A Mixup” as causing issues and requires further fixes
  • Prevent early assassins in Sx12 “The Emperor’s Courier”
  • Reduces legal rep penalty in K0C00Y06
  • Add safety check to K0C00Y05 when player rep too low
  • Fix stuck with dead body item from quests R0C11Y26 and R0C11Y28

Pango

  • Allow cancellation of Teleport (anchor/recall) spell
  • Smoother player movements by fixing math errors in smooth follower and unstick handling
  • Lowered stuck threshold so it doesn’t trigger while crouching
  • Improvements to video playing (stop in-game music, stop ambient sounds, hide mouse cursor)
  • Prevent accidental closure of vampire and lycantropy videos (must now use ESC to close)
  • Remove deprecated Legacy Deferred setting
  • Prevent closing bank window while inputting transfer amount
  • Do not delay quest create foe by one spawnInterval (created quest foes now spawn a bit sooner)
  • Fix missing word in A0C00Y14
  • Remove black background behind HUD spell icons
  • Raise event when teleporting out of dungeons to fix mods requiring this

Hazelnut

  • More houses are now offered for sale by banks
  • Fix inventory behaviour near exit
  • Ensure pitch is within limits
  • Allow ship availability to be defined by mods
  • Expose horse animaton frame index for mods
  • Fix gender filtering for social quests
  • Implement “add_all_equip” console command to add all equipable items
  • Allow vanilla guilds to be overriden by mods
  • Fix custom activations to work with replaced meshes
  • Add region and location cache for when not playing in editor
  • Implement UIWindowFactory to allow mods to provide new implementations of UI windows
  • Fix gold rewards for non-guild NPCs with faction IDs
  • Fix ship purchasing popup window
  • Fix identify spell popup window

Ferital

  • Fixes to interior block data reading
  • Fixes to rumour mill involving multiple factions in one rumour
  • Fix factions becoming own enemy
  • Fix Malacath summoning quest name
  • Fix circular dependencies for Thieves Guild and Dark Brotherhood preventing garbage collection
  • Expand %g3 macro when asking for work
  • Clear all guild affiliations when loading or starting a new game
  • Don’t display quality message when entering Thieves Guild or Dark Brotherhood safehouses
  • Boost jumping skill that was missing for lycanthrope characters
  • Fix PC greeting text for first question
  • Filter houses for sale from questor locations
  • Fix %qdt macro expansion

Numidium

  • Fix dungeon micromap rendering incorrectly in some large dungeons
  • Increase dungeon micromap texture size

JorisVanEijden

  • Fix enemy point-blank ranged attack and reduce minimum range
  • Fix player catching breath when loading underwater save
  • Fix crosshair when moving travel map using arrows
  • Allow individual Daedra in quests
  • Fix index out bounds exception
  • Fix mismatch between quest pool and quest picker listbox
  • Fix two quests decompiled incorrectly by TEMPLATE
  • Add cleanup for quests not selected in quest picker
  • Fix “named” version of “anyInfo”

Tolbell

  • Fix typos in game settings

Arcane21

  • Grammar and typo fixes to item templates and quests

Interkarma

  • Fix instant death of lycanthropy cure
  • Fix legacy “place npc at” site link reservation pulluting marker pool
  • Implement “clear_negativelegalrep” console command to zero out negative legal rep and clear banishments
  • Don’t use events to progress vampirism and lycanthropy (fixes another case of multiple dreams and spell instances)
  • SoulBound enchantment now supports Azura’s Star
  • Open random spawn chance formulas to modders

 

For more frequent updates on Daggerfall Unity, follow me on Twitter @gav_clayton.

September Builds 0.10.6

Live Builds have been updated with version 0.10.6. This release patches a massive number of bugs, and we still made time for some new features. I’ll provide a quick summary of the major stuff first.

Quest Lists (Hazelnut)

If you enable setting Advanced > Enhancements > Guild quest player selection, then guild quest-givers will offer multiple quests at a time, rather than needing to keep clicking “no” until you see a quest you like.

 

Quests will rotate every so often to give you a fresh selection to choose from. This feature also has thanks to Firebrand who entered all the quest display names.

 

Quest Marker Refactor (Interkarma)

Quest markers are an invisible scene object onto which quests will associate various targets (NPCs, Items, Foes). From 0.10.6, Daggerfall Unity is using a new process for placing quest resources to markers that fixes a couple problems and helps the game behave more like classic.

One major issue resolved by this was introduced when DFU added the facility to move quest resources between locations. An example of this is Barenziah’s Book, which moves the target from Orsinium to Scourg Barrow if the player does not retrieve it in time. Due to an error in the resource culling code, it could sometimes remove items from other quests that used the same symbol name. For example, if the quest wanted to place/relocate an item with the symbol name _item_, it would also cull items from other executing quests that had already placed an item also using the same symbol name _item_. The quest most commonly affected by this was the Wayrest Painting.

I recommend everyone update as soon as possible to get this fix. While it was a fairly rare bug and required a specific set of circumstances, it was a showstopper if you were affected by it.

The second issue resolved by this was to make marker selection more like classic. DFU would place items to Quest Item markers and NPCs/foes to Quest Spawn markers. But sometimes a quest foe needs to be placed on an item, or an item placed onto an NPC. Classic will stack subsequent resource placements onto the first, such as the item’s guardian in screenshot below. With the new marker selection, both item and guardian will appear together as they should.

 

When loading a save game from prior to 0.10.6, DFU will migrate any marker placements to the new system automatically. This works even if you’re in the target location. Any new quest will just use the new marker system by default.

 

SDF Font Refactor & Book Reader Refactor (Interkarma)

The first implementation of SDF fonts would stretch each glyph to occupy the same physical space as the classic glyph. While this made the fonts smoother, it still had some major limitations:

  1. SDF text was stretched or squished to occupy the same physical space as its classic counterpart.
  2. SDF text was limited to using the same character type as classic, namely ASCII, which greatly limits translation support.
  3. SDF text inherited the same bad layout as classic text in places like books.
  4. Creating SDF fonts was a difficult process.

Fixing all of the above is a key part of future translation support. There’s no point in having translated text if the game is unable to render it properly. So a general rework of SDF fonts was required.

The first major change from 0.10.6 is that DFU uses a UTF32 code format internally for all SDF text. Unlike ASCII, you can throw pretty much any text at it, and provided the font has glyphs for those codes it will be rendered correctly in-game. This also means you can create SDF font atlases with thousands of characters rather than being limited to 256 for ASCII. And translators will be able to write text in their actual language rather than entering gibberish using the high-range areas of ASCII code space.

The second change is how SDF fonts are created. Rather than using external tools, you can use the TextMesh Pro font asset creator and DFU can load these assets directly. Note that DFU is currently being compiled under Unity 2018.2.x, so TMP 1.3 is still in use. DFU also does not use TMP for font rendering, as we have a very custom UI setup including fonts, but it can use these TMP font assets. I’ll post an updated article soon showing how to create new fonts and mod them in-game. Any old font mods will no longer work in DFU.

The third change is to how text is laid out on screen. DFU will no longer stretch text to match classic scale and use the actual font’s true proportions at all times. This makes for better-looking and more readable text layouts all around. It might be an unwelcome change if you’ve become adapted to the old stretchy font, but SDF text really looks better now and is far more flexible. This whole process was an important step in breaking free of classic text limitations and enabling future translation support.

Finally, the way text is laid out needed to be reworked. We’ve all seen how classic books often have text scattered all over the place. I’ve completely rebuilt the book reader to use the new text setup and automatically layout book text. This makes 99% of books more readable than ever. And they now support any left-to-right language with the right font and text driving them. The book reader will be used to help pilot all the new translation features later in Alpha lifecycle.

Here’s a screenshot of the old book reader and new book reader for comparison. I’m using a book with bad formatting layout to show how the new reader overcomes this issue present in classic data.

 

You’ll notice right away the formatting is better, the text proportions are better, and the margins have been expanded to make the text easier to read. I have also changed the book reader to use a scrolling setup rather than a page flip, as I feel this makes text much easier to follow with the eye.

 

Fix Resistance Checks & Ranged Enemy Spellcasting (Interkarma)

A bug was preventing correct resistance checks, so a character who should be 100% immune to something (e.g. Paralysis) was still occasionally stricken by that during combat. I finally got to the bottom of that problem and have resolved it now. If you have true 100% resistance to something, this will now work 100% of the time.

Note that the bug/exploits of combining High Elf Immunity to Paralysis with Critical Weakness to Paralysis still results in an impaired resistance in DFU, and that Immunity to Magic will only cover the Magic element (i.e. Arcane) not make you immune to all magic. But the problems of true 100% resistance not being correctly regarded have now been solved. During the process, I also restored the “save vs spell” message when you resist something so that you know what happened.

Also during this process, I found the cause behind enemy spell casters no longer hurling ranged spell missiles at the player. This has been fixed now, so this little green guy is properly dangerous again.

 

Virtual Mods (TheLacus)

This is a behind the scenes change to help support mod authors build and test their mods. If you’re a mod author, start with TheLacus’ description of this change in the following Issue on GitHub.

The gist is this change helps mod authors test and debug their work before bundling it as a .dfmod for end users. This is really important stuff that helps make the game and its addons better for everyone longer term. Thank you TheLacus!

 

Travel Map Refactor (Interkarma)

Over time, the travel map could leak a lot of texture memory. And if you knew how to trigger it, you could spam this leak in a few minutes to bring your game right to chugging point. I believe this issue is behind some of the problems with poor performance on systems that should be able to handle DFU just fine. If you notice your performance drops after a few hours of gameplay, and that restarting the game fixes it, this was likely the reason.

 

I had to rewrite about 50% of the travel map UI to make this change. Everything should just look and work exactly like before, except faster and without the memory leaks. I have tested this extensively before release, but if you encounter any regressions with the travel map please let me know.

 

General Fixed & Improvements

Lots of fixes this time around, large and small. So many that I’m going to sort them by developer.

FrozenFish24

  • Add exclusive fullscreen option to settings.ini – will be added to startup UI once Unity upgraded to 2018.3 or later

Ferital

  • Fixes and refinements to NPC talk reactions
  • Tone button in talk window now remembers last setting
  • Fix activation issues for Sheogorath and similar NPCs
  • Remove generic factions from rumour mill
  • Add Order of the Raven faction to their guild halls
  • Guilds now display “guild closed” instead of “shop closed”

Nystul

  • Fix for answer rumours (answers to tell me about topic) being incorrect
  • Fix automap user notes disappearing after saving and loading
  • %di macro improvements and bug fixes
  • Several talk manager fixes when asking for directions
  • Fix for talk window exception after classic save import
  • Fix %di exception when player in same building as target NPC
  • NPCs now always know the answer when NPC asked about is in the same building

Jay_H

  • Enable more classic quests
  • Several more classic quest fixes
  • Rebalance spawn rates for household vermin cleanup quests
  • Add alertness messages for vermin quests so player knows they’re in right place
  • Add delay to Morgiah’s Wedding quest so player can read invitation
  • Fix some change notes being visible in quests
  • Fixes to Dark Brotherhood acceptance quest

TheLacus

  • Sort mods by load order at startup
  • Add console commands to create specific items
  • Mod configuration now stored in persistent data
  • Automatic cleanup of mod configuration folder
  • Upgrade support for book replacement
  • Handle exception when upgrading mod config
  • Fix issues with billboard custom scale
  • Support texture replacement for cloak interior

JorisVanEijden

  • Fix arrow blood splash position
  • Fix crash for %di getting direction without location
  • Add location reference to quest when location comes from a person
  • Fix HaveItem clearing target when item is gone and revert workaround
  • Show author as unknown for broken/missing books
  • Add CAV action door type for secret doors in caves
  • Add logging to quest item creation and add error feedback to logs
  • Expand range of NPCs considered to be local residents
  • Fixes to classic quests
  • Prevent vampire sun damage in prison
  • Picking up dropped quest item will reset “has dropped” flag
  • Fixes to lycanthropy max health degrade and health top-up after curing
  • Support for magic item subclass selection from quests

Eric Prokop

  • Fix fast travel to arrive at night for characters with sunlight damage trait

Pango

  • Don’t display Find button on world map first use
  • Fix selecting EQUIP when opening inventory explicitly
  • Visually clamp difficulty dagger to gauge limits
  • Don’t ground player when onboarding ship
  • Fix fog being displayed on automap
  • Add openpotionmaker console command
  • Fixes to proximity wagon access in dungeons
  • Adjust default keybind text in tutorial quest
  • Fixes to receiving armour from knightly orders
  • Harden timescale against negative values
  • Add missing sounds for journal, notebook, and book reader
  • Fix typo in classic quest
  • Workaround for “water everywhere” tilemap issue on lower-end hardware
  • Change activation click to use button up rather than button down to prevent input fallthrough into some UIs
  • Adjust falling damage to better match classic

Hazelnut

  • Allow paintings to be sold at pawn shops
  • Fix removing single ingredient from wagon during potion making
  • Add journal message when buying a house
  • Fixes to reputation propagation for single factions
  • Fix enchanted items being regarded as ingredients
  • Update NPC presence when rest dialog dismissed
  • Cart now moves at correct slower speed
  • Fix coin anim on inventory window
  • Adjust riding volume to match footsteps
  • Add some modding facilities for horse riding
  • Fix to horse fatness by reducing width 20% to better match classic
  • Fix direct stat mods not being cleared when no effect bundle active
  • Fix default action mode not selected when opening inventory outside of dungeons

Interkarma

  • Use permanent endurance during level-up formula, as live endurance might be affected by spells/diseases/etc.
  • Fix magic item repair not working when setting is enabled
  • Vampirism/Lycanthropy lifecycle fixes to prevent stacking dreams, spells, and accidental deletion of spells
  • Refresh equipped armour values after enchanting item
  • Fixes to cleaning up objects spawned to StreamingTarget
  • Fix for evaluating travel-to location from journal clicks, now only regards locations mentioned in text
  • Fix for quest residence names being marked incorrectly on map
  • Quest-killing exceptions are now logged in save data
  • DFU version is now stored in save info
  • Remove “unmutequestnpcs”, this was only to fix a specific quest bug and is no longer required
  • Add “summondaedra” console command
  • Implement Foe item queues to support item persistence when moving Foes between locations
  • Fix fog colour turning black after entering and exiting buildings
  • Heavy weather-based fog is now already white/gray rather than atmosphere coloured
  • Fix check preventing enemies from casting ranged spells at player
  • Fix “save vs spell” not being displayed for magnitude-based spells
  • Add cursor activation toggle (default key is Enter) as part of preparing for large HUD support
  • Use building fallback for local quest places
  • Remove hanging mode, as this feature is now discontinued by Meteoric Dragon
  • Add quest NPC automatic home fallback
  • Rework quest marker selection to better match classic
  • Implement “tele2qmarker” console command, this will replace both “tele2qitem” and “tele2qspawn”
  • Fix for entering duplex homes while selecting entry position
  • Fix compass and other HUD elements being shown at wrong size/position briefly during initial startup
  • Fix magic battle-axe animation ordering
  • Travel map refactor for performance and fix memory leaks

Daggerfall Unity Alpha Release

The first Daggerfall Unity alpha release is now available on Live Builds. Since announcing this a few days ago, I’ve been honestly overwhelmed by the well-wishes and positive feedback from you all. Thank you everyone for your support, it means so much for a project like this. Your kind words help me to come back each day with a fresh heart.

So what does the alpha milestone mean? For Daggerfall Unity, this means we are now at broad feature parity with classic Daggerfall. Not only is the game playable from start to end, but all the core gameplay systems from classic are implemented and available. Hitting alpha means that development will shift from adding new gameplay features to refinement and fixing bugs. There are also a few features unique to Daggerfall Unity that I’ve been saving for the alpha cycle. Check out the roadmap to see what’s coming up next.

In some ways alpha doesn’t feel like a big deal. We were almost there in June with only a single enchantment effect and a couple of artifact effects remaining. But emotionally I feel that reaching this point really is a huge milestone. It represents the final stages of development are here at long last.

 

What Happens Next?

We are now at the point where development becomes all about refinement and bug fixes. Sadly this means my regular monthly updates from the last year or so have come to an end. There are no more big exciting features like Vampirism or Enchanting to tear the wraps off each month. Now comes the hard work of patching logic errors, polishing systems, and gradually iterating over the game. This could mean a release every second month, or even multiple times a month. It just depends on the work being done and when I’m confident to release patches.

Once the final alpha targets have been reached, we’ll roll into beta. Only after a solid beta cycle will I be happy to call release milestone and 1.0. I don’t have a time-frame on this right now. I’d rather have an extended alpha/beta period and fix as many problems as possible than rush into release. But there’s no reason not to play now if you want to – the game is done. It’s just going to become more bug-free and polished as time progresses.

The cadence of development will change moving forwards as well, because the upcoming releases are more about quality than quantity. As the game reaches an increasingly stable state, and stewardship of Daggerfall Unity shifts from solely myself to the community at large, the amount of my personal time required on this project will start to wane.

As I get more free time at the tail-end of Daggerfall Unity, I’m going to spend that time working a new game. This won’t be another remake, it will be something original and a bit personal. I’ll reveal more on this once I’ve made enough progress, perhaps later in 2019. But don’t worry, I’m not going anywhere. I’ll still be involved in this community for years to come.

 

July New Features

So what’s new in this month’s release? There aren’t many new features as so much work has been completed already. But there are a couple of new things to play with.

Soul Bound Enchantment

 

Once you trap a soul, you can bind it to an item at the enchanting station. This allows you to add more positive effects to that item, but not without a cost! Certain souls will forcibly bind other effects, both positive and negative, to your item. And if your item break then the soul trapped within will be released to attack you. If it happens to be your weapon that just broke, you might find yourself in a spot of trouble.

 

 

Classic Quest Fixes (Jay_H)

For the last several months, community superstar Jay_H has been toiling over the classic quest scripts. He has managed to turn out hundreds of fixes and refinements to these quests, above and beyond any prior community fixes. He has corrected logic problems around quests ending and delivering rewards, and worked around many emulation issues caused by subtle differences in Daggerfall Unity’s quest engine compared to classic.

There’s no way to put all of this in a screenshot, or even adequately describe just how much work has gone into this. Questing in Daggerfall Unity is now a much better experience thanks to Jay’s substantial efforts.

That’s not to say everything is perfect yet – we still have a long way to go before all of classic’s quests are stable enough for 1.0. But this is a huge stride towards the finish line. Thank you Jay!

 

General Fixes & Improvements

As with every prior release, there’s a list of bug fixes and refinements that have gone into the game thanks to everyone involved.

  • Experimental support for custom books (TheLacus)
  • Allow import of spell icon packs from mods (TheLacus)
  • Fix texture import for bow (TheLacus)
  • Fix weapon image pixel bleeding (TheLacus)
  • Support for importing texture arrays as assets (TheLacus)
  • Fix AssetInjection option not saving correctly (TheLacus)
  • Fix issue with metallicgloss maps (TheLacus)
  • Fix ground alignment for loot with custom scale (TheLacus)
  • Fix bug with residance name not being resolved on info click (Nystul)
  • Fix broken exterior automap when starting from interior save (Nystul)
  • Fix for 1×1 town positioning in automap (Nystul)
  • Improve ambient sound volume and prevent sound stacking (Pango)
  • Improvements to automatic wagon access when near exit (Pango)
  • Refinements to location search algorithm (Pango)
  • Fix fast travel to ground level when elevation below player’s current height (Pango)
  • DaggerfallTilemapTextureArray shader improvements and cleanup (Pango)
  • Fix closing Use Magic Item when not intended (Hazelnut)
  • Fix for joining Thieves Guild and Dark Brotherhood regardless of intro quest failing (Hazelnut)
  • Restrict interior loot piles to Thieves Guild, Dark Brotherhood, and taverns (Hazelnut)
  • Fix for non-temple greeting messages (Hazelnut)
  • Change guttering effect on player torch from flicker to cosine effect (Hazelnut)
  • Fix macro %n gender in quests (Ferital)
  • Fix initial quicksave not working for quickload (Ferital)
  • Handle %bn macro in biographies (Ferital)
  • Enable random Khajiit name generation in character creation (Ferital)
  • Minor improvements to magic stocking, more fixes required (Interkarma)
  • Fix to import corrupted/unsupported spellbook as blank (Interkarma)
  • Added magic item repairs option to startup UI (Interkarma)
  • Illegal rest warning option to help prevent accidental rest in towns (Interkarma)
  • Clear escoring faces on a new game (Interkarma)
  • Fix regex issue with Item resource declaration (Interkarma)
  • Fixed table definition for Mehrune’s Razor (Interkarma)
  • Support for child face textures in quests (Interkarma)
  • CreateFoe support for msg id popup (Interkarma)
  • Fix RestrainFoe only working on first foe (Interkarma)
  • Fix legal reputation to be clamped between -100 to 100 (Interkarma)
  • Fix for “The Princess” and similar quest to display correct sprite gender (Interkarma)
  • Fix grounded collision check when starting rest while levitate active (Interkarma)
  • Allow proximity wagon access from any exit door (Interkarma)
  • Lycanthropy is now a free spell (Interkarma)
  • Implement Peron details macro, e.g. =npc_ might be “young lady in green” (Interkarma)
  • Fix shadow distance and quality being overwritten at runtime by pause menu details slider (Interkarma)
  • Fix three-day lycanthropy disease not being curable by temples or Cure Disease spell (Interkarma)

Change in 0.10.3 from 01-Aug-2019

  • Implement soul gem selling service (Hazelnut)
  • Default filtermode for loose files textures (TheLacus)
  • Player history window scroll with mouse wheel (TheLacus)
  • NPC reactions adjustment (Ferital)
  • Handle %nrn macro expansion (Ferital)
  • Workaround for N0B00Y16 “Open Chest” Mages Guild quest not completing (Jay_H)
  • Fix player reposition reverstion (Interkarma)

 

For more frequent updates on Daggerfall Unity, follow me on Twitter @gav_clayton.

June Builds – Map Upgrades, Retro Rendering, Crime Features, and More!

New Live Builds are now available, combining all our work for month of June. We managed to get a lot done this month, even making a break into 0.8 with new crime features. Let’s start breaking it all down.

Improved Travel Map Search (Pango)

Some of the randomly named locations across the Illiac Bay can be challenging to search for. Either the name is very long like “Bleeding Redeemer of Kynareth” or just plain weird like “Old Barbyvyra’s Farm”, and players would sometimes need to switch back and forth between quest log and map screens before they could perfectly enter enough of the location name for search to work.

Those days are over with Pango’s most welcome upgrade to search in the travel map. Now you can just enter any part of the name, you don’t even need to spell it quite right, and the search will find all the closest matching locations. Look what happens when I mangle “Old Barbyvyra’s Farm” to just “barbv”.

 

First hit is exactly what I’m searching for, along with a reasonable number of other matches. If you enter enough of the name perfectly like before, the location will be selected immediately without showing the above UI.

 

Improved Terrain Tilemap Shader (Pango)

My original tilemap shader had the limitation of not being able to mod ground textures. This was later upgraded by Nystul to use texture arrays to support replacement ground textures. This has now received another pass by Pango to improve mipmap blending and restore some detail back the ground when seen from a distance or an elevated position. In the comparison screenshot below, the left side is “before” and right side is “after”. Note how much more detail is present on the right. This looks even better with modded HD textures over the ground.

 

Pango has another terrain refinement on the way to reduce some cracking between tiles, but this code wasn’t ready at the time June builds were created. It will be included in July releases instead.

 

Interior Automap Upgrade (Nystul)

Nystul has done an amazing job of not only recreating the classic dungeon/interior automap but improving it in dozens of small ways that each incrementally improve the overall experience. This release sees more refinements that make the interior automap better than ever.

  • 3D view is now default (a highly requested change)
  • Tooltips updated to be shorter and clearer (should even fit 4:3 displays)
  • Beacons optimised with transparency added
  • Classic micromap has been added to help understand dungeon shape
  • Fixed a bug for interiors where the entrance door position was wrong

There’s also new stuff you can do with the automap now:

  • Add dungeon custom note nodes by double-clicking
  • Right double-click on user note marker deletes it
  • Right double-click on map geometry sets rotation pivot axis

 

When it comes to viewing information about the map, hover your mouse over the following to get more details:

  • User note markers reveals their attached note in the status bar (in the bottom of the automap window, see screenshot above)
  • Player position beacon, player marker, rotation pivot axis, exit beacon and marker reveal their purpose in status bar
  • Portal markers (e.g. red brick wall teleporter) will show connection between portal endpoints
  • Discovered portals will tell in the status bar if the portal is the entrance or exit endpoint (see blue line in screenshot below)

 

Finally, there are a few more settings in the INI to customise how the automap operates:

  • AutomapDisableMicroMap – True disables micro map display
  • AutomapRememberSliceLevel – True remembers slice level on map close/open
  • AutomapAlwaysMaxOutSliceLevel – True maxes out slice level (and making AutomapRememberSliceLevel having no effect)

 

Game Window Refinements (Interkarma)

I’ve had a several requests to make Daggerfall Unity fullscreen into a borderless window. This confused me, as fullscreen has always been a borderless window. I finally understood that what people were asking for was the borderless fullscreen window to be visible in background rather than auto-minimise when alt-tabbing away. I have changed this now so you can keep the borderless game window open in background while doing other stuff in front of it.

 

If you prefer to do things the other way around, you use Alt+Enter to toggle between fullscreen or windowed mode at runtime. You can even drag the window size around, but note this will be reset next time you launch the game. Set in startup UI or settings.ini to make it permanent.

 

Retro World Rendering (Interkarma)

There’s a wide range of Daggerfall Unity players from hard-core classicists all the way through to high-end upgraders. While the latter has been fairly well represented through the mod system, the former hasn’t been able to render the game in 320×200 without also suffering blurry visuals and text. Even though the game could technically render to 320×200 resolution, it would be presented with bilinear filtering at the player’s display resolution, resulting in an unpleasant blur. As Unity doesn’t let us control this final presentation filter, we had to work around it by rendering game to a secondary render texture then presenting this manually with a second camera.

To enable in startup settings, go to Advanced > Video and set Retro Rendering Mode to either Off, 320×200, or 640×400. This setting is Off by default. Once set to 320×200 or 640×400, the game world will be rendered at that resolution while UI remains at your set display resolution. This allows you to have smooth SDF fonts and modded UI textures while the world is nice and crunchy. Or you can disable SDF fonts (use Shift+F11 to toggle at runtime) and mods for an almost perfect 320×200 experience.

 

Now that you can control rendering resolution and presentation (display) resolution separately, those of you with monitors that can display 1600×1200 (e.g. 1920×1200 or UHD monitors) are able to have the best experience. The explanation is a little technical (this article covers in detail) but if you set things up like below, you’ll have the best retro experience possible:

  • Set game resolution to 1600×1200 (at startup resolution selection)
  • Enabled retro rendering for 320×200 or 640×400 (Advanced > Video > Retro Rendering Mode > 320×200 or 640×400)
  • Enable UI free scaling (Advanced > Interface > Free Scaling)

This will fix the extra w-i-d-e stretching you see on sprites when presenting to wide-screen displays. Depending on your display, you may get some pillarbox bars on either side to create the correct aspect on your monitor. I will soon update this topic on forums with updated retro settings for 0.8.

 

Details Slider (TheLacus)

From the pause UI, you can now adjust the details slider to change the quality settings used by rendering.

 

You can now also use “fullscreen” button to toggle between windowed and fullscreen mode. Note this will be reverted to work like classic once the larger quarter-screen HUD is implemented in Alpha.

 

Private Property Guard Response (Numidium)

If you steal from private property, and failed your pickpocket roll, you should expect to be visited by the city watch. These guys are not messing about!

 

Numidium has improved interior guard spawns so they always come in through the entrance door at ground level. Keep that in mind if buildings have an upstairs exit for a fast escape. Also note that if you break into a shop outside of hours, nobody is around and you won’t need to pass a pickpocket check to loot from private property.

Post-release note: Being arrested indoors has a “teleport to void” bug as of 0.8.2. Recommend fighting or running for now until this is fixed.

 

Faction NPC Greetings Now Match Classic (Ferital)

NPC greetings, particularly those related to guilds and non-joinable factions such as bards and merchants, have been matched to classic by Ferital. This involved a good amount of reverse engineering of classic to determine how those greetings were selected, not something I can capture in a screenshots alone.

 

 

Level-up Progress (Hazelnut)

Clicking on “Level” in your character sheet will now display a popup dialog showing your progress to next level based on skills gained this level.

 

Bow Drawback (Hazelnut)

By enabling setting in Advanced > Gameplay, bows will now work using drawback and release rather than single click to attack. Holding the attack button (right mouse button) will raise bow and releasing attack button again will loose the arrow. You can hold bow in drawback position for up to 10 seconds before your arm tires. If you click the left mouse button while bow is drawn back, it will also cancel drawback.

 

Dungeon Wagon Proximity Access (Hazelnut)

“Do you wish to access your wagon and stay in <dungeon>?” If you’re sick of that prompt, you can now just access your wagon provided you’re close enough to the exit. You can even disable the prompt completely in settings.ini using “DungeonExitWagonPrompt=False”.

 

New Paper Doll Renderer (Interkarma), Supports Texture Replacement (TheLacus)

This one is hard to show in screenshots, as by default it looks just like the old paper doll renderer. But under the hood, the paper doll renderer has been replaced completely from software drawing with no mod support to a GPU shader that supports texture replacement via the mod system.

Internally, the paper doll image is rendered to an 8x render texture (that is 8x the size of classic paper doll). For classic body and item images, this looks exactly the same when scaled back into position. But it’s actually a much larger image with loads more pixel density.

 

With support from TheLacus in the mod system, it’s now possible to replace equipment with HD textures. It even supports custom masking to paint out the areas where hair, etc. should be blocked by helmets.

 

You can also finely control scale and offset of replacement image using XML, in a similar way to changing other texture replacements. See the Textures modding documentation for more details.

 

Breaking & Entering (Interkarma)

Locked buildings now have variable lock strength. You’re no longer guaranteed to pick the lock every time.

 

Just like in classic, failing to pick the lock means you can’t retry until your lockpicking skill increases. This is cached on a per-building basis in discovery data. If you do succeed your lockpicking attempt, you’ll get a satisfying click as the door unlocks and you enter building.

If you do fail though, what other options do you have? You have been able to bash in exterior doors for a while, but now guards might be alerted from the noise. The chance of guards is lower than the chance of successfully bashing the door, but you won’t always be lucky. It’s like these guys have nothing better to do than wait around for you to cross a line.

 

The other change to breaking and entering is how the Open spell works. Just like with dungeon doors, your player level must meet or exceed the lock level. Whereas dungeon doors go from strength 1 to 20 (magical), building locks only go from 1-10. Higher quality buildings have a better lock strength than lower quality buildings.

 

More Artifact & Enchantment Effects

At this stage, it’s easier to say what hasn’t been finished. So here’s the entire TODO list for magic:

  • Soulbound enchantment
  • Lord’s Mail, Staff of Magnus need health regen payload
  • Skeleton’s Key needs support for magical locks

The Effect System Status page will reflect when these have been implemented.

 

General Fixes & Improvements

  • Mod system general cleanup and improvement (TheLacus)
  • Filter identical resolutions from setup UI (TheLacus)
  • Ensure emission maps are same size as albedo (TheLacus)
  • Improvements to pause window implementation (TheLacus)
  • Added OnPreFastTravel event for mods to capture (TheLacus)
  • Fix scale of modded daedra summoning window (TheLacus)
  • Opening automap no longer affects scene lighting (Nystul)
  • Fix automap save crash under some conditions (Nystul)
  • Fix “i’m at” setting correct location after searching (Hazelnut)
  • Implement %n, %vcn, %rn macros (Hazelnut)
  • Fix “no arrows” message when loading game while holding bow (Hazelnut)
  • Fix exception when no building discovered (Hazelnut)
  • Fix potion recipes added to loot and shelves to not show as “unknown” (Hazelnut)
  • Fix material applied to arrows in loot (Hazelnut)
  • Fix black background for negative reaction popup (Pango, Hazelnut, Ferital – seriously, all of them fixed this)
  • Expand serialization of social groups for effects (Numidium)
  • Add type inference to ScreenComponentCollection (pcbeard)
  • Improvements to transport manager (zaklaus)
  • Notebook file now cleaned up when deleting save (jbrod22)
  • Double-click no longer closes spell merchant window (Pango)
  • Display available money in spell merchant window (Pango)
  • Use ARGB for spell icon loading, fixes display of spell icons on some GPUs (Interkarma)
  • Fix crash casting identify inside dungeon (Interkarma)
  • Improvements to item effect equip/unequip responsiveness (Interkarma)
  • Show strong/weak armour modifiers in paper doll (Interkarma)
  • Make tilemap texture compatible with linear colour space, preparing for future change (Interkarma)
  • Fix daylight scale to animate by curve to more closely match classic (Interkarma)
  • Fix classic sky animation to animate by curve to more closely match classic (Interkarma)
  • Fix light transition at 5:59am to 6:00am with lower ambient light scales (Interkarma)
  • Reduced intensity of auto-torch by half (Interkarma)
  • Increased range of indirect light (Interkarma)
  • Slightly reduced noon peak ambient light (Interkarma)
  • Slightly increased interior ambient light (Interkarma)
  • Fix armour rating of Lord’s Mail and Ebony Mail, need to recreate item if already have one with 0 armour rating (Interkarma)
  • Reseed random before generating loot piles and quests (Interkarma)
  • Fix macro %g3, %pg3 to his/her instead of his/hers (Interkarma)
  • Place support for location name macro inside dungeons (Interkarma)
  • Effects can now modify attribute maximum (Interkarma)
  • Effects can now modify chance to hit (Interkarma)
  • DrainEffect magnitude changers now public for effects (Interkarma)
  • Play VID files from console, e.g. “playvid anim0000.vid” (Interkarma)
  • Implement CastSpellOnFoe quest action (Interkarma)
  • Humanoid quest Foes spawned now match Foe gender (Interkarma)
  • AddFace/DropFace quest actions now support humanoid Foes (Interkarma)
  • Calling “place item”, “place npc”, “place foe” to a different location will now remove live game object in scene (Interkarma)
  • Paralyzed enemies can no longer attack player if in range (Interkarma)
  • CastWhenStrikes must now land a blow for spell to trigger, misses no longer count (Interkarma)
  • Implement fallback for quest house types – if a specific house type cannot be found quest system will fallback to use any house (Interkarma)
  • Fixed issue where quest resources could still be duplicated in a scene (Interkarma)
  • Multiple self-cast spells from CastWhenUsed now supported (Interkarma)
  • Saving throw bypass (e.g. self cast from item) now applies to CastWhenUsed items, so player will not resist their own item casts (Interkarma)
  • Quest status now shows as “ended” instead of failed, as this could be confusing for quests with no actual success condition (Interkarma)
  • Physical world boundaries are now enforced so player cannot run of edge of world (Interkarma)
  • Removed console commands “clearmqstate” and “setmqstage” as these were for early development testing only (Interkarma)
  • Removed pre-alpha main quest option when starting a new game, main quest always starts now (Interkarma)
  • Fix house containers with books only stocking “First Scroll of Baan Dar” (Interkarma)
  • Exterior buildings now have lock strength, status text shown may not reflect difficulty at this time (Interkarma)
  • Open spell now requires player to meet or exceed level of exterior lock as with interior doors (Interkarma)
  • Fix effect costs of Pacify spell variants (Interkarma)

Update for bugs fixed in 0.8.6 released on 05 July:

  • Further refinements to tilemap shader (Pango)
  • Fix boozers talking like nobles (Ferital)
  • Fix save bugs with user note markers and teleporter markers in automap (Nystul)
  • Fix bug making exterior doors non-interactable (Interkarma)
  • Option to enable/disable mipmaps in retro mode – off by default for sharper low resolution textures (Interkarma)
  • Added option to disable exterior (sunlight) shadows (Interkarma)
  • Improved shadow distance settings for more performant interior/dungeon shadows (Interkarma)
  • Increased maximum of mouse look sensitivity to 8.0 (Interkarma)
  • Limit quest building auto-unlock to residences only (Interkarma)
  • Fixed player being hurled into void when arrested indoors (Interkarma)
  • Fixed characters with “no regen spell points” disadvantage recovering spell points during fast travel (Interkarma)
  • Increased volume of ambient sound effects (Interkarma)
  • Prevent swim-bobbing animation from continuing after levitating off water (Interkarma)
  • Player will stand up again when levitating off water (Interkarma)
  • Footstep sounds no longer play while levitating (Interkarma)
  • Will no longer crouch while levitating and touching ground (Interkarma)
  • Can now levitate while underwater swimming to remove encumbrance and fly underwater (Interkarma)
  • Additional state cleanup now performed when starting a new game or loading classic save (Interkarma)
  • Fix corrupt savetree record from preventing classic save import (Interkarma)

 

For more frequent updates on Daggerfall Unity, follow me on Twitter @gav_clayton.

May Builds – Lycanthropy

It’s almost the end of the month, which means a fresh round of Daggerfall Unity Live Builds. May comes bearing the full lycanthropy feature from curse through to cure. If you’re the kind of Daggerfall player who just loves to wolf out (or tusk out if you dig more on wereboars) then this update is for you! Note that some spoilers are below for how lycanthropy operates and the paths to curing or managing it.

Lycanthropy

If you tangle with a stray werewolf or wereboar while out adventuring, there’s a small chance (0.6%) that you will become inflicted by their same curse. Unlike other infections, this one will bypass your normal disease resistance unless you happen to already be a vampire or lycanthrope. On the first evening after infection, you will have a dream about a “man who is less than a man”.

If you see this dream, you have just three days to find a temple healer or cure yourself through magical means. If you let the disease run its course, you’ll be cursed to hunt the innocent once per month and will be forced to shapechange when either moon is full.

 

Attributes & Skills

It’s not all bad news though! As a lycanthrope, you receive a whopping +40 to your Strength, Agility, Endurance, and Speed. You also get a +30 increase to Swimming, Running, Stealth, Critical Strike, Climbing, and Hand-to-Hand combat. If your character was already an above-average fighter with their fists and feet, they are going to make a fearsome lycanthrope.

Let’s meet Koro, he’s a level 2 Nord Warrior who loves using his fists on everything. He just had the misfortune to encounter a werewolf not long after Privateer’s Hold and was lucky to escape with only a scrape or two. He had no idea what to make of that dream a few nights back, and now finds himself mysteriously stronger and faster than ever with some unusual cravings. In that last bar fight, he just about tore the pore sod in half. He chalks all this up to a healthy diet of Ale and Fowl at the Black Wolf tavern where he currently resides in Daggerfall city. Unfortunately, having only a 48 Intelligence, Koro is unable to appreciate the irony of his new situation.

Something else Koro doesn’t know is that he can’t get sick ever again. No disease can touch him now, although poisons are still a concern.

 

Full Moons

Two moons hang over Tamriel: Massar and Secunda. These have alternating cycles where a full moon rises once every couple of weeks. Unfortunately for Koro, and even moreso for the innocents of the Illiac Bay, his first full moon is several nights after developing full-blown lycanthropy. By this stage, he has started to suspect it wasn’t just the tavern food behind all of this. His suspicions are confirmed the night after meeting with Lady Brisienna elsewhere in Daggerfall, when he wakes up in the early morning hours with a whole new set of problems.

 

Koro flees into the night past some some very startled patrons. He won’t be returning to the Bat and Scorpion anytime soon. What’s worse is he’s hungry. Hungrier than he’s ever felt before. Fortunately, it’s late at night and nobody else is around. He makes a run for the woods beyond the edge of this small one-tavern town. After running wild for the next day, he’s able to return back to his normal self.

 

Urge to Kill

For the next few weeks, Koro manages his curse by staying away from populated areas during full moons. He even discovers he can bring on the change once per day using some innate magic he now possesses. To his amazement, his body is healed fully each time he shapechanges between forms. Perhaps this won’t be so bad after all. It just needs to be managed properly.

On the month anniversary of becoming cursed, Koro finds himself hungry again. So hungry it hurts. So hungry it feels like he’s about to die. Without having hunted the innocent even once, his curse has left him with only 4 health remaining. A giant rat would probably be enough to knock him over for good.

 

After battling his urges for weeks, Koro can bear it no longer. He has to hunt, every cell in his body demands it. He watches the innocent civilians going about their business for a while, then finally gives in to the hunt. It’s the only way to make himself whole again.

direct link to gfy

While fighting as a werewolf, Koro discovers that not only can he rip the city watch to shreds in moments, he’s completely immune their basic iron and steel weapons. Finally sated, he runs back into the wilderness again to rest and recover his lost health.

 

Accessing Inventory

Several weeks later, Koro is exploring a local dungeon when the change is forced upon him by a full moon. Bafflingly, he can’t reach his pockets. How has he never noticed this before?

 

After a bit of squinting and whimpering, he discovers that he can will himself back into humanoid form for a few moments before the moon forces him to change back into a wolf again. Just enough time to loot the body of that unlucky orc.

 

The Cure

Almost a year has passed since Koro found himself cursed to be a werewolf. In that time, he’s found an uneasy peace with his life. He enjoys being relentlessly powerful, but still feels guilt when he must hunt the innocent. He dreams of ending his curse. Then one day, he finds a letter in his pack that offers redemption or death. It seems word of his monstrous life has reached the ear of a lycanthrope hunter.

 

He seeks out the Order of Arkay in Burgmont where Koro is told that to cure his lycanthropy, he must pass the disease on to another.

 

Wanting an end to the bloodshed, Koro rejects that choice. What if the one he inflicts is even more blood-thirsty than himself? Gondywyr Hawkwing is relieved and offers him another, albeit a less likely, path.

 

The Witches of Glenmoril Coven

After a series of adventures, Koro finally locates the secretive witches of Glenmoril Coven in Ilessan Hills. They’re amused by his affliction, but not immediately helpful. They put him to work with some quests to further their own goals. Without many options left, Koro does his best to make them happy.

 

Path of Hircine

Koro discovers the Glenmoril witches can summon the Daedra Hircine on any day of the year. Hircine is known to be a patron of wild things, perhaps he can offer some solution? After gathering the exorbitant summoning fee, Koro watches as the crones perform the ritual. And he is blessed!

 

Koro follows the wishes of Hircine and comes into possession of the Hircine Ring. A powerful artifact that allows him to take control of his lycanthropy.

 

So long as the ring remains on his hand, Koro is no longer forced to change on each full moon and his hunger is suppressed. He can shapechange any time at will. He has all the benfits of his curse and none of the disadvantages. Not a bad outcome for one adventurer.

 

Path of Water

If Koro failed to summon Hircine, or could not afford the ritual, there is still another path. After running several quests for the witches, he is one day given a vial of Pure Water to transport to a regional Mages Guild. Did one of those crones wink when handing him that water?

 

While in transit with the Pure Water, Koro is beset upon by vampires, werewolves, and wereboars in great numbers. Why are they all so desperate for this vial? Thinking of his own affliction and that wink earlier, Koro takes a sip of the water. After a moment of dizziness, he finds his mind finally clear and to be mercifully cured of his lycanthropy.

 

Path of Blood

And what if Koro was a different kind of Nord? Right at the start, if he had taken the offer to pass on his curse for a cure. What would have become of him? If that road had been taken, it leads to a sickly child and a horrible choice. Perhaps even now, its not too late for him to turn away and find another way.

 

 

New Enchantments

 

Strengthens Armor / Weakens Armor

Strengthens Armor adds +5 to your armour class across all item slots. Does not stack with enchantments of this type on other items, or with Weakens Armor.

Weakens Armor reduces your armour class by -5 across all item slots. Does not stack with enchantments of this type on other items, or with Strengthens Armor.

 

Improves Talents

If you already have a special talent like Acute Hearing, Athleticism, or Adrenaline Rush, this enchantment will buff those gifts even further. Has no effect if you are not so gifted to start with.

 

Health Leech

This side-effect will cause you damage depending on the type:

  • Whenever used – You will be damaged every time you strike with a weapon or cast from an item so enchanted by this malady.
  • Unless used daily – You must strike with a weapon or cast from an item so enchanted once per day, or you will start taking damage every few minutes. This damage will occur even while trying to rest.
  • Unless used weekly – You must strike with a weapon or cast from an item so enchanted once per week, or you will start taking damage every few minutes. This damage will occur even while trying to rest.

 

Loan Improvements (Pango)

Any long-time Daggerfall player knows how to exploit loans from banks. You can go to any bank, ask for a huge amount of gold, then simply never pay it back. Incredibly, there are almost no consequences for doing this. We all know banks aren’t that friendly. Pango has taken the time to flesh out this feature somewhat to make it a bit easier to use and offer some minor consequences for defaulting on a loan.

First up, your loans can now be tracked at any time by clicking on your gold total on the Character Sheet (F5). This will show both your active bank accounts across regions in addition to any open loans.

 

You will also get quick reminders as the due date approaches.

 

If you default on your loan, the bank will first try to recover whatever is in your account. If they’re able to pay the loan back this way, then no other action is taken. But if you can’t repay your loan, the bank will never do business with you again and you will lose some reputation in the eyes of the law, you scoundrel.

 

There is also some talk of one day bounty hunters coming to recover your gold on behalf of the bank. While this remains mercifully unimplemented, it might be time to repay your loans before the banks start sending out heavily armed thugs.

 

General Fixes & Improvements

Thanks to everyone involved, we also have the usual round of bugs fixes and incremental refinements.

  • Fix issues with WallPropPositioner and ObjectPositioner (TheLacus)
  • Fixed scale of MASK04I0 (TheLacus)
  • Fixes to UV unpack algorithm (Ferital)
  • Exclude ship from UV processing (Ferital)
  • Fix escape navigation in custom character creator (Numidium)
  • Implement Skull of Corruption (Numidium)
  • Implement Ring of Namira (Numidium)
  • Weaken shadows under scattered light (Pango)
  • Banking improvements (Pango)
  • Fix head-dipping from projectiles (Pango)
  • Spell missiles hit sounds spatialization (Pango)
  • Fix argument out of range exception (Pango)
  • Fix unhandled map items (Hazelnut)
  • Handle %kno macro for quests (Hazelnut)
  • Implement holiday effect for Sun’s Rest (Hazelnut)
  • Implement holiday effects for free and half-price curing (Hazelnut)
  • Implement holiday effects for half price sales (Hazelnut)
  • Fix random spymaster NPCs to behave like non-guild (Hazelnut)
  • Vampire / lycanthrope spells now removed after cure (Interkarma)
  • Vampire / lycanthrope quests now terminated after cure (Interkarma)
  • MessageBox will wrap words rather than characters in most cases (Interkarma)
  • Remove black panel when buying spells (Interkarma)
  • Fix crash when trying to spawn guards before location loaded (Interkarma)
  • Fix dye handling for hand-to-hand weapon images (Interkarma)
  • Fix city watch having weapons above iron or steel (Interkarma)
  • NPCs are now more knowing and helpful when asked for directions, provided player is not a criminal and or scum (Interkarma)
  • Implement Hircine Ring (Interkarma)
  • Fix null exception in PlayerMotor (Interkarma)
  • Fix importing classic characters in a weakened state, e.g. saved while lycanthrope needs to kill (Interkarma)
  • Implement “were_sateme” console command (Interkarma)
  • Implement “were_cureme” console command (Interkarma)
  • Supposedly secret Thieves Guild and Dark Brotherhood buildings are no longer used for random quests (Interkarma)
  • Quest system will no longer use a building if already involved in another quest (Interkarma)
  • Quest system will no longer use a dungeon if already involved in another quest (Interkarma)
  • Quest system will now use a random fallback dungeon if desired type (e.g. “dungeon4”) is not found in region (Interkarma)
  • Custom magic enchantment data now serialized (Interkarma)
  • Fix comment handling in QRC block to allow dash “-” character in text blocks (Interkarma)
  • HideNpc now supports both “hide anNPC” and “hide npc anNPC” variants (Interkarma)
  • DestroyNpc now supports both “destroy anNPC” and “destroy npc anNPC” variants (Interkarma)
  • Overlapping action door in dungeons are now disabled, including action door overlapping exit position (Interkarma)
  • Fix HideNpc/DestroyNpc from being ignored when assigned at same time quest ends (Interkarma)
  • Holding down run key while standing still will no longer drain stamina (Interkarma)

 

For more frequent updates on Daggerfall Unity, follow me on Twitter @gav_clayton.

April Builds – Enchantment System

New live builds are now available for the month of April. This release brings a completed item maker UI along with an Enchantment system to drive it all behind the scenes. In this post, I’ll break down some of the new features around enchanting without going too deep into the technical side of things. If you’d like a more technical primer on magic in Daggerfall Unity check out the Magic & Effects Back-End post from last year.

If you have an existing character with “on equip” type enchantments, I recommend unequipping then equipping those magical items again after upgrading to latest version. This will ensure any of the old intermediate effects are deactivated and the new effects are activated correctly.

Item Maker UI

This is the front-end we’re all familiar with. It is here, through the magical power of menus, that new enchanted items are forged. Select your item, add some powers, balance them out with a few side-effects, and give the item a cool name. Then provided you have the gold, a new magic item with all your custom settings will be added to your inventory.

 

There’s not much more to say about the item maker. While it’s the main feature of this release, everything is fairly utilitarian and most of you are probably familiar with this UI from classic. I’ve just made a few tweaks like adding scroll bars and proper text clipping, and fixed a few minor bugs from classic. The really interesting stuff is what’s happening behind the item maker UI with the Enchantment system offering all these powers and side-effects for use.

I also want to thank Hazelnut for his earlier work on the item maker UI layout. I could just get stuck in to wiring everything up without the rather manual process of mapping out buttons and list boxes. It was great to skip that this time, so thank you Hazelnut!

 

Available Powers & Side Effects

You can use the Effect System Status roadmap page to see which effects have been implemented to date (enchantment powers and side-effects are listed about half-way down page). At time of writing, I’ve implemented 18 of 26 classic enchantments in time for April builds and I plan to complete these before end of May if possible.

Following are the power enchantments (positive effects) available at the item maker:

  • Cast When Used (related spells)
  • Cast When Held (related spells)
  • Cast When Strikes (related spells)
  • Extra Spell Points (during winter, spring, summer, fall, full moon, half moon, new moon, near undead, daedra, humanoids, animals)
  • Potent Vs (undead, daedra, humanoids, animals)
  • Regenerate Health (always, in sunlight, in darkness)
  • Vampiric Effect (at range, when strikes)
  • Increased Weight Allowance (25% additional, 50% additional)
  • Enhances Skills (related skills)
  • Repairs Objects
  • Absorbs Spells
  • Feather Weight
  • Good Rep With (commoners, merchants, scholars, nobility, underworld, all)

And the side-effect enchantments (negative effects) available are:

  • Item Deteriorates (all the time, in sunlight, in darkness)
  • User Takes Damage (in sunlight, in holy places)
  • Low Damage Vs (undead, daedra, humanoids, animals)
  • Extra Weight
  • Bad Rep With (commoners, merchants, scholars, nobility, underworld, all)

A lot of work and testing went into implementing these effects exactly like classic. In a few cases not enough information was available (e.g. Potent Vs / Low Damage Vs formulas) so a “best effort” was made to give these enchantments solid functionality based on their descriptions. These can easily be tuned later once correct formulas are known.

I have also matched classic in configuring enchantment properties. This covers adding the same effect more than once (some can, others cannot) and which effects exclude others (e.g. Potent Vs parameters exclude opposing Low Damage Vs).

 

Going Custom

As with other parts of Daggerfall Unity, the Enchantment system is flexible and extensible. Its not enough just to reproduce all the classic Daggerfall enchantments, the design must allow for creating new experiences via mods that could never exist in classic. This has been a key design of Magic & Effects from the start, and the Enchantment system is no different.

For those of you who like to play with the code and build code-driven mods, I’ve included a sample custom effect called “Mage Light” with this release. I won’t spend too many words on this now, because adding custom effects is still a work in progress. This crosses multiple systems and I still have some bugs to iron out. But if you’re interested in creating mods with new spell effects in the future, keep an eye on the following areas in code for an example to start from.

  • EntityEffectBroker.OnRegisterCustomEffects event – capture this event in your mod to register custom effects.
  • EntityEffectBroker.RegisterCustomEffectDemo() – shows the broad steps of registering a new effect with the magic system and exposing it to different services.
  • MageLight.cs – a sample effect designed to be non-trivial without being overly complex.

The Mage Light effect itself is nothing special. It just drops a coloured light around player based on which variant of the effect is used. It exposes five variants: Inferno, Rime, Venom, Storm, Arcane. The interesting part is how the code exposes the effect to the Spell Maker UI.

 

And a custom spell bundle to the spell merchant UI:

And to the item maker UI:

I almost have everything setup for custom effects to operate across all magic crafting stations and systems, but still have more to do. Custom spells don’t currently trigger from the enchantment system, and they don’t display their name correctly when using Info to examine an item. I’ll keep rounding this out as I can. If you’re interested in building custom effects, keep an eye on the above as it develops. Playing with the existing enchantment effects is also a great way to learn how the system operates behind the scenes.

There’s a lot more to the enchantment system than I can cover here, so let’s take a look at a couple of other changes this release.

 

Stuck Handling

You might have encountered a particular cave block with a sticky floor that traps the player. The problem here is bad geometry in the classic game data. A single-sided polygon is poking through the floor, and due to a quirk in Unity’s controller physics the player will become hopelessly trapped. This release now includes handling to automatically detect when player is stuck on this kind of low geometry and teleport them past it. Here’s an example of this in action after the handler determines player is stuck and kicks in to resolve. You’ll notice movement is not smooth while the handler teleports player forwards in small steps until they become unstuck, but it’s still better than the indignity of being welded to the floor.

 

Head Dipping

There are a few tight spots where the player capsule can’t move forwards because surrounding geometry is too low for capsule to pass. This doesn’t happen in classic Daggerfall as it doesn’t use modern physics, but it’s a problem in Daggerfall Unity. One example is the exit ramp in Sentinel Castle where player must crouch to get through the door. Taking inspiration from watching very tall people duck through doorways, the player capsule will now detect these kinds of spaces and dip lower for a moment to pass. This isn’t a crouch, only the player height is slightly lowered then restored to normal. There’s a momentary camera bounce as handler resolves between heights, but overall player can now smoothly pass this doorway and others like it.

 

General Fixes & Improvements

Every release has a good number of fixes and small improves to the game. Here’s what you’ll find in the April release.

  • Gold is now deducted when buying spells at spellmaker (Pango/Goodbadbugs)
  • Spellmaker checks for spellbook before purchasing spell (Pango)
  • HUD message scrolling speed adjusted when buffer very full (Pango)
  • Fix bug where animated vital changes continue after reload (Pango)
  • Can now sell horses and carts (Pango)
  • Fix modded wagon button reset (Pango)
  • Fix city gates not closing at night regression (Pango)
  • Fix mobile NPCs spawning in front of player (Pango)
  • Fix for building-to-building teleport into void (Pango)
  • Several improvements and fixes to AI pathfinding, combat, movement, and spellcasting (Allofich)
  • Code cleanup for classic update loop and talk manager (Allofich)
  • Improvements and cleanup to FaceWall (TheLacus)
  • Allow read-only flag for billboards (TheLacus)
  • Travel map support for custom overlays (TheLacus)
  • Support for mouse cursor override (TheLacus)
  • Make texture arrays with CopyTexture for improved performance (TheLacus)
  • Fixed scale of TELE00I0.IMG (TheLacus)
  • Ensure DaggerfallBillboard can still be found on modded loot piles (TheLacus)
  • More model UV fixes (Ferital)
  • Townsfolk NPC names now match classic (Ferital)
  • Use faction data for vampire clans (Ferital)
  • Fix ruler name generation (Ferital)
  • Can now set custom bonusPool on level-up using formula override (Interkarma)
  • Added “showitemmaker” console command to launch enchanting UI (Interkarma)
  • Broker can now register custom spell bundles for sale (Interkarma)
  • Added example custom effect MageLight and related spell bundle for future mod developers (Interkarma)
  • Increase radius of player capsule to prevent slipping through narrow openings (Interkarma)
  • Fix crouching capsule height and position camera inside crouched capsule to fix many clipping issues (Interkarma)
  • Don’t climb enemies or mobile action objects (Interkarma)
  • Reduce distance from door when exiting dungeons to fix sticking to angled geometry in some cases (Interkarma)
  • Interior transition now uses closest door, not just enter marker (Interkarma)
  • Spell missiles are now correctly parented and will not persist after reload (Interkarma)
  • Fix light/darkness powered magery conditional (Interkarma)
  • Migrated all intermediary enchantment and artifact effects to new enchantment system (Interkarma)
  • Fix “fastest” quality setting resulting in startup crash (Interkarma)

Update 6 May – Updated builds are now available with additional bug fixes for April release.

  • TextureReplacement: Emission maps for mobile billboards (TheLacus)
  • Custom render mode for static and mobile billboards (TheLacus)
  • Fix animated billboard materials (TheLacus)
  • Minor settings UI improvements (TheLacus)
  • More cleanup and fixes to enemy movement and AI (Allofich)
  • Match GoodRepWith/BadRepWith enchantment modifiers to classic (Allofich)
  • Randomize book quest rewards (Allofich)
  • Improve HUD text acceleration when buffer full (Pango)
  • Fix negative repair times when removing other repaired items (Pango)
  • Special infections (vampirism/lycanthropy) now bypass disease resistance correctly (Interkarma)
  • Fix NPC talk crash in Ilessan Hills (Interkarma)
  • Bonus to “where is” chance for town NPCs in smaller towns (Interkarma)
  • Fix accessory item not clearing magic animation (Interkarma)
  • Store shelves now stock magic items when appropriate, which also fixes non-stacking ruby bug (Interkarma)
  • Don’t use unsticking handling when player is paralyzed (Interkarma)
  • Fix checking for static geometry (Interkarma)

 

That’s it for April! The next system I’m building out is lycanthropy, so hopefully you’ll be chasing villagers with your werewolf or wereboar in a few weeks time. I’ll also keep working on enchantment system to complete remaining classic effects and wire up more support for custom enchantments.

 

For more frequent updates on Daggerfall Unity, follow me on Twitter @gav_clayton.