jeremygurr / dcssca

Dungeon Crawl Stone Soup: Circus Animals fork
11 stars 8 forks source link

Djinn #28

Closed NilsBloodaxe closed 8 years ago

NilsBloodaxe commented 8 years ago

For Djinn: You have that "[Djinni] have the glow mutation, which increases with experience, which reduces their stealth. However, at level 3, it expands how far they can see." This implies that reduction of stealth is bad (it is), but that expansion of vision is good (it isn't). This is because Line of Sight is reciprocal, so if you can see an enemy, it can see you. Alternatively, if you can't see it, it can't see you. Monsters not seeing you is a good thing, this is why Nightstalker is a good Ds mutation, and Robe of Night is a good item.

jeremygurr commented 8 years ago

Good point. The vision expansion doesn't work anyway right now, because I had to revert that change because of webtiles rendering issues that I need to work out.

That being said, if the increasing vision thing really was a bad thing, that's okay too since the idea of this particular mutation is something that gets worse with experience. And it makes sense thematically, since something that glows brighter would be seen from further away. It's something that helps to counter balance the Dj's awesome power which comes from their unparalleled magic capacity and crazy regenerative abilities (since both hp and mp regeneration applies to their "essense points").

Yeah the reciprocal vision thing makes no sense. Some monsters should be able to see / sense me before I can see them, and vice versa. Of course, I'm sure there's a very good reason it's the way it is, but it seems very odd to me. It creates some bizarre strategic choices (why nightstalker is so good) that are not intuitive to new players. I'm trying to get crawl away from being a game where you must be a grand master of all crawl secrets to be able to make any significant progress in the game. I can't think of any other dungeon game that uses that mechanic of if you can't see it, it can't see you. Although it does remind me of the ravenous bugblatter beast of traal.... (Hitchhikers Guide to the Galaxy, if you don't recognize the ref) :)

Unless there's a compelling reason to keep it, I'll probably get rid of the reciprocal vision thing. Nightstalker would function as a mechanism for reducing the enemies vision instead of the bizarre mechanic it uses now.

Sandman25DCSS commented 8 years ago

Please let vision stay reciprocal. If you want to see why it is bad, you can try playing ToME 4 where it is possible to be dead in one turn while autoexploring with no monsters in LoS. In crawl it would correspond to being banished or confused as mummy without your fault. I hope you agree that unavoidable deaths are bad and devs should try to make death be fault of player.

Sandman25DCSS commented 8 years ago

By the way I remember you were asking what changes could be optional. If you insist, I believe non-reciprocal vision must be optional. Probably along with diagonal movement, I seem to ignore it anyway even as stabber or ranged attacker despite it is clearly optimal to approach dangerous enemies from a diagonal.

jeremygurr commented 8 years ago

I don't want to create unavoidable deaths. If I can't remove reciprocal vision without creating the situation you describe, then I won't. I'm not 100% sure that's the only way it could be done though.

So maybe you can help me better understand the problem. So you autoexplore, and a monster sees you but you don't see it, so you keep travelling a bit. Say it's a ranged monster and it hits you with an arrow. You don't see it yet, so the game shows a ? where the monster would be outside of your LOS. Of course, auto-explore is interrupted at the first hit. So now your encounter begins. The only difference from the way it is now is that the enemy got the first move, and you don't know exactly what kind of enemy it is yet, since you can't see it. You have the option to move towards it to identify what it is, to move away from it to try and escape, or to shoot blindly at it. So far I don't see a huge problem.

jeremygurr commented 8 years ago

I'm not sure what you are referring to when you say it is optimal to move diagonally to approach dangerous enemies. Diagonal movements take longer than orthagonal movements, so given a choice, approaching an enemy orthagonally would be optimal. In practice there is rarely a difference though, since you need about as many diagonal movements as orthagonal to approach a monster in any given trajectory. It only is meaningful when trying to escape a monster straight over obstacles that the monster must zig zag around. In most cases a player can completely ignore the diagonal difference, since the monsters don't make any decisions based on it either. Am I missing something here?

Sandman25DCSS commented 8 years ago

Here is a specific example about LoS. You keep autoexploring D9 and suddenly are dead. Why? Because Erolcha went invisible while you could not see it (but she saw you, otherwise she would not turn invisilble) and then she double-zapped you with a Lightning Bolt because you happened to be adjacent to a wall. Another example: you enter Vaults:1 and find that the stairs are locked and you are attacked with 4 bolts per turn. Apparently there is a Vault Warden and probably a group of Yaktaurs. But where are they: north, south, west, east?

About movement I meant that my stabbers should use diagonal movement because if the enemy wakes up, I have more time to run away or cast Confusion. The same with ranged attackers, I can shoot more missiles/cast more conjuration spells while the enemy is approaching me. Stealth is checked once per player move no matter how long the move takes. So Naga of Chei has the same number of stealth checks as hasted Spriggan has.

jeremygurr commented 8 years ago

I thought if Erolcha was invisible, she could attack you without you seeing her anyway. Isn't that what the unseen horrors do now? Currently, with an unseen horror, your autoexplore is interrupted once they attack you. I don't see the difference with the Erolcha example, since she can do that exact situation now. Or are you saying she will always show herself before turning invisible? If that is the case, the same thing would happen if this change was applied, since she's not going to turn invisible before seeing the player. So she will see the player, turn invisible, and then use her wand. Am I missing something here?

In the vault warden case: most monsters have the same LOS distance as the player, right? So in most cases, when the monster sees you, you also see it. In the case of the vault warden, you will see him for at least one turn when he locks the stairs. In the unusual cases where the player's LOS is reduced for some reason, it's possible for the stairs to be locked and not know where the warden is. That is the price of having a lower LOS. A lower LOS should not be a good thing. Something that lowers the enemy LOS should be a good thing.

I see your point about the diagonal approach. That issue would seem to be solved by increasing the stealth checks to 40% more for diagonal movement. It would be an easy change, and remove the "optimal approach vector" worry.

Sandman25DCSS commented 8 years ago

Erolcha is different from Unseen Horror, she cannot turn invisible before seeing player so player always sees her. It is something like: "Erolcha comes into view. Erolcha turns invisible. Deactivating autopickup. Press Ctrl+A to activate" instead of "You die" in non-reciprocal view crawl. In the former situation player can do something (I often use scroll of blinking if low on MR by the way), in the latter player just starts a new game.

Sorry, I miss your proposed solution for Warden and Yaktaur problem. Is Nightstalker mutation in the game? Should I quit the character like some players do with monstrous demonspawn? Or should I blindly try different directions to see the warden while getting 4 bolts per turn? I hope crawl will not become a gambling game, it should require skill, not luck. I disagree that lower LoS should be a bad thing, Darkness is a level 6 spell and it should not be a bad thing. Decreasing LoS for monsters would be completely broken thing, there is a good reason why most dangerous monsters have MR immunity and Mass Confusion is not even close to being absolutely protected from any dangerous effects.

Stealth check will not affect ranged attackers, for example formicid, ashenzari, one head-related mutation and boots of assassin allow to see position of monsters which cannot see you. So a character with longbow or bolt of fire would still be happy to get the monster in LoS at diagonal direction, so the monster must travel 7*1.4=9-10 turns instead of standard 7.

jeremygurr commented 8 years ago

I see your point with the Erolcha situation. I don't want to have unavoidable deaths. It seems to me that a better solution for that would be to either not allow creatures to turn invisible until the players see them, or remove the invisibility option from monsters that can one-shot the player, (which is what happens with current unseen horrors). I don't think this kind of case alone justifies the bizarre LoS rules that are in place now. You may be quite comfortable with the LoS as it stands, because you understand it and have been playing for so long, but how can we expect a new player to know this? It's nowhere in the docs, and even in the wiki, I haven't come across it yet, even though I've read dozens if not hundreds of the wiki pages. Even for me, who has played the game for hundreds of hours over many years, am just learning about this concept now. See the problem? It's this kind of thing that makes crawl more inaccessible to new players.

In the proposed solution, nightstalker would probably work differently, since it's intended to be a good thing. It would be a major challenge to have reduced LoS, so if nightstalker did cause that, it would have to be significantly buffed in other ways to make it a positive thing overall. The new nightstalker would either only affect monsters LoS (by reducing it by 1 or whatever), or it would affect both monsters and player, but provide significantly increased stealth or so other perk. The first makes more sense to me in the theme of what nightstalker means. The darkness spell would probably work like the second case, where everyone's LoS is reduced, increasing the chances of a player escaping.

I'm not sure what you mean when you say that decreasing monster LoS would be completely broken. How would it break things? Say a ranged player approaches a monster, but stays just out of LoS of the monster. They shoot the monster, and so effectively get a free first shot, the same as a stealth player might now. At that point though, the monster becomes aware of the player and from what direction the attack is from, and so the creature moves towards the player, exactly like it would if the LoS wasn't reduced.

Forcing the player to get in a diagonal position of a monster before attacking is a problem. I don't like that. I don't have any great solution for that, so maybe the diagonal movement change needs to go.

Thanks for your feedback, it is helping me to crystallize some of these ideas, and smooth out some of the rough edges.

jeremygurr commented 8 years ago

Hmm... if I remove the diagonal movement change, what if I made moving in the same direction as the previous turn slightly faster than the base speed. So changing direction frequently in a pursuit accomplishes the same thing I was trying to accomplish with the diagonal movement change, but avoids the mentioned issues. In other words, escaping in a straight line (whether orthagonal or diagonal), would still be faster than zig zagging, since each change of direction goes back to the normal movement speed. Any major issues with this?

Sandman25DCSS commented 8 years ago

Erocha's invisibility was just one of the examples, I am sure it is more complicated than that. For example, Ancient Lich can summon 3 Briemstone Fiends, 2 of them then use Torment and 3rd one uses Hellfire during a single turn, everything happens before player can react. It will be an autoexplore death again and no invisibility is used. Your goal is to reduce importance of spoilers but having attacks happen out of player's LoS would lead to more spoilers, not less. "If stairs are locked, that means there is a Vault Warden somewhere, try to find and kill it". "If you see curare being thrown at you more often than once per turn in Dungeon 10-15, that is likely to be Sonja who is fast, it's better to escape immediately because it has Blink and can have a dagger of distortion" etc.

Reduced LoS of monsters is broken because you can kite with absolute safety. Even as normal speed creatures you can use Swiftness for that. Just cast a level 2 spell and then use all your ranged fire power (blowgun, wands, lauchers, full LoS spells like airstrike) to kill those "supposed to be dangerous but really not" monsters who don't have a chance to use Banishment, Paralysis, Confusion, curare, sling bullets etc.

Increased speed for keeping direction could lead to new form of kiting, for example, it would be optimal to retreat into perpendicular direction after opening a door because monsters would need to change direction to follow you. I am not sure why you are trying to change current movement of standard crawl, do you see any problems with it other than lack of realism?

jeremygurr commented 8 years ago

So you are saying that to avoid random one shot deaths, the player always needs one turn before a monster is allowed to attack. If I make the true-LoS change, I'll do it as an option, at least until I can solve the problems that come with it. I think it might make a fun hard-mode addition for expert players.

Reduced LoS monsters allowing too easy kiting doesn't seem any different to me than kiting with a ranged attack against a melee monster, even if they are both the same speed. The monster will still move towards you until it gets in attacking range, whether or not it can see you. I guess it would also apply to ranged attacking monsters, effectively allowing the player to stay out of their range. It's not that easy to do, any more than kiting melee monsters normally, for a player that is the same speed as the monster, and they will still take a few hits in the process. And if a monster has reduced LoS, it should be a major nerf for it, and it should be easier to kill.

The thing I'm trying to change in the movement mechanism is the fact that a monster chasing after a flying creature that flies directly over a deep water pool should be able to get away faster than a monster chasing after that has to zig zag around the deep water to get to you. It's not a big deal, and definitely not worth encouraging obscure and/or tedious optimal behavior.

As far as retreating from an open door in a perpendicular direction, the time gain is fairly trivial, being only that 4 aut difference that it takes to turn, which makes sense to me. In practice I don't think this will really be an issue, since how often are you going to have a straight long hallway exactly perpendicular to a door? The only strategy changing aspect that should be there is the fact that you want to keep going in the same direction as much as possible before changing direction, to maximize your escape, which I think is easy for new players to understand and intuitive. During the time they don't understand it, the difference in actual gameplay is quite small.

Compare this to understanding how to zap a lightning wand so that you can hit a monster 3 times. I think that aspect is definitely esoteric, and new player unfriendly, but not knowing this, you can still use lightning wands quite effectively and have fun with it. It's not game crippling to not know how to zap a lightning wand in it's optimal way.

So what I would like to find out, is whether a player really could come up with a new form of kiting, as you said, that isn't immediately obvious to players (esoteric), and/or is tedious, that would make a real difference in how easy it is to dispatch a hard monster. I wonder because almost all kiting involves a lot of turning around corners. Very little involves long unbroken hallways. I think that this defeats any lasting advantage of trying to use this movement change in kiting. But maybe there are other weaknesses we haven't thought of yet.

Sandman25DCSS commented 8 years ago

Well, I think it is ok for monster to attack player instantly but 1) It should not be banishment or paralysis 2) Player should see what is going on

I am not sure why you are saying it is not easy to kite. Late game is relatively common to have Haste spell castable, before that you can use Swiftness spell. Also consumables exist. Killing an Ancient Lich or Tentacled Monstrousity with zero risk does not seem right to me, the lich will not even cast Haste or anything else because it still does not see player (please don't change it to allow it to cast any spells when it does not see player). Previously it was possible only with Fire Storm (and Fireball if you have Nightstalker) and you couldn't even be sure that the monster is following you, now it will be possible for most characters and with 100% guarantee to see where the monster is.

Lightning Bolt/Zap cannot hit the same monster more than twice, it was specifically changed in some old version because of being OP.

About zigzagging in water it is already the case in current crawl, movement takes a random amount of time in shallow water (but always more than 1.0) unless you are swimming, so you already can kite Hill Giants or other melee monsters in water if you are flying or Merfolk/Octopode. (unless I am mistaken here, but at least this is how it works for player)

jeremygurr commented 8 years ago

I didn't know that a monster can be hit with a bolt only once. It seems like it was not that long ago when I was experimenting to see how many times I could hit a monster. Maybe a year ago? Hmm... makes sense they would nerf it. It's either that or reduce the damage of lightning, forcing players to use the hard to understand bouncing to get decent damage, which is the worse solution. They definitely picked the right one there.

The zigzagging I'm referring to is a monster avoiding small deep water pools by going around them, so they don't pass through the water at all, yet they travel the same speed as a flying creature passing directly over them. That is very counter-intuitive. The diagonal movement change introduces more problems than it's worth, but maybe the speedup when going the same direction would help more than it hurts.

I was referring to kiting when you are the same speed being somewhat difficult to pull of. Yes, in hasted form that makes a big difference, and having a safe window to do damage is a serious problem. Even using a spell that reaches beyond the LoS seems broken to me. I don't like either of those cases. I see why it has evolved the way it has. But I still want to improve it :) ... but how to solve this problem without making it worse is an interesting puzzle...

What if monsters could potentially see you before you see them (in the rare cases that they have a greater LoS), but never did any action except for movement until first getting within your LoS. So the player would always have at least one turn to react to a monster before they could summon anything, turn invisible, etc. They could still potentially one-shot you, after you've had a chance to do something, but at least you get that one chance to improve your odds. Then, if you see the monster before the monster can see you, you can have one free hit, but as soon as the monster is attacked by the player, the monster has visibility of the player as if their LoS extended fully to the player, until the monster actually leaves the player's LoS, not the monster's. This eliminates the free-hit window, but also gives a small but potentially meaningful advantage to those who have a greater LoS. This makes it much easier for stealthy characters with an LoS extending buff to sneak past deadly enemies. Too easy? Hmm, I'm not sure about that. Easier definitely, but the actual conditions producing this situation would be somewhat rare, but should be very rewarding if they were achieved, but not game breaking. Might require some experimentation.

NilsBloodaxe commented 8 years ago

DCSS fixed most of the issues of diagonal vs cardinal movement by introducing square LOS. It isn't Euclidean, but I think it is more intuitive than diagonals taking longer.

jeremygurr commented 8 years ago

Yeah I am convinced that longer diagonals causes more problems than it's worth. I would like to try the moving the same direction is slightly faster than turning a lot mechanic to try and accomplish the same goal without the negatives.

jeremygurr commented 8 years ago

I've removed the diagonal movement change and put in the "faster if your movement is in the same direction" change. Try it out and me what you think.

Sandman25DCSS commented 8 years ago

Monster can be hit by Lightning more than once, it cannot be hit more than twice. So it can be hit only 1-2 times.

I am not sure what's the point of monster having extended LoS if it cannot attack player anyway. It's like effectively it does not have extended LoS. In current crawl monster can act before player, the only exception is when player enters a new level for the first time, then player is guaranteed to act first, before any monsters in LoS.

Thank you for removing diagonal movement.

jeremygurr commented 8 years ago

The only advantage in a monster having extended LoS is that it can find and pursue the player more easily.

In current crawl, doesn't a monster have to get within the player's LoS before it can act anyway? That effectively always gives the player the first move. I guess in less the player executes a non-interruptible multi-turn move? Maybe the monster could wander into LoS and then act before the player gets a turn?

Sandman25DCSS commented 8 years ago

Yes, in current crawl monster needs to see player before it can act. But no, it does not mean that player always acts first. If you step forward and see a monster, the monster often acts first. The only guaranteed way to act first for player (other than enter a new level which I mentioned before) is to stay in one place and shout. So a monster will come into view and player will be first to act. I am not an expert in this, but monsters use some "energy", they don't share player character mechanic.