Riposte: Check EV after a block


Although the central place for design discussion is ##crawl-dev on freenode, some may find it helpful to discuss requests and suggestions here first.

Swamp Slogger

Posts: 146

Joined: Wednesday, 30th August 2017, 23:08

Post Wednesday, 11th April 2018, 18:04

Riposte: Check EV after a block

There is a "hidden malus" for using long blades (or Fencer's Gloves) and a shield. Since blocking is checked before evasion, you could block an attack, and never get a chance to evade - if you can't evade, you can't riposte. While I don't understand the reasons why you can't riposte a blocked attack, I do understand that the clarity of "the better you are at dodging, the more often you riposte." So, I suggest that we make a slight tweak - rather than checking dodge first (which I suspect would make reflection worse,) we should simply check evasion when an attack is successfully blocked, so the riposte can trigger.

I'm not interested in how important this hidden malus is (my gut says "not very,") but it does feel weird that shields make the special ability unique to long blades worse, while they don't do the same for stabbing, cleaving, or reaching. The least destructive way to fix it seems to me to be to simply do a special evasion check when blocking to trigger riposte. It feels like a small balance change in the first place, and there might be some confusion as to why you can block an attack and still riposte, but it feels like that could be communicated better than the current system of "wearing a shield is bad for your special sword ability."

Ziggurat Zagger

Posts: 8786

Joined: Sunday, 5th May 2013, 08:25

Post Wednesday, 11th April 2018, 18:36

Re: Riposte: Check EV after a block

Checking EV first would be a buff to shields, because SH rolls are penalized (quite harshly) depending on how many you've already made this turn whereas EV is not.

How about just making riposte independent of EV, SH, etc. altogether? If something attacks you in melee, whether it hits or not, you get a 33% (or 50% or whatever) chance of riposte. This would make riposte WAY easier to analyze.

For this message the author duvessa has received thanks: 3
le_nerd, nago, Terrapin

Tomb Titivator

Posts: 808

Joined: Sunday, 23rd June 2013, 15:20

Post Wednesday, 11th April 2018, 19:05

Re: Riposte: Check EV after a block

Also please remove hidden shield penalty! The only reason for it to exist ist "realism".

For this message the author le_nerd has received thanks: 4
duvessa, nago, Shard1697, Vajrapani

Ziggurat Zagger

Posts: 8786

Joined: Sunday, 5th May 2013, 08:25

Post Wednesday, 11th April 2018, 19:44

Re: Riposte: Check EV after a block

le_nerd wrote:Also please remove hidden shield penalty! The only reason for it to exist ist "realism".
I suppose the devil's advocate position is that it gives shields "anti-synergy" with cleaving, and axes being biased towards not using shields is cool somehow.

For this message the author duvessa has received thanks:
le_nerd

Slime Squisher

Posts: 344

Joined: Tuesday, 14th April 2015, 19:56

Location: France

Post Wednesday, 11th April 2018, 21:02

Re: Riposte: Check EV after a block

Also checking EV before SH would mean the reflection ego (or amulet) would trigger less.
3 runes : MiMo^Ru, HOFi^Beogh, TrMo^Yredelemnul, GrFi^Ru, FoFi^Gozag, MiGl^Okawaru
4 runes : DDFi^Makhleb
5 runes : GrEE^Vehumet
15 runes : MiFi^Ru, NaWz^Sif Muna, GrWz^Sif Muna
I mostly play offline or online on CXC

Abyss Ambulator

Posts: 1193

Joined: Friday, 16th January 2015, 20:20

Post Thursday, 12th April 2018, 01:31

Re: Riposte: Check EV after a block

Check EV & SH in randomized order!
User avatar

Zot Zealot

Posts: 982

Joined: Monday, 29th September 2014, 09:04

Post Thursday, 12th April 2018, 02:55

Re: Riposte: Check EV after a block

Proc riposte if you dodge OR block

Halls Hopper

Posts: 66

Joined: Wednesday, 7th March 2018, 04:46

Post Thursday, 12th April 2018, 04:15

Re: Riposte: Check EV after a block

I have no sense of how much work this is... but can't we just roll both block and dodge?


If you roll success for block AND dodge, then you block and can riposte.

If you roll success for block but not dodge, then you block but cannot riposte.

If you roll success for dodge but not block, then you dodge and can riposte.

If both fail, you get nothing - good day, sir!


I'm also okay with an independent roll like duvessa mentioned, although the "EV is good with swords" message does get lost, not sure if I think that's good or bad.

For this message the author Realz has received thanks:
genericpseudonym
User avatar

Slime Squisher

Posts: 406

Joined: Thursday, 1st March 2012, 01:42

Post Thursday, 12th April 2018, 10:38

Re: Riposte: Check EV after a block

I personally think its ok. I mean, Shields have been bit of a no brainer with 1-handed weapons for quite a bit of time now and they still are very good with 1-handed swords. Having a small compensation to keeping your offhand free as you transition to 2H swords sounds fun to me. I also like how its related to EV.

Slime Squisher

Posts: 395

Joined: Monday, 28th April 2014, 19:50

Post Thursday, 12th April 2018, 18:15

Re: Riposte: Check EV after a block

Shields are still a no-brainer as the increased defense is worth far more than the slight decrease in damage from lost ripostes.
Block preventing riposte is an awkward and ugly anti-synergy, and the game would be better off and more elegant without it, but it's not actually very meaningful in terms of balance.

Ziggurat Zagger

Posts: 6454

Joined: Tuesday, 30th October 2012, 19:06

Post Thursday, 12th April 2018, 18:35

Re: Riposte: Check EV after a block

Just to give a sense of scale here I did 3 trials each with FSIM:
A human, with no shield, a +0 great sword with 27 in fighting and long blades, 10 in strength and dex against a stone giant
  Code:
with 30 Evasion (65-66% dodged attacks) an average of 14.3 damage and
with 1 Evasion (3-4% dodged attacks) an average of 14.0666 damage


A net bonus of 1.7% bonus damage for going from 1 to 30 evasion, if shields half that, that's a 0.85% difference in the total damage done.

I slightly wonder if FSIM somehow doesn't deal properly with riposte, or if the extra damage is just really really that low, it seems like it should be closer to 20% than 2%, it's odd because it appears that FSIM properly handles minotaur headbutt, and *some* damage does appear to be generated in FSIM from riposte.
Spoiler: show
This high quality signature has been hidden for your protection. To unlock it's secret, send 3 easy payments of $9.99 to me, by way of your nearest theta band or ley line. Complete your transmission by midnight tonight for a special free gift!

For this message the author Siegurt has received thanks: 2
genericpseudonym, Shard1697

Crypt Cleanser

Posts: 689

Joined: Saturday, 12th December 2015, 23:54

Post Thursday, 12th April 2018, 20:40

Re: Riposte: Check EV after a block

I'm pretty sure that fsim is not accurate, but it's not too hard to calculate in this particular example.

If you simplify away all the things that make riposte damage complicated (monsters that do things other than melee, monster speed, monsters with multiple attacks, etc) then it's easy-ish to calculate the theoretical value of riposte damage. Stone giant is a pretty good test monster for this since it attacks once at normal speed and can't do other stuff from melee range. Treating riposte as equivalent to pressing tab once is pretty good for a naive analysis since it functions similarly in most "I am just meleeing one dude" circumstances (it can miss, applies weapon brand, and has the normal chances for aux attacks so there's no extra weirdness until you start adding stuff like spells into the mix). Recall that there's a 33% chance to riposte on dodge.

Against a stone giant or any other normal attack speed monster that attacks once and doesn't do other stuff:
If the chance to dodge is 2/3 (being a little generous on the 30 EV case), you get 2/3*1/3= 2/9, or ~22.2% of a tab on average per 10 aut. This does not correspond to a 22.2% damage increase from riposte unless you're attacking once per 10 aut; it's less if you are swinging faster and more if you're swinging slower or doing things other than meleeing.
If the chance to dodge is 3%, you get 0.03*1/3, a nice clean 1% of a tab per 10 aut. Again, this does not correspond to a 1% damage increase unless you are attacking exactly once per 10 aut.

If your great sword is at mindelay and you are tabbing the stone giant without taking other actions while it's in melee range, multiply both of those values by 0.7 to account for the fact that you're swinging a lot more often than the stone giant is. The damage difference between the two cases is just under 15%.

Naturally, it's more complicated to figure out riposte chance if the monster has multiple attacks or if the monster can do things that aren't melee. That's why I used stone giant as the example for my riposte shitpost thread. It's also important to note that adding a fixed amount of EV does not have the same effect on dodge chance for all values of starting EV, so going from 11 EV to 40 EV will have less of an effect, in addition to being harder to do. It's also also important to note that monster chance to hit is based on a couple of opaque things that aren't listed anywhere in-game, so unless you like querying Sequell a lot it's not trivial to figure out for every monster.

Ziggurat Zagger

Posts: 6454

Joined: Tuesday, 30th October 2012, 19:06

Post Thursday, 12th April 2018, 21:52

Re: Riposte: Check EV after a block

Hellmonk wrote:I'm pretty sure that fsim is not accurate, but it's not too hard to calculate in this particular example.

If you simplify away all the things that make riposte damage complicated (monsters that do things other than melee, monster speed, monsters with multiple attacks, etc) then it's easy-ish to calculate the theoretical value of riposte damage. Stone giant is a pretty good test monster for this since it attacks once at normal speed and can't do other stuff from melee range. Treating riposte as equivalent to pressing tab once is pretty good for a naive analysis since it functions similarly in most "I am just meleeing one dude" circumstances (it can miss, applies weapon brand, and has the normal chances for aux attacks so there's no extra weirdness until you start adding stuff like spells into the mix). Recall that there's a 33% chance to riposte on dodge.

Against a stone giant or any other normal attack speed monster that attacks once and doesn't do other stuff:
If the chance to dodge is 2/3 (being a little generous on the 30 EV case), you get 2/3*1/3= 2/9, or ~22.2% of a tab on average per 10 aut. This does not correspond to a 22.2% damage increase from riposte unless you're attacking once per 10 aut; it's less if you are swinging faster and more if you're swinging slower or doing things other than meleeing.
If the chance to dodge is 3%, you get 0.03*1/3, a nice clean 1% of a tab per 10 aut. Again, this does not correspond to a 1% damage increase unless you are attacking exactly once per 10 aut.

If your great sword is at mindelay and you are tabbing the stone giant without taking other actions while it's in melee range, multiply both of those values by 0.7 to account for the fact that you're swinging a lot more often than the stone giant is. The damage difference between the two cases is just under 15%.

Naturally, it's more complicated to figure out riposte chance if the monster has multiple attacks or if the monster can do things that aren't melee. That's why I used stone giant as the example for my riposte shitpost thread. It's also important to note that adding a fixed amount of EV does not have the same effect on dodge chance for all values of starting EV, so going from 11 EV to 40 EV will have less of an effect, in addition to being harder to do. It's also also important to note that monster chance to hit is based on a couple of opaque things that aren't listed anywhere in-game, so unless you like querying Sequell a lot it's not trivial to figure out for every monster.


It's pretty clear to me that something about the FSIM I did was inaccurate, I just wasn't sure if it was a bug in FSIM or a bug in riposte. What's confusing is that I repeated the FSIM several times to make sure it was an actual difference, and not just statistical noise, and I *repeated* the same batch of trials with FSIM after posting, with substantially the same results. What confuses me about this is that there's *some* extra damage added by adding the EV (by way of wearing a +29 EV ring, FWIW), I'd expect either the published value (the ones you did the math to get, and I eyeballed in my head) or get no difference at all from FSIM (If riposte is simply ignored)

If FSIM is in fact totally ignoring riposte (Which if so, should probably be fixed), where does that extra damage come from when wearing an EV ring? I may have to pull up the code when I'm off work to see what the heck is going on here.
Spoiler: show
This high quality signature has been hidden for your protection. To unlock it's secret, send 3 easy payments of $9.99 to me, by way of your nearest theta band or ley line. Complete your transmission by midnight tonight for a special free gift!

Temple Termagant

Posts: 10

Joined: Thursday, 18th August 2011, 11:33

Post Friday, 13th April 2018, 06:57

Re: Riposte: Check EV after a block

Could reposte just be a function of Dexterity, let's say 50% chance at 50 dex, 0% chance at 0 dex, and independent of block and dodge?
Not a linear function, but for example shape of sqrt(), or something.

bel

Cocytus Succeeder

Posts: 2184

Joined: Tuesday, 3rd February 2015, 22:05

Post Saturday, 14th April 2018, 04:10

Re: Riposte: Check EV after a block

I have never understood riposte: doesn't riposte IRL denote a maneuver after you parry an attack, not when you evade an attack? Evasion in Crawl has nothing to do with the weapon you hold (unless it is some sort of artifact with +EV or +Dex), so what is putting riposte on long blades meant to signify?

In Sil, Riposte is a skill you learn, and can activate on every weapon. (Long blades often have evasion bonuses in Sil).

For this message the author bel has received thanks:
duvessa

Ziggurat Zagger

Posts: 8786

Joined: Sunday, 5th May 2013, 08:25

Post Saturday, 14th April 2018, 05:37

Re: Riposte: Check EV after a block

It signifies nobody being able to think of a good gimmick for long blades

For this message the author duvessa has received thanks: 2
genericpseudonym, Rast

Blades Runner

Posts: 616

Joined: Thursday, 25th October 2012, 03:19

Post Saturday, 14th April 2018, 11:04

Re: Riposte: Check EV after a block

duvessa wrote:It signifies nobody being able to think of a good gimmick for long blades


"One of the advantages of using a blade is it doesn’t require a lot of strength or power to be effective. As long as it’s sharp, the blade will do most of the work. Let the blade do its job. Control the path of the blade and make your cuts and thrusts fluid and smooth. Smooth is fast. Anyone can use blade; what differentiates a master of the blade from a novice is the ability to flow from one cut to another with speed and precision."

Strength weighting distinguished long blades from maces..... *cough*, and if it didn't enough, then it should have been amplified rather than removed. If it was too mysterious, then list it in the weapon description.

Perhaps they should cause bleeding. Perhaps they should parry.
User avatar

Tartarus Sorceror

Posts: 1698

Joined: Saturday, 18th June 2016, 13:57

Post Saturday, 14th April 2018, 12:37

Re: Riposte: Check EV after a block

They could have both parry and riposte.
I Feel the Need--the Need for Beer
Spoiler: show
3DSBeTr 15DSFiRu 3DSMoNe 3FoHuGo 3TrArOk 3HOFEVe 3MfGlOk 4GrEEVe 3BaIEChei 3HuMoOka 3MiWnQaz 3VSFiAsh 3DrTmMakh 3DSCKXom 3OgMoOka 3NaFiOka 3FoFiOka 3MuFEVeh 3CeHuOka 3TrMoTSO 3DEFESif 3DSMoOka 3DSFiOka

Snake Sneak

Posts: 102

Joined: Thursday, 23rd November 2017, 02:14

Post Saturday, 14th April 2018, 14:33

Re: Riposte: Check EV after a block

duvessa wrote:a good gimmick for long blades

+SH on all long blades

Dungeon Master

Posts: 388

Joined: Monday, 18th August 2014, 20:04

Post Wednesday, 18th April 2018, 22:19

Re: Riposte: Check EV after a block

I'm pretty sure that fsim is not accurate


fsim didn't handle retaliation damage at all, there wasn't even any place where it would be visible (for "Attack", it showed the damage the player did to the monster when the player hit the monster, and for "Defense", the damage that the monster did to the player when the monster hit the player). I've refactored fsim to track both damage done and damage taken for attack and defense. Here's an example of what trunk now does on a quick fsim for a random char (skill level 0 IIRC) attacking a porcupine with a longsword:

  Code:
Created a porcupine.
         Source | AvHitDam | MaxDam |  Acc | AvDam | AvTime | AvSpd | AvEffDam
 Attack: Player |      6.9 |     25 |  44% |   3.1 |   140  |  0.71 |      2.2
 Attack:   Mons |      9.5 |     19 |  35% |   3.4 |   140  |  0.71 |      2.4
 Defend: Player |      6.3 |     23 |   6% |   0.4 |    83  |  1.20 |      0.5
 Defend:   Mons |      5.0 |     13 |  59% |   3.0 |    83  |  1.20 |      3.6

For this message the author advil has received thanks: 5
genericpseudonym, Patashu, Rast, stickyfingers, VeryAngryFelid

Return to Game Design Discussion

Who is online

Users browsing this forum: No registered users and 34 guests

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group.
Designed by ST Software for PTF.