by Picador
http://tesnexus.com/downloads/file.php?id=27947
Features
- * Blocking is now all-or-nothing: an actor's chance to block an attack is based on several factors:
- * Block skill
* Fatigue level
* Timing (blocking just before the strike is much more likely to succeed)
* Whether the actor is using a shield, a weapon, or bare hands
- * holding a block drains fatigue every second, based in part on the weight of your weapon or shield relative to your strength
* successfully blocking an attack damages your fatigue based on the amount of damage blocked
- * successfully blocking an attack has a chance of shattering the item used to block based on the damage of the attack and the health of the item
* to compensate for this, normal weapon and shield degradation from blocking is greatly reduced
- * a skilled blocker (Journeyman or better) has a chance to block incoming hostile spells with a well-timed block using a shield, an enchanted weapon or staff, or bare hands (if also a Journeyman or better in hand-to-hand)
Rationale
- * Vanilla blocking is useless at low levels. Now even an unskilled fighter has a reason to block.
* Combat is now more exciting, since you have to time your blocks to make them more effective and to avoid draining your fatigue; you also have to time your attacks on blocking NPCs more carefully!
* Weapon and shield choices are more strategic now: item weight and health are much more important considerations
* Wizards and martial artists now have better reasons for training their Block skill
* Shattered equipment means you may have to carry a backup weapon or shield, and you'll either have to replace broken equipment or carry a lot of repair hammers
* Deadly Reflexes' "Timed Block" is a good idea, but it only makes very minor changes. This would serve as a replacement for that file (but would be compatible with the rest of DR)
Implementation
- * Game settings: blockMax = 1.00, weaponmult = 1.00, hthmult = 1.00, skillbase = 0.00, skillmult = 1.00
* Quest script ref-walks every 1 second, places a token on every NPC and every creature with a weapon equipped (the PC also gets one at the start)
* Token script runs every frame:
- * if actor.isBlocking ==0 and actor.getSoundPlaying (block) == 0, return
* each frame the actor is blocking:
- * run a timer (resets when actor stops blocking)
* calculate a block chance based on: skill, timer, weapon/shield/HtH, fatigue
* randomly determine if block would be successful this frame
- * success --> mod actor's block skill to 100 (i.e. 100% damage blocked)
* failure --> mod actor's block skill to 0 (i.e. no damage blocked)
- * fatigue damage = 5 + (weight of weapon/shield) * (100 / strength) * .2
- * determine damage from attack by tracking health of weapon/shield used to block
* calculate chance of weapon or shield shattering: chance = (damage from attack / health of weapon or shield) - .02
* if weapon shatters, set health to 0
* if weapon does not shatter, restore some of its health so total damage done = (original damage) * .2
* acter's fatigue is also damaged by a successful block: fatigue damage = (strike damage) * .5
- * Baseline chance = 100% at Block skill 100 when timer is at 2 seconds, using a shield, at full fatigue
* Skill: multiply chance by (skill/100). Modify skill based on Luck per usual formula.
* Fatigue: multiply chance by (.5 + (Current fatigue / Base fatigue)), i.e. 50% effectiveness at fatigue zero
* Timing: 3x chance at 0 seconds, down to 2x at 1 second, to 1x at 2 seconds, to a minimum of .5x at 3 seconds or more
* Shield/weapon/hands: multiply chance by .75 if using a weapon, or by .5 if using bare hands
* Minimum chance: after doing the math above, final block chance is always at least 20%
The numbers above are all subject to changes after testing, etc.
I haven't yet coded most of this stuff, but you can see from my proposed implementation above that I have a pretty definite plan. Comments, suggestions, questions, enthusiastic endorsemants, and scornful criticism are all welcome.