kannot
Clueless newb
Posts: 126
|
Post by kannot on Apr 30, 2019 13:00:56 GMT -5
I hope this is fixed now, this is based on the old code:
If you're hiding in a room that has atleast one perceptive dude who can possibly see you, chances are good that he, by doing nothing intentional, erases your hide completely (i.e. everyone can now see you). This happens if you're using the peek command, particularly if you're peeking across many people and using it many times.
Every peek triggers a peek success check, that can fuck you over even if you succeed. This is because everytime you peek (even if you succeed and it checks out fine for you) the code still passively runs a "watch_success" for everyone else in that room. This is fair enough but what's weird is that if this watch_success works out, and someone other than your victim sees you, then your hide automatically breaks, just from peeking; and you have no clue this happened.
The situation this translates to is, say, you sneak into Red's all sneakey and shit, and there's one high-wis high-scan elf sitting around. You don't care about that nasty sharp and start peeking about from the corners of the bar, all blended into the crowd and shit, looking for other marks. There's a good chance that elf rolled a watch_success on you because of your peeks, he saw you and now (rather oddly) your hide is broken and all your actual marks (who may or may not have had any connection with that elf) also see you clear as day. I'm struggling to find a reason as to why one dude looking at you peeking translates to you now being visible to every person in the room.
Anyone interested in verifying this should look at the relevant bits from the check_peek_biff, watch_success and char_can_see_char sections of the codedump (the last one is relevant because watch_success isn't possible unless the char can see other char)
EDIT: I calmed down and made the title less triggered lol
EDIT2: More problematically but hypothetically, and I don't think this happens, but if an IMM character is somehow monitoring you in a way that he counts as a person in the room who can trigger watch_success, his watches will definitely trigger the hide-breaks in your peeking.
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Apr 30, 2019 13:39:45 GMT -5
Steal whether there are less people, or less elves defending people. Pay the elf off.
Fixed!
|
|
kannot
Clueless newb
Posts: 126
|
Post by kannot on Apr 30, 2019 13:45:12 GMT -5
I mean, the thing is these elves aren't "defending" people IGly, they'r e just doing it codedly in a way that I don't see makes any sense. It's also an issue if this elf is a sneakey bastard lurking about trying his own stealing.
Stealing where there are less people works, but the code is otherwise geared to give bonuses to stealing in crowded areas, not penalties, so this bit of the code definitely isn't trying to proxy for the idea that "more crowds translate to more difficulty of hiding", I'm not quite sure by what logic it's here.
POST EDIT: Lmao dude how what do I pay the elf off for, it's not like he's ICly trying to draw attention to me. What do I tell him "hey fuck off from here because you're being in this room and being able to see me means everyone else also magically senses my presence".
I guess one could sort of say "hey elf you'll inadvertently look toward me when I start peeking at other people, and everyone else would notice this and then they'll notice me, so fuck off from here". But... That still seems a bit unusual, especially in a crowded area.
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on Apr 30, 2019 14:02:56 GMT -5
Are you basing these statements on anything particular, Kannot?
|
|
kannot
Clueless newb
Posts: 126
|
Post by kannot on Apr 30, 2019 14:14:23 GMT -5
Are you basing these statements on anything particular, Kannot? The old codedump, want me to post the relevant bits here? If you're asking about actual instances, there have been some where I'm pretty certain there's nothing else that could have broken my hide, but I could be wrong. Either way the old code does seem to leave this as a possibility.
|
|
|
Post by shakes on May 2, 2019 22:40:57 GMT -5
I thought, "there's no way he could possibly be right."
But he's right.
From cmd_peek in the codedump:
cprintf(rch, "You notice %s look %s over carefully.\n\r", buf, PERS(rch, i)); if (IS_AFFECTED(ch, CHAR_AFF_HIDE)) { REMOVE_BIT(ch->specials.affected_by, CHAR_AFF_HIDE);
CHAR_AFF_HIDE is a status effect applied to your character. If you fail that secondary skill check, you're losing the status effect and you're now just a dude standing in a room.
Best workarounds, since this isn't likely to be fixed with the anti-thief sentiment of the game, is to either pop a rehide after you do a peek or steal, just in case, or avoid rooms with lots of people. I like to watch my mark and see what they have to steal, and then follow them out in the street to do it. Preferably at night.
Also, scan has nothing to do with this. The other character's skills have nothing to do with it. This is solely up to your own skill and the follow up check.
|
|
kannot
Clueless newb
Posts: 126
|
Post by kannot on May 2, 2019 23:04:36 GMT -5
Also, scan has nothing to do with this. The other character's skills have nothing to do with it. This is solely up to your own skill and the follow up check. For that perception of the dude noticing you peek to happen, he has to get a watch_success on you, for that to happen, he has to be able to see you, for that to happen, given my fucking loaded char, he has to have some pretty high scan and wis.
|
|
|
Post by shakes on May 2, 2019 23:16:30 GMT -5
if (roll > skill) { /* no, complete failure */ act("$n looks you over carefully.", FALSE, ch, 0, i, TO_VICT); act("As you study $N's possessions, $E notices you looking.", FALSE, ch, 0, i, TO_CHAR); /* let others in the room have a chance to have seen it */ for (rch = ch->in_room->people; rch; rch = rch->next_in_room) { /* use roll - skill as a gauge of how bad they messed up */ if (rch != ch && rch != i && watch_success(rch, ch, i, roll - skill, SKILL_PEEK)) { sprintf(buf, "%s", PERS(rch, ch)); cprintf(rch, "You notice %s look %s over carefully.\n\r", buf, PERS(rch, i)); if (IS_AFFECTED(ch, CHAR_AFF_HIDE)) { REMOVE_BIT(ch->specials.affected_by, CHAR_AFF_HIDE); Good eye. I didn't see the watch_success buried in there. Alright, I'd want to track down that function. But my supper is about to hit the table. You do it.
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on May 2, 2019 23:42:10 GMT -5
I mean, the thing is these elves aren't "defending" people IGly, they'r e just doing it codedly in a way that I don't see makes any sense. It's also an issue if this elf is a sneakey bastard lurking about trying his own stealing. Stealing where there are less people works, but the code is otherwise geared to give bonuses to stealing in crowded areas, not penalties, so this bit of the code definitely isn't trying to proxy for the idea that "more crowds translate to more difficulty of hiding", I'm not quite sure by what logic it's here. POST EDIT: Lmao dude how what do I pay the elf off for, it's not like he's ICly trying to draw attention to me. What do I tell him "hey fuck off from here because you're being in this room and being able to see me means everyone else also magically senses my presence". I guess one could sort of say "hey elf you'll inadvertently look toward me when I start peeking at other people, and everyone else would notice this and then they'll notice me, so fuck off from here". But... That still seems a bit unusual, especially in a crowded area. Merchants get killed all of the time for daring to pull all of the coins out of the high producing stores. Telling the elf to find someplace else to work, bribing him to leave, or just killing him for blocking your access to a favored hunting ground all seems productive to me.
I'm shitposting because I dislike the way stealth works in Arm. I dislike the 'race to the bottom' of rp and powerskilling that must occur if griefers are given free reign to have their fun at the expense of others. I know I wont convince almost anyone here.
|
|
|
Post by lechuck on May 3, 2019 0:26:02 GMT -5
It's true. There are other ways as well that your hide can be broken. If someone's watching you and you attempt to sneak, it has a high chance to cause you to fail and become revealed. Others will see your failed sneak attempt as if you'd simply failed the roll. You can completely fuck someone's life up by just shadowing and watching them whenever you notice them. When watching someone, they basically lose the sneak skill. They probably won't know it's happening, they'll just look like a noob.
Watch is an underrated skill. That passive check is insanely good if you can get the skill up, and it's a godsend for stealth chars. If you have to make do with advanced sneak and hide, you want high watch so you notice when people look at you. That'll be invaluable if you ever have to use stealth for anything serious. If you're a miscreant with master watch (it's insane that they gave a class master watch), you notice fucking everything. Every look, every assess, every tiny little thing anybody does.
When you watch someone, you give them a penalty to all checks that are foiled by perception. The penalty is 50% or your watch skill, whichever is higher. If a miscreant has 80 watch, that's an 80% chance to passively spot something. Could be more if the skill goes all the way up to 90, or if the miscreant has a perception bonus from wisdom. It's also a near-guaranteed foil because you don't roll your watch against their skill, you just apply your watch skill as a penalty to their check. And it's 50% even if your watch skill sucks.
Skills react differently to watch-induced failure, though. Some will just cause an outright fail-- e.g. sneak, steal. Hide will cause the watcher to be able to see you as if he had infallible scan for you only, but you'll still hide succesfully, and the watcher doesn't reveal you for others. Passive watch only gives a chance to notice that somebody went into hiding. You get a bonus to defending against missile attacks if you're watching the shooter or the direction they're shooting from. Some skills will just show the watcher that it was done but won't cause a fail.
Everyone innately gets the watch skill, but its innate form is capped at 40 plus your wisdom's perception modifier. Unless you have very high or very low wisdom, your modifier is generally 0. That means watch will cap at 40, the cusp of journeyman. Human exceptional wisdom is +10 and that's the highest you get from human wisdom. However, the skill double-dips your wisdom bonus (or penalty) because your wisdom directly determines the cap and then applies the actual bonus on top:
get_innate_max_skill(CHAR_DATA * ch, int sk) { int max = 0;
switch (skill[sk].sk_class) { case CLASS_MANIP: case CLASS_STEALTH: max = 40 + agl_app[GET_AGL(ch)].stealth_manip; break; case CLASS_MAGICK: max = 30 + wis_app[GET_WIS(ch)].wis_saves / 2; break; case CLASS_PERCEP: max = 40 + wis_app[GET_WIS(ch)].percep; break;
As such, if you have 0 perception, your watch skill caps at 40. If you have +10 perception, it caps at 50 and you get +10 to the actual check, so effectively 60. The same is true of stealth skills, so a desert elf with no agility bonus will have its racial hide and sneak capped at the baseline 40 and therefore has an effective stealth level of 40 while one with 25+ agility (exceptional is 24-26) has a skill cap of 40+40 and then an agility bonus of +40. That's incidentally the universal cap as agility's stealth bonus caps out at +40 on the chart.
Anyway, watch is a great skill if you use stealth a lot. If you haven't got high wisdom and you're playing, say, a raider who wants to make use of stealth, it can be worth taking a subguild with advanced watch. Raider/rogue is an excellent combo that gives advanced watch and pick plus city stealth. It can be a bit tricky to actually raise watch because it only goes up if you're actively watching someone and you fail to foil/detect a secret action, and you pretty much always notice basic actions like look/assess/hemote while watching regardless of your skill. So you need to find characters or NPCs that are doing random things that you can fail to detect, which harder than it sounds. You can watch rats and hope for their hide attempts to beat your watch, but rats aren't great at hiding. You can use 'rinth NPCs but they aren't always available. Or you can just shadow random PCs around and hope they start using stealth so you can completely fuck them over in order to raise your watch skill. Have fun!
|
|
|
Post by shakes on May 3, 2019 0:40:25 GMT -5
I think we all know that, when you're watched your skill chances go way, way down.
But what I'm specifically trying to figure out, and I can't find it in the code, is whether or not your scan or watch provides a PASSIVE defense against stealthy actions.
|
|
|
Post by lechuck on May 3, 2019 0:53:38 GMT -5
Scan doesn't do anything in that regard. It's just a chance to see a hidden/invisible thing's shadow/blur. It has no interaction with hidden actions.
Passive watch gives a chance to notice stealthy actions. It doesn't give a defense against them, only active watch does. I think there's a bug with peek specifically because the code contains a clause for a failed peek to break hide. You can also sometimes see "someone looks x over carefully." With other skills, in order to notice someone's hidden action, you have to be able to see them. If they're hidden, this means you have to be scanning, and on the same beat that they're acting, your scan has to succesfully detect them and then your watch has to succesfully notice the action. That's a pretty unlikely scenario unless you have master scan and watch and they don't have master hide. Peek seems to operate differently from other hidden actions.
Remember that a char's scan skill is cut in half when sitting. Most people don't know this so they'll think their master scan is helpful while they sit at the bar. As long as noone's standing up, you're effectively undetectable when succesfully hidden. It's pretty safe to sneak around in taverns and the odds of someone revealing you from stealth are very low unless they can clap a watch on you.
It's kind of insane how overpowered miscreant is for non-combat gameplay. It masters literally everything to do with stealth, perception and manipulation. It's one of only two classes with master stealth, and one of three with master scan (one is laborer which nobody plays). Master scan is insane now that the only ones with master hide are other miscreants who aren't particularly deadly, and stalkers who are only really relevant in the wilderness. You'll be able to detect everyone else and they won't be able to detect you. With master watch, you can just stand around hidden and see all kinds of shit that nobody else can. Assuming said shit is actually taking place, of course. It's not worth much for off-peak play.
On the other hand, classes in the lower end of the stealth spectrum shouldn't expect to be able to rely on stealth unless they're elves with agility prioritized. Human enforcers and raiders never reach no-fail status, even with exceptional agility and a bunch of stealth equipment. You'll be alright in crowd rooms because of the bonus but not in standard rooms, even if you have max agility and footpads, camo gear, etc. You can get to the point where your sneak and hide usually succeed, but no more than that.
My research indicates that enforcer and raider sneak/hide caps at 60. Infiltrator is either 70 or 75, it's hard to be sure since stealth skills go up by a random amount per fail. I believe that infiltrator stealth becomes no-fail for humans with exceptional agility and stealth gear, but only barely. For elves it's fine, their agility bonus goes much higher. But that also means that if you're trying to play an infiltrator with, say, very good human agility, your stealth isn't reliable. You'll fail 5% of the time or whatever, which means you can use it to duck out of sight or sneak down a street, but if you ever need to rely on it to save you from real danger, it probably won't.
That's what Brokkr never seems to understand. He balanced the new classes around the skills they have, but in many cases, they don't really have those skills. If your class gets 60 scan and you don't have abnormally high wisdom, your scan won't detect shit because nobody is going to utilize a stealth level of 60 in any situation that matters. That is to say, an enforcer with average agility isn't going to be using stealth because he'll have found out long ago that he can barely sneak four rooms without failing. Those who utilize stealth are the ones who have it high enough to where it generally doesn't fail, and advanced scan with no wisdom bonus is just not going to detect that. The same is true of most skills--they just aren't that good prior to master. One master skill is more valuable than several at advanced.
Watch is one of the exceptions to this since it works differently from most skills. The fact that it doesn't roll your watch vs their whatever but rather subtracts your watch level from their skill level means it's useful even at low advanced. But if you can get it to master, and you also have master scan, it really kicks off. In the past, nobody got watch above advanced while just about everyone had master stealth/manipulation skills. Now there's a class with master while many players are now operating with advanced-level stealth/manipulation.
|
|
kannot
Clueless newb
Posts: 126
|
Post by kannot on May 3, 2019 4:09:36 GMT -5
Neat, I thought Enforcers get advanced hide and stealth though? Shouldn't 60 be journeyman.
|
|
|
Post by lechuck on May 3, 2019 4:55:01 GMT -5
For skills that follow the normal range (i.e. some class caps it at 90 or 95), 60 is advanced.
0-19: novice 20-39: apprentice 40-59: journeyman 60-79: advanced 80+: master
Exceptions are skills where the highest any class goes is somewhere below 80, in which case the whole range is squished down correspondingly. Like nobody gets more than 45 shield block, so I'm pretty sure it goes like this:
0-9: novice 10-19: apprentice 20-29: journeyman 30-39: advanced 40+: master
Highest any class gets parry is 65, so it's probably like this:
0-14: novice 15-29: apprentice 30-44: journeyman 45-59: advanced 60+: master
Nearly all skills can be raised to 90 or 95 by some class, though, in which case it's the first scale where 60 is advanced.
|
|
Deleted
Deleted Member
Posts: 0
|
Post by Deleted on May 3, 2019 15:38:04 GMT -5
For skills that follow the normal range (i.e. some class caps it at 90 or 95), 60 is advanced. 0-19: novice 20-39: apprentice 40-59: journeyman 60-79: advanced 80+: master Exceptions are skills where the highest any class goes is somewhere below 80, in which case the whole range is squished down correspondingly. Like nobody gets more than 45 shield block, so I'm pretty sure it goes like this: 0-9: novice 10-19: apprentice 20-29: journeyman 30-39: advanced 40+: master Highest any class gets parry is 65, so it's probably like this: 0-14: novice 15-29: apprentice 30-44: journeyman 45-59: advanced 60+: master Nearly all skills can be raised to 90 or 95 by some class, though, in which case it's the first scale where 60 is advanced.
Fwiw, I'm absolutely confident fighter class characters now have a higher parry cap.
|
|