***************************************************************** The Elder Scrolls III MORROWIND Mod: MWSE 2.1 Pursuit Revisited ***************************************************************** Index: 1. Description 2. Installation and Requirements 3. Playing the Plugin 4. Features 5. Version 6. Conflicts & Compatability 7. Credits & Thanks 8. Notes 9. Copyright ***************************************************************** 1. PLUGIN DESCRIPTION ***************************************************************** TITLE: MWSE2.1 Pursuit Revisited VERSION: v1.202 BY: svengineer99/sveng CONTACT: Nexus/Discord ***************************************************************** 2. INSTALLING THE PLUGIN *****************************************************************S To install the plugin, unzip the files into the Morrowind/Data Files directory. REQUIREMENTS: Morrowind, Bloodmoon, Tribunal, MWSE v2.1 ( or later ) [ development release https://nullcascade.com/mwse/mwse-dev.zip ] MCP v2.4 (or later) [ https://www.nexusmods.com/morrowind/mods/19510 ] - including Mod specific:Service Refusal Filtering and all Bug fixes MGE-XE v0.10.1 (or later) [ http://www.nexusmods.com/morrowind/mods/41102 ] ***************************************************************** 3. PLAYING THE PLUGIN ***************************************************************** From the Morrowind Launcher, select Data Files and check the box next to the MWSE2.1_Pursuit_Revisited.esp file ***************************************************************** 4. PLUGIN FEATURES ***************************************************************** A 2018 Summer of Content Modding Challenge entry, for Temple and Imperial Cult related content. Background: This started out as a re-implementation of Yacoby's Pursuit Enhanced to try to address some of the issues I experienced using it, as well as to extend and add a few features. In testing, I found a host of related game play mechanics that I wanted to modify for a more cohesive pursuit experience. The major components may be pruned back independently by Data Files/MWSE/sve_pursuit.ini file editing. Doing so will in most cases completely shut down the related script(s). The scripting is in MWscript, not Lua, but takes advantage of some of the enhanced functionality and efficiency of the MWSE 2.0 release and 2.1 WIP. Full thanks and credits can be found below. Warning: Due to the experimental nature of the scripting, game play stability and save game integrity can not be guaranteed. I don't know of any such issue, but it's possible I missed something in my play testing, so use at your own risk and take the appropriate precautions, such as making a copy of any important save games. If you experience any gameplay issue, please kindly report by Nexus mod page bug tracker or PM. If the issue is repeatable, please use the MWSE2.1_Pursuit_Revisited_DEBUG.esp Nexus mod page download optional file to repeat the issue and share the resulting MWSElog.txt file. Game play features: 1) Combatant pursuit through load doors (and return to their original positions): NPCs and Creatures in combat with the player will follow through load doors with delay to follow based on their distance to the door, speed, GMSTs, etc. NPCs and Creatures won't follow if: Too low level (50% chance at -5 levels below the player, etc) guards excluded Dead, knocked out, paralyzed Health/max ratio lower than flee rating Animals or swimmers (such as rat, dreugh, etc) Constructs won't follow outside (such as dwemer spheres, etc Undead or vampires won't follow outside except at night The door is locked beyond their skill or power to open Vanilla based skill check made every 1-4 seconds per pursuant Guards will erode the lock level ~-1 per check, so will eventually get it open. Guards and default non-hostile NPCs will not pursue through a load door into hostile areas Creatures and default hostile NPCs will not pursue through a load door into guarded areas Let me know if I missed something, or something seems not working correctly. Pursuants will continue to follow through successive load doors and exterior cell changes If sufficiently high level (50% chance at +5 levels above the player, etc ) or guard Pursuants will flee if their health/max ratio declines below their flee rating (typically 20-30) Pursuants will return to their original cell position When the player sleeps, travels, goes to jail or teleports to another cell out of range This will trigger a "72 hour" corpse decay/respawn sequence to reset the AI Otherwise actors moved back to their original cells can get stuck trying to move toward the prior cell destiation, with ugly juttering animation To ensure the AI is reset, an additional jump to another cell (ToddTest) and back is required, resulting in a visual flash in some cases. Hopefully a smoother implementation can be found in the future Or when fleeing or no longer in combat if within reach of their original cell load door The mechanics should work seamlessly through save games and new sessions There should be no limit to the # of concurrent pursuers :) Bonus feature: Actors starting in exterior cells will return to original positions This fixes a vanilla bug where exterior actors could get stuck in adjacent cells after pursuit 2) Guard pursuit from adjacent cells, on crime reporting: On crime "reporting", NPCs will call guards from the cell the player entered from, if any were there. With delay to follow calculated from their distance to the door, speed, GMSTs, etc. Such adjacent cell entry guard locations are remembered, if returning via teleportation (recall) NPCs pursuing after a crime will alert any guards in the cell they pursue the player into NPCs will remember the scene of a crime if you return with any bounty on your head. Calling the guards in their cell and/or adjacent entry cell to arrest you. In close combat with guards, hit the activate key (default space bar) to "Please for mercy" That will initiate an arrest attemt. 3) Teleport restrictions and intervention limitations: Travel services are suspended during combat or pursuit Mark and Recall effects are restricted during combat or pursuit with option (.ini file option): 0) Not restricted 1) Totally disabled with any enemy in pursuit or nearby 2) Disabled unless additional mysticism based check vs the root-sum of ( enemy level / distance ) Interventions are allowed in combat (or otherwise) but limited in availability: The player must be a member of the Imperial Cult/Temple for Divine/Almsivi intervention The player earns 1+rank/4 intervention "right"(s) for each rank attained in the Cult/Temple At rank=10 (Patriarch/Primate) unlimited interventions are granted A message from the Cult/Temple will inform the player of his intervention rights on rank increase or intervention cast Optionally [by .ini file setting] The player may atone for additional interventions with gold or equivalent enchanted items donation Enchanted items of same gold value may be repurchased from the faction HQ enchanted items merchant See Sauleius Cullian in Ebonheart or Llandris Thirandus in Vivec, High Fane Provisions have been taken for compatibility with Melian's and Multi Mark Teleport Mods 4) Thieves tools extension and conveniences: Lock picks can be used to lock doors by holding down the ALT-key Chance of success applies vanilla lock pick formula, with security skill progress on success If a door is not locked/owned (most doors): The lock level will be set based on that cell's NPC/Creature highest security skill, with some random variation. Some doors may not have any locking mechanism. Attempting to lock a door is considered a crime, if noticed, with same bounty as lock picking. On lock success, there's some security skill based chance to fortify the lock to a higher level. Thieves tools can now be accesed with next/previous weapon hot keys (default [ and ]) + ALT key 5) Crime, flee and related AI tweaks: The flee AI reaction settings are dynamically controlled through scripted faiflee* GMST setting so actors will flee when their health ratio is lower than their flee setting (typically 20-30%) and will periodically alternate back to fighting (every 15-30sec), so as to be less like to get stuck in a crevice, etc. Non-hostile (fight<=40) and not restricted class (guard/smuggler/etc) or vampire NPCs, with guards in their or adjacent cell, will get alarm bumped to 101 on first encounter to report crimes, while their fight instinct will be suppressed until their disposition drops sufficiently low. This enables most default friendly NPCs in towns to call the guards, as described above. Crime GMSTs have been somewhat re-worked (via scripting) in guarded areas to generally allow for a few minor infractions before NPCs will agro, accumulating scripted disposition decrease that increases the chance of going agro incrementally (that inexplicably is not how the vanilla system works). So the first few gp items stolen or lock/pick attempts may not necessarily set off a fight, but will eventually do so, if the called guards don't get there first. Pursuants with sufficient distance to the player will alternate to jumping mode, enabling them in some cases to overcome obstacles or barriors the player can easily overcome by jumping. Boosts to fatigue and feather are made to avoid exploit. 6) INI file configurable settings: Edit the MWSE\sve_pursuit.ini file to adjust game play options and settings This presently is limited to enable/disable/customize #1-5 above See the readme or ini file in line description for details Let me know any requests for additional .ini file customization INI file detail: [Instructions - Only change the # following "= ", otherwise DO NOT change the order or formatting] [Pursuit Disabled:0, Enabled:1] = 1 [Lock and Theives Tools Disabled:0, Enabled:1] = 1 [Teleport, Travel and Intervention Restrictions Disabled:0, Enabled:1, Skill Check:2] = 2 [Intervention Tribute Disabled:0, Gold:1, Gold+Items:2] = 0 [Exterior guard alerts Disabled:0, Enabled>:1, Attempt Arrest Every Cell Change:2] = 1 [Intervention Message Verbosity Disabled:0, Enabled:1-2] = 2 [AIFlee Alternating Disabled:0, Enabled:1] = 1 [Crime System Adjustments Disabled:0, Enabled:1] = 1 [Crime GMST Adjustments: Disabled:1, Enabled:0] = 0 [Plead for Mercy, Initiate Arrest with Guard in Combat: Disabled:0, Enabled:1] = 1 [Intervention Rights/Credits at Rank 1:A, >1:B*(1+Rank/C) where A,B,C] = 2,1,1 [Hostile Actor Pursuit Suppressed for Friendly NPC/Guard Distance Within A/B of Load Door Exit where A,B] = 2000,3000 [Pursuants ForceMoveJump Enabled,Distance,Duration,Delay,SlowFall,FortifyAcrobatics] = 1,1000,2,2,10,35 [Teleport Restrictions Mark and Recall Skill Check Base Distance (Lower Increases Chance)] = 2000 [Auto Actor Reset (when Approaching Doors that likely need it) Disabled:0, Enabled:1, Enabled with Messaging:2] = 2 ***************************************************************** 5. PLUGIN VERSION ***************************************************************** v1.00 Initial release v1.01 load_ini_settings: fixed disallowed search string from "^_ab01" to "^ab01" load_ini_settings: added intervention per level globals to .ini file teleport: tweaked the per rank formula, fixed the decimal->string formulation load_ini_settings: added npc/guard_alert_dist globals to the .ini file v1.02 pursuit: corrected ext_ext -> pursuit2 handling teleport/load_ini_settings: masked combat with animal-like creatures pursuit0: updated gaurds/npcs check more intelligently pursuit0/1/2: updated ext_ext pursuit conditions to suppress bad pursuits v1.03 pursuit: revised pursuit_in_progress handling on actor leaving pursuit_refresh: changed pc_ref->xpositioncell to player->positioncell.. "todd test" pursuit1->0: moved pursuit_token0 placement pursuit/2: return to orig cell non-combat immediately pursuit: fixed timers to actual work, not loop every frame pursuit/2: moved refresh call to any non ext-ext cell change guarded_npcs_pccell: fixed fight<40 protection, sve_pursuit_guard_prot_for_all global override obsoleted .ini file crime messaging, replaced with crime gmsts enable/disabling v1.04 added AI reset after actor re-positioning and re-entry to crime scene(s) suppress alarm=101 pursuers continuing after arrest, if crimelevel=0 ix ext-ext pursuit2 variable passing suppress guard double arrest during crime reaction alert fixed string handling causing CTD on pursuings in cell names=31 characters v1.05 tweaked followig criteria hostile-non-hostile-animal tightened timing to fix guard double alert 1gp bounty adds ini dependent disallow/allowkey additional teleport restriction layer option (=2) allow for following through same cell teleport doors v1.1 fixed missing token0 for distance calculations (insta-follow) added forcemovejump to allow pursuants to follow better changed refresh method to avoid misses and/or CTDs changed alert to reduce guards arresting too frequently, only once per reset, not cell change. v1.2 actor refresh method tuned (fewer refreshes/lag, added messaging, suppressed CTD risk) crime bug fixed COM NPCs (children) pursuit suppressed Various other tweaks and fixes v1.201 Fixed spontaneous "resetting actors" thanks to RandomPal for reproting v1.202 Fixed additional crime bug reported by RandomPal, although the final trade-off between hostile and non-hostile actors following remains imperfect, due to scripting and engine limitations. Added return to original position for pursuants starting and ending in exterior cells. Fixed disposition game setting related bug (hostile NPCs not attacking) thanks to Metroid reporting. ***************************************************************** 6. CONFLICTS, COMPATABILITY and SAVE GAME CLEANING ***************************************************************** Conflicts - Any other mod that dynamically re-positions combatant actors. - Any non-vanilla teleportation mod or feature, excepting Melian's or MultiMark - Any mod that modifies NPC alarm directly - Probably More, let me know. Save Game Cleaning - Drag and drop save games on the provided Saves\ folder .bat utility [Requires TES3CMD in your Saves\ or Data Files\ folder] ***************************************************************** 7. CREDITS & THANKS ***************************************************************** Yacoby: For Pursuit Enhanced inspiration Greatness7: For invisible service creature idea, mesh and animation files among countless other helps. NullCascade and Greatness7: For extending MWSE, including xActivate, xGetKeyCode, xEquipmentList, xGetClass, etc Merzasphor: For MWSE development and release up to alpha0.9.6 including Spell functions, Array functions, etc. CDC and the SF MWSE Dev Team: For MWSE development and release up to 0.9.4 Hrnchamd: For MCP service refusal support among many other useful features and bug fixes Hrnchamd: For MGE-XE key allow/disallow and xSetOwner functions, among others. Dave Humphries: For MWEdit The Assimilation Lab: For continuously updated Morrowind Modding Wiki entries GhanBuriGhan, Yacoby and melian: For Morrowind Scripting for Dummies Abot: For Morrowind Scripting for Smarties NullCascade and Greatness7: For MWSE2.0 documentation Varlothen, EnclaveKiller and Jaiysaun for beta testing Abot, Caeris, Vraptor, Lucas9, Kudix, Bubishi, Danae, Protoplm, Metroid13, RandomPal for bug reports and feedback Darkelfguy: for Morrowind Modding Showcases, Podcasts, Marathons and Madnesses Bethsoft: Of course, for the game engine of and CS Everyone who has contributed and continues to contribute to Morrowind Modding ***************************************************************** 8. NOTES ***************************************************************** For actors killed during pursuit (not in original cells): Scripted corpse decay will trigger at 1/2 the normal 72 hour increment or on the first non-load door cell change (teleport, travel, etc) or after any amount of sleeping or jail time. This is to move the corpse back to its original cell with scale=0 (hidden) so on the 72 hour increment it will re-spawn (if applicable). Note: this may not work in some degenerate cases, such as if killing new pursuants every 24 hours without resting, traveling or teleporting. In such cases some actors may get orphaned in their kill cell, not respawning. Non-unique creatures (all those after the 1st instance encountered) will have their inventories cleared to discourage repetitively luring creatures into vulnerable, non-native locations to harvest their drops. Several new game play mechanics are treated psuedo-randomly, based on a random seed saved for each save game that includes: unlocked doors lock level (or no locking mechanism) actor level / player level decision to pursue or continue pursuing chance modifier guarded npc decision to agro on crime observation chance modifier on a per cell basis So, for example, a particular door lock level or no mechanism will always be the same for a particular play-through, but will be different for another play-through, etc. The particular pseudo-random level or modifier is based on the seed plus cellid string length, actorid string length, entry coordinate, etc to give reasonable variation from one situation to another. This will lead to some correlation between various pseudo-random events, but I guess it will be too subtle and complicated to be observable. ***************************************************************** 9. COPYRIGHT ***************************************************************** This plugin is freely distributable and modifiable, as long as this readme file accompanies it and credit is given to the original author. But please remember that not everything here is my work. Refer to section 7.THANKS. By downloading and running this plugin, you acknowledge the following : - You have read and understood this readme file. - You acknowledge that the author of this plugin accepts no responsibility for damage to your game saves, operating system, computer, etc, when using this plugin. NOTE: Please do not upload this plugin for distribution without my permission. --svengineer99