PDA

View Full Version : Exploit bug report, it must be fixed!



Zedus
April 16th, 2019, 02:41 AM
Found exploitable bug, it can used by town to reveal disguiser. Here it is.

If disguiser or informant act, killed player can instantly quit and you will see this in log:
25972

But next day player with departed soul still in game:
25973

And can be easy revealed by town. So, the way to use exploit for town is:
1. Instantly quit if you killed by disguiser
2. Your old, still not stolen name will appears in log "XXX's soul has departed", and everyone will see it
3. Next day you can lynch player with this name, if he is in game. He is disguiser.

This replay, night 2, you can see this bug appears. I played as triad, and noone else seen it. But town can use it with ease.
25974

rumox
April 16th, 2019, 02:48 AM
Interesting, I haven't seen this myself. I've passed on word to the map developer and we will see what we can do. Appreciate the time you took to report this bug, hopefully the games constraints let us iron this out!

Zedus
April 16th, 2019, 03:38 AM
Think, there is 2 way to fix it:
1. Change ingame name with disguiser act BEFORE player receive message "you killed and disguised"
2. Add punishement for quit while night sequence (easy lazy way)

DJarJar
April 16th, 2019, 04:13 AM
Yea I’ve seen this but it would be hard to fix. The main issue is there is a significant gap between when the player sees that he’s died to a disguiser and when the disguiser actually swaps names. It would be hard to close that gap because the engine has to check multiple other night actions after disguising before the night can end, and it would just create more bugs to swap the players before the night actions are done being processed.

Aero
April 16th, 2019, 04:31 AM
This reminds me of Rainbow Six: Seige. There is an operator that can interrogate injured enemies, revealing all the injured players' teammates locations and providing the interrogator's team a live wall-hack of the map which typically results in a massacre because bullets pierce through walls in Rainbow 6: Seige. Since the interrogation kills the target either way, some enterprising players took to immediately leaving the game if an interrogator was headed their way while injured, before rejoining the match, thereby leaving behind a corpse that could not be interrogated.

As for Mafia, if the only way that this exploit works is through the leave message, a simple bandage fix could be disable the leave notification for players at night, and let the game engine make decisions on announcing who left the game the next day, at which time the engine should have the correct identities sorted. There is no strategic necessity to knowing that someone left the game immediately during the night sequence anyway, so this does not detract from the game experience.

Very cool discovery though, thanks for showing us.

Tauntshaman
April 16th, 2019, 09:18 AM
thread moved to mafia bug reports

MrMostache
April 16th, 2019, 10:14 AM
Yea I’ve seen this but it would be hard to fix. The main issue is there is a significant gap between when the player sees that he’s died to a disguiser and when the disguiser actually swaps names. It would be hard to close that gap because the engine has to check multiple other night actions after disguising before the night can end, and it would just create more bugs to swap the players before the night actions are done being processed.

Yea, a lot of deaths take a little gap after the kill. I guess it's to account for doctor heals, conversions.

MrMostache
April 16th, 2019, 10:15 AM
Think, there is 2 way to fix it:
1. Change ingame name with disguiser act BEFORE player receive message "you killed and disguised"
2. Add punishement for quit while night sequence (easy lazy way)

1. What if that player is getting healed?
2. Most likely won't happen.

rchae94
April 16th, 2019, 05:53 PM
This just happened to me yesterday as well. I was informant and as the person died during the night sequence, he immediately left and then everyone the next day was wondering why I was still alive.

Frinckles
June 10th, 2019, 09:06 AM
Sorry if this seems a bit late, but I'll look into fixing this today. Been pretty busy with work but it shouldn't be too much of an issue to move the name-switch to when the actual kill takes place. Assuming I can get it working, we can push this to live asap. If you see anyone exploiting this bug, please do report them. Thanks for the heads up on the bug and supplying pictures, they help. c:

DJarJar
June 10th, 2019, 09:54 AM
Sorry if this seems a bit late, but I'll look into fixing this today. Been pretty busy with work but it shouldn't be too much of an issue to move the name-switch to when the actual kill takes place. Assuming I can get it working, we can push this to live asap. If you see anyone exploiting this bug, please do report them. Thanks for the heads up on the bug and supplying pictures, they help. c:

What I would do is make the swap before the player finds out they are dead (right after confirming the kill attempt is going to succeed).

Frinckles
June 10th, 2019, 10:05 AM
Yeah, we're thinking the same thing. c: There is a trigger for each type of death sequence that can be called during the main night sequence that does the sound, messages etc. The disguise function is handled AFTER those sequences finish so there is enough delay to cause this sort of thing to happen. Moving it to the kill function itself will eliminate the problem.

Kenny
June 10th, 2019, 10:18 AM
Yeah, we're thinking the same thing. c: There is a trigger for each type of death sequence that can be called during the main night sequence that does the sound, messages etc. The disguise function is handled AFTER those sequences finish so there is enough delay to cause this sort of thing to happen. Moving it to the kill function itself will eliminate the problem.Wouldn't the underlying problem still persist like that though? If a player were to quit as soon as the sequence starts his unchanged name would still appear. Players wouldn't be able to do so after finding out about the disguise, but from a disguisers perspective there'd still always be the risk of a player randomly quitting and revealing the disguise. As a disguiser you wouldn't know if a player is about to leave at the start of the sequence after all.
Imo delaying the leaver message until after the sequence or, if that isn't possible, completely disabling those during the night sequence would be the better solution.

Frinckles
June 10th, 2019, 12:27 PM
Wouldn't the underlying problem still persist like that though? If a player were to quit as soon as the sequence starts his unchanged name would still appear. Players wouldn't be able to do so after finding out about the disguise, but from a disguisers perspective there'd still always be the risk of a player randomly quitting and revealing the disguise. As a disguiser you wouldn't know if a player is about to leave at the start of the sequence after all.
Imo delaying the leaver message until after the sequence or, if that isn't possible, completely disabling those during the night sequence would be the better solution.

That could be the case. At any rate I can just move it to the kill trigger & have it check to see if the player is still in the game when the disguise attempt happens. If they're not, make the disguise fail.

Elixir
June 12th, 2019, 02:31 AM
This fix should be going live soonish - I believe Frinckles also removed the alive players ability to see "souls" leaving which should be an extra barrier incase the order of operations fix doesnt work. -- Should also deal with the fringe cases of mafia players leaving when their last member is voted up so people know to guilty.