[Update TBA] The Ironman Module Pack

A curated forum for compatible and maintained mods. Users are unable to create new topics in this forum but can reply to existing topics. Please message a moderator to have your mod moved into this forum area.
Post Reply
DFIronman
Posts: 84
Joined: Sat Aug 24, 2019 12:48 am

[Update TBA] The Ironman Module Pack

Post by DFIronman »

The Ironman Module Pack v0.3.0 (NOT YET AVAILABLE)

Download at the Nexus


Read readme.txt for in-depth information on every feature, including formulas. All options are enabled by default.


NOTE: The Ironman game mode (perma-death/no reload) is ENTIRELY OPTIONAL as are virtually all changes in this mod pack. THIS MOD WILL NOT DELETE ANY SAVES UNLESS YOU ARE PLAYING AN IRONMAN CHARACTER. Any save under that character's name (and ONLY that character's name) will be deleted. All modules can be used independently of each other.


[Ironman]

Read the readme for more in-depth info, including formulas.
This game module allows you to OPTIONALLY play Daggerfall in "Ironman" mode. This is a perma-death/no reload game mode that requires the creation of a new character.

Do not reuse character names for Ironman characters. All saves under the Ironman character's name will be deleted when the Ironman character dies, including any saves under the Ironman character's name that are not Ironman saves.

OPTIONAL: Show Ironman Notice When Starting New Games
You will be prompted at the start of every NEW game (i.e. after character creation) to agree that you understand how the save deletion feature works for Ironman mode games.


[Ironman Crime Systems]

Read the readme for more in-depth info, including formulas
This game module supplies a number of gameplay options related to Daggerfall's crime system.
Information on each setting is listed below.

OPTIONAL: Enable New Crime and Court System
When enabled, the player can be charged with multiple crimes and multiple counts of crimes. Crimes are tracked by region, so you can be a saint in Wayrest and Sentinel's Most Wanted. This also adds support for automatic execution for lycanthropes who are arrested in beast form, and vampires (though vampires do have a chance at a fair trial). Lycanthropes who are arrested in human form and go to prison will attempt to break out during a full moon.

OPTIONAL: Enable New Shop Burglary System
When enabled, there is a persistent chance (based on luck and stealth) that you will trigger the guards when walking around a closed shop. Also, you can no longer freely loot the shelves as there's now a skill/stat check (pickpocket, luck, and agility) - but it's significantly easier to steal items when the shop is closed thanks to the luck and agility factor.

OPTIONAL: Enable New Loan System
When enabled, the max loan formula is upgraded to be based on a number of different factors. Additionally, if you own a home in the region you received the loan, banks will foreclose on it when you default on your loan. If the loan isn't fully paid off after that or if you did not own a home, bounty hunters will attempt to kill you until you pay off the loan or die.

OPTIONAL: Allow Execution As Punishment
When enabled, characters can be executed by the legal system.

OPTIONAL: Guards Can Confiscate Items By Region
Guards will confiscate any items from their region that were not successfully stolen (i.e. guards came when you stole the item, but you ran away) until a certain amount of time (based on the item's value and other factors) has passed.

OPTIONAL: Guards Can Be Better Equipped
If enabled, and the player is a vampire or a transformed lycanthrope, guards have a chance to spawn with a silver/elven/dwarven weapon (or no change at all). Guards will not spawn with silver/elven/dwarven bows/daggers/tantos.

OPTIONAL: Prevent Guard Pacification
Guards will be pacified momentarily, and then released from your implausible charms.

OPTIONAL: Can Surrender Once Identified
Guards no longer need to hit you in order to bring up the surrender prompt and lower your reputation score. Due to an engine limitation, this is forced on when "Enable New Crime and Court System" is enabled.


[Ironman Game Systems]

Read the readme for more in-depth info, including formulas.
This game module supplies a number of options that modify gameplay.
Information on each setting is listed below.

OPTIONAL: Disable Pausing
Gameplay will NEVER be paused outside of a Quest-generated message box (i.e. dialogue), the Court/Prison windows, and the Ironman message boxes at the start of the game.

OPTIONAL: Disable Quitting Near Enemies
Prevents you from quitting the game while enemies are nearby.

OPTIONAL: Disable Recalling Near Enemies
Prevents you from being able to recall while enemies are nearby. You will still be able to set an anchor.

OPTIONAL: Disable Transport Near Enemies
You will not be able to change your method of transport while on-foot if enemies are nearby. If enemies are nearby, and you are mounted, you may dismount; but you will not be able to mount a horse again until you're clear of any enemies.

OPTIONAL: Disable Resting On Horseback
Prevents you from resting while you're on horseback.

OPTIONAL: Can Fall Off Horse When Damaged
When enabled, there is a chance you will fall off of your horse when taking damage. This chance is based
on strength, willpower, agility, endurance, luck, and the number of nearby enemies who have you in sight.

OPTIONAL: Enemies Transition With You
Any non-quest enemy will follow you in and out of buildings and dungeons. In order for an enemy to transition with you, you must be that enemy's current target.

OPTIONAL: Use New Hand To Hand Formulas
When enabled, your hand-to-hand damage is based on your hand-to-hand skill level. You will also receive a bonus to-hit, based on skill level.

OPTIONAL: Use Material Checks in Hand To Hand
The material of your plate gauntlets will affect the kind of enemies you can hit. If you are not wearing PLATE gauntlets, you will hit with an "effective material" based on your hand-to-hand skill, expertise in hand-to-hand, and whether or not you're a transformed lycanthrope.

OPTIONAL: Fix Forbidden Weaponry Hand To Hand
With the "Forbidden Weaponry: Hand-to-Hand" disadvantage, you will do 0 damage when punching and kicking. Lycanthropy overrides this disadvantage in either human or beast form.

OPTIONAL: No Wereform Bonuses as Human
You will not receive any stat and skill bonuses from lycanthropy when in human form.

OPTIONAL: Prevent Casting in Wereform
If enabled, you will not be able to cast spells OR use magic items while transformed. When transformed, you will be asked if you want to transform back to human form when you attempt to open your spellbook or use a magic item.

OPTIONAL: Limit Number of Quests From Guilds
When enabled, there will be a finite number of quests that you can be offered from a specific guild BUILDING (not guild or npc) during a period of time. The pool of available quests is randomly reset every 1-7 days.

OPTIONAL: Nerf Ebony Dagger Question
At character generation, the ebony dagger option is replaced with a silver dagger.

OPTIONAL: Modify Critical Strike
Critical Strike no longer grants a to-hit bonus. It, instead, now has a chance to increase your damage by up to 2.0x with 100% Critical Strike skill (though, it will scale with higher Critical Strike, as well). Enemies with critical strike skill will benefit from this as well.


[Ironman Hotkeys]

Read the readme for more in-depth info, including formulas.
This game module adds the "Reuse Magic Item" feature and binding of spells and magic items to hotkeys.

Setting Hotkeys
Right-clicking on the name of a spell (in the spellbook) or magic item (in the use magic item window) will allow you to bind a hotkey to that spell or magic item. Don't bind hotkeys to keys that are already being used. If you do, both functions will be triggered.

Reuse Magic Item
Works pretty much the same way as Recast Spell (default: 'Q'). The default key is backlash ('\'), mostly because it's unlikely to be bound. Don't bind this to a key that's already being used by DFU. If you do, both functions will be triggered.

OPTIONAL: Hotkeys Cast Spells Immediately
If this option is enabled, whenever you press a spell hotkey, the associated spell will immediately be cast (or armed to cast). If disabled, pressing a spell hotkey will set the spell for "Recast Spell" (default: 'Q') to the hotkeyed spell.

OPTIONAL: Hotkeys Use Magic Items Immediately
If this option is enabled, whenever you press a magic item hotkey, the associated item will immediately be used (or armed to use). If this option is disabled, pressing a magic item hotkey will set the item for "Reuse Magic Item" (default: '\') to the hotkeyed magic item.

OPTIONAL KEY BINDING: Reuse Magic Item Key
Allows you to change the key binding of "Reuse Magic Item" - however, in this case, you will need to type in the name of the key you want to use in order to have DFU properly recognize it. Valid key names are included in the text file, "Key Codes for Binding.txt" and must be entered exactly as displayed (case-sensitive).

OPTIONAL: Mouse Wheel Scrolls Through Spell Hotkeys
When enabled, scrolling with the mousewheel will select the next spell in your hotkey list. When selected, your "Recast Spell" key will be assigned to the spell you chose via mousewheel scrolling.

OPTIONAL: Mouse Wheel Scrolls Through Magic Item Hotkeys
When enabled, scrolling with the mousewheel will select the next magic item in your hotkey list. When selected, your "Reuse Magic Item" key will be assigned to the magic item you chose via mousewheel scrolling.


- INSTALLATION -

Copy the contents of the folder matching your operating system (i.e. StandaloneWindows for Windows users) to your Daggerfall\DaggerfallUnity_Data\StreamingAssets\Mods folder.


- COMPATIBILITY -
  • For best results, put all Ironman mod files at the bottom of your mod list. Failure to do so may result in various features being overridden by other mods.
  • Will not work with Tedious Travel, however should work fine with Hazelnut's Travel Options mod

- FREQUENTLY ASKED QUESTIONS -

[FAQ - Ironman]

Q: Can I convert a previously-created character to an Ironman (perma-death/no reload) character?
A: No. A new character must be created to play an Ironman game.

Q: What if I want to play a non-Ironman game. Do I need to disable the mod?
A: No. When you start a new game, just select "No" when the mod asks if you want to play in Ironman mode.

Q: Will this mod affect my other saves?
A: It shouldn't, AS LONG AS YOU USE A FRESH CHARACTER NAME FOR IRONMAN GAMES.

Q: My game bugged out and I have a backup save that can correct the issue, but I can't load it. Help?
A: From the main menu, click Load Game, and then hold down the SHIFT key.

Q: I died and all saves under my character's name except for the "(Ironman) Start" save were deleted!
A: Ironman games are perma-death. IRONMAN CHARACTERS SHOULD NEVER USE THE SAME NAME AS ANOTHER CHARACTER.

Q: When I press my Quicksave key, I see the game has saved, but I don't see "Quicksave" in my saves list?
A: For Ironman games, "Quicksave" is renamed to "(Ironman) Quicksave"

Q: Why can't I delete the most-recent save for my Ironman character?
A: You must delete all other saves for the character before deleting its most-recent Ironman save.

Q: Why can't I delete my "(Ironman) Start" save?
A: All saves under the character's name must be deleted before you can delete the "(Ironman) Start" save.

Q: Why can't I save over my "(Ironman) Start" save?
A: Because it's your starting point. The start save only exists to save you time in character creation.

Q: Why can't I load my "(Ironman) Start" save?
A: You have a more recent save. All other saves for the character must be deleted first.

Q: Why can't I rename any of my Ironman-mode saves?
A: Renaming is disabled for Ironman save files.

Q: Why won't the load button on the in-game pause menu work in Ironman-mode?
A: You cannot load games (including quickloading) when playing an Ironman game.


[FAQ - Ironman Crime Systems]

Q: Are all options for Ironman Crime Systems enabled by default?
A: Yes. If you don't like an option introduced in a new version, you'll have to disable it manually.

Q: I have "Can Surrender Once Identified" enabled. How do guards "identify" me?
A: A guard will not be able to identify you unless they're fairly close to you and your back is not
FULLY turned to them. However, they will be able to identify you when your back is turned to them once
your legal reputation in the region is -10 or below. Helms or other facial coverings currently have no
effect on the guards' ability to identify you.

Q: I was in a shop after hours, and guards attacked me! I didn't steal anything, so why did this happen?
A: With "Modify Shop Burglary" enabled, there's always a chance that guards will attempt to arrest you
for Breaking & Entering. The chance to NOT have that happen is (((Luck * 2.5) / 5) + Stealth). With 50
Luck and 75 Stealth, guards will not come; and with 100 Luck and 50 Stealth, guards will not come. Any
sufficiently high combination of Luck and Stealth should ensure that you can browse the shop freely.

Q: A judge just sentenced me to be executed. How did that happen?
A: Among many other things, Ironman Crime Systems adds the option to be executed for certain crimes.

Q: Are my crimes tracked by region or globally?
A: By region. If you murder someone in Daggerfall, Wayrest won't know about it.

Q: I'm a vampire or a lycanthrope in wereform and most/all town guards are actually able to hurt me.
A: Yes, this is due to the "Guards Can Be Better Equipped" option. Disable it if you prefer.

Q: I stole an item in Wayrest and got arrested there. When I was released, the item was gone.
A: Guards can now confiscate stolen items. See the "Guards Can Confiscate Items By Region" section.

Q: My home is gone and my bank account has a lot more money in it. Yes, "Enable New Loan System" is on.
A: You must have let a loan in that region default. The bank foreclosed on your home. Don't default.


- CHANGELOG -

v0.3.0 (RELEASE DATE TBA) -

[Ironman]
  • Added a new option, "Show Ironman Notice When Starting New Games" - enabled, by default, you will now see a message every time you start a NEW character that explains how the Ironman save deletion feature works. This is to further assure users that their save files should be safe as long as they do not name Ironman characters the same as their other characters.
  • Moved the "Enable Execution in Normal Games" option to Ironman Crime Systems and renamed it to "Allow Execution As Punishment" - this option must be enabled for you to have the possibility of being executed by the legal system in Ironman-mode and regular games.
  • The prison sentence speed-up cheat key no longer works in Ironman-mode games.
  • Beautified the Ironman messages at the start of the game.
  • Updated to actually work with the latest version of DF Unity (v0.10.26) - sorry for the delay. A lot has changed in Daggerfall Unity and I've made a number of changes under the hood. Please let me know about any bugs ASAP as I should now have the time to fix them - at least in the near future.
[Ironman Crime Systems]
  • First release (some features were migrated from Ironman Game Systems)
  • Added the "Guards Can Be Better Equipped" option. When enabled, guards have a 75% chance to equip a silver (50%), elven (20%), or dwarven (5%) weapon if - and only if - the player is a lycanthrope or vampire.
  • Added the "Guards Can Confiscate Items By Region" option. When enabled, guards will confiscate any items that were reported as stolen from that region. An item is reported as stolen when you "fail" to steal it from a closed shop. Failing is when your stealing attempt alerts the guards and they come storming in after you. After a period of time, the item will no longer be on the guards' radar and you may be arrested without fear of losing it. Guards will not confiscate any items that you successfully stole from a shop during its open or closing hours. See the "Guards Can Confiscate Items By Region" section for more information. Thanks to 1964proof for suggestions while I was making this.
  • Added the "Enable New Crime and Court System" option. When enabled, you can be charged with multiple crimes and multiple counts of the same crime. There are many other changes as well. See below for the full list or read the "Ironman Crime Systems" section of the readme for more details. Thanks to Edelgard for the great suggestion.
  • With the new crime system enabled, guards will no longer ask you to surrender when they hit you. Instead, due to limitations, guards will ask you to surrender when they "identify" you, as with the "Can Surrender Once Identified" option. Guards can still arrest you after violently subduing you.
  • With the new crime system enabled, Theft has been added as a crime that the Thieves Guild can bribe your way out of. Surprisingly, this isn't in the base game? At least, not in Daggerfall Unity.
  • With the new crime system enabled, pleaing guilty to Execution or Banishment may reduce your potential sentence by one level. Execution would become Banishment and Banishment would become Imprisonment. The chance for this is as follows: Random((personality + luck + etiquette + streetwise) / 10, 100) >= 75. Characters with 100 in the stats and skills in that formula would have a minimum roll of 40 out of 100. Characters with 50 in those stats and skills would have a minimum roll of 20 out of 100. Lycanthropes in beast form and vampires who are not receiving a fair trial will not be able to plea down. Thanks to Edelgard for the suggestion.
  • With the new crime system enabled, if you have been infected by a vampire or a werewolf, you will undergo your transformation in prison. If you are a vampire, you will stop serving your sentence upon your death and wake up in a graveyard. If you are a lycanthrope, you may attempt to break out of prison during a full moon. See the "Enable New Crime and Court System" heading.
  • With the new crime system enabled, Lycanthropes in wereform and vampires who do not successfully roll to receive a fair trial will always be considered to be guilty of the crimes they're accused of.
  • With the new crime system enabled, Lycanthropes in wereform will always be executed if arrested in games with execution enabled. There is still a chance to survive your execution if you have the Avoid Death perk (Temple of Stendarr).
  • With the new crime system enabled, Vampires will (almost) always be executed if arrested. They do have a shot at a fair trial, based on their Personality and Luck stats, along with their combined Streetwise and Etiquette skills. See the "Enable New Crime and Court System" heading for more details. Thanks to Magicono43 for the fair trial idea.
  • With the new crime system enabled, Lycanthropes may now transform into their beast form while in prison during a full moon. When that happens, the lycanthrope will attempt to break out. If he succeeds, he will be banished from that location and suffer a massive reputation loss, in addition to being wanted for murder(s). If he fails in his escape, the lycanthrope will be killed during the escape attempt, excluding interference from the Avoid Death perk (Temple of Stendarr). See the "Enable New Crime and Court System" heading for more details.
  • With the new crime system enabled, The Thieves Guild and Dark Brotherhood will now only bribe in court when you plead Not Guilty. This change had to be made because if you have multiple crimes, it's very unclear as to which crime you are being found Not Guilty for. Classic Daggerfall has it where you don't even get a chance to see what crime you were arrested for, you just get the bribery message and sent back to the streets. Lycanthropes in beast form and Vampires will not benefit from bribery, except when a Vampire is receiving a fair trial.
  • Prison time now passes on a sliding scale (faster with more days on your sentence). At 730 days remaining in prison, you would serve a minute of real time. At one million days in prison, you'll serve about three minutes of imprisonment.
  • Holding the escape key while in prison will now make time pass much faster (a minimum of 10x faster). One million days in prison was served in about eight seconds on my computer.
  • Holding the escape key while in prison will no longer speed up your jail sentence when playing an Ironman mode game (the escape key trick still works for non-Ironman mode games).
  • Players who survive an execution (i.e. via the Avoid Death perk from the Temple of Stendarr) will now wake up in the nearest cemetery. If no cemetery could be found in the region, they will be outside of the town walls, where the guards will be searching for them.
  • When "Enable New Shop Burglary System" is enabled, you now have between 0-20 (luck/10 + agility/10) and 33 points added to your chance to succeed when attempting to rob a shop at night. Thanks to L57 for the suggestion.
  • When "Enable New Loan System" is enabled, the entire loan system is reworked. The loan formula is changed, banks will foreclose on your home (in their region) if you default on the loan, and they'll even send bounty hunters after you - relentlessly - until you die or pay back the loan. After 100 attempts on your life from bounty hunters sent by that region, they'll stop coming after you. See the heading on "Enable New Loan System" for in-depth information on how the new loan system works. Thanks to Ralzar for the suggestion about merchant reputation affecting the player's max loan and for suggesting I re-word the Loan Default bounty hunter messages a bit.
  • You will no longer be identified on sight by guards if you're a lycanthrope in wereform.
  • Renamed "Modify Shop Burglary" option to "Enable New Shop Burglary System"
  • Renamed "Modify Loan System" option to "Enable New Loan System"
  • Fixed a bug where you would not be identified on sight by guards if you did not also have the "Prevent Guard Pacification" option enabled.
[Ironman Game Systems]
  • Added the "Can Fall Off Horse When Damaged" setting. If enabled, there is a chance based on your strength, willpower, agility, endurance, luck, and number of enemies (who have you in sight) nearby for you to fall off of your horse when you take damage. There is always a 1% chance to fall off or stay on the horse when you take damage. See the section entitled, "Can Fall Off Horse When Damaged" for more specific info. Thanks to Lorex for the suggestion!
  • Added the "Use New Hand To Hand Formulas" setting. When enabled, your hand-to-hand damage is based
    on your hand-to-hand skill level. 0-19 = 0-1, 20-39 = 1-2, 40-49 = 2-3, 50-59 = 3-4, 60-69 = 4-5,
    70-79 = 5-6, 80-89 = 6-7, 90-99 = 7-8, 100-124 = 8-9, 125-149 = 9-10, 150-174 = 10-11, etc. Also,
    there is now an extra to-hit bonus when using hand-to-hand that is based on your skill level in the
    same way that damage is. At 100 hand-to-hand, you will have +24 to-hit (+8 to-hit with Magicono's PCO).
    At 400 hand-to-hand, without PCO, you'll have the same to-hit bonus as Daedric material (+60). This is
    because hand-to-hand is generally incredibly powerful thanks to its speed.
  • Only PLATE gloves and boots will be damaged when the player attacks using hand-to-hand combat as other
    kinds do not have a useful effect in combat.
  • Renamed "Use Armor Material in Hand To Hand" to "Use Material Checks in Hand To Hand"
  • When enabled, the "Use Material Checks in Hand to Hand" option will require you to either wear plate gloves of sufficient material or have sufficient hand-to-hand "pseudo-material level" in order to damage certain enemies (lycanthropes, vampire, imps, etc.). For example, if you have silver gauntlets equipped, you will be able to damaged werewolves. However, if you have chain, leather, or no gloves equipped, hand-to-hand material level will be based on your hand-to-hand skill (+1 for every 20 points), whether or not you have expertise in hand-to-hand (+1), and whether or not you're in wereform (+2). Thanks to Jeoshua for the skeleton of this idea (and for pointing out the issue to begin with).
  • Added "Fix Forbidden Weaponry Hand To Hand" option. When enabled, this option will make players who have the Forbidden Weaponry: Hand-to-Hand disadvantage do 0 damage with punches and kicks. However, a player who is a lycanthrope will not suffer that disadvantage unless their lycanthropy is cured.
  • Added "No Wereform Bonuses As Human" setting. When enabled, this setting will prevent you from receiving the stat and skill bonuses of being a lycanthrope unless you're in your wereform.
  • Added "Prevent Casting in Wereform" option. Enabled by default, this prevents you from casting while transformed and from reverting to human form during a full moon. When you attempt to use a magic item or your spellbook, you will be asked if you want to revert back to human form. If the one of the moons is full, you will have to wait until it begins to wane.
  • Added the "Limit Number Of Quests From Guilds" option. When enabled, you will be offered a limited number of quests from each guild BUILDING (not each guild). The number of quests depends on your rank, and the result of two random number rolls (effectively, 0-2 bonus quests). You will be able to receive new quests from that guild building between 1-7 days after requesting a quest from the guild. Finally, you will not be offered the same quest more than once until the 1-7 days passes - and you will never be offered the same quest twice in a row (from the same building), regardless of how much time passes. See the "Limit Number of Quests From Guilds" section for more info. Thanks to Ralzar for the suggestion, tajsmasher for helping me with some ideas, and to Hazelnut for the suggestion of preventing repeating quests.
  • Changed "Disable Recalling Near Enemies" so that you may now set an anchor while enemies are nearby. As expected, the teleport button will not function when you attempt to click it if enemies are nearby.
  • Removed "Always Use Classic Pacification" option.
  • Migrated the "Prevent Guard Pacification," "Can Surrender Once Identified," "Modify Shop Burglary," and "Modify Loan System" settings to Ironman Crime Systems. You will have to adjust them to your preference once again.
  • Added support for Hazelnut's Travel Options
  • Removed support for Tedious Travel (Tedious Travel didn't work so well with Disable Pausing)
  • If the "Enemies Transition with You" option is enabled, enemies will now transition with you if they have acquired you as a target. This means that even if an enemy doesn't see you, but can otherwise sense you, they may try to transition with you. This is necessary as it allows for the best effectiveness of the "Enemies Transition with You" option.
  • The transition state of enemies will now be saved when saving the game. Transitioning enemies will no longer totally disappear after reloading a saved game that has presently transitioning enemies.
  • Changed minimum enemy transition time to 1 second (for "Enemies Transition With You" setting).
  • Changed enemy transition interval formula. Not too easy to explain, but there's now a queue system where enemies will transition no less than 250ms after the last enemy to transition. An enemy's distance from you will now have more impact on how long it takes before they transition with you.
  • Updated to actually work with the latest version of DF Unity (v0.10.26) - sorry for the delay. A lot has changed in Daggerfall Unity and I've made a number of changes under the hood. Please let me know about any bugs ASAP as I should now have the time to fix them - at least in the near future.
[Ironman Hotkeys]
  • First release
  • Added right-click events to the Spellbook and Use Magic Item windows. When right-clicking on the name of a spell or magic item, you will be able to set a hotkey for the spell/magic item. Hotkeys are recorded in saved games and will not be remembered in past saved games (even on the same character).
  • Added the "Hotkeys Cast Spells Immediately" setting. If this is enabled, whenever you press a spell hotkey, the spell will cast (or be armed to cast in the case of targeted spells) immediately. If disabled, pressing a spell hotkey sets the spell for "Recast Spell" (default: 'Q') to the hotkeyed spell.
  • Added the "Hotkeys Use Magic Items Immediately" setting. If this is enabled, whenever you press a magic item hotkey, the magic item will be used (or be armed to use in the case of targeted enchantments) immediately. If disabled, pressing a magic item hotkey will set the "Reuse Magic Item" key (default: '\') to use the magic item associated with the hotkey.
  • Added "Reuse Magic Item" - the key for this can be bound in the mod settings menu. Additionally, you may use modifiers (ALT/CMD/CTRL/SHIFT) to activate the chosen hotkey. You'll have to type the key in the textbox in order to get the game to recognize which key you want to bind "Reuse Magic Item" to. A list of key names recognizable by Unity are in "Key Codes for Binding.txt" - YOU MUST TYPE OUT THE KEYCODE NAME OF THE KEY IN ORDER TO GET IT TO PROPERLY WORK. In other words, '\' will need to be entered in the textbox as 'Backslash' and not as '\' - or the key won't work. Do not select a key that is already being used in-game, even if you are using modifiers for your hotkey. If you do, Daggerfall Unity will activate both, the function normally associated with the key and "Reuse Magic Item" - and nobody wants that.
  • Added the "Mouse Wheel Scrolls Through Spell Hotkeys" setting. When enabled, scrolling the mousewheel
    will select the next spell in your hotkey list. When selected, your "Recast Spell" key will be assigned
    to the spell you chose via mousewheel scrolling. Thanks to Kokytos for suggesting I use more immersive
    wording for scrolling through spell hotkeys.
  • Added the "Mouse Wheel Scrolls Through Magic Item Hotkeys" setting. When enabled, scrolling the
    mousewheel will select the next magic item in your hotkey list. When selected, your "Reuse Magic Item"
    key will be assigned to the spell you chose via mousewheel scrolling. Thanks to Kokytos for suggesting
    I use more immersive wording for scrolling through magic item hotkeys.
  • Included "Key Codes for Binding.txt" with the module pack, for a quick reference on keys that are available to bind in the "Reuse Magic Item" textbox.
v0.2.4 (12/09/19) -

[Ironman]
  • You may no longer delete the most recent save of an Ironman game, unless the only remaining save would be the "(Ironman) Start" save. Deleting the most recent save may only be done from the Load menu.
[Ironman Game Systems]
  • Upgraded the "Enemies Transition With You" setting. Now, enemies will only transition with you if you are their current target AND they can see you (including you being in their line-of-sight). Also, the speed at which enemies transition with you is now based on how far they were from you when you transitioned. The minimum transition time for an enemy is half of a second. Finally, enemies will transition at a point near where you were when you transitioned, instead of transitioning on top of you.
  • Changed the "Disable Pausing" setting to allow the game to pause during Quest-generated message boxes. This will allow you to read what quest enemies are saying to you instead of getting an instant beatdown. This change is experimental and other message boxes may pause the game, but I tried a bunch and couldn't find any in the base version of DF Unity. Message boxes from mods - depending on how they're created - may end up pausing the game.

v0.2.3 (10/26/19) -

[Ironman]
  • Made compatible with 0.10.8+ release. The mod does not use the new UIFactory yet - that will be for a future version. This should have no effect on your playing experience.
[Ironman Game Systems]
  • Made compatible with 0.10.8+ release. The mod does not use the new UIFactory yet - that will be for a future version. This should have no effect on your playing experience.
  • Class-based enemies who use hand-to-hand can now experience degradation on their gauntlets/boots when appropriate (as the player would) IF the "Use Armor Material In Hand to Hand" setting is enabled.
  • Enemies will now transition with you out of a location if you try to recall, but cancel the attempt (or anchor) if you have the "Enemies Transition With You" setting enabled. Enemies should not transition with you if you recall away.
  • Enemies now transition with you out of dungeons/buildings a little faster. Also, enemy transitioning is a bit more reliable.
  • Fixed a bug where you would not be allowed to recall near enemies regardless of what you had the "Disable Recalling Near Enemies" setting set to.
  • Removed some Tedious Travel interaction (disabling weather particles, but stopping when disease incubation is over still remains).

v0.2.2 (10/14/19) -

[Ironman Game Systems]
  • Made disabling "Enemies Transition With You" actually prevent enemies from chasing you in/out of buildings and dungeons. Whoops.

v0.2.1 (10/14/19) -

[Ironman]
  • Updated Ironman to work with the renaming of the "Disable Exiting Near Enemies" setting in IGS.
[Ironman Game Systems]
  • Renamed "Disable Exiting Near Enemies" to "Disable Quitting Near Enemies" for clarification. If you had this setting previously disabled, you will need to disable it again.
  • Added the "Enemies Transition With You" setting. When enabled, this will allow any and all enemies (except for enemies added by a quest) to follow you in and out of dungeons and buildings. This is compatible with Persistent Dungeons in that enemies will not be duplicated during the transition.
  • Gloves and boots will now take damage when using them in Hand-to-Hand combat IF the setting for "Use Armor Material In Hand to Hand" is enabled. Since they can already take damage as armor, there's a 50% less chance for them to take damage versus a normal weapon when being used to punch or kick.
  • When creating a new character and having the game answer the character creation questions for you, the ebony dagger will now be replaced by a silver dagger IF the "Nerf Ebony Dagger Question" option is enabled in the Ironman Game Systems settings menu.
  • You will now get a message popup when guards are summoned due to your traipsing around closed shops.

v0.2.0 (10/07/19) -

[Ironman & Ironman Game Systems]
  • Split Ironman into two mods: "Ironman" and "Ironman Game Systems." The mods can be used independently of each other. All of the settings from v0.1.3 were migrated to Ironman Game Systems. You will need to set your game settings to your liking again. All Ironman Game Systems settings are enabled by default, regardless of whether or not you're playing an Ironman game. So if you like the changes that have been made in Ironman Game Systems, you can use them with the Ironman mod disabled. Please keep me aware of any bugs that you find in Ironman and Ironman Game Systems so I can fix them as soon as possible.

[Ironman]
  • Added execution to the court system. Execution is supported for the following crimes: Murder, Treason, High Treason, Piracy, Smuggling, and Criminal Conspiracy. You can only be executed for an executable offense. After being banished from a region once, the courts in that region will attempt to execute you regardless of the crime committed, though you still have a chance to talk your way out of being executed. Additionally, if you have the "Avoid Death" perk from any guilds or temples (currently, no guilds - just the Temple of Stendarr), you will have a chance to survive your execution. Avoid Death is something that was implemented in classic. While the Ironman mod is active, execution is not optional for Ironman games, but may be disabled for normal games in Ironman's settings menu.
  • Added the "Execution In Normal Games" setting. While execution is always enabled in Ironman games, you can disable it for your normal games, if you so prefer. Execution is enabled by default.
  • You will now be released at full health/mana/stamina after being banished. This should prevent instant death for those who get released during the day with the "Take Damage from Sunlight" disadvantage.
  • Ironman games will now save your court status. Meaning, if you kill the game task on the court window, you're still going to be in court when you reload.
  • Ironman games will now only quit after the pending quitsave has been completed. This may not have been an issue in previous versions, but the method of doing so before was hacky. This should prevent any possible save corruption on the Quitsave as a result of exiting the game naturally or by killing the task normally (force-kills and game crashes could potentially - but are unlikely to be - an issue, as they probably won't trigger OnApplicationQuit(), which is where saving occurs).
  • Changed the save/load game system a bit. You can now only load the most recent save. This is useful for people who like to play with the Autosave mod and don't tend to spend too much time Quicksaving. Also, the Quicksave key (default: F9) now saves as "(Ironman) Quicksave" instead of "(Ironman) Current" and quitting the game will generate an "(Ironman) Quitsave" save, which becomes your most recent save.
  • Killing the Daggerfall Unity task with "Disable Exiting" enabled now saves the game before it exits.
  • If you saved shortly after receiving the "surrender to guards" dialogue, you will now get another chance to surrender to guards when reloading the game.
  • Prevented the ability to Quicksave in menus when playing Ironman games.

[Ironman Game Systems]
  • Integrated with the Tedious Travel mod. Players with Tedious Travel installed will now get a message once a disease exceeds its incubation period and their travel will be stopped. Also, weather particles will be disabled during travel as this seems to cause issues. I can make that optional, if so desired. If whoever's currently maintaining the Tedious Travel mod would like to fold these changes into it, that would be great.
  • Integrated with the Airships mod. The transport window will work as if you had DREAM compatibility enabled. If you own an airship and a ship, you will be prompted with a message, asking if you want to summon your airship.
  • Integrated the with Archaeologists mod for "Always Use Classic Pacification" setting.
  • Integrated with Roleplay & Realism mod for "Modify Critical Strike" setting.
  • Added the "Disable Recalling Near Enemies" setting. If enabled, this prevents you from being able to recall when enemies are nearby.
  • Added the "Disable Transport Near Enemies" setting. When enabled, this will prevent you from opening the transport window while enemies are nearby. If pausing is disabled, and you leave the transport window open, the window will automatically update based on whether or not enemies are nearby. Also, your current mode of transport will be greyed out when this option is enabled because stuff like being able to choose "Foot" while you're already on-foot always irked me.
  • Added the "Disable Resting on Horseback" setting. If enabled, you will not be able to rest while on horseback.
  • Added the "Always Use Classic Pacification" setting. When enabled, Ironman Game Systems will try to ignore any modification to the pacification formula by other mods, and instead use Daggerfall Unity's formula. This is compatible with (and made in response to) the fantastic Archaeologists mod for those who don't like the heightened pacification chances, but appreciate the extra language skill gain.
  • Added the "Prevent Guard Pacification" setting. When enabled, guards may be pacified momentarily, but will begin to attack you almost immediately after their pacification.
  • Added the "Can Surrender Once Identified" setting. When enabled, guards no longer need to hit you in order to bring up the surrender prompt and lower your reputation score. They will need to be within a fairly short distance of you in order to identify you. If your legal rep is above -10, they will not be able to identify you from your back; however, they can still identify you from the side.
  • Added the "Use Armor Material In Hand To Hand" setting. When enabled, the material level of your gloves (when punching) and boots (when kicking) will be checked against the enemy's resistances to see if damage will be delivered or ignored. In other words, you now need at least silver gauntlets to punch a werewolf.
  • Added the "Nerf Ebony Dagger Question" setting. When enabled, the "An ebony dagger" answer at character generation will be changed to "A silver dagger" and you will receive that at the beginning of the game instead. This is due to the fact that unless you're roleplaying or have Ebony/Short Blades prohibited, there's really no reason not to choose the ebony dagger as it's a huge advantage at game start. This has no effect on characters who choose to have their questions answered for them automatically.
  • Added the "Modify Shop Burglary" setting. When enabled, you can no longer freely loot shops after they have closed. The success for stealing from a shop is the same as it would be if you were stealing from a home. Additionally, every 10 seconds, a check is made to see if the guards will be summoned to arrest you for Breaking & Entering. The chance for this NOT to happen is (((Luck * 2.5) / 5) + Stealth). This should stop happening at 100 Luck and 50 Stealth, 50 Luck and 75 Stealth, or any other sufficient combination.
  • Added the "Modify Critical Strike" setting. If enabled, Critical Strike will no longer grant a bonus to your chance to hit, but instead, grant a bonus to your damage. The bonus scales linearly with your Critical Strike skill. With 100% Critical Strike, you have a 20% chance to crit for 2.0x damage. With 1% Critical Strike skill, you have a .2% chance to crit for 1.01x damage. Critical Strike scales with greater than 100 Critical Strike skill. CLASS-BASED ENEMIES WILL BENEFIT FROM CRITICAL STRIKE AS WELL!
  • Added the "Modify Loan System" setting. Currently, this just disables the ability to borrow money from a bank. In future versions, loans will be re-enabled and players will be punished severely for defaulting on their loans.
  • Fixed the "Disable Pausing" setting. It now works as intended without any known issues*. The game will remain paused while the console is open, regardless of what this option is set to. This is by design as the console is mostly only useful for debugging/development, fixing a technical issue, or cheating. (Known Issue) The game will be paused if a message box pops up while traveling via Tedious Travel.
  • Renamed "Disable Exiting" to "Disable Exiting Near Enemies"
  • With every game load, the UnityEngine.Random seed will be updated to prevent some frustrating issues where "random" occurrences will always work out to not be so random.

v0.1.3 (08/28/19) -
  • Disabled "disable pausing" for now. It caused too many issues with the game and wasn't ready for
    release yet anyway. Enabling it in the Ironman settings mod menu won't do anything.

v0.1.2 (08/28/19) -
  • Fixed a bug where SAVE0 would be overwritten at the start of the game. Saves were not being enumerated by Daggerfall Unity that early on, causing the game to think none existed at the point of saving. Sorry!
  • Added mod setting to disable exiting the game when enemies are nearby. The process can still be killed.
  • Added mod setting to disable pausing. Gameplay will NEVER be paused (including ANY menus) when enabled. This isn't fully finished yet because 0.1.2 is a rush release due to the SAVE0 bug.
  • Slightly beautified the Ironman messages at game start.
  • Fixed an incredibly minor issue where the "Delete Save" and Save/Load buttons would display when first opening the Save Game or Load Game menus.

v0.1.1 (08/25/19) -
  • Adjusted how saves were deleted to address a possible bug.
  • When playing an Ironman game, the game will now be saved when you attempt to exit the game. This includes by using the pause menu's exit button, Alt-F4/CMD-Q, and killing the task.

v0.1.0 (08/25/19) -
  • First release.
Last edited by DFIronman on Mon Aug 23, 2021 12:10 am, edited 52 times in total.

DFIronman
Posts: 84
Joined: Sat Aug 24, 2019 12:48 am

Re: [MOD] Ironman

Post by DFIronman »

On the technical side, getting this mod to work was a chore. Initially, I just copied over the DaggerfallUnitySaveGameWindow class to a new file (IronmanSaveGameWindow) and modified it for my purposes. That worked great. In fact, I had finished this yesterday, uploaded, and even made a post here to advertise it. And then I tested it in the live version of the game, rather than playing from within the Unity editor.

And it didn't work. So I deleted the post. There was an error in the IronmanSaveGameWindow.Setup() function related to setting the Size and Position properties of the various window components due to the fact that the set accessors for BaseScreenComponent (which a majority/all of the GUI components like ListBox, Button, etc. are derived from) are marked as internal. That stopped my mod from working whatsoever in the live version of the game, though it worked fine when running it from Unity (even the .dfmod version). I guess this is because a mod is considered an external assembly, whereas anything compiled and loaded from within the Unity editor - even a mod - is not, for some reason. Always test your mods in a live install of Daggerfall Unity.

Here, I thought I was done with the mod and it turns out that it doesn't even work! So I decided to try to use Reflection to get around the "internal" property modifier. I tested it on one or two properties and it seemed to work, so I used Reflection to modify every reference to the Size and Position properties. "Great," I thought, "I'm done again!" I loaded the game up and... "Unity has stopped working." Yeah, it crashed. So I loaded it back up and tried again. And it crashed. Turns out (at least, in this specific case), even if you can successfully modify the .Size and .Position properties with Reflection, the game will crash if there's not (for some reason) at least one direct call to set a .Size or .Position property. The problem with that is an exception will be thrown because you're trying to modify an internal-marked property - like I had in the original version of this mod.

Well, that felt like running into a brick wall. So, after making a backup, I basically threw that code out and started with a new version of IronmanSaveGameWindow that derives from DaggerfallUnitySaveGameWindow. This new version makes heavy use of Reflection and intercepting windows in order to access private variables (like goButton, savesList, etc.), modify events in the parent (DaggerfallUnitySaveGameWindow) class, and even skipping a level above base.Update() (i.e. base.base.Update(), which isn't allowed) in order to retain the intended functionality of the mod. Though Reflection is considered "slow," this isn't noticeable at all in a Save/Load game menu, where all of this action takes place. For example, the call to the grandparent of IronmanSaveGameWindow ("base.base.Update()" a.k.a. DaggerfallPopupWindow.Update()), takes between 1-2 tenths of a millisecond on my low-grade machine.

Ultimately, despite the heavy use of Reflection, this new implementation is superior to the previous version as it should be much more compatible with any potential future updates of the DaggerfallUnitySaveGameWindow class (unless the updates are fairly extreme). Though there is some re-used code from DaggerfallUnitySaveGameWindow, it's not a lot and will be easier to maintain should that class undergo a serious update.

I hope this information is useful for others who may be having issues with their mods!

Edit: Also, here's an extension class I wrote (inspired by examples from various blogs/Stack Overflow posts) for ReflectionHelper that will make utilizing Reflection to get/set fields and properties much easier. In order to make my code more readable and save time, I ended up using properties with the same names as the fields I needed to access in DaggerfallUnitySaveGameWindow. Feel free to use this in your own works.

Example usage:

Code: Select all

// The "typeof(DaggerfallUnitySaveGameWindow)" is optional for all calls in the extension method.
ListBox savesList { get { return (ListBox)this.GetFieldValue("savesList", typeof(DaggerfallUnitySaveGameWindow)); } }
Button goButton { get { return (Button)this.GetFieldValue("goButton", typeof(DaggerfallUnitySaveGameWindow)); } }

// "typeof(DaggerfallUnitySaveGameWindow)" is still optional. I just include it to speed up the process
// of finding the fields/properties I need.
goButton.SetFieldValue("OnMouseClick", null, typeof(DaggerfallUnitySaveGameWindow));

// Yes, this is a Reflection call.
savesList.OnMouseDoubleClick += SaveLoadEventHandler;
ReflectionHelper extension class:

Code: Select all

    #region ReflectionHelper
    public static class ReflectionHelper
    {
        private static readonly BindingFlags _BindingFlags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;

        private static PropertyInfo GetPropertyInfo(this object obj, string property, Type startingType = null)
        {
            PropertyInfo info;

            // Use obj.GetType() if the startingType wasn't supplied or our class is not/does not descend from that Type
            Type t = ((startingType != null) && (startingType.IsAssignableFrom(obj.GetType()))) ? startingType : obj.GetType();

            startingType = t; // Just assign this in case we have to throw an exception.

            // Loop through the whole class family tree until we find it or not.
            while ((info = t.GetProperty(property, _BindingFlags)) == null && (t = t.BaseType) != null);

            if (info == null)
                throw new NullReferenceException("No property '" + property + "' in type '" + startingType + "' or its parent(s).");

            return info;
        }

        private static FieldInfo GetFieldInfo(this object obj, string field, Type startingType = null)
        {
            FieldInfo info;

            // Use obj.GetType() if the startingType wasn't supplied or our class is not/does not descend from that Type
            Type t = ((startingType != null) && (startingType.IsAssignableFrom(obj.GetType()))) ? startingType : obj.GetType();

            startingType = t; // Just assign this in case we have to throw an exception.

            // Loop through the whole class family tree until we find it or not.
            while ((info = t.GetField(field, _BindingFlags)) == null && (t = t.BaseType) != null);

            if (info == null)
                throw new NullReferenceException("No field '" + field + "' in type '" + startingType + "' or its parent class(es).");

            return info;
        }

        public static object GetPropertyByName(this object obj, string property, Type startingType = null, object[] index = null)
        {
            return GetPropertyInfo(obj, property, startingType).GetValue(obj, index);
        }

        public static object GetFieldByName(this object obj, string field, Type startingType = null)
        {
            return GetFieldInfo(obj, field, startingType).GetValue(obj);
        }

        public static void SetPropertyValue(this object obj, string property, object value, Type startingType = null, object[] index = null)
        {
            GetPropertyInfo(obj, property, startingType).SetValue(obj, value, index);
        }

        public static void SetFieldValue(this object obj, string field, object value, Type startingType = null)
        {
            GetFieldInfo(obj, field, startingType).SetValue(obj, value);
        }
    }
    #endregion
Last edited by DFIronman on Mon Aug 26, 2019 4:21 am, edited 5 times in total.

User avatar
Jay_H
Posts: 4062
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: [MOD] Ironman

Post by Jay_H »

YES! YES! I love this!! I've been hoping for an Ironman mode since DFU's creation! :D

DFIronman
Posts: 84
Joined: Sat Aug 24, 2019 12:48 am

Re: [MOD] Ironman

Post by DFIronman »

Jay_H wrote: Sun Aug 25, 2019 3:45 am YES! YES! I love this!! I've been hoping for an Ironman mode since DFU's creation! :D
Haha, that's awesome! Let me know if anything breaks or if you have any suggestions. I'll be watching this thread over the next few days, at least. I tested it a bunch, but as you can see from my second post, I had to refactor the code a lot and might have missed something.

Good luck!

User avatar
Jay_H
Posts: 4062
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: [MOD] Ironman

Post by Jay_H »

I won't be able to give it a serious try until the start of next week, so you won't hear from me until then. But this is AWEESOOMEEE!!! I'll post about anything that goes wrong.

User avatar
Jay_H
Posts: 4062
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: [MOD] Ironman

Post by Jay_H »

I set apart some time to try it right away, and it works so well! Buttons disappear where they should, your idea to keep a starting save for each character is excellent, and the saves disappear as they should. I killed off a new character on purpose to test it.

I'm trying the shift-Load workaround, and I can't get it to work. Is it intended to work during gameplay or on the menu only?

Augh, this is absolutely amazing. I'm doing a melee build based on Vondur's Mad Genius: Warm Ashes, slow healing, tedious travel, scanty resources... I'm traveling halfway across Daggerfall region to find better work and the sense of risk is amazing. I love this! It's a whole new game!

DFIronman
Posts: 84
Joined: Sat Aug 24, 2019 12:48 am

Re: [MOD] Ironman

Post by DFIronman »

Jay_H wrote: Sun Aug 25, 2019 5:02 am I set apart some time to try it right away, and it works so well! Buttons disappear where they should, your idea to keep a starting save for each character is excellent, and the saves disappear as they should. I killed off a new character on purpose to test it.

I'm trying the shift-Load workaround, and I can't get it to work. Is it intended to work during gameplay or on the menu only?

Augh, this is absolutely amazing. I'm doing a melee build based on Vondur's Mad Genius: Warm Ashes, slow healing, tedious travel, scanty resources... I'm traveling halfway across Daggerfall region to find better work and the sense of risk is amazing. I love this! It's a whole new game!
Haha dude, that's awesome - I'm glad you're enjoying it! The shift-loading will only work when trying to load a game from the Main Menu (or from a non-Ironman character while in-game). Also, thanks for all of your work on quests! You've done a great job so far. I use a bunch of your stuff, plus obviously, the original quest fixes and such.

User avatar
Jay_H
Posts: 4062
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: [MOD] Ironman

Post by Jay_H »

I noticed that it's possible to quit your game when in danger and return to your save game. What would you think about auto-saving upon game exit?

DFIronman
Posts: 84
Joined: Sat Aug 24, 2019 12:48 am

Re: [MOD] Ironman

Post by DFIronman »

Jay_H wrote: Sun Aug 25, 2019 5:40 am I noticed that it's possible to quit your game when in danger and return to your save game. What would you think about auto-saving upon game exit?
I thought about that, but someone could just kill the game process to achieve the same effect; though I might even be able to have it save in that case as well.

Are you asking because of the potential for Ironman competitions or something along the line? Excluding that, I figure anyone playing this mod probably won't want to cheat themselves of the authentic experience, because there's no real benefit to playing with it otherwise.

User avatar
Jay_H
Posts: 4062
Joined: Tue Aug 25, 2015 1:54 am
Contact:

Re: [MOD] Ironman

Post by Jay_H »

Nah, anyone who wants to use this mod is going to play fair and follow its rules. I just mean, when you've invested so much in a character, there's such a temptation to bend the rules a little bit... And how rigid those rules are can determine whether a person bends them or not ;)

Post Reply