[RELz] Better Blocking

Post » Fri Oct 08, 2010 1:55 am

Yeah it seems there has been some misunderstanding in both directions regarding the formula, excuse me if I didn't explain all the things I was suggesting, there was so many stuff there to be written, and writting in english takes me my time so this are the results... but back to the formula, I'd like to make it clear.

* The formula used to determine the chance of blocking successfully will look something like this:
    0* Baseline chance = 100% at Block skill 100 when timer is at 2 seconds, using a shield, at full fatigue
    1* Skill: multiply chance by (skill/100). Modify skill based on Luck per usual formula.
    2* Fatigue: multiply chance by (.5 + (Current fatigue / Base fatigue)), i.e. 50% effectiveness at fatigue zero
    3* 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
    4* Shield/weapon/hands: multiply chance by .75 if using a weapon, or by .5 if using bare hands
    x* Minimum chance: after doing the math above, final block chance is always at least 20%

For what is shown here all 4 factors (1-4) will have a value about or mostly below 1, so I expect that value would be checked against 1 instead of making a percent check (unless you'd want to multiply that value for 100, wich seems pointless). On that department my suggestion is that you choose one value in form of %, and then let the other factors be multipliers of that percent, ranging from 0 to 1 or whatever their max values are. I don't know if that's what you was thinking to do regarding the formula, but one of the things that makes it a bit unclear for me is that you talk about "multiply chance by...", but hasn't been defined a "chance" itself, or I'm not able to see it. So let me comment this factors.

0 - This isn't a value affecting the formula but it's rather a result of applying it, so we should leave this out.

1 - Skill: I'd suggest making this one the "base percent" value in the formula. So instead of skill/100 you retain directly the skill level, perhaps with a cap about 125 or so. The reason to do this is
simply because it's easier to talk about percentile chances than talking about multipliers, rates and too-much-math-related looking stuff, and so if we speak of % of success why don't have that value itself in the formula? well that's just my point of view.

But as this would be the base chance we should avoid it being too low. Adding a min value here (like 20) would make no difference at all in that skill levels below the min, so instead you can make the skill factor counts a 80% towards the base chance and get the other 20% for free. It'd look like (skill*0.8 + 20) because we're seeking a percentile value.

2 - Fatigue: I think we agree on this. According to my procedure this would act as a multiplier to that percent. Just let me notice that current value ranges from 0.5 to 1.5 at full stamina and I guess that was not intended but this makes me think of a small bonus for being at full stamina, but not that big. To make it range from 0.5 to 1 it should be 0.5 + (Current fatigue / Base fatigue)/2, and to make it ranges from 0.5 to 1.1 could be like 0.5 + 1.2*(Current fatigue / Base fatigue) / 2.

3 - Timing: As I see this, that one is another factor that will multiply the base chance (skill). In your settings this multiplier ranges and descends from 3 to 0.5 in 3 seconds. I see the point of giving a decent chance of success for well timmed blocks at novice level, so I retreat what I said about making the max value 1, but perhaps 2 is better so you only have one second with "bonus" to time your block. Oh wait, maybe it's only half second, considering it has to perform yet before the block anim... perhaps that's why you made it starting from 3. Anyway, 3 seems too much, at least for me. A fair value could be 2 + the time it takes to perform the anim (0.4~0.6?), so in the end you have exactly one second with increased chance of success.

4 - Shield/Weapon/H2H: this one is clear, it's either 1, 0.75 or 0.5, respectively. My suggestion on that department was to modify this value according to the item's weight, assuming that big and robust stuff is better for blocking: it will cover a bigger area and won't make you recoil as easily. My first suggestion was to make it absolutely proportional to the weight but that could lead to some very low values, and considering the big difference between those weights is quite difficult to find a fair and balanced way to make it. An easy one would be adding (weight/100), so for example for a fur shield this value would be 1.02, for a daedric shield 1.24. This is meant to be compensated by the bigger fatigue lost by heavier equipment. The major problem I see is for weapons as some could end up being more useful than shields (daedric warhammer - 1.93). Perhaps this could be applyed only to shields.

5 - Minimum chance: Even it has been set some kind of min chance on skill it would still having to be checked once again.


So in conclusion my idea is:

Base Chance = SkillPercent * FatigueMultiplier * TimingMultiplier * EquipmentMultiplier

SkillPercent = (skill min 125) * 0.8 + 20
    (skill min 125) means we always get the smaller one of both, just in case the skill level would be greater. It's a shame neither bethesda or the obse team hasn't made min and max functions.
    This now ranges from 20 to 120

FatigueMultiplier = 0.5 + 1.2*(Current fatigue / Base fatigue) / 2
    ranges from 0.5 to 1.1

TimingMultiplier = 2.5 - (timer min 2)
    ranges from 2.5 to 0.5, in 2 seconds
    Or either: TM = 2.5 - (timer*0.66 min 2) to make it last 3 seconds

So in all it's:

Base Chance = ( ((skill min 125) * 0.8 + 20) * (0.5 + (Current fatigue / Base fatigue)/2) * (2.5 - (timer*0.66 min 2)) ) max 20

Anyway, the exact values maybe it's not the most important thing here, that's just my personal preferences, but rather it is to have a clear idea of exactly wich parameters tracks the success chance formula, wich magnitudes they are (1, 100?), etc, because I think it has lead to some misunderstanding. Man, you started with a very good project, and as you've said , the structure it's ok and it seems that now it's all about adjusting values, so consider this both as my suggestions for that values and my contribution to make this discussion more productive, if this might help. It's a dumb thing, but giving things a name makes them easier to refer to :) If you don't like the name I gave them just rename them, re-order them, and we all will refer them as such :)


grmblf
User avatar
Sun of Sammy
 
Posts: 3442
Joined: Mon Oct 22, 2007 3:38 pm

Post » Thu Oct 07, 2010 10:52 pm

Okay, I've put an alpha together and it seems to be working. However, it really hasn't been tested yet and may end up leaving modav values behind in your game for all I know.

Anyone who wants to help out with testing can get it here: http://tesnexus.com/downloads/file.php?id=27947

EDIT: To install, move the BetterBlocking.esp and the "BetterBlocking\" folder (with the .ini file) into your Data directory.

All scripts used in the mod are included in the "scripts.txt" file
User avatar
Pixie
 
Posts: 3430
Joined: Sat Oct 07, 2006 4:50 am

Post » Fri Oct 08, 2010 7:09 am

Downloading.

If you have trouble with modAV then perhaps you could use modAV2, it modifies health/fatigue/etc as it were naturaly damage or restored/repaired.
User avatar
W E I R D
 
Posts: 3496
Joined: Tue Mar 20, 2007 10:08 am

Post » Thu Oct 07, 2010 8:51 pm

yes, you get my enthusiastic endorsemants for this!!

this is almost what i am looking for. just a few points:

may be i did not understand it right, but for "fantasy realism", IMO the timing of a block should not affect the chance that way. if you hold up your shield early enough, you have the time to get it in a perfect position, you can prepare for the hit, if you see it coming you can move the shield from that position accurately to parry the hit effectively (provided a sufficient blocking skill, of course). but if you raise the shield panicly in the same moment of the hit, you can't get that precision. it's more a reflex than accuracy (which has a higher chance of success at higher blocking levels because that reflex is trained). you may accidentally get a good position though.
the downside of constantly blocking is (except that you can't attack of course), the attacker will also prepare for getting blocked and put more power in his hit, which will drain more fatigue from the blocker and damage the shield. on the other hand, if the attacker is surprised by a suddenly raised shield, it is much more likely that he will stagger if the block is successful and the blocker is stronger than him.

again, may be i did not see it, but what is the difference between using a damaged iron shield or a daedric one?

another point for realism: the blocker's strength (and the above mentioned type of shield) could affect the max weight or 'quality' of a weapon he is able to block at all. imagine a slight thief blocking a war hammer attack from an orc with a rusty dagger... what chance should he have?? ;)
User avatar
Nichola Haynes
 
Posts: 3457
Joined: Tue Aug 01, 2006 4:54 pm

Post » Thu Oct 07, 2010 8:37 pm

imagine a slight thief blocking a war hammer attack from an orc with a rusty dagger... what chance should he have??


This scenario is the main reason I started work on a "weapon shatter" mod in the first place.
User avatar
Stephanie Valentine
 
Posts: 3281
Joined: Wed Jun 28, 2006 2:09 pm

Post » Fri Oct 08, 2010 10:17 am

So in conclusion my idea is:

Base Chance = SkillPercent * FatigueMultiplier * TimingMultiplier * EquipmentMultiplier

SkillPercent = (skill min 125) * 0.8 + 20
    (skill min 125) means we always get the smaller one of both, just in case the skill level would be greater. It's a shame neither bethesda or the obse team hasn't made min and max functions.
    This now ranges from 20 to 120

FatigueMultiplier = 0.5 + 1.2*(Current fatigue / Base fatigue) / 2
    ranges from 0.5 to 1.1

TimingMultiplier = 2.5 - (timer min 2)
    ranges from 2.5 to 0.5, in 2 seconds
    Or either: TM = 2.5 - (timer*0.66 min 2) to make it last 3 seconds

So in all it's:

Base Chance = ( ((skill min 125) * 0.8 + 20) * (0.5 + (Current fatigue / Base fatigue)/2) * (2.5 - (timer*0.66 min 2)) ) max 20


You seem to more or less have the idea of what I've implemented. Here's my code in the relevant section:

		; calculate chance to block		; factor in timing		set timingMult to 3 - (timer / aaaBetterBlockingQuest.durationMult)		if timingMult < 0			set timingMult to .5		elseif timingMult < 1			set timingMult to .5 + (timingMult / 2)		endif		; factor in fatigue		set curFatigue to actor.getav fatigue		set baseFatigue to actor.getbaseav fatigue		set fatigueMult to .5 + .5 * (curFatigue/baseFatigue)		; factor in type of item being used to block		if itemType == 7		; shield			set itemMult to 1		elseif itemType == 6		; bare hands			set itemMult to aaaBetterBlockingQuest.handtohandItemMult 		else		; weapon			set itemMult to aaaBetterBlockingQuest.weaponItemMult 		endif		; do the calculation		set blockChance to skill * timingMult * fatigueMult * itemMult		if blockChance < aaaBetterBlockingQuest.minBlockChance			set blockChance to aaaBetterBlockingQuest.minBlockChance		endif


and the values set in the .ini file:

; [Fatigue settings];-------------------------------------------------------------Set itemLiftFatigueBase to				20   ; default = 20, fatigue drained per block attemptSet itemLiftFatigueWeightMult to			1.0  ; default = 1.0, multiplied by shield/weapon weight and addedSet itemHoldFatigueBase to 				2    ; default = 2, fatigue drained per second blockingSet itemHoldFatigueWeightMult to			0.2  ; default = 0.2, multiplied by shield/weapon weight and addedSet strikeFatigueDamageMult to				0.5  ; default = 0.5, this amount of a blocked attack comes through to fatigue; [Shatter settings];-------------------------------------------------------------Set shatterCutoff to 					0.02 ; default = 0.02, minimum damage (as percent) for shatteringSet shatterMult to 					1.0  ; default = 1.0, higher = higher chance of shatteringSet itemDegradeMult to					0.2  ; default = 0.2, amount of item health lost to blocking; [Block Effectiveness Settings];-------------------------------------------------------------Set durationMult to 					1.0  ; default = 1.0, higher = longer block windowSet weaponItemMult to 					0.75 ; default = 0.75, effectiveness of a weapon block relative to a shieldSet handtohandItemMult to 				0.5  ; default = 0.5, effectiveness of a HtH block relative to a shieldSet minBlockChance to 					0.2  ; default = 0.2, minimum chance to block an attack

User avatar
Tom
 
Posts: 3463
Joined: Sun Aug 05, 2007 7:39 pm

Post » Thu Oct 07, 2010 11:42 pm

If you have trouble with modAV then perhaps you could use modAV2, it modifies health/fatigue/etc as it were naturaly damage or restored/repaired.

I am using modav2 for fatigue, but I'm talking about the modav I use to temporarily set Bock to 0 or 100.

I don't think it's broken at present, but please send me reports on any bugs you find. I hope to release this by the end of the weekend.

Also, please let me know if the settings are too easy or too harsh. I'm thinking SkyCap might be right about the fatigue penalties being too big.
User avatar
Rudi Carter
 
Posts: 3365
Joined: Fri Sep 01, 2006 11:09 pm

Post » Fri Oct 08, 2010 1:45 am

For anyone who's interested, here are all the scripts I'm using.

The alpha doesn't have the spell-blocking features in there yet.

scriptname aaaBetterBlockingQuestScript; this is the quest script that addds tokens to actors and weapon-wielding creaturesshort initializedfloat fQuestDelayTimeref curActor; multiplier for shatter percent: higher is more likely to shatter, default = 1.0float shatterMult; damage cutoff for shatter as % of total health: higher is less likely to shatter, default = 0.02float shatterCutoff; more ini settingsshort itemLiftFatigueBase float itemLiftFatigueWeightMultshort itemHoldFatigueBase float itemHoldFatigueWeightMultfloat itemDegradeMultfloat strikeFatigueDamageMultfloat durationMultfloat weaponItemMult float handtohandItemMult float minBlockChancebegin gamemode	if initialized		; add a token to every NPC		set curActor to GetFirstRef 35 0		Label 1		if (curActor)			if curActor.getItemCount aaaBetterBlockingToken == 0				if curActor.getDead == 0					curActor.addItem aaaBetterBlockingToken 1					PrintToConsole "BB: token added to %n" curActor				endif			endif			set curActor to GetNextRef			GoTo 1		endif		; add a token to every creature with a weapon equipped		set curActor to GetFirstRef 36 0		Label 2		if (curActor)			if curActor.GetEquippedObject 16 != 0				if curActor.getItemCount aaaBetterBlockingToken == 0					if curActor.getDead == 0						curActor.addItem aaaBetterBlockingToken 1						PrintToConsole "BB: token added to %n" curActor					endif				endif			endif			set curActor to GetNextRef			GoTo 2		endif		if GetGameLoaded || GetGameRestarted			set shatterMult to 1.0 ; default value			set shatterCutoff to 0.02 ; default value			Set itemLiftFatigueBase to 20 ; default value			Set itemLiftFatigueWeightMult to 1.0 ; default value			Set itemHoldFatigueBase to 2 ; default value			Set itemHoldFatigueWeightMult to 0.2 ; default value			Set itemDegradeMult to 0.2 ; default value			Set strikeFatigueDamageMult to 0.5 ; default value			Set durationMult to 1.0 ; default value			Set weaponItemMult to 0.75			Set handtohandItemMult to 0.5			Set minBlockChance to 0.2			if FileExists "Data\BetterBlocking\BetterBlocking.ini"				runBatchScript "Data\BetterBlocking\BetterBlocking.ini"			else				PrintToConsole "Better Blocking: Error - .ini file not found"			endif		endif		else		set fQuestDelayTime to 1.0		set initialized to 1		if player.getItemCount aaaBetterBlockingToken == 0			player.addItemNS aaaBetterBlockingToken 1			PrintToConsole "BB: token added to player"		endif	endifend----scriptname aaaBetterBlockingTokenScript; this is the script that monitors an actor's blocking behaviour and regulates it; actor who is being monitoredref actor; block skill of actorshort skill; strength of actorshort strength; luck of actorshort luck; block item equipped by actor last frame - BASE OBJECTref lastItem; block item currently equipped by actor - BASE OBJECTref curItem; block item health in last framefloat lastItemHealth; block item health nowfloat curItemHealth; damage sustained in last frame by the block item float damageSustained; damage sustained as percentage of last health readingfloat damagePercent; percent chance of shattering this framefloat shatterChance; type of current block item: 0,1=blade 2,3=blunt 4,5=staff,bow, 6=hands, 7=shieldshort itemType; random number 0 to 1float randomNum; flag set to 0 when not blockingshort blockFlag; timer for block durationfloat timer; amount of fatigue lost from lifting item to blockshort itemLiftFatigue; amount of fatigue lost per second from holding item to blockshort itemHoldFatigue; block item weightshort itemWeight; seconds passed since last framefloat seconds; actor's fatigue trackingshort curFatigueshort baseFatigueshort fatigueDrainAmount short blockModfloat timingMultfloat itemMultfloat fatigueMultfloat blockChanceshort blockSuccessFlagshort restoreAmountbegin gamemode	; PrintToConsole "Better Blocking Token Debug"	set actor to getContainer	; reset block modification	set blockMod to (0 - blockMod)	;PrintToConsole "Block skill reset by %.0f" blockMod	actor.modav block blockMod	set blockMod to 0	set skill to actor.getAV Block	set luck to actor.getav Luck	set skill to (skill + .4 * (luck - 50))	set strength to actor.getav Strength	set curItem to actor.GetEquippedObject 16	if (curItem)	; a weapon is equipped		if (actor.GetEquippedObject 13 != 0)		; a shield is equipped			set curItem to actor.GetEquippedObject 13			set curItemHealth to actor.GetEquippedCurrentHealth 13			set itemType to 7		else		; no shield equipped			set curItem to actor.GetEquippedObject 16			set curItemHealth to actor.GetEquippedCurrentHealth 16			set itemType to GetWeaponType curItem		endif	else	; no weapon		set curItem to 0		set curItemHealth to 0		set itemType to 6	endif	if curItem != lastItem		; actor has a new item equipped this frame		set lastItem to curItem		set lastItemHealth to curItemHealth		set itemWeight to curItem.getWeight		PrintToConsole "%n has a new item, %n, health %.0f" actor curItem curItemHealth	endif	if (actor.isBlocking)		if blockFlag == 0		; just started blocking			set itemLiftFatigue to (0 - aaaBetterBlockingQuest.itemLiftFatigueBase +  aaaBetterBlockingQuest.itemLiftFatigueWeightMult * itemWeight * 100 / strength)			set itemHoldFatigue to (0 - aaaBetterBlockingQuest.itemHoldFatigueBase +  aaaBetterBlockingQuest.itemHoldFatigueWeightMult * itemWeight * 100 / strength)			set timer to 0			actor.modav2 fatigue itemLiftFatigue			set blockFlag to 1		else			set seconds to getSecondsPassed			set timer to timer + seconds			set fatigueDrainAmount to itemHoldFatigue * seconds			actor.modav2 fatigue fatigueDrainAmount		endif		; calculate chance to block		; factor in timing		set timingMult to 3 - (timer / aaaBetterBlockingQuest.durationMult)		if timingMult < 0			set timingMult to .5		elseif timingMult < 1			set timingMult to .5 + (timingMult / 2)		endif		; factor in fatigue		set curFatigue to actor.getav fatigue		set baseFatigue to actor.getbaseav fatigue		set fatigueMult to .5 + .5 * (curFatigue/baseFatigue)		; factor in type of item being used to block		if itemType == 7		; shield			set itemMult to 1		elseif itemType == 6		; bare hands			set itemMult to aaaBetterBlockingQuest.handtohandItemMult 		else		; weapon			set itemMult to aaaBetterBlockingQuest.weaponItemMult 		endif		; do the calculation		set blockChance to skill * timingMult * fatigueMult * itemMult		if blockChance < aaaBetterBlockingQuest.minBlockChance			set blockChance to aaaBetterBlockingQuest.minBlockChance		endif		;PrintToConsole "BB: %n Blocking, timing = %.2f, fatigue = %.2f, skill = %.0f, item = %.2f" actor timingMult fatigueMult skill itemMult		set randomNum to rand 0 100		if randomNum < blockChance			set blockSuccessFlag to 1			set blockMod to (100 - skill)			;PrintToConsole "Block skill modified from %.0f by %.0f" skill blockMod			actor.modav block blockMod		else			set blockSuccessFlag to 0			set blockMod to (0 - skill)			;PrintToConsole "Block skill modified from %.0f by %.0f" skill blockMod			actor.modav block blockMod		endif		;PrintToConsole "BB: %n Blocking, chance = %.2f, random = %.2f" actor blockChance randomNum	else	; not blocking at present		set blockFlag to 0		set timer to 0	endif	if (actor.getSoundPlaying "*Block*") && (curItemHealth < lastItemHealth)		; item has been damaged, actor just blocked an attack		set damageSustained to (lastItemHealth - curItemHealth)		set damagePercent to (damageSustained / lastItemHealth)		set shatterChance to ((damagePercent - aaaBetterBlockingQuest.shatterCutoff) * aaaBetterBlockingQuest.shatterMult /  (skill + 30) * 80)		set randomNum to rand 0 1		if randomNum < shatterChance		; item shattered			if itemType == 7				actor.setEquippedCurrentHealth 0 13				if actor == player					Message "Your shield has shattered!"				endif				actor.unequipItem curItem			elseif itemType != 6				actor.setEquippedCurrentHealth 0 16				if actor == player					Message "Your weapon has shattered!"				endif				actor.unequipItem curItem			endif		endif		PrintToConsole "Better Blocking: skill = %.0f, shatter chance = *%.4f*, random num = *%.4f*", skill, shatterchance,  randomnum		PrintToConsole "BB: %n Blocking, chance = %.2f, random = %.2f" actor blockChance randomNum		PrintToConsole "BB: %n Blocking, timing = %.2f, fatigue = %.2f, skill = %.0f, item = %.2f" actor timingMult fatigueMult skill itemMult		if curItemHealth > 0			; restore some health to the item			set restoreAmount to damageSustained * (1 - aaaBetterBlockingQuest.itemDegradeMult)			if itemType == 7				actor.modEquippedCurrentHealth restoreAmount 13			elseif itemType != 6				actor.modEquippedCurrentHealth restoreAmount 16			endif			set fatigueDrainAmount to (0 - aaaBetterBlockingQuest.strikeFatigueDamageMult * damageSustained)			actor.modav2 fatigue fatigueDrainAmount		endif		PrintToConsole "Block item has been damaged: health *%.0f* to *%.0f*: *%.3f* percent, %.0f restored", lastItemHealth, curItemHealth,  damagePercent, restoreAmount		set lastItemHealth to curItemHealth	endif ; curItemHealth < lastItemHealthend

User avatar
Erich Lendermon
 
Posts: 3322
Joined: Sat Nov 03, 2007 4:20 pm

Post » Fri Oct 08, 2010 11:47 am

I've softened some of the default settings for fatigue and weapon degradation.

Version 2 is available for general use now:

http://www.tesnexus.com/downloads/file.php?id=27947
User avatar
Sandeep Khatkar
 
Posts: 3364
Joined: Wed Jul 18, 2007 11:02 am

Post » Fri Oct 08, 2010 12:12 am

Thank you for the update, Picador.
I've tested it a little bit and it feels pretty natural. I don't really think about it when I play, which I think is a good thing. I did notice the fatigue costs to a fight has increased. I'll probably fiddle around in the ini file (thanks for that as well).

Btw if you update this mod again could you allow for the ini file to be placed inside \Oblivion\Data\ini ? (just so all my/our ini files are gathered in one place :) )
User avatar
Kirsty Collins
 
Posts: 3441
Joined: Tue Sep 19, 2006 11:54 pm

Post » Fri Oct 08, 2010 12:16 pm

Thank you for the update, Picador.
I've tested it a little bit and it feels pretty natural. I don't really think about it when I play, which I think is a good thing. I did notice the fatigue costs to a fight has increased. I'll probably fiddle around in the ini file (thanks for that as well).

Btw if you update this mod again could you allow for the ini file to be placed inside \Oblivion\Data\ini ? (just so all my/our ini files are gathered in one place :) )

I was wondering about that, actually: BAIN doesn't seem to sweep files in "ini", so I assumed that this was not the standard.

Do you know how to best situate an .ini file so BAIN will install it along with the ESPs and whatnot?
User avatar
Alisia Lisha
 
Posts: 3480
Joined: Tue Dec 05, 2006 8:52 pm

Post » Fri Oct 08, 2010 1:39 am

Funny, it was only earlier in the day I blocked an incoming spell on reflex with my shield (it got stopped anyway by my reflect spell I'd just cast) but thought to myself "wouldn't be be cool if I could actually block spells with my shield". I definatly approve of this mod =p
User avatar
Svenja Hedrich
 
Posts: 3496
Joined: Mon Apr 23, 2007 3:18 pm

Post » Fri Oct 08, 2010 1:39 pm

I was wondering about that, actually: BAIN doesn't seem to sweep files in "ini", so I assumed that this was not the standard.

Do you know how to best situate an .ini file so BAIN will install it along with the ESPs and whatnot?


I don't know how to make it suit a BAIN install. Not everyone use the BAIN method though...

btw would you mind elaborating on these settings;

; [Shatter settings]
;-------------------------------------------------------------
Set shatterCutoff to 0.02 ; default = 0.02, minimum damage (as percent) for shattering
Set itemDegradeMult to 0.1 ; default = 0.1, amount of item health lost to blocking


I don't really understand them.
User avatar
Angel Torres
 
Posts: 3553
Joined: Thu Oct 25, 2007 7:08 am

Post » Fri Oct 08, 2010 1:54 am

excellent mod idea picador! i often find myself blocking reflexively with a shield when i get attacked by a spell so at least with your mod i dont feel foolish afterwards. :P

i have a request though, could you disable the rebound that is suffered by an attacker whenever an attack is blocked, just like in Duke Patrick's combat mods? or at least make it an option. i find the block-rebound-retaliate cycle terribly boring and unrealistic. or perhaps make it so that only higher level blockers can have this OCCASIONAL chance to repel enemies?
User avatar
adam holden
 
Posts: 3339
Joined: Tue Jun 19, 2007 9:34 pm

Post » Fri Oct 08, 2010 11:45 am

btw would you mind elaborating on these settings;

; [Shatter settings]
;-------------------------------------------------------------
Set shatterCutoff to 0.02 ; default = 0.02, minimum damage (as percent) for shattering
Set itemDegradeMult to 0.1 ; default = 0.1, amount of item health lost to blocking

* shatterCutoff is the damage cutoff for weapon/shield shattering: if your weapon/shield suffers more than (shattercutoff * current item health) from blocking a single blow, it may shatter. The defauly is 2% of current item health. So if my shield has current Health 500 and I block a blow that does 10 damage or more, there's a chance that my shield may shatter.

* itemDegradeMult is the amount, relative to vanilla Oblivion, that my weapon/shield is damaged by blocking (aside from the chance of shattering). Thus, in the above example, let's assume that my shield does not shatter: in vanilla Oblivion, my shield health would be reduced to 490 by blocking a 10-point blow. With this setting at the default of 0.1, my shield only goes down to 499 health.
User avatar
Mariana
 
Posts: 3426
Joined: Mon Jun 12, 2006 9:39 pm

Post » Fri Oct 08, 2010 1:31 pm

I was wondering about that, actually: BAIN doesn't seem to sweep files in "ini", so I assumed that this was not the standard.

Do you know how to best situate an .ini file so BAIN will install it along with the ESPs and whatnot?

Wrye wanted them in a subfolder named Scripts.

There's a mod that will change BAIN to allow for "Data\INI" to be used.

Otherwise, the user has to select "Has extra folders" in BAIN by right-clicking on the mod package listing.
User avatar
Marilú
 
Posts: 3449
Joined: Sat Oct 07, 2006 7:17 am

Post » Fri Oct 08, 2010 2:28 am

excellent mod idea picador! i often find myself blocking reflexively with a shield when i get attacked by a spell so at least with your mod i dont feel foolish afterwards. :P


Just so you know, the spell-blocking feature isn't in there yet. I plan to add it as soon as I have a little time.

You may want to check out documn's "Spellshields" and "Doc Magic" mods, though. There are also a few other "spell reflect" mods out there. They all do much fancier stuff with spell-blocking than my mod.

i have a request though, could you disable the rebound that is suffered by an attacker whenever an attack is blocked, just like in Duke Patrick's combat mods? or at least make it an option. i find the block-rebound-retaliate cycle terribly boring and unrealistic. or perhaps make it so that only higher level blockers can have this OCCASIONAL chance to repel enemies?


Yes, I think someone aside from Duke Patrick is working on this... search around the forums for "stagger" and "block", it shoudl turn up. Or ask SkyCap; I think he has worked this out as well.
User avatar
Emily Shackleton
 
Posts: 3535
Joined: Sun Feb 11, 2007 12:36 am

Post » Fri Oct 08, 2010 3:40 pm

* shatterCutoff is the damage cutoff for weapon/shield shattering: if your weapon/shield suffers more than (shattercutoff * current item health) from blocking a single blow, it may shatter. The defauly is 2% of current item health. So if my shield has current Health 500 and I block a blow that does 10 damage or more, there's a chance that my shield may shatter.

* itemDegradeMult is the amount, relative to vanilla Oblivion, that my weapon/shield is damaged by blocking (aside from the chance of shattering). Thus, in the above example, let's assume that my shield does not shatter: in vanilla Oblivion, my shield health would be reduced to 490 by blocking a 10-point blow. With this setting at the default of 0.1, my shield only goes down to 499 health.


Thank you very much for the perfect explanation, Picador. I get it now. Very clever mechanics actually. :)

From earlier in the thread:
2. Yeah, V&C is sort of an extended hiatus. I haven't touched it or used it in my current game. Instead, I've been using and really enjoying Tejon's Birthsigns Revisited mod, which is animated by a very similar spirit to V&C, namely the goal of having different character "types" that actually feel very different from each other. I've been playing as an Apprentice, and the entire game (up to level 7 so far) feels completely distinct due to that birthsign. I'm looking forward to playing as a Shadow or a Ritual as well. V&C may have been too ambitious and unwieldy: it tries to incorporate a lot of things, and they're not always compatible or graceful together. I may try to break it down into more modular bits -- a death tracker, a "set fire to stuff" mod, etc. The surrender/truce system has already been redone better, and I think this may be the fate of VC's subsystems in the long run.


I'm a huge fan of V&C so I'm glad to hear you're not completely done with it. I like it for the same reason you give for using Tejon's Birthsigns Revisited (which I now think I'll try out) but I think the religious/deity/daedra way of "gaining" the abilities in V&C is better than using Birthsigns.
The birthsigns mainly give distinct advantages but what I like about V&C is the restrictions put on you as well. Maybe that's where you focus should be if you update it again. I can think of only 1 mod (Role-Playing Character 2.0 by Cliffworms) that allows you to "gain" disadvantages. To me disadvantages is as fun & effective way of creating a unique character as advantages is.


About Better Blocking:
I was thinking about different types of fighters and how they use shields and wether this mod (implicitly) takes this into account. Say, a huge barbarian with a huge heavy shield: He would be better at blocking puny attacks from goblins, than a nimble thief using a small buckler would be.
Now, the thief wouldn't necessarily be the worse fighter of the two; he might beat the barbarian by using fast attacks and blocking intelligently as to not take all of the impact of each tough blow from the barbarian.
Is there anything in the mod that takes this into account? (I guess the Block skill in a way cover this... hmm...)
User avatar
*Chloe*
 
Posts: 3538
Joined: Fri Jul 07, 2006 4:34 am

Post » Fri Oct 08, 2010 2:58 pm

About Better Blocking:
I was thinking about different types of fighters and how they use shields and wether this mod (implicitly) takes this into account. Say, a huge barbarian with a huge heavy shield: He would be better at blocking puny attacks from goblins, than a nimble thief using a small buckler would be.
Now, the thief wouldn't necessarily be the worse fighter of the two; he might beat the barbarian by using fast attacks and blocking intelligently as to not take all of the impact of each tough blow from the barbarian.
Is there anything in the mod that takes this into account? (I guess the Block skill in a way cover this... hmm...)


I agree, there definitely would be a difference in blocking power between someone strong as opposed to a weaker character.

Perhaps you could factor strength and endurance into how long you can hold an effective block for, and how much of the blow you can absorb.

I mean, if you think about it, a big strong Nord could simply hold up his shield while a small character wacks away at it.

The thief is the one who must use proper timing and deflect the blows.
User avatar
aisha jamil
 
Posts: 3436
Joined: Sun Jul 02, 2006 11:54 am

Post » Fri Oct 08, 2010 4:02 am

Great; downloading.

Two things!
1. Blocking with weapons is/should be parrying as much as blocking; you don't break a weapon with a good parry. Thus your skill should determine if you break a weapon, it should not get broken from a blocking maneuver unless you do it badly and the weapon has to take all the power of the other weapon in a bad way instead of deflecting it. Shields are very hardy and should be VERY hard to get broken - they are designed to take hits.

2. Kuertee has done the mod Attribute-based and skill-based damage modifiers for a easy and intuitive way to increase damage - also it is all adjustable in the ini. http://www.tesnexus.com/downloads/file.php?id=23062
I only pointed out his mod since there was some discussion early on about upping the damage.

Thank you for your hard work! :goodjob:

Cheers!
User avatar
Juan Suarez
 
Posts: 3395
Joined: Sun Nov 25, 2007 4:09 am

Post » Fri Oct 08, 2010 11:34 am

1. Blocking with weapons is/should be parrying as much as blocking; you don't break a weapon with a good parry. Thus your skill should determine if you break a weapon, it should not get broken from a blocking maneuver unless you do it badly and the weapon has to take all the power of the other weapon in a bad way instead of deflecting it. Shields are very hardy and should be VERY hard to get broken - they are designed to take hits.

Remember that after Block skill 50, your blockiing item no longer takes any damage (which means no chance of shattering). I think that rule pretty much covers the dynamic you're describing.

Also, I'm not so sure about the shield-shattering thing -- I'm sure the reality is highly variable, but I recently heard anecdotal evidence about old Viking rules of dueling in which each combatant was allowed three shields, which could be swapped in as they were broken. In any case, I'm not going for "realism", but "fantasy realism", and I'm pretty sure Conan and Lancelot have hewn the shields of more than one enemy soldier in their day.

2. Kuertee has done the mod Attribute-based and skill-based damage modifiers for a easy and intuitive way to increase damage - also it is all adjustable in the ini. http://www.tesnexus.com/downloads/file.php?id=23062

Yes, I haven't tried that one, but there are plenty of damage mods out there to suit different tastes.
User avatar
Solina971
 
Posts: 3421
Joined: Thu Mar 29, 2007 6:40 am

Post » Fri Oct 08, 2010 7:54 am

To add to the ideas of increasing relative reality factors. A well timed block with a shield should have a edge over a small one, cant really say about weapons though. However, trying to hold up a heavier shield naturally should cost more fatigue to endure. Though I see you already included the latter in your formulae ^^

Keep it up, this looks like a mod I will enjoy for desert.
User avatar
josie treuberg
 
Posts: 3572
Joined: Wed Feb 07, 2007 7:56 am

Post » Fri Oct 08, 2010 4:57 am

Sounds very interesting but I dont see a download linky or a mention if its an OBSE or vanilla Oblivion mod
User avatar
A Boy called Marilyn
 
Posts: 3391
Joined: Sat May 26, 2007 7:17 am

Post » Fri Oct 08, 2010 6:25 am

Sounds very interesting but I dont see a download linky or a mention if its an OBSE or vanilla Oblivion mod

Sorry, link got posted late in the thread... I've put it up front now.

It does require OBSE. The description at TES Nexus makes that clear, as does the README.
User avatar
Sara Johanna Scenariste
 
Posts: 3381
Joined: Tue Mar 13, 2007 8:24 pm

Post » Fri Oct 08, 2010 7:34 am

You are probably right about the shields; it was just something I read somewhere but I did not research it - bad call from me, sorry.

Missed the "over 50" skill thing - you got that covered, great :goodjob:

Haven't had time to play for the last week, but I hope to use this with the rest of the Oubliette I got left.

Cheers!
User avatar
Chris Johnston
 
Posts: 3392
Joined: Fri Jul 07, 2006 12:40 pm

PreviousNext

Return to IV - Oblivion