Viewing Issue Simple Details Jump to Notes ] Wiki ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0001465 [DCSS] Bug Report minor always 2010-05-02 15:37 2010-05-11 23:54
Reporter OG17 View Status public  
Assigned To Cryptic
Priority normal Resolution won't do  
Status closed   Product Branch 0.7 ancient branch
Summary 0001465: Retaliatory effects don't trigger for reaching turtles
Description Guessing that turtles are based on the reaching weapon code, and while it makes sense that an enemy attacking from range with a reaching weapon doesn't take damage from spines or passive freezing, it stops making sense when that enemy is attacking with its face.
Additional Information
Tags No tags attached.
Attached Files

- Relationships

-  Notes
Cryptic (developer)
2010-05-02 16:50

From a code standpoint, this is because spines and passive freezing make checks to the distance of the attacking monster from the character, requiring the monster to be precisely one square away (melee range). Reaching attacks are obviously 2, including turtles.

I am wary of changing this because 1) special casing is bad and 2) explanation of why these muts don't do damage to turtles could take multiple avenues, each making as much sense as the next. Furthermore, there's not a balance issue here, since you can take that one extra step and turtles / reach-wielding monsters won't try and get back to evoke-reach range, they'll happily bash you from melee range.
OG17 (reporter)
2010-05-02 23:40
edited on: 2010-05-02 23:51

Special cases are "bad" only when unnecessary; this shouldn't be anything of a factor in implementing otherwise desirable changes. Turtles having reaching attacks at all is a "special case," at that, and it's entirely appropriate to tweak things here to reflect the fact that they're using natural attacks instead of the code's originally intended equipped weapons.

If you really need balance issues to fix something like this: turtles get an attack on approach, they can continuously attack from behind other monsters, and their fleeing means that they can create a gap that the player might not immediately close - there'd be little reason for the creatures to have reaching attacks at all if they were so easily circumvented. As for the numerous unspoken explanations, it seems to me like sticking your head into an urchin or ice field is going to do the same thing no matter how far away you're standing - if they're immune at two squares, they also should be immune at one.

OG17 (reporter)
2010-05-03 06:11

Actually, speaking of special cases, does the game recognize when an attack is made by an equipped weapon, or when an attack is made by reaching? If so, wouldn't it be better to have retaliatory effects trigger off any non-weapon reaching attack, as well as any non-reaching melee attack? I mean, I'm not a programmer and this most likely wouldn't be an ideal setup, and in fact it may not even be feasible, but the current implementation seems minimally robust (as is already demonstrated by turtles).

It's basically lucky coincidence that retaliation works for krakens right now, and flat "one square away" code isn't going to hold up for any number of possible future effects, never mind other (or longer-ranged) natural reaching attacks (as proposed for plants, etc.) - you're setting yourself up for more special cases, if anything. The intention behind "special casing is bad" is to code to allow for unforseen additions, not to leave things unfixed because they'd require an exception under the current framework.
simon (reporter)
2010-05-03 07:24

It seems to me that the snapping action is too fast for freezing to effect the turtle's head much. I could see spines working, but I could also see the turtle's skin being thick enough that only its soft underbelly can hurt by weapons and pointy body parts.. although I guess that doesn't explain why spines start hurting its head when you get to close range. It seems to me that monsters are so abstract in roguelikes that if you start trying to make specific adjustments for real-world logic you can go on forever, and then you'd just be remaking Nethack.
Cryptic (developer)
2010-05-03 16:45

I can't speak as to the mechanics of determining if a given attack is being performed by a reaching weapon or not, and yes, a uniform system of determining if a given attack is being performed by a natural (non-weapon) reaching attack would be the best to determine if spines / freezing should take effect.

Simon has a similar point on the matter ; the same point I was trying to get to in my previous posts. We cannot (and will not) special case this and that and the other thing getting it to work. That being said, we try and plan ahead to see the need for certain monster flags (in this case, a flag indicating that the monster can perform a reaching attack that's still technically in melee range) but I don't know if such a flag exists or if Turtles are special cased in the combat code to get 2-space melee attacks.

Judging from your other bug report about turtles attacking while they flee, I can only guess that they were special cased. If we see the need to add the aforementioned monster flag, and get it coded in for turtles, I'll be happy to rewrite the spine code to include a check for that monster flag. But coding for a special-check to a special attack to a special species which (presently) is the only one (or one of a 2-3 monster group) with this type of natural attack isn't going to happen when the issue isn't game play related (this is a logic-issue, where it seems logical for one thing to happen, but something else is actually occurring).
OG17 (reporter)
2010-05-03 23:30

No offense, but you're going to see a lot of problems down the line if your design philosophy combines primarily considering things as they currently are (turtles being the only broken enemy (and presuming that there won't be any high-EV spiny enemies in 1464)) with an iron-clad aversion to adding special cases to address issues that the narrow original implementation didn't take into account.

Regardless, if natural reaching attacks (which just might be more widespread someday!) themselves are at all gameplay-related, having them work with retaliation is equally gameplay-related for characters that have such effects (which could even be available through spells or brands someday!). This is in no way an academic issue.

And I'm not sure what Simon's intention was, but it seems to be a better argument for not making up excuses as to why natural reaching attacks are immune to retaliation than it is for anything else.
dpeg (administrator)
2010-05-03 23:43

This is not a problem right now. We assume that anything doing a reaching attack is fast enough or far away enough to not be bothered by spines etc.

Yes, this may not be the most realistic approach, but there's no gameplay balancing reason to add that effect (without it, those turtles are harder, which is okay).

My point would be not code hygiene so much, but simplicity: reaching attacks are treated equal. Once/if we have more reaching monsters and/or more retaliation effects, it may become interesting to diversify those attacks or effects. But for now, with the very limited instances, there's no need to give in to realism.

(And here's my interpretation of Simon's comment: Nethack would probably go for that special case simply because it seems nifty and TDTTOE. But in Crawl, we always look at balance first. After that, at consisteny. Balance-wise, either would be fine (it doesn't really matter much). And I don't feel the current situation to be particularly antagonistic... otherwise you'd end up wondering why monster A got reaching but not monsters B etc.)
KiloByte (manager)
2010-05-04 11:50

I don't see any simplicity gains from the user's point of view by making snapping turtles somehow immune to spines. And them not getting hurt is really contrary to what one would expect.
rob (developer)
2010-05-04 11:59

I agree that this is a bug. I'd suggest to solve this by having spines only work on non-weapon attacks. A reaching special case would not be required at all, and this would nerf spines while making them more interesting.

Added to [^] in case we want to close the issue and delay this.
dpeg (administrator)
2010-05-04 12:04

I like rob's proposal.

Cryptic, do you think that'd be a good way to set up DS spines?
OG17 (reporter)
2010-05-04 12:34

That'd be great on the player's end, but if eventual monster spikes had the same behavior, they'd only be an issue for unarmed, auxillary, and companion attacks - is that okay?
Cryptic (developer)
2010-05-04 16:40

Spines are already in a pretty nice place as far as damage and to-hit penalties based on body armour EVP. It tends to 1-shot bats and rats and such on occasion, but other than that its well balance and scales well for usefulness in mid to late game.

Changing it to unarmed strikes will significantly devalue it, since hardly anything by mid to late game is unarmed (except trolls, dragons, and draconians) but most of the early game things are unarmed. Its certainly feasible, but I don't know if its an improvement.
rob (developer)
2010-05-04 16:49

1. most end-game melee threats are unarmed, e.g. stone giants, titans, the dragons you mention above, electric golems, orb guardians, killer klown, demons, all mummies

2. I can't say for sure about the balance, but according to what some people with usually reliable judgement have been saying, if they're not overpowered at the moment they must have been a short time ago.
dpeg (administrator)
2010-05-04 16:54

I agree that having spines only work against unarmed monsters would be okay, from a player perspective.

However, I strongly believe that we should extend the spines mechanic to some monsters (spiny frog, spiny worm) -- this would distinguish these monsters so much better, and add a lot of consistency, of course. Now, if spines are useless against weapons, then the monster spines' effect would be almost always flavour only. (And produce FRs about how you can disable secondary unarmed attacks.)

Therefore, I'd rather like to keep the current mechanic. If the spines mutation needs to be toned, then so be it.
KiloByte (manager)
2010-05-04 21:28

Uhm, "hardly anything by mid to late game is unarmed"? How so?

* demons: save for laughable red devils, unarmed
* undead: except for skeleton warriors, unarmed
* Zot: dragons, orbs of fire, liches, orb guardians... unarmed. Draconians are weak in comparison.
* Slime: all unarmed
* Hells, Pan, Abyss, Crypt, Tomb: see "demons" and "undead"

Among mid-game branches:
* Lair: all unarmed
* Orc: nearly all armed
* Hive: all unarmed
* Swamp: all unarmed
* Snake: ~3/4 armed
* Shoals: male merfolk
* Vaults: nearly all unarmed (bows/crossbows are not used in melee)

Thus, if spines are useless against weapons, the mutation would definitely not be flavour only. And realism is an important thing, especially if it can be added at no cost to playability.
KiloByte (manager)
2010-05-04 21:31

And realism-wise, getting hurt by some spines when you poke someone with a 2m-long trident is quite bad a bug.

It would be possible to penalize short blades and hand axes only, but it's simpler and as good to draw the line at unarmed. If that troll has to wield a stick or throw a rock, it's not a bad thing.
dpeg (administrator)
2010-05-04 21:34

kilobyte, please read again what I wrote. Yes, spines working against unarmed only would definitely be an option. (It's the first line in my previous comment.)

But after that I proceed to explain how spiny monsters should also have spines (i.e. the very mechanic we're discussing). If *those* spines only work against unarmed attacks (i.e. players not using weapons), then *those* spiny monsters would have their shiny new spiny attacks mostly for flavour.
KiloByte (manager)
2010-05-04 22:03

Yeah, so we would sacrifice a significant dose of realism for a single monster (spiny frog, spiny worms are rarer than Daevas). Even if you're against TDTTOE, let's not degenerate to "The Dev Team Doesn't Think About Basics".
OG17 (reporter)
2010-05-04 23:54

This may be a tangent, but spiny frogs are already dangerous, but in a good way; having them deal extra damage when attacked in melee would be overdoing things, and if they were otherwise nerfed to make up for it, they'd become that much easier for ranged characters to deal with (along with armed characters, perhaps). Basically, frogs aren't lacking, and as it's only their name that suggests they should have spines, that could be addressed in their description (eg "has jagged spines extruding from its joints" or "has short spines running down its back" - something where they're not pincushions).

Anyway, you hardly see any worms, yeah, but any demons and DS monsters could still be a concern.

And current spines are definitely ridiculous - it's a great deal of entirely free damage that lets you kill things you might otherwise barely be able to hit. For fleeing enemies, it turns taking damage into a safety net (not that you even need to take damage, as it even triggers off misses). It's particularly a joke with hydras and other enemies with multiple or fast attacks (try it with an executioner some time, it turns into a game of how little HP you can start with).
Cryptic (developer)
2010-05-05 00:03

After discussion with dpeg earlier (much earlier) today, it was agreed upon that EV should be checked with regard to monsters attacking a player with spines. This will address issues with both low HD (bats, rats, kobolds, orcs) and higher HD (executioners, etc.) being so susceptible to taking damage by spines.

Spiny frogs and worms will inevitably get spines, since its a nice addition and should be fairly easy to implement, with some minor recoding and modularity. I agree that spiny frogs can already be quite a challenge, so this addition might imply reducing their damage or speed to compensate.

Kilo, regarding realism, its just as realistic to explain that attacks (even with a wielded weapon) get close enough to the target to allow them to shift into the attack and cause you to hit yourself (in addition to them) on the spines. Or, alternatively, attacks which "miss" didn't make contact with the character, but its makes similar sense to conceptualize an attack that swept by the player and didn't catch him in contact, but was close enough for the spines to snag the attacker.

If you still can't conceptualize any of this, grab a paring knife and go take a few swipes at a rose bush. You can hit the outer leaves without getting yourself caught on the spines, but try and take a quick slice at an inner branch and you'll find your arm aplenty with scratches.

The fact is that its just as easy to conceptualize one way as it is the other.
KiloByte (manager)
2010-05-05 10:19

I already mentioned that while that kind of reasoning may be correct about knives, it's utterly wrong for a bardiche, spear, whip or a longsword.
Cryptic (developer)
2010-05-11 23:30

Spines now checks EV and damage done to player, so spines can be dodged and if no damage is done to the player spines are not triggered (no message is even displayed in either case for terseness).
dpeg (administrator)
2010-05-11 23:40

Instead of retaliating only on unarmed attacks, I'd be fine with not retaliating on reaching attacks. (This is with the plan that all polearms will get the reaching brand.) Another compromise would be this: polearm attacks don't get retaliation, no matter if they at distance 1 or 2.
Cryptic (developer)
2010-05-11 23:54

Spiny is good in its present state, both balance wise and from a gameplay standpoint. Although there are small tweaks that could be made to its operation so that spiny would proc for non-weapon reaching attacks (like snapping turtles) or for unarmed attacks only, these changes are very circumstance dependent and such additions could introduce new bugs or hamper code maintainability.

Spiny will not be changed with regard to reaching attacks for turtles. Thanks for all the great discussion!

- Issue History
Date Modified Username Field Change
2010-05-02 15:37 OG17 New Issue
2010-05-02 16:46 Cryptic Assigned To => Cryptic
2010-05-02 16:50 Cryptic Note Added: 0004532
2010-05-02 23:40 OG17 Note Added: 0004564
2010-05-02 23:50 OG17 Note Edited: 0004564
2010-05-02 23:51 OG17 Note Edited: 0004564
2010-05-03 06:11 OG17 Note Added: 0004578
2010-05-03 07:24 simon Note Added: 0004580
2010-05-03 16:45 Cryptic Note Added: 0004590
2010-05-03 23:30 OG17 Note Added: 0004607
2010-05-03 23:43 dpeg Note Added: 0004609
2010-05-04 11:50 KiloByte Note Added: 0004613
2010-05-04 11:59 rob Note Added: 0004614
2010-05-04 12:04 dpeg Note Added: 0004615
2010-05-04 12:34 OG17 Note Added: 0004618
2010-05-04 16:40 Cryptic Note Added: 0004622
2010-05-04 16:49 rob Note Added: 0004623
2010-05-04 16:54 dpeg Note Added: 0004624
2010-05-04 21:28 KiloByte Note Added: 0004626
2010-05-04 21:31 KiloByte Note Added: 0004627
2010-05-04 21:34 dpeg Note Added: 0004628
2010-05-04 22:03 KiloByte Note Added: 0004630
2010-05-04 23:54 OG17 Note Added: 0004636
2010-05-05 00:03 Cryptic Note Added: 0004637
2010-05-05 10:19 KiloByte Note Added: 0004642
2010-05-11 23:30 Cryptic Note Added: 0004707
2010-05-11 23:40 dpeg Note Added: 0004708
2010-05-11 23:54 Cryptic Note Added: 0004709
2010-05-11 23:54 Cryptic Status new => closed
2010-05-11 23:54 Cryptic Resolution open => won't do
2010-05-11 23:54 Cryptic Fixed in Branch => 0.7 development branch

Mantis 1.1.8[^]
Copyright © 2000 - 2009 Mantis Group
Powered by Mantis Bugtracker